Browse Source

第一次提交

wangxx 6 months ago
parent
commit
16cb0fe5f9
100 changed files with 9670 additions and 0 deletions
  1. 48 0
      airport-quartz/pom.xml
  2. 57 0
      airport-quartz/src/main/java/com/sundot/airport/quartz/config/ScheduleConfig.java
  3. 185 0
      airport-quartz/src/main/java/com/sundot/airport/quartz/controller/SysJobController.java
  4. 92 0
      airport-quartz/src/main/java/com/sundot/airport/quartz/controller/SysJobLogController.java
  5. 171 0
      airport-quartz/src/main/java/com/sundot/airport/quartz/domain/SysJob.java
  6. 155 0
      airport-quartz/src/main/java/com/sundot/airport/quartz/domain/SysJobLog.java
  7. 64 0
      airport-quartz/src/main/java/com/sundot/airport/quartz/mapper/SysJobLogMapper.java
  8. 67 0
      airport-quartz/src/main/java/com/sundot/airport/quartz/mapper/SysJobMapper.java
  9. 56 0
      airport-quartz/src/main/java/com/sundot/airport/quartz/service/ISysJobLogService.java
  10. 102 0
      airport-quartz/src/main/java/com/sundot/airport/quartz/service/ISysJobService.java
  11. 87 0
      airport-quartz/src/main/java/com/sundot/airport/quartz/service/impl/SysJobLogServiceImpl.java
  12. 261 0
      airport-quartz/src/main/java/com/sundot/airport/quartz/service/impl/SysJobServiceImpl.java
  13. 76 0
      airport-quartz/src/main/java/com/sundot/airport/quartz/task/AttendanceTask.java
  14. 53 0
      airport-quartz/src/main/java/com/sundot/airport/quartz/task/DailyTaskExpireTask.java
  15. 28 0
      airport-quartz/src/main/java/com/sundot/airport/quartz/task/RyTask.java
  16. 106 0
      airport-quartz/src/main/java/com/sundot/airport/quartz/util/AbstractQuartzJob.java
  17. 63 0
      airport-quartz/src/main/java/com/sundot/airport/quartz/util/CronUtils.java
  18. 182 0
      airport-quartz/src/main/java/com/sundot/airport/quartz/util/JobInvokeUtil.java
  19. 21 0
      airport-quartz/src/main/java/com/sundot/airport/quartz/util/QuartzDisallowConcurrentExecution.java
  20. 19 0
      airport-quartz/src/main/java/com/sundot/airport/quartz/util/QuartzJobExecution.java
  21. 141 0
      airport-quartz/src/main/java/com/sundot/airport/quartz/util/ScheduleUtils.java
  22. 94 0
      airport-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml
  23. 111 0
      airport-quartz/src/main/resources/mapper/quartz/SysJobMapper.xml
  24. 33 0
      airport-system/pom.xml
  25. 117 0
      airport-system/src/main/java/com/sundot/airport/system/domain/BaseCheckCategory.java
  26. 116 0
      airport-system/src/main/java/com/sundot/airport/system/domain/BaseCheckPoint.java
  27. 141 0
      airport-system/src/main/java/com/sundot/airport/system/domain/BaseDefaultChoise.java
  28. 176 0
      airport-system/src/main/java/com/sundot/airport/system/domain/BasePosition.java
  29. 219 0
      airport-system/src/main/java/com/sundot/airport/system/domain/BaseProject.java
  30. 116 0
      airport-system/src/main/java/com/sundot/airport/system/domain/BaseSeizeCategory.java
  31. 159 0
      airport-system/src/main/java/com/sundot/airport/system/domain/BaseSeizeItem.java
  32. 207 0
      airport-system/src/main/java/com/sundot/airport/system/domain/SysApp.java
  33. 64 0
      airport-system/src/main/java/com/sundot/airport/system/domain/SysAppRole.java
  34. 81 0
      airport-system/src/main/java/com/sundot/airport/system/domain/SysCache.java
  35. 111 0
      airport-system/src/main/java/com/sundot/airport/system/domain/SysConfig.java
  36. 102 0
      airport-system/src/main/java/com/sundot/airport/system/domain/SysDynamicSql.java
  37. 57 0
      airport-system/src/main/java/com/sundot/airport/system/domain/SysLargeScreenCooperationDto.java
  38. 47 0
      airport-system/src/main/java/com/sundot/airport/system/domain/SysLargeScreenCooperationItemDto.java
  39. 20 0
      airport-system/src/main/java/com/sundot/airport/system/domain/SysLargeScreenCooperationQueryParamDto.java
  40. 77 0
      airport-system/src/main/java/com/sundot/airport/system/domain/SysLargeScreenLearningGrowthDto.java
  41. 39 0
      airport-system/src/main/java/com/sundot/airport/system/domain/SysLargeScreenLearningGrowthOrganizationalSupportDto.java
  42. 31 0
      airport-system/src/main/java/com/sundot/airport/system/domain/SysLargeScreenLearningGrowthQueryParamDto.java
  43. 85 0
      airport-system/src/main/java/com/sundot/airport/system/domain/SysLargeScreenLearningGrowthSqlDto.java
  44. 166 0
      airport-system/src/main/java/com/sundot/airport/system/domain/SysLearningGrowth.java
  45. 144 0
      airport-system/src/main/java/com/sundot/airport/system/domain/SysLogininfor.java
  46. 130 0
      airport-system/src/main/java/com/sundot/airport/system/domain/SysNotice.java
  47. 269 0
      airport-system/src/main/java/com/sundot/airport/system/domain/SysOperLog.java
  48. 141 0
      airport-system/src/main/java/com/sundot/airport/system/domain/SysPost.java
  49. 46 0
      airport-system/src/main/java/com/sundot/airport/system/domain/SysRoleDept.java
  50. 45 0
      airport-system/src/main/java/com/sundot/airport/system/domain/SysRoleMenu.java
  51. 113 0
      airport-system/src/main/java/com/sundot/airport/system/domain/SysUserOnline.java
  52. 45 0
      airport-system/src/main/java/com/sundot/airport/system/domain/SysUserPost.java
  53. 46 0
      airport-system/src/main/java/com/sundot/airport/system/domain/SysUserRole.java
  54. 161 0
      airport-system/src/main/java/com/sundot/airport/system/domain/SysWorkingDocument.java
  55. 158 0
      airport-system/src/main/java/com/sundot/airport/system/domain/approval/ApprovalCc.java
  56. 232 0
      airport-system/src/main/java/com/sundot/airport/system/domain/approval/ApprovalHistory.java
  57. 328 0
      airport-system/src/main/java/com/sundot/airport/system/domain/approval/ApprovalInstance.java
  58. 219 0
      airport-system/src/main/java/com/sundot/airport/system/domain/approval/ApprovalNodeDefinition.java
  59. 282 0
      airport-system/src/main/java/com/sundot/airport/system/domain/approval/ApprovalTask.java
  60. 142 0
      airport-system/src/main/java/com/sundot/airport/system/domain/approval/ApprovalWorkflowDefinition.java
  61. 136 0
      airport-system/src/main/java/com/sundot/airport/system/domain/approval/constants/ApprovalConstants.java
  62. 188 0
      airport-system/src/main/java/com/sundot/airport/system/domain/approval/dto/ApprovalCcDetailDTO.java
  63. 19 0
      airport-system/src/main/java/com/sundot/airport/system/domain/portrait/AdministrativePenaltyStats.java
  64. 19 0
      airport-system/src/main/java/com/sundot/airport/system/domain/portrait/AgeStats.java
  65. 31 0
      airport-system/src/main/java/com/sundot/airport/system/domain/portrait/EducationStats.java
  66. 135 0
      airport-system/src/main/java/com/sundot/airport/system/domain/portrait/IndicatorResult.java
  67. 27 0
      airport-system/src/main/java/com/sundot/airport/system/domain/portrait/ModuleIndicatorResult.java
  68. 19 0
      airport-system/src/main/java/com/sundot/airport/system/domain/portrait/PhysicalHealthStats.java
  69. 19 0
      airport-system/src/main/java/com/sundot/airport/system/domain/portrait/PoliticalReviewStats.java
  70. 22 0
      airport-system/src/main/java/com/sundot/airport/system/domain/portrait/PoliticalStatusStats.java
  71. 22 0
      airport-system/src/main/java/com/sundot/airport/system/domain/portrait/PositionCompetencyStats.java
  72. 19 0
      airport-system/src/main/java/com/sundot/airport/system/domain/portrait/PositionInfo.java
  73. 22 0
      airport-system/src/main/java/com/sundot/airport/system/domain/portrait/QualificationStats.java
  74. 19 0
      airport-system/src/main/java/com/sundot/airport/system/domain/portrait/RewardPenaltyStats.java
  75. 16 0
      airport-system/src/main/java/com/sundot/airport/system/domain/portrait/SecurityWorkPositionStats.java
  76. 16 0
      airport-system/src/main/java/com/sundot/airport/system/domain/portrait/WorkExperienceStats.java
  77. 57 0
      airport-system/src/main/java/com/sundot/airport/system/domain/vo/CheckProjectItemTreeVo.java
  78. 98 0
      airport-system/src/main/java/com/sundot/airport/system/domain/vo/CheckProjectItemVo.java
  79. 106 0
      airport-system/src/main/java/com/sundot/airport/system/domain/vo/MetaVo.java
  80. 357 0
      airport-system/src/main/java/com/sundot/airport/system/domain/vo/PositionInfoVO.java
  81. 130 0
      airport-system/src/main/java/com/sundot/airport/system/domain/vo/RouterVo.java
  82. 21 0
      airport-system/src/main/java/com/sundot/airport/system/enums/ProcessStatusEnum.java
  83. 30 0
      airport-system/src/main/java/com/sundot/airport/system/enums/SubjectiveImpressionEnum.java
  84. 62 0
      airport-system/src/main/java/com/sundot/airport/system/mapper/BaseAttachmentMapper.java
  85. 86 0
      airport-system/src/main/java/com/sundot/airport/system/mapper/BaseCheckCategoryMapper.java
  86. 78 0
      airport-system/src/main/java/com/sundot/airport/system/mapper/BaseCheckPointMapper.java
  87. 26 0
      airport-system/src/main/java/com/sundot/airport/system/mapper/BaseCodeGeneratorMapper.java
  88. 69 0
      airport-system/src/main/java/com/sundot/airport/system/mapper/BaseDefaultChoiseMapper.java
  89. 86 0
      airport-system/src/main/java/com/sundot/airport/system/mapper/BasePositionMapper.java
  90. 70 0
      airport-system/src/main/java/com/sundot/airport/system/mapper/BaseProjectMapper.java
  91. 63 0
      airport-system/src/main/java/com/sundot/airport/system/mapper/BaseReadMapper.java
  92. 78 0
      airport-system/src/main/java/com/sundot/airport/system/mapper/BaseSeizeCategoryMapper.java
  93. 69 0
      airport-system/src/main/java/com/sundot/airport/system/mapper/BaseSeizeItemMapper.java
  94. 61 0
      airport-system/src/main/java/com/sundot/airport/system/mapper/SysAppMapper.java
  95. 85 0
      airport-system/src/main/java/com/sundot/airport/system/mapper/SysAppRoleMapper.java
  96. 76 0
      airport-system/src/main/java/com/sundot/airport/system/mapper/SysConfigMapper.java
  97. 151 0
      airport-system/src/main/java/com/sundot/airport/system/mapper/SysDeptMapper.java
  98. 95 0
      airport-system/src/main/java/com/sundot/airport/system/mapper/SysDictDataMapper.java
  99. 83 0
      airport-system/src/main/java/com/sundot/airport/system/mapper/SysDictTypeMapper.java
  100. 0 0
      airport-system/src/main/java/com/sundot/airport/system/mapper/SysDynamicSqlMapper.java

+ 48 - 0
airport-quartz/pom.xml

@@ -0,0 +1,48 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project xmlns="http://maven.apache.org/POM/4.0.0"
3
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5
+    <parent>
6
+        <artifactId>airport</artifactId>
7
+        <groupId>com.sundot.airport</groupId>
8
+        <version>3.9.0</version>
9
+    </parent>
10
+    <modelVersion>4.0.0</modelVersion>
11
+
12
+    <artifactId>airport-quartz</artifactId>
13
+
14
+    <description>
15
+        quartz定时任务
16
+    </description>
17
+
18
+    <dependencies>
19
+
20
+        <!-- 定时任务 -->
21
+        <dependency>
22
+            <groupId>org.quartz-scheduler</groupId>
23
+            <artifactId>quartz</artifactId>
24
+            <exclusions>
25
+                <exclusion>
26
+                    <groupId>com.mchange</groupId>
27
+                    <artifactId>c3p0</artifactId>
28
+                </exclusion>
29
+            </exclusions>
30
+        </dependency>
31
+
32
+        <!-- 通用工具-->
33
+        <dependency>
34
+            <groupId>com.sundot.airport</groupId>
35
+            <artifactId>airport-common</artifactId>
36
+        </dependency>
37
+        <dependency>
38
+            <groupId>com.sundot.airport</groupId>
39
+            <artifactId>airport-attendance</artifactId>
40
+        </dependency>
41
+        <dependency>
42
+            <groupId>com.sundot.airport</groupId>
43
+            <artifactId>airport-exam</artifactId>
44
+        </dependency>
45
+
46
+    </dependencies>
47
+
48
+</project>

+ 57 - 0
airport-quartz/src/main/java/com/sundot/airport/quartz/config/ScheduleConfig.java

@@ -0,0 +1,57 @@
1
+//package com.sundot.airport.quartz.config;
2
+//
3
+//import org.springframework.context.annotation.Bean;
4
+//import org.springframework.context.annotation.Configuration;
5
+//import org.springframework.scheduling.quartz.SchedulerFactoryBean;
6
+//import javax.sql.DataSource;
7
+//import java.util.Properties;
8
+//
9
+///**
10
+// * 定时任务配置(单机部署建议删除此类和qrtz数据库表,默认走内存会最高效)
11
+// * 
12
+// * @author ruoyi
13
+// */
14
+//@Configuration
15
+//public class ScheduleConfig
16
+//{
17
+//    @Bean
18
+//    public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource)
19
+//    {
20
+//        SchedulerFactoryBean factory = new SchedulerFactoryBean();
21
+//        factory.setDataSource(dataSource);
22
+//
23
+//        // quartz参数
24
+//        Properties prop = new Properties();
25
+//        prop.put("org.quartz.scheduler.instanceName", "RuoyiScheduler");
26
+//        prop.put("org.quartz.scheduler.instanceId", "AUTO");
27
+//        // 线程池配置
28
+//        prop.put("org.quartz.threadPool.class", "org.quartz.simpl.SimpleThreadPool");
29
+//        prop.put("org.quartz.threadPool.threadCount", "20");
30
+//        prop.put("org.quartz.threadPool.threadPriority", "5");
31
+//        // JobStore配置
32
+//        prop.put("org.quartz.jobStore.class", "org.springframework.scheduling.quartz.LocalDataSourceJobStore");
33
+//        // 集群配置
34
+//        prop.put("org.quartz.jobStore.isClustered", "true");
35
+//        prop.put("org.quartz.jobStore.clusterCheckinInterval", "15000");
36
+//        prop.put("org.quartz.jobStore.maxMisfiresToHandleAtATime", "10");
37
+//        prop.put("org.quartz.jobStore.txIsolationLevelSerializable", "true");
38
+//
39
+//        // sqlserver 启用
40
+//        // prop.put("org.quartz.jobStore.selectWithLockSQL", "SELECT * FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = ?");
41
+//        prop.put("org.quartz.jobStore.misfireThreshold", "12000");
42
+//        prop.put("org.quartz.jobStore.tablePrefix", "QRTZ_");
43
+//        factory.setQuartzProperties(prop);
44
+//
45
+//        factory.setSchedulerName("RuoyiScheduler");
46
+//        // 延时启动
47
+//        factory.setStartupDelay(1);
48
+//        factory.setApplicationContextSchedulerContextKey("applicationContextKey");
49
+//        // 可选,QuartzScheduler
50
+//        // 启动时更新己存在的Job,这样就不用每次修改targetObject后删除qrtz_job_details表对应记录了
51
+//        factory.setOverwriteExistingJobs(true);
52
+//        // 设置自动启动,默认为true
53
+//        factory.setAutoStartup(true);
54
+//
55
+//        return factory;
56
+//    }
57
+//}

+ 185 - 0
airport-quartz/src/main/java/com/sundot/airport/quartz/controller/SysJobController.java

@@ -0,0 +1,185 @@
1
+package com.sundot.airport.quartz.controller;
2
+
3
+import java.util.List;
4
+import javax.servlet.http.HttpServletResponse;
5
+import org.quartz.SchedulerException;
6
+import org.springframework.beans.factory.annotation.Autowired;
7
+import org.springframework.security.access.prepost.PreAuthorize;
8
+import org.springframework.web.bind.annotation.DeleteMapping;
9
+import org.springframework.web.bind.annotation.GetMapping;
10
+import org.springframework.web.bind.annotation.PathVariable;
11
+import org.springframework.web.bind.annotation.PostMapping;
12
+import org.springframework.web.bind.annotation.PutMapping;
13
+import org.springframework.web.bind.annotation.RequestBody;
14
+import org.springframework.web.bind.annotation.RequestMapping;
15
+import org.springframework.web.bind.annotation.RestController;
16
+import com.sundot.airport.common.annotation.Log;
17
+import com.sundot.airport.common.constant.Constants;
18
+import com.sundot.airport.common.core.controller.BaseController;
19
+import com.sundot.airport.common.core.domain.AjaxResult;
20
+import com.sundot.airport.common.core.page.TableDataInfo;
21
+import com.sundot.airport.common.enums.BusinessType;
22
+import com.sundot.airport.common.exception.job.TaskException;
23
+import com.sundot.airport.common.utils.StringUtils;
24
+import com.sundot.airport.common.utils.poi.ExcelUtil;
25
+import com.sundot.airport.quartz.domain.SysJob;
26
+import com.sundot.airport.quartz.service.ISysJobService;
27
+import com.sundot.airport.quartz.util.CronUtils;
28
+import com.sundot.airport.quartz.util.ScheduleUtils;
29
+
30
+/**
31
+ * 调度任务信息操作处理
32
+ * 
33
+ * @author ruoyi
34
+ */
35
+@RestController
36
+@RequestMapping("/monitor/job")
37
+public class SysJobController extends BaseController
38
+{
39
+    @Autowired
40
+    private ISysJobService jobService;
41
+
42
+    /**
43
+     * 查询定时任务列表
44
+     */
45
+    @PreAuthorize("@ss.hasPermi('monitor:job:list')")
46
+    @GetMapping("/list")
47
+    public TableDataInfo list(SysJob sysJob)
48
+    {
49
+        startPage();
50
+        List<SysJob> list = jobService.selectJobList(sysJob);
51
+        return getDataTable(list);
52
+    }
53
+
54
+    /**
55
+     * 导出定时任务列表
56
+     */
57
+    @PreAuthorize("@ss.hasPermi('monitor:job:export')")
58
+    @Log(title = "定时任务", businessType = BusinessType.EXPORT)
59
+    @PostMapping("/export")
60
+    public void export(HttpServletResponse response, SysJob sysJob)
61
+    {
62
+        List<SysJob> list = jobService.selectJobList(sysJob);
63
+        ExcelUtil<SysJob> util = new ExcelUtil<SysJob>(SysJob.class);
64
+        util.exportExcel(response, list, "定时任务");
65
+    }
66
+
67
+    /**
68
+     * 获取定时任务详细信息
69
+     */
70
+    @PreAuthorize("@ss.hasPermi('monitor:job:query')")
71
+    @GetMapping(value = "/{jobId}")
72
+    public AjaxResult getInfo(@PathVariable("jobId") Long jobId)
73
+    {
74
+        return success(jobService.selectJobById(jobId));
75
+    }
76
+
77
+    /**
78
+     * 新增定时任务
79
+     */
80
+    @PreAuthorize("@ss.hasPermi('monitor:job:add')")
81
+    @Log(title = "定时任务", businessType = BusinessType.INSERT)
82
+    @PostMapping
83
+    public AjaxResult add(@RequestBody SysJob job) throws SchedulerException, TaskException
84
+    {
85
+        if (!CronUtils.isValid(job.getCronExpression()))
86
+        {
87
+            return error("新增任务'" + job.getJobName() + "'失败,Cron表达式不正确");
88
+        }
89
+        else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI))
90
+        {
91
+            return error("新增任务'" + job.getJobName() + "'失败,目标字符串不允许'rmi'调用");
92
+        }
93
+        else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.LOOKUP_LDAP, Constants.LOOKUP_LDAPS }))
94
+        {
95
+            return error("新增任务'" + job.getJobName() + "'失败,目标字符串不允许'ldap(s)'调用");
96
+        }
97
+        else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.HTTP, Constants.HTTPS }))
98
+        {
99
+            return error("新增任务'" + job.getJobName() + "'失败,目标字符串不允许'http(s)'调用");
100
+        }
101
+        else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), Constants.JOB_ERROR_STR))
102
+        {
103
+            return error("新增任务'" + job.getJobName() + "'失败,目标字符串存在违规");
104
+        }
105
+        else if (!ScheduleUtils.whiteList(job.getInvokeTarget()))
106
+        {
107
+            return error("新增任务'" + job.getJobName() + "'失败,目标字符串不在白名单内");
108
+        }
109
+        job.setCreateBy(getUsername());
110
+        return toAjax(jobService.insertJob(job));
111
+    }
112
+
113
+    /**
114
+     * 修改定时任务
115
+     */
116
+    @PreAuthorize("@ss.hasPermi('monitor:job:edit')")
117
+    @Log(title = "定时任务", businessType = BusinessType.UPDATE)
118
+    @PutMapping
119
+    public AjaxResult edit(@RequestBody SysJob job) throws SchedulerException, TaskException
120
+    {
121
+        if (!CronUtils.isValid(job.getCronExpression()))
122
+        {
123
+            return error("修改任务'" + job.getJobName() + "'失败,Cron表达式不正确");
124
+        }
125
+        else if (StringUtils.containsIgnoreCase(job.getInvokeTarget(), Constants.LOOKUP_RMI))
126
+        {
127
+            return error("修改任务'" + job.getJobName() + "'失败,目标字符串不允许'rmi'调用");
128
+        }
129
+        else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.LOOKUP_LDAP, Constants.LOOKUP_LDAPS }))
130
+        {
131
+            return error("修改任务'" + job.getJobName() + "'失败,目标字符串不允许'ldap(s)'调用");
132
+        }
133
+        else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), new String[] { Constants.HTTP, Constants.HTTPS }))
134
+        {
135
+            return error("修改任务'" + job.getJobName() + "'失败,目标字符串不允许'http(s)'调用");
136
+        }
137
+        else if (StringUtils.containsAnyIgnoreCase(job.getInvokeTarget(), Constants.JOB_ERROR_STR))
138
+        {
139
+            return error("修改任务'" + job.getJobName() + "'失败,目标字符串存在违规");
140
+        }
141
+        else if (!ScheduleUtils.whiteList(job.getInvokeTarget()))
142
+        {
143
+            return error("修改任务'" + job.getJobName() + "'失败,目标字符串不在白名单内");
144
+        }
145
+        job.setUpdateBy(getUsername());
146
+        return toAjax(jobService.updateJob(job));
147
+    }
148
+
149
+    /**
150
+     * 定时任务状态修改
151
+     */
152
+    @PreAuthorize("@ss.hasPermi('monitor:job:changeStatus')")
153
+    @Log(title = "定时任务", businessType = BusinessType.UPDATE)
154
+    @PutMapping("/changeStatus")
155
+    public AjaxResult changeStatus(@RequestBody SysJob job) throws SchedulerException
156
+    {
157
+        SysJob newJob = jobService.selectJobById(job.getJobId());
158
+        newJob.setStatus(job.getStatus());
159
+        return toAjax(jobService.changeStatus(newJob));
160
+    }
161
+
162
+    /**
163
+     * 定时任务立即执行一次
164
+     */
165
+    @PreAuthorize("@ss.hasPermi('monitor:job:changeStatus')")
166
+    @Log(title = "定时任务", businessType = BusinessType.UPDATE)
167
+    @PutMapping("/run")
168
+    public AjaxResult run(@RequestBody SysJob job) throws SchedulerException
169
+    {
170
+        boolean result = jobService.run(job);
171
+        return result ? success() : error("任务不存在或已过期!");
172
+    }
173
+
174
+    /**
175
+     * 删除定时任务
176
+     */
177
+    @PreAuthorize("@ss.hasPermi('monitor:job:remove')")
178
+    @Log(title = "定时任务", businessType = BusinessType.DELETE)
179
+    @DeleteMapping("/{jobIds}")
180
+    public AjaxResult remove(@PathVariable Long[] jobIds) throws SchedulerException
181
+    {
182
+        jobService.deleteJobByIds(jobIds);
183
+        return success();
184
+    }
185
+}

+ 92 - 0
airport-quartz/src/main/java/com/sundot/airport/quartz/controller/SysJobLogController.java

@@ -0,0 +1,92 @@
1
+package com.sundot.airport.quartz.controller;
2
+
3
+import java.util.List;
4
+import javax.servlet.http.HttpServletResponse;
5
+import org.springframework.beans.factory.annotation.Autowired;
6
+import org.springframework.security.access.prepost.PreAuthorize;
7
+import org.springframework.web.bind.annotation.DeleteMapping;
8
+import org.springframework.web.bind.annotation.GetMapping;
9
+import org.springframework.web.bind.annotation.PathVariable;
10
+import org.springframework.web.bind.annotation.PostMapping;
11
+import org.springframework.web.bind.annotation.RequestMapping;
12
+import org.springframework.web.bind.annotation.RestController;
13
+import com.sundot.airport.common.annotation.Log;
14
+import com.sundot.airport.common.core.controller.BaseController;
15
+import com.sundot.airport.common.core.domain.AjaxResult;
16
+import com.sundot.airport.common.core.page.TableDataInfo;
17
+import com.sundot.airport.common.enums.BusinessType;
18
+import com.sundot.airport.common.utils.poi.ExcelUtil;
19
+import com.sundot.airport.quartz.domain.SysJobLog;
20
+import com.sundot.airport.quartz.service.ISysJobLogService;
21
+
22
+/**
23
+ * 调度日志操作处理
24
+ * 
25
+ * @author ruoyi
26
+ */
27
+@RestController
28
+@RequestMapping("/monitor/jobLog")
29
+public class SysJobLogController extends BaseController
30
+{
31
+    @Autowired
32
+    private ISysJobLogService jobLogService;
33
+
34
+    /**
35
+     * 查询定时任务调度日志列表
36
+     */
37
+    @PreAuthorize("@ss.hasPermi('monitor:job:list')")
38
+    @GetMapping("/list")
39
+    public TableDataInfo list(SysJobLog sysJobLog)
40
+    {
41
+        startPage();
42
+        List<SysJobLog> list = jobLogService.selectJobLogList(sysJobLog);
43
+        return getDataTable(list);
44
+    }
45
+
46
+    /**
47
+     * 导出定时任务调度日志列表
48
+     */
49
+    @PreAuthorize("@ss.hasPermi('monitor:job:export')")
50
+    @Log(title = "任务调度日志", businessType = BusinessType.EXPORT)
51
+    @PostMapping("/export")
52
+    public void export(HttpServletResponse response, SysJobLog sysJobLog)
53
+    {
54
+        List<SysJobLog> list = jobLogService.selectJobLogList(sysJobLog);
55
+        ExcelUtil<SysJobLog> util = new ExcelUtil<SysJobLog>(SysJobLog.class);
56
+        util.exportExcel(response, list, "调度日志");
57
+    }
58
+    
59
+    /**
60
+     * 根据调度编号获取详细信息
61
+     */
62
+    @PreAuthorize("@ss.hasPermi('monitor:job:query')")
63
+    @GetMapping(value = "/{jobLogId}")
64
+    public AjaxResult getInfo(@PathVariable Long jobLogId)
65
+    {
66
+        return success(jobLogService.selectJobLogById(jobLogId));
67
+    }
68
+
69
+
70
+    /**
71
+     * 删除定时任务调度日志
72
+     */
73
+    @PreAuthorize("@ss.hasPermi('monitor:job:remove')")
74
+    @Log(title = "定时任务调度日志", businessType = BusinessType.DELETE)
75
+    @DeleteMapping("/{jobLogIds}")
76
+    public AjaxResult remove(@PathVariable Long[] jobLogIds)
77
+    {
78
+        return toAjax(jobLogService.deleteJobLogByIds(jobLogIds));
79
+    }
80
+
81
+    /**
82
+     * 清空定时任务调度日志
83
+     */
84
+    @PreAuthorize("@ss.hasPermi('monitor:job:remove')")
85
+    @Log(title = "调度日志", businessType = BusinessType.CLEAN)
86
+    @DeleteMapping("/clean")
87
+    public AjaxResult clean()
88
+    {
89
+        jobLogService.cleanJobLog();
90
+        return success();
91
+    }
92
+}

+ 171 - 0
airport-quartz/src/main/java/com/sundot/airport/quartz/domain/SysJob.java

@@ -0,0 +1,171 @@
1
+package com.sundot.airport.quartz.domain;
2
+
3
+import java.util.Date;
4
+import javax.validation.constraints.NotBlank;
5
+import javax.validation.constraints.Size;
6
+import org.apache.commons.lang3.builder.ToStringBuilder;
7
+import org.apache.commons.lang3.builder.ToStringStyle;
8
+import com.fasterxml.jackson.annotation.JsonFormat;
9
+import com.sundot.airport.common.annotation.Excel;
10
+import com.sundot.airport.common.annotation.Excel.ColumnType;
11
+import com.sundot.airport.common.constant.ScheduleConstants;
12
+import com.sundot.airport.common.core.domain.BaseEntity;
13
+import com.sundot.airport.common.utils.StringUtils;
14
+import com.sundot.airport.quartz.util.CronUtils;
15
+
16
+/**
17
+ * 定时任务调度表 sys_job
18
+ * 
19
+ * @author ruoyi
20
+ */
21
+public class SysJob extends BaseEntity
22
+{
23
+    private static final long serialVersionUID = 1L;
24
+
25
+    /** 任务ID */
26
+    @Excel(name = "任务序号", cellType = ColumnType.NUMERIC)
27
+    private Long jobId;
28
+
29
+    /** 任务名称 */
30
+    @Excel(name = "任务名称")
31
+    private String jobName;
32
+
33
+    /** 任务组名 */
34
+    @Excel(name = "任务组名")
35
+    private String jobGroup;
36
+
37
+    /** 调用目标字符串 */
38
+    @Excel(name = "调用目标字符串")
39
+    private String invokeTarget;
40
+
41
+    /** cron执行表达式 */
42
+    @Excel(name = "执行表达式 ")
43
+    private String cronExpression;
44
+
45
+    /** cron计划策略 */
46
+    @Excel(name = "计划策略 ", readConverterExp = "0=默认,1=立即触发执行,2=触发一次执行,3=不触发立即执行")
47
+    private String misfirePolicy = ScheduleConstants.MISFIRE_DEFAULT;
48
+
49
+    /** 是否并发执行(0允许 1禁止) */
50
+    @Excel(name = "并发执行", readConverterExp = "0=允许,1=禁止")
51
+    private String concurrent;
52
+
53
+    /** 任务状态(0正常 1暂停) */
54
+    @Excel(name = "任务状态", readConverterExp = "0=正常,1=暂停")
55
+    private String status;
56
+
57
+    public Long getJobId()
58
+    {
59
+        return jobId;
60
+    }
61
+
62
+    public void setJobId(Long jobId)
63
+    {
64
+        this.jobId = jobId;
65
+    }
66
+
67
+    @NotBlank(message = "任务名称不能为空")
68
+    @Size(min = 0, max = 64, message = "任务名称不能超过64个字符")
69
+    public String getJobName()
70
+    {
71
+        return jobName;
72
+    }
73
+
74
+    public void setJobName(String jobName)
75
+    {
76
+        this.jobName = jobName;
77
+    }
78
+
79
+    public String getJobGroup()
80
+    {
81
+        return jobGroup;
82
+    }
83
+
84
+    public void setJobGroup(String jobGroup)
85
+    {
86
+        this.jobGroup = jobGroup;
87
+    }
88
+
89
+    @NotBlank(message = "调用目标字符串不能为空")
90
+    @Size(min = 0, max = 500, message = "调用目标字符串长度不能超过500个字符")
91
+    public String getInvokeTarget()
92
+    {
93
+        return invokeTarget;
94
+    }
95
+
96
+    public void setInvokeTarget(String invokeTarget)
97
+    {
98
+        this.invokeTarget = invokeTarget;
99
+    }
100
+
101
+    @NotBlank(message = "Cron执行表达式不能为空")
102
+    @Size(min = 0, max = 255, message = "Cron执行表达式不能超过255个字符")
103
+    public String getCronExpression()
104
+    {
105
+        return cronExpression;
106
+    }
107
+
108
+    public void setCronExpression(String cronExpression)
109
+    {
110
+        this.cronExpression = cronExpression;
111
+    }
112
+
113
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
114
+    public Date getNextValidTime()
115
+    {
116
+        if (StringUtils.isNotEmpty(cronExpression))
117
+        {
118
+            return CronUtils.getNextExecution(cronExpression);
119
+        }
120
+        return null;
121
+    }
122
+
123
+    public String getMisfirePolicy()
124
+    {
125
+        return misfirePolicy;
126
+    }
127
+
128
+    public void setMisfirePolicy(String misfirePolicy)
129
+    {
130
+        this.misfirePolicy = misfirePolicy;
131
+    }
132
+
133
+    public String getConcurrent()
134
+    {
135
+        return concurrent;
136
+    }
137
+
138
+    public void setConcurrent(String concurrent)
139
+    {
140
+        this.concurrent = concurrent;
141
+    }
142
+
143
+    public String getStatus()
144
+    {
145
+        return status;
146
+    }
147
+
148
+    public void setStatus(String status)
149
+    {
150
+        this.status = status;
151
+    }
152
+
153
+    @Override
154
+    public String toString() {
155
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
156
+            .append("jobId", getJobId())
157
+            .append("jobName", getJobName())
158
+            .append("jobGroup", getJobGroup())
159
+            .append("cronExpression", getCronExpression())
160
+            .append("nextValidTime", getNextValidTime())
161
+            .append("misfirePolicy", getMisfirePolicy())
162
+            .append("concurrent", getConcurrent())
163
+            .append("status", getStatus())
164
+            .append("createBy", getCreateBy())
165
+            .append("createTime", getCreateTime())
166
+            .append("updateBy", getUpdateBy())
167
+            .append("updateTime", getUpdateTime())
168
+            .append("remark", getRemark())
169
+            .toString();
170
+    }
171
+}

+ 155 - 0
airport-quartz/src/main/java/com/sundot/airport/quartz/domain/SysJobLog.java

@@ -0,0 +1,155 @@
1
+package com.sundot.airport.quartz.domain;
2
+
3
+import java.util.Date;
4
+import org.apache.commons.lang3.builder.ToStringBuilder;
5
+import org.apache.commons.lang3.builder.ToStringStyle;
6
+import com.sundot.airport.common.annotation.Excel;
7
+import com.sundot.airport.common.core.domain.BaseEntity;
8
+
9
+/**
10
+ * 定时任务调度日志表 sys_job_log
11
+ * 
12
+ * @author ruoyi
13
+ */
14
+public class SysJobLog extends BaseEntity
15
+{
16
+    private static final long serialVersionUID = 1L;
17
+
18
+    /** ID */
19
+    @Excel(name = "日志序号")
20
+    private Long jobLogId;
21
+
22
+    /** 任务名称 */
23
+    @Excel(name = "任务名称")
24
+    private String jobName;
25
+
26
+    /** 任务组名 */
27
+    @Excel(name = "任务组名")
28
+    private String jobGroup;
29
+
30
+    /** 调用目标字符串 */
31
+    @Excel(name = "调用目标字符串")
32
+    private String invokeTarget;
33
+
34
+    /** 日志信息 */
35
+    @Excel(name = "日志信息")
36
+    private String jobMessage;
37
+
38
+    /** 执行状态(0正常 1失败) */
39
+    @Excel(name = "执行状态", readConverterExp = "0=正常,1=失败")
40
+    private String status;
41
+
42
+    /** 异常信息 */
43
+    @Excel(name = "异常信息")
44
+    private String exceptionInfo;
45
+
46
+    /** 开始时间 */
47
+    private Date startTime;
48
+
49
+    /** 停止时间 */
50
+    private Date stopTime;
51
+
52
+    public Long getJobLogId()
53
+    {
54
+        return jobLogId;
55
+    }
56
+
57
+    public void setJobLogId(Long jobLogId)
58
+    {
59
+        this.jobLogId = jobLogId;
60
+    }
61
+
62
+    public String getJobName()
63
+    {
64
+        return jobName;
65
+    }
66
+
67
+    public void setJobName(String jobName)
68
+    {
69
+        this.jobName = jobName;
70
+    }
71
+
72
+    public String getJobGroup()
73
+    {
74
+        return jobGroup;
75
+    }
76
+
77
+    public void setJobGroup(String jobGroup)
78
+    {
79
+        this.jobGroup = jobGroup;
80
+    }
81
+
82
+    public String getInvokeTarget()
83
+    {
84
+        return invokeTarget;
85
+    }
86
+
87
+    public void setInvokeTarget(String invokeTarget)
88
+    {
89
+        this.invokeTarget = invokeTarget;
90
+    }
91
+
92
+    public String getJobMessage()
93
+    {
94
+        return jobMessage;
95
+    }
96
+
97
+    public void setJobMessage(String jobMessage)
98
+    {
99
+        this.jobMessage = jobMessage;
100
+    }
101
+
102
+    public String getStatus()
103
+    {
104
+        return status;
105
+    }
106
+
107
+    public void setStatus(String status)
108
+    {
109
+        this.status = status;
110
+    }
111
+
112
+    public String getExceptionInfo()
113
+    {
114
+        return exceptionInfo;
115
+    }
116
+
117
+    public void setExceptionInfo(String exceptionInfo)
118
+    {
119
+        this.exceptionInfo = exceptionInfo;
120
+    }
121
+
122
+    public Date getStartTime()
123
+    {
124
+        return startTime;
125
+    }
126
+
127
+    public void setStartTime(Date startTime)
128
+    {
129
+        this.startTime = startTime;
130
+    }
131
+    
132
+    public Date getStopTime()
133
+    {
134
+        return stopTime;
135
+    }
136
+
137
+    public void setStopTime(Date stopTime)
138
+    {
139
+        this.stopTime = stopTime;
140
+    }
141
+
142
+    @Override
143
+    public String toString() {
144
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
145
+            .append("jobLogId", getJobLogId())
146
+            .append("jobName", getJobName())
147
+            .append("jobGroup", getJobGroup())
148
+            .append("jobMessage", getJobMessage())
149
+            .append("status", getStatus())
150
+            .append("exceptionInfo", getExceptionInfo())
151
+            .append("startTime", getStartTime())
152
+            .append("stopTime", getStopTime())
153
+            .toString();
154
+    }
155
+}

+ 64 - 0
airport-quartz/src/main/java/com/sundot/airport/quartz/mapper/SysJobLogMapper.java

@@ -0,0 +1,64 @@
1
+package com.sundot.airport.quartz.mapper;
2
+
3
+import java.util.List;
4
+import com.sundot.airport.quartz.domain.SysJobLog;
5
+
6
+/**
7
+ * 调度任务日志信息 数据层
8
+ * 
9
+ * @author ruoyi
10
+ */
11
+public interface SysJobLogMapper
12
+{
13
+    /**
14
+     * 获取quartz调度器日志的计划任务
15
+     * 
16
+     * @param jobLog 调度日志信息
17
+     * @return 调度任务日志集合
18
+     */
19
+    public List<SysJobLog> selectJobLogList(SysJobLog jobLog);
20
+
21
+    /**
22
+     * 查询所有调度任务日志
23
+     *
24
+     * @return 调度任务日志列表
25
+     */
26
+    public List<SysJobLog> selectJobLogAll();
27
+
28
+    /**
29
+     * 通过调度任务日志ID查询调度信息
30
+     * 
31
+     * @param jobLogId 调度任务日志ID
32
+     * @return 调度任务日志对象信息
33
+     */
34
+    public SysJobLog selectJobLogById(Long jobLogId);
35
+
36
+    /**
37
+     * 新增任务日志
38
+     * 
39
+     * @param jobLog 调度日志信息
40
+     * @return 结果
41
+     */
42
+    public int insertJobLog(SysJobLog jobLog);
43
+
44
+    /**
45
+     * 批量删除调度日志信息
46
+     * 
47
+     * @param logIds 需要删除的数据ID
48
+     * @return 结果
49
+     */
50
+    public int deleteJobLogByIds(Long[] logIds);
51
+
52
+    /**
53
+     * 删除任务日志
54
+     * 
55
+     * @param jobId 调度日志ID
56
+     * @return 结果
57
+     */
58
+    public int deleteJobLogById(Long jobId);
59
+
60
+    /**
61
+     * 清空任务日志
62
+     */
63
+    public void cleanJobLog();
64
+}

+ 67 - 0
airport-quartz/src/main/java/com/sundot/airport/quartz/mapper/SysJobMapper.java

@@ -0,0 +1,67 @@
1
+package com.sundot.airport.quartz.mapper;
2
+
3
+import java.util.List;
4
+import com.sundot.airport.quartz.domain.SysJob;
5
+
6
+/**
7
+ * 调度任务信息 数据层
8
+ * 
9
+ * @author ruoyi
10
+ */
11
+public interface SysJobMapper
12
+{
13
+    /**
14
+     * 查询调度任务日志集合
15
+     * 
16
+     * @param job 调度信息
17
+     * @return 操作日志集合
18
+     */
19
+    public List<SysJob> selectJobList(SysJob job);
20
+
21
+    /**
22
+     * 查询所有调度任务
23
+     * 
24
+     * @return 调度任务列表
25
+     */
26
+    public List<SysJob> selectJobAll();
27
+
28
+    /**
29
+     * 通过调度ID查询调度任务信息
30
+     * 
31
+     * @param jobId 调度ID
32
+     * @return 角色对象信息
33
+     */
34
+    public SysJob selectJobById(Long jobId);
35
+
36
+    /**
37
+     * 通过调度ID删除调度任务信息
38
+     * 
39
+     * @param jobId 调度ID
40
+     * @return 结果
41
+     */
42
+    public int deleteJobById(Long jobId);
43
+
44
+    /**
45
+     * 批量删除调度任务信息
46
+     * 
47
+     * @param ids 需要删除的数据ID
48
+     * @return 结果
49
+     */
50
+    public int deleteJobByIds(Long[] ids);
51
+
52
+    /**
53
+     * 修改调度任务信息
54
+     * 
55
+     * @param job 调度任务信息
56
+     * @return 结果
57
+     */
58
+    public int updateJob(SysJob job);
59
+
60
+    /**
61
+     * 新增调度任务信息
62
+     * 
63
+     * @param job 调度任务信息
64
+     * @return 结果
65
+     */
66
+    public int insertJob(SysJob job);
67
+}

+ 56 - 0
airport-quartz/src/main/java/com/sundot/airport/quartz/service/ISysJobLogService.java

@@ -0,0 +1,56 @@
1
+package com.sundot.airport.quartz.service;
2
+
3
+import java.util.List;
4
+import com.sundot.airport.quartz.domain.SysJobLog;
5
+
6
+/**
7
+ * 定时任务调度日志信息信息 服务层
8
+ * 
9
+ * @author ruoyi
10
+ */
11
+public interface ISysJobLogService
12
+{
13
+    /**
14
+     * 获取quartz调度器日志的计划任务
15
+     * 
16
+     * @param jobLog 调度日志信息
17
+     * @return 调度任务日志集合
18
+     */
19
+    public List<SysJobLog> selectJobLogList(SysJobLog jobLog);
20
+
21
+    /**
22
+     * 通过调度任务日志ID查询调度信息
23
+     * 
24
+     * @param jobLogId 调度任务日志ID
25
+     * @return 调度任务日志对象信息
26
+     */
27
+    public SysJobLog selectJobLogById(Long jobLogId);
28
+
29
+    /**
30
+     * 新增任务日志
31
+     * 
32
+     * @param jobLog 调度日志信息
33
+     */
34
+    public void addJobLog(SysJobLog jobLog);
35
+
36
+    /**
37
+     * 批量删除调度日志信息
38
+     * 
39
+     * @param logIds 需要删除的日志ID
40
+     * @return 结果
41
+     */
42
+    public int deleteJobLogByIds(Long[] logIds);
43
+
44
+    /**
45
+     * 删除任务日志
46
+     * 
47
+     * @param jobId 调度日志ID
48
+     * @return 结果
49
+     */
50
+    public int deleteJobLogById(Long jobId);
51
+
52
+    /**
53
+     * 清空任务日志
54
+     */
55
+    public void cleanJobLog();
56
+}

+ 102 - 0
airport-quartz/src/main/java/com/sundot/airport/quartz/service/ISysJobService.java

@@ -0,0 +1,102 @@
1
+package com.sundot.airport.quartz.service;
2
+
3
+import java.util.List;
4
+import org.quartz.SchedulerException;
5
+import com.sundot.airport.common.exception.job.TaskException;
6
+import com.sundot.airport.quartz.domain.SysJob;
7
+
8
+/**
9
+ * 定时任务调度信息信息 服务层
10
+ * 
11
+ * @author ruoyi
12
+ */
13
+public interface ISysJobService
14
+{
15
+    /**
16
+     * 获取quartz调度器的计划任务
17
+     * 
18
+     * @param job 调度信息
19
+     * @return 调度任务集合
20
+     */
21
+    public List<SysJob> selectJobList(SysJob job);
22
+
23
+    /**
24
+     * 通过调度任务ID查询调度信息
25
+     * 
26
+     * @param jobId 调度任务ID
27
+     * @return 调度任务对象信息
28
+     */
29
+    public SysJob selectJobById(Long jobId);
30
+
31
+    /**
32
+     * 暂停任务
33
+     * 
34
+     * @param job 调度信息
35
+     * @return 结果
36
+     */
37
+    public int pauseJob(SysJob job) throws SchedulerException;
38
+
39
+    /**
40
+     * 恢复任务
41
+     * 
42
+     * @param job 调度信息
43
+     * @return 结果
44
+     */
45
+    public int resumeJob(SysJob job) throws SchedulerException;
46
+
47
+    /**
48
+     * 删除任务后,所对应的trigger也将被删除
49
+     * 
50
+     * @param job 调度信息
51
+     * @return 结果
52
+     */
53
+    public int deleteJob(SysJob job) throws SchedulerException;
54
+
55
+    /**
56
+     * 批量删除调度信息
57
+     * 
58
+     * @param jobIds 需要删除的任务ID
59
+     * @return 结果
60
+     */
61
+    public void deleteJobByIds(Long[] jobIds) throws SchedulerException;
62
+
63
+    /**
64
+     * 任务调度状态修改
65
+     * 
66
+     * @param job 调度信息
67
+     * @return 结果
68
+     */
69
+    public int changeStatus(SysJob job) throws SchedulerException;
70
+
71
+    /**
72
+     * 立即运行任务
73
+     * 
74
+     * @param job 调度信息
75
+     * @return 结果
76
+     */
77
+    public boolean run(SysJob job) throws SchedulerException;
78
+
79
+    /**
80
+     * 新增任务
81
+     * 
82
+     * @param job 调度信息
83
+     * @return 结果
84
+     */
85
+    public int insertJob(SysJob job) throws SchedulerException, TaskException;
86
+
87
+    /**
88
+     * 更新任务
89
+     * 
90
+     * @param job 调度信息
91
+     * @return 结果
92
+     */
93
+    public int updateJob(SysJob job) throws SchedulerException, TaskException;
94
+
95
+    /**
96
+     * 校验cron表达式是否有效
97
+     * 
98
+     * @param cronExpression 表达式
99
+     * @return 结果
100
+     */
101
+    public boolean checkCronExpressionIsValid(String cronExpression);
102
+}

+ 87 - 0
airport-quartz/src/main/java/com/sundot/airport/quartz/service/impl/SysJobLogServiceImpl.java

@@ -0,0 +1,87 @@
1
+package com.sundot.airport.quartz.service.impl;
2
+
3
+import java.util.List;
4
+import org.springframework.beans.factory.annotation.Autowired;
5
+import org.springframework.stereotype.Service;
6
+import com.sundot.airport.quartz.domain.SysJobLog;
7
+import com.sundot.airport.quartz.mapper.SysJobLogMapper;
8
+import com.sundot.airport.quartz.service.ISysJobLogService;
9
+
10
+/**
11
+ * 定时任务调度日志信息 服务层
12
+ * 
13
+ * @author ruoyi
14
+ */
15
+@Service
16
+public class SysJobLogServiceImpl implements ISysJobLogService
17
+{
18
+    @Autowired
19
+    private SysJobLogMapper jobLogMapper;
20
+
21
+    /**
22
+     * 获取quartz调度器日志的计划任务
23
+     * 
24
+     * @param jobLog 调度日志信息
25
+     * @return 调度任务日志集合
26
+     */
27
+    @Override
28
+    public List<SysJobLog> selectJobLogList(SysJobLog jobLog)
29
+    {
30
+        return jobLogMapper.selectJobLogList(jobLog);
31
+    }
32
+
33
+    /**
34
+     * 通过调度任务日志ID查询调度信息
35
+     * 
36
+     * @param jobLogId 调度任务日志ID
37
+     * @return 调度任务日志对象信息
38
+     */
39
+    @Override
40
+    public SysJobLog selectJobLogById(Long jobLogId)
41
+    {
42
+        return jobLogMapper.selectJobLogById(jobLogId);
43
+    }
44
+
45
+    /**
46
+     * 新增任务日志
47
+     * 
48
+     * @param jobLog 调度日志信息
49
+     */
50
+    @Override
51
+    public void addJobLog(SysJobLog jobLog)
52
+    {
53
+        jobLogMapper.insertJobLog(jobLog);
54
+    }
55
+
56
+    /**
57
+     * 批量删除调度日志信息
58
+     * 
59
+     * @param logIds 需要删除的数据ID
60
+     * @return 结果
61
+     */
62
+    @Override
63
+    public int deleteJobLogByIds(Long[] logIds)
64
+    {
65
+        return jobLogMapper.deleteJobLogByIds(logIds);
66
+    }
67
+
68
+    /**
69
+     * 删除任务日志
70
+     * 
71
+     * @param jobId 调度日志ID
72
+     */
73
+    @Override
74
+    public int deleteJobLogById(Long jobId)
75
+    {
76
+        return jobLogMapper.deleteJobLogById(jobId);
77
+    }
78
+
79
+    /**
80
+     * 清空任务日志
81
+     */
82
+    @Override
83
+    public void cleanJobLog()
84
+    {
85
+        jobLogMapper.cleanJobLog();
86
+    }
87
+}

+ 261 - 0
airport-quartz/src/main/java/com/sundot/airport/quartz/service/impl/SysJobServiceImpl.java

@@ -0,0 +1,261 @@
1
+package com.sundot.airport.quartz.service.impl;
2
+
3
+import java.util.List;
4
+import javax.annotation.PostConstruct;
5
+import org.quartz.JobDataMap;
6
+import org.quartz.JobKey;
7
+import org.quartz.Scheduler;
8
+import org.quartz.SchedulerException;
9
+import org.springframework.beans.factory.annotation.Autowired;
10
+import org.springframework.stereotype.Service;
11
+import org.springframework.transaction.annotation.Transactional;
12
+import com.sundot.airport.common.constant.ScheduleConstants;
13
+import com.sundot.airport.common.exception.job.TaskException;
14
+import com.sundot.airport.quartz.domain.SysJob;
15
+import com.sundot.airport.quartz.mapper.SysJobMapper;
16
+import com.sundot.airport.quartz.service.ISysJobService;
17
+import com.sundot.airport.quartz.util.CronUtils;
18
+import com.sundot.airport.quartz.util.ScheduleUtils;
19
+
20
+/**
21
+ * 定时任务调度信息 服务层
22
+ * 
23
+ * @author ruoyi
24
+ */
25
+@Service
26
+public class SysJobServiceImpl implements ISysJobService
27
+{
28
+    @Autowired
29
+    private Scheduler scheduler;
30
+
31
+    @Autowired
32
+    private SysJobMapper jobMapper;
33
+
34
+    /**
35
+     * 项目启动时,初始化定时器 主要是防止手动修改数据库导致未同步到定时任务处理(注:不能手动修改数据库ID和任务组名,否则会导致脏数据)
36
+     */
37
+    @PostConstruct
38
+    public void init() throws SchedulerException, TaskException
39
+    {
40
+        scheduler.clear();
41
+        List<SysJob> jobList = jobMapper.selectJobAll();
42
+        for (SysJob job : jobList)
43
+        {
44
+            ScheduleUtils.createScheduleJob(scheduler, job);
45
+        }
46
+    }
47
+
48
+    /**
49
+     * 获取quartz调度器的计划任务列表
50
+     * 
51
+     * @param job 调度信息
52
+     * @return
53
+     */
54
+    @Override
55
+    public List<SysJob> selectJobList(SysJob job)
56
+    {
57
+        return jobMapper.selectJobList(job);
58
+    }
59
+
60
+    /**
61
+     * 通过调度任务ID查询调度信息
62
+     * 
63
+     * @param jobId 调度任务ID
64
+     * @return 调度任务对象信息
65
+     */
66
+    @Override
67
+    public SysJob selectJobById(Long jobId)
68
+    {
69
+        return jobMapper.selectJobById(jobId);
70
+    }
71
+
72
+    /**
73
+     * 暂停任务
74
+     * 
75
+     * @param job 调度信息
76
+     */
77
+    @Override
78
+    @Transactional(rollbackFor = Exception.class)
79
+    public int pauseJob(SysJob job) throws SchedulerException
80
+    {
81
+        Long jobId = job.getJobId();
82
+        String jobGroup = job.getJobGroup();
83
+        job.setStatus(ScheduleConstants.Status.PAUSE.getValue());
84
+        int rows = jobMapper.updateJob(job);
85
+        if (rows > 0)
86
+        {
87
+            scheduler.pauseJob(ScheduleUtils.getJobKey(jobId, jobGroup));
88
+        }
89
+        return rows;
90
+    }
91
+
92
+    /**
93
+     * 恢复任务
94
+     * 
95
+     * @param job 调度信息
96
+     */
97
+    @Override
98
+    @Transactional(rollbackFor = Exception.class)
99
+    public int resumeJob(SysJob job) throws SchedulerException
100
+    {
101
+        Long jobId = job.getJobId();
102
+        String jobGroup = job.getJobGroup();
103
+        job.setStatus(ScheduleConstants.Status.NORMAL.getValue());
104
+        int rows = jobMapper.updateJob(job);
105
+        if (rows > 0)
106
+        {
107
+            scheduler.resumeJob(ScheduleUtils.getJobKey(jobId, jobGroup));
108
+        }
109
+        return rows;
110
+    }
111
+
112
+    /**
113
+     * 删除任务后,所对应的trigger也将被删除
114
+     * 
115
+     * @param job 调度信息
116
+     */
117
+    @Override
118
+    @Transactional(rollbackFor = Exception.class)
119
+    public int deleteJob(SysJob job) throws SchedulerException
120
+    {
121
+        Long jobId = job.getJobId();
122
+        String jobGroup = job.getJobGroup();
123
+        int rows = jobMapper.deleteJobById(jobId);
124
+        if (rows > 0)
125
+        {
126
+            scheduler.deleteJob(ScheduleUtils.getJobKey(jobId, jobGroup));
127
+        }
128
+        return rows;
129
+    }
130
+
131
+    /**
132
+     * 批量删除调度信息
133
+     * 
134
+     * @param jobIds 需要删除的任务ID
135
+     * @return 结果
136
+     */
137
+    @Override
138
+    @Transactional(rollbackFor = Exception.class)
139
+    public void deleteJobByIds(Long[] jobIds) throws SchedulerException
140
+    {
141
+        for (Long jobId : jobIds)
142
+        {
143
+            SysJob job = jobMapper.selectJobById(jobId);
144
+            deleteJob(job);
145
+        }
146
+    }
147
+
148
+    /**
149
+     * 任务调度状态修改
150
+     * 
151
+     * @param job 调度信息
152
+     */
153
+    @Override
154
+    @Transactional(rollbackFor = Exception.class)
155
+    public int changeStatus(SysJob job) throws SchedulerException
156
+    {
157
+        int rows = 0;
158
+        String status = job.getStatus();
159
+        if (ScheduleConstants.Status.NORMAL.getValue().equals(status))
160
+        {
161
+            rows = resumeJob(job);
162
+        }
163
+        else if (ScheduleConstants.Status.PAUSE.getValue().equals(status))
164
+        {
165
+            rows = pauseJob(job);
166
+        }
167
+        return rows;
168
+    }
169
+
170
+    /**
171
+     * 立即运行任务
172
+     * 
173
+     * @param job 调度信息
174
+     */
175
+    @Override
176
+    @Transactional(rollbackFor = Exception.class)
177
+    public boolean run(SysJob job) throws SchedulerException
178
+    {
179
+        boolean result = false;
180
+        Long jobId = job.getJobId();
181
+        String jobGroup = job.getJobGroup();
182
+        SysJob properties = selectJobById(job.getJobId());
183
+        // 参数
184
+        JobDataMap dataMap = new JobDataMap();
185
+        dataMap.put(ScheduleConstants.TASK_PROPERTIES, properties);
186
+        JobKey jobKey = ScheduleUtils.getJobKey(jobId, jobGroup);
187
+        if (scheduler.checkExists(jobKey))
188
+        {
189
+            result = true;
190
+            scheduler.triggerJob(jobKey, dataMap);
191
+        }
192
+        return result;
193
+    }
194
+
195
+    /**
196
+     * 新增任务
197
+     * 
198
+     * @param job 调度信息 调度信息
199
+     */
200
+    @Override
201
+    @Transactional(rollbackFor = Exception.class)
202
+    public int insertJob(SysJob job) throws SchedulerException, TaskException
203
+    {
204
+        job.setStatus(ScheduleConstants.Status.PAUSE.getValue());
205
+        int rows = jobMapper.insertJob(job);
206
+        if (rows > 0)
207
+        {
208
+            ScheduleUtils.createScheduleJob(scheduler, job);
209
+        }
210
+        return rows;
211
+    }
212
+
213
+    /**
214
+     * 更新任务的时间表达式
215
+     * 
216
+     * @param job 调度信息
217
+     */
218
+    @Override
219
+    @Transactional(rollbackFor = Exception.class)
220
+    public int updateJob(SysJob job) throws SchedulerException, TaskException
221
+    {
222
+        SysJob properties = selectJobById(job.getJobId());
223
+        int rows = jobMapper.updateJob(job);
224
+        if (rows > 0)
225
+        {
226
+            updateSchedulerJob(job, properties.getJobGroup());
227
+        }
228
+        return rows;
229
+    }
230
+
231
+    /**
232
+     * 更新任务
233
+     * 
234
+     * @param job 任务对象
235
+     * @param jobGroup 任务组名
236
+     */
237
+    public void updateSchedulerJob(SysJob job, String jobGroup) throws SchedulerException, TaskException
238
+    {
239
+        Long jobId = job.getJobId();
240
+        // 判断是否存在
241
+        JobKey jobKey = ScheduleUtils.getJobKey(jobId, jobGroup);
242
+        if (scheduler.checkExists(jobKey))
243
+        {
244
+            // 防止创建时存在数据问题 先移除,然后在执行创建操作
245
+            scheduler.deleteJob(jobKey);
246
+        }
247
+        ScheduleUtils.createScheduleJob(scheduler, job);
248
+    }
249
+
250
+    /**
251
+     * 校验cron表达式是否有效
252
+     * 
253
+     * @param cronExpression 表达式
254
+     * @return 结果
255
+     */
256
+    @Override
257
+    public boolean checkCronExpressionIsValid(String cronExpression)
258
+    {
259
+        return CronUtils.isValid(cronExpression);
260
+    }
261
+}

+ 76 - 0
airport-quartz/src/main/java/com/sundot/airport/quartz/task/AttendanceTask.java

@@ -0,0 +1,76 @@
1
+package com.sundot.airport.quartz.task;
2
+
3
+import cn.hutool.core.date.DateUtil;
4
+import com.sundot.airport.attendance.domain.AttendancePostRecord;
5
+import com.sundot.airport.attendance.service.IAttendancePostRecordService;
6
+import com.sundot.airport.common.utils.DateUtils;
7
+import com.sundot.airport.system.service.ISysConfigService;
8
+import org.slf4j.Logger;
9
+import org.slf4j.LoggerFactory;
10
+import org.springframework.beans.factory.annotation.Autowired;
11
+import org.springframework.stereotype.Component;
12
+
13
+import java.text.SimpleDateFormat;
14
+import java.util.Date;
15
+import java.util.List;
16
+
17
+@Component("attendanceTask")
18
+public class AttendanceTask {
19
+    private static final Logger log = LoggerFactory.getLogger(AttendanceTask.class);
20
+
21
+    @Autowired
22
+    private IAttendancePostRecordService attendancePostRecordService;
23
+
24
+
25
+    @Autowired
26
+    private ISysConfigService configService;
27
+
28
+    /**
29
+     * 每天9:00自动下通道
30
+     */
31
+    public void autoCheckOutAtNine() {
32
+        try {
33
+            log.info("开始执行自动下通道任务");
34
+            String start = configService.selectConfigByKey("attendance.post.record.start.time");
35
+            String end = configService.selectConfigByKey("attendance.post.record.end.time");
36
+            // 获取昨天9:00到今天9:00之间的在岗记录
37
+            Date yesterday = DateUtils.addDays(new Date(), -1);
38
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
39
+            String yesterdayStr = sdf.format(yesterday);
40
+            String todayStr = sdf.format(new Date());
41
+
42
+            Date startTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(yesterdayStr + " " + start);
43
+            Date endTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(todayStr + " " + end);
44
+
45
+            // 查询在该时间段内未签退的记录
46
+            AttendancePostRecord queryParam = new AttendancePostRecord();
47
+            queryParam.setCheckInTimeStart(startTime);
48
+            queryParam.setCheckInTimeEnd(endTime);
49
+            queryParam.setCheckOutTimeType(1); // 未签退的记录
50
+
51
+            List<AttendancePostRecord> records = attendancePostRecordService.selectAttendancePostRecordList(queryParam);
52
+
53
+            // 自动签退这些记录
54
+            Date autoCheckOutTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(todayStr + " " + end);
55
+            int count = 0;
56
+            for (AttendancePostRecord record : records) {
57
+                try {
58
+                    record.setCheckOutTime(autoCheckOutTime);
59
+                    record.setWorkDuration((autoCheckOutTime.getTime() - record.getCheckInTime().getTime()) / 1000 / 60);
60
+                    record.setUpdateBy("SYSTEM");
61
+                    record.setUpdateTime(new Date());
62
+                    record.setRemark((record.getRemark() != null ? record.getRemark() : "") + " 系统自动签退");
63
+                    record.setLocked(false);
64
+                    attendancePostRecordService.updateAttendancePostRecord(record);
65
+                    count++;
66
+                } catch (Exception e) {
67
+                    log.error("自动签退记录失败,ID: " + record.getId(), e);
68
+                }
69
+            }
70
+
71
+            log.info("自动下通道任务执行完成,共处理 {} 条记录", count);
72
+        } catch (Exception e) {
73
+            log.error("执行自动下通道任务失败", e);
74
+        }
75
+    }
76
+}

+ 53 - 0
airport-quartz/src/main/java/com/sundot/airport/quartz/task/DailyTaskExpireTask.java

@@ -0,0 +1,53 @@
1
+package com.sundot.airport.quartz.task;
2
+
3
+import com.sundot.airport.exam.service.IDailyTaskExpireService;
4
+import org.slf4j.Logger;
5
+import org.slf4j.LoggerFactory;
6
+import org.springframework.beans.factory.annotation.Autowired;
7
+import org.springframework.stereotype.Component;
8
+
9
+/**
10
+ * <b>功能名:</b>DailyTaskExpireTask<br>
11
+ * <b>说明:</b> 每日答题任务逾期处理定时任务 <br>
12
+ * <b>著作权:</b> Copyright (C) 2025 SUNDOT CORPORATION<br>
13
+ * <b>修改履历:
14
+ *
15
+ * @author Simon Lin
16
+ */
17
+@Component("dailyTaskExpireTask")
18
+public class DailyTaskExpireTask {
19
+
20
+    private static final Logger log = LoggerFactory.getLogger(DailyTaskExpireTask.class);
21
+
22
+    @Autowired
23
+    private IDailyTaskExpireService dailyTaskExpireService;
24
+
25
+    /**
26
+     * 处理逾期任务
27
+     * <p>
28
+     * 定时任务配置说明:
29
+     * - 执行时间:每天7:10执行(业务日期在7:00结束,7:10开始处理逾期任务)
30
+     * - Cron表达式:0 10 7 * * ?
31
+     * - 调用目标:dailyTaskExpireTask.processExpiredTasks
32
+     * </p>
33
+     */
34
+    public void processExpiredTasks() {
35
+        try {
36
+            log.info("========== 开始执行每日答题任务逾期处理 ==========");
37
+
38
+            int expiredCount = dailyTaskExpireService.processExpiredTasks();
39
+
40
+            log.info("========== 每日答题任务逾期处理完成,共处理 {} 个任务 ==========", expiredCount);
41
+        } catch (Exception e) {
42
+            log.error("执行每日答题任务逾期处理失败", e);
43
+        }
44
+    }
45
+
46
+    /**
47
+     * 手动触发逾期任务处理(用于测试)
48
+     */
49
+    public void processExpiredTasksManual() {
50
+        log.info("手动触发逾期任务处理");
51
+        processExpiredTasks();
52
+    }
53
+}

+ 28 - 0
airport-quartz/src/main/java/com/sundot/airport/quartz/task/RyTask.java

@@ -0,0 +1,28 @@
1
+package com.sundot.airport.quartz.task;
2
+
3
+import org.springframework.stereotype.Component;
4
+import com.sundot.airport.common.utils.StringUtils;
5
+
6
+/**
7
+ * 定时任务调度测试
8
+ * 
9
+ * @author ruoyi
10
+ */
11
+@Component("ryTask")
12
+public class RyTask
13
+{
14
+    public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
15
+    {
16
+        System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i));
17
+    }
18
+
19
+    public void ryParams(String params)
20
+    {
21
+        System.out.println("执行有参方法:" + params);
22
+    }
23
+
24
+    public void ryNoParams()
25
+    {
26
+        System.out.println("执行无参方法");
27
+    }
28
+}

+ 106 - 0
airport-quartz/src/main/java/com/sundot/airport/quartz/util/AbstractQuartzJob.java

@@ -0,0 +1,106 @@
1
+package com.sundot.airport.quartz.util;
2
+
3
+import java.util.Date;
4
+import org.quartz.Job;
5
+import org.quartz.JobExecutionContext;
6
+import org.slf4j.Logger;
7
+import org.slf4j.LoggerFactory;
8
+import com.sundot.airport.common.constant.Constants;
9
+import com.sundot.airport.common.constant.ScheduleConstants;
10
+import com.sundot.airport.common.utils.ExceptionUtil;
11
+import com.sundot.airport.common.utils.StringUtils;
12
+import com.sundot.airport.common.utils.bean.BeanUtils;
13
+import com.sundot.airport.common.utils.spring.SpringUtils;
14
+import com.sundot.airport.quartz.domain.SysJob;
15
+import com.sundot.airport.quartz.domain.SysJobLog;
16
+import com.sundot.airport.quartz.service.ISysJobLogService;
17
+
18
+/**
19
+ * 抽象quartz调用
20
+ *
21
+ * @author ruoyi
22
+ */
23
+public abstract class AbstractQuartzJob implements Job
24
+{
25
+    private static final Logger log = LoggerFactory.getLogger(AbstractQuartzJob.class);
26
+
27
+    /**
28
+     * 线程本地变量
29
+     */
30
+    private static ThreadLocal<Date> threadLocal = new ThreadLocal<>();
31
+
32
+    @Override
33
+    public void execute(JobExecutionContext context)
34
+    {
35
+        SysJob sysJob = new SysJob();
36
+        BeanUtils.copyBeanProp(sysJob, context.getMergedJobDataMap().get(ScheduleConstants.TASK_PROPERTIES));
37
+        try
38
+        {
39
+            before(context, sysJob);
40
+            if (sysJob != null)
41
+            {
42
+                doExecute(context, sysJob);
43
+            }
44
+            after(context, sysJob, null);
45
+        }
46
+        catch (Exception e)
47
+        {
48
+            log.error("任务执行异常  - :", e);
49
+            after(context, sysJob, e);
50
+        }
51
+    }
52
+
53
+    /**
54
+     * 执行前
55
+     *
56
+     * @param context 工作执行上下文对象
57
+     * @param sysJob 系统计划任务
58
+     */
59
+    protected void before(JobExecutionContext context, SysJob sysJob)
60
+    {
61
+        threadLocal.set(new Date());
62
+    }
63
+
64
+    /**
65
+     * 执行后
66
+     *
67
+     * @param context 工作执行上下文对象
68
+     * @param sysJob 系统计划任务
69
+     */
70
+    protected void after(JobExecutionContext context, SysJob sysJob, Exception e)
71
+    {
72
+        Date startTime = threadLocal.get();
73
+        threadLocal.remove();
74
+
75
+        final SysJobLog sysJobLog = new SysJobLog();
76
+        sysJobLog.setJobName(sysJob.getJobName());
77
+        sysJobLog.setJobGroup(sysJob.getJobGroup());
78
+        sysJobLog.setInvokeTarget(sysJob.getInvokeTarget());
79
+        sysJobLog.setStartTime(startTime);
80
+        sysJobLog.setStopTime(new Date());
81
+        long runMs = sysJobLog.getStopTime().getTime() - sysJobLog.getStartTime().getTime();
82
+        sysJobLog.setJobMessage(sysJobLog.getJobName() + " 总共耗时:" + runMs + "毫秒");
83
+        if (e != null)
84
+        {
85
+            sysJobLog.setStatus(Constants.FAIL);
86
+            String errorMsg = StringUtils.substring(ExceptionUtil.getExceptionMessage(e), 0, 2000);
87
+            sysJobLog.setExceptionInfo(errorMsg);
88
+        }
89
+        else
90
+        {
91
+            sysJobLog.setStatus(Constants.SUCCESS);
92
+        }
93
+
94
+        // 写入数据库当中
95
+        SpringUtils.getBean(ISysJobLogService.class).addJobLog(sysJobLog);
96
+    }
97
+
98
+    /**
99
+     * 执行方法,由子类重载
100
+     *
101
+     * @param context 工作执行上下文对象
102
+     * @param sysJob 系统计划任务
103
+     * @throws Exception 执行过程中的异常
104
+     */
105
+    protected abstract void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception;
106
+}

+ 63 - 0
airport-quartz/src/main/java/com/sundot/airport/quartz/util/CronUtils.java

@@ -0,0 +1,63 @@
1
+package com.sundot.airport.quartz.util;
2
+
3
+import java.text.ParseException;
4
+import java.util.Date;
5
+import org.quartz.CronExpression;
6
+
7
+/**
8
+ * cron表达式工具类
9
+ * 
10
+ * @author ruoyi
11
+ *
12
+ */
13
+public class CronUtils
14
+{
15
+    /**
16
+     * 返回一个布尔值代表一个给定的Cron表达式的有效性
17
+     *
18
+     * @param cronExpression Cron表达式
19
+     * @return boolean 表达式是否有效
20
+     */
21
+    public static boolean isValid(String cronExpression)
22
+    {
23
+        return CronExpression.isValidExpression(cronExpression);
24
+    }
25
+
26
+    /**
27
+     * 返回一个字符串值,表示该消息无效Cron表达式给出有效性
28
+     *
29
+     * @param cronExpression Cron表达式
30
+     * @return String 无效时返回表达式错误描述,如果有效返回null
31
+     */
32
+    public static String getInvalidMessage(String cronExpression)
33
+    {
34
+        try
35
+        {
36
+            new CronExpression(cronExpression);
37
+            return null;
38
+        }
39
+        catch (ParseException pe)
40
+        {
41
+            return pe.getMessage();
42
+        }
43
+    }
44
+
45
+    /**
46
+     * 返回下一个执行时间根据给定的Cron表达式
47
+     *
48
+     * @param cronExpression Cron表达式
49
+     * @return Date 下次Cron表达式执行时间
50
+     */
51
+    public static Date getNextExecution(String cronExpression)
52
+    {
53
+        try
54
+        {
55
+            CronExpression cron = new CronExpression(cronExpression);
56
+            return cron.getNextValidTimeAfter(new Date(System.currentTimeMillis()));
57
+        }
58
+        catch (ParseException e)
59
+        {
60
+            throw new IllegalArgumentException(e.getMessage());
61
+        }
62
+    }
63
+}

+ 182 - 0
airport-quartz/src/main/java/com/sundot/airport/quartz/util/JobInvokeUtil.java

@@ -0,0 +1,182 @@
1
+package com.sundot.airport.quartz.util;
2
+
3
+import java.lang.reflect.InvocationTargetException;
4
+import java.lang.reflect.Method;
5
+import java.util.LinkedList;
6
+import java.util.List;
7
+import com.sundot.airport.common.utils.StringUtils;
8
+import com.sundot.airport.common.utils.spring.SpringUtils;
9
+import com.sundot.airport.quartz.domain.SysJob;
10
+
11
+/**
12
+ * 任务执行工具
13
+ *
14
+ * @author ruoyi
15
+ */
16
+public class JobInvokeUtil
17
+{
18
+    /**
19
+     * 执行方法
20
+     *
21
+     * @param sysJob 系统任务
22
+     */
23
+    public static void invokeMethod(SysJob sysJob) throws Exception
24
+    {
25
+        String invokeTarget = sysJob.getInvokeTarget();
26
+        String beanName = getBeanName(invokeTarget);
27
+        String methodName = getMethodName(invokeTarget);
28
+        List<Object[]> methodParams = getMethodParams(invokeTarget);
29
+
30
+        if (!isValidClassName(beanName))
31
+        {
32
+            Object bean = SpringUtils.getBean(beanName);
33
+            invokeMethod(bean, methodName, methodParams);
34
+        }
35
+        else
36
+        {
37
+            Object bean = Class.forName(beanName).getDeclaredConstructor().newInstance();
38
+            invokeMethod(bean, methodName, methodParams);
39
+        }
40
+    }
41
+
42
+    /**
43
+     * 调用任务方法
44
+     *
45
+     * @param bean 目标对象
46
+     * @param methodName 方法名称
47
+     * @param methodParams 方法参数
48
+     */
49
+    private static void invokeMethod(Object bean, String methodName, List<Object[]> methodParams)
50
+            throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException,
51
+            InvocationTargetException
52
+    {
53
+        if (StringUtils.isNotNull(methodParams) && methodParams.size() > 0)
54
+        {
55
+            Method method = bean.getClass().getMethod(methodName, getMethodParamsType(methodParams));
56
+            method.invoke(bean, getMethodParamsValue(methodParams));
57
+        }
58
+        else
59
+        {
60
+            Method method = bean.getClass().getMethod(methodName);
61
+            method.invoke(bean);
62
+        }
63
+    }
64
+
65
+    /**
66
+     * 校验是否为为class包名
67
+     * 
68
+     * @param invokeTarget 名称
69
+     * @return true是 false否
70
+     */
71
+    public static boolean isValidClassName(String invokeTarget)
72
+    {
73
+        return StringUtils.countMatches(invokeTarget, ".") > 1;
74
+    }
75
+
76
+    /**
77
+     * 获取bean名称
78
+     * 
79
+     * @param invokeTarget 目标字符串
80
+     * @return bean名称
81
+     */
82
+    public static String getBeanName(String invokeTarget)
83
+    {
84
+        String beanName = StringUtils.substringBefore(invokeTarget, "(");
85
+        return StringUtils.substringBeforeLast(beanName, ".");
86
+    }
87
+
88
+    /**
89
+     * 获取bean方法
90
+     * 
91
+     * @param invokeTarget 目标字符串
92
+     * @return method方法
93
+     */
94
+    public static String getMethodName(String invokeTarget)
95
+    {
96
+        String methodName = StringUtils.substringBefore(invokeTarget, "(");
97
+        return StringUtils.substringAfterLast(methodName, ".");
98
+    }
99
+
100
+    /**
101
+     * 获取method方法参数相关列表
102
+     * 
103
+     * @param invokeTarget 目标字符串
104
+     * @return method方法相关参数列表
105
+     */
106
+    public static List<Object[]> getMethodParams(String invokeTarget)
107
+    {
108
+        String methodStr = StringUtils.substringBetweenLast(invokeTarget, "(", ")");
109
+        if (StringUtils.isEmpty(methodStr))
110
+        {
111
+            return null;
112
+        }
113
+        String[] methodParams = methodStr.split(",(?=([^\"']*[\"'][^\"']*[\"'])*[^\"']*$)");
114
+        List<Object[]> classs = new LinkedList<>();
115
+        for (int i = 0; i < methodParams.length; i++)
116
+        {
117
+            String str = StringUtils.trimToEmpty(methodParams[i]);
118
+            // String字符串类型,以'或"开头
119
+            if (StringUtils.startsWithAny(str, "'", "\""))
120
+            {
121
+                classs.add(new Object[] { StringUtils.substring(str, 1, str.length() - 1), String.class });
122
+            }
123
+            // boolean布尔类型,等于true或者false
124
+            else if ("true".equalsIgnoreCase(str) || "false".equalsIgnoreCase(str))
125
+            {
126
+                classs.add(new Object[] { Boolean.valueOf(str), Boolean.class });
127
+            }
128
+            // long长整形,以L结尾
129
+            else if (StringUtils.endsWith(str, "L"))
130
+            {
131
+                classs.add(new Object[] { Long.valueOf(StringUtils.substring(str, 0, str.length() - 1)), Long.class });
132
+            }
133
+            // double浮点类型,以D结尾
134
+            else if (StringUtils.endsWith(str, "D"))
135
+            {
136
+                classs.add(new Object[] { Double.valueOf(StringUtils.substring(str, 0, str.length() - 1)), Double.class });
137
+            }
138
+            // 其他类型归类为整形
139
+            else
140
+            {
141
+                classs.add(new Object[] { Integer.valueOf(str), Integer.class });
142
+            }
143
+        }
144
+        return classs;
145
+    }
146
+
147
+    /**
148
+     * 获取参数类型
149
+     * 
150
+     * @param methodParams 参数相关列表
151
+     * @return 参数类型列表
152
+     */
153
+    public static Class<?>[] getMethodParamsType(List<Object[]> methodParams)
154
+    {
155
+        Class<?>[] classs = new Class<?>[methodParams.size()];
156
+        int index = 0;
157
+        for (Object[] os : methodParams)
158
+        {
159
+            classs[index] = (Class<?>) os[1];
160
+            index++;
161
+        }
162
+        return classs;
163
+    }
164
+
165
+    /**
166
+     * 获取参数值
167
+     * 
168
+     * @param methodParams 参数相关列表
169
+     * @return 参数值列表
170
+     */
171
+    public static Object[] getMethodParamsValue(List<Object[]> methodParams)
172
+    {
173
+        Object[] classs = new Object[methodParams.size()];
174
+        int index = 0;
175
+        for (Object[] os : methodParams)
176
+        {
177
+            classs[index] = (Object) os[0];
178
+            index++;
179
+        }
180
+        return classs;
181
+    }
182
+}

+ 21 - 0
airport-quartz/src/main/java/com/sundot/airport/quartz/util/QuartzDisallowConcurrentExecution.java

@@ -0,0 +1,21 @@
1
+package com.sundot.airport.quartz.util;
2
+
3
+import org.quartz.DisallowConcurrentExecution;
4
+import org.quartz.JobExecutionContext;
5
+import com.sundot.airport.quartz.domain.SysJob;
6
+
7
+/**
8
+ * 定时任务处理(禁止并发执行)
9
+ * 
10
+ * @author ruoyi
11
+ *
12
+ */
13
+@DisallowConcurrentExecution
14
+public class QuartzDisallowConcurrentExecution extends AbstractQuartzJob
15
+{
16
+    @Override
17
+    protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception
18
+    {
19
+        JobInvokeUtil.invokeMethod(sysJob);
20
+    }
21
+}

+ 19 - 0
airport-quartz/src/main/java/com/sundot/airport/quartz/util/QuartzJobExecution.java

@@ -0,0 +1,19 @@
1
+package com.sundot.airport.quartz.util;
2
+
3
+import org.quartz.JobExecutionContext;
4
+import com.sundot.airport.quartz.domain.SysJob;
5
+
6
+/**
7
+ * 定时任务处理(允许并发执行)
8
+ * 
9
+ * @author ruoyi
10
+ *
11
+ */
12
+public class QuartzJobExecution extends AbstractQuartzJob
13
+{
14
+    @Override
15
+    protected void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception
16
+    {
17
+        JobInvokeUtil.invokeMethod(sysJob);
18
+    }
19
+}

+ 141 - 0
airport-quartz/src/main/java/com/sundot/airport/quartz/util/ScheduleUtils.java

@@ -0,0 +1,141 @@
1
+package com.sundot.airport.quartz.util;
2
+
3
+import org.quartz.CronScheduleBuilder;
4
+import org.quartz.CronTrigger;
5
+import org.quartz.Job;
6
+import org.quartz.JobBuilder;
7
+import org.quartz.JobDetail;
8
+import org.quartz.JobKey;
9
+import org.quartz.Scheduler;
10
+import org.quartz.SchedulerException;
11
+import org.quartz.TriggerBuilder;
12
+import org.quartz.TriggerKey;
13
+import com.sundot.airport.common.constant.Constants;
14
+import com.sundot.airport.common.constant.ScheduleConstants;
15
+import com.sundot.airport.common.exception.job.TaskException;
16
+import com.sundot.airport.common.exception.job.TaskException.Code;
17
+import com.sundot.airport.common.utils.StringUtils;
18
+import com.sundot.airport.common.utils.spring.SpringUtils;
19
+import com.sundot.airport.quartz.domain.SysJob;
20
+
21
+/**
22
+ * 定时任务工具类
23
+ * 
24
+ * @author ruoyi
25
+ *
26
+ */
27
+public class ScheduleUtils
28
+{
29
+    /**
30
+     * 得到quartz任务类
31
+     *
32
+     * @param sysJob 执行计划
33
+     * @return 具体执行任务类
34
+     */
35
+    private static Class<? extends Job> getQuartzJobClass(SysJob sysJob)
36
+    {
37
+        boolean isConcurrent = "0".equals(sysJob.getConcurrent());
38
+        return isConcurrent ? QuartzJobExecution.class : QuartzDisallowConcurrentExecution.class;
39
+    }
40
+
41
+    /**
42
+     * 构建任务触发对象
43
+     */
44
+    public static TriggerKey getTriggerKey(Long jobId, String jobGroup)
45
+    {
46
+        return TriggerKey.triggerKey(ScheduleConstants.TASK_CLASS_NAME + jobId, jobGroup);
47
+    }
48
+
49
+    /**
50
+     * 构建任务键对象
51
+     */
52
+    public static JobKey getJobKey(Long jobId, String jobGroup)
53
+    {
54
+        return JobKey.jobKey(ScheduleConstants.TASK_CLASS_NAME + jobId, jobGroup);
55
+    }
56
+
57
+    /**
58
+     * 创建定时任务
59
+     */
60
+    public static void createScheduleJob(Scheduler scheduler, SysJob job) throws SchedulerException, TaskException
61
+    {
62
+        Class<? extends Job> jobClass = getQuartzJobClass(job);
63
+        // 构建job信息
64
+        Long jobId = job.getJobId();
65
+        String jobGroup = job.getJobGroup();
66
+        JobDetail jobDetail = JobBuilder.newJob(jobClass).withIdentity(getJobKey(jobId, jobGroup)).build();
67
+
68
+        // 表达式调度构建器
69
+        CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule(job.getCronExpression());
70
+        cronScheduleBuilder = handleCronScheduleMisfirePolicy(job, cronScheduleBuilder);
71
+
72
+        // 按新的cronExpression表达式构建一个新的trigger
73
+        CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity(getTriggerKey(jobId, jobGroup))
74
+                .withSchedule(cronScheduleBuilder).build();
75
+
76
+        // 放入参数,运行时的方法可以获取
77
+        jobDetail.getJobDataMap().put(ScheduleConstants.TASK_PROPERTIES, job);
78
+
79
+        // 判断是否存在
80
+        if (scheduler.checkExists(getJobKey(jobId, jobGroup)))
81
+        {
82
+            // 防止创建时存在数据问题 先移除,然后在执行创建操作
83
+            scheduler.deleteJob(getJobKey(jobId, jobGroup));
84
+        }
85
+
86
+        // 判断任务是否过期
87
+        if (StringUtils.isNotNull(CronUtils.getNextExecution(job.getCronExpression())))
88
+        {
89
+            // 执行调度任务
90
+            scheduler.scheduleJob(jobDetail, trigger);
91
+        }
92
+
93
+        // 暂停任务
94
+        if (job.getStatus().equals(ScheduleConstants.Status.PAUSE.getValue()))
95
+        {
96
+            scheduler.pauseJob(ScheduleUtils.getJobKey(jobId, jobGroup));
97
+        }
98
+    }
99
+
100
+    /**
101
+     * 设置定时任务策略
102
+     */
103
+    public static CronScheduleBuilder handleCronScheduleMisfirePolicy(SysJob job, CronScheduleBuilder cb)
104
+            throws TaskException
105
+    {
106
+        switch (job.getMisfirePolicy())
107
+        {
108
+            case ScheduleConstants.MISFIRE_DEFAULT:
109
+                return cb;
110
+            case ScheduleConstants.MISFIRE_IGNORE_MISFIRES:
111
+                return cb.withMisfireHandlingInstructionIgnoreMisfires();
112
+            case ScheduleConstants.MISFIRE_FIRE_AND_PROCEED:
113
+                return cb.withMisfireHandlingInstructionFireAndProceed();
114
+            case ScheduleConstants.MISFIRE_DO_NOTHING:
115
+                return cb.withMisfireHandlingInstructionDoNothing();
116
+            default:
117
+                throw new TaskException("The task misfire policy '" + job.getMisfirePolicy()
118
+                        + "' cannot be used in cron schedule tasks", Code.CONFIG_ERROR);
119
+        }
120
+    }
121
+
122
+    /**
123
+     * 检查包名是否为白名单配置
124
+     * 
125
+     * @param invokeTarget 目标字符串
126
+     * @return 结果
127
+     */
128
+    public static boolean whiteList(String invokeTarget)
129
+    {
130
+        String packageName = StringUtils.substringBefore(invokeTarget, "(");
131
+        int count = StringUtils.countMatches(packageName, ".");
132
+        if (count > 1)
133
+        {
134
+            return StringUtils.startsWithAny(invokeTarget, Constants.JOB_WHITELIST_STR);
135
+        }
136
+        Object obj = SpringUtils.getBean(StringUtils.split(invokeTarget, ".")[0]);
137
+        String beanPackageName = obj.getClass().getPackage().getName();
138
+        return StringUtils.startsWithAny(beanPackageName, Constants.JOB_WHITELIST_STR)
139
+                && !StringUtils.startsWithAny(beanPackageName, Constants.JOB_ERROR_STR);
140
+    }
141
+}

+ 94 - 0
airport-quartz/src/main/resources/mapper/quartz/SysJobLogMapper.xml

@@ -0,0 +1,94 @@
1
+<?xml version="1.0" encoding="UTF-8" ?>
2
+<!DOCTYPE mapper
3
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
4
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5
+<mapper namespace="com.sundot.airport.quartz.mapper.SysJobLogMapper">
6
+
7
+	<resultMap type="SysJobLog" id="SysJobLogResult">
8
+		<id     property="jobLogId"       column="job_log_id"      />
9
+		<result property="jobName"        column="job_name"        />
10
+		<result property="jobGroup"       column="job_group"       />
11
+		<result property="invokeTarget"   column="invoke_target"   />
12
+		<result property="jobMessage"     column="job_message"     />
13
+		<result property="status"         column="status"          />
14
+		<result property="exceptionInfo"  column="exception_info"  />
15
+		<result property="createTime"     column="create_time"     />
16
+	</resultMap>
17
+	
18
+	<sql id="selectJobLogVo">
19
+        select job_log_id, job_name, job_group, invoke_target, job_message, status, exception_info, create_time 
20
+		from sys_job_log
21
+    </sql>
22
+	
23
+	<select id="selectJobLogList" parameterType="SysJobLog" resultMap="SysJobLogResult">
24
+		<include refid="selectJobLogVo"/>
25
+		<where>
26
+			<if test="jobName != null and jobName != ''">
27
+				AND job_name like concat('%', #{jobName}, '%')
28
+			</if>
29
+			<if test="jobGroup != null and jobGroup != ''">
30
+				AND job_group = #{jobGroup}
31
+			</if>
32
+			<if test="status != null and status != ''">
33
+				AND status = #{status}
34
+			</if>
35
+			<if test="invokeTarget != null and invokeTarget != ''">
36
+				AND invoke_target like concat('%', #{invokeTarget}, '%')
37
+			</if>
38
+			<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
39
+				and date_format(create_time,'%Y%m%d') &gt;= date_format(#{params.beginTime},'%Y%m%d')
40
+			</if>
41
+			<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
42
+				and date_format(create_time,'%Y%m%d') &lt;= date_format(#{params.endTime},'%Y%m%d')
43
+			</if>
44
+		</where>
45
+		order by create_time desc
46
+	</select>
47
+	
48
+	<select id="selectJobLogAll" resultMap="SysJobLogResult">
49
+		<include refid="selectJobLogVo"/>
50
+	</select>
51
+	
52
+	<select id="selectJobLogById" parameterType="Long" resultMap="SysJobLogResult">
53
+		<include refid="selectJobLogVo"/>
54
+		where job_log_id = #{jobLogId}
55
+	</select>
56
+	
57
+	<delete id="deleteJobLogById" parameterType="Long">
58
+ 		delete from sys_job_log where job_log_id = #{jobLogId}
59
+ 	</delete>
60
+ 	
61
+ 	<delete id="deleteJobLogByIds" parameterType="Long">
62
+ 		delete from sys_job_log where job_log_id in
63
+ 		<foreach collection="array" item="jobLogId" open="(" separator="," close=")">
64
+ 			#{jobLogId}
65
+        </foreach> 
66
+ 	</delete>
67
+ 	
68
+ 	<update id="cleanJobLog">
69
+        truncate table sys_job_log
70
+    </update>
71
+ 	
72
+ 	<insert id="insertJobLog" parameterType="SysJobLog">
73
+ 		insert into sys_job_log(
74
+ 			<if test="jobLogId != null and jobLogId != 0">job_log_id,</if>
75
+ 			<if test="jobName != null and jobName != ''">job_name,</if>
76
+ 			<if test="jobGroup != null and jobGroup != ''">job_group,</if>
77
+ 			<if test="invokeTarget != null and invokeTarget != ''">invoke_target,</if>
78
+ 			<if test="jobMessage != null and jobMessage != ''">job_message,</if>
79
+ 			<if test="status != null and status != ''">status,</if>
80
+ 			<if test="exceptionInfo != null and exceptionInfo != ''">exception_info,</if>
81
+ 			create_time
82
+ 		)values(
83
+ 			<if test="jobLogId != null and jobLogId != 0">#{jobLogId},</if>
84
+ 			<if test="jobName != null and jobName != ''">#{jobName},</if>
85
+ 			<if test="jobGroup != null and jobGroup != ''">#{jobGroup},</if>
86
+ 			<if test="invokeTarget != null and invokeTarget != ''">#{invokeTarget},</if>
87
+ 			<if test="jobMessage != null and jobMessage != ''">#{jobMessage},</if>
88
+ 			<if test="status != null and status != ''">#{status},</if>
89
+ 			<if test="exceptionInfo != null and exceptionInfo != ''">#{exceptionInfo},</if>
90
+ 			sysdate()
91
+ 		)
92
+	</insert>
93
+
94
+</mapper> 

+ 111 - 0
airport-quartz/src/main/resources/mapper/quartz/SysJobMapper.xml

@@ -0,0 +1,111 @@
1
+<?xml version="1.0" encoding="UTF-8" ?>
2
+<!DOCTYPE mapper
3
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
4
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
5
+<mapper namespace="com.sundot.airport.quartz.mapper.SysJobMapper">
6
+
7
+	<resultMap type="SysJob" id="SysJobResult">
8
+		<id     property="jobId"          column="job_id"          />
9
+		<result property="jobName"        column="job_name"        />
10
+		<result property="jobGroup"       column="job_group"       />
11
+		<result property="invokeTarget"   column="invoke_target"   />
12
+		<result property="cronExpression" column="cron_expression" />
13
+		<result property="misfirePolicy"  column="misfire_policy"  />
14
+		<result property="concurrent"     column="concurrent"      />
15
+		<result property="status"         column="status"          />
16
+		<result property="createBy"       column="create_by"       />
17
+		<result property="createTime"     column="create_time"     />
18
+		<result property="updateBy"       column="update_by"       />
19
+		<result property="updateTime"     column="update_time"     />
20
+		<result property="remark"         column="remark"          />
21
+	</resultMap>
22
+	
23
+	<sql id="selectJobVo">
24
+        select job_id, job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark 
25
+		from sys_job
26
+    </sql>
27
+	
28
+	<select id="selectJobList" parameterType="SysJob" resultMap="SysJobResult">
29
+		<include refid="selectJobVo"/>
30
+		<where>
31
+			<if test="jobName != null and jobName != ''">
32
+				AND job_name like concat('%', #{jobName}, '%')
33
+			</if>
34
+			<if test="jobGroup != null and jobGroup != ''">
35
+				AND job_group = #{jobGroup}
36
+			</if>
37
+			<if test="status != null and status != ''">
38
+				AND status = #{status}
39
+			</if>
40
+			<if test="invokeTarget != null and invokeTarget != ''">
41
+				AND invoke_target like concat('%', #{invokeTarget}, '%')
42
+			</if>
43
+		</where>
44
+	</select>
45
+	
46
+	<select id="selectJobAll" resultMap="SysJobResult">
47
+		<include refid="selectJobVo"/>
48
+	</select>
49
+	
50
+	<select id="selectJobById" parameterType="Long" resultMap="SysJobResult">
51
+		<include refid="selectJobVo"/>
52
+		where job_id = #{jobId}
53
+	</select>
54
+	
55
+	<delete id="deleteJobById" parameterType="Long">
56
+ 		delete from sys_job where job_id = #{jobId}
57
+ 	</delete>
58
+ 	
59
+ 	<delete id="deleteJobByIds" parameterType="Long">
60
+ 		delete from sys_job where job_id in
61
+ 		<foreach collection="array" item="jobId" open="(" separator="," close=")">
62
+ 			#{jobId}
63
+        </foreach> 
64
+ 	</delete>
65
+ 	
66
+ 	<update id="updateJob" parameterType="SysJob">
67
+ 		update sys_job
68
+ 		<set>
69
+ 			<if test="jobName != null and jobName != ''">job_name = #{jobName},</if>
70
+ 			<if test="jobGroup != null and jobGroup != ''">job_group = #{jobGroup},</if>
71
+ 			<if test="invokeTarget != null and invokeTarget != ''">invoke_target = #{invokeTarget},</if>
72
+ 			<if test="cronExpression != null and cronExpression != ''">cron_expression = #{cronExpression},</if>
73
+ 			<if test="misfirePolicy != null and misfirePolicy != ''">misfire_policy = #{misfirePolicy},</if>
74
+ 			<if test="concurrent != null and concurrent != ''">concurrent = #{concurrent},</if>
75
+ 			<if test="status !=null">status = #{status},</if>
76
+ 			<if test="remark != null and remark != ''">remark = #{remark},</if>
77
+ 			<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
78
+ 			update_time = sysdate()
79
+ 		</set>
80
+ 		where job_id = #{jobId}
81
+	</update>
82
+ 	
83
+ 	<insert id="insertJob" parameterType="SysJob" useGeneratedKeys="true" keyProperty="jobId">
84
+ 		insert into sys_job(
85
+ 			<if test="jobId != null and jobId != 0">job_id,</if>
86
+ 			<if test="jobName != null and jobName != ''">job_name,</if>
87
+ 			<if test="jobGroup != null and jobGroup != ''">job_group,</if>
88
+ 			<if test="invokeTarget != null and invokeTarget != ''">invoke_target,</if>
89
+ 			<if test="cronExpression != null and cronExpression != ''">cron_expression,</if>
90
+ 			<if test="misfirePolicy != null and misfirePolicy != ''">misfire_policy,</if>
91
+ 			<if test="concurrent != null and concurrent != ''">concurrent,</if>
92
+ 			<if test="status != null and status != ''">status,</if>
93
+ 			<if test="remark != null and remark != ''">remark,</if>
94
+ 			<if test="createBy != null and createBy != ''">create_by,</if>
95
+ 			create_time
96
+ 		)values(
97
+ 			<if test="jobId != null and jobId != 0">#{jobId},</if>
98
+ 			<if test="jobName != null and jobName != ''">#{jobName},</if>
99
+ 			<if test="jobGroup != null and jobGroup != ''">#{jobGroup},</if>
100
+ 			<if test="invokeTarget != null and invokeTarget != ''">#{invokeTarget},</if>
101
+ 			<if test="cronExpression != null and cronExpression != ''">#{cronExpression},</if>
102
+ 			<if test="misfirePolicy != null and misfirePolicy != ''">#{misfirePolicy},</if>
103
+ 			<if test="concurrent != null and concurrent != ''">#{concurrent},</if>
104
+ 			<if test="status != null and status != ''">#{status},</if>
105
+ 			<if test="remark != null and remark != ''">#{remark},</if>
106
+ 			<if test="createBy != null and createBy != ''">#{createBy},</if>
107
+ 			sysdate()
108
+ 		)
109
+	</insert>
110
+
111
+</mapper> 

+ 33 - 0
airport-system/pom.xml

@@ -0,0 +1,33 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<project xmlns="http://maven.apache.org/POM/4.0.0"
3
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5
+    <parent>
6
+        <artifactId>airport</artifactId>
7
+        <groupId>com.sundot.airport</groupId>
8
+        <version>3.9.0</version>
9
+    </parent>
10
+    <modelVersion>4.0.0</modelVersion>
11
+
12
+    <artifactId>airport-system</artifactId>
13
+
14
+    <description>
15
+        system系统模块
16
+    </description>
17
+
18
+    <dependencies>
19
+
20
+        <!-- 通用工具-->
21
+        <dependency>
22
+            <groupId>com.sundot.airport</groupId>
23
+            <artifactId>airport-common</artifactId>
24
+        </dependency>
25
+        <dependency>
26
+            <groupId>org.projectlombok</groupId>
27
+            <artifactId>lombok</artifactId>
28
+            <scope>provided</scope>
29
+        </dependency>
30
+
31
+    </dependencies>
32
+
33
+</project>

+ 117 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/BaseCheckCategory.java

@@ -0,0 +1,117 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import org.apache.commons.lang3.builder.ToStringBuilder;
4
+import org.apache.commons.lang3.builder.ToStringStyle;
5
+import com.sundot.airport.common.annotation.Excel;
6
+import com.sundot.airport.common.core.domain.TreeEntity;
7
+
8
+/**
9
+ * 检查项分类对象 base_check_category
10
+ *
11
+ * @author ruoyi
12
+ * @date 2025-07-11
13
+ */
14
+public class BaseCheckCategory extends TreeEntity {
15
+    private static final long serialVersionUID = 1L;
16
+
17
+    /**
18
+     * 租户号
19
+     */
20
+    private String tenantId;
21
+
22
+    /**
23
+     * 乐观锁
24
+     */
25
+    private Integer revision;
26
+
27
+    /**
28
+     * 主键
29
+     */
30
+    private Long id;
31
+
32
+    /**
33
+     * 分类名称
34
+     */
35
+    @Excel(name = "分类名称")
36
+    private String name;
37
+
38
+    /**
39
+     * 层级
40
+     */
41
+    @Excel(name = "层级")
42
+    private Integer level;
43
+
44
+    /**
45
+     * 编码
46
+     */
47
+    @Excel(name = "编码")
48
+    private String code;
49
+
50
+    public void setTenantId(String tenantId) {
51
+        this.tenantId = tenantId;
52
+    }
53
+
54
+    public String getTenantId() {
55
+        return tenantId;
56
+    }
57
+
58
+    public void setRevision(Integer revision) {
59
+        this.revision = revision;
60
+    }
61
+
62
+    public Integer getRevision() {
63
+        return revision;
64
+    }
65
+
66
+    public void setId(Long id) {
67
+        this.id = id;
68
+    }
69
+
70
+    public Long getId() {
71
+        return id;
72
+    }
73
+
74
+    public void setName(String name) {
75
+        this.name = name;
76
+    }
77
+
78
+    public String getName() {
79
+        return name;
80
+    }
81
+
82
+    public void setLevel(Integer level) {
83
+        this.level = level;
84
+    }
85
+
86
+    public Integer getLevel() {
87
+        return level;
88
+    }
89
+
90
+    public void setCode(String code) {
91
+        this.code = code;
92
+    }
93
+
94
+    public String getCode() {
95
+        return code;
96
+    }
97
+
98
+    @Override
99
+    public String toString() {
100
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
101
+                .append("tenantId", getTenantId())
102
+                .append("revision", getRevision())
103
+                .append("createBy", getCreateBy())
104
+                .append("createTime", getCreateTime())
105
+                .append("updateBy", getUpdateBy())
106
+                .append("updateTime", getUpdateTime())
107
+                .append("id", getId())
108
+                .append("name", getName())
109
+                .append("parentId", getParentId())
110
+                .append("ancestors", getAncestors())
111
+                .append("level", getLevel())
112
+                .append("orderNum", getOrderNum())
113
+                .append("code", getCode())
114
+                .append("remark", getRemark())
115
+                .toString();
116
+    }
117
+}

+ 116 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/BaseCheckPoint.java

@@ -0,0 +1,116 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import org.apache.commons.lang3.builder.ToStringBuilder;
4
+import org.apache.commons.lang3.builder.ToStringStyle;
5
+import com.sundot.airport.common.annotation.Excel;
6
+import com.sundot.airport.common.core.domain.TreeEntity;
7
+
8
+/**
9
+ * 检查部位对象 base_check_point
10
+ *
11
+ * @author ruoyi
12
+ * @date 2025-07-09
13
+ */
14
+public class BaseCheckPoint extends TreeEntity {
15
+    private static final long serialVersionUID = 1L;
16
+
17
+    /**
18
+     * 租户号
19
+     */
20
+    private String tenantId;
21
+
22
+    /**
23
+     * 乐观锁
24
+     */
25
+    private Integer revision;
26
+
27
+    /**
28
+     * 主键
29
+     */
30
+    private Long id;
31
+
32
+    /**
33
+     * 部位名称
34
+     */
35
+    @Excel(name = "部位名称")
36
+    private String name;
37
+
38
+    /**
39
+     * 层级
40
+     */
41
+    @Excel(name = "层级")
42
+    private Integer level;
43
+
44
+    /**
45
+     * 编码
46
+     */
47
+    @Excel(name = "编码")
48
+    private String code;
49
+
50
+    public void setTenantId(String tenantId) {
51
+        this.tenantId = tenantId;
52
+    }
53
+
54
+    public String getTenantId() {
55
+        return tenantId;
56
+    }
57
+
58
+    public void setRevision(Integer revision) {
59
+        this.revision = revision;
60
+    }
61
+
62
+    public Integer getRevision() {
63
+        return revision;
64
+    }
65
+
66
+    public void setId(Long id) {
67
+        this.id = id;
68
+    }
69
+
70
+    public Long getId() {
71
+        return id;
72
+    }
73
+
74
+    public void setName(String name) {
75
+        this.name = name;
76
+    }
77
+
78
+    public String getName() {
79
+        return name;
80
+    }
81
+
82
+    public void setLevel(Integer level) {
83
+        this.level = level;
84
+    }
85
+
86
+    public Integer getLevel() {
87
+        return level;
88
+    }
89
+
90
+    public void setCode(String code) {
91
+        this.code = code;
92
+    }
93
+
94
+    public String getCode() {
95
+        return code;
96
+    }
97
+
98
+    @Override
99
+    public String toString() {
100
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
101
+                .append("tenantId", getTenantId())
102
+                .append("revision", getRevision())
103
+                .append("createBy", getCreateBy())
104
+                .append("createTime", getCreateTime())
105
+                .append("updateBy", getUpdateBy())
106
+                .append("updateTime", getUpdateTime())
107
+                .append("id", getId())
108
+                .append("name", getName())
109
+                .append("parentId", getParentId())
110
+                .append("ancestors", getAncestors())
111
+                .append("level", getLevel())
112
+                .append("orderNum", getOrderNum())
113
+                .append("code", getCode())
114
+                .toString();
115
+    }
116
+}

+ 141 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/BaseDefaultChoise.java

@@ -0,0 +1,141 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import org.apache.commons.lang3.builder.ToStringBuilder;
4
+import org.apache.commons.lang3.builder.ToStringStyle;
5
+import com.sundot.airport.common.annotation.Excel;
6
+import com.sundot.airport.common.core.domain.BaseEntity;
7
+
8
+/**
9
+ * 默认选择配置对象 base_default_choise
10
+ *
11
+ * @author ruoyi
12
+ * @date 2025-08-25
13
+ */
14
+public class BaseDefaultChoise extends BaseEntity
15
+{
16
+    private static final long serialVersionUID = 1L;
17
+
18
+    /** 主键 */
19
+    private Long id;
20
+
21
+    /** 租户号 */
22
+    private String tenantId;
23
+
24
+    /** 乐观锁 */
25
+    private Integer revision;
26
+
27
+    /** 分类类型:1-查获物品分类,2-检查部位 */
28
+    @Excel(name = "分类类型", readConverterExp = "1=查获物品分类,2=检查部位")
29
+    private Integer categoryType;
30
+
31
+    /** 分类ID */
32
+    @Excel(name = "分类ID")
33
+    private Long categoryId;
34
+
35
+    /** 分类名称(查询时返回) */
36
+    private String categoryName;
37
+
38
+    /** 父级ID(查询时返回) */
39
+    private Long parentId;
40
+
41
+    /** 父级名称(查询时返回) */
42
+    private String parentName;
43
+
44
+    public void setId(Long id) 
45
+    {
46
+        this.id = id;
47
+    }
48
+
49
+    public Long getId() 
50
+    {
51
+        return id;
52
+    }
53
+
54
+    public void setTenantId(String tenantId) 
55
+    {
56
+        this.tenantId = tenantId;
57
+    }
58
+
59
+    public String getTenantId() 
60
+    {
61
+        return tenantId;
62
+    }
63
+
64
+    public void setRevision(Integer revision) 
65
+    {
66
+        this.revision = revision;
67
+    }
68
+
69
+    public Integer getRevision() 
70
+    {
71
+        return revision;
72
+    }
73
+
74
+    public void setCategoryType(Integer categoryType) 
75
+    {
76
+        this.categoryType = categoryType;
77
+    }
78
+
79
+    public Integer getCategoryType() 
80
+    {
81
+        return categoryType;
82
+    }
83
+
84
+    public void setCategoryId(Long categoryId) 
85
+    {
86
+        this.categoryId = categoryId;
87
+    }
88
+
89
+    public Long getCategoryId() 
90
+    {
91
+        return categoryId;
92
+    }
93
+
94
+    public void setCategoryName(String categoryName) 
95
+    {
96
+        this.categoryName = categoryName;
97
+    }
98
+
99
+    public String getCategoryName() 
100
+    {
101
+        return categoryName;
102
+    }
103
+
104
+    public void setParentId(Long parentId) 
105
+    {
106
+        this.parentId = parentId;
107
+    }
108
+
109
+    public Long getParentId() 
110
+    {
111
+        return parentId;
112
+    }
113
+
114
+    public void setParentName(String parentName) 
115
+    {
116
+        this.parentName = parentName;
117
+    }
118
+
119
+    public String getParentName() 
120
+    {
121
+        return parentName;
122
+    }
123
+
124
+    @Override
125
+    public String toString() {
126
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
127
+            .append("id", getId())
128
+            .append("tenantId", getTenantId())
129
+            .append("revision", getRevision())
130
+            .append("createBy", getCreateBy())
131
+            .append("createTime", getCreateTime())
132
+            .append("updateBy", getUpdateBy())
133
+            .append("updateTime", getUpdateTime())
134
+            .append("categoryType", getCategoryType())
135
+            .append("categoryId", getCategoryId())
136
+            .append("categoryName", getCategoryName())
137
+            .append("parentId", getParentId())
138
+            .append("parentName", getParentName())
139
+            .toString();
140
+    }
141
+}

+ 176 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/BasePosition.java

@@ -0,0 +1,176 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import org.apache.commons.lang3.builder.ToStringBuilder;
4
+import org.apache.commons.lang3.builder.ToStringStyle;
5
+import com.sundot.airport.common.annotation.Excel;
6
+import com.sundot.airport.common.core.domain.TreeEntity;
7
+
8
+/**
9
+ * 位置对象 base_position
10
+ *
11
+ * @author ruoyi
12
+ * @date 2025-07-09
13
+ */
14
+public class BasePosition extends TreeEntity {
15
+    private static final long serialVersionUID = 1L;
16
+
17
+    /**
18
+     * 租户号
19
+     */
20
+    private String tenantId;
21
+
22
+    /**
23
+     * 乐观锁
24
+     */
25
+    private Integer revision;
26
+
27
+    /**
28
+     * 主键
29
+     */
30
+    private Long id;
31
+
32
+    /**
33
+     * 名称
34
+     */
35
+    @Excel(name = "名称")
36
+    private String name;
37
+
38
+    /**
39
+     * 层级
40
+     */
41
+    @Excel(name = "层级")
42
+    private Integer level;
43
+
44
+    /**
45
+     * 位置类型
46
+     */
47
+    @Excel(name = "位置类型")
48
+    private String positionType;
49
+
50
+    /**
51
+     * 通道类型
52
+     */
53
+    @Excel(name = "通道类型")
54
+    private String channelType;
55
+
56
+    /**
57
+     * 编码
58
+     */
59
+    @Excel(name = "编码")
60
+    private String code;
61
+
62
+    /**
63
+     * 位置类型名称
64
+     */
65
+    @Excel(name = "位置类型名称")
66
+    private String positionTypeDesc;
67
+
68
+    /**
69
+     * 通道类型名称
70
+     */
71
+    @Excel(name = "通道类型名称")
72
+    private String channelTypeDesc;
73
+
74
+    public void setTenantId(String tenantId) {
75
+        this.tenantId = tenantId;
76
+    }
77
+
78
+    public String getTenantId() {
79
+        return tenantId;
80
+    }
81
+
82
+    public void setRevision(Integer revision) {
83
+        this.revision = revision;
84
+    }
85
+
86
+    public Integer getRevision() {
87
+        return revision;
88
+    }
89
+
90
+    public void setId(Long id) {
91
+        this.id = id;
92
+    }
93
+
94
+    public Long getId() {
95
+        return id;
96
+    }
97
+
98
+    public void setName(String name) {
99
+        this.name = name;
100
+    }
101
+
102
+    public String getName() {
103
+        return name;
104
+    }
105
+
106
+    public void setLevel(Integer level) {
107
+        this.level = level;
108
+    }
109
+
110
+    public Integer getLevel() {
111
+        return level;
112
+    }
113
+
114
+    public void setPositionType(String positionType) {
115
+        this.positionType = positionType;
116
+    }
117
+
118
+    public String getPositionType() {
119
+        return positionType;
120
+    }
121
+
122
+    public void setChannelType(String channelType) {
123
+        this.channelType = channelType;
124
+    }
125
+
126
+    public String getChannelType() {
127
+        return channelType;
128
+    }
129
+
130
+    public void setCode(String code) {
131
+        this.code = code;
132
+    }
133
+
134
+    public String getCode() {
135
+        return code;
136
+    }
137
+
138
+    public void setPositionTypeDesc(String positionTypeDesc) {
139
+        this.positionTypeDesc = positionTypeDesc;
140
+    }
141
+
142
+    public String getPositionTypeDesc() {
143
+        return positionTypeDesc;
144
+    }
145
+
146
+    public void setChannelTypeDesc(String channelTypeDesc) {
147
+        this.channelTypeDesc = channelTypeDesc;
148
+    }
149
+
150
+    public String getChannelTypeDesc() {
151
+        return channelTypeDesc;
152
+    }
153
+
154
+    @Override
155
+    public String toString() {
156
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
157
+                .append("tenantId", getTenantId())
158
+                .append("revision", getRevision())
159
+                .append("createBy", getCreateBy())
160
+                .append("createTime", getCreateTime())
161
+                .append("updateBy", getUpdateBy())
162
+                .append("updateTime", getUpdateTime())
163
+                .append("id", getId())
164
+                .append("name", getName())
165
+                .append("parentId", getParentId())
166
+                .append("ancestors", getAncestors())
167
+                .append("level", getLevel())
168
+                .append("orderNum", getOrderNum())
169
+                .append("positionType", getPositionType())
170
+                .append("channelType", getChannelType())
171
+                .append("code", getCode())
172
+                .append("positionTypeDesc", getPositionTypeDesc())
173
+                .append("channelTypeDesc", getChannelTypeDesc())
174
+                .toString();
175
+    }
176
+}

+ 219 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/BaseProject.java

@@ -0,0 +1,219 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import org.apache.commons.lang3.builder.ToStringBuilder;
4
+import org.apache.commons.lang3.builder.ToStringStyle;
5
+import com.sundot.airport.common.annotation.Excel;
6
+import com.sundot.airport.common.core.domain.BaseEntity;
7
+
8
+/**
9
+ * 检查项目对象 base_project
10
+ *
11
+ * @author ruoyi
12
+ * @date 2025-07-11
13
+ */
14
+public class BaseProject extends BaseEntity {
15
+    private static final long serialVersionUID = 1L;
16
+
17
+    /**
18
+     * 租户号
19
+     */
20
+    private String tenantId;
21
+
22
+    /**
23
+     * 乐观锁
24
+     */
25
+    private Long revision;
26
+
27
+    /**
28
+     * 主键
29
+     */
30
+    private Long id;
31
+
32
+    /**
33
+     * 检查项目名称
34
+     */
35
+    @Excel(name = "检查项目名称")
36
+    private String name;
37
+
38
+    /**
39
+     * 分类编码
40
+     */
41
+    @Excel(name = "分类编码")
42
+    private String categoryCode;
43
+
44
+    /**
45
+     * 检查标准
46
+     */
47
+    @Excel(name = "检查标准")
48
+    private String checkStandard;
49
+
50
+    /**
51
+     * 检查方法
52
+     */
53
+    @Excel(name = "检查方法")
54
+    private String checkMethod;
55
+
56
+    /**
57
+     * 重要程度
58
+     */
59
+    @Excel(name = "重要程度")
60
+    private String importance;
61
+
62
+    /**
63
+     * 状态(0=启用,1=停用)
64
+     */
65
+    @Excel(name = "状态(0=启用,1=停用)")
66
+    private Long status;
67
+
68
+    /**
69
+     * 分类名称
70
+     */
71
+    @Excel(name = "分类名称")
72
+    private String categoryName;
73
+
74
+    /**
75
+     * 编码
76
+     */
77
+    @Excel(name = "编码")
78
+    private String code;
79
+
80
+    /**
81
+     * 重要程度名称
82
+     */
83
+    @Excel(name = "重要程度名称")
84
+    private String importanceDesc;
85
+
86
+    /**
87
+     * 检查级别
88
+     */
89
+    @Excel(name = "检查级别")
90
+    private String checkLevel;
91
+
92
+    public void setTenantId(String tenantId) {
93
+        this.tenantId = tenantId;
94
+    }
95
+
96
+    public String getTenantId() {
97
+        return tenantId;
98
+    }
99
+
100
+    public void setRevision(Long revision) {
101
+        this.revision = revision;
102
+    }
103
+
104
+    public Long getRevision() {
105
+        return revision;
106
+    }
107
+
108
+    public void setId(Long id) {
109
+        this.id = id;
110
+    }
111
+
112
+    public Long getId() {
113
+        return id;
114
+    }
115
+
116
+    public void setName(String name) {
117
+        this.name = name;
118
+    }
119
+
120
+    public String getName() {
121
+        return name;
122
+    }
123
+
124
+    public void setCategoryCode(String categoryCode) {
125
+        this.categoryCode = categoryCode;
126
+    }
127
+
128
+    public String getCategoryCode() {
129
+        return categoryCode;
130
+    }
131
+
132
+    public void setCheckStandard(String checkStandard) {
133
+        this.checkStandard = checkStandard;
134
+    }
135
+
136
+    public String getCheckStandard() {
137
+        return checkStandard;
138
+    }
139
+
140
+    public void setCheckMethod(String checkMethod) {
141
+        this.checkMethod = checkMethod;
142
+    }
143
+
144
+    public String getCheckMethod() {
145
+        return checkMethod;
146
+    }
147
+
148
+    public void setImportance(String importance) {
149
+        this.importance = importance;
150
+    }
151
+
152
+    public String getImportance() {
153
+        return importance;
154
+    }
155
+
156
+    public void setStatus(Long status) {
157
+        this.status = status;
158
+    }
159
+
160
+    public Long getStatus() {
161
+        return status;
162
+    }
163
+
164
+    public void setCategoryName(String categoryName) {
165
+        this.categoryName = categoryName;
166
+    }
167
+
168
+    public String getCategoryName() {
169
+        return categoryName;
170
+    }
171
+
172
+    public void setCode(String code) {
173
+        this.code = code;
174
+    }
175
+
176
+    public String getCode() {
177
+        return code;
178
+    }
179
+
180
+    public void setImportanceDesc(String importanceDesc) {
181
+        this.importanceDesc = importanceDesc;
182
+    }
183
+
184
+    public String getImportanceDesc() {
185
+        return importanceDesc;
186
+    }
187
+
188
+    public void setCheckLevel(String checkLevel) {
189
+        this.checkLevel = checkLevel;
190
+    }
191
+
192
+    public String getCheckLevel() {
193
+        return checkLevel;
194
+    }
195
+
196
+    @Override
197
+    public String toString() {
198
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
199
+                .append("tenantId", getTenantId())
200
+                .append("revision", getRevision())
201
+                .append("createBy", getCreateBy())
202
+                .append("createTime", getCreateTime())
203
+                .append("updateBy", getUpdateBy())
204
+                .append("updateTime", getUpdateTime())
205
+                .append("id", getId())
206
+                .append("name", getName())
207
+                .append("categoryCode", getCategoryCode())
208
+                .append("checkStandard", getCheckStandard())
209
+                .append("checkMethod", getCheckMethod())
210
+                .append("importance", getImportance())
211
+                .append("status", getStatus())
212
+                .append("categoryName", getCategoryName())
213
+                .append("remark", getRemark())
214
+                .append("code", getCode())
215
+                .append("importanceDesc", getImportanceDesc())
216
+                .append("checkLevel", getCheckLevel())
217
+                .toString();
218
+    }
219
+}

+ 116 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/BaseSeizeCategory.java

@@ -0,0 +1,116 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import org.apache.commons.lang3.builder.ToStringBuilder;
4
+import org.apache.commons.lang3.builder.ToStringStyle;
5
+import com.sundot.airport.common.annotation.Excel;
6
+import com.sundot.airport.common.core.domain.TreeEntity;
7
+
8
+/**
9
+ * 查获物品分类对象 base_seize_category
10
+ *
11
+ * @author ruoyi
12
+ * @date 2025-07-09
13
+ */
14
+public class BaseSeizeCategory extends TreeEntity {
15
+    private static final long serialVersionUID = 1L;
16
+
17
+    /**
18
+     * 租户号
19
+     */
20
+    private String tenantId;
21
+
22
+    /**
23
+     * 乐观锁
24
+     */
25
+    private Integer revision;
26
+
27
+    /**
28
+     * 分类名称
29
+     */
30
+    @Excel(name = "分类名称")
31
+    private String name;
32
+
33
+    /**
34
+     * 主键
35
+     */
36
+    private Long id;
37
+
38
+    /**
39
+     * 层级
40
+     */
41
+    @Excel(name = "层级")
42
+    private Integer level;
43
+
44
+    /**
45
+     * 编码
46
+     */
47
+    @Excel(name = "编码")
48
+    private String code;
49
+
50
+    public void setTenantId(String tenantId) {
51
+        this.tenantId = tenantId;
52
+    }
53
+
54
+    public String getTenantId() {
55
+        return tenantId;
56
+    }
57
+
58
+    public void setRevision(Integer revision) {
59
+        this.revision = revision;
60
+    }
61
+
62
+    public Integer getRevision() {
63
+        return revision;
64
+    }
65
+
66
+    public void setName(String name) {
67
+        this.name = name;
68
+    }
69
+
70
+    public String getName() {
71
+        return name;
72
+    }
73
+
74
+    public void setId(Long id) {
75
+        this.id = id;
76
+    }
77
+
78
+    public Long getId() {
79
+        return id;
80
+    }
81
+
82
+    public void setLevel(Integer level) {
83
+        this.level = level;
84
+    }
85
+
86
+    public Integer getLevel() {
87
+        return level;
88
+    }
89
+
90
+    public void setCode(String code) {
91
+        this.code = code;
92
+    }
93
+
94
+    public String getCode() {
95
+        return code;
96
+    }
97
+
98
+    @Override
99
+    public String toString() {
100
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
101
+                .append("tenantId", getTenantId())
102
+                .append("revision", getRevision())
103
+                .append("createBy", getCreateBy())
104
+                .append("createTime", getCreateTime())
105
+                .append("updateBy", getUpdateBy())
106
+                .append("updateTime", getUpdateTime())
107
+                .append("name", getName())
108
+                .append("id", getId())
109
+                .append("parentId", getParentId())
110
+                .append("ancestors", getAncestors())
111
+                .append("level", getLevel())
112
+                .append("orderNum", getOrderNum())
113
+                .append("code", getCode())
114
+                .toString();
115
+    }
116
+}

+ 159 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/BaseSeizeItem.java

@@ -0,0 +1,159 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import org.apache.commons.lang3.builder.ToStringBuilder;
4
+import org.apache.commons.lang3.builder.ToStringStyle;
5
+import com.sundot.airport.common.annotation.Excel;
6
+import com.sundot.airport.common.core.domain.BaseEntity;
7
+
8
+/**
9
+ * 查获物品对象 base_seize_item
10
+ *
11
+ * @author ruoyi
12
+ * @date 2025-07-09
13
+ */
14
+public class BaseSeizeItem extends BaseEntity {
15
+    private static final long serialVersionUID = 1L;
16
+
17
+    /**
18
+     * 租户号
19
+     */
20
+    private String tenantId;
21
+
22
+    /**
23
+     * 乐观锁
24
+     */
25
+    private Integer revision;
26
+
27
+    /**
28
+     * 物品名称
29
+     */
30
+    @Excel(name = "物品名称")
31
+    private String name;
32
+
33
+    /**
34
+     * 分类编码
35
+     */
36
+    @Excel(name = "分类编码")
37
+    private String categoryCode;
38
+
39
+    /**
40
+     * 危险等级
41
+     */
42
+    @Excel(name = "危险等级")
43
+    private String dangerLevel;
44
+
45
+    /**
46
+     * 主键
47
+     */
48
+    private Long id;
49
+
50
+    /**
51
+     * 分类名称
52
+     */
53
+    @Excel(name = "分类名称")
54
+    private String categoryName;
55
+
56
+    /**
57
+     * 编码
58
+     */
59
+    @Excel(name = "编码")
60
+    private String code;
61
+
62
+    /**
63
+     * 危险等级名称
64
+     */
65
+    @Excel(name = "危险等级名称")
66
+    private String dangerLevelDesc;
67
+
68
+    public void setTenantId(String tenantId) {
69
+        this.tenantId = tenantId;
70
+    }
71
+
72
+    public String getTenantId() {
73
+        return tenantId;
74
+    }
75
+
76
+    public void setRevision(Integer revision) {
77
+        this.revision = revision;
78
+    }
79
+
80
+    public Integer getRevision() {
81
+        return revision;
82
+    }
83
+
84
+    public void setName(String name) {
85
+        this.name = name;
86
+    }
87
+
88
+    public String getName() {
89
+        return name;
90
+    }
91
+
92
+    public void setCategoryCode(String categoryCode) {
93
+        this.categoryCode = categoryCode;
94
+    }
95
+
96
+    public String getCategoryCode() {
97
+        return categoryCode;
98
+    }
99
+
100
+    public void setDangerLevel(String dangerLevel) {
101
+        this.dangerLevel = dangerLevel;
102
+    }
103
+
104
+    public String getDangerLevel() {
105
+        return dangerLevel;
106
+    }
107
+
108
+    public void setId(Long id) {
109
+        this.id = id;
110
+    }
111
+
112
+    public Long getId() {
113
+        return id;
114
+    }
115
+
116
+    public void setCategoryName(String categoryName) {
117
+        this.categoryName = categoryName;
118
+    }
119
+
120
+    public String getCategoryName() {
121
+        return categoryName;
122
+    }
123
+
124
+    public void setCode(String code) {
125
+        this.code = code;
126
+    }
127
+
128
+    public String getCode() {
129
+        return code;
130
+    }
131
+
132
+    public void setDangerLevelDesc(String dangerLevelDesc) {
133
+        this.dangerLevelDesc = dangerLevelDesc;
134
+    }
135
+
136
+    public String getDangerLevelDesc() {
137
+        return dangerLevelDesc;
138
+    }
139
+
140
+    @Override
141
+    public String toString() {
142
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
143
+                .append("tenantId", getTenantId())
144
+                .append("revision", getRevision())
145
+                .append("createBy", getCreateBy())
146
+                .append("createTime", getCreateTime())
147
+                .append("updateBy", getUpdateBy())
148
+                .append("updateTime", getUpdateTime())
149
+                .append("name", getName())
150
+                .append("categoryCode", getCategoryCode())
151
+                .append("dangerLevel", getDangerLevel())
152
+                .append("id", getId())
153
+                .append("categoryName", getCategoryName())
154
+                .append("remark", getRemark())
155
+                .append("code", getCode())
156
+                .append("dangerLevelDesc", getDangerLevelDesc())
157
+                .toString();
158
+    }
159
+}

+ 207 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/SysApp.java

@@ -0,0 +1,207 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import com.sundot.airport.common.core.domain.entity.SysRole;
4
+import org.apache.commons.lang3.builder.ToStringBuilder;
5
+import org.apache.commons.lang3.builder.ToStringStyle;
6
+import com.sundot.airport.common.annotation.Excel;
7
+import com.sundot.airport.common.core.domain.BaseEntity;
8
+
9
+import java.util.List;
10
+
11
+/**
12
+ * 应用对象 sys_app
13
+ *
14
+ * @author ruoyi
15
+ * @date 2025-11-20
16
+ */
17
+public class SysApp extends BaseEntity {
18
+    private static final long serialVersionUID = 1L;
19
+
20
+    /**
21
+     * 应用ID
22
+     */
23
+    private Long appId;
24
+
25
+    /**
26
+     * 应用名称
27
+     */
28
+    @Excel(name = "应用名称")
29
+    private String appName;
30
+
31
+    /**
32
+     * 应用链接
33
+     */
34
+    @Excel(name = "应用链接")
35
+    private String appUrl;
36
+
37
+    /**
38
+     * 应用排序
39
+     */
40
+    @Excel(name = "应用排序")
41
+    private Integer appSort;
42
+
43
+    /**
44
+     * 应用状态(0正常 1关闭)
45
+     */
46
+    @Excel(name = "应用状态", readConverterExp = "0=正常,1=关闭")
47
+    private String status;
48
+
49
+    /**
50
+     * 是否首页应用(0否 1是)
51
+     */
52
+    @Excel(name = "是否首页应用", readConverterExp = "0=否,1=是")
53
+    private String homePage;
54
+
55
+    /**
56
+     * 首页图标
57
+     */
58
+    @Excel(name = "首页图标")
59
+    private String homePageIcon;
60
+
61
+    /**
62
+     * 工作台图标
63
+     */
64
+    @Excel(name = "工作台图标")
65
+    private String workbenchIcon;
66
+
67
+    /**
68
+     * 创建者ID
69
+     */
70
+    @Excel(name = "创建者ID")
71
+    private Long createByUserId;
72
+
73
+    /**
74
+     * 更新者ID
75
+     */
76
+    @Excel(name = "更新者ID")
77
+    private Long updateByUserId;
78
+
79
+    /**
80
+     * 非首页角色列表
81
+     */
82
+    private List<SysRole> sysRoleList;
83
+
84
+    /**
85
+     * 首页角色列表
86
+     */
87
+    private List<SysRole> homePageSysRoleList;
88
+
89
+    public void setAppId(Long appId) {
90
+        this.appId = appId;
91
+    }
92
+
93
+    public Long getAppId() {
94
+        return appId;
95
+    }
96
+
97
+    public void setAppName(String appName) {
98
+        this.appName = appName;
99
+    }
100
+
101
+    public String getAppName() {
102
+        return appName;
103
+    }
104
+
105
+    public void setAppUrl(String appUrl) {
106
+        this.appUrl = appUrl;
107
+    }
108
+
109
+    public String getAppUrl() {
110
+        return appUrl;
111
+    }
112
+
113
+    public void setAppSort(Integer appSort) {
114
+        this.appSort = appSort;
115
+    }
116
+
117
+    public Integer getAppSort() {
118
+        return appSort;
119
+    }
120
+
121
+    public void setStatus(String status) {
122
+        this.status = status;
123
+    }
124
+
125
+    public String getStatus() {
126
+        return status;
127
+    }
128
+
129
+    public void setHomePage(String homePage) {
130
+        this.homePage = homePage;
131
+    }
132
+
133
+    public String getHomePage() {
134
+        return homePage;
135
+    }
136
+
137
+    public void setHomePageIcon(String homePageIcon) {
138
+        this.homePageIcon = homePageIcon;
139
+    }
140
+
141
+    public String getHomePageIcon() {
142
+        return homePageIcon;
143
+    }
144
+
145
+    public void setWorkbenchIcon(String workbenchIcon) {
146
+        this.workbenchIcon = workbenchIcon;
147
+    }
148
+
149
+    public String getWorkbenchIcon() {
150
+        return workbenchIcon;
151
+    }
152
+
153
+    public void setCreateByUserId(Long createByUserId) {
154
+        this.createByUserId = createByUserId;
155
+    }
156
+
157
+    public Long getCreateByUserId() {
158
+        return createByUserId;
159
+    }
160
+
161
+    public void setUpdateByUserId(Long updateByUserId) {
162
+        this.updateByUserId = updateByUserId;
163
+    }
164
+
165
+    public Long getUpdateByUserId() {
166
+        return updateByUserId;
167
+    }
168
+
169
+    public List<SysRole> getSysRoleList() {
170
+        return sysRoleList;
171
+    }
172
+
173
+    public void setSysRoleList(List<SysRole> sysRoleList) {
174
+        this.sysRoleList = sysRoleList;
175
+    }
176
+
177
+    public List<SysRole> getHomePageSysRoleList() {
178
+        return homePageSysRoleList;
179
+    }
180
+
181
+    public void setHomePageSysRoleList(List<SysRole> homePageSysRoleList) {
182
+        this.homePageSysRoleList = homePageSysRoleList;
183
+    }
184
+
185
+    @Override
186
+    public String toString() {
187
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
188
+                .append("appId", getAppId())
189
+                .append("appName", getAppName())
190
+                .append("appUrl", getAppUrl())
191
+                .append("appSort", getAppSort())
192
+                .append("status", getStatus())
193
+                .append("homePage", getHomePage())
194
+                .append("homePageIcon", getHomePageIcon())
195
+                .append("workbenchIcon", getWorkbenchIcon())
196
+                .append("createBy", getCreateBy())
197
+                .append("createTime", getCreateTime())
198
+                .append("updateBy", getUpdateBy())
199
+                .append("updateTime", getUpdateTime())
200
+                .append("remark", getRemark())
201
+                .append("createByUserId", getCreateByUserId())
202
+                .append("updateByUserId", getUpdateByUserId())
203
+                .append("sysRoleList", getSysRoleList())
204
+                .append("homePageSysRoleList", getHomePageSysRoleList())
205
+                .toString();
206
+    }
207
+}

+ 64 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/SysAppRole.java

@@ -0,0 +1,64 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import org.apache.commons.lang3.builder.ToStringBuilder;
4
+import org.apache.commons.lang3.builder.ToStringStyle;
5
+import com.sundot.airport.common.annotation.Excel;
6
+import com.sundot.airport.common.core.domain.BaseEntity;
7
+
8
+/**
9
+ * 应用和角色关联对象 sys_app_role
10
+ *
11
+ * @author ruoyi
12
+ * @date 2025-11-27
13
+ */
14
+public class SysAppRole extends BaseEntity {
15
+    private static final long serialVersionUID = 1L;
16
+
17
+    /**
18
+     * 应用ID
19
+     */
20
+    private Long appId;
21
+
22
+    /**
23
+     * 角色ID
24
+     */
25
+    private Long roleId;
26
+
27
+    /**
28
+     * 是否首页权限(0否 1是)
29
+     */
30
+    private String homePage;
31
+
32
+    public void setAppId(Long appId) {
33
+        this.appId = appId;
34
+    }
35
+
36
+    public Long getAppId() {
37
+        return appId;
38
+    }
39
+
40
+    public void setRoleId(Long roleId) {
41
+        this.roleId = roleId;
42
+    }
43
+
44
+    public Long getRoleId() {
45
+        return roleId;
46
+    }
47
+
48
+    public void setHomePage(String homePage) {
49
+        this.homePage = homePage;
50
+    }
51
+
52
+    public String getHomePage() {
53
+        return homePage;
54
+    }
55
+
56
+    @Override
57
+    public String toString() {
58
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
59
+                .append("appId", getAppId())
60
+                .append("roleId", getRoleId())
61
+                .append("homePage", getHomePage())
62
+                .toString();
63
+    }
64
+}

+ 81 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/SysCache.java

@@ -0,0 +1,81 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import com.sundot.airport.common.utils.StringUtils;
4
+
5
+/**
6
+ * 缓存信息
7
+ * 
8
+ * @author ruoyi
9
+ */
10
+public class SysCache
11
+{
12
+    /** 缓存名称 */
13
+    private String cacheName = "";
14
+
15
+    /** 缓存键名 */
16
+    private String cacheKey = "";
17
+
18
+    /** 缓存内容 */
19
+    private String cacheValue = "";
20
+
21
+    /** 备注 */
22
+    private String remark = "";
23
+
24
+    public SysCache()
25
+    {
26
+
27
+    }
28
+
29
+    public SysCache(String cacheName, String remark)
30
+    {
31
+        this.cacheName = cacheName;
32
+        this.remark = remark;
33
+    }
34
+
35
+    public SysCache(String cacheName, String cacheKey, String cacheValue)
36
+    {
37
+        this.cacheName = StringUtils.replace(cacheName, ":", "");
38
+        this.cacheKey = StringUtils.replace(cacheKey, cacheName, "");
39
+        this.cacheValue = cacheValue;
40
+    }
41
+
42
+    public String getCacheName()
43
+    {
44
+        return cacheName;
45
+    }
46
+
47
+    public void setCacheName(String cacheName)
48
+    {
49
+        this.cacheName = cacheName;
50
+    }
51
+
52
+    public String getCacheKey()
53
+    {
54
+        return cacheKey;
55
+    }
56
+
57
+    public void setCacheKey(String cacheKey)
58
+    {
59
+        this.cacheKey = cacheKey;
60
+    }
61
+
62
+    public String getCacheValue()
63
+    {
64
+        return cacheValue;
65
+    }
66
+
67
+    public void setCacheValue(String cacheValue)
68
+    {
69
+        this.cacheValue = cacheValue;
70
+    }
71
+
72
+    public String getRemark()
73
+    {
74
+        return remark;
75
+    }
76
+
77
+    public void setRemark(String remark)
78
+    {
79
+        this.remark = remark;
80
+    }
81
+}

+ 111 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/SysConfig.java

@@ -0,0 +1,111 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import javax.validation.constraints.NotBlank;
4
+import javax.validation.constraints.Size;
5
+import org.apache.commons.lang3.builder.ToStringBuilder;
6
+import org.apache.commons.lang3.builder.ToStringStyle;
7
+import com.sundot.airport.common.annotation.Excel;
8
+import com.sundot.airport.common.annotation.Excel.ColumnType;
9
+import com.sundot.airport.common.core.domain.BaseEntity;
10
+
11
+/**
12
+ * 参数配置表 sys_config
13
+ * 
14
+ * @author ruoyi
15
+ */
16
+public class SysConfig extends BaseEntity
17
+{
18
+    private static final long serialVersionUID = 1L;
19
+
20
+    /** 参数主键 */
21
+    @Excel(name = "参数主键", cellType = ColumnType.NUMERIC)
22
+    private Long configId;
23
+
24
+    /** 参数名称 */
25
+    @Excel(name = "参数名称")
26
+    private String configName;
27
+
28
+    /** 参数键名 */
29
+    @Excel(name = "参数键名")
30
+    private String configKey;
31
+
32
+    /** 参数键值 */
33
+    @Excel(name = "参数键值")
34
+    private String configValue;
35
+
36
+    /** 系统内置(Y是 N否) */
37
+    @Excel(name = "系统内置", readConverterExp = "Y=是,N=否")
38
+    private String configType;
39
+
40
+    public Long getConfigId()
41
+    {
42
+        return configId;
43
+    }
44
+
45
+    public void setConfigId(Long configId)
46
+    {
47
+        this.configId = configId;
48
+    }
49
+
50
+    @NotBlank(message = "参数名称不能为空")
51
+    @Size(min = 0, max = 100, message = "参数名称不能超过100个字符")
52
+    public String getConfigName()
53
+    {
54
+        return configName;
55
+    }
56
+
57
+    public void setConfigName(String configName)
58
+    {
59
+        this.configName = configName;
60
+    }
61
+
62
+    @NotBlank(message = "参数键名长度不能为空")
63
+    @Size(min = 0, max = 100, message = "参数键名长度不能超过100个字符")
64
+    public String getConfigKey()
65
+    {
66
+        return configKey;
67
+    }
68
+
69
+    public void setConfigKey(String configKey)
70
+    {
71
+        this.configKey = configKey;
72
+    }
73
+
74
+    @NotBlank(message = "参数键值不能为空")
75
+    @Size(min = 0, max = 500, message = "参数键值长度不能超过500个字符")
76
+    public String getConfigValue()
77
+    {
78
+        return configValue;
79
+    }
80
+
81
+    public void setConfigValue(String configValue)
82
+    {
83
+        this.configValue = configValue;
84
+    }
85
+
86
+    public String getConfigType()
87
+    {
88
+        return configType;
89
+    }
90
+
91
+    public void setConfigType(String configType)
92
+    {
93
+        this.configType = configType;
94
+    }
95
+    
96
+    @Override
97
+    public String toString() {
98
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
99
+            .append("configId", getConfigId())
100
+            .append("configName", getConfigName())
101
+            .append("configKey", getConfigKey())
102
+            .append("configValue", getConfigValue())
103
+            .append("configType", getConfigType())
104
+            .append("createBy", getCreateBy())
105
+            .append("createTime", getCreateTime())
106
+            .append("updateBy", getUpdateBy())
107
+            .append("updateTime", getUpdateTime())
108
+            .append("remark", getRemark())
109
+            .toString();
110
+    }
111
+}

+ 102 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/SysDynamicSql.java

@@ -0,0 +1,102 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import com.sundot.airport.common.annotation.Excel;
4
+import com.sundot.airport.common.core.domain.BaseEntity;
5
+import org.apache.commons.lang3.builder.ToStringBuilder;
6
+import org.apache.commons.lang3.builder.ToStringStyle;
7
+
8
+/**
9
+ * 动态sql执行config对象 sys_dynamic_sql
10
+ *
11
+ * @author ruoyi
12
+ * @date 2025-06-20
13
+ */
14
+public class SysDynamicSql extends BaseEntity
15
+{
16
+    private static final long serialVersionUID = 1L;
17
+
18
+    /**  */
19
+    private Long id;
20
+
21
+    /** sql key */
22
+    @Excel(name = "sql key")
23
+    private String sqlKey;
24
+
25
+    /** 内容 */
26
+    @Excel(name = "内容")
27
+    private String sqlContent;
28
+
29
+    /** 说没 */
30
+    @Excel(name = "说没")
31
+    private String description;
32
+
33
+    /** 参数配置 */
34
+    @Excel(name = "参数配置")
35
+    private String paramsConfig;
36
+
37
+    public void setId(Long id)
38
+    {
39
+        this.id = id;
40
+    }
41
+
42
+    public Long getId()
43
+    {
44
+        return id;
45
+    }
46
+
47
+    public void setSqlKey(String sqlKey)
48
+    {
49
+        this.sqlKey = sqlKey;
50
+    }
51
+
52
+    public String getSqlKey()
53
+    {
54
+        return sqlKey;
55
+    }
56
+
57
+    public void setSqlContent(String sqlContent)
58
+    {
59
+        this.sqlContent = sqlContent;
60
+    }
61
+
62
+    public String getSqlContent()
63
+    {
64
+        return sqlContent;
65
+    }
66
+
67
+    public void setDescription(String description)
68
+    {
69
+        this.description = description;
70
+    }
71
+
72
+    public String getDescription()
73
+    {
74
+        return description;
75
+    }
76
+
77
+    public void setParamsConfig(String paramsConfig)
78
+    {
79
+        this.paramsConfig = paramsConfig;
80
+    }
81
+
82
+    public String getParamsConfig()
83
+    {
84
+        return paramsConfig;
85
+    }
86
+
87
+    @Override
88
+    public String toString() {
89
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
90
+                .append("id", getId())
91
+                .append("sqlKey", getSqlKey())
92
+                .append("sqlContent", getSqlContent())
93
+                .append("description", getDescription())
94
+                .append("createBy", getCreateBy())
95
+                .append("createTime", getCreateTime())
96
+                .append("updateBy", getUpdateBy())
97
+                .append("updateTime", getUpdateTime())
98
+                .append("remark", getRemark())
99
+                .append("paramsConfig", getParamsConfig())
100
+                .toString();
101
+    }
102
+}

+ 57 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/SysLargeScreenCooperationDto.java

@@ -0,0 +1,57 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import com.sundot.airport.common.core.domain.entity.SysUser;
4
+import lombok.Data;
5
+
6
+import java.util.List;
7
+
8
+/**
9
+ * 能力画像-协同配合
10
+ *
11
+ * @author ruoyi
12
+ * @date 2025-09-07
13
+ */
14
+@Data
15
+public class SysLargeScreenCooperationDto {
16
+
17
+    /**
18
+     * 性别
19
+     */
20
+    private List<SysLargeScreenCooperationItemDto> sexList;
21
+
22
+    /**
23
+     * 生肖
24
+     */
25
+    private List<SysLargeScreenCooperationItemDto> zodiacList;
26
+
27
+    /**
28
+     * 血型
29
+     */
30
+    private List<SysLargeScreenCooperationItemDto> blooGroupList;
31
+
32
+    /**
33
+     * 星座
34
+     */
35
+    private List<SysLargeScreenCooperationItemDto> constellationList;
36
+
37
+    /**
38
+     * 性格特征
39
+     */
40
+    private List<SysLargeScreenCooperationItemDto> characterCharacteristicsList;
41
+
42
+    /**
43
+     * 工作风格
44
+     */
45
+    private List<SysLargeScreenCooperationItemDto> workingStyleList;
46
+
47
+    /**
48
+     * 主观印象
49
+     */
50
+    private List<SysLargeScreenCooperationItemDto> subjectiveImpressionList;
51
+
52
+    /**
53
+     * 团队配合
54
+     */
55
+    private List<SysUser> teamCooperationList;
56
+
57
+}

+ 47 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/SysLargeScreenCooperationItemDto.java

@@ -0,0 +1,47 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import lombok.Data;
4
+
5
+import java.math.BigDecimal;
6
+import java.util.List;
7
+
8
+/**
9
+ * 能力画像-协同配合明细
10
+ *
11
+ * @author ruoyi
12
+ * @date 2025-09-07
13
+ */
14
+@Data
15
+public class SysLargeScreenCooperationItemDto {
16
+
17
+    /**
18
+     * 主键
19
+     */
20
+    private Long id;
21
+
22
+    /**
23
+     * 编码
24
+     */
25
+    private String code;
26
+
27
+    /**
28
+     * 名称
29
+     */
30
+    private String name;
31
+
32
+    /**
33
+     * 数量
34
+     */
35
+    private Long count;
36
+
37
+    /**
38
+     * 比例
39
+     */
40
+    private BigDecimal scale;
41
+
42
+    /**
43
+     * 能力画像-协同配合明细列表
44
+     */
45
+    private List<SysLargeScreenCooperationItemDto> children;
46
+
47
+}

+ 20 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/SysLargeScreenCooperationQueryParamDto.java

@@ -0,0 +1,20 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import lombok.Data;
4
+
5
+
6
+/**
7
+ * 能力画像-协同配合
8
+ *
9
+ * @author ruoyi
10
+ * @date 2025-09-07
11
+ */
12
+@Data
13
+public class SysLargeScreenCooperationQueryParamDto {
14
+
15
+    /**
16
+     * 部门ID
17
+     */
18
+    private Long deptId;
19
+
20
+}

+ 77 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/SysLargeScreenLearningGrowthDto.java

@@ -0,0 +1,77 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import lombok.Data;
4
+
5
+import java.math.BigDecimal;
6
+import java.util.List;
7
+
8
+/**
9
+ * 能力画像-学习成长
10
+ *
11
+ * @author ruoyi
12
+ * @date 2025-09-07
13
+ */
14
+@Data
15
+public class SysLargeScreenLearningGrowthDto {
16
+
17
+    /**
18
+     * 本站总排名
19
+     */
20
+    private Integer stationRanking;
21
+
22
+    /**
23
+     * 本站总人数
24
+     */
25
+    private Integer stationTotal;
26
+
27
+    /**
28
+     * 本科总排名
29
+     */
30
+    private Integer departmentRanking;
31
+
32
+    /**
33
+     * 本科总人数
34
+     */
35
+    private Integer departmentTotal;
36
+
37
+    /**
38
+     * 本班总排名
39
+     */
40
+    private Integer teamRanking;
41
+
42
+    /**
43
+     * 本班总人数
44
+     */
45
+    private Integer teamTotal;
46
+
47
+    /**
48
+     * 主键
49
+     */
50
+    private Long id;
51
+
52
+    /**
53
+     * 编码
54
+     */
55
+    private String code;
56
+
57
+    /**
58
+     * 名称
59
+     */
60
+    private String name;
61
+
62
+    /**
63
+     * 平均分
64
+     */
65
+    private BigDecimal averageScore;
66
+
67
+    /**
68
+     * 最高分
69
+     */
70
+    private BigDecimal highestScore;
71
+
72
+    /**
73
+     * 最低分
74
+     */
75
+    private BigDecimal lowestScore;
76
+
77
+}

+ 39 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/SysLargeScreenLearningGrowthOrganizationalSupportDto.java

@@ -0,0 +1,39 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import lombok.Data;
4
+
5
+import java.io.Serializable;
6
+import java.math.BigDecimal;
7
+
8
+/**
9
+ * 工作画像-组织支撑-培训测试平均分趋势图
10
+ *
11
+ * @author ruoyi
12
+ * @date 2025-09-07
13
+ */
14
+@Data
15
+public class SysLargeScreenLearningGrowthOrganizationalSupportDto implements Serializable {
16
+
17
+    private static final long serialVersionUID = 1L;
18
+
19
+    /**
20
+     * 日期
21
+     */
22
+    private String date;
23
+
24
+    /**
25
+     * 类型
26
+     */
27
+    private String code;
28
+
29
+    /**
30
+     * 类型描述
31
+     */
32
+    private String name;
33
+
34
+    /**
35
+     * 平均分
36
+     */
37
+    private BigDecimal number;
38
+
39
+}

+ 31 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/SysLargeScreenLearningGrowthQueryParamDto.java

@@ -0,0 +1,31 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import com.sundot.airport.common.core.domain.BaseLargeScreenQueryParamDto;
4
+import lombok.Data;
5
+
6
+
7
+/**
8
+ * 能力画像-学习成长
9
+ *
10
+ * @author ruoyi
11
+ * @date 2025-09-07
12
+ */
13
+@Data
14
+public class SysLargeScreenLearningGrowthQueryParamDto extends BaseLargeScreenQueryParamDto {
15
+
16
+    /**
17
+     * 科室ID
18
+     */
19
+    private Long departmentId;
20
+
21
+    /**
22
+     * 班组ID
23
+     */
24
+    private Long teamId;
25
+
26
+    /**
27
+     * 人员ID
28
+     */
29
+    private Long userId;
30
+
31
+}

+ 85 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/SysLargeScreenLearningGrowthSqlDto.java

@@ -0,0 +1,85 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import com.fasterxml.jackson.annotation.JsonFormat;
4
+import lombok.Data;
5
+
6
+import java.math.BigDecimal;
7
+import java.util.Date;
8
+
9
+
10
+/**
11
+ * 能力画像-学习成长
12
+ *
13
+ * @author ruoyi
14
+ * @date 2025-09-07
15
+ */
16
+@Data
17
+public class SysLargeScreenLearningGrowthSqlDto {
18
+
19
+    /**
20
+     * 站级ID
21
+     */
22
+    private Long zjDeptId;
23
+
24
+    /**
25
+     * 站级名称
26
+     */
27
+    private String zjDeptName;
28
+
29
+    /**
30
+     * 科室ID
31
+     */
32
+    private Long ksDeptId;
33
+
34
+    /**
35
+     * 科室名称
36
+     */
37
+    private String ksDeptName;
38
+
39
+    /**
40
+     * 班组ID
41
+     */
42
+    private Long bzDeptId;
43
+
44
+    /**
45
+     * 班组名称
46
+     */
47
+    private String bzDeptName;
48
+
49
+    /**
50
+     * 人员ID
51
+     */
52
+    private Long userId;
53
+
54
+    /**
55
+     * 人员编码
56
+     */
57
+    private String userCode;
58
+
59
+    /**
60
+     * 人员名称
61
+     */
62
+    private String userName;
63
+
64
+    /**
65
+     * 考试编号
66
+     */
67
+    private String examCode;
68
+
69
+    /**
70
+     * 考试名称
71
+     */
72
+    private String examName;
73
+
74
+    /**
75
+     * 考试时间
76
+     */
77
+    @JsonFormat(pattern = "yyyy-MM-dd")
78
+    private Date examTime;
79
+
80
+    /**
81
+     * 考试分数
82
+     */
83
+    private BigDecimal examScore;
84
+
85
+}

+ 166 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/SysLearningGrowth.java

@@ -0,0 +1,166 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import java.math.BigDecimal;
4
+import java.util.Date;
5
+
6
+import com.fasterxml.jackson.annotation.JsonFormat;
7
+import org.apache.commons.lang3.builder.ToStringBuilder;
8
+import org.apache.commons.lang3.builder.ToStringStyle;
9
+import com.sundot.airport.common.annotation.Excel;
10
+import com.sundot.airport.common.core.domain.BaseEntity;
11
+
12
+/**
13
+ * 学习成长对象 sys_learning_growth
14
+ *
15
+ * @author ruoyi
16
+ * @date 2025-10-22
17
+ */
18
+public class SysLearningGrowth extends BaseEntity {
19
+    private static final long serialVersionUID = 1L;
20
+
21
+    /**
22
+     * 主键
23
+     */
24
+    private Long id;
25
+
26
+    /**
27
+     * 用户编号
28
+     */
29
+    @Excel(name = "用户编号")
30
+    private String userCode;
31
+
32
+    /**
33
+     * 用户名称
34
+     */
35
+    @Excel(name = "用户名称")
36
+    private String userName;
37
+
38
+    /**
39
+     * 考试编号
40
+     */
41
+    @Excel(name = "考试编号")
42
+    private String examCode;
43
+
44
+    /**
45
+     * 考试名称
46
+     */
47
+    @Excel(name = "考试名称")
48
+    private String examName;
49
+
50
+    /**
51
+     * 考试时间
52
+     */
53
+    @JsonFormat(pattern = "yyyy-MM-dd")
54
+    @Excel(name = "考试时间", width = 30, dateFormat = "yyyy-MM-dd")
55
+    private Date examTime;
56
+
57
+    /**
58
+     * 考试分数
59
+     */
60
+    @Excel(name = "考试分数")
61
+    private BigDecimal examScore;
62
+
63
+    /**
64
+     * 开始时间
65
+     */
66
+    @JsonFormat(pattern = "yyyy-MM-dd")
67
+    private Date startTime;
68
+
69
+    /**
70
+     * 结束时间
71
+     */
72
+    @JsonFormat(pattern = "yyyy-MM-dd")
73
+    private Date endTime;
74
+
75
+    public void setId(Long id) {
76
+        this.id = id;
77
+    }
78
+
79
+    public Long getId() {
80
+        return id;
81
+    }
82
+
83
+    public void setUserCode(String userCode) {
84
+        this.userCode = userCode;
85
+    }
86
+
87
+    public String getUserCode() {
88
+        return userCode;
89
+    }
90
+
91
+    public void setUserName(String userName) {
92
+        this.userName = userName;
93
+    }
94
+
95
+    public String getUserName() {
96
+        return userName;
97
+    }
98
+
99
+    public void setExamCode(String examCode) {
100
+        this.examCode = examCode;
101
+    }
102
+
103
+    public String getExamCode() {
104
+        return examCode;
105
+    }
106
+
107
+    public void setExamName(String examName) {
108
+        this.examName = examName;
109
+    }
110
+
111
+    public String getExamName() {
112
+        return examName;
113
+    }
114
+
115
+    public void setExamTime(Date examTime) {
116
+        this.examTime = examTime;
117
+    }
118
+
119
+    public Date getExamTime() {
120
+        return examTime;
121
+    }
122
+
123
+    public void setExamScore(BigDecimal examScore) {
124
+        this.examScore = examScore;
125
+    }
126
+
127
+    public BigDecimal getExamScore() {
128
+        return examScore;
129
+    }
130
+
131
+    public Date getStartTime() {
132
+        return startTime;
133
+    }
134
+
135
+    public void setStartTime(Date startTime) {
136
+        this.startTime = startTime;
137
+    }
138
+
139
+    public Date getEndTime() {
140
+        return endTime;
141
+    }
142
+
143
+    public void setEndTime(Date endTime) {
144
+        this.endTime = endTime;
145
+    }
146
+
147
+    @Override
148
+    public String toString() {
149
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
150
+                .append("id", getId())
151
+                .append("createBy", getCreateBy())
152
+                .append("createTime", getCreateTime())
153
+                .append("updateBy", getUpdateBy())
154
+                .append("updateTime", getUpdateTime())
155
+                .append("userCode", getUserCode())
156
+                .append("userName", getUserName())
157
+                .append("examCode", getExamCode())
158
+                .append("examName", getExamName())
159
+                .append("examTime", getExamTime())
160
+                .append("examScore", getExamScore())
161
+                .append("startTime", getStartTime())
162
+                .append("endTime", getEndTime())
163
+                .append("remark", getRemark())
164
+                .toString();
165
+    }
166
+}

+ 144 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/SysLogininfor.java

@@ -0,0 +1,144 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import java.util.Date;
4
+import com.fasterxml.jackson.annotation.JsonFormat;
5
+import com.sundot.airport.common.annotation.Excel;
6
+import com.sundot.airport.common.annotation.Excel.ColumnType;
7
+import com.sundot.airport.common.core.domain.BaseEntity;
8
+
9
+/**
10
+ * 系统访问记录表 sys_logininfor
11
+ * 
12
+ * @author ruoyi
13
+ */
14
+public class SysLogininfor extends BaseEntity
15
+{
16
+    private static final long serialVersionUID = 1L;
17
+
18
+    /** ID */
19
+    @Excel(name = "序号", cellType = ColumnType.NUMERIC)
20
+    private Long infoId;
21
+
22
+    /** 用户账号 */
23
+    @Excel(name = "用户账号")
24
+    private String userName;
25
+
26
+    /** 登录状态 0成功 1失败 */
27
+    @Excel(name = "登录状态", readConverterExp = "0=成功,1=失败")
28
+    private String status;
29
+
30
+    /** 登录IP地址 */
31
+    @Excel(name = "登录地址")
32
+    private String ipaddr;
33
+
34
+    /** 登录地点 */
35
+    @Excel(name = "登录地点")
36
+    private String loginLocation;
37
+
38
+    /** 浏览器类型 */
39
+    @Excel(name = "浏览器")
40
+    private String browser;
41
+
42
+    /** 操作系统 */
43
+    @Excel(name = "操作系统")
44
+    private String os;
45
+
46
+    /** 提示消息 */
47
+    @Excel(name = "提示消息")
48
+    private String msg;
49
+
50
+    /** 访问时间 */
51
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
52
+    @Excel(name = "访问时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
53
+    private Date loginTime;
54
+
55
+    public Long getInfoId()
56
+    {
57
+        return infoId;
58
+    }
59
+
60
+    public void setInfoId(Long infoId)
61
+    {
62
+        this.infoId = infoId;
63
+    }
64
+
65
+    public String getUserName()
66
+    {
67
+        return userName;
68
+    }
69
+
70
+    public void setUserName(String userName)
71
+    {
72
+        this.userName = userName;
73
+    }
74
+
75
+    public String getStatus()
76
+    {
77
+        return status;
78
+    }
79
+
80
+    public void setStatus(String status)
81
+    {
82
+        this.status = status;
83
+    }
84
+
85
+    public String getIpaddr()
86
+    {
87
+        return ipaddr;
88
+    }
89
+
90
+    public void setIpaddr(String ipaddr)
91
+    {
92
+        this.ipaddr = ipaddr;
93
+    }
94
+
95
+    public String getLoginLocation()
96
+    {
97
+        return loginLocation;
98
+    }
99
+
100
+    public void setLoginLocation(String loginLocation)
101
+    {
102
+        this.loginLocation = loginLocation;
103
+    }
104
+
105
+    public String getBrowser()
106
+    {
107
+        return browser;
108
+    }
109
+
110
+    public void setBrowser(String browser)
111
+    {
112
+        this.browser = browser;
113
+    }
114
+
115
+    public String getOs()
116
+    {
117
+        return os;
118
+    }
119
+
120
+    public void setOs(String os)
121
+    {
122
+        this.os = os;
123
+    }
124
+
125
+    public String getMsg()
126
+    {
127
+        return msg;
128
+    }
129
+
130
+    public void setMsg(String msg)
131
+    {
132
+        this.msg = msg;
133
+    }
134
+
135
+    public Date getLoginTime()
136
+    {
137
+        return loginTime;
138
+    }
139
+
140
+    public void setLoginTime(Date loginTime)
141
+    {
142
+        this.loginTime = loginTime;
143
+    }
144
+}

+ 130 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/SysNotice.java

@@ -0,0 +1,130 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import javax.validation.constraints.NotBlank;
4
+import javax.validation.constraints.Size;
5
+
6
+import org.apache.commons.lang3.builder.ToStringBuilder;
7
+import org.apache.commons.lang3.builder.ToStringStyle;
8
+import com.sundot.airport.common.core.domain.BaseEntity;
9
+import com.sundot.airport.common.xss.Xss;
10
+
11
+/**
12
+ * 通知公告表 sys_notice
13
+ *
14
+ * @author ruoyi
15
+ */
16
+public class SysNotice extends BaseEntity {
17
+    private static final long serialVersionUID = 1L;
18
+
19
+    /**
20
+     * 公告ID
21
+     */
22
+    private Long noticeId;
23
+
24
+    /**
25
+     * 公告标题
26
+     */
27
+    private String noticeTitle;
28
+
29
+    /**
30
+     * 公告类型(1通知 2公告)
31
+     */
32
+    private String noticeType;
33
+
34
+    /**
35
+     * 公告内容
36
+     */
37
+    private String noticeContent;
38
+
39
+    /**
40
+     * 公告状态(0正常 1关闭)
41
+     */
42
+    private String status;
43
+
44
+    /**
45
+     * 创建者ID
46
+     */
47
+    private Long createByUserId;
48
+
49
+    /**
50
+     * 更新者ID
51
+     */
52
+    private Long updateByUserId;
53
+
54
+    public Long getNoticeId() {
55
+        return noticeId;
56
+    }
57
+
58
+    public void setNoticeId(Long noticeId) {
59
+        this.noticeId = noticeId;
60
+    }
61
+
62
+    public void setNoticeTitle(String noticeTitle) {
63
+        this.noticeTitle = noticeTitle;
64
+    }
65
+
66
+    @Xss(message = "公告标题不能包含脚本字符")
67
+    @NotBlank(message = "公告标题不能为空")
68
+    @Size(min = 0, max = 50, message = "公告标题不能超过50个字符")
69
+    public String getNoticeTitle() {
70
+        return noticeTitle;
71
+    }
72
+
73
+    public void setNoticeType(String noticeType) {
74
+        this.noticeType = noticeType;
75
+    }
76
+
77
+    public String getNoticeType() {
78
+        return noticeType;
79
+    }
80
+
81
+    public void setNoticeContent(String noticeContent) {
82
+        this.noticeContent = noticeContent;
83
+    }
84
+
85
+    public String getNoticeContent() {
86
+        return noticeContent;
87
+    }
88
+
89
+    public void setStatus(String status) {
90
+        this.status = status;
91
+    }
92
+
93
+    public String getStatus() {
94
+        return status;
95
+    }
96
+
97
+    public Long getCreateByUserId() {
98
+        return createByUserId;
99
+    }
100
+
101
+    public void setCreateByUserId(Long createByUserId) {
102
+        this.createByUserId = createByUserId;
103
+    }
104
+
105
+    public Long getUpdateByUserId() {
106
+        return updateByUserId;
107
+    }
108
+
109
+    public void setUpdateByUserId(Long updateByUserId) {
110
+        this.updateByUserId = updateByUserId;
111
+    }
112
+
113
+    @Override
114
+    public String toString() {
115
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
116
+                .append("noticeId", getNoticeId())
117
+                .append("noticeTitle", getNoticeTitle())
118
+                .append("noticeType", getNoticeType())
119
+                .append("noticeContent", getNoticeContent())
120
+                .append("status", getStatus())
121
+                .append("createBy", getCreateBy())
122
+                .append("createTime", getCreateTime())
123
+                .append("updateBy", getUpdateBy())
124
+                .append("updateTime", getUpdateTime())
125
+                .append("remark", getRemark())
126
+                .append("createByUserId", getCreateByUserId())
127
+                .append("updateByUserId", getUpdateByUserId())
128
+                .toString();
129
+    }
130
+}

+ 269 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/SysOperLog.java

@@ -0,0 +1,269 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import java.util.Date;
4
+import com.fasterxml.jackson.annotation.JsonFormat;
5
+import com.sundot.airport.common.annotation.Excel;
6
+import com.sundot.airport.common.annotation.Excel.ColumnType;
7
+import com.sundot.airport.common.core.domain.BaseEntity;
8
+
9
+/**
10
+ * 操作日志记录表 oper_log
11
+ * 
12
+ * @author ruoyi
13
+ */
14
+public class SysOperLog extends BaseEntity
15
+{
16
+    private static final long serialVersionUID = 1L;
17
+
18
+    /** 日志主键 */
19
+    @Excel(name = "操作序号", cellType = ColumnType.NUMERIC)
20
+    private Long operId;
21
+
22
+    /** 操作模块 */
23
+    @Excel(name = "操作模块")
24
+    private String title;
25
+
26
+    /** 业务类型(0其它 1新增 2修改 3删除) */
27
+    @Excel(name = "业务类型", readConverterExp = "0=其它,1=新增,2=修改,3=删除,4=授权,5=导出,6=导入,7=强退,8=生成代码,9=清空数据")
28
+    private Integer businessType;
29
+
30
+    /** 业务类型数组 */
31
+    private Integer[] businessTypes;
32
+
33
+    /** 请求方法 */
34
+    @Excel(name = "请求方法")
35
+    private String method;
36
+
37
+    /** 请求方式 */
38
+    @Excel(name = "请求方式")
39
+    private String requestMethod;
40
+
41
+    /** 操作类别(0其它 1后台用户 2手机端用户) */
42
+    @Excel(name = "操作类别", readConverterExp = "0=其它,1=后台用户,2=手机端用户")
43
+    private Integer operatorType;
44
+
45
+    /** 操作人员 */
46
+    @Excel(name = "操作人员")
47
+    private String operName;
48
+
49
+    /** 部门名称 */
50
+    @Excel(name = "部门名称")
51
+    private String deptName;
52
+
53
+    /** 请求url */
54
+    @Excel(name = "请求地址")
55
+    private String operUrl;
56
+
57
+    /** 操作地址 */
58
+    @Excel(name = "操作地址")
59
+    private String operIp;
60
+
61
+    /** 操作地点 */
62
+    @Excel(name = "操作地点")
63
+    private String operLocation;
64
+
65
+    /** 请求参数 */
66
+    @Excel(name = "请求参数")
67
+    private String operParam;
68
+
69
+    /** 返回参数 */
70
+    @Excel(name = "返回参数")
71
+    private String jsonResult;
72
+
73
+    /** 操作状态(0正常 1异常) */
74
+    @Excel(name = "状态", readConverterExp = "0=正常,1=异常")
75
+    private Integer status;
76
+
77
+    /** 错误消息 */
78
+    @Excel(name = "错误消息")
79
+    private String errorMsg;
80
+
81
+    /** 操作时间 */
82
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
83
+    @Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
84
+    private Date operTime;
85
+
86
+    /** 消耗时间 */
87
+    @Excel(name = "消耗时间", suffix = "毫秒")
88
+    private Long costTime;
89
+
90
+    public Long getOperId()
91
+    {
92
+        return operId;
93
+    }
94
+
95
+    public void setOperId(Long operId)
96
+    {
97
+        this.operId = operId;
98
+    }
99
+
100
+    public String getTitle()
101
+    {
102
+        return title;
103
+    }
104
+
105
+    public void setTitle(String title)
106
+    {
107
+        this.title = title;
108
+    }
109
+
110
+    public Integer getBusinessType()
111
+    {
112
+        return businessType;
113
+    }
114
+
115
+    public void setBusinessType(Integer businessType)
116
+    {
117
+        this.businessType = businessType;
118
+    }
119
+
120
+    public Integer[] getBusinessTypes()
121
+    {
122
+        return businessTypes;
123
+    }
124
+
125
+    public void setBusinessTypes(Integer[] businessTypes)
126
+    {
127
+        this.businessTypes = businessTypes;
128
+    }
129
+
130
+    public String getMethod()
131
+    {
132
+        return method;
133
+    }
134
+
135
+    public void setMethod(String method)
136
+    {
137
+        this.method = method;
138
+    }
139
+
140
+    public String getRequestMethod()
141
+    {
142
+        return requestMethod;
143
+    }
144
+
145
+    public void setRequestMethod(String requestMethod)
146
+    {
147
+        this.requestMethod = requestMethod;
148
+    }
149
+
150
+    public Integer getOperatorType()
151
+    {
152
+        return operatorType;
153
+    }
154
+
155
+    public void setOperatorType(Integer operatorType)
156
+    {
157
+        this.operatorType = operatorType;
158
+    }
159
+
160
+    public String getOperName()
161
+    {
162
+        return operName;
163
+    }
164
+
165
+    public void setOperName(String operName)
166
+    {
167
+        this.operName = operName;
168
+    }
169
+
170
+    public String getDeptName()
171
+    {
172
+        return deptName;
173
+    }
174
+
175
+    public void setDeptName(String deptName)
176
+    {
177
+        this.deptName = deptName;
178
+    }
179
+
180
+    public String getOperUrl()
181
+    {
182
+        return operUrl;
183
+    }
184
+
185
+    public void setOperUrl(String operUrl)
186
+    {
187
+        this.operUrl = operUrl;
188
+    }
189
+
190
+    public String getOperIp()
191
+    {
192
+        return operIp;
193
+    }
194
+
195
+    public void setOperIp(String operIp)
196
+    {
197
+        this.operIp = operIp;
198
+    }
199
+
200
+    public String getOperLocation()
201
+    {
202
+        return operLocation;
203
+    }
204
+
205
+    public void setOperLocation(String operLocation)
206
+    {
207
+        this.operLocation = operLocation;
208
+    }
209
+
210
+    public String getOperParam()
211
+    {
212
+        return operParam;
213
+    }
214
+
215
+    public void setOperParam(String operParam)
216
+    {
217
+        this.operParam = operParam;
218
+    }
219
+
220
+    public String getJsonResult()
221
+    {
222
+        return jsonResult;
223
+    }
224
+
225
+    public void setJsonResult(String jsonResult)
226
+    {
227
+        this.jsonResult = jsonResult;
228
+    }
229
+
230
+    public Integer getStatus()
231
+    {
232
+        return status;
233
+    }
234
+
235
+    public void setStatus(Integer status)
236
+    {
237
+        this.status = status;
238
+    }
239
+
240
+    public String getErrorMsg()
241
+    {
242
+        return errorMsg;
243
+    }
244
+
245
+    public void setErrorMsg(String errorMsg)
246
+    {
247
+        this.errorMsg = errorMsg;
248
+    }
249
+
250
+    public Date getOperTime()
251
+    {
252
+        return operTime;
253
+    }
254
+
255
+    public void setOperTime(Date operTime)
256
+    {
257
+        this.operTime = operTime;
258
+    }
259
+
260
+    public Long getCostTime()
261
+    {
262
+        return costTime;
263
+    }
264
+
265
+    public void setCostTime(Long costTime)
266
+    {
267
+        this.costTime = costTime;
268
+    }
269
+}

+ 141 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/SysPost.java

@@ -0,0 +1,141 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import javax.validation.constraints.NotBlank;
4
+import javax.validation.constraints.NotNull;
5
+import javax.validation.constraints.Size;
6
+
7
+import com.sundot.airport.common.core.domain.TreeEntity;
8
+import org.apache.commons.lang3.builder.ToStringBuilder;
9
+import org.apache.commons.lang3.builder.ToStringStyle;
10
+import com.sundot.airport.common.annotation.Excel;
11
+import com.sundot.airport.common.annotation.Excel.ColumnType;
12
+
13
+/**
14
+ * 岗位表 sys_post
15
+ *
16
+ * @author ruoyi
17
+ */
18
+public class SysPost extends TreeEntity {
19
+    private static final long serialVersionUID = 1L;
20
+
21
+    /**
22
+     * 岗位序号
23
+     */
24
+    @Excel(name = "岗位序号", cellType = ColumnType.NUMERIC)
25
+    private Long postId;
26
+
27
+    /**
28
+     * 岗位编码
29
+     */
30
+    @Excel(name = "岗位编码")
31
+    private String postCode;
32
+
33
+    /**
34
+     * 岗位名称
35
+     */
36
+    @Excel(name = "岗位名称")
37
+    private String postName;
38
+
39
+    /**
40
+     * 岗位排序
41
+     */
42
+    @Excel(name = "岗位排序")
43
+    private Integer postSort;
44
+
45
+    /**
46
+     * 状态(0正常 1停用)
47
+     */
48
+    @Excel(name = "状态", readConverterExp = "0=正常,1=停用")
49
+    private String status;
50
+
51
+    /**
52
+     * 层级
53
+     */
54
+    @Excel(name = "层级")
55
+    private Integer level;
56
+
57
+    /**
58
+     * 用户是否存在此岗位标识 默认不存在
59
+     */
60
+    private boolean flag = false;
61
+
62
+    public Long getPostId() {
63
+        return postId;
64
+    }
65
+
66
+    public void setPostId(Long postId) {
67
+        this.postId = postId;
68
+    }
69
+
70
+    @NotBlank(message = "岗位编码不能为空")
71
+    @Size(min = 0, max = 64, message = "岗位编码长度不能超过64个字符")
72
+    public String getPostCode() {
73
+        return postCode;
74
+    }
75
+
76
+    public void setPostCode(String postCode) {
77
+        this.postCode = postCode;
78
+    }
79
+
80
+    @NotBlank(message = "岗位名称不能为空")
81
+    @Size(min = 0, max = 50, message = "岗位名称长度不能超过50个字符")
82
+    public String getPostName() {
83
+        return postName;
84
+    }
85
+
86
+    public void setPostName(String postName) {
87
+        this.postName = postName;
88
+    }
89
+
90
+    @NotNull(message = "显示顺序不能为空")
91
+    public Integer getPostSort() {
92
+        return postSort;
93
+    }
94
+
95
+    public void setPostSort(Integer postSort) {
96
+        this.postSort = postSort;
97
+    }
98
+
99
+    public String getStatus() {
100
+        return status;
101
+    }
102
+
103
+    public void setStatus(String status) {
104
+        this.status = status;
105
+    }
106
+
107
+    public Integer getLevel() {
108
+        return level;
109
+    }
110
+
111
+    public void setLevel(Integer level) {
112
+        this.level = level;
113
+    }
114
+
115
+    public boolean isFlag() {
116
+        return flag;
117
+    }
118
+
119
+    public void setFlag(boolean flag) {
120
+        this.flag = flag;
121
+    }
122
+
123
+    @Override
124
+    public String toString() {
125
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
126
+                .append("postId", getPostId())
127
+                .append("postCode", getPostCode())
128
+                .append("postName", getPostName())
129
+                .append("postSort", getPostSort())
130
+                .append("status", getStatus())
131
+                .append("createBy", getCreateBy())
132
+                .append("createTime", getCreateTime())
133
+                .append("updateBy", getUpdateBy())
134
+                .append("updateTime", getUpdateTime())
135
+                .append("remark", getRemark())
136
+                .append("parentId", getParentId())
137
+                .append("ancestors", getAncestors())
138
+                .append("level", getLevel())
139
+                .toString();
140
+    }
141
+}

+ 46 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/SysRoleDept.java

@@ -0,0 +1,46 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import org.apache.commons.lang3.builder.ToStringBuilder;
4
+import org.apache.commons.lang3.builder.ToStringStyle;
5
+
6
+/**
7
+ * 角色和部门关联 sys_role_dept
8
+ * 
9
+ * @author ruoyi
10
+ */
11
+public class SysRoleDept
12
+{
13
+    /** 角色ID */
14
+    private Long roleId;
15
+    
16
+    /** 部门ID */
17
+    private Long deptId;
18
+
19
+    public Long getRoleId()
20
+    {
21
+        return roleId;
22
+    }
23
+
24
+    public void setRoleId(Long roleId)
25
+    {
26
+        this.roleId = roleId;
27
+    }
28
+
29
+    public Long getDeptId()
30
+    {
31
+        return deptId;
32
+    }
33
+
34
+    public void setDeptId(Long deptId)
35
+    {
36
+        this.deptId = deptId;
37
+    }
38
+
39
+    @Override
40
+    public String toString() {
41
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
42
+            .append("roleId", getRoleId())
43
+            .append("deptId", getDeptId())
44
+            .toString();
45
+    }
46
+}

+ 45 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/SysRoleMenu.java

@@ -0,0 +1,45 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import org.apache.commons.lang3.builder.ToStringBuilder;
4
+import org.apache.commons.lang3.builder.ToStringStyle;
5
+
6
+/**
7
+ * 角色和菜单关联 sys_role_menu
8
+ *
9
+ * @author ruoyi
10
+ */
11
+public class SysRoleMenu {
12
+    /**
13
+     * 角色ID
14
+     */
15
+    private Long roleId;
16
+
17
+    /**
18
+     * 菜单ID
19
+     */
20
+    private Long menuId;
21
+
22
+    public Long getRoleId() {
23
+        return roleId;
24
+    }
25
+
26
+    public void setRoleId(Long roleId) {
27
+        this.roleId = roleId;
28
+    }
29
+
30
+    public Long getMenuId() {
31
+        return menuId;
32
+    }
33
+
34
+    public void setMenuId(Long menuId) {
35
+        this.menuId = menuId;
36
+    }
37
+
38
+    @Override
39
+    public String toString() {
40
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
41
+                .append("roleId", getRoleId())
42
+                .append("menuId", getMenuId())
43
+                .toString();
44
+    }
45
+}

+ 113 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/SysUserOnline.java

@@ -0,0 +1,113 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+/**
4
+ * 当前在线会话
5
+ * 
6
+ * @author ruoyi
7
+ */
8
+public class SysUserOnline
9
+{
10
+    /** 会话编号 */
11
+    private String tokenId;
12
+
13
+    /** 部门名称 */
14
+    private String deptName;
15
+
16
+    /** 用户名称 */
17
+    private String userName;
18
+
19
+    /** 登录IP地址 */
20
+    private String ipaddr;
21
+
22
+    /** 登录地址 */
23
+    private String loginLocation;
24
+
25
+    /** 浏览器类型 */
26
+    private String browser;
27
+
28
+    /** 操作系统 */
29
+    private String os;
30
+
31
+    /** 登录时间 */
32
+    private Long loginTime;
33
+
34
+    public String getTokenId()
35
+    {
36
+        return tokenId;
37
+    }
38
+
39
+    public void setTokenId(String tokenId)
40
+    {
41
+        this.tokenId = tokenId;
42
+    }
43
+
44
+    public String getDeptName()
45
+    {
46
+        return deptName;
47
+    }
48
+
49
+    public void setDeptName(String deptName)
50
+    {
51
+        this.deptName = deptName;
52
+    }
53
+
54
+    public String getUserName()
55
+    {
56
+        return userName;
57
+    }
58
+
59
+    public void setUserName(String userName)
60
+    {
61
+        this.userName = userName;
62
+    }
63
+
64
+    public String getIpaddr()
65
+    {
66
+        return ipaddr;
67
+    }
68
+
69
+    public void setIpaddr(String ipaddr)
70
+    {
71
+        this.ipaddr = ipaddr;
72
+    }
73
+
74
+    public String getLoginLocation()
75
+    {
76
+        return loginLocation;
77
+    }
78
+
79
+    public void setLoginLocation(String loginLocation)
80
+    {
81
+        this.loginLocation = loginLocation;
82
+    }
83
+
84
+    public String getBrowser()
85
+    {
86
+        return browser;
87
+    }
88
+
89
+    public void setBrowser(String browser)
90
+    {
91
+        this.browser = browser;
92
+    }
93
+
94
+    public String getOs()
95
+    {
96
+        return os;
97
+    }
98
+
99
+    public void setOs(String os)
100
+    {
101
+        this.os = os;
102
+    }
103
+
104
+    public Long getLoginTime()
105
+    {
106
+        return loginTime;
107
+    }
108
+
109
+    public void setLoginTime(Long loginTime)
110
+    {
111
+        this.loginTime = loginTime;
112
+    }
113
+}

+ 45 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/SysUserPost.java

@@ -0,0 +1,45 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import org.apache.commons.lang3.builder.ToStringBuilder;
4
+import org.apache.commons.lang3.builder.ToStringStyle;
5
+
6
+/**
7
+ * 用户和岗位关联 sys_user_post
8
+ *
9
+ * @author ruoyi
10
+ */
11
+public class SysUserPost {
12
+    /**
13
+     * 用户ID
14
+     */
15
+    private Long userId;
16
+
17
+    /**
18
+     * 岗位ID
19
+     */
20
+    private Long postId;
21
+
22
+    public Long getUserId() {
23
+        return userId;
24
+    }
25
+
26
+    public void setUserId(Long userId) {
27
+        this.userId = userId;
28
+    }
29
+
30
+    public Long getPostId() {
31
+        return postId;
32
+    }
33
+
34
+    public void setPostId(Long postId) {
35
+        this.postId = postId;
36
+    }
37
+
38
+    @Override
39
+    public String toString() {
40
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
41
+                .append("userId", getUserId())
42
+                .append("postId", getPostId())
43
+                .toString();
44
+    }
45
+}

+ 46 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/SysUserRole.java

@@ -0,0 +1,46 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import org.apache.commons.lang3.builder.ToStringBuilder;
4
+import org.apache.commons.lang3.builder.ToStringStyle;
5
+
6
+/**
7
+ * 用户和角色关联 sys_user_role
8
+ * 
9
+ * @author ruoyi
10
+ */
11
+public class SysUserRole
12
+{
13
+    /** 用户ID */
14
+    private Long userId;
15
+    
16
+    /** 角色ID */
17
+    private Long roleId;
18
+
19
+    public Long getUserId()
20
+    {
21
+        return userId;
22
+    }
23
+
24
+    public void setUserId(Long userId)
25
+    {
26
+        this.userId = userId;
27
+    }
28
+
29
+    public Long getRoleId()
30
+    {
31
+        return roleId;
32
+    }
33
+
34
+    public void setRoleId(Long roleId)
35
+    {
36
+        this.roleId = roleId;
37
+    }
38
+
39
+    @Override
40
+    public String toString() {
41
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
42
+            .append("userId", getUserId())
43
+            .append("roleId", getRoleId())
44
+            .toString();
45
+    }
46
+}

+ 161 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/SysWorkingDocument.java

@@ -0,0 +1,161 @@
1
+package com.sundot.airport.system.domain;
2
+
3
+import org.apache.commons.lang3.builder.ToStringBuilder;
4
+import org.apache.commons.lang3.builder.ToStringStyle;
5
+import com.sundot.airport.common.annotation.Excel;
6
+import com.sundot.airport.common.core.domain.BaseEntity;
7
+
8
+/**
9
+ * 工作文档对象 sys_working_document
10
+ *
11
+ * @author ruoyi
12
+ * @date 2025-11-18
13
+ */
14
+public class SysWorkingDocument extends BaseEntity {
15
+    private static final long serialVersionUID = 1L;
16
+
17
+    /**
18
+     * 文档ID
19
+     */
20
+    private Long documentId;
21
+
22
+    /**
23
+     * 文档标题
24
+     */
25
+    @Excel(name = "文档标题")
26
+    private String documentTitle;
27
+
28
+    /**
29
+     * 文档最新文件路径
30
+     */
31
+    @Excel(name = "文档最新文件路径")
32
+    private String documentFileName;
33
+
34
+    /**
35
+     * 文档最新文件名称
36
+     */
37
+    @Excel(name = "文档最新文件名称")
38
+    private String documentNewFileName;
39
+
40
+    /**
41
+     * 文档原始文件名称
42
+     */
43
+    @Excel(name = "文档原始文件名称")
44
+    private String documentOriginalFileName;
45
+
46
+    /**
47
+     * 文档地址
48
+     */
49
+    @Excel(name = "文档地址")
50
+    private String documentUrl;
51
+
52
+    /**
53
+     * 文档状态(0正常 1关闭)
54
+     */
55
+    @Excel(name = "文档状态", readConverterExp = "0=正常,1=关闭")
56
+    private String status;
57
+
58
+    /**
59
+     * 创建者ID
60
+     */
61
+    @Excel(name = "创建者ID")
62
+    private Long createByUserId;
63
+
64
+    /**
65
+     * 更新者ID
66
+     */
67
+    @Excel(name = "更新者ID")
68
+    private Long updateByUserId;
69
+
70
+    public void setDocumentId(Long documentId) {
71
+        this.documentId = documentId;
72
+    }
73
+
74
+    public Long getDocumentId() {
75
+        return documentId;
76
+    }
77
+
78
+    public void setDocumentTitle(String documentTitle) {
79
+        this.documentTitle = documentTitle;
80
+    }
81
+
82
+    public String getDocumentTitle() {
83
+        return documentTitle;
84
+    }
85
+
86
+    public void setDocumentFileName(String documentFileName) {
87
+        this.documentFileName = documentFileName;
88
+    }
89
+
90
+    public String getDocumentFileName() {
91
+        return documentFileName;
92
+    }
93
+
94
+    public void setDocumentNewFileName(String documentNewFileName) {
95
+        this.documentNewFileName = documentNewFileName;
96
+    }
97
+
98
+    public String getDocumentNewFileName() {
99
+        return documentNewFileName;
100
+    }
101
+
102
+    public void setDocumentOriginalFileName(String documentOriginalFileName) {
103
+        this.documentOriginalFileName = documentOriginalFileName;
104
+    }
105
+
106
+    public String getDocumentOriginalFileName() {
107
+        return documentOriginalFileName;
108
+    }
109
+
110
+    public void setDocumentUrl(String documentUrl) {
111
+        this.documentUrl = documentUrl;
112
+    }
113
+
114
+    public String getDocumentUrl() {
115
+        return documentUrl;
116
+    }
117
+
118
+    public void setStatus(String status) {
119
+        this.status = status;
120
+    }
121
+
122
+    public String getStatus() {
123
+        return status;
124
+    }
125
+
126
+    public void setCreateByUserId(Long createByUserId) {
127
+        this.createByUserId = createByUserId;
128
+    }
129
+
130
+    public Long getCreateByUserId() {
131
+        return createByUserId;
132
+    }
133
+
134
+    public void setUpdateByUserId(Long updateByUserId) {
135
+        this.updateByUserId = updateByUserId;
136
+    }
137
+
138
+    public Long getUpdateByUserId() {
139
+        return updateByUserId;
140
+    }
141
+
142
+    @Override
143
+    public String toString() {
144
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
145
+                .append("documentId", getDocumentId())
146
+                .append("documentTitle", getDocumentTitle())
147
+                .append("documentFileName", getDocumentFileName())
148
+                .append("documentNewFileName", getDocumentNewFileName())
149
+                .append("documentOriginalFileName", getDocumentOriginalFileName())
150
+                .append("documentUrl", getDocumentUrl())
151
+                .append("status", getStatus())
152
+                .append("createBy", getCreateBy())
153
+                .append("createTime", getCreateTime())
154
+                .append("updateBy", getUpdateBy())
155
+                .append("updateTime", getUpdateTime())
156
+                .append("remark", getRemark())
157
+                .append("createByUserId", getCreateByUserId())
158
+                .append("updateByUserId", getUpdateByUserId())
159
+                .toString();
160
+    }
161
+}

+ 158 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/approval/ApprovalCc.java

@@ -0,0 +1,158 @@
1
+package com.sundot.airport.system.domain.approval;
2
+
3
+import java.util.Date;
4
+
5
+import javax.validation.constraints.NotBlank;
6
+import javax.validation.constraints.NotNull;
7
+import javax.validation.constraints.Size;
8
+
9
+import com.baomidou.mybatisplus.annotation.IdType;
10
+import com.baomidou.mybatisplus.annotation.TableField;
11
+import com.baomidou.mybatisplus.annotation.TableId;
12
+import com.baomidou.mybatisplus.annotation.TableName;
13
+import com.fasterxml.jackson.annotation.JsonFormat;
14
+import com.sundot.airport.common.annotation.Excel;
15
+import com.sundot.airport.common.core.domain.BaseEntity;
16
+
17
+/**
18
+ * 审批抄送对象 approval_cc
19
+ * 
20
+ * @author simon lin
21
+ * @date 2025-09-06
22
+ */
23
+@TableName("approval_cc")
24
+public class ApprovalCc extends BaseEntity
25
+{
26
+    private static final long serialVersionUID = 1L;
27
+
28
+    /** 主键ID */
29
+    @TableId(type = IdType.AUTO)
30
+    private Long id;
31
+
32
+    /** 实例ID */
33
+    @Excel(name = "实例ID")
34
+    @NotNull(message = "实例ID不能为空")
35
+    private Long instanceId;
36
+
37
+    /** 抄送用户ID */
38
+    @Excel(name = "抄送用户ID")
39
+    @NotNull(message = "抄送用户ID不能为空")
40
+    private Long ccUserId;
41
+
42
+    /** 抄送用户姓名 */
43
+    @Excel(name = "抄送用户姓名")
44
+    @NotBlank(message = "抄送用户姓名不能为空")
45
+    @Size(min = 0, max = 50, message = "抄送用户姓名长度不能超过50个字符")
46
+    private String ccUserName;
47
+
48
+    /** 抄送时间 */
49
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
50
+    @Excel(name = "抄送时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
51
+    private Date ccTime;
52
+
53
+    /** 是否已读(0否 1是) */
54
+    @Excel(name = "是否已读", readConverterExp = "0=否,1=是")
55
+    private String isRead;
56
+
57
+    /** 阅读时间 */
58
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
59
+    @Excel(name = "阅读时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
60
+    private Date readTime;
61
+
62
+    /** 审批实例 */
63
+    @TableField(exist = false)
64
+    private ApprovalInstance instance;
65
+
66
+    public void setId(Long id) 
67
+    {
68
+        this.id = id;
69
+    }
70
+
71
+    public Long getId() 
72
+    {
73
+        return id;
74
+    }
75
+
76
+    public void setInstanceId(Long instanceId) 
77
+    {
78
+        this.instanceId = instanceId;
79
+    }
80
+
81
+    public Long getInstanceId() 
82
+    {
83
+        return instanceId;
84
+    }
85
+
86
+    public void setCcUserId(Long ccUserId) 
87
+    {
88
+        this.ccUserId = ccUserId;
89
+    }
90
+
91
+    public Long getCcUserId() 
92
+    {
93
+        return ccUserId;
94
+    }
95
+
96
+    public void setCcUserName(String ccUserName) 
97
+    {
98
+        this.ccUserName = ccUserName;
99
+    }
100
+
101
+    public String getCcUserName() 
102
+    {
103
+        return ccUserName;
104
+    }
105
+
106
+    public void setCcTime(Date ccTime) 
107
+    {
108
+        this.ccTime = ccTime;
109
+    }
110
+
111
+    public Date getCcTime() 
112
+    {
113
+        return ccTime;
114
+    }
115
+
116
+    public void setIsRead(String isRead) 
117
+    {
118
+        this.isRead = isRead;
119
+    }
120
+
121
+    public String getIsRead() 
122
+    {
123
+        return isRead;
124
+    }
125
+
126
+    public void setReadTime(Date readTime) 
127
+    {
128
+        this.readTime = readTime;
129
+    }
130
+
131
+    public Date getReadTime() 
132
+    {
133
+        return readTime;
134
+    }
135
+
136
+    public ApprovalInstance getInstance() 
137
+    {
138
+        return instance;
139
+    }
140
+
141
+    public void setInstance(ApprovalInstance instance) 
142
+    {
143
+        this.instance = instance;
144
+    }
145
+
146
+    @Override
147
+    public String toString() {
148
+        return "ApprovalCc{" +
149
+                "id=" + id +
150
+                ", instanceId=" + instanceId +
151
+                ", ccUserId=" + ccUserId +
152
+                ", ccUserName='" + ccUserName + '\'' +
153
+                ", ccTime=" + ccTime +
154
+                ", isRead='" + isRead + '\'' +
155
+                ", readTime=" + readTime +
156
+                '}';
157
+    }
158
+}

+ 232 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/approval/ApprovalHistory.java

@@ -0,0 +1,232 @@
1
+package com.sundot.airport.system.domain.approval;
2
+
3
+import java.util.Date;
4
+
5
+import javax.validation.constraints.NotBlank;
6
+import javax.validation.constraints.NotNull;
7
+import javax.validation.constraints.Size;
8
+
9
+import com.baomidou.mybatisplus.annotation.IdType;
10
+import com.baomidou.mybatisplus.annotation.TableField;
11
+import com.baomidou.mybatisplus.annotation.TableId;
12
+import com.baomidou.mybatisplus.annotation.TableName;
13
+import com.fasterxml.jackson.annotation.JsonFormat;
14
+import com.sundot.airport.common.annotation.Excel;
15
+import com.sundot.airport.common.core.domain.BaseEntity;
16
+
17
+/**
18
+ * 审批历史对象 approval_history
19
+ * 
20
+ * @author simon lin
21
+ * @date 2025-09-06
22
+ */
23
+@TableName("approval_history")
24
+public class ApprovalHistory extends BaseEntity
25
+{
26
+    private static final long serialVersionUID = 1L;
27
+
28
+    /** 主键ID */
29
+    @TableId(type = IdType.AUTO)
30
+    private Long id;
31
+
32
+    /** 实例ID */
33
+    @Excel(name = "实例ID")
34
+    @NotNull(message = "实例ID不能为空")
35
+    private Long instanceId;
36
+
37
+    /** 任务ID */
38
+    @Excel(name = "任务ID")
39
+    private Long taskId;
40
+
41
+    /** 节点ID */
42
+    @Excel(name = "节点ID")
43
+    private Long nodeId;
44
+
45
+    /** 节点名称 */
46
+    @Excel(name = "节点名称")
47
+    @Size(min = 0, max = 100, message = "节点名称长度不能超过100个字符")
48
+    private String nodeName;
49
+
50
+    /** 操作(SUBMIT:提交,APPROVE:同意,REJECT:驳回,CANCEL:取消,COMPLETE:完成) */
51
+    @Excel(name = "操作")
52
+    @NotBlank(message = "操作不能为空")
53
+    @Size(min = 0, max = 50, message = "操作长度不能超过50个字符")
54
+    private String action;
55
+
56
+    /** 操作人ID */
57
+    @Excel(name = "操作人ID")
58
+    @NotNull(message = "操作人ID不能为空")
59
+    private Long operatorId;
60
+
61
+    /** 操作人姓名 */
62
+    @Excel(name = "操作人姓名")
63
+    @NotBlank(message = "操作人姓名不能为空")
64
+    @Size(min = 0, max = 50, message = "操作人姓名长度不能超过50个字符")
65
+    private String operatorName;
66
+
67
+    /** 操作时间 */
68
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
69
+    @Excel(name = "操作时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
70
+    private Date operationTime;
71
+
72
+    /** 操作意见 */
73
+    @Excel(name = "操作意见")
74
+    private String comment;
75
+
76
+    /** 表单数据 */
77
+    @Excel(name = "表单数据")
78
+    private String formData;
79
+
80
+    /** 审批实例 */
81
+    @TableField(exist = false)
82
+    private ApprovalInstance instance;
83
+
84
+    /** 节点定义 */
85
+    @TableField(exist = false)
86
+    private ApprovalNodeDefinition nodeDefinition;
87
+
88
+    public void setId(Long id) 
89
+    {
90
+        this.id = id;
91
+    }
92
+
93
+    public Long getId() 
94
+    {
95
+        return id;
96
+    }
97
+
98
+    public void setInstanceId(Long instanceId) 
99
+    {
100
+        this.instanceId = instanceId;
101
+    }
102
+
103
+    public Long getInstanceId() 
104
+    {
105
+        return instanceId;
106
+    }
107
+
108
+    public void setTaskId(Long taskId) 
109
+    {
110
+        this.taskId = taskId;
111
+    }
112
+
113
+    public Long getTaskId() 
114
+    {
115
+        return taskId;
116
+    }
117
+
118
+    public void setNodeId(Long nodeId) 
119
+    {
120
+        this.nodeId = nodeId;
121
+    }
122
+
123
+    public Long getNodeId() 
124
+    {
125
+        return nodeId;
126
+    }
127
+
128
+    public void setNodeName(String nodeName) 
129
+    {
130
+        this.nodeName = nodeName;
131
+    }
132
+
133
+    public String getNodeName() 
134
+    {
135
+        return nodeName;
136
+    }
137
+
138
+    public void setAction(String action) 
139
+    {
140
+        this.action = action;
141
+    }
142
+
143
+    public String getAction() 
144
+    {
145
+        return action;
146
+    }
147
+
148
+    public void setOperatorId(Long operatorId) 
149
+    {
150
+        this.operatorId = operatorId;
151
+    }
152
+
153
+    public Long getOperatorId() 
154
+    {
155
+        return operatorId;
156
+    }
157
+
158
+    public void setOperatorName(String operatorName) 
159
+    {
160
+        this.operatorName = operatorName;
161
+    }
162
+
163
+    public String getOperatorName() 
164
+    {
165
+        return operatorName;
166
+    }
167
+
168
+    public void setOperationTime(Date operationTime) 
169
+    {
170
+        this.operationTime = operationTime;
171
+    }
172
+
173
+    public Date getOperationTime() 
174
+    {
175
+        return operationTime;
176
+    }
177
+
178
+    public void setComment(String comment) 
179
+    {
180
+        this.comment = comment;
181
+    }
182
+
183
+    public String getComment() 
184
+    {
185
+        return comment;
186
+    }
187
+
188
+    public void setFormData(String formData) 
189
+    {
190
+        this.formData = formData;
191
+    }
192
+
193
+    public String getFormData() 
194
+    {
195
+        return formData;
196
+    }
197
+
198
+    public ApprovalInstance getInstance() 
199
+    {
200
+        return instance;
201
+    }
202
+
203
+    public void setInstance(ApprovalInstance instance) 
204
+    {
205
+        this.instance = instance;
206
+    }
207
+
208
+    public ApprovalNodeDefinition getNodeDefinition() 
209
+    {
210
+        return nodeDefinition;
211
+    }
212
+
213
+    public void setNodeDefinition(ApprovalNodeDefinition nodeDefinition) 
214
+    {
215
+        this.nodeDefinition = nodeDefinition;
216
+    }
217
+
218
+    @Override
219
+    public String toString() {
220
+        return "ApprovalHistory{" +
221
+                "id=" + id +
222
+                ", instanceId=" + instanceId +
223
+                ", taskId=" + taskId +
224
+                ", nodeId=" + nodeId +
225
+                ", nodeName='" + nodeName + '\'' +
226
+                ", action='" + action + '\'' +
227
+                ", operatorId=" + operatorId +
228
+                ", operatorName='" + operatorName + '\'' +
229
+                ", operationTime=" + operationTime +
230
+                '}';
231
+    }
232
+}

+ 328 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/approval/ApprovalInstance.java

@@ -0,0 +1,328 @@
1
+package com.sundot.airport.system.domain.approval;
2
+
3
+import java.util.Date;
4
+import java.util.List;
5
+
6
+import javax.validation.constraints.NotBlank;
7
+import javax.validation.constraints.NotNull;
8
+import javax.validation.constraints.Size;
9
+
10
+import com.baomidou.mybatisplus.annotation.IdType;
11
+import com.baomidou.mybatisplus.annotation.TableField;
12
+import com.baomidou.mybatisplus.annotation.TableId;
13
+import com.baomidou.mybatisplus.annotation.TableName;
14
+import com.fasterxml.jackson.annotation.JsonFormat;
15
+import com.sundot.airport.common.annotation.Excel;
16
+import com.sundot.airport.common.core.domain.BaseEntity;
17
+
18
+/**
19
+ * 审批实例对象 approval_instance
20
+ * 
21
+ * @author simon lin
22
+ * @date 2025-09-06
23
+ */
24
+@TableName("approval_instance")
25
+public class ApprovalInstance extends BaseEntity
26
+{
27
+    private static final long serialVersionUID = 1L;
28
+
29
+    /** 主键ID */
30
+    @TableId(type = IdType.AUTO)
31
+    private Long id;
32
+
33
+    /** 实例编号 */
34
+    @Excel(name = "实例编号")
35
+    @NotBlank(message = "实例编号不能为空")
36
+    @Size(min = 0, max = 50, message = "实例编号长度不能超过50个字符")
37
+    private String instanceNo;
38
+
39
+    /** 流程定义ID */
40
+    @Excel(name = "流程定义ID")
41
+    @NotNull(message = "流程定义ID不能为空")
42
+    private Long workflowId;
43
+
44
+    /** 审批标题 */
45
+    @Excel(name = "审批标题")
46
+    @NotBlank(message = "审批标题不能为空")
47
+    @Size(min = 0, max = 200, message = "审批标题长度不能超过200个字符")
48
+    private String title;
49
+
50
+    /** 业务类型 */
51
+    @Excel(name = "业务类型")
52
+    @NotBlank(message = "业务类型不能为空")
53
+    @Size(min = 0, max = 50, message = "业务类型长度不能超过50个字符")
54
+    private String businessType;
55
+
56
+    /** 业务ID */
57
+    @Excel(name = "业务ID")
58
+    @NotNull(message = "业务ID不能为空")
59
+    private Long businessId;
60
+
61
+    /** 业务数据(JSON格式) */
62
+    @Excel(name = "业务数据")
63
+    private String businessData;
64
+
65
+    /** 提交人ID */
66
+    @Excel(name = "提交人ID")
67
+    @NotNull(message = "提交人ID不能为空")
68
+    private Long submitterId;
69
+
70
+    /** 提交人姓名 */
71
+    @Excel(name = "提交人姓名")
72
+    @NotBlank(message = "提交人姓名不能为空")
73
+    @Size(min = 0, max = 50, message = "提交人姓名长度不能超过50个字符")
74
+    private String submitterName;
75
+
76
+    /** 提交时间 */
77
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
78
+    @Excel(name = "提交时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
79
+    private Date submitTime;
80
+
81
+    /** 当前节点ID */
82
+    @Excel(name = "当前节点ID")
83
+    private Long currentNodeId;
84
+
85
+    /** 实例状态(RUNNING:运行中,COMPLETED:已完成,REJECTED:已驳回,CANCELLED:已取消) */
86
+    @Excel(name = "实例状态")
87
+    @Size(min = 0, max = 20, message = "实例状态长度不能超过20个字符")
88
+    private String status;
89
+
90
+    /** 完成时间 */
91
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
92
+    @Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
93
+    private Date completionTime;
94
+
95
+    /** 紧急程度(LOW:低,NORMAL:普通,HIGH:高,URGENT:紧急) */
96
+    @Excel(name = "紧急程度")
97
+    @Size(min = 0, max = 20, message = "紧急程度长度不能超过20个字符")
98
+    private String urgentLevel;
99
+
100
+    /** 表单数据 */
101
+    @Excel(name = "表单数据")
102
+    private String formData;
103
+
104
+    /** 任务列表 */
105
+    @TableField(exist = false)
106
+    private List<ApprovalTask> tasks;
107
+
108
+    /** 历史记录 */
109
+    @TableField(exist = false)
110
+    private List<ApprovalHistory> histories;
111
+
112
+    /** 流程定义 */
113
+    @TableField(exist = false)
114
+    private ApprovalWorkflowDefinition workflowDefinition;
115
+
116
+    /** 当前节点定义 */
117
+    @TableField(exist = false)
118
+    private ApprovalNodeDefinition currentNode;
119
+
120
+    public void setId(Long id) 
121
+    {
122
+        this.id = id;
123
+    }
124
+
125
+    public Long getId() 
126
+    {
127
+        return id;
128
+    }
129
+
130
+    public void setInstanceNo(String instanceNo) 
131
+    {
132
+        this.instanceNo = instanceNo;
133
+    }
134
+
135
+    public String getInstanceNo() 
136
+    {
137
+        return instanceNo;
138
+    }
139
+
140
+    public void setWorkflowId(Long workflowId) 
141
+    {
142
+        this.workflowId = workflowId;
143
+    }
144
+
145
+    public Long getWorkflowId() 
146
+    {
147
+        return workflowId;
148
+    }
149
+
150
+    public void setTitle(String title) 
151
+    {
152
+        this.title = title;
153
+    }
154
+
155
+    public String getTitle() 
156
+    {
157
+        return title;
158
+    }
159
+
160
+    public void setBusinessType(String businessType) 
161
+    {
162
+        this.businessType = businessType;
163
+    }
164
+
165
+    public String getBusinessType() 
166
+    {
167
+        return businessType;
168
+    }
169
+
170
+    public void setBusinessId(Long businessId) 
171
+    {
172
+        this.businessId = businessId;
173
+    }
174
+
175
+    public Long getBusinessId() 
176
+    {
177
+        return businessId;
178
+    }
179
+
180
+    public void setBusinessData(String businessData) 
181
+    {
182
+        this.businessData = businessData;
183
+    }
184
+
185
+    public String getBusinessData() 
186
+    {
187
+        return businessData;
188
+    }
189
+
190
+    public void setSubmitterId(Long submitterId) 
191
+    {
192
+        this.submitterId = submitterId;
193
+    }
194
+
195
+    public Long getSubmitterId() 
196
+    {
197
+        return submitterId;
198
+    }
199
+
200
+    public void setSubmitterName(String submitterName) 
201
+    {
202
+        this.submitterName = submitterName;
203
+    }
204
+
205
+    public String getSubmitterName() 
206
+    {
207
+        return submitterName;
208
+    }
209
+
210
+    public void setSubmitTime(Date submitTime) 
211
+    {
212
+        this.submitTime = submitTime;
213
+    }
214
+
215
+    public Date getSubmitTime() 
216
+    {
217
+        return submitTime;
218
+    }
219
+
220
+    public void setCurrentNodeId(Long currentNodeId) 
221
+    {
222
+        this.currentNodeId = currentNodeId;
223
+    }
224
+
225
+    public Long getCurrentNodeId() 
226
+    {
227
+        return currentNodeId;
228
+    }
229
+
230
+    public void setStatus(String status) 
231
+    {
232
+        this.status = status;
233
+    }
234
+
235
+    public String getStatus() 
236
+    {
237
+        return status;
238
+    }
239
+
240
+    public void setCompletionTime(Date completionTime) 
241
+    {
242
+        this.completionTime = completionTime;
243
+    }
244
+
245
+    public Date getCompletionTime() 
246
+    {
247
+        return completionTime;
248
+    }
249
+
250
+    public void setUrgentLevel(String urgentLevel) 
251
+    {
252
+        this.urgentLevel = urgentLevel;
253
+    }
254
+
255
+    public String getUrgentLevel() 
256
+    {
257
+        return urgentLevel;
258
+    }
259
+
260
+    public void setFormData(String formData) 
261
+    {
262
+        this.formData = formData;
263
+    }
264
+
265
+    public String getFormData() 
266
+    {
267
+        return formData;
268
+    }
269
+
270
+    public List<ApprovalTask> getTasks() 
271
+    {
272
+        return tasks;
273
+    }
274
+
275
+    public void setTasks(List<ApprovalTask> tasks) 
276
+    {
277
+        this.tasks = tasks;
278
+    }
279
+
280
+    public List<ApprovalHistory> getHistories() 
281
+    {
282
+        return histories;
283
+    }
284
+
285
+    public void setHistories(List<ApprovalHistory> histories) 
286
+    {
287
+        this.histories = histories;
288
+    }
289
+
290
+    public ApprovalWorkflowDefinition getWorkflowDefinition() 
291
+    {
292
+        return workflowDefinition;
293
+    }
294
+
295
+    public void setWorkflowDefinition(ApprovalWorkflowDefinition workflowDefinition) 
296
+    {
297
+        this.workflowDefinition = workflowDefinition;
298
+    }
299
+
300
+    public ApprovalNodeDefinition getCurrentNode() 
301
+    {
302
+        return currentNode;
303
+    }
304
+
305
+    public void setCurrentNode(ApprovalNodeDefinition currentNode) 
306
+    {
307
+        this.currentNode = currentNode;
308
+    }
309
+
310
+    @Override
311
+    public String toString() {
312
+        return "ApprovalInstance{" +
313
+                "id=" + id +
314
+                ", instanceNo='" + instanceNo + '\'' +
315
+                ", workflowId=" + workflowId +
316
+                ", title='" + title + '\'' +
317
+                ", businessType='" + businessType + '\'' +
318
+                ", businessId=" + businessId +
319
+                ", submitterId=" + submitterId +
320
+                ", submitterName='" + submitterName + '\'' +
321
+                ", submitTime=" + submitTime +
322
+                ", currentNodeId=" + currentNodeId +
323
+                ", status='" + status + '\'' +
324
+                ", completionTime=" + completionTime +
325
+                ", urgentLevel='" + urgentLevel + '\'' +
326
+                '}';
327
+    }
328
+}

+ 219 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/approval/ApprovalNodeDefinition.java

@@ -0,0 +1,219 @@
1
+package com.sundot.airport.system.domain.approval;
2
+
3
+import javax.validation.constraints.NotBlank;
4
+import javax.validation.constraints.NotNull;
5
+import javax.validation.constraints.Size;
6
+
7
+import com.baomidou.mybatisplus.annotation.IdType;
8
+import com.baomidou.mybatisplus.annotation.TableId;
9
+import com.baomidou.mybatisplus.annotation.TableName;
10
+import com.sundot.airport.common.annotation.Excel;
11
+import com.sundot.airport.common.core.domain.BaseEntity;
12
+
13
+/**
14
+ * 审批节点定义对象 approval_node_definition
15
+ * 
16
+ * @author simon lin
17
+ * @date 2025-09-06
18
+ */
19
+@TableName("approval_node_definition")
20
+public class ApprovalNodeDefinition extends BaseEntity
21
+{
22
+    private static final long serialVersionUID = 1L;
23
+
24
+    /** 主键ID */
25
+    @TableId(type = IdType.AUTO)
26
+    private Long id;
27
+
28
+    /** 流程定义ID */
29
+    @Excel(name = "流程定义ID")
30
+    @NotNull(message = "流程定义ID不能为空")
31
+    private Long workflowId;
32
+
33
+    /** 节点代码 */
34
+    @Excel(name = "节点代码")
35
+    @NotBlank(message = "节点代码不能为空")
36
+    @Size(min = 0, max = 50, message = "节点代码长度不能超过50个字符")
37
+    private String nodeCode;
38
+
39
+    /** 节点名称 */
40
+    @Excel(name = "节点名称")
41
+    @NotBlank(message = "节点名称不能为空")
42
+    @Size(min = 0, max = 100, message = "节点名称长度不能超过100个字符")
43
+    private String nodeName;
44
+
45
+    /** 节点类型(START:开始,APPROVE:审批,NOTIFY:通知,END:结束) */
46
+    @Excel(name = "节点类型")
47
+    @NotBlank(message = "节点类型不能为空")
48
+    @Size(min = 0, max = 50, message = "节点类型长度不能超过50个字符")
49
+    private String nodeType;
50
+
51
+    /** 节点顺序 */
52
+    @Excel(name = "节点顺序")
53
+    @NotNull(message = "节点顺序不能为空")
54
+    private Integer sortOrder;
55
+
56
+    /** 审批人类型(USER:指定用户,ROLE:角色,DEPT:部门,GROUP_LEADER:班组长,SECTION_LEADER:科长) */
57
+    @Excel(name = "审批人类型")
58
+    @Size(min = 0, max = 50, message = "审批人类型长度不能超过50个字符")
59
+    private String approverType;
60
+
61
+    /** 审批人值 */
62
+    @Excel(name = "审批人值")
63
+    @Size(min = 0, max = 200, message = "审批人值长度不能超过200个字符")
64
+    private String approverValue;
65
+
66
+    /** 是否可驳回(0否 1是) */
67
+    @Excel(name = "是否可驳回", readConverterExp = "0=否,1=是")
68
+    private String canReject;
69
+
70
+    /** 是否必须审批(0否 1是) */
71
+    @Excel(name = "是否必须审批", readConverterExp = "0=否,1=是")
72
+    private String isRequired;
73
+
74
+    /** 超时小时数 */
75
+    @Excel(name = "超时小时数")
76
+    private Integer timeoutHours;
77
+
78
+    /** 状态(0正常 1停用) */
79
+    @Excel(name = "状态", readConverterExp = "0=正常,1=停用")
80
+    private String status;
81
+
82
+    public void setId(Long id) 
83
+    {
84
+        this.id = id;
85
+    }
86
+
87
+    public Long getId() 
88
+    {
89
+        return id;
90
+    }
91
+
92
+    public void setWorkflowId(Long workflowId) 
93
+    {
94
+        this.workflowId = workflowId;
95
+    }
96
+
97
+    public Long getWorkflowId() 
98
+    {
99
+        return workflowId;
100
+    }
101
+
102
+    public void setNodeCode(String nodeCode) 
103
+    {
104
+        this.nodeCode = nodeCode;
105
+    }
106
+
107
+    public String getNodeCode() 
108
+    {
109
+        return nodeCode;
110
+    }
111
+
112
+    public void setNodeName(String nodeName) 
113
+    {
114
+        this.nodeName = nodeName;
115
+    }
116
+
117
+    public String getNodeName() 
118
+    {
119
+        return nodeName;
120
+    }
121
+
122
+    public void setNodeType(String nodeType) 
123
+    {
124
+        this.nodeType = nodeType;
125
+    }
126
+
127
+    public String getNodeType() 
128
+    {
129
+        return nodeType;
130
+    }
131
+
132
+    public void setSortOrder(Integer sortOrder) 
133
+    {
134
+        this.sortOrder = sortOrder;
135
+    }
136
+
137
+    public Integer getSortOrder() 
138
+    {
139
+        return sortOrder;
140
+    }
141
+
142
+    public void setApproverType(String approverType) 
143
+    {
144
+        this.approverType = approverType;
145
+    }
146
+
147
+    public String getApproverType() 
148
+    {
149
+        return approverType;
150
+    }
151
+
152
+    public void setApproverValue(String approverValue) 
153
+    {
154
+        this.approverValue = approverValue;
155
+    }
156
+
157
+    public String getApproverValue() 
158
+    {
159
+        return approverValue;
160
+    }
161
+
162
+    public void setCanReject(String canReject) 
163
+    {
164
+        this.canReject = canReject;
165
+    }
166
+
167
+    public String getCanReject() 
168
+    {
169
+        return canReject;
170
+    }
171
+
172
+    public void setIsRequired(String isRequired) 
173
+    {
174
+        this.isRequired = isRequired;
175
+    }
176
+
177
+    public String getIsRequired() 
178
+    {
179
+        return isRequired;
180
+    }
181
+
182
+    public void setTimeoutHours(Integer timeoutHours) 
183
+    {
184
+        this.timeoutHours = timeoutHours;
185
+    }
186
+
187
+    public Integer getTimeoutHours() 
188
+    {
189
+        return timeoutHours;
190
+    }
191
+
192
+    public void setStatus(String status) 
193
+    {
194
+        this.status = status;
195
+    }
196
+
197
+    public String getStatus() 
198
+    {
199
+        return status;
200
+    }
201
+
202
+    @Override
203
+    public String toString() {
204
+        return "ApprovalNodeDefinition{" +
205
+                "id=" + id +
206
+                ", workflowId=" + workflowId +
207
+                ", nodeCode='" + nodeCode + '\'' +
208
+                ", nodeName='" + nodeName + '\'' +
209
+                ", nodeType='" + nodeType + '\'' +
210
+                ", sortOrder=" + sortOrder +
211
+                ", approverType='" + approverType + '\'' +
212
+                ", approverValue='" + approverValue + '\'' +
213
+                ", canReject='" + canReject + '\'' +
214
+                ", isRequired='" + isRequired + '\'' +
215
+                ", timeoutHours=" + timeoutHours +
216
+                ", status='" + status + '\'' +
217
+                '}';
218
+    }
219
+}

+ 282 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/approval/ApprovalTask.java

@@ -0,0 +1,282 @@
1
+package com.sundot.airport.system.domain.approval;
2
+
3
+import java.util.Date;
4
+
5
+import javax.validation.constraints.NotBlank;
6
+import javax.validation.constraints.NotNull;
7
+import javax.validation.constraints.Size;
8
+
9
+import com.baomidou.mybatisplus.annotation.IdType;
10
+import com.baomidou.mybatisplus.annotation.TableField;
11
+import com.baomidou.mybatisplus.annotation.TableId;
12
+import com.baomidou.mybatisplus.annotation.TableName;
13
+import com.fasterxml.jackson.annotation.JsonFormat;
14
+import com.sundot.airport.common.annotation.Excel;
15
+import com.sundot.airport.common.core.domain.BaseEntity;
16
+
17
+/**
18
+ * 审批任务对象 approval_task
19
+ * 
20
+ * @author simon lin
21
+ * @date 2025-09-06
22
+ */
23
+@TableName("approval_task")
24
+public class ApprovalTask extends BaseEntity
25
+{
26
+    private static final long serialVersionUID = 1L;
27
+
28
+    /** 主键ID */
29
+    @TableId(type = IdType.AUTO)
30
+    private Long id;
31
+
32
+    /** 任务编号 */
33
+    @Excel(name = "任务编号")
34
+    @NotBlank(message = "任务编号不能为空")
35
+    @Size(min = 0, max = 50, message = "任务编号长度不能超过50个字符")
36
+    private String taskNo;
37
+
38
+    /** 实例ID */
39
+    @Excel(name = "实例ID")
40
+    @NotNull(message = "实例ID不能为空")
41
+    private Long instanceId;
42
+
43
+    /** 节点ID */
44
+    @Excel(name = "节点ID")
45
+    @NotNull(message = "节点ID不能为空")
46
+    private Long nodeId;
47
+
48
+    /** 任务名称 */
49
+    @Excel(name = "任务名称")
50
+    @NotBlank(message = "任务名称不能为空")
51
+    @Size(min = 0, max = 100, message = "任务名称长度不能超过100个字符")
52
+    private String taskName;
53
+
54
+    /** 处理人ID */
55
+    @Excel(name = "处理人ID")
56
+    @NotNull(message = "处理人ID不能为空")
57
+    private Long assigneeId;
58
+
59
+    /** 处理人姓名 */
60
+    @Excel(name = "处理人姓名")
61
+    @NotBlank(message = "处理人姓名不能为空")
62
+    @Size(min = 0, max = 50, message = "处理人姓名长度不能超过50个字符")
63
+    private String assigneeName;
64
+
65
+    /** 分配时间 */
66
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
67
+    @Excel(name = "分配时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
68
+    private Date assignTime;
69
+
70
+    /** 任务状态(PENDING:待处理,APPROVED:已同意,REJECTED:已驳回,CANCELLED:已取消) */
71
+    @Excel(name = "任务状态")
72
+    @Size(min = 0, max = 20, message = "任务状态长度不能超过20个字符")
73
+    private String status;
74
+
75
+    /** 完成时间 */
76
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
77
+    @Excel(name = "完成时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
78
+    private Date completeTime;
79
+
80
+    /** 审批意见 */
81
+    @Excel(name = "审批意见")
82
+    private String comment;
83
+
84
+    /** 表单数据 */
85
+    @Excel(name = "表单数据")
86
+    private String formData;
87
+
88
+    /** 超时时间 */
89
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
90
+    @Excel(name = "超时时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
91
+    private Date timeoutTime;
92
+
93
+    /** 是否超时(0否 1是) */
94
+    @Excel(name = "是否超时", readConverterExp = "0=否,1=是")
95
+    private String isTimeout;
96
+
97
+    /** 审批实例 */
98
+    @TableField(exist = false)
99
+    private ApprovalInstance instance;
100
+
101
+    /** 节点定义 */
102
+    @TableField(exist = false)
103
+    private ApprovalNodeDefinition nodeDefinition;
104
+
105
+    public void setId(Long id) 
106
+    {
107
+        this.id = id;
108
+    }
109
+
110
+    public Long getId() 
111
+    {
112
+        return id;
113
+    }
114
+
115
+    public void setTaskNo(String taskNo) 
116
+    {
117
+        this.taskNo = taskNo;
118
+    }
119
+
120
+    public String getTaskNo() 
121
+    {
122
+        return taskNo;
123
+    }
124
+
125
+    public void setInstanceId(Long instanceId) 
126
+    {
127
+        this.instanceId = instanceId;
128
+    }
129
+
130
+    public Long getInstanceId() 
131
+    {
132
+        return instanceId;
133
+    }
134
+
135
+    public void setNodeId(Long nodeId) 
136
+    {
137
+        this.nodeId = nodeId;
138
+    }
139
+
140
+    public Long getNodeId() 
141
+    {
142
+        return nodeId;
143
+    }
144
+
145
+    public void setTaskName(String taskName) 
146
+    {
147
+        this.taskName = taskName;
148
+    }
149
+
150
+    public String getTaskName() 
151
+    {
152
+        return taskName;
153
+    }
154
+
155
+    public void setAssigneeId(Long assigneeId) 
156
+    {
157
+        this.assigneeId = assigneeId;
158
+    }
159
+
160
+    public Long getAssigneeId() 
161
+    {
162
+        return assigneeId;
163
+    }
164
+
165
+    public void setAssigneeName(String assigneeName) 
166
+    {
167
+        this.assigneeName = assigneeName;
168
+    }
169
+
170
+    public String getAssigneeName() 
171
+    {
172
+        return assigneeName;
173
+    }
174
+
175
+    public void setAssignTime(Date assignTime) 
176
+    {
177
+        this.assignTime = assignTime;
178
+    }
179
+
180
+    public Date getAssignTime() 
181
+    {
182
+        return assignTime;
183
+    }
184
+
185
+    public void setStatus(String status) 
186
+    {
187
+        this.status = status;
188
+    }
189
+
190
+    public String getStatus() 
191
+    {
192
+        return status;
193
+    }
194
+
195
+    public void setCompleteTime(Date completeTime) 
196
+    {
197
+        this.completeTime = completeTime;
198
+    }
199
+
200
+    public Date getCompleteTime() 
201
+    {
202
+        return completeTime;
203
+    }
204
+
205
+    public void setComment(String comment) 
206
+    {
207
+        this.comment = comment;
208
+    }
209
+
210
+    public String getComment() 
211
+    {
212
+        return comment;
213
+    }
214
+
215
+    public void setFormData(String formData) 
216
+    {
217
+        this.formData = formData;
218
+    }
219
+
220
+    public String getFormData() 
221
+    {
222
+        return formData;
223
+    }
224
+
225
+    public void setTimeoutTime(Date timeoutTime) 
226
+    {
227
+        this.timeoutTime = timeoutTime;
228
+    }
229
+
230
+    public Date getTimeoutTime() 
231
+    {
232
+        return timeoutTime;
233
+    }
234
+
235
+    public void setIsTimeout(String isTimeout) 
236
+    {
237
+        this.isTimeout = isTimeout;
238
+    }
239
+
240
+    public String getIsTimeout() 
241
+    {
242
+        return isTimeout;
243
+    }
244
+
245
+    public ApprovalInstance getInstance() 
246
+    {
247
+        return instance;
248
+    }
249
+
250
+    public void setInstance(ApprovalInstance instance) 
251
+    {
252
+        this.instance = instance;
253
+    }
254
+
255
+    public ApprovalNodeDefinition getNodeDefinition() 
256
+    {
257
+        return nodeDefinition;
258
+    }
259
+
260
+    public void setNodeDefinition(ApprovalNodeDefinition nodeDefinition) 
261
+    {
262
+        this.nodeDefinition = nodeDefinition;
263
+    }
264
+
265
+    @Override
266
+    public String toString() {
267
+        return "ApprovalTask{" +
268
+                "id=" + id +
269
+                ", taskNo='" + taskNo + '\'' +
270
+                ", instanceId=" + instanceId +
271
+                ", nodeId=" + nodeId +
272
+                ", taskName='" + taskName + '\'' +
273
+                ", assigneeId=" + assigneeId +
274
+                ", assigneeName='" + assigneeName + '\'' +
275
+                ", assignTime=" + assignTime +
276
+                ", status='" + status + '\'' +
277
+                ", completeTime=" + completeTime +
278
+                ", timeoutTime=" + timeoutTime +
279
+                ", isTimeout='" + isTimeout + '\'' +
280
+                '}';
281
+    }
282
+}

+ 142 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/approval/ApprovalWorkflowDefinition.java

@@ -0,0 +1,142 @@
1
+package com.sundot.airport.system.domain.approval;
2
+
3
+import java.util.List;
4
+
5
+import javax.validation.constraints.NotBlank;
6
+import javax.validation.constraints.Size;
7
+
8
+import com.baomidou.mybatisplus.annotation.IdType;
9
+import com.baomidou.mybatisplus.annotation.TableField;
10
+import com.baomidou.mybatisplus.annotation.TableId;
11
+import com.baomidou.mybatisplus.annotation.TableName;
12
+import com.sundot.airport.common.annotation.Excel;
13
+import com.sundot.airport.common.core.domain.BaseEntity;
14
+
15
+/**
16
+ * 审批流程定义对象 approval_workflow_definition
17
+ * 
18
+ * @author simon lin
19
+ * @date 2025-09-06
20
+ */
21
+@TableName("approval_workflow_definition")
22
+public class ApprovalWorkflowDefinition extends BaseEntity
23
+{
24
+    private static final long serialVersionUID = 1L;
25
+
26
+    /** 主键ID */
27
+    @TableId(type = IdType.AUTO)
28
+    private Long id;
29
+
30
+    /** 流程代码 */
31
+    @Excel(name = "流程代码")
32
+    @NotBlank(message = "流程代码不能为空")
33
+    @Size(min = 0, max = 50, message = "流程代码长度不能超过50个字符")
34
+    private String workflowCode;
35
+
36
+    /** 流程名称 */
37
+    @Excel(name = "流程名称")
38
+    @NotBlank(message = "流程名称不能为空")
39
+    @Size(min = 0, max = 100, message = "流程名称长度不能超过100个字符")
40
+    private String workflowName;
41
+
42
+    /** 流程类型(PERSONAL:个人级别,SECTION:科级,GROUP:班组级,SEIZURE_REPORT:查获上报) */
43
+    @Excel(name = "流程类型")
44
+    @NotBlank(message = "流程类型不能为空")
45
+    @Size(min = 0, max = 50, message = "流程类型长度不能超过50个字符")
46
+    private String workflowType;
47
+
48
+    /** 流程描述 */
49
+    @Excel(name = "流程描述")
50
+    @Size(min = 0, max = 500, message = "流程描述长度不能超过500个字符")
51
+    private String description;
52
+
53
+    /** 状态(0正常 1停用) */
54
+    @Excel(name = "状态", readConverterExp = "0=正常,1=停用")
55
+    private String status;
56
+
57
+    /** 节点定义列表 */
58
+    @TableField(exist = false)
59
+    private List<ApprovalNodeDefinition> nodes;
60
+
61
+    public void setId(Long id) 
62
+    {
63
+        this.id = id;
64
+    }
65
+
66
+    public Long getId() 
67
+    {
68
+        return id;
69
+    }
70
+
71
+    public void setWorkflowCode(String workflowCode) 
72
+    {
73
+        this.workflowCode = workflowCode;
74
+    }
75
+
76
+    public String getWorkflowCode() 
77
+    {
78
+        return workflowCode;
79
+    }
80
+
81
+    public void setWorkflowName(String workflowName) 
82
+    {
83
+        this.workflowName = workflowName;
84
+    }
85
+
86
+    public String getWorkflowName() 
87
+    {
88
+        return workflowName;
89
+    }
90
+
91
+    public void setWorkflowType(String workflowType) 
92
+    {
93
+        this.workflowType = workflowType;
94
+    }
95
+
96
+    public String getWorkflowType() 
97
+    {
98
+        return workflowType;
99
+    }
100
+
101
+    public void setDescription(String description) 
102
+    {
103
+        this.description = description;
104
+    }
105
+
106
+    public String getDescription() 
107
+    {
108
+        return description;
109
+    }
110
+
111
+    public void setStatus(String status) 
112
+    {
113
+        this.status = status;
114
+    }
115
+
116
+    public String getStatus() 
117
+    {
118
+        return status;
119
+    }
120
+
121
+    public List<ApprovalNodeDefinition> getNodes() 
122
+    {
123
+        return nodes;
124
+    }
125
+
126
+    public void setNodes(List<ApprovalNodeDefinition> nodes) 
127
+    {
128
+        this.nodes = nodes;
129
+    }
130
+
131
+    @Override
132
+    public String toString() {
133
+        return "ApprovalWorkflowDefinition{" +
134
+                "id=" + id +
135
+                ", workflowCode='" + workflowCode + '\'' +
136
+                ", workflowName='" + workflowName + '\'' +
137
+                ", workflowType='" + workflowType + '\'' +
138
+                ", description='" + description + '\'' +
139
+                ", status='" + status + '\'' +
140
+                '}';
141
+    }
142
+}

+ 136 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/approval/constants/ApprovalConstants.java

@@ -0,0 +1,136 @@
1
+package com.sundot.airport.system.domain.approval.constants;
2
+
3
+/**
4
+ * 审批流程常量
5
+ * 
6
+ * @author simon lin
7
+ * @date 2025-09-06
8
+ */
9
+public class ApprovalConstants
10
+{
11
+    /** 流程状态 - 运行中 */
12
+    public static final String INSTANCE_STATUS_RUNNING = "RUNNING";
13
+    
14
+    /** 流程状态 - 已完成 */
15
+    public static final String INSTANCE_STATUS_COMPLETED = "COMPLETED";
16
+    
17
+    /** 流程状态 - 已驳回 */
18
+    public static final String INSTANCE_STATUS_REJECTED = "REJECTED";
19
+    
20
+    /** 流程状态 - 已取消 */
21
+    public static final String INSTANCE_STATUS_CANCELLED = "CANCELLED";
22
+    
23
+    /** 任务状态 - 待处理 */
24
+    public static final String TASK_STATUS_PENDING = "PENDING";
25
+    
26
+    /** 任务状态 - 已同意 */
27
+    public static final String TASK_STATUS_APPROVED = "APPROVED";
28
+    
29
+    /** 任务状态 - 已驳回 */
30
+    public static final String TASK_STATUS_REJECTED = "REJECTED";
31
+    
32
+    /** 任务状态 - 已取消 */
33
+    public static final String TASK_STATUS_CANCELLED = "CANCELLED";
34
+    
35
+    /** 节点类型 - 开始 */
36
+    public static final String NODE_TYPE_START = "START";
37
+    
38
+    /** 节点类型 - 审批 */
39
+    public static final String NODE_TYPE_APPROVE = "APPROVE";
40
+    
41
+    /** 节点类型 - 通知 */
42
+    public static final String NODE_TYPE_NOTIFY = "NOTIFY";
43
+    
44
+    /** 节点类型 - 结束 */
45
+    public static final String NODE_TYPE_END = "END";
46
+    
47
+    /** 审批人类型 - 指定用户 */
48
+    public static final String APPROVER_TYPE_USER = "USER";
49
+    
50
+    /** 审批人类型 - 角色 */
51
+    public static final String APPROVER_TYPE_ROLE = "ROLE";
52
+    
53
+    /** 审批人类型 - 部门 */
54
+    public static final String APPROVER_TYPE_DEPT = "DEPT";
55
+    
56
+    /** 审批人类型 - 班组长 */
57
+    public static final String APPROVER_TYPE_GROUP_LEADER = "GROUP_LEADER";
58
+    
59
+    /** 审批人类型 - 科长 */
60
+    public static final String APPROVER_TYPE_SECTION_LEADER = "SECTION_LEADER";
61
+    
62
+    /** 操作类型 - 提交 */
63
+    public static final String ACTION_SUBMIT = "SUBMIT";
64
+    
65
+    /** 操作类型 - 同意 */
66
+    public static final String ACTION_APPROVE = "APPROVE";
67
+    
68
+    /** 操作类型 - 驳回 */
69
+    public static final String ACTION_REJECT = "REJECT";
70
+    
71
+    /** 操作类型 - 取消 */
72
+    public static final String ACTION_CANCEL = "CANCEL";
73
+    
74
+    /** 操作类型 - 完成 */
75
+    public static final String ACTION_COMPLETE = "COMPLETE";
76
+    
77
+    /** 流程类型 - 个人级别 */
78
+    public static final String WORKFLOW_TYPE_PERSONAL = "PERSONAL";
79
+    
80
+    /** 流程类型 - 科级 */
81
+    public static final String WORKFLOW_TYPE_SECTION = "SECTION";
82
+    
83
+    /** 流程类型 - 班组级 */
84
+    public static final String WORKFLOW_TYPE_GROUP = "GROUP";
85
+    
86
+    /** 流程类型 - 查获上报 */
87
+    public static final String WORKFLOW_TYPE_SEIZURE_REPORT = "SEIZURE_REPORT";
88
+    
89
+    /** 流程代码 - 个人级别 */
90
+    public static final String WORKFLOW_CODE_PERSONAL_LEVEL = "PERSONAL_LEVEL";
91
+    
92
+    /** 流程代码 - 科级 */
93
+    public static final String WORKFLOW_CODE_SECTION_LEVEL = "SECTION_LEVEL";
94
+    
95
+    /** 流程代码 - 班组级 */
96
+    public static final String WORKFLOW_CODE_GROUP_LEVEL = "GROUP_LEVEL";
97
+    
98
+    /** 流程代码 - 查获上报(安检员) */
99
+    public static final String WORKFLOW_CODE_SEIZURE_REPORT_STAFF = "SEIZURE_REPORT_STAFF";
100
+    
101
+    /** 流程代码 - 查获上报(班组长) */
102
+    public static final String WORKFLOW_CODE_SEIZURE_REPORT_LEADER = "SEIZURE_REPORT_LEADER";
103
+    
104
+    /** 紧急程度 - 低 */
105
+    public static final String URGENT_LEVEL_LOW = "LOW";
106
+    
107
+    /** 紧急程度 - 普通 */
108
+    public static final String URGENT_LEVEL_NORMAL = "NORMAL";
109
+    
110
+    /** 紧急程度 - 高 */
111
+    public static final String URGENT_LEVEL_HIGH = "HIGH";
112
+    
113
+    /** 紧急程度 - 紧急 */
114
+    public static final String URGENT_LEVEL_URGENT = "URGENT";
115
+    
116
+    /** 角色 - 班组长 */
117
+    public static final String ROLE_GROUP_LEADER = "group_leader";
118
+    
119
+    /** 角色 - 科长 */
120
+    public static final String ROLE_SECTION_LEADER = "section_leader";
121
+    
122
+    /** 角色 - 质检员 */
123
+    public static final String ROLE_QUALITY_INSPECTOR = "quality_inspector";
124
+    
125
+    /** 状态 - 正常 */
126
+    public static final String STATUS_NORMAL = "0";
127
+    
128
+    /** 状态 - 停用 */
129
+    public static final String STATUS_DISABLE = "1";
130
+    
131
+    /** 删除标志 - 存在 */
132
+    public static final String DEL_FLAG_NORMAL = "0";
133
+    
134
+    /** 删除标志 - 删除 */
135
+    public static final String DEL_FLAG_DELETE = "2";
136
+}

+ 188 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/approval/dto/ApprovalCcDetailDTO.java

@@ -0,0 +1,188 @@
1
+package com.sundot.airport.system.domain.approval.dto;
2
+
3
+import java.util.Date;
4
+import java.util.List;
5
+
6
+import com.fasterxml.jackson.annotation.JsonFormat;
7
+
8
+/**
9
+ * 审批抄送详情DTO
10
+ * 
11
+ * @author simon lin
12
+ * @date 2025-09-11
13
+ */
14
+public class ApprovalCcDetailDTO
15
+{
16
+    /** 抄送ID */
17
+    private Long ccId;
18
+    
19
+    /** 实例ID */
20
+    private Long instanceId;
21
+    
22
+    /** 抄送时间 */
23
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
24
+    private Date ccTime;
25
+    
26
+    /** 是否已读 */
27
+    private String isRead;
28
+    
29
+    /** 阅读时间 */
30
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
31
+    private Date readTime;
32
+    
33
+    /** 审批实例标题 */
34
+    private String title;
35
+    
36
+    /** 完成时间 */
37
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
38
+    private Date completionTime;
39
+    
40
+    /** 业务ID */
41
+    private Long businessId;
42
+    
43
+    /** 业务类型 */
44
+    private String businessType;
45
+    
46
+    /** 历史记录列表 */
47
+    private List<ApprovalHistoryDetailDTO> historyList;
48
+    
49
+    /** 表单数据 */
50
+    private String formData;
51
+    
52
+    /** 历史记录详情内部类 */
53
+    public static class ApprovalHistoryDetailDTO
54
+    {
55
+        /** 节点名称 */
56
+        private String nodeName;
57
+        
58
+        /** 操作人姓名 */
59
+        private String operatorName;
60
+        
61
+        /** 操作时间 */
62
+        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
63
+        private Date operationTime;
64
+        
65
+        /** 操作意见 */
66
+        private String comment;
67
+
68
+        public String getNodeName() {
69
+            return nodeName;
70
+        }
71
+
72
+        public void setNodeName(String nodeName) {
73
+            this.nodeName = nodeName;
74
+        }
75
+
76
+        public String getOperatorName() {
77
+            return operatorName;
78
+        }
79
+
80
+        public void setOperatorName(String operatorName) {
81
+            this.operatorName = operatorName;
82
+        }
83
+
84
+        public Date getOperationTime() {
85
+            return operationTime;
86
+        }
87
+
88
+        public void setOperationTime(Date operationTime) {
89
+            this.operationTime = operationTime;
90
+        }
91
+
92
+        public String getComment() {
93
+            return comment;
94
+        }
95
+
96
+        public void setComment(String comment) {
97
+            this.comment = comment;
98
+        }
99
+    }
100
+
101
+    public Long getCcId() {
102
+        return ccId;
103
+    }
104
+
105
+    public void setCcId(Long ccId) {
106
+        this.ccId = ccId;
107
+    }
108
+
109
+    public Long getInstanceId() {
110
+        return instanceId;
111
+    }
112
+
113
+    public void setInstanceId(Long instanceId) {
114
+        this.instanceId = instanceId;
115
+    }
116
+
117
+    public Date getCcTime() {
118
+        return ccTime;
119
+    }
120
+
121
+    public void setCcTime(Date ccTime) {
122
+        this.ccTime = ccTime;
123
+    }
124
+
125
+    public String getIsRead() {
126
+        return isRead;
127
+    }
128
+
129
+    public void setIsRead(String isRead) {
130
+        this.isRead = isRead;
131
+    }
132
+
133
+    public Date getReadTime() {
134
+        return readTime;
135
+    }
136
+
137
+    public void setReadTime(Date readTime) {
138
+        this.readTime = readTime;
139
+    }
140
+
141
+    public String getTitle() {
142
+        return title;
143
+    }
144
+
145
+    public void setTitle(String title) {
146
+        this.title = title;
147
+    }
148
+
149
+    public Date getCompletionTime() {
150
+        return completionTime;
151
+    }
152
+
153
+    public void setCompletionTime(Date completionTime) {
154
+        this.completionTime = completionTime;
155
+    }
156
+
157
+    public Long getBusinessId() {
158
+        return businessId;
159
+    }
160
+
161
+    public void setBusinessId(Long businessId) {
162
+        this.businessId = businessId;
163
+    }
164
+
165
+    public String getBusinessType() {
166
+        return businessType;
167
+    }
168
+
169
+    public void setBusinessType(String businessType) {
170
+        this.businessType = businessType;
171
+    }
172
+
173
+    public List<ApprovalHistoryDetailDTO> getHistoryList() {
174
+        return historyList;
175
+    }
176
+
177
+    public void setHistoryList(List<ApprovalHistoryDetailDTO> historyList) {
178
+        this.historyList = historyList;
179
+    }
180
+
181
+    public String getFormData() {
182
+        return formData;
183
+    }
184
+
185
+    public void setFormData(String formData) {
186
+        this.formData = formData;
187
+    }
188
+}

+ 19 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/portrait/AdministrativePenaltyStats.java

@@ -0,0 +1,19 @@
1
+package com.sundot.airport.system.domain.portrait;
2
+
3
+import lombok.Data;
4
+
5
+/**
6
+ * 行政类处罚情况统计
7
+ * 用于表示行政类处罚情况的统计信息,包括受过行政处分的人数、总人数和占比
8
+ */
9
+@Data
10
+public class AdministrativePenaltyStats {
11
+    /** 受过行政处分的人数 */
12
+    private Integer penalizedCount;
13
+    
14
+    /** 总人数 */
15
+    private Integer totalCount;
16
+    
17
+    /** 受过行政处分的比例(0-1之间的小数) */
18
+    private Double penaltyPercentage;
19
+}

+ 19 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/portrait/AgeStats.java

@@ -0,0 +1,19 @@
1
+package com.sundot.airport.system.domain.portrait;
2
+
3
+import lombok.Data;
4
+
5
+/**
6
+ * 年龄统计信息
7
+ * 用于表示组织的年龄统计信息,包括最高年龄、最低年龄和平均年龄
8
+ */
9
+@Data
10
+public class AgeStats {
11
+    /** 最高年龄 */
12
+    private Integer maxAge;
13
+    
14
+    /** 最低年龄 */
15
+    private Integer minAge;
16
+    
17
+    /** 平均年龄 */
18
+    private Double averageAge;
19
+}

+ 31 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/portrait/EducationStats.java

@@ -0,0 +1,31 @@
1
+package com.sundot.airport.system.domain.portrait;
2
+
3
+import lombok.Data;
4
+
5
+/**
6
+ * 学历统计信息
7
+ * 用于表示学历分布情况的统计信息,包括各学历层次人数和总人数
8
+ */
9
+@Data
10
+public class EducationStats {
11
+    /** 硕士人数 */
12
+    private Integer masterCount;
13
+    
14
+    /** 本科人数 */
15
+    private Integer bachelorCount;
16
+    
17
+    /** 专科人数 */
18
+    private Integer collegeCount;
19
+
20
+    /** 高中人数 */
21
+    private Integer highSchoolCount;
22
+
23
+    /** 中学人数 */
24
+    private Integer middleSchoolCount;
25
+
26
+    /** 小学人数 */
27
+    private Integer primarySchoolCount;
28
+    
29
+    /** 总人数 */
30
+    private Integer totalCount;
31
+}

+ 135 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/portrait/IndicatorResult.java

@@ -0,0 +1,135 @@
1
+package com.sundot.airport.system.domain.portrait;
2
+
3
+import com.sundot.airport.common.domain.portrait.BaseModuleIndicatorResult;
4
+import io.swagger.annotations.ApiModelProperty;
5
+import lombok.Data;
6
+
7
+import java.util.List;
8
+
9
+/**
10
+ * 系统模块指标结果类
11
+ * 用于封装用户画像的各种指标结果
12
+ */
13
+@Data
14
+public class IndicatorResult extends BaseModuleIndicatorResult {
15
+    // 资质等级
16
+    /** 个人资质等级 */
17
+    @ApiModelProperty("个人资质等级")
18
+    private String qualificationLevel;
19
+    
20
+    /** 组织资质等级统计列表 */
21
+    @ApiModelProperty("组织资质等级统计列表")
22
+    private List<QualificationStats> qualificationLevelStats;
23
+    
24
+    // 可上岗岗位
25
+    /** 个人可上岗岗位列表 */
26
+    @ApiModelProperty("个人可上岗岗位列表")
27
+    private List<PositionInfo> availablePositions;
28
+    
29
+    /** 组织岗位胜任统计列表 */
30
+    @ApiModelProperty("组织岗位胜任统计列表")
31
+    private List<PositionCompetencyStats> positionCompetencyStats;
32
+    
33
+    // 政治面貌
34
+    /** 个人政治面貌 */
35
+    @ApiModelProperty("个人政治面貌")
36
+    private String politicalStatus;
37
+    
38
+    /** 组织政治面貌统计列表 */
39
+    @ApiModelProperty("组织政治面貌统计列表")
40
+    private List<PoliticalStatusStats> politicalStatusStats;
41
+    
42
+    // 年龄
43
+    /** 个人年龄 */
44
+    @ApiModelProperty("个人年龄")
45
+    private Integer age;
46
+    
47
+    /** 组织年龄统计 */
48
+    @ApiModelProperty("组织年龄统计")
49
+    private AgeStats ageStats;
50
+    
51
+    // 身体健康状况
52
+    /** 个人是否身体健康 */
53
+    @ApiModelProperty("个人是否身体健康")
54
+    private String isHealthy;
55
+    
56
+    /** 组织身体健康状况统计 */
57
+    @ApiModelProperty("组织身体健康状况统计")
58
+    private PhysicalHealthStats physicalHealthStats;
59
+    
60
+    // 政审通过情况
61
+    /** 个人是否通过政审 */
62
+    @ApiModelProperty("个人是否通过政审")
63
+    private String isPoliticalReviewPassed;
64
+    
65
+    /** 组织政审通过情况统计 */
66
+    @ApiModelProperty("组织政审通过情况统计")
67
+    private PoliticalReviewStats politicalReviewStats;
68
+    
69
+    // 行政类处罚情况
70
+    /** 个人是否有行政类处罚 */
71
+    @ApiModelProperty("个人是否有行政类处罚")
72
+    private String hasAdministrativePenalty;
73
+    
74
+    /** 组织行政类处罚情况统计 */
75
+    @ApiModelProperty("组织行政类处罚情况统计")
76
+    private AdministrativePenaltyStats administrativePenaltyStats;
77
+    
78
+    // 学历情况
79
+    /** 个人学历 */
80
+    @ApiModelProperty("个人学历")
81
+    private String education;
82
+    
83
+    /** 组织学历统计 */
84
+    @ApiModelProperty("组织学历统计")
85
+    private EducationStats educationStats;
86
+    
87
+    // 工作奖励
88
+    /** 个人工作奖励统计 */
89
+    @ApiModelProperty("个人工作奖励统计")
90
+    private Integer workRewards;
91
+    
92
+    /** 组织工作奖励统计 */
93
+    @ApiModelProperty("组织工作奖励统计")
94
+    private RewardPenaltyStats workRewardsStats;
95
+    
96
+    // 工作处罚
97
+    /** 个人工作处罚统计 */
98
+    @ApiModelProperty("个人工作处罚统计")
99
+    private Integer workPenalties;
100
+    
101
+    /** 组织工作处罚统计 */
102
+    @ApiModelProperty("组织工作处罚统计")
103
+    private RewardPenaltyStats workPenaltiesStats;
104
+    
105
+    // 工作年限
106
+    /** 个人工作年限统计 */
107
+    @ApiModelProperty("个人工作年限统计")
108
+    private Integer workYears;
109
+    
110
+    /** 组织工作年限统计 */
111
+    @ApiModelProperty("组织工作年限统计")
112
+    private WorkExperienceStats workYearsStats;
113
+    
114
+    // 安检工作年限
115
+    /** 个人安检工作年限统计 */
116
+    @ApiModelProperty("个人安检工作年限统计")
117
+    private Integer securityWorkYears;
118
+    
119
+    /** 组织安检工作年限统计 */
120
+    @ApiModelProperty("组织安检工作年限统计")
121
+    private WorkExperienceStats securityWorkYearsStats;
122
+    
123
+    // 安检工作职务
124
+    /** 个人在安检工作中担任过的最高职务 */
125
+    @ApiModelProperty("个人在安检工作中担任过的最高职务")
126
+    private String securityWorkPosition;
127
+    
128
+    /** 组织担任过班组长的人数统计 */
129
+    @ApiModelProperty("组织担任过班组长的人数统计")
130
+    private SecurityWorkPositionStats securityWorkPositionStats;
131
+    
132
+    public IndicatorResult() {
133
+        setModuleName("system");
134
+    }
135
+}

+ 27 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/portrait/ModuleIndicatorResult.java

@@ -0,0 +1,27 @@
1
+package com.sundot.airport.system.domain.portrait;
2
+
3
+import com.sundot.airport.common.domain.portrait.IndicatorCalculateParams;
4
+
5
+/**
6
+ * 模块化指标结果接口
7
+ * 各个模块可以实现此接口来定义自己的指标结果类
8
+ */
9
+public interface ModuleIndicatorResult {
10
+    
11
+    /**
12
+     * 获取模块名称
13
+     * @return 模块名称
14
+     */
15
+    String getModuleName();
16
+    
17
+    /**
18
+     * 设置指标计算参数
19
+     * @param params 指标计算参数
20
+     */
21
+    void setParams(IndicatorCalculateParams params);
22
+    
23
+    /**
24
+     * 计算指标数据
25
+     */
26
+    void calculate();
27
+}

+ 19 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/portrait/PhysicalHealthStats.java

@@ -0,0 +1,19 @@
1
+package com.sundot.airport.system.domain.portrait;
2
+
3
+import lombok.Data;
4
+
5
+/**
6
+ * 身体健康状况统计
7
+ * 用于表示身体健康状况的统计信息,包括健康人数、总人数和健康比例
8
+ */
9
+@Data
10
+public class PhysicalHealthStats {
11
+    /** 身体健康的人数 */
12
+    private Integer healthyCount;
13
+    
14
+    /** 总人数 */
15
+    private Integer totalCount;
16
+    
17
+    /** 健康比例(0-1之间的小数) */
18
+    private Double healthyPercentage;
19
+}

+ 19 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/portrait/PoliticalReviewStats.java

@@ -0,0 +1,19 @@
1
+package com.sundot.airport.system.domain.portrait;
2
+
3
+import lombok.Data;
4
+
5
+/**
6
+ * 政审通过情况统计
7
+ * 用于表示政审通过情况的统计信息,包括通过政审人数、总人数和通过比例
8
+ */
9
+@Data
10
+public class PoliticalReviewStats {
11
+    /** 通过政审的人数 */
12
+    private Integer passedCount;
13
+    
14
+    /** 总人数 */
15
+    private Integer totalCount;
16
+    
17
+    /** 通过比例(0-1之间的小数) */
18
+    private Double passPercentage;
19
+}

+ 22 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/portrait/PoliticalStatusStats.java

@@ -0,0 +1,22 @@
1
+package com.sundot.airport.system.domain.portrait;
2
+
3
+import lombok.Data;
4
+
5
+/**
6
+ * 政治面貌统计
7
+ * 用于表示某种政治面貌的统计信息,包括人数、总人数和占比
8
+ */
9
+@Data
10
+public class PoliticalStatusStats {
11
+    /** 政治面貌 */
12
+    private String politicalStatus;
13
+    
14
+    /** 该政治面貌的人数 */
15
+    private Integer count;
16
+    
17
+    /** 总人数 */
18
+    private Integer totalCount;
19
+    
20
+    /** 占比(0-1之间的小数) */
21
+    private Double percentage;
22
+}

+ 22 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/portrait/PositionCompetencyStats.java

@@ -0,0 +1,22 @@
1
+package com.sundot.airport.system.domain.portrait;
2
+
3
+import lombok.Data;
4
+
5
+/**
6
+ * 岗位胜任统计
7
+ * 用于表示某个岗位的胜任情况统计,包括胜任人数、总人数和胜任比例
8
+ */
9
+@Data
10
+public class PositionCompetencyStats {
11
+    /** 岗位名称 */
12
+    private String postName;
13
+    
14
+    /** 胜任该岗位的人数 */
15
+    private Integer competentCount;
16
+    
17
+    /** 总人数 */
18
+    private Integer totalCount;
19
+    
20
+    /** 胜任比例(0-1之间的小数) */
21
+    private Double percentage;
22
+}

+ 19 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/portrait/PositionInfo.java

@@ -0,0 +1,19 @@
1
+package com.sundot.airport.system.domain.portrait;
2
+
3
+import lombok.Data;
4
+
5
+/**
6
+ * 岗位信息
7
+ * 表示一个具体的岗位信息,包括岗位ID、名称和编码
8
+ */
9
+@Data
10
+public class PositionInfo {
11
+    /** 岗位ID */
12
+    private Long postId;
13
+    
14
+    /** 岗位名称 */
15
+    private String postName;
16
+    
17
+    /** 岗位编码 */
18
+    private String postCode;
19
+}

+ 22 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/portrait/QualificationStats.java

@@ -0,0 +1,22 @@
1
+package com.sundot.airport.system.domain.portrait;
2
+
3
+import lombok.Data;
4
+
5
+/**
6
+ * 资质等级统计
7
+ * 用于表示某个资质等级的统计信息,包括人数、总人数和占比
8
+ */
9
+@Data
10
+public class QualificationStats {
11
+    /** 资质等级名称 */
12
+    private String levelName;
13
+    
14
+    /** 该等级的人数 */
15
+    private Integer count;
16
+    
17
+    /** 总人数 */
18
+    private Integer totalCount;
19
+    
20
+    /** 占比(0-1之间的小数) */
21
+    private Double percentage;
22
+}

+ 19 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/portrait/RewardPenaltyStats.java

@@ -0,0 +1,19 @@
1
+package com.sundot.airport.system.domain.portrait;
2
+
3
+import lombok.Data;
4
+
5
+/**
6
+ * 奖励处罚统计信息
7
+ * 用于表示工作奖励或处罚情况的统计信息
8
+ */
9
+@Data
10
+public class RewardPenaltyStats {
11
+    /** 总人次 */
12
+    private Integer totalPersonTimes;
13
+    
14
+    /** 总人数 */
15
+    private Integer totalCount;
16
+    
17
+    /** 人均次数 */
18
+    private Double averageTimes;
19
+}

+ 16 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/portrait/SecurityWorkPositionStats.java

@@ -0,0 +1,16 @@
1
+package com.sundot.airport.system.domain.portrait;
2
+
3
+import lombok.Data;
4
+
5
+/**
6
+ * 安检工作职务统计信息
7
+ * 用于表示担任过班组长的人数统计
8
+ */
9
+@Data
10
+public class SecurityWorkPositionStats {
11
+    /** 担任过班组长的人数 */
12
+    private Integer teamLeaderCount;
13
+    
14
+    /** 总人数 */
15
+    private Integer totalCount;
16
+}

+ 16 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/portrait/WorkExperienceStats.java

@@ -0,0 +1,16 @@
1
+package com.sundot.airport.system.domain.portrait;
2
+
3
+import lombok.Data;
4
+
5
+/**
6
+ * 工作经验统计信息
7
+ * 用于表示工作年限或安检工作年限的统计信息
8
+ */
9
+@Data
10
+public class WorkExperienceStats {
11
+    /** 平均工作年限(年) */
12
+    private Double averageWorkYears;
13
+    
14
+    /** 总人数 */
15
+    private Integer totalCount;
16
+}

+ 57 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/vo/CheckProjectItemTreeVo.java

@@ -0,0 +1,57 @@
1
+package com.sundot.airport.system.domain.vo;
2
+
3
+import java.io.Serializable;
4
+import java.util.List;
5
+
6
+
7
+public class CheckProjectItemTreeVo implements Serializable {
8
+
9
+    /**
10
+     * 编码
11
+     */
12
+    private String code;
13
+
14
+    /**
15
+     * 名称
16
+     */
17
+    private String name;
18
+
19
+    /**
20
+     * 子级
21
+     */
22
+    private List<CheckProjectItemTreeVo> list;
23
+
24
+    public String getCode() {
25
+        return code;
26
+    }
27
+
28
+    public void setCode(String code) {
29
+        this.code = code;
30
+    }
31
+
32
+    public String getName() {
33
+        return name;
34
+    }
35
+
36
+    public void setName(String name) {
37
+        this.name = name;
38
+    }
39
+
40
+    public List<CheckProjectItemTreeVo> getList() {
41
+        return list;
42
+    }
43
+
44
+    public void setList(List<CheckProjectItemTreeVo> list) {
45
+        this.list = list;
46
+    }
47
+
48
+    @Override
49
+    public String toString() {
50
+        return "CheckProjectItemTreeVo{" +
51
+                "code='" + code + '\'' +
52
+                ", name='" + name + '\'' +
53
+                ", list=" + list +
54
+                '}';
55
+    }
56
+
57
+}

+ 98 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/vo/CheckProjectItemVo.java

@@ -0,0 +1,98 @@
1
+package com.sundot.airport.system.domain.vo;
2
+
3
+import java.io.Serializable;
4
+
5
+
6
+public class CheckProjectItemVo implements Serializable {
7
+
8
+    /**
9
+     * 1级分类编码
10
+     */
11
+    private String categoryCodeOne;
12
+
13
+    /**
14
+     * 1级分类名称
15
+     */
16
+    private String categoryNameOne;
17
+
18
+    /**
19
+     * 2级分类编码
20
+     */
21
+    private String categoryCodeTwo;
22
+
23
+    /**
24
+     * 2级分类名称
25
+     */
26
+    private String categoryNameTwo;
27
+
28
+    /**
29
+     * 检查项目编码
30
+     */
31
+    private String projectCode;
32
+
33
+    /**
34
+     * 检查项目名称
35
+     */
36
+    private String projectName;
37
+
38
+    public String getCategoryCodeOne() {
39
+        return categoryCodeOne;
40
+    }
41
+
42
+    public void setCategoryCodeOne(String categoryCodeOne) {
43
+        this.categoryCodeOne = categoryCodeOne;
44
+    }
45
+
46
+    public String getCategoryNameOne() {
47
+        return categoryNameOne;
48
+    }
49
+
50
+    public void setCategoryNameOne(String categoryNameOne) {
51
+        this.categoryNameOne = categoryNameOne;
52
+    }
53
+
54
+    public String getCategoryCodeTwo() {
55
+        return categoryCodeTwo;
56
+    }
57
+
58
+    public void setCategoryCodeTwo(String categoryCodeTwo) {
59
+        this.categoryCodeTwo = categoryCodeTwo;
60
+    }
61
+
62
+    public String getCategoryNameTwo() {
63
+        return categoryNameTwo;
64
+    }
65
+
66
+    public void setCategoryNameTwo(String categoryNameTwo) {
67
+        this.categoryNameTwo = categoryNameTwo;
68
+    }
69
+
70
+    public String getProjectCode() {
71
+        return projectCode;
72
+    }
73
+
74
+    public void setProjectCode(String projectCode) {
75
+        this.projectCode = projectCode;
76
+    }
77
+
78
+    public String getProjectName() {
79
+        return projectName;
80
+    }
81
+
82
+    public void setProjectName(String projectName) {
83
+        this.projectName = projectName;
84
+    }
85
+
86
+    @Override
87
+    public String toString() {
88
+        return "CheckProjectItemVo{" +
89
+                "categoryCodeOne='" + categoryCodeOne + '\'' +
90
+                ", categoryNameOne='" + categoryNameOne + '\'' +
91
+                ", categoryCodeTwo='" + categoryCodeTwo + '\'' +
92
+                ", categoryNameTwo='" + categoryNameTwo + '\'' +
93
+                ", projectCode='" + projectCode + '\'' +
94
+                ", projectName='" + projectName + '\'' +
95
+                '}';
96
+    }
97
+
98
+}

+ 106 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/vo/MetaVo.java

@@ -0,0 +1,106 @@
1
+package com.sundot.airport.system.domain.vo;
2
+
3
+import com.sundot.airport.common.utils.StringUtils;
4
+
5
+/**
6
+ * 路由显示信息
7
+ * 
8
+ * @author ruoyi
9
+ */
10
+public class MetaVo
11
+{
12
+    /**
13
+     * 设置该路由在侧边栏和面包屑中展示的名字
14
+     */
15
+    private String title;
16
+
17
+    /**
18
+     * 设置该路由的图标,对应路径src/assets/icons/svg
19
+     */
20
+    private String icon;
21
+
22
+    /**
23
+     * 设置为true,则不会被 <keep-alive>缓存
24
+     */
25
+    private boolean noCache;
26
+
27
+    /**
28
+     * 内链地址(http(s)://开头)
29
+     */
30
+    private String link;
31
+
32
+    public MetaVo()
33
+    {
34
+    }
35
+
36
+    public MetaVo(String title, String icon)
37
+    {
38
+        this.title = title;
39
+        this.icon = icon;
40
+    }
41
+
42
+    public MetaVo(String title, String icon, boolean noCache)
43
+    {
44
+        this.title = title;
45
+        this.icon = icon;
46
+        this.noCache = noCache;
47
+    }
48
+
49
+    public MetaVo(String title, String icon, String link)
50
+    {
51
+        this.title = title;
52
+        this.icon = icon;
53
+        this.link = link;
54
+    }
55
+
56
+    public MetaVo(String title, String icon, boolean noCache, String link)
57
+    {
58
+        this.title = title;
59
+        this.icon = icon;
60
+        this.noCache = noCache;
61
+        if (StringUtils.ishttp(link))
62
+        {
63
+            this.link = link;
64
+        }
65
+    }
66
+
67
+    public boolean isNoCache()
68
+    {
69
+        return noCache;
70
+    }
71
+
72
+    public void setNoCache(boolean noCache)
73
+    {
74
+        this.noCache = noCache;
75
+    }
76
+
77
+    public String getTitle()
78
+    {
79
+        return title;
80
+    }
81
+
82
+    public void setTitle(String title)
83
+    {
84
+        this.title = title;
85
+    }
86
+
87
+    public String getIcon()
88
+    {
89
+        return icon;
90
+    }
91
+
92
+    public void setIcon(String icon)
93
+    {
94
+        this.icon = icon;
95
+    }
96
+
97
+    public String getLink()
98
+    {
99
+        return link;
100
+    }
101
+
102
+    public void setLink(String link)
103
+    {
104
+        this.link = link;
105
+    }
106
+}

+ 357 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/vo/PositionInfoVO.java

@@ -0,0 +1,357 @@
1
+package com.sundot.airport.system.domain.vo;
2
+
3
+
4
+import io.swagger.annotations.ApiModelProperty;
5
+
6
+public class PositionInfoVO {
7
+    // 大区域信息
8
+    @ApiModelProperty(name = "大区域ID")
9
+    private Long id;
10
+
11
+    @ApiModelProperty(name = "大区域名称")
12
+    private String name;
13
+
14
+    @ApiModelProperty(name = "大区域编码")
15
+    private String code;
16
+
17
+    @ApiModelProperty(name = "大区域层级")
18
+    private Integer level;
19
+
20
+    @ApiModelProperty(name = "大区域位置类型")
21
+    private String positionType;
22
+
23
+    @ApiModelProperty(name = "大区域通道类型")
24
+    private String channelType;
25
+
26
+    @ApiModelProperty(name = "大区域位置类型描述")
27
+    private String positionTypeDesc;
28
+
29
+    @ApiModelProperty(name = "大区域通道类型描述")
30
+    private String channelTypeDesc;
31
+
32
+    private Long parentId;
33
+    private String tenantId;
34
+    private Integer revision;
35
+
36
+    // 小区域信息
37
+    @ApiModelProperty(name = "小区域ID")
38
+    private Long smallAreaId;
39
+
40
+    @ApiModelProperty(name = "小区域名称")
41
+    private String smallAreaName;
42
+
43
+    @ApiModelProperty(name = "小区域编码")
44
+    private String smallAreaCode;
45
+
46
+    @ApiModelProperty(name = "小区域层级")
47
+    private Integer smallAreaLevel;
48
+
49
+    @ApiModelProperty(name = "小区域位置类型")
50
+    private String smallAreaPositionType;
51
+
52
+    @ApiModelProperty(name = "小区域通道类型")
53
+    private String smallAreaChannelType;
54
+
55
+    @ApiModelProperty(name = "小区域位置类型描述")
56
+    private String smallAreaPositionTypeDesc;
57
+
58
+    @ApiModelProperty(name = "小区域通道类型描述")
59
+    private String smallAreaChannelTypeDesc;
60
+
61
+    private Long smallAreaParentId;
62
+
63
+    // 通道信息
64
+    @ApiModelProperty(name = "通道ID")
65
+    private Long channelId;
66
+
67
+    @ApiModelProperty(name = "通道名称")
68
+    private String channelName;
69
+
70
+    @ApiModelProperty(name = "通道编码")
71
+    private String channelCode;
72
+
73
+    @ApiModelProperty(name = "通道层级")
74
+    private Integer channelLevel;
75
+
76
+    @ApiModelProperty(name = "通道位置类型")
77
+    private String channelPositionType;
78
+
79
+    @ApiModelProperty(name = "通道通道类型")
80
+    private String channelChannelType;
81
+
82
+    @ApiModelProperty(name = "通道位置类型描述")
83
+    private String channelPositionTypeDesc;
84
+
85
+    @ApiModelProperty(name = "通道通道类型描述")
86
+    private String channelChannelTypeDesc;
87
+
88
+    private Long channelParentId;
89
+
90
+
91
+    public Long getId() {
92
+        return id;
93
+    }
94
+
95
+    public void setId(Long id) {
96
+        this.id = id;
97
+    }
98
+
99
+    public String getName() {
100
+        return name;
101
+    }
102
+
103
+    public void setName(String name) {
104
+        this.name = name;
105
+    }
106
+
107
+    public String getCode() {
108
+        return code;
109
+    }
110
+
111
+    public void setCode(String code) {
112
+        this.code = code;
113
+    }
114
+
115
+    public Integer getLevel() {
116
+        return level;
117
+    }
118
+
119
+    public void setLevel(Integer level) {
120
+        this.level = level;
121
+    }
122
+
123
+    public String getPositionType() {
124
+        return positionType;
125
+    }
126
+
127
+    public void setPositionType(String positionType) {
128
+        this.positionType = positionType;
129
+    }
130
+
131
+    public String getChannelType() {
132
+        return channelType;
133
+    }
134
+
135
+    public void setChannelType(String channelType) {
136
+        this.channelType = channelType;
137
+    }
138
+
139
+    public String getPositionTypeDesc() {
140
+        return positionTypeDesc;
141
+    }
142
+
143
+    public void setPositionTypeDesc(String positionTypeDesc) {
144
+        this.positionTypeDesc = positionTypeDesc;
145
+    }
146
+
147
+    public String getChannelTypeDesc() {
148
+        return channelTypeDesc;
149
+    }
150
+
151
+    public void setChannelTypeDesc(String channelTypeDesc) {
152
+        this.channelTypeDesc = channelTypeDesc;
153
+    }
154
+
155
+    public Long getParentId() {
156
+        return parentId;
157
+    }
158
+
159
+    public void setParentId(Long parentId) {
160
+        this.parentId = parentId;
161
+    }
162
+
163
+    public String getTenantId() {
164
+        return tenantId;
165
+    }
166
+
167
+    public void setTenantId(String tenantId) {
168
+        this.tenantId = tenantId;
169
+    }
170
+
171
+    public Integer getRevision() {
172
+        return revision;
173
+    }
174
+
175
+    public void setRevision(Integer revision) {
176
+        this.revision = revision;
177
+    }
178
+
179
+    public Long getSmallAreaId() {
180
+        return smallAreaId;
181
+    }
182
+
183
+    public void setSmallAreaId(Long smallAreaId) {
184
+        this.smallAreaId = smallAreaId;
185
+    }
186
+
187
+    public String getSmallAreaName() {
188
+        return smallAreaName;
189
+    }
190
+
191
+    public void setSmallAreaName(String smallAreaName) {
192
+        this.smallAreaName = smallAreaName;
193
+    }
194
+
195
+    public String getSmallAreaCode() {
196
+        return smallAreaCode;
197
+    }
198
+
199
+    public void setSmallAreaCode(String smallAreaCode) {
200
+        this.smallAreaCode = smallAreaCode;
201
+    }
202
+
203
+    public Integer getSmallAreaLevel() {
204
+        return smallAreaLevel;
205
+    }
206
+
207
+    public void setSmallAreaLevel(Integer smallAreaLevel) {
208
+        this.smallAreaLevel = smallAreaLevel;
209
+    }
210
+
211
+    public String getSmallAreaPositionType() {
212
+        return smallAreaPositionType;
213
+    }
214
+
215
+    public void setSmallAreaPositionType(String smallAreaPositionType) {
216
+        this.smallAreaPositionType = smallAreaPositionType;
217
+    }
218
+
219
+    public String getSmallAreaChannelType() {
220
+        return smallAreaChannelType;
221
+    }
222
+
223
+    public void setSmallAreaChannelType(String smallAreaChannelType) {
224
+        this.smallAreaChannelType = smallAreaChannelType;
225
+    }
226
+
227
+    public String getSmallAreaPositionTypeDesc() {
228
+        return smallAreaPositionTypeDesc;
229
+    }
230
+
231
+    public void setSmallAreaPositionTypeDesc(String smallAreaPositionTypeDesc) {
232
+        this.smallAreaPositionTypeDesc = smallAreaPositionTypeDesc;
233
+    }
234
+
235
+    public String getSmallAreaChannelTypeDesc() {
236
+        return smallAreaChannelTypeDesc;
237
+    }
238
+
239
+    public void setSmallAreaChannelTypeDesc(String smallAreaChannelTypeDesc) {
240
+        this.smallAreaChannelTypeDesc = smallAreaChannelTypeDesc;
241
+    }
242
+
243
+    public Long getSmallAreaParentId() {
244
+        return smallAreaParentId;
245
+    }
246
+
247
+    public void setSmallAreaParentId(Long smallAreaParentId) {
248
+        this.smallAreaParentId = smallAreaParentId;
249
+    }
250
+
251
+    public Long getChannelId() {
252
+        return channelId;
253
+    }
254
+
255
+    public void setChannelId(Long channelId) {
256
+        this.channelId = channelId;
257
+    }
258
+
259
+    public String getChannelName() {
260
+        return channelName;
261
+    }
262
+
263
+    public void setChannelName(String channelName) {
264
+        this.channelName = channelName;
265
+    }
266
+
267
+    public String getChannelCode() {
268
+        return channelCode;
269
+    }
270
+
271
+    public void setChannelCode(String channelCode) {
272
+        this.channelCode = channelCode;
273
+    }
274
+
275
+    public Integer getChannelLevel() {
276
+        return channelLevel;
277
+    }
278
+
279
+    public void setChannelLevel(Integer channelLevel) {
280
+        this.channelLevel = channelLevel;
281
+    }
282
+
283
+    public String getChannelPositionType() {
284
+        return channelPositionType;
285
+    }
286
+
287
+    public void setChannelPositionType(String channelPositionType) {
288
+        this.channelPositionType = channelPositionType;
289
+    }
290
+
291
+    public String getChannelChannelType() {
292
+        return channelChannelType;
293
+    }
294
+
295
+    public void setChannelChannelType(String channelChannelType) {
296
+        this.channelChannelType = channelChannelType;
297
+    }
298
+
299
+    public String getChannelPositionTypeDesc() {
300
+        return channelPositionTypeDesc;
301
+    }
302
+
303
+    public void setChannelPositionTypeDesc(String channelPositionTypeDesc) {
304
+        this.channelPositionTypeDesc = channelPositionTypeDesc;
305
+    }
306
+
307
+    public String getChannelChannelTypeDesc() {
308
+        return channelChannelTypeDesc;
309
+    }
310
+
311
+    public void setChannelChannelTypeDesc(String channelChannelTypeDesc) {
312
+        this.channelChannelTypeDesc = channelChannelTypeDesc;
313
+    }
314
+
315
+    public Long getChannelParentId() {
316
+        return channelParentId;
317
+    }
318
+
319
+    public void setChannelParentId(Long channelParentId) {
320
+        this.channelParentId = channelParentId;
321
+    }
322
+
323
+    @Override
324
+    public String toString() {
325
+        return "PositionInfoVO{" +
326
+                "id=" + id +
327
+                ", name='" + name + '\'' +
328
+                ", code='" + code + '\'' +
329
+                ", level=" + level +
330
+                ", positionType='" + positionType + '\'' +
331
+                ", channelType='" + channelType + '\'' +
332
+                ", positionTypeDesc='" + positionTypeDesc + '\'' +
333
+                ", channelTypeDesc='" + channelTypeDesc + '\'' +
334
+                ", parentId=" + parentId +
335
+                ", tenantId='" + tenantId + '\'' +
336
+                ", revision=" + revision +
337
+                ", smallAreaId=" + smallAreaId +
338
+                ", smallAreaName='" + smallAreaName + '\'' +
339
+                ", smallAreaCode='" + smallAreaCode + '\'' +
340
+                ", smallAreaLevel=" + smallAreaLevel +
341
+                ", smallAreaPositionType='" + smallAreaPositionType + '\'' +
342
+                ", smallAreaChannelType='" + smallAreaChannelType + '\'' +
343
+                ", smallAreaPositionTypeDesc='" + smallAreaPositionTypeDesc + '\'' +
344
+                ", smallAreaChannelTypeDesc='" + smallAreaChannelTypeDesc + '\'' +
345
+                ", smallAreaParentId=" + smallAreaParentId +
346
+                ", channelId=" + channelId +
347
+                ", channelName='" + channelName + '\'' +
348
+                ", channelCode='" + channelCode + '\'' +
349
+                ", channelLevel=" + channelLevel +
350
+                ", channelPositionType='" + channelPositionType + '\'' +
351
+                ", channelChannelType='" + channelChannelType + '\'' +
352
+                ", channelPositionTypeDesc='" + channelPositionTypeDesc + '\'' +
353
+                ", channelChannelTypeDesc='" + channelChannelTypeDesc + '\'' +
354
+                ", channelParentId=" + channelParentId +
355
+                '}';
356
+    }
357
+}

+ 130 - 0
airport-system/src/main/java/com/sundot/airport/system/domain/vo/RouterVo.java

@@ -0,0 +1,130 @@
1
+package com.sundot.airport.system.domain.vo;
2
+
3
+import com.fasterxml.jackson.annotation.JsonInclude;
4
+
5
+import java.util.List;
6
+
7
+/**
8
+ * 路由配置信息
9
+ *
10
+ * @author ruoyi
11
+ */
12
+@JsonInclude(JsonInclude.Include.NON_EMPTY)
13
+public class RouterVo {
14
+    /**
15
+     * 路由名字
16
+     */
17
+    private String name;
18
+
19
+    /**
20
+     * 路由地址
21
+     */
22
+    private String path;
23
+
24
+    /**
25
+     * 是否隐藏路由,当设置 true 的时候该路由不会再侧边栏出现
26
+     */
27
+    private boolean hidden;
28
+
29
+    /**
30
+     * 重定向地址,当设置 noRedirect 的时候该路由在面包屑导航中不可被点击
31
+     */
32
+    private String redirect;
33
+
34
+    /**
35
+     * 组件地址
36
+     */
37
+    private String component;
38
+
39
+    /**
40
+     * 路由参数:如 {"id": 1, "name": "ry"}
41
+     */
42
+    private String query;
43
+
44
+    /**
45
+     * 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面
46
+     */
47
+    private Boolean alwaysShow;
48
+
49
+    /**
50
+     * 其他元素
51
+     */
52
+    private MetaVo meta;
53
+
54
+    /**
55
+     * 子路由
56
+     */
57
+    private List<RouterVo> children;
58
+
59
+    public String getName() {
60
+        return name;
61
+    }
62
+
63
+    public void setName(String name) {
64
+        this.name = name;
65
+    }
66
+
67
+    public String getPath() {
68
+        return path;
69
+    }
70
+
71
+    public void setPath(String path) {
72
+        this.path = path;
73
+    }
74
+
75
+    public boolean getHidden() {
76
+        return hidden;
77
+    }
78
+
79
+    public void setHidden(boolean hidden) {
80
+        this.hidden = hidden;
81
+    }
82
+
83
+    public String getRedirect() {
84
+        return redirect;
85
+    }
86
+
87
+    public void setRedirect(String redirect) {
88
+        this.redirect = redirect;
89
+    }
90
+
91
+    public String getComponent() {
92
+        return component;
93
+    }
94
+
95
+    public void setComponent(String component) {
96
+        this.component = component;
97
+    }
98
+
99
+    public String getQuery() {
100
+        return query;
101
+    }
102
+
103
+    public void setQuery(String query) {
104
+        this.query = query;
105
+    }
106
+
107
+    public Boolean getAlwaysShow() {
108
+        return alwaysShow;
109
+    }
110
+
111
+    public void setAlwaysShow(Boolean alwaysShow) {
112
+        this.alwaysShow = alwaysShow;
113
+    }
114
+
115
+    public MetaVo getMeta() {
116
+        return meta;
117
+    }
118
+
119
+    public void setMeta(MetaVo meta) {
120
+        this.meta = meta;
121
+    }
122
+
123
+    public List<RouterVo> getChildren() {
124
+        return children;
125
+    }
126
+
127
+    public void setChildren(List<RouterVo> children) {
128
+        this.children = children;
129
+    }
130
+}

+ 21 - 0
airport-system/src/main/java/com/sundot/airport/system/enums/ProcessStatusEnum.java

@@ -0,0 +1,21 @@
1
+package com.sundot.airport.system.enums;
2
+
3
+import lombok.AllArgsConstructor;
4
+import lombok.Getter;
5
+
6
+/**
7
+ *  流程状态 0草稿,1审核中,2 人工终止 ,3归档
8
+ */
9
+@Getter
10
+@AllArgsConstructor
11
+public enum ProcessStatusEnum {
12
+    DRAFT("0","DRAFT", "草稿"),
13
+    AUDITING("1","AUDITING", "审核中"),
14
+    TERMINATED("2","TERMINATED", "人工终止"),
15
+    ARCHIVED("3","ARCHIVED", "归档")
16
+    ;
17
+    private final String code;
18
+    private final String description;
19
+    private final String info;
20
+
21
+}

+ 30 - 0
airport-system/src/main/java/com/sundot/airport/system/enums/SubjectiveImpressionEnum.java

@@ -0,0 +1,30 @@
1
+package com.sundot.airport.system.enums;
2
+
3
+import lombok.AllArgsConstructor;
4
+import lombok.Getter;
5
+
6
+/**
7
+ * 主观印象枚举
8
+ */
9
+@Getter
10
+@AllArgsConstructor
11
+public enum SubjectiveImpressionEnum {
12
+
13
+    personality_trait("personality_trait", "性格特质"),
14
+    capability_performance("capability_performance", "能力表现"),
15
+    interpersonal_interaction("interpersonal_interaction", "人际互动"),
16
+    growth_potential("growth_potential", "成长潜力");
17
+
18
+    private final String code;
19
+    private final String desc;
20
+
21
+    public static SubjectiveImpressionEnum getByCode(String code) {
22
+        for (SubjectiveImpressionEnum itemEnum : values()) {
23
+            if (itemEnum.getCode().equals(code)) {
24
+                return itemEnum;
25
+            }
26
+        }
27
+        return null;
28
+    }
29
+
30
+}

+ 62 - 0
airport-system/src/main/java/com/sundot/airport/system/mapper/BaseAttachmentMapper.java

@@ -0,0 +1,62 @@
1
+package com.sundot.airport.system.mapper;
2
+
3
+import java.util.List;
4
+
5
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
6
+import com.sundot.airport.common.domain.BaseAttachment;
7
+
8
+/**
9
+ * 附件Mapper接口
10
+ *
11
+ * @author ruoyi
12
+ * @date 2025-07-14
13
+ */
14
+public interface BaseAttachmentMapper extends BaseMapper<BaseAttachment> {
15
+    /**
16
+     * 查询附件
17
+     *
18
+     * @param id 附件主键
19
+     * @return 附件
20
+     */
21
+    public BaseAttachment selectBaseAttachmentById(Long id);
22
+
23
+    /**
24
+     * 查询附件列表
25
+     *
26
+     * @param baseAttachment 附件
27
+     * @return 附件集合
28
+     */
29
+    public List<BaseAttachment> selectBaseAttachmentList(BaseAttachment baseAttachment);
30
+
31
+    /**
32
+     * 新增附件
33
+     *
34
+     * @param baseAttachment 附件
35
+     * @return 结果
36
+     */
37
+    public int insertBaseAttachment(BaseAttachment baseAttachment);
38
+
39
+    /**
40
+     * 修改附件
41
+     *
42
+     * @param baseAttachment 附件
43
+     * @return 结果
44
+     */
45
+    public int updateBaseAttachment(BaseAttachment baseAttachment);
46
+
47
+    /**
48
+     * 删除附件
49
+     *
50
+     * @param id 附件主键
51
+     * @return 结果
52
+     */
53
+    public int deleteBaseAttachmentById(Long id);
54
+
55
+    /**
56
+     * 批量删除附件
57
+     *
58
+     * @param ids 需要删除的数据主键集合
59
+     * @return 结果
60
+     */
61
+    public int deleteBaseAttachmentByIds(Long[] ids);
62
+}

+ 86 - 0
airport-system/src/main/java/com/sundot/airport/system/mapper/BaseCheckCategoryMapper.java

@@ -0,0 +1,86 @@
1
+package com.sundot.airport.system.mapper;
2
+
3
+import java.util.List;
4
+
5
+import com.sundot.airport.system.domain.BaseCheckCategory;
6
+import org.apache.ibatis.annotations.Param;
7
+
8
+/**
9
+ * 检查项分类Mapper接口
10
+ *
11
+ * @author ruoyi
12
+ * @date 2025-07-11
13
+ */
14
+public interface BaseCheckCategoryMapper {
15
+    /**
16
+     * 查询检查项分类
17
+     *
18
+     * @param id 检查项分类主键
19
+     * @return 检查项分类
20
+     */
21
+    public BaseCheckCategory selectBaseCheckCategoryById(Long id);
22
+
23
+    /**
24
+     * 查询检查项分类列表
25
+     *
26
+     * @param baseCheckCategory 检查项分类
27
+     * @return 检查项分类集合
28
+     */
29
+    public List<BaseCheckCategory> selectBaseCheckCategoryList(BaseCheckCategory baseCheckCategory);
30
+
31
+    /**
32
+     * 新增检查项分类
33
+     *
34
+     * @param baseCheckCategory 检查项分类
35
+     * @return 结果
36
+     */
37
+    public int insertBaseCheckCategory(BaseCheckCategory baseCheckCategory);
38
+
39
+    /**
40
+     * 修改检查项分类
41
+     *
42
+     * @param baseCheckCategory 检查项分类
43
+     * @return 结果
44
+     */
45
+    public int updateBaseCheckCategory(BaseCheckCategory baseCheckCategory);
46
+
47
+    /**
48
+     * 删除检查项分类
49
+     *
50
+     * @param id 检查项分类主键
51
+     * @return 结果
52
+     */
53
+    public int deleteBaseCheckCategoryById(Long id);
54
+
55
+    /**
56
+     * 批量删除检查项分类
57
+     *
58
+     * @param ids 需要删除的数据主键集合
59
+     * @return 结果
60
+     */
61
+    public int deleteBaseCheckCategoryByIds(Long[] ids);
62
+
63
+    /**
64
+     * 根据ID查询所有子元素
65
+     *
66
+     * @param id ID
67
+     * @return 列表
68
+     */
69
+    public List<BaseCheckCategory> selectChildrenById(Long id);
70
+
71
+    /**
72
+     * 修改子元素关系
73
+     *
74
+     * @param list 子元素
75
+     * @return 结果
76
+     */
77
+    public int updateChildren(@Param("list") List<BaseCheckCategory> list);
78
+
79
+    /**
80
+     * 根据二级分类名称查询对应的一级分类
81
+     *
82
+     * @param level2Name 二级分类名称
83
+     * @return 一级分类
84
+     */
85
+    public BaseCheckCategory selectLevel1ByLevel2Name(@Param("level2Name") String level2Name);
86
+}

+ 78 - 0
airport-system/src/main/java/com/sundot/airport/system/mapper/BaseCheckPointMapper.java

@@ -0,0 +1,78 @@
1
+package com.sundot.airport.system.mapper;
2
+
3
+import java.util.List;
4
+
5
+import com.sundot.airport.system.domain.BaseCheckPoint;
6
+import org.apache.ibatis.annotations.Param;
7
+
8
+/**
9
+ * 检查部位Mapper接口
10
+ *
11
+ * @author ruoyi
12
+ * @date 2025-07-08
13
+ */
14
+public interface BaseCheckPointMapper {
15
+    /**
16
+     * 查询检查部位
17
+     *
18
+     * @param id 检查部位主键
19
+     * @return 检查部位
20
+     */
21
+    public BaseCheckPoint selectBaseCheckPointById(Long id);
22
+
23
+    /**
24
+     * 查询检查部位列表
25
+     *
26
+     * @param baseCheckPoint 检查部位
27
+     * @return 检查部位集合
28
+     */
29
+    public List<BaseCheckPoint> selectBaseCheckPointList(BaseCheckPoint baseCheckPoint);
30
+
31
+    /**
32
+     * 新增检查部位
33
+     *
34
+     * @param baseCheckPoint 检查部位
35
+     * @return 结果
36
+     */
37
+    public int insertBaseCheckPoint(BaseCheckPoint baseCheckPoint);
38
+
39
+    /**
40
+     * 修改检查部位
41
+     *
42
+     * @param baseCheckPoint 检查部位
43
+     * @return 结果
44
+     */
45
+    public int updateBaseCheckPoint(BaseCheckPoint baseCheckPoint);
46
+
47
+    /**
48
+     * 删除检查部位
49
+     *
50
+     * @param id 检查部位主键
51
+     * @return 结果
52
+     */
53
+    public int deleteBaseCheckPointById(Long id);
54
+
55
+    /**
56
+     * 批量删除检查部位
57
+     *
58
+     * @param ids 需要删除的数据主键集合
59
+     * @return 结果
60
+     */
61
+    public int deleteBaseCheckPointByIds(Long[] ids);
62
+
63
+    /**
64
+     * 根据ID查询所有子元素
65
+     *
66
+     * @param id ID
67
+     * @return 列表
68
+     */
69
+    public List<BaseCheckPoint> selectChildrenById(Long id);
70
+
71
+    /**
72
+     * 修改子元素关系
73
+     *
74
+     * @param list 子元素
75
+     * @return 结果
76
+     */
77
+    public int updateChildren(@Param("list") List<BaseCheckPoint> list);
78
+}

+ 26 - 0
airport-system/src/main/java/com/sundot/airport/system/mapper/BaseCodeGeneratorMapper.java

@@ -0,0 +1,26 @@
1
+package com.sundot.airport.system.mapper;
2
+
3
+/**
4
+ * 编码code自增Mapper接口
5
+ *
6
+ * @author ruoyi
7
+ * @date 2025-07-08
8
+ */
9
+public interface BaseCodeGeneratorMapper {
10
+
11
+    /**
12
+     * 更新编码code自增
13
+     *
14
+     * @param stub 标识
15
+     * @return 结果
16
+     */
17
+    public Integer replaceIntoBaseCodeGenerator(String stub);
18
+
19
+    /**
20
+     * 查询编码code自增
21
+     *
22
+     * @return 编码code自增
23
+     */
24
+    public Long getNextCodeGenerator();
25
+
26
+}

+ 69 - 0
airport-system/src/main/java/com/sundot/airport/system/mapper/BaseDefaultChoiseMapper.java

@@ -0,0 +1,69 @@
1
+package com.sundot.airport.system.mapper;
2
+
3
+import java.util.List;
4
+import com.sundot.airport.system.domain.BaseDefaultChoise;
5
+
6
+/**
7
+ * 默认选择配置Mapper接口
8
+ * 
9
+ * @author ruoyi
10
+ * @date 2025-08-25
11
+ */
12
+public interface BaseDefaultChoiseMapper 
13
+{
14
+    /**
15
+     * 查询默认选择配置
16
+     * 
17
+     * @param id 默认选择配置主键
18
+     * @return 默认选择配置
19
+     */
20
+    public BaseDefaultChoise selectBaseDefaultChoiseById(Long id);
21
+
22
+    /**
23
+     * 查询默认选择配置列表
24
+     * 
25
+     * @param baseDefaultChoise 默认选择配置
26
+     * @return 默认选择配置集合
27
+     */
28
+    public List<BaseDefaultChoise> selectBaseDefaultChoiseList(BaseDefaultChoise baseDefaultChoise);
29
+
30
+    /**
31
+     * 新增默认选择配置
32
+     * 
33
+     * @param baseDefaultChoise 默认选择配置
34
+     * @return 结果
35
+     */
36
+    public int insertBaseDefaultChoise(BaseDefaultChoise baseDefaultChoise);
37
+
38
+    /**
39
+     * 修改默认选择配置
40
+     * 
41
+     * @param baseDefaultChoise 默认选择配置
42
+     * @return 结果
43
+     */
44
+    public int updateBaseDefaultChoise(BaseDefaultChoise baseDefaultChoise);
45
+
46
+    /**
47
+     * 删除默认选择配置
48
+     * 
49
+     * @param id 默认选择配置主键
50
+     * @return 结果
51
+     */
52
+    public int deleteBaseDefaultChoiseById(Long id);
53
+
54
+    /**
55
+     * 批量删除默认选择配置
56
+     * 
57
+     * @param ids 需要删除的数据主键集合
58
+     * @return 结果
59
+     */
60
+    public int deleteBaseDefaultChoiseByIds(Long[] ids);
61
+
62
+    /**
63
+     * 获取默认选择的分类信息(包含ID和名称)
64
+     * 
65
+     * @param categoryType 分类类型:1-查获物品分类,2-检查部位
66
+     * @return 包含分类ID和名称的结果
67
+     */
68
+    public List<BaseDefaultChoise> selectDefaultCategoryWithInfo(Integer categoryType);
69
+}

+ 86 - 0
airport-system/src/main/java/com/sundot/airport/system/mapper/BasePositionMapper.java

@@ -0,0 +1,86 @@
1
+package com.sundot.airport.system.mapper;
2
+
3
+import java.util.List;
4
+
5
+import com.sundot.airport.system.domain.BasePosition;
6
+import com.sundot.airport.system.domain.vo.PositionInfoVO;
7
+import org.apache.ibatis.annotations.Param;
8
+
9
+/**
10
+ * 位置Mapper接口
11
+ *
12
+ * @author ruoyi
13
+ * @date 2025-07-09
14
+ */
15
+public interface BasePositionMapper {
16
+    /**
17
+     * 查询位置
18
+     *
19
+     * @param id 位置主键
20
+     * @return 位置
21
+     */
22
+    public BasePosition selectBasePositionById(Long id);
23
+
24
+    /**
25
+     * 查询位置列表
26
+     *
27
+     * @param basePosition 位置
28
+     * @return 位置集合
29
+     */
30
+    public List<BasePosition> selectBasePositionList(BasePosition basePosition);
31
+
32
+    /**
33
+     * 新增位置
34
+     *
35
+     * @param basePosition 位置
36
+     * @return 结果
37
+     */
38
+    public int insertBasePosition(BasePosition basePosition);
39
+
40
+    /**
41
+     * 修改位置
42
+     *
43
+     * @param basePosition 位置
44
+     * @return 结果
45
+     */
46
+    public int updateBasePosition(BasePosition basePosition);
47
+
48
+    /**
49
+     * 删除位置
50
+     *
51
+     * @param id 位置主键
52
+     * @return 结果
53
+     */
54
+    public int deleteBasePositionById(Long id);
55
+
56
+    /**
57
+     * 批量删除位置
58
+     *
59
+     * @param ids 需要删除的数据主键集合
60
+     * @return 结果
61
+     */
62
+    public int deleteBasePositionByIds(Long[] ids);
63
+
64
+    /**
65
+     * 根据ID查询所有子元素
66
+     *
67
+     * @param id ID
68
+     * @return 列表
69
+     */
70
+    public List<BasePosition> selectChildrenById(Long id);
71
+
72
+    /**
73
+     * 修改子元素关系
74
+     *
75
+     * @param list 子元素
76
+     * @return 结果
77
+     */
78
+    public int updateChildren(@Param("list") List<BasePosition> list);
79
+
80
+    /**
81
+     *  查询区域下所有通道
82
+     * @param regionalCode 区域code
83
+     * @return 列表
84
+     */
85
+    List<PositionInfoVO> selectChannelsUnderArea(@Param("regionalCode") List<String> regionalCode);
86
+}

+ 70 - 0
airport-system/src/main/java/com/sundot/airport/system/mapper/BaseProjectMapper.java

@@ -0,0 +1,70 @@
1
+package com.sundot.airport.system.mapper;
2
+
3
+import java.util.List;
4
+
5
+import com.sundot.airport.system.domain.BaseProject;
6
+import com.sundot.airport.system.domain.vo.CheckProjectItemVo;
7
+
8
+/**
9
+ * 检查项目Mapper接口
10
+ *
11
+ * @author ruoyi
12
+ * @date 2025-07-11
13
+ */
14
+public interface BaseProjectMapper {
15
+    /**
16
+     * 查询检查项目
17
+     *
18
+     * @param id 检查项目主键
19
+     * @return 检查项目
20
+     */
21
+    public BaseProject selectBaseProjectById(Long id);
22
+
23
+    /**
24
+     * 查询检查项目列表
25
+     *
26
+     * @param baseProject 检查项目
27
+     * @return 检查项目集合
28
+     */
29
+    public List<BaseProject> selectBaseProjectList(BaseProject baseProject);
30
+
31
+    /**
32
+     * 新增检查项目
33
+     *
34
+     * @param baseProject 检查项目
35
+     * @return 结果
36
+     */
37
+    public int insertBaseProject(BaseProject baseProject);
38
+
39
+    /**
40
+     * 修改检查项目
41
+     *
42
+     * @param baseProject 检查项目
43
+     * @return 结果
44
+     */
45
+    public int updateBaseProject(BaseProject baseProject);
46
+
47
+    /**
48
+     * 删除检查项目
49
+     *
50
+     * @param id 检查项目主键
51
+     * @return 结果
52
+     */
53
+    public int deleteBaseProjectById(Long id);
54
+
55
+    /**
56
+     * 批量删除检查项目
57
+     *
58
+     * @param ids 需要删除的数据主键集合
59
+     * @return 结果
60
+     */
61
+    public int deleteBaseProjectByIds(Long[] ids);
62
+
63
+    /**
64
+     * 查询检查项目列表
65
+     *
66
+     * @param checkLevel 检查级别
67
+     * @return 检查项目列表
68
+     */
69
+    public List<CheckProjectItemVo> listByCheckLevel(String checkLevel);
70
+}

+ 63 - 0
airport-system/src/main/java/com/sundot/airport/system/mapper/BaseReadMapper.java

@@ -0,0 +1,63 @@
1
+package com.sundot.airport.system.mapper;
2
+
3
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4
+import com.sundot.airport.common.domain.BaseRead;
5
+
6
+import java.util.List;
7
+
8
+
9
+/**
10
+ * 已读Mapper接口
11
+ *
12
+ * @author ruoyi
13
+ * @date 2025-09-09
14
+ */
15
+public interface BaseReadMapper extends BaseMapper<BaseRead> {
16
+    /**
17
+     * 查询已读
18
+     *
19
+     * @param id 已读主键
20
+     * @return 已读
21
+     */
22
+    public BaseRead selectBaseReadById(Long id);
23
+
24
+    /**
25
+     * 查询已读列表
26
+     *
27
+     * @param baseRead 已读
28
+     * @return 已读集合
29
+     */
30
+    public List<BaseRead> selectBaseReadList(BaseRead baseRead);
31
+
32
+    /**
33
+     * 新增已读
34
+     *
35
+     * @param baseRead 已读
36
+     * @return 结果
37
+     */
38
+    public int insertBaseRead(BaseRead baseRead);
39
+
40
+    /**
41
+     * 修改已读
42
+     *
43
+     * @param baseRead 已读
44
+     * @return 结果
45
+     */
46
+    public int updateBaseRead(BaseRead baseRead);
47
+
48
+    /**
49
+     * 删除已读
50
+     *
51
+     * @param id 已读主键
52
+     * @return 结果
53
+     */
54
+    public int deleteBaseReadById(Long id);
55
+
56
+    /**
57
+     * 批量删除已读
58
+     *
59
+     * @param ids 需要删除的数据主键集合
60
+     * @return 结果
61
+     */
62
+    public int deleteBaseReadByIds(Long[] ids);
63
+}

+ 78 - 0
airport-system/src/main/java/com/sundot/airport/system/mapper/BaseSeizeCategoryMapper.java

@@ -0,0 +1,78 @@
1
+package com.sundot.airport.system.mapper;
2
+
3
+import java.util.List;
4
+
5
+import com.sundot.airport.system.domain.BaseSeizeCategory;
6
+import org.apache.ibatis.annotations.Param;
7
+
8
+/**
9
+ * 查获物品分类Mapper接口
10
+ *
11
+ * @author ruoyi
12
+ * @date 2025-07-08
13
+ */
14
+public interface BaseSeizeCategoryMapper {
15
+    /**
16
+     * 查询查获物品分类
17
+     *
18
+     * @param id 查获物品分类主键
19
+     * @return 查获物品分类
20
+     */
21
+    public BaseSeizeCategory selectBaseSeizeCategoryById(Long id);
22
+
23
+    /**
24
+     * 查询查获物品分类列表
25
+     *
26
+     * @param baseSeizeCategory 查获物品分类
27
+     * @return 查获物品分类集合
28
+     */
29
+    public List<BaseSeizeCategory> selectBaseSeizeCategoryList(BaseSeizeCategory baseSeizeCategory);
30
+
31
+    /**
32
+     * 新增查获物品分类
33
+     *
34
+     * @param baseSeizeCategory 查获物品分类
35
+     * @return 结果
36
+     */
37
+    public int insertBaseSeizeCategory(BaseSeizeCategory baseSeizeCategory);
38
+
39
+    /**
40
+     * 修改查获物品分类
41
+     *
42
+     * @param baseSeizeCategory 查获物品分类
43
+     * @return 结果
44
+     */
45
+    public int updateBaseSeizeCategory(BaseSeizeCategory baseSeizeCategory);
46
+
47
+    /**
48
+     * 删除查获物品分类
49
+     *
50
+     * @param id 查获物品分类主键
51
+     * @return 结果
52
+     */
53
+    public int deleteBaseSeizeCategoryById(Long id);
54
+
55
+    /**
56
+     * 批量删除查获物品分类
57
+     *
58
+     * @param ids 需要删除的数据主键集合
59
+     * @return 结果
60
+     */
61
+    public int deleteBaseSeizeCategoryByIds(Long[] ids);
62
+
63
+    /**
64
+     * 根据ID查询所有子元素
65
+     *
66
+     * @param id ID
67
+     * @return 列表
68
+     */
69
+    public List<BaseSeizeCategory> selectChildrenById(Long id);
70
+
71
+    /**
72
+     * 修改子元素关系
73
+     *
74
+     * @param list 子元素
75
+     * @return 结果
76
+     */
77
+    public int updateChildren(@Param("list") List<BaseSeizeCategory> list);
78
+}

+ 69 - 0
airport-system/src/main/java/com/sundot/airport/system/mapper/BaseSeizeItemMapper.java

@@ -0,0 +1,69 @@
1
+package com.sundot.airport.system.mapper;
2
+
3
+import java.util.List;
4
+
5
+import com.sundot.airport.system.domain.BaseSeizeItem;
6
+
7
+/**
8
+ * 查获物品Mapper接口
9
+ *
10
+ * @author ruoyi
11
+ * @date 2025-07-08
12
+ */
13
+public interface BaseSeizeItemMapper {
14
+    /**
15
+     * 查询查获物品
16
+     *
17
+     * @param id 查获物品主键
18
+     * @return 查获物品
19
+     */
20
+    public BaseSeizeItem selectBaseSeizeItemById(Long id);
21
+
22
+    /**
23
+     * 查询查获物品列表
24
+     *
25
+     * @param baseSeizeItem 查获物品
26
+     * @return 查获物品集合
27
+     */
28
+    public List<BaseSeizeItem> selectBaseSeizeItemList(BaseSeizeItem baseSeizeItem);
29
+
30
+    /**
31
+     * 新增查获物品
32
+     *
33
+     * @param baseSeizeItem 查获物品
34
+     * @return 结果
35
+     */
36
+    public int insertBaseSeizeItem(BaseSeizeItem baseSeizeItem);
37
+
38
+    /**
39
+     * 修改查获物品
40
+     *
41
+     * @param baseSeizeItem 查获物品
42
+     * @return 结果
43
+     */
44
+    public int updateBaseSeizeItem(BaseSeizeItem baseSeizeItem);
45
+
46
+    /**
47
+     * 删除查获物品
48
+     *
49
+     * @param id 查获物品主键
50
+     * @return 结果
51
+     */
52
+    public int deleteBaseSeizeItemById(Long id);
53
+
54
+    /**
55
+     * 批量删除查获物品
56
+     *
57
+     * @param ids 需要删除的数据主键集合
58
+     * @return 结果
59
+     */
60
+    public int deleteBaseSeizeItemByIds(Long[] ids);
61
+
62
+    /**
63
+     * 根据物品名称,获取物品类型
64
+     *
65
+     * @param name 名称
66
+     * @return
67
+     */
68
+    public String getItemTypeByName(String name);
69
+}

+ 61 - 0
airport-system/src/main/java/com/sundot/airport/system/mapper/SysAppMapper.java

@@ -0,0 +1,61 @@
1
+package com.sundot.airport.system.mapper;
2
+
3
+import java.util.List;
4
+
5
+import com.sundot.airport.system.domain.SysApp;
6
+
7
+/**
8
+ * 应用Mapper接口
9
+ *
10
+ * @author ruoyi
11
+ * @date 2025-11-20
12
+ */
13
+public interface SysAppMapper {
14
+    /**
15
+     * 查询应用
16
+     *
17
+     * @param appId 应用主键
18
+     * @return 应用
19
+     */
20
+    public SysApp selectSysAppByAppId(Long appId);
21
+
22
+    /**
23
+     * 查询应用列表
24
+     *
25
+     * @param sysApp 应用
26
+     * @return 应用集合
27
+     */
28
+    public List<SysApp> selectSysAppList(SysApp sysApp);
29
+
30
+    /**
31
+     * 新增应用
32
+     *
33
+     * @param sysApp 应用
34
+     * @return 结果
35
+     */
36
+    public int insertSysApp(SysApp sysApp);
37
+
38
+    /**
39
+     * 修改应用
40
+     *
41
+     * @param sysApp 应用
42
+     * @return 结果
43
+     */
44
+    public int updateSysApp(SysApp sysApp);
45
+
46
+    /**
47
+     * 删除应用
48
+     *
49
+     * @param appId 应用主键
50
+     * @return 结果
51
+     */
52
+    public int deleteSysAppByAppId(Long appId);
53
+
54
+    /**
55
+     * 批量删除应用
56
+     *
57
+     * @param appIds 需要删除的数据主键集合
58
+     * @return 结果
59
+     */
60
+    public int deleteSysAppByAppIds(Long[] appIds);
61
+}

+ 85 - 0
airport-system/src/main/java/com/sundot/airport/system/mapper/SysAppRoleMapper.java

@@ -0,0 +1,85 @@
1
+package com.sundot.airport.system.mapper;
2
+
3
+import java.util.List;
4
+
5
+import com.sundot.airport.system.domain.SysAppRole;
6
+
7
+/**
8
+ * 应用和角色关联Mapper接口
9
+ *
10
+ * @author ruoyi
11
+ * @date 2025-11-20
12
+ */
13
+public interface SysAppRoleMapper {
14
+    /**
15
+     * 查询应用和角色关联
16
+     *
17
+     * @param appId 应用和角色关联主键
18
+     * @return 应用和角色关联
19
+     */
20
+    public List<SysAppRole> selectSysAppRoleByAppId(Long appId);
21
+
22
+    /**
23
+     * 查询应用和角色关联
24
+     *
25
+     * @param roleId 应用和角色关联主键
26
+     * @return 应用和角色关联
27
+     */
28
+    public List<SysAppRole> selectSysAppRoleByRoleId(Long roleId);
29
+
30
+    /**
31
+     * 查询应用和角色关联列表
32
+     *
33
+     * @param sysAppRole 应用和角色关联
34
+     * @return 应用和角色关联集合
35
+     */
36
+    public List<SysAppRole> selectSysAppRoleList(SysAppRole sysAppRole);
37
+
38
+    /**
39
+     * 新增应用和角色关联
40
+     *
41
+     * @param sysAppRole 应用和角色关联
42
+     * @return 结果
43
+     */
44
+    public int insertSysAppRole(SysAppRole sysAppRole);
45
+
46
+    /**
47
+     * 删除应用和角色关联
48
+     *
49
+     * @param appId 应用和角色关联主键
50
+     * @return 结果
51
+     */
52
+    public int deleteSysAppRoleByAppId(Long appId);
53
+
54
+    /**
55
+     * 删除应用和角色关联
56
+     *
57
+     * @param roleId 应用和角色关联主键
58
+     * @return 结果
59
+     */
60
+    public int deleteSysAppRoleByRoleId(Long roleId);
61
+
62
+    /**
63
+     * 批量删除应用和角色关联
64
+     *
65
+     * @param appIds 需要删除的数据主键集合
66
+     * @return 结果
67
+     */
68
+    public int deleteSysAppRoleByAppIds(Long[] appIds);
69
+
70
+    /**
71
+     * 批量删除应用和角色关联
72
+     *
73
+     * @param roleIds 需要删除的数据主键集合
74
+     * @return 结果
75
+     */
76
+    public int deleteSysAppRoleByRoleIds(Long[] roleIds);
77
+
78
+    /**
79
+     * 批量新增应用和角色关联
80
+     *
81
+     * @param list 应用和角色关联列表
82
+     * @return 结果
83
+     */
84
+    public int batchAppRole(List<SysAppRole> list);
85
+}

+ 76 - 0
airport-system/src/main/java/com/sundot/airport/system/mapper/SysConfigMapper.java

@@ -0,0 +1,76 @@
1
+package com.sundot.airport.system.mapper;
2
+
3
+import java.util.List;
4
+import com.sundot.airport.system.domain.SysConfig;
5
+
6
+/**
7
+ * 参数配置 数据层
8
+ * 
9
+ * @author ruoyi
10
+ */
11
+public interface SysConfigMapper
12
+{
13
+    /**
14
+     * 查询参数配置信息
15
+     * 
16
+     * @param config 参数配置信息
17
+     * @return 参数配置信息
18
+     */
19
+    public SysConfig selectConfig(SysConfig config);
20
+
21
+    /**
22
+     * 通过ID查询配置
23
+     * 
24
+     * @param configId 参数ID
25
+     * @return 参数配置信息
26
+     */
27
+    public SysConfig selectConfigById(Long configId);
28
+
29
+    /**
30
+     * 查询参数配置列表
31
+     * 
32
+     * @param config 参数配置信息
33
+     * @return 参数配置集合
34
+     */
35
+    public List<SysConfig> selectConfigList(SysConfig config);
36
+
37
+    /**
38
+     * 根据键名查询参数配置信息
39
+     * 
40
+     * @param configKey 参数键名
41
+     * @return 参数配置信息
42
+     */
43
+    public SysConfig checkConfigKeyUnique(String configKey);
44
+
45
+    /**
46
+     * 新增参数配置
47
+     * 
48
+     * @param config 参数配置信息
49
+     * @return 结果
50
+     */
51
+    public int insertConfig(SysConfig config);
52
+
53
+    /**
54
+     * 修改参数配置
55
+     * 
56
+     * @param config 参数配置信息
57
+     * @return 结果
58
+     */
59
+    public int updateConfig(SysConfig config);
60
+
61
+    /**
62
+     * 删除参数配置
63
+     * 
64
+     * @param configId 参数ID
65
+     * @return 结果
66
+     */
67
+    public int deleteConfigById(Long configId);
68
+
69
+    /**
70
+     * 批量删除参数信息
71
+     * 
72
+     * @param configIds 需要删除的参数ID
73
+     * @return 结果
74
+     */
75
+    public int deleteConfigByIds(Long[] configIds);
76
+}

+ 151 - 0
airport-system/src/main/java/com/sundot/airport/system/mapper/SysDeptMapper.java

@@ -0,0 +1,151 @@
1
+package com.sundot.airport.system.mapper;
2
+
3
+import java.util.List;
4
+
5
+import com.sundot.airport.common.core.domain.entity.SysUser;
6
+import org.apache.ibatis.annotations.Param;
7
+import com.sundot.airport.common.core.domain.entity.SysDept;
8
+
9
+/**
10
+ * 部门管理 数据层
11
+ *
12
+ * @author ruoyi
13
+ */
14
+public interface SysDeptMapper {
15
+    /**
16
+     * 查询部门管理数据
17
+     *
18
+     * @param dept 部门信息
19
+     * @return 部门信息集合
20
+     */
21
+    public List<SysDept> selectDeptList(SysDept dept);
22
+
23
+    /**
24
+     * 根据角色ID查询部门树信息
25
+     *
26
+     * @param roleId            角色ID
27
+     * @param deptCheckStrictly 部门树选择项是否关联显示
28
+     * @return 选中部门列表
29
+     */
30
+    public List<Long> selectDeptListByRoleId(@Param("roleId") Long roleId, @Param("deptCheckStrictly") boolean deptCheckStrictly);
31
+
32
+    /**
33
+     * 根据部门ID查询信息
34
+     *
35
+     * @param deptId 部门ID
36
+     * @return 部门信息
37
+     */
38
+    public SysDept selectDeptById(Long deptId);
39
+
40
+    /**
41
+     * 根据ID查询所有子部门
42
+     *
43
+     * @param deptId 部门ID
44
+     * @return 部门列表
45
+     */
46
+    public List<SysDept> selectChildrenDeptById(Long deptId);
47
+
48
+    /**
49
+     * 根据ID查询所有子部门(正常状态)
50
+     *
51
+     * @param deptId 部门ID
52
+     * @return 子部门数
53
+     */
54
+    public int selectNormalChildrenDeptById(Long deptId);
55
+
56
+    /**
57
+     * 是否存在子节点
58
+     *
59
+     * @param deptId 部门ID
60
+     * @return 结果
61
+     */
62
+    public int hasChildByDeptId(Long deptId);
63
+
64
+    /**
65
+     * 查询部门是否存在用户
66
+     *
67
+     * @param deptId 部门ID
68
+     * @return 结果
69
+     */
70
+    public int checkDeptExistUser(Long deptId);
71
+
72
+    /**
73
+     * 校验部门名称是否唯一
74
+     *
75
+     * @param deptName 部门名称
76
+     * @param parentId 父部门ID
77
+     * @return 结果
78
+     */
79
+    public SysDept checkDeptNameUnique(@Param("deptName") String deptName, @Param("parentId") Long parentId);
80
+
81
+    /**
82
+     * 新增部门信息
83
+     *
84
+     * @param dept 部门信息
85
+     * @return 结果
86
+     */
87
+    public int insertDept(SysDept dept);
88
+
89
+    /**
90
+     * 修改部门信息
91
+     *
92
+     * @param dept 部门信息
93
+     * @return 结果
94
+     */
95
+    public int updateDept(SysDept dept);
96
+
97
+    /**
98
+     * 修改所在部门正常状态
99
+     *
100
+     * @param deptIds 部门ID组
101
+     */
102
+    public void updateDeptStatusNormal(Long[] deptIds);
103
+
104
+    /**
105
+     * 修改子元素关系
106
+     *
107
+     * @param depts 子元素
108
+     * @return 结果
109
+     */
110
+    public int updateDeptChildren(@Param("depts") List<SysDept> depts);
111
+
112
+    /**
113
+     * 删除部门管理信息
114
+     *
115
+     * @param deptId 部门ID
116
+     * @return 结果
117
+     */
118
+    public int deleteDeptById(Long deptId);
119
+
120
+    /**
121
+     * 查询部们数据,包含所有上级
122
+     *
123
+     * @param deptId 部门信息 id
124
+     * @return 部们信息集合
125
+     */
126
+    public List<SysDept> selectAllDept(Long deptId);
127
+
128
+    /**
129
+     * 查询部门负责人
130
+     *
131
+     * @param deptId 部门ID
132
+     * @return 部门负责人信息
133
+     */
134
+    public List<SysUser> deptLeader(@Param("deptId") Long deptId, @Param("roleType") String roleType);
135
+
136
+    /**
137
+     * 获取部门下所有部门信息(包含父部门)
138
+     *
139
+     * @param dept 参数
140
+     * @return 用户信息集合
141
+     */
142
+    List<SysDept> selectDeptInfo(SysDept dept);
143
+
144
+    /**
145
+     * 根据部门ID列表查询信息
146
+     *
147
+     * @param list 部门ID列表
148
+     * @return 部门信息
149
+     */
150
+    public List<SysDept> selectDeptByIdList(List<Long> list);
151
+}

+ 95 - 0
airport-system/src/main/java/com/sundot/airport/system/mapper/SysDictDataMapper.java

@@ -0,0 +1,95 @@
1
+package com.sundot.airport.system.mapper;
2
+
3
+import java.util.List;
4
+import org.apache.ibatis.annotations.Param;
5
+import com.sundot.airport.common.core.domain.entity.SysDictData;
6
+
7
+/**
8
+ * 字典表 数据层
9
+ * 
10
+ * @author ruoyi
11
+ */
12
+public interface SysDictDataMapper
13
+{
14
+    /**
15
+     * 根据条件分页查询字典数据
16
+     * 
17
+     * @param dictData 字典数据信息
18
+     * @return 字典数据集合信息
19
+     */
20
+    public List<SysDictData> selectDictDataList(SysDictData dictData);
21
+
22
+    /**
23
+     * 根据字典类型查询字典数据
24
+     * 
25
+     * @param dictType 字典类型
26
+     * @return 字典数据集合信息
27
+     */
28
+    public List<SysDictData> selectDictDataByType(String dictType);
29
+
30
+    /**
31
+     * 根据字典类型和字典键值查询字典数据信息
32
+     * 
33
+     * @param dictType 字典类型
34
+     * @param dictValue 字典键值
35
+     * @return 字典标签
36
+     */
37
+    public String selectDictLabel(@Param("dictType") String dictType, @Param("dictValue") String dictValue);
38
+
39
+    /**
40
+     * 根据字典数据ID查询信息
41
+     * 
42
+     * @param dictCode 字典数据ID
43
+     * @return 字典数据
44
+     */
45
+    public SysDictData selectDictDataById(Long dictCode);
46
+
47
+    /**
48
+     * 查询字典数据
49
+     * 
50
+     * @param dictType 字典类型
51
+     * @return 字典数据
52
+     */
53
+    public int countDictDataByType(String dictType);
54
+
55
+    /**
56
+     * 通过字典ID删除字典数据信息
57
+     * 
58
+     * @param dictCode 字典数据ID
59
+     * @return 结果
60
+     */
61
+    public int deleteDictDataById(Long dictCode);
62
+
63
+    /**
64
+     * 批量删除字典数据信息
65
+     * 
66
+     * @param dictCodes 需要删除的字典数据ID
67
+     * @return 结果
68
+     */
69
+    public int deleteDictDataByIds(Long[] dictCodes);
70
+
71
+    /**
72
+     * 新增字典数据信息
73
+     * 
74
+     * @param dictData 字典数据信息
75
+     * @return 结果
76
+     */
77
+    public int insertDictData(SysDictData dictData);
78
+
79
+    /**
80
+     * 修改字典数据信息
81
+     * 
82
+     * @param dictData 字典数据信息
83
+     * @return 结果
84
+     */
85
+    public int updateDictData(SysDictData dictData);
86
+
87
+    /**
88
+     * 同步修改字典类型
89
+     * 
90
+     * @param oldDictType 旧字典类型
91
+     * @param newDictType 新旧字典类型
92
+     * @return 结果
93
+     */
94
+    public int updateDictDataType(@Param("oldDictType") String oldDictType, @Param("newDictType") String newDictType);
95
+}

+ 83 - 0
airport-system/src/main/java/com/sundot/airport/system/mapper/SysDictTypeMapper.java

@@ -0,0 +1,83 @@
1
+package com.sundot.airport.system.mapper;
2
+
3
+import java.util.List;
4
+import com.sundot.airport.common.core.domain.entity.SysDictType;
5
+
6
+/**
7
+ * 字典表 数据层
8
+ * 
9
+ * @author ruoyi
10
+ */
11
+public interface SysDictTypeMapper
12
+{
13
+    /**
14
+     * 根据条件分页查询字典类型
15
+     * 
16
+     * @param dictType 字典类型信息
17
+     * @return 字典类型集合信息
18
+     */
19
+    public List<SysDictType> selectDictTypeList(SysDictType dictType);
20
+
21
+    /**
22
+     * 根据所有字典类型
23
+     * 
24
+     * @return 字典类型集合信息
25
+     */
26
+    public List<SysDictType> selectDictTypeAll();
27
+
28
+    /**
29
+     * 根据字典类型ID查询信息
30
+     * 
31
+     * @param dictId 字典类型ID
32
+     * @return 字典类型
33
+     */
34
+    public SysDictType selectDictTypeById(Long dictId);
35
+
36
+    /**
37
+     * 根据字典类型查询信息
38
+     * 
39
+     * @param dictType 字典类型
40
+     * @return 字典类型
41
+     */
42
+    public SysDictType selectDictTypeByType(String dictType);
43
+
44
+    /**
45
+     * 通过字典ID删除字典信息
46
+     * 
47
+     * @param dictId 字典ID
48
+     * @return 结果
49
+     */
50
+    public int deleteDictTypeById(Long dictId);
51
+
52
+    /**
53
+     * 批量删除字典类型信息
54
+     * 
55
+     * @param dictIds 需要删除的字典ID
56
+     * @return 结果
57
+     */
58
+    public int deleteDictTypeByIds(Long[] dictIds);
59
+
60
+    /**
61
+     * 新增字典类型信息
62
+     * 
63
+     * @param dictType 字典类型信息
64
+     * @return 结果
65
+     */
66
+    public int insertDictType(SysDictType dictType);
67
+
68
+    /**
69
+     * 修改字典类型信息
70
+     * 
71
+     * @param dictType 字典类型信息
72
+     * @return 结果
73
+     */
74
+    public int updateDictType(SysDictType dictType);
75
+
76
+    /**
77
+     * 校验字典类型称是否唯一
78
+     * 
79
+     * @param dictType 字典类型
80
+     * @return 结果
81
+     */
82
+    public SysDictType checkDictTypeUnique(String dictType);
83
+}

+ 0 - 0
airport-system/src/main/java/com/sundot/airport/system/mapper/SysDynamicSqlMapper.java


Some files were not shown because too many files changed in this diff