Эх сурвалжийг харах

Merge branch 'V0.0.2' of http://10.87.10.227:4000/jzyd_yyds/soc into V0.0.2

zhulu 2 жил өмнө
parent
commit
d74bed9382
100 өөрчлөгдсөн 2189 нэмэгдсэн , 144 устгасан
  1. 7 0
      project_data/sql/0.0.2/quartz/quartz.sql
  2. 99 5
      project_data/sql/0.0.2/soc/soc.sql
  3. 21 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteProtectionService.java
  4. 4 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteRoleService.java
  5. 4 3
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/SysUser.java
  6. 32 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/dto/ProtectionDTO.java
  7. 30 0
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteProtectionFallbackFactory.java
  8. 6 1
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteRoleFallbackFactory.java
  9. 1 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/constant/ErrorMsgConstants.java
  10. 21 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/panel/adapter/PanelAdapter.java
  11. 22 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/panel/dto/PanelListDto.java
  12. 59 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/panel/enums/PanelTypeEnums.java
  13. 32 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/panel/vo/PanelListVo.java
  14. 23 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/panel/vo/PanelResultVo.java
  15. 9 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/mapper/TMonitoringRetrievalPlanMapper.java
  16. 9 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/service/impl/TMonitoringRetrievalPlanServiceImpl.java
  17. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/mapper/CoreDrillTaskMapper.java
  18. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/ICoreDrillTaskService.java
  19. 7 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java
  20. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/mapper/CoreEduTrainingTaskMapper.java
  21. 3 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/ICoreEduTrainingTaskService.java
  22. 7 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java
  23. 35 17
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/service/impl/CoreResumptionConfigurationServiceImpl.java
  24. 39 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/panel/controller/PanelController.java
  25. 6 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/panel/mapper/PanelMapper.java
  26. 11 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/panel/service/PanelService.java
  27. 177 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/panel/service/impl/PanelServiceImpl.java
  28. 2 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/AppRuleController.java
  29. 9 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/ProtectionController.java
  30. 5 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/domain/AppResumptionData.java
  31. 2 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/domain/Protection.java
  32. 5 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/dto/protection/ProtectionPageDto.java
  33. 65 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/controller/GxResumptionController.java
  34. 36 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/service/ResumptionService.java
  35. 336 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/service/ResumptionServiceImpl.java
  36. 31 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/AreaResumptionVo.java
  37. 48 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionItemVo.java
  38. 47 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionNFCVo.java
  39. 91 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionPlanVo.java
  40. 50 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionPointVo.java
  41. 71 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionTaskDetailVo.java
  42. 37 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionTaskListVo.java
  43. 38 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionTaskVo.java
  44. 9 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppPlanMapper.java
  45. 6 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppResumptionDataMapper.java
  46. 5 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppResumptionDataNfcMapper.java
  47. 5 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppResumptionDataRemarkimgMapper.java
  48. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppRulePointMapper.java
  49. 24 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/ResumptionMapper.java
  50. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/IProtectionService.java
  51. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/ResumptionService.java
  52. 6 5
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppRuleItemServiceImpl.java
  53. 15 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppRuleServiceImpl.java
  54. 18 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/ProtectionServiceImpl.java
  55. 5 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/ResumptionRecordServiceImpl.java
  56. 8 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/ResumptionServiceImpl.java
  57. 3 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/task/ResumptionTaskBusiness.java
  58. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/vo/WorkTimeUpdateResumption.java
  59. 2 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/vo/appRuleItem/RuleTreeItem.java
  60. 19 14
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/vo/resumptionRecord/ResumptionRecordPageVo.java
  61. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/mapper/CoreMonitoringRetrievalTaskMapper.java
  62. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/service/ICoreMonitoringRetrievalTaskService.java
  63. 6 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/service/impl/CoreMonitoringRetrievalTaskServiceImpl.java
  64. 4 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/mapper/CoreSafetyTaskMapper.java
  65. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/mapper/SafetyCheckRulePointMapper.java
  66. 5 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/ICoreSafetyTaskService.java
  67. 7 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/CoreSafetyTaskServiceImpl.java
  68. 10 9
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/SafetyCheckRuleItemServiceImpl.java
  69. 15 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/SafetyCheckRuleServiceImpl.java
  70. 6 0
      soc-modules/soc-modules-core/src/main/resources/mapper/access/TMonitoringRetrievalPlanMapper.xml
  71. 26 0
      soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillTaskMapper.xml
  72. 24 0
      soc-modules/soc-modules-core/src/main/resources/mapper/edu/CoreEduTrainingTaskMapper.xml
  73. 1 1
      soc-modules/soc-modules-core/src/main/resources/mapper/information/CoreMessageSendMapper.xml
  74. 25 0
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppPlanMapper.xml
  75. 3 0
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppResumptionDataMapper.xml
  76. 3 0
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppResumptionDataNfcMapper.xml
  77. 3 0
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppResumptionDataRemarkimgMapper.xml
  78. 1 1
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppRuleItemMapper.xml
  79. 1 1
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppRuleMapper.xml
  80. 4 1
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppRulePointMapper.xml
  81. 55 0
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/ResumptionMapper.xml
  82. 21 0
      soc-modules/soc-modules-core/src/main/resources/mapper/retrieval/CoreMonitoringRetrievalTaskMapper.xml
  83. 20 0
      soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/CoreSafetyTaskMapper.xml
  84. 1 1
      soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/SafetyCheckRuleItemMapper.xml
  85. 1 1
      soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/SafetyCheckRuleMapper.xml
  86. 5 2
      soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/SafetyCheckRulePointMapper.xml
  87. 68 4
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserController.java
  88. 7 8
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserRoleController.java
  89. 1 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysWorkTimeController.java
  90. 2 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysUserMapper.java
  91. 2 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysUserRoleService.java
  92. 3 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysUserService.java
  93. 25 55
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysDeviceServiceImpl.java
  94. 8 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysUserRoleServiceImpl.java
  95. 16 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysUserServiceImpl.java
  96. 4 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysWorkTimeServiceImpl.java
  97. 0 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/Event.java
  98. 37 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/UserExport.java
  99. 34 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/UserManagerConverter.java
  100. 39 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/UserStatusConverter.java

+ 7 - 0
project_data/sql/0.0.2/quartz/quartz.sql

@@ -1 +1,8 @@
 INSERT INTO `sys_job`(`job_id`, `job_name`, `job_group`, `invoke_target`, `cron_expression`, `misfire_policy`, `concurrent`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (129, '恶劣天气预警', 'DEFAULT', 'WeatherTask.getDataFromApi', '0 0 7,10,14,17 * * ? *', '1', '1', '0', '超级管理员', '2023-09-25 11:46:50', '', NULL);
+INSERT INTO `sys_job` VALUES (128, '履职临期提醒(除了每日的)', 'DEFAULT', 'CoreMessageSendTask.resumptionRemind', '0 0 0 * * ?', '1', '1', '0', '超级管理员', '2023-09-22 17:03:31', '', '2023-09-22 20:29:13');
+INSERT INTO `sys_job` VALUES (125, '消息发送管理(每日凌晨零点)', 'DEFAULT', 'CoreMessageSendTask.messageSendTask', '0 0 0 * * ? *', '1', '1', '0', '超级管理员', '2023-09-21 12:30:22', '超级管理员', '2023-09-22 19:04:39');
+delete from `sys_job` where job_name='生成每周安全检查任务';
+INSERT INTO `sys_job`(`job_id`, `job_name`, `job_group`, `invoke_target`, `cron_expression`, `misfire_policy`, `concurrent`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES (130, '生成每周安全检查任务', 'DEFAULT', 'CoreSafetyCheckTask.buildWeekTask', '1 1 1 ? * 2', '2', '1', '0', '超级管理员', '2023-09-22 16:34:24', '', '2023-09-22 16:34:55');
+
+DELETE from `sys_job` WHERE invoke_target='CoreResumptionTask.updateTaskStatus';
+INSERT INTO `sys_job` ( `job_name`, `job_group`, `invoke_target`, `cron_expression`, `misfire_policy`, `concurrent`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ( '每天更新履职任务状态', 'DEFAULT', 'CoreResumptionTask.updateTaskStatus', '0 0 1 * * ?', '1', '0', '0', 'jwx', '2023-09-27 17:50:48', '', NULL);

+ 99 - 5
project_data/sql/0.0.2/soc/soc.sql

@@ -133,6 +133,12 @@ BEGIN
         ALTER TABLE `sync_fjnx_org_business_relation`
             ADD COLUMN `tree_show_parent_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '机构树上显示的父级编码' AFTER `business_parent_code`;
     END IF;
+ IF  EXISTS( SELECT *
+      FROM INFORMATION_SCHEMA.COLUMNS
+      WHERE TABLE_NAME = 'core_protection'
+      AND COLUMN_NAME = 'device_id') THEN
+ALTER TABLE core_protection MODIFY device_id bigint
+END IF;
 
     IF NOT EXISTS(SELECT *
                   FROM information_schema.columns
@@ -1013,6 +1019,26 @@ END IF;
 END$$
 DELIMITER ;
 
+
+CALL add_column_if_not_exists();
+DROP PROCEDURE add_column_if_not_exists;
+DELIMITER $$
+CREATE PROCEDURE add_column_if_not_exists()
+BEGIN
+  IF NOT EXISTS (
+      SELECT *
+      FROM INFORMATION_SCHEMA.COLUMNS
+      WHERE TABLE_NAME = 'core_resumption_data'
+      AND COLUMN_NAME = 'data_status'
+  )
+  THEN
+ALTER TABLE core_resumption_data
+    ADD COLUMN `data_status` int NULL DEFAULT NULL COMMENT '数据状态:1保存未处理,2保存已处理';
+END IF;
+END$$
+DELIMITER ;
+
+
 CALL add_column_if_not_exists();
 DROP PROCEDURE add_column_if_not_exists;
 
@@ -1291,16 +1317,46 @@ SET FOREIGN_KEY_CHECKS = 1;
 DELETE from `sys_dict_type` WHERE dict_type='question_confirm_status' or dict_type='question_reform_status';
 INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( '问题确认状态', 'question_confirm_status', '0', '超级管理员', '2023-09-13 18:14:59', '', NULL, NULL);
 INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( '问题整改状态', 'question_reform_status', '0', '超级管理员', '2023-09-13 18:15:18', '', NULL, NULL);
-
-DELETE from `sys_dict_data` WHERE dict_type in ('question_confirm_status','question_reform_status');
+delete  from 'sys_dict_type' WHERE dict_type='send_time_type' or dict_type='message_type' or dict_type ='send_status';
+INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( '发送时间类型', 'send_time_type', '0', '超级管理员', '2023-09-13 18:14:59', '', NULL, NULL);
+INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( '消息类型', 'message_type', '0', '超级管理员', '2023-09-13 18:14:59', '', NULL, NULL);
+INSERT INTO `sys_dict_type` (`dict_name`, `dict_type`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( '发送状态', 'send_status', '0', '超级管理员', '2023-09-13 18:14:59', '', NULL, NULL);
+
+DELETE from `sys_dict_data` WHERE dict_type in ('post_no_pass','question_confirm_status','question_reform_status','send_status','message_type','send_time_type');
 INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 0, '待确认', '0', 'question_confirm_status', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:15:44', '', NULL, NULL);
 INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1, '提出异议', '1', 'question_confirm_status', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:16:01', '', NULL, NULL);
 INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 2, '已确认', '2', 'question_confirm_status', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:16:18', '', NULL, NULL);
 INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 3, '已关闭', '3', 'question_confirm_status', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:16:30', '', NULL, NULL);
 INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 0, '未整改', '10', 'question_reform_status', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:38', '', NULL, NULL);
 INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES ( 1, '已整改', '11', 'question_reform_status', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:47', '', NULL, NULL);
-
-delete from `sys_menu` WHERE id in (2325,2326,2327,2328,2329,2330,2331,2332,2333,2334,2335,2336,2338,2339,2340,2341,2342,2344,2345,2346,2347,2348,2349,2350,2351,2352,2353,2354,2355,2356,2357,2317,2318);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+ VALUES ( 1, '已发送', '1', 'send_status', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:47', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( 2, '待发送', '2', 'send_status', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:47', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( 0, '公告', '0', 'message_type', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:47', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( 1, '通知', '1', 'message_type', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:47', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( 1, '立即发送', '1', 'send_time_type', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:47', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( 2, '指定时间发送', '2', 'send_time_type', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:47', '', NULL, NULL);
+
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( 1, '无', '1', 'post_no_pass', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:47', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( 2, '考试不合格', '2', 'post_no_pass', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:47', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( 3, '不符合参考条件为参考', '3', 'post_no_pass', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:47', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( 4, '新任职保卫人员未参考', '4', 'post_no_pass', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:47', '', NULL, NULL);
+INSERT INTO `sys_dict_data` (`dict_sort`, `dict_label`, `dict_value`, `dict_type`, `css_class`, `list_class`, `is_default`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES ( 5, '非必考对象', '5', 'post_no_pass', NULL, 'default', 'N', '0', '超级管理员', '2023-09-13 18:17:47', '', NULL, NULL);
+
+delete from `sys_menu` WHERE id in (01706851077007085569,01706851219965743105,01706854057534033922,01706854338376241153,2325,2326,2327,2328,2329,2330,2331,2332,2333,2334,2335,2336,2338,2339,2340,2341,2342,2344,2345,2346,2347,2348,2349,2350,2351,2352,2353,2354,2355,2356,2357,2317,2318,00000000000000002324,01706850786660585473,01706850961911189505);
 INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (00000000000000002325, '安全检查登记', 2136, 4, '/securityCheckRegister', NULL, NULL, 1, 0, 'C', '0', '0', 'core:safetycheck:appregister', '0', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFYAAABWCAMAAABiiJHFAAAAM1BMVEVHcEzYvXHYvXHYvXHYvXHYvXHYvXHYvXHYvXHYvXHYvXHYvXHYvXHYvXHYvXHYvXHYvXF4gE2CAAAAEHRSTlMAV5zcH/72wO9wPIf7z+evrVcrhwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAuBJREFUWIXtmddu7CAQhode3Ob9nzYyNjaYYpZFOidS/qtkhb/FUxkW/tSmSVE73FRkRkRcRmMdFXEaSzWIzBqB61jshAgAC+qx2BVRgZ0RySgiWTGWWPj3VCswEetDKe1FYUmpiBz8Akabqex+XoHOYQ3cf8tGkxgMsSyH5Tz4pzE6QhfJ6Eu85j3gbrVFR+Qjm9muILFptiZshJAciIq1WaDRGvU5FmWmbG34NRZRrtFmF/2M5D7sq/6w/wW2bekna381li+VNt6PlbXK14O1xrqaTgG4eYp0YxXOfHOdi8s0rGgvdkOcj6aicuHai3XtUexvS0rtt89l9HxXmFQi3o8dufZXY4mqHFy6sXx4ljlpd7S3SZaZbizVjLPjqDAybpXLsnl0llnts2zLUEUvFoCKY7bhq07UXWr2Db9MeH9Z9g3WVkfHLiyZ9twV5NF0VG5tO1Yh0tUV8kc63Gvloqhpuw+4sNOVpNEEciTCx7pfzAg/dkVNp2/uDexF5FxnWPd9m/kMC/UJkV6eFOzVwK3enebI4uxlSE2weTskY6Co2+uBpSLXdHLHJ1Gd1mMsyWdZdsKu7vfCGjUBFyhsFGDOhLm6jkcnecXuWSbdJVWYDrJwJeLUcsI2IviCWwUTaHdhUI6z27b7VZ3zV+ig/RCdoTJ3EKxsN3AZP035UMay8nyyXC8CbEHPK6zTV+4lisHwjk0cdkSWe4niVcg7NtmsKzW0/uArlngveWPQ4NPi1dsr1lwwepP8Ma14vDx8kB5jTvn4cr7fQ3ANqeUIywRlKL/CYYFr1z74VSSLr1lKzFN2n1eDffE4XYr30dnihOFz5wrtUyVMwmL2FuvIZTxfeYRJNiJLVICpypX3BfxpyfD1apWcb+nQeOuK/MMQPKTOFWqDbmOKqFF++QMCway+/v2A5qitF8+fcQdQfUsKI28EdW8dIVi3nMMawdt5mT2zcdBD+zQ8GPkvBAA/0zOEJ7oqo7UAAAAASUVORK5CYII=', NULL, '超级管理员', '2023-09-21 11:27:50', '超级管理员', '2023-09-22 16:44:12', '');
 INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (00000000000000002326, '安全检查', 0, 7, 'safetycheck', NULL, NULL, 1, 0, 'M', '0', '0', '', '1', 'nested', NULL, '超级管理员', '2023-09-21 15:33:41', 'jwx', '2023-09-23 11:09:29', '');
 INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (00000000000000002327, '安全检查内容库定义', 2326, 1, 'rule', 'safetycheck/rule/index', NULL, 1, 0, 'C', '0', '0', 'safetycheck:rule', '1', 'excel', NULL, '超级管理员', '2023-09-21 15:35:12', 'jwx', '2023-09-23 12:23:07', '');
@@ -1334,5 +1390,43 @@ INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `order_num`, `path`, `co
 INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (00000000000000002357, '删除', 2317, 5, '', NULL, NULL, 1, 0, 'F', '0', '0', 'core:checkplan:remove', '1', NULL, NULL, '超级管理员', '2023-09-25 11:35:35', '', NULL, '');
 INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (00000000000000002317, '检查计划', 2326, 3, 'check/plan', 'check/index', NULL, 1, 0, 'C', '0', '0', '', '1', 'documentation', NULL, '超级管理员', '2023-09-21 10:35:38', '超级管理员', '2023-09-22 09:42:15', '');
 INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (00000000000000002318, '检查任务', 2326, 4, 'check/task/index', 'check/task/index', NULL, 1, 0, 'C', '0', '0', '', '1', 'documentation', NULL, '超级管理员', '2023-09-21 10:37:52', '超级管理员', '2023-09-22 09:42:43', '');
+INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES (00000000000000002324, '信息发送管理', 2207, 3, 'send', 'information/send/index', NULL, 1, 1, 'C', '0', '0', 'core:send:list', '1', 'email', NULL, '超级管理员', '2023-09-21 10:37:52', '超级管理员', '2023-09-22 09:42:43', '');
+
+INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES (01706850786660585473, '新增', 2324, 1, NULL, NULL, NULL, 1, 0, 'F', '0', '0', 'core:send:add', '1', NULL, NULL, '超级管理员', '2023-09-21 10:37:52', '超级管理员', '2023-09-22 09:42:43', '');
+INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES (01706850961911189505, '删除', 2324, 2, NULL, NULL, NULL, 1, 0, 'F', '0', '0', 'core:send:remove', '1', NULL, NULL, '超级管理员', '2023-09-21 10:37:52', '超级管理员', '2023-09-22 09:42:43', '');
+INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES (01706851077007085569, '修改', 2324, 3, NULL, NULL, NULL, 1, 0, 'F', '0', '0', 'core:send:edit', '1', NULL, NULL, '超级管理员', '2023-09-21 10:37:52', '超级管理员', '2023-09-22 09:42:43', '');
+INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES (01706851219965743105, '详情', 2324, 4, NULL, NULL, NULL, 1, 0, 'F', '0', '0', 'core:send:query', '1', NULL, NULL, '超级管理员', '2023-09-21 10:37:52', '超级管理员', '2023-09-22 09:42:43', '');
+
+INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES (01706854057534033922, '履职临期提醒', 2207, 3, 'configuration', 'information/configuration/index', NULL, 1, 1, 'C', '0', '0', 'core:configuration:query', '1', 'dashboard', NULL, '超级管理员', '2023-09-21 10:37:52', '超级管理员', '2023-09-22 09:42:43', '');
+INSERT INTO `sys_menu` (`id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`)
+VALUES (01706854338376241153, '提交', 1706854057534033922, 1, NULL, NULL, NULL, 1, 0, 'F', '0', '0', 'core:configuration:add', '1', NULL, NULL, '超级管理员', '2023-09-21 10:37:52', '超级管理员', '2023-09-22 09:42:43', '');
+
 -- 处理自增id步长问题
-alter table core_drill_dictionary auto_increment = 10000;
+alter table core_drill_dictionary auto_increment = 10000;
+
+
+UPDATE `sys_dict_data` SET  `dict_label` = '未上报' WHERE `dict_type` = 'protection_status' and `dict_value` = '2';
+UPDATE `sys_dict_data` SET `dict_sort` = 900 WHERE `dict_value` = '1' and `dict_type` = 'sys_org_type';
+UPDATE `sys_dict_data` SET `dict_sort` = 800 WHERE `dict_value` = '2' and `dict_type` = 'sys_org_type';
+UPDATE `sys_dict_data` SET `dict_sort` = 200 WHERE `dict_value` = '3' and `dict_type` = 'sys_org_type';
+UPDATE `sys_dict_data` SET `dict_sort` = 100 WHERE `dict_value` = '4' and `dict_type` = 'sys_org_type';
+UPDATE `sys_dict_data` SET `dict_sort` = 300 WHERE `dict_value` = '5' and `dict_type` = 'sys_org_type';
+UPDATE `sys_dict_data` SET `dict_sort` = 600 WHERE `dict_value` = '6' and `dict_type` = 'sys_org_type';
+UPDATE `sys_dict_data` SET `dict_sort` = 700 WHERE `dict_value` = '10' and `dict_type` = 'sys_org_type';
+UPDATE `sys_dict_data` SET `dict_sort` = 500 WHERE `dict_value` = '8' and `dict_type` = 'sys_org_type';
+UPDATE `sys_dict_data` SET `dict_sort` = 400 WHERE `dict_value` = '7' and `dict_type` = 'sys_org_type';
+UPDATE `sys_dict_data` SET `dict_sort` = 1000 WHERE `dict_value` = '9' and `dict_type` = 'sys_org_type';
+alter table core_drill_dictionary auto_increment = 10000;
+-- 用户导出管理人员
+delete from `sys_menu` where `menu_name` ='用户导出管理人员';
+INSERT INTO `sys_menu`(`id`, `menu_name`, `parent_id`, `order_num`, `path`, `component`, `query`, `is_frame`, `is_cache`, `menu_type`, `visible`, `status`, `perms`, `platform_type`, `icon`, `image_path`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (00000000000000002358, '用户导出管理人员', 100, 9, '', NULL, NULL, 1, 0, 'F', '0', '0', 'system:user:exportManager', '1', NULL, NULL, '演示安全检查', '2023-09-27 16:10:58', '', NULL, '');
+
+ALTER TABLE `core_protection` 
+MODIFY COLUMN `device_id` bigint NULL DEFAULT NULL COMMENT '设备ID' AFTER `id`,
+MODIFY COLUMN `alarm_host_code` bigint NULL DEFAULT NULL COMMENT '报警主机唯一标识' AFTER `org_name`;

+ 21 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteProtectionService.java

@@ -0,0 +1,21 @@
+package com.xunmei.system.api;
+
+import com.xunmei.common.core.constant.ServiceNameConstants;
+import com.xunmei.common.core.web.domain.AjaxResult;
+import com.xunmei.system.api.dto.ProtectionDTO;
+import com.xunmei.system.api.factory.RemoteOrgFallbackFactory;
+import com.xunmei.system.api.factory.RemoteProtectionFallbackFactory;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * @author :LuoWei
+ * @date : 2023/9/27
+ */
+
+@FeignClient(contextId = "remoteProtectionService", value = ServiceNameConstants.CORE_SERVICE, fallbackFactory = RemoteProtectionFallbackFactory.class)
+public interface RemoteProtectionService {
+    @PostMapping("/resumption/protection/addByDevice")
+    public AjaxResult addByDevice(@RequestBody ProtectionDTO editDto);
+}

+ 4 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteRoleService.java

@@ -31,4 +31,8 @@ public interface RemoteRoleService {
 
     @GetMapping("/role/selectUserByRoleNameAndOrgId")
     List<SysUser> selectUserByRoleNameAndOrgId(@RequestParam(value = "roleName") String roleName, @RequestParam(value = "orgId") Long orgId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
+    @GetMapping("/userRole/getUserRoleId")
+    List<Long> getUserRoleId(@RequestParam(value = "userId") Long userId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
 }

+ 4 - 3
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/SysUser.java

@@ -244,16 +244,17 @@ public class SysUser extends BaseEntity {
 
 
     @TableField(exist = false)
-    private String  roleNames;
+    private String roleNames;
 
     @TableField(exist = false)
     private Long[] roleIds;
 
     @TableField(exist = false)
     private List<SysRole> roles;
-
     @TableField(exist = false)
-    private Integer  orgType;
+    private Boolean onlyManager;
+    @TableField(exist = false)
+    private Integer orgType;
 
     public boolean isAdmin() {
         return isAdmin(this.getId());

+ 32 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/dto/ProtectionDTO.java

@@ -0,0 +1,32 @@
+package com.xunmei.system.api.dto;
+
+import lombok.Data;
+
+/**
+ * @author :LuoWei
+ * @date : 2023/9/27
+ */
+@Data
+public class ProtectionDTO {
+    Long id;
+
+    /**
+     * 所属机构
+     */
+    Long orgId;
+
+    String orgPath;
+
+    String orgName;
+
+    /**
+     * 防区名称
+     */
+    String name;
+
+    /**
+     * 是否24小时防区
+     */
+    Integer allHour;
+    private Long deviceId;
+}

+ 30 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteProtectionFallbackFactory.java

@@ -0,0 +1,30 @@
+package com.xunmei.system.api.factory;
+
+import com.xunmei.common.core.web.domain.AjaxResult;
+import com.xunmei.system.api.RemoteOrgService;
+import com.xunmei.system.api.RemoteProtectionService;
+import com.xunmei.system.api.dto.ProtectionDTO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.cloud.openfeign.FallbackFactory;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author :LuoWei
+ * @date : 2023/9/27
+ */
+@Component
+public class RemoteProtectionFallbackFactory implements FallbackFactory<RemoteProtectionService> {
+    private static final Logger log = LoggerFactory.getLogger(RemoteProtectionFallbackFactory.class);
+    @Override
+    public RemoteProtectionService create(Throwable cause) {
+        log.error("机构服务调用失败:{}", cause.getMessage());
+        return new RemoteProtectionService(){
+
+            @Override
+            public AjaxResult addByDevice(ProtectionDTO editDto) {
+                return null;
+            }
+        };
+    }
+}

+ 6 - 1
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteRoleFallbackFactory.java

@@ -26,7 +26,7 @@ public class RemoteRoleFallbackFactory implements FallbackFactory<RemoteRoleServ
 
     @Override
     public RemoteRoleService create(Throwable cause) {
-        log.error("用户服务调用失败:{}", cause.getMessage());
+        log.error("用户角色服务调用失败:{}", cause.getMessage());
         return new RemoteRoleService() {
             @Override
             public SysRole getRoleById(Long id, String source) {
@@ -47,6 +47,11 @@ public class RemoteRoleFallbackFactory implements FallbackFactory<RemoteRoleServ
             public List<SysUser> selectUserByRoleNameAndOrgId(String roleName, Long orgId, String inner) {
                 return null;
             }
+
+            @Override
+            public List<Long> getUserRoleId(Long userId, String source) {
+                return null;
+            }
         };
 
     }

+ 1 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/constant/ErrorMsgConstants.java

@@ -15,6 +15,7 @@ public class ErrorMsgConstants {
 
     public static final String CUR_USER_ORT_TYPE_ERROR = "当前用户所在机构类型无法确认!";
     public static final String QUERY_USER_DATA_ERROR = "获取用户信息失败!";
+    public static final String QUERY_USER_ROLE_ERROR = "获取当前用户角色信息失败!";
     public static final String QUERY_SYS_CONFIG_ERROR = "获取参数配置信息失败!";
     public static final String QUERY_CONFIG_ERROR = "获取系统参数配置失败!";
 }

+ 21 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/panel/adapter/PanelAdapter.java

@@ -0,0 +1,21 @@
+package com.xunmei.common.core.domain.panel.adapter;
+
+import cn.hutool.core.date.DateUtil;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Set;
+
+public class PanelAdapter {
+
+    public static PanelListDto getMapperSelectParam(Long orgId, List<Long> roleIdList, Long userId) {
+        PanelListDto panelListDto = new PanelListDto();
+        panelListDto.setUserId(userId);
+        panelListDto.setOrgId(orgId);
+        panelListDto.setStartTime(DateUtil.beginOfDay(new Date()));
+        panelListDto.setEndTime(DateUtil.endOfDay(new Date()));
+        panelListDto.setRoleIdList(roleIdList);
+        return panelListDto;
+    }
+}

+ 22 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/panel/dto/PanelListDto.java

@@ -0,0 +1,22 @@
+package com.xunmei.common.core.domain.panel.dto;
+
+import lombok.Builder;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+
+public class PanelListDto {
+
+    private Long userId;
+    private Long orgId;
+
+    private List<Long> roleIdList;
+
+
+    private Date startTime;
+    private Date endTime;
+
+}

+ 59 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/panel/enums/PanelTypeEnums.java

@@ -0,0 +1,59 @@
+package com.xunmei.common.core.domain.panel.enums;
+
+import com.xunmei.common.core.enums.drill.DrillDoStatus;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+@Getter
+@AllArgsConstructor
+public enum PanelTypeEnums {
+
+    RESUMPTION(0, "履职任务"),
+
+    PROTECTION(1, "布撤防"),
+
+    SAFETY_CHECK(2, "安全检查"),
+
+    MONITORING_RETRIEVAL(3, "监控调阅"),
+
+
+
+    DRILL(4, "预案演练"),
+
+    EDU_TRAINING(5, "教育培训"),
+
+    OTHER(6, "其他任务"),
+
+
+    ;
+
+
+    /**
+     * 所有枚举
+     */
+    private static final Map<Integer, PanelTypeEnums> enumMap = new LinkedHashMap<>();
+
+    static {
+        for (PanelTypeEnums enumNode : PanelTypeEnums.values()) {
+            enumMap.put(enumNode.code, enumNode);
+        }
+    }
+
+    private final Integer code;
+    private final String name;
+
+
+    public static String getName(Integer code) {
+        PanelTypeEnums e = enumMap.get(code);
+        return e != null ? e.getName() : "";
+    }
+
+    public static PanelTypeEnums getPanelTypeEnums(Integer code) {
+        return enumMap.get(code);
+
+    }
+
+}

+ 32 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/panel/vo/PanelListVo.java

@@ -0,0 +1,32 @@
+package com.xunmei.common.core.domain.panel.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+@Data
+public class PanelListVo {
+
+    @ApiModelProperty(value = "面板功能类型")
+    private Integer type;
+
+
+    @ApiModelProperty(value = "面板功能名称")
+    private String taskName;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "开始时间")
+    private Date startTime;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "开始时间")
+    private Date endTime;
+
+    @ApiModelProperty(value = "任务状态")
+    private int status;
+
+
+
+}

+ 23 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/panel/vo/PanelResultVo.java

@@ -0,0 +1,23 @@
+package com.xunmei.common.core.domain.panel.vo;
+
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PanelResultVo {
+
+    @ApiModelProperty(value = "任务类型")
+    private int taskType;
+
+    @ApiModelProperty(value = "任务类型名称")
+    private String taskTypeText;
+
+    @ApiModelProperty(value = "任务数量")
+    private int nums;
+
+    @ApiModelProperty(value = "任务信息")
+    private List<PanelListVo> dataList;
+}

+ 9 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/mapper/TMonitoringRetrievalPlanMapper.java

@@ -4,6 +4,7 @@ package com.xunmei.core.access.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xunmei.core.access.domain.TMonitoringRetrievalPlan;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -53,6 +54,14 @@ public interface TMonitoringRetrievalPlanMapper extends BaseMapper<TMonitoringRe
      * @return
      */
     int updatePlan(TMonitoringRetrievalPlan tMonitoringRetrievalPlan);
+
+    /**
+     * 根据父id修改状态
+     * @param status
+     * @param parentId
+     * @return
+     */
+    int updatePlanStatus(@Param("status") Integer status,@Param("parentId") Long parentId);
     /**
      * 删除监控调阅计划
      *

+ 9 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/service/impl/TMonitoringRetrievalPlanServiceImpl.java

@@ -321,9 +321,18 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
         TMonitoringRetrievalPlan plan = baseMapper.selectById(tMonitoringRetrievalPlan.getId());
         if (plan.getPlanStatus() != tMonitoringRetrievalPlan.getPlanStatus()) {
             if (tMonitoringRetrievalPlan.getPlanStatus() == 1) {
+                //删除任务
                 iCoreMonitoringRetrievalTaskService.updateDeleteTaskByPlanId(tMonitoringRetrievalPlan.getId(), 1);
+                //禁用子任务
+                if(null==plan.getParentId()){
+                    baseMapper.updatePlanStatus(1,tMonitoringRetrievalPlan.getId());
+                }
             } else {
+                //还原任务
                 iCoreMonitoringRetrievalTaskService.updateDeleteTaskByPlanId(tMonitoringRetrievalPlan.getId(), 0);
+                if(null==plan.getParentId()){
+                    baseMapper.updatePlanStatus(0,tMonitoringRetrievalPlan.getId());
+                }
             }
         }
         if (tMonitoringRetrievalPlan.getOrgType().equals("1")) {

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/mapper/CoreDrillTaskMapper.java

@@ -9,6 +9,8 @@ import com.xunmei.common.core.domain.drill.dto.CoreDrillTaskPageDto;
 import com.xunmei.common.core.domain.drill.dto.CoreDrillTaskRecPageDto;
 import com.xunmei.common.core.domain.drill.dto.CoreDrillTaskReportDto;
 import com.xunmei.common.core.domain.drill.vo.*;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -38,4 +40,6 @@ public interface CoreDrillTaskMapper extends BaseMapper<CoreDrillTask> {
     IPage<CoreDrillTaskRecTaskPageVo> selectRecTaskListPage(Page<Object> pageRequest, @Param("request") CoreDrillTaskRecPageDto request);
 
     int updateStatusById(@Param("drillTaskId") Long drillTaskId, @Param("recStatus") Integer recStatus);
+
+    List<PanelListVo> selectCurUserTaskList(@Param("request") PanelListDto request);
 }

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/ICoreDrillTaskService.java

@@ -6,6 +6,8 @@ import com.xunmei.common.core.domain.drill.domain.CoreDrillTask;
 import com.xunmei.common.core.domain.drill.domain.CoreDrillTaskToUser;
 import com.xunmei.common.core.domain.drill.dto.*;
 import com.xunmei.common.core.domain.drill.vo.*;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.core.web.page.TableDataInfo;
 
@@ -96,4 +98,6 @@ public interface ICoreDrillTaskService extends IService<CoreDrillTask> {
     TableDataInfo<CoreDrillTaskRecTaskPageVo> recTaskList(CoreDrillTaskRecPageDto request);
 
     int doRecTask(CoreDrillTaskDoRec request);
+
+    List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto);
 }

+ 7 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java

@@ -22,6 +22,8 @@ import com.xunmei.common.core.domain.drill.dto.*;
 import com.xunmei.common.core.domain.drill.vo.*;
 import com.xunmei.common.core.domain.edu.domain.CoreEduTrainingTaskToUser;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskReportVo;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.enums.ExportPdfType;
 import com.xunmei.common.core.enums.OrgTypeEnum;
 import com.xunmei.common.core.enums.drill.DrillDoStatus;
@@ -793,6 +795,11 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
             }
         }
     }
+
+    @Override
+    public List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto) {
+        return coreDrillTaskMapper.selectCurUserTaskList(panelListDto);
+    }
 }
 
 

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/mapper/CoreEduTrainingTaskMapper.java

@@ -9,6 +9,8 @@ import com.xunmei.common.core.domain.edu.dto.CoreEduTrainingTaskReportDto;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskDetailVo;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskPageVo;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskReportVo;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -34,4 +36,6 @@ public interface CoreEduTrainingTaskMapper extends BaseMapper<CoreEduTrainingTas
     Integer checkHasTaskIsDoneByPlanParentId(@Param("planId") Long planId);
 
     Integer updateStatusByIdList();
+
+    List<PanelListVo> selectCurUserTaskList(@Param("request") PanelListDto request);
 }

+ 3 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/ICoreEduTrainingTaskService.java

@@ -12,6 +12,8 @@ import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanDataVo;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskDetailVo;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskPageVo;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskReportVo;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.core.web.page.TableDataInfo;
 
@@ -97,4 +99,5 @@ public interface ICoreEduTrainingTaskService extends IService<CoreEduTrainingTas
     String updateEduTaskStatus();
 
 
+    List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto);
 }

+ 7 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java

@@ -25,6 +25,8 @@ import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanDataVo;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskDetailVo;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskPageVo;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskReportVo;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.enums.ExportPdfType;
 import com.xunmei.common.core.enums.edu.EduTrainingDoStatus;
 import com.xunmei.common.core.enums.edu.EduTrainingType;
@@ -623,6 +625,11 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         return "更新成功";
 
     }
+
+    @Override
+    public List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto) {
+        return coreEduTrainingTaskMapper.selectCurUserTaskList( panelListDto);
+    }
 }
 
 

+ 35 - 17
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/information/service/impl/CoreResumptionConfigurationServiceImpl.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.utils.StringUtils;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.core.information.service.ICoreMessageCenterService;
 import com.xunmei.system.api.RemoteJobService;
@@ -79,6 +80,18 @@ public class CoreResumptionConfigurationServiceImpl extends ServiceImpl<CoreResu
         return coreResumptionConfigurationMapper.selectList(new QueryWrapper<>(coreResumptionConfiguration));
     }
 
+    String split(String time) {
+        if (StringUtils.isEmpty(time)) {
+            return time;
+        }
+        if (time.indexOf(":") != -1) {
+            String[] split = time.split(":");
+            return split[0];
+        } else {
+            return time;
+        }
+    }
+
     /**
      * 新增履职任务定时提醒
      *
@@ -87,10 +100,15 @@ public class CoreResumptionConfigurationServiceImpl extends ServiceImpl<CoreResu
      */
     @Override
     public int insertCoreResumptionConfiguration(CoreResumptionConfigurationDTO coreResumptionConfiguration) {
+
         Long[] jobIds = {100l, 101L, 102L, 103L};
         remoteJobService.remoteRemove(jobIds, SecurityConstants.INNER);
         int insert = 0;
         for (CoreResumptionConfiguration c : coreResumptionConfiguration.getCoreResumptionConfiguration()) {
+            c.setFront(split(c.getFront()));
+            c.setCentre(split(c.getCentre()));
+            c.setAfter(split(c.getAfter()));
+            c.setAllDay(split(c.getAllDay()));
             if (null == c.getId()) {
                 c.setCreateTime(DateUtils.getNowDate());
                 c.setCreateBy(SecurityUtils.getUsername());
@@ -206,7 +224,7 @@ public class CoreResumptionConfigurationServiceImpl extends ServiceImpl<CoreResu
                 String timeUnit = "天";
                 if (cycle.equals("1")) {
                     coreMessageCenter.setContent("您有履职任务" + taskName + "快到期");
-                }else {
+                } else {
                     coreMessageCenter.setContent("您有履职任务" + taskName + "还有" + time + timeUnit + "到期");
                 }
                 coreMessageCenter.setUserId(sysUser.getId());
@@ -241,49 +259,49 @@ public class CoreResumptionConfigurationServiceImpl extends ServiceImpl<CoreResu
 
     @Override
     public void font() {
-        CoreResumptionConfiguration coreResumptionConfiguration=new CoreResumptionConfiguration();
+        CoreResumptionConfiguration coreResumptionConfiguration = new CoreResumptionConfiguration();
         coreResumptionConfiguration.setTimeUnit("1");
         coreResumptionConfiguration.setDelFlag("0");
         List<CoreResumptionConfiguration> coreResumptionConfigurations = baseMapper.selectCoreResumptionConfigurationList(coreResumptionConfiguration);
-        List<Resumption> resumptions = resumptionMapper.selectDay(getTime(0),"2");
-        resumptions.forEach(r->{
-            addMassageCenter(r.getName(),null, coreResumptionConfigurations.get(0).getTimeUnit(),r.getOrgId(),r.getRoleId());
+        List<Resumption> resumptions = resumptionMapper.selectDay(getTime(0), "2");
+        resumptions.forEach(r -> {
+            addMassageCenter(r.getName(), null, coreResumptionConfigurations.get(0).getTimeUnit(), r.getOrgId(), r.getRoleId());
         });
     }
 
     @Override
     public void centre() {
-        CoreResumptionConfiguration coreResumptionConfiguration=new CoreResumptionConfiguration();
+        CoreResumptionConfiguration coreResumptionConfiguration = new CoreResumptionConfiguration();
         coreResumptionConfiguration.setTimeUnit("1");
         coreResumptionConfiguration.setDelFlag("0");
         List<CoreResumptionConfiguration> coreResumptionConfigurations = baseMapper.selectCoreResumptionConfigurationList(coreResumptionConfiguration);
-        List<Resumption> resumptions = resumptionMapper.selectDay(getTime(0),"3");
-        resumptions.forEach(r->{
-            addMassageCenter(r.getName(),null, coreResumptionConfigurations.get(0).getTimeUnit(),r.getOrgId(),r.getRoleId());
+        List<Resumption> resumptions = resumptionMapper.selectDay(getTime(0), "3");
+        resumptions.forEach(r -> {
+            addMassageCenter(r.getName(), null, coreResumptionConfigurations.get(0).getTimeUnit(), r.getOrgId(), r.getRoleId());
         });
     }
 
     @Override
     public void after() {
-        CoreResumptionConfiguration coreResumptionConfiguration=new CoreResumptionConfiguration();
+        CoreResumptionConfiguration coreResumptionConfiguration = new CoreResumptionConfiguration();
         coreResumptionConfiguration.setTimeUnit("1");
         coreResumptionConfiguration.setDelFlag("0");
         List<CoreResumptionConfiguration> coreResumptionConfigurations = baseMapper.selectCoreResumptionConfigurationList(coreResumptionConfiguration);
-        List<Resumption> resumptions = resumptionMapper.selectDay(getTime(0),"4");
-        resumptions.forEach(r->{
-            addMassageCenter(r.getName(),null, coreResumptionConfigurations.get(0).getTimeUnit(),r.getOrgId(),r.getRoleId());
+        List<Resumption> resumptions = resumptionMapper.selectDay(getTime(0), "4");
+        resumptions.forEach(r -> {
+            addMassageCenter(r.getName(), null, coreResumptionConfigurations.get(0).getTimeUnit(), r.getOrgId(), r.getRoleId());
         });
     }
 
     @Override
     public void allDay() {
-        CoreResumptionConfiguration coreResumptionConfiguration=new CoreResumptionConfiguration();
+        CoreResumptionConfiguration coreResumptionConfiguration = new CoreResumptionConfiguration();
         coreResumptionConfiguration.setTimeUnit("1");
         coreResumptionConfiguration.setDelFlag("0");
         List<CoreResumptionConfiguration> coreResumptionConfigurations = baseMapper.selectCoreResumptionConfigurationList(coreResumptionConfiguration);
-        List<Resumption> resumptions = resumptionMapper.selectDay(getTime(0),"1");
-        resumptions.forEach(r->{
-            addMassageCenter(r.getName(),null, coreResumptionConfigurations.get(0).getTimeUnit(),r.getOrgId(),r.getRoleId());
+        List<Resumption> resumptions = resumptionMapper.selectDay(getTime(0), "1");
+        resumptions.forEach(r -> {
+            addMassageCenter(r.getName(), null, coreResumptionConfigurations.get(0).getTimeUnit(), r.getOrgId(), r.getRoleId());
         });
     }
 }

+ 39 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/panel/controller/PanelController.java

@@ -0,0 +1,39 @@
+package com.xunmei.core.panel.controller;
+
+
+import com.xunmei.common.core.domain.edu.dto.CoreEduTrainingPlanPageDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
+import com.xunmei.common.core.domain.panel.vo.PanelResultVo;
+import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.common.security.annotation.RequiresPermissions;
+import com.xunmei.core.edu.service.ICoreEduTrainingPlanService;
+import com.xunmei.core.panel.service.PanelService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@Api(tags = {"CoreEduTrainingPlan"})
+@RestController
+@RequestMapping("/panel")
+public class PanelController {
+
+
+    @Autowired
+    private PanelService panelService;
+
+    /**
+     * App面板接口
+     */
+    @ApiOperation(value = "App面板接口")
+    //@RequiresPermissions("core:panel:list")
+    @GetMapping("/list")
+    public List<PanelResultVo> list() {
+        return panelService.selectPage();
+    }
+
+}

+ 6 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/panel/mapper/PanelMapper.java

@@ -0,0 +1,6 @@
+package com.xunmei.core.panel.mapper;
+
+public class PanelMapper {
+
+
+}

+ 11 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/panel/service/PanelService.java

@@ -0,0 +1,11 @@
+package com.xunmei.core.panel.service;
+
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
+import com.xunmei.common.core.domain.panel.vo.PanelResultVo;
+
+import java.util.List;
+
+public interface PanelService {
+    List<PanelResultVo> selectPage();
+
+}

+ 177 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/panel/service/impl/PanelServiceImpl.java

@@ -0,0 +1,177 @@
+package com.xunmei.core.panel.service.impl;
+
+import cn.hutool.core.collection.ListUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.xunmei.common.core.constant.ErrorMsgConstants;
+import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.domain.R;
+import com.xunmei.common.core.domain.panel.adapter.PanelAdapter;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.enums.PanelTypeEnums;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
+import com.xunmei.common.core.domain.panel.vo.PanelResultVo;
+import com.xunmei.common.core.vo.IdNameVo;
+import com.xunmei.common.security.utils.SecurityUtils;
+import com.xunmei.core.drill.service.ICoreDrillTaskService;
+import com.xunmei.core.edu.service.ICoreEduTrainingTaskService;
+import com.xunmei.core.panel.service.PanelService;
+import com.xunmei.core.resumption.service.IProtectionService;
+import com.xunmei.core.resumption.service.ResumptionService;
+import com.xunmei.core.retrieval.service.ICoreMonitoringRetrievalTaskService;
+import com.xunmei.core.safetyCheck.service.ICoreSafetyTaskService;
+import com.xunmei.system.api.RemoteRoleService;
+import com.xunmei.system.api.RemoteUserService;
+import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
+import com.xunmei.system.api.model.LoginUser;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.concurrent.CompletableFuture;
+import java.util.stream.Collectors;
+
+@Slf4j
+@Service
+public class PanelServiceImpl implements PanelService {
+
+    @Autowired
+    private ResumptionService resumptionService;
+
+    @Autowired
+    private ICoreMonitoringRetrievalTaskService coreMonitoringRetrievalTaskService;
+    @Autowired
+    private ICoreSafetyTaskService safetyTaskService;
+    @Autowired
+    private ICoreDrillTaskService drillTaskService;
+
+    @Autowired
+    private ICoreEduTrainingTaskService eduTrainingTaskService;
+
+    @Autowired
+    private RemoteRoleService roleService;
+    @Autowired
+    private IProtectionService protectionService;
+
+    @Override
+    public  List<PanelResultVo> selectPage() {
+
+        List<Long> roles = RemoteCallHandlerExecutor.executeRemoteCall(
+                () -> roleService.getUserRoleId(SecurityUtils.getUserId(), SecurityConstants.FROM_SOURCE),
+                ErrorMsgConstants.QUERY_USER_ROLE_ERROR);
+
+        PanelListDto panelListDto = PanelAdapter.getMapperSelectParam(SecurityUtils.getLoginUser().getOrgId(),
+                roles,SecurityUtils.getUserId());
+
+        List<PanelListVo> resultList = Collections.synchronizedList(new ArrayList<>(6));
+
+        //履职任务
+        CompletableFuture<List<PanelListVo>> resumptionTaskFuture = CompletableFuture.supplyAsync(() -> {
+            return resumptionService.selectCurUserTaskList(panelListDto);
+        }).whenComplete((resumptionTaskList, throwable) -> {
+            if (ObjectUtil.isNotEmpty(resumptionTaskList)) {
+                resumptionTaskList.forEach(vo->vo.setType(PanelTypeEnums.RESUMPTION.getCode()));
+                resultList.addAll(resumptionTaskList);
+            }
+            if (throwable != null) {
+                log.error("resumptionTaskFuture Exception error.", throwable);
+            }
+        });
+
+        //布撤防
+        CompletableFuture<List<PanelListVo>> protectionTaskFuture = CompletableFuture.supplyAsync(() -> {
+            return protectionService.selectCurUserTaskList(panelListDto);
+        }).whenComplete((protectionTaskList, throwable) -> {
+            if (ObjectUtil.isNotEmpty(protectionTaskList)) {
+                protectionTaskList.forEach(vo->vo.setType(PanelTypeEnums.PROTECTION.getCode()));
+                resultList.addAll(protectionTaskList);
+            }
+            if (throwable != null) {
+                log.error("protectionTaskFuture Exception error.", throwable);
+            }
+        });
+
+        //监控调阅任务
+        CompletableFuture<List<PanelListVo>> monitorTaskFuture = CompletableFuture.supplyAsync(() -> {
+            return coreMonitoringRetrievalTaskService.selectCurUserTaskList(panelListDto);
+        }).whenComplete((monitorTaskList, throwable) -> {
+            if (ObjectUtil.isNotEmpty(monitorTaskList)) {
+                monitorTaskList.forEach(vo->vo.setType(PanelTypeEnums.MONITORING_RETRIEVAL.getCode()));
+                resultList.addAll(monitorTaskList);
+            }
+            if (throwable != null) {
+                log.error("monitorTaskFuture Exception error.", throwable);
+            }
+        });
+
+        //安全检查任务
+        CompletableFuture<List<PanelListVo>> safetyTaskFuture = CompletableFuture.supplyAsync(() -> {
+            return safetyTaskService.selectCurUserTaskList(panelListDto);
+        }).whenComplete((safetyTaskList, throwable) -> {
+            if (ObjectUtil.isNotEmpty(safetyTaskList)) {
+                safetyTaskList.forEach(vo->vo.setType(PanelTypeEnums.SAFETY_CHECK.getCode()));
+                resultList.addAll(safetyTaskList);
+            }
+            if (throwable != null) {
+                log.error("safetyTaskFuture Exception error.", throwable);
+            }
+        });
+
+
+        //预案演练任务
+        CompletableFuture<List<PanelListVo>> drillTaskFuture = CompletableFuture.supplyAsync(() -> {
+            return drillTaskService.selectCurUserTaskList(panelListDto);
+        }).whenComplete((drillTaskList, throwable) -> {
+            if (ObjectUtil.isNotEmpty(drillTaskList)) {
+                drillTaskList.forEach(vo->vo.setType(PanelTypeEnums.DRILL.getCode()));
+                resultList.addAll(drillTaskList);
+            }
+            if (throwable != null) {
+                log.error("drillTaskFuture Exception error.", throwable);
+            }
+        });
+
+        //教育培训任务
+        CompletableFuture<List<PanelListVo>> eduTrainingTaskFuture = CompletableFuture.supplyAsync(() -> {
+            return eduTrainingTaskService.selectCurUserTaskList(panelListDto);
+        }).whenComplete((eduTrainingTaskList, throwable) -> {
+            if (ObjectUtil.isNotEmpty(eduTrainingTaskList)) {
+                eduTrainingTaskList.forEach(vo->vo.setType(PanelTypeEnums.EDU_TRAINING.getCode()));
+                resultList.addAll(eduTrainingTaskList);
+            }
+            if (throwable != null) {
+                log.error("eduTrainingTaskFuture Exception error.", throwable);
+            }
+        });
+
+        List<CompletableFuture<List<PanelListVo>>> futureList = ListUtil.list(true,
+                resumptionTaskFuture,
+                protectionTaskFuture,
+                monitorTaskFuture,
+                safetyTaskFuture,
+                drillTaskFuture,
+                eduTrainingTaskFuture);
+
+
+        try {
+            // 多个任务
+            CompletableFuture.allOf(futureList.toArray(new CompletableFuture[0])).join();
+        } catch (Exception e) {
+            log.error("CompletableFuture.allOf Exception error.", e);
+        }
+
+        //将resultList根据type字段分组,并排序
+        Map<Integer, List<PanelListVo>> listMap = resultList.stream().sorted(Comparator.comparing(PanelListVo::getType)).collect(Collectors.groupingBy(PanelListVo::getType));
+        List<PanelResultVo> list = new ArrayList<PanelResultVo>();
+        for (Integer type : listMap.keySet()) {
+            PanelResultVo vo = new PanelResultVo();
+            vo.setTaskType(type);
+            vo.setTaskTypeText(PanelTypeEnums.getName(type));
+            vo.setDataList(listMap.get(type));
+            list.add(vo);
+        }
+
+        return list;
+
+    }
+}

+ 2 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/AppRuleController.java

@@ -62,7 +62,7 @@ public class AppRuleController  extends BaseController {
         return success(appRuleService.edit(appRuleEditDto));
     }
 
-    @ApiOperation(value = "删除规范")
+    @ApiOperation(value = "删除定义")
     @RequiresPermissions("resumption:rule:remove")
     @DeleteMapping("{id}")
 
@@ -71,7 +71,7 @@ public class AppRuleController  extends BaseController {
         return success();
     }
 
-    @ApiOperation(value = "查询机构可用的规范")
+    @ApiOperation(value = "查询机构可用的定义")
     @GetMapping("ruleListForOrg")
 //    @RequiresPermissions(value={"resumption:rule"})
     public AjaxResult  ruleListForOrg(AppRuleListForOrgDto dto){

+ 9 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/ProtectionController.java

@@ -1,20 +1,24 @@
 package com.xunmei.core.resumption.controller;
 
+import com.xunmei.common.core.vo.IdNameVo;
 import com.xunmei.common.core.web.controller.BaseController;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.common.security.annotation.InnerAuth;
 import com.xunmei.common.security.annotation.RequiresPermissions;
 import com.xunmei.core.resumption.domain.Protection;
 import com.xunmei.core.resumption.dto.protection.ProtectionEditDto;
 import com.xunmei.core.resumption.dto.protection.ProtectionLogPageDto;
 import com.xunmei.core.resumption.dto.protection.ProtectionPageDto;
 import com.xunmei.core.resumption.service.IProtectionService;
+import com.xunmei.system.api.Eto.RoleConditionEto;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import java.util.List;
 
 /**
  *
@@ -50,7 +54,11 @@ class ProtectionController extends BaseController {
     public AjaxResult edit(@RequestBody ProtectionEditDto editDto) {
         return success(protectionService.edit(editDto));
     }
-
+    @InnerAuth
+    @PostMapping("/addByDevice")
+    public AjaxResult addByDevice(@RequestBody ProtectionEditDto editDto) {
+        return success(protectionService.edit(editDto));
+    }
     @ApiOperation(value = "防区详情")
     @GetMapping("{id}")
     @RequiresPermissions({"device:protection:query"})

+ 5 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/domain/AppResumptionData.java

@@ -74,4 +74,9 @@ public class AppResumptionData extends Model<AppResumptionData> implements Seria
      * 整改期限
      */
     private String rectificationDeadline;
+
+    /**
+     * 数据状态 1未处理,2已处理
+     */
+    private Integer dataStatus;
 }

+ 2 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/domain/Protection.java

@@ -30,7 +30,7 @@ public class Protection extends BaseEntity {
     /**
      * 设备
      */
-    private String deviceId;
+    private Long deviceId;
 
     /**
      * 防区的唯一标识
@@ -38,7 +38,7 @@ public class Protection extends BaseEntity {
     private String code;
 
 
-    private String alarmHostCode;
+    private Long alarmHostCode;
 
     /**
      * 防区的名称

+ 5 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/dto/protection/ProtectionPageDto.java

@@ -33,6 +33,11 @@ public class ProtectionPageDto extends PageDto<ProtectionPageVo> {
      */
     private Date[] dateRange;
 
+    /**
+     * 最近几小时,优先于dateRange
+     */
+    private Integer hour;
+
     @JsonIgnore
     private Date startTime;
     @JsonIgnore

+ 65 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/controller/GxResumptionController.java

@@ -0,0 +1,65 @@
+package com.xunmei.core.resumption.gx.controller;
+
+
+import com.xunmei.common.core.web.domain.AjaxResult;
+import com.xunmei.common.redis.utils.RedisUtils;
+import com.xunmei.core.resumption.gx.service.ResumptionService;
+import com.xunmei.core.resumption.gx.vo.ResumptionTaskDetailVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.time.Duration;
+
+/**
+ * 履职逻辑
+ */
+@RestController
+@RequestMapping("gx/resumption")
+public class GxResumptionController {
+
+    @Autowired
+    private ResumptionService resumptionService;
+
+    @RequestMapping("/getTask")
+    public AjaxResult getTask(@RequestBody ResumptionTaskDetailVo taskDetailVo){
+
+        try {
+            ResumptionTaskDetailVo task = resumptionService.getTask(taskDetailVo);
+            return  AjaxResult.success(task);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return AjaxResult.error(e.getMessage());
+        }
+
+    }
+
+    /**
+     * 履职任务保存
+     * @param taskDetailVo
+     * @return
+     */
+    @RequestMapping("/saveTask")
+    public AjaxResult saveTask(@RequestBody ResumptionTaskDetailVo taskDetailVo){
+
+        try {
+            RedisUtils.deleteObject("resumption" + taskDetailVo.getTaskId());
+            //仅当hashKey不存在时才设置
+            Boolean hasKey = RedisUtils.hasKey("resumption" + taskDetailVo.getTaskId());
+            if (!hasKey) {
+                RedisUtils.setCacheObject("resumption" + taskDetailVo.getTaskId(), taskDetailVo.getTaskId(), Duration.ofMillis(1000 * 20));
+            }
+            if (hasKey) {
+                return AjaxResult.error("请勿重复提交");
+            }
+            resumptionService.saveTask(taskDetailVo);
+            RedisUtils.deleteObject("resumption" + taskDetailVo.getTaskId());
+            return AjaxResult.success();
+        } catch (Exception e) {
+            e.printStackTrace();
+            RedisUtils.deleteObject("resumption" + taskDetailVo.getTaskId());
+            return AjaxResult.error(e.getMessage());
+        }
+    }
+}

+ 36 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/service/ResumptionService.java

@@ -0,0 +1,36 @@
+package com.xunmei.core.resumption.gx.service;
+
+import com.xunmei.core.resumption.gx.vo.ResumptionTaskDetailVo;
+import com.xunmei.core.resumption.gx.vo.ResumptionTaskListVo;
+import com.xunmei.core.resumption.vo.ResumptionTaskNewDto;
+
+import java.util.List;
+import java.util.Map;
+
+public interface ResumptionService {
+
+
+    /**
+     * 根据日期获取履职数据
+     * @param dto
+     * @return
+     */
+    Map<String, List<ResumptionTaskListVo>> getTaskList(ResumptionTaskNewDto dto);
+
+
+    /**
+     * 根据任务id,获取当前任务的具体详情
+     * @param taskDetailVo
+     * @return
+     * @throws Exception
+     */
+
+    ResumptionTaskDetailVo getTask(ResumptionTaskDetailVo taskDetailVo)throws Exception;
+
+    /**
+     * 保存履职数据
+     * @param taskDetailVo
+     * @throws Exception
+     */
+    void saveTask(ResumptionTaskDetailVo taskDetailVo)throws Exception;
+}

+ 336 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/service/ResumptionServiceImpl.java

@@ -0,0 +1,336 @@
+package com.xunmei.core.resumption.gx.service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.xunmei.common.core.utils.DateHelper;
+import com.xunmei.common.security.utils.SecurityUtils;
+import com.xunmei.core.resumption.domain.*;
+import com.xunmei.core.resumption.gx.vo.*;
+import com.xunmei.core.resumption.mapper.*;
+import com.xunmei.core.resumption.vo.ResumptionTaskNewDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+@Service("gxResumptionService")
+public class ResumptionServiceImpl implements ResumptionService{
+
+    @Autowired
+    private ResumptionMapper resumptionMapper;
+
+    @Autowired
+    private AppPlanMapper appPlanMapper;
+
+    @Autowired
+    private AppResumptionDataRemarkimgMapper appResumptionDataRemarkimgMapper;
+
+    @Autowired
+    private AppResumptionDataMapper appResumptionDataMapper;
+
+    @Autowired
+    private AppResumptionDataNfcMapper appResumptionDataNfcMapper;
+
+    @Override
+    public Map<String, List<ResumptionTaskListVo>> getTaskList(ResumptionTaskNewDto dto) {
+
+        Date dateTime = dto.getDateTime();
+        if(dateTime == null){
+            dateTime = new Date();
+            dto.setDateTime(dateTime);
+        }
+
+        /*
+         *根据机构id,角色权限,日期,获取对应的履职任务数据
+         */
+
+
+
+        return null;
+    }
+
+    @Override
+    public ResumptionTaskDetailVo getTask(ResumptionTaskDetailVo taskDetailVo) throws Exception {
+        /**
+         * 逻辑梳理如下:
+         * 1、根据任务获取plan_id
+         * 2、根据任务的状态,进行不同的操作。根据数据分为:保存过数据任务,未保存过数据的任务
+         * 保存过数据的任务:进行中、已完成
+         * 未保存过数据的任务: 待履职,已逾期,未完成
+         * 3、未保存过任务的数据处理逻辑如下:
+         *    1)根据计划id组装任务的数据,并根据履职区域进行分组:
+         *    2)根据履职区域获取相应的NFC扫描点
+         *    3)组装数据
+         * 4、保存过任务的数据处理逻辑如下:
+         *    1)根据任务数据获取,要点数据,要点对应的备注,图片,nfc数据
+         *    2)获取计划对应的数据,组装数据
+         */
+        DateHelper dateTime = new DateHelper(taskDetailVo.getTaskDate());
+        int year =dateTime.getYear();
+        int quarter =dateTime.getQuarter() ;
+        //履职状态:1 待履职,2 进行中,3 已完成,4 已过期
+        Resumption resumption = resumptionMapper.findOneByTaskIdAndDate(taskDetailVo.getTaskId(), year,quarter);
+        Integer status = resumption.getStatus();
+        List<ResumptionPlanVo> resumptionPlanVos = new ArrayList<>();
+        boolean isExist = false;
+        if(status == 1 || status == 4){
+            //履职中待履职 和已过期的数据是没有保存过数据的只能根据计划获取
+            Long planId = resumption.getPlanId();
+            resumptionPlanVos = appPlanMapper.selectResumptionPlan(planId);
+            isExist = false;
+
+        }else{
+            resumptionPlanVos = resumptionMapper.selectResumptionPlan(taskDetailVo.getTaskId());
+            isExist = true;
+        }
+
+        /**
+         * 按区域组合的数据
+         */
+        ResumptionTaskDetailVo detailVo = assemblyData(resumptionPlanVos, isExist, resumption);
+
+        return detailVo;
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void saveTask(ResumptionTaskDetailVo taskDetailVo) throws Exception {
+        /**
+         * subtype =1 表示保存数据
+         * subtype = 2 表示提交数据
+         */
+        Long taskId = taskDetailVo.getTaskId();
+        DateHelper dateTime = new DateHelper(taskDetailVo.getTaskDate());
+        int year =dateTime.getYear();
+        int quarter =dateTime.getQuarter() ;
+        //获取履职任务
+        Resumption sysResumption = resumptionMapper.findOneByTaskIdAndDate(taskId,year,quarter);
+        sysResumption.setUpdateBy(SecurityUtils.getUsername());
+        sysResumption.setUpdateTime(new Date());
+        sysResumption.setSubmitTime(new Date());
+        sysResumption.setStatus(2);
+
+        if(taskDetailVo.getSubType() == 2){
+            if (sysResumption.getStatus() == 3) {
+                throw new RuntimeException("该任务已过期不能完成提交");
+            }
+            sysResumption.setStatus(3);
+        }
+
+
+        resumptionMapper.updateById(sysResumption);
+
+
+
+        //删除之前的数据
+        appResumptionDataMapper.deleteByResumptionId(taskId);
+        appResumptionDataNfcMapper.deleteByResumptionId(taskId);
+        appResumptionDataRemarkimgMapper.deleteByResumptionId(taskId);
+
+        //保存新的数据
+        AppResumptionData data = null;
+        List<ResumptionItemVo> checks = taskDetailVo.getChecks();
+        for (ResumptionItemVo check : checks) {
+            List<ResumptionPointVo> points = check.getPoints();
+            for (ResumptionPointVo point : points) {
+                 data = new AppResumptionData();
+                 data.setDataStatus(point.getDataStatus());
+                 data.setResumptionId(taskId);
+                 data.setAreaId(check.getAreaId());
+                 data.setItemId(point.getPointId());
+                 data.setRectificationDeadline(point.getRectificationDeadline());
+                 data.setResRemark(point.getResRemark());
+                 data.setResValue(point.getResValue());
+                 data.setSubmitTime(new Date());
+                 data.setResTime(new Date());
+                 data.setPlanId(sysResumption.getPlanId());
+                 data.setSubmitBy(SecurityUtils.getLoginUser().getUserid());
+                 data.setSubmitName(SecurityUtils.getUsername());
+                if(taskDetailVo.getSubType() == 2){
+                    if(point.getDataStatus() == 1){
+                        data.setDataStatus(2);
+                    }
+                }
+                 appResumptionDataMapper.insert(data);
+
+                List<AppResumptionDataRemarkimg> imgs = point.getImgs();
+                for (AppResumptionDataRemarkimg img : imgs) {
+                    img.setResumptionDataId(data.getId());
+                    img.setResumptionId(taskId);
+                    appResumptionDataRemarkimgMapper.insert(img);
+                }
+            }
+        }
+
+
+        List<ResumptionNFCVo> nfcs = taskDetailVo.getNfcs();
+        AppResumptionDataNfc dataNfc = null;
+        for (ResumptionNFCVo nfc : nfcs) {
+            if(nfc.getStatus() == 0){
+                continue;
+            }
+            dataNfc = new AppResumptionDataNfc();
+            dataNfc.setResumptionId(taskId);
+            dataNfc.setNfcId(nfc.getNfcId());
+            dataNfc.setPointId(nfc.getAreaId());
+            dataNfc.setSubmitTime(new Date());
+            dataNfc.setImg(nfc.getImg());
+            dataNfc.setScanMethod(nfc.getScanMethod());
+            dataNfc.setStatus(nfc.getStatus());
+            appResumptionDataNfcMapper.insert(dataNfc);
+        }
+
+    }
+
+    /**
+     * 组装到前端的数据
+     * @param resumptionPlanVos
+     * @return
+     */
+    private ResumptionTaskDetailVo assemblyData(List<ResumptionPlanVo> resumptionPlanVos, boolean isExist, Resumption resumption){
+
+        ResumptionTaskDetailVo taskVo = new ResumptionTaskDetailVo();
+        taskVo.setTaskId(resumption.getId());
+        taskVo.setTaskName(resumption.getName());
+        taskVo.setStatus(resumption.getStatus());
+
+        /**
+         * 组装数据:
+         *  1.对数据按区域分组。
+         *  2.根据检查内容获取检查图片
+         *  3.构建返回到前端的数据
+         */
+        Map<Long,List<AppResumptionDataRemarkimg>> imgMap = new HashMap<>();
+        if(isExist){
+            //数据存在,需要获取任务的所有图片信息
+            QueryWrapper<AppResumptionDataRemarkimg> qw = new QueryWrapper<>();
+            qw.lambda().eq(AppResumptionDataRemarkimg::getResumptionId, resumption.getId());
+            List<AppResumptionDataRemarkimg> imgs = appResumptionDataRemarkimgMapper.selectList(qw);
+            for (AppResumptionDataRemarkimg img : imgs) {
+                Long resumptionDataId = img.getResumptionDataId();
+                List<AppResumptionDataRemarkimg> paths = imgMap.get(resumptionDataId);
+                if(paths == null){
+                    paths = new ArrayList<>();
+                }
+                paths.add(img);
+                imgMap.put(resumptionDataId, paths);
+            }
+        }
+        Integer yesPointNum = 0;
+        Integer noPointNum = 0;
+        Map<Long,ResumptionItemVo> itemMap = new HashMap<>();
+        Map<Long,Map<String,Integer>> itComMap = new HashMap<>();
+        for (ResumptionPlanVo vo : resumptionPlanVos) {
+            if(vo.getDataStatus() == 1){
+                noPointNum++;
+            }else{
+                yesPointNum++;
+            }
+
+            if(isExist){
+                //如果存在数据则设置图片啊
+                List<AppResumptionDataRemarkimg> imgs = imgMap.get(vo.getDataId());
+                if(imgs != null && imgs.size() > 0){
+                    vo.getImgs().addAll(imgs);
+                }
+            }
+            ResumptionItemVo resumptionItemVo = itemMap.get(vo.getItemId());
+            if(resumptionItemVo == null){
+                resumptionItemVo = new ResumptionItemVo();
+            }
+            resumptionItemVo.setItemName(vo.getItemName());
+            resumptionItemVo.setItemId(vo.getItemId());
+            resumptionItemVo.setAreaId(vo.getAreaId());
+            resumptionItemVo.setAreaName(vo.getAreaName());
+
+            ResumptionPointVo pointVo = new ResumptionPointVo();
+            pointVo.setPointName(vo.getPointName());
+            pointVo.setImgs(vo.getImgs());
+            pointVo.setPointId(vo.getPointId());
+            pointVo.setResRemark(vo.getResRemark());
+            if(vo.getResValue() == null){
+                pointVo.setResValue(0);
+            }else{
+                pointVo.setResValue(vo.getResValue());
+            }
+            pointVo.setRectificationDeadline(vo.getRectificationDeadline());
+            pointVo.setDataStatus(vo.getDataStatus());
+            resumptionItemVo.getPoints().add(pointVo);
+            Map<String, Integer> itCom = itComMap.get(vo.getAreaId());
+            if(itCom == null){
+                itCom = new HashMap<>();
+                itCom.put("total", 1);
+                if(pointVo.getDataStatus() == 1){
+                    itCom.put("yes",0);
+                }else{
+                    itCom.put("yes",1);
+                }
+                itComMap.put(vo.getAreaId(),itCom);
+            }else{
+                itCom.put("total",itCom.get("total") + 1);
+                if(pointVo.getDataStatus() == 2){
+                    itCom.put("yes",itCom.get("yes") + 1);
+                }
+            }
+
+            itemMap.put(vo.getItemId(),resumptionItemVo);
+        }
+
+        Map<Long, AreaResumptionVo> map = new HashMap<>();
+        List<ResumptionItemVo> items = new ArrayList<>();
+        for (Map.Entry<Long, ResumptionItemVo> entry: itemMap.entrySet()) {
+            ResumptionItemVo itemVo = entry.getValue();
+            AreaResumptionVo areaData = map.get(itemVo.getAreaId());
+            if(areaData == null){
+                areaData = new AreaResumptionVo();
+                areaData.setAreaId(itemVo.getAreaId());
+                areaData.setAreaName(itemVo.getAreaName());
+                map.put(itemVo.getAreaId(),areaData);
+            }
+            items.add(itemVo);
+        }
+
+        Integer yesNFC = 0;
+        Integer noNFC = 0;
+
+
+        List<ResumptionNFCVo> nfcs = new ArrayList<>();
+        List<AreaResumptionVo> areas = new ArrayList<>();
+        for (Map.Entry<Long, AreaResumptionVo> entry: map.entrySet()) {
+            AreaResumptionVo vo = entry.getValue();
+            Long areaId = entry.getKey();
+            //获取每个区域下的nfc
+            List<ResumptionNFCVo> resumptionNFCVos = resumptionMapper.selectResumptionNFC(resumption.getId(), areaId, resumption.getOrgId());
+            for (ResumptionNFCVo resumptionNFCVo : resumptionNFCVos) {
+                Integer status = resumptionNFCVo.getStatus();
+                if(status == 0){
+                    noNFC++;
+                    continue;
+                }
+                yesNFC++;
+            }
+            nfcs.addAll(resumptionNFCVos);
+            Map<String, Integer> com = itComMap.get(areaId);
+            Integer total = com.get("total");
+            Integer yes = com.get("yes");
+            if(total.equals(yes)){
+                //总数等于处理数
+                vo.setAreaStatus("1");
+            }else if(yes > 0){
+                vo.setAreaStatus("2");
+            }else if(yes == 0){
+                vo.setAreaStatus("0");
+            }
+            areas.add(vo);
+        }
+
+        taskVo.setNoNFCNums(noNFC);
+        taskVo.setYesNFCNums(yesNFC);
+        taskVo.setNoPointNums(noPointNum);
+        taskVo.setYesPointNums(yesPointNum);
+        taskVo.setAreas(areas);
+        taskVo.setChecks(items);
+        taskVo.setNfcs(nfcs);
+        return taskVo;
+    }
+}

+ 31 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/AreaResumptionVo.java

@@ -0,0 +1,31 @@
+package com.xunmei.core.resumption.gx.vo;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 区域数据
+ * @author gaoxiong
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AreaResumptionVo {
+    /**
+     * 区域id
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long areaId;
+    /**
+     * 区域名称
+     */
+    private String areaName;
+    /**
+     * 区域状态,默认就是未开始
+     */
+    private String areaStatus = "0";
+
+}

+ 48 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionItemVo.java

@@ -0,0 +1,48 @@
+package com.xunmei.core.resumption.gx.vo;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ResumptionItemVo {
+
+    /**
+     * 检查项id
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long itemId;
+
+    /**
+     * 检查项名称
+     */
+    private String itemName;
+
+    /**
+     * 区域id
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long areaId;
+
+    /**
+     * 区域名称
+     */
+    private String areaName;
+
+    /**
+     * 该检查项是否完成
+     *0表示为完成 1表示 完成 2,表示完成一半
+     */
+    private int complete = 1;
+    /**
+     * 检查内容集合
+     */
+    private List<ResumptionPointVo> points = new ArrayList<>();
+}

+ 47 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionNFCVo.java

@@ -0,0 +1,47 @@
+package com.xunmei.core.resumption.gx.vo;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ResumptionNFCVo {
+    /**
+     * 区域id
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long areaId;
+    /**
+     * nfcid
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long nfcId;
+
+    /**
+     * 区域采集点名称
+     */
+    private String nfcName;
+
+    /**
+     * nfc编码
+     */
+    private String nfcCode;
+    /**
+     * 扫描状态
+     */
+    private Integer status = 0;
+
+    /**
+     * 扫描方法
+     */
+    private Integer scanMethod;
+    /**
+     * nfc点位图片
+     */
+    private String img;
+
+}

+ 91 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionPlanVo.java

@@ -0,0 +1,91 @@
+package com.xunmei.core.resumption.gx.vo;
+
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.xunmei.core.resumption.domain.AppResumptionDataRemarkimg;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 履职计划数据
+ * @author gaoxiong
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ResumptionPlanVo {
+
+    /**
+     * 履职数据id
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long dataId;
+
+    /**
+     * 履职计划id
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long planId;
+    /**
+     * 履职项id
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long itemId;
+
+    /**
+     * 履职项名称
+     */
+    private String itemName;
+
+    /**
+     * 履职内容id
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long pointId;
+
+    /**
+     * 履职内容
+     */
+    private String pointName;
+
+    /**
+     * 区域id
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long areaId;
+
+    /**
+     * 区域名称
+     */
+    private String areaName;
+
+    /**
+     * 正常异常
+     */
+    private Integer resValue;
+
+    /**
+     * 异常备注
+     */
+    private String resRemark;
+
+    /**
+     * 整改期限
+     */
+    private String rectificationDeadline;
+
+    /**
+     * 数据状态 1未处理 ,2 已处理
+     */
+    private Integer dataStatus = 1;
+    /**
+     * 对应检查点的图片集合
+     */
+    private List<AppResumptionDataRemarkimg> imgs = new ArrayList<>();
+
+}

+ 50 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionPointVo.java

@@ -0,0 +1,50 @@
+package com.xunmei.core.resumption.gx.vo;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import com.xunmei.core.resumption.domain.AppResumptionDataRemarkimg;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ResumptionPointVo {
+
+    /**
+     * 检查内容id
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long pointId;
+
+    /**
+     * 检查内容
+     */
+    private String pointName;
+    /**
+     * 检查结果 正常 异常
+     */
+    private Integer resValue;
+
+    /**
+     * 异常备注
+     */
+    private String resRemark;
+
+    /**
+     * 整改期限
+     */
+    private String rectificationDeadline;
+    /**
+     * 1未处理,2已处理
+     */
+    private Integer dataStatus;
+    /**
+     * 图片
+     */
+    private List<AppResumptionDataRemarkimg> imgs;
+
+}

+ 71 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionTaskDetailVo.java

@@ -0,0 +1,71 @@
+package com.xunmei.core.resumption.gx.vo;
+
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 履职任务详情数据
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ResumptionTaskDetailVo {
+
+    /**
+     * 履职任务id
+     */
+    @JsonSerialize(using = ToStringSerializer.class)
+    private Long taskId;
+    /**
+     * 履职任务时间
+     */
+    private Date taskDate;
+    /**
+     * 履职任务名称
+     */
+    private String taskName;
+    /**
+     * 已检查要点数量
+     */
+    private Integer yesPointNums = 0;
+    /**
+     * 未检查要点数量
+     */
+    private Integer noPointNums = 0;
+    /**
+     * 已扫描NFC数量
+     */
+    private Integer yesNFCNums = 0;
+    /**
+     * 未扫描NFC数量
+     */
+    private Integer noNFCNums = 0;
+
+    /**
+     * 提交类型
+     */
+    private Integer subType;
+
+    /**
+     * 履职任务状态
+     */
+    private Integer status;
+    /**
+     * 履职区域数据
+     */
+    private List<AreaResumptionVo> areas;
+    /**
+     * 履职要点数据
+     */
+    private List<ResumptionItemVo> checks;
+    /**
+     * 履职区域NFC数据
+     */
+    private List<ResumptionNFCVo>  nfcs;
+}

+ 37 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionTaskListVo.java

@@ -0,0 +1,37 @@
+package com.xunmei.core.resumption.gx.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 履职任务列表
+ * 1、待完成
+ * 2、未完成
+ * 3、已完成
+ */
+public class ResumptionTaskListVo {
+
+    /**
+     * 查询的履职日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date taskDate;
+
+    /**
+     * 待完成列表
+     */
+    private List<ResumptionTaskVo> waitList;
+
+    /**
+     * 未完成列表
+     */
+    private List<ResumptionTaskVo> noList;
+
+    /**
+     * 已完成列表
+     */
+    private List<ResumptionTaskVo> yesList;
+
+}

+ 38 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/vo/ResumptionTaskVo.java

@@ -0,0 +1,38 @@
+package com.xunmei.core.resumption.gx.vo;
+
+
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class ResumptionTaskVo {
+
+    /**
+     * 履职任务id
+     */
+    private Long taskId;
+
+    /**
+     * 履职任务名称
+     */
+    private String taskName;
+
+    /**
+     * 履职任务开始时间
+     */
+    private Date startTime;
+
+    /**
+     * 履职任务结束时间
+     */
+    private Date endTime;
+
+    /**
+     * 履职任务状态
+     */
+    private String status;
+
+
+}

+ 9 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppPlanMapper.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xunmei.common.core.vo.IdNameVo;
 import com.xunmei.core.resumption.domain.AppPlan;
 import com.xunmei.core.resumption.dto.plan.CoreResumptionPlanPageDto;
+import com.xunmei.core.resumption.gx.vo.ResumptionPlanVo;
 import com.xunmei.core.resumption.vo.appPlan.AppPlanVo;
 import com.xunmei.core.resumption.vo.appPlan.ObjectDataClass;
 import com.xunmei.core.resumption.vo.appPlan.ResumptionPlanPageVo;
@@ -80,4 +81,12 @@ public interface AppPlanMapper extends BaseMapper<AppPlan> {
     String selectPlanNameById(@Param("planId") Long planId);
 
     List<IdNameVo> selectPlanNames(@Param("ids") List<Long> ids);
+
+
+    /**
+     * 根据计划id获取履职内容
+     * @param planId
+     * @return
+     */
+    List<ResumptionPlanVo> selectResumptionPlan(@Param("planId") Long planId);
 }

+ 6 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppResumptionDataMapper.java

@@ -34,4 +34,10 @@ public interface AppResumptionDataMapper extends BaseMapper<AppResumptionData> {
     List<AppResumptionData> findDataByPointBusinessType(Map<String, Object> map);
 
     void updateData(String taskId);
+
+    /**
+     * 根据任务id删除任务数据
+     * @param taskId
+     */
+    void deleteByResumptionId(Long taskId);
 }

+ 5 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppResumptionDataNfcMapper.java

@@ -30,4 +30,9 @@ public interface AppResumptionDataNfcMapper extends BaseMapper<AppResumptionData
     List<ResumptionNfcInfoVo> findPointNfcData(Map<String, Object> parmar);
 
     List<ResumptionNfcVo> findNfcByAreaIdAndOrgId(Map<String, Object> param);
+    /**
+     * 根据任务id删除任务
+     * @param taskId
+     */
+    void deleteByResumptionId(Long taskId);
 }

+ 5 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppResumptionDataRemarkimgMapper.java

@@ -15,4 +15,9 @@ import org.apache.ibatis.annotations.Param;
 @Mapper
 public interface AppResumptionDataRemarkimgMapper extends BaseMapper<AppResumptionDataRemarkimg> {
 
+    /**
+     * 根据任务id删除数据
+     * @param taskId
+     */
+    void deleteByResumptionId(Long taskId);
 }

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppRulePointMapper.java

@@ -26,7 +26,7 @@ import java.util.Map;
 @Mapper
 public interface AppRulePointMapper extends BaseMapper<AppRulePoint> {
 
-    List<AppRulePointDetailDto> selectDataListByItemId(Long id);
+    List<AppRulePointDetailDto> selectDataListByItemId(@Param("itemId") Long itemId,@Param("pointName") String pointName);
 
 //    List<AppRulePointInfoDto> selectDataListByIdList(@Param("pointIds") List<Long> pointIds, @Param("planIdList") List<Long> planIdList);
 

+ 24 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/ResumptionMapper.java

@@ -1,9 +1,13 @@
 package com.xunmei.core.resumption.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.core.resumption.domain.AppRulePoint;
 import com.xunmei.core.resumption.domain.Resumption;
 import com.xunmei.core.resumption.dto.ResumptionTaskDto;
+import com.xunmei.core.resumption.gx.vo.ResumptionNFCVo;
+import com.xunmei.core.resumption.gx.vo.ResumptionPlanVo;
 import com.xunmei.core.resumption.vo.ResumptionAppVo;
 import com.xunmei.core.resumption.vo.ResumptionTaskNewDto;
 import com.xunmei.core.resumption.vo.WorkChangeResumptionVo;
@@ -46,4 +50,24 @@ public interface ResumptionMapper extends BaseMapper<Resumption> {
      * @return
      */
     List<Resumption>selectDay(@Param("planEndTime")String planEndTime,@Param("planExec")String planExec);
+
+    List<PanelListVo> selectCurUserTaskList(@Param("request") PanelListDto request);
+
+    /**
+     * 根据任务id获取数据
+     * @param resumptionId
+     * @return
+     */
+    List<ResumptionPlanVo> selectResumptionPlan(@Param("resumptionId")Long resumptionId);
+
+    /**
+     * 获取任务的NFC点位情况
+     * @param resumptionId
+     * @param areaId
+     * @param orgId
+     * @return
+     */
+    List<ResumptionNFCVo> selectResumptionNFC(@Param("resumptionId")Long resumptionId, @Param("areaId")Long areaId, @Param("orgId")Long orgId);
+
+
 }

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/IProtectionService.java

@@ -2,6 +2,8 @@ package com.xunmei.core.resumption.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.core.resumption.domain.Protection;
 import com.xunmei.core.resumption.dto.protection.ProtectionEditDto;
@@ -37,6 +39,8 @@ public interface IProtectionService extends IService<Protection> {
     Date updateStatus(Long protectionId, String status);
 
     List<Protection> findNotAllHour(Long orgId);
+
+    List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto);
 //    MePage<pageSensorVo> pageSensorList(pageSensorDto request);
 
 //    MePage<ProtectionPageVo4Mybatis> pageByMybatis(ProtectionPageDto4Mybatis request);

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/ResumptionService.java

@@ -2,6 +2,8 @@ package com.xunmei.core.resumption.service;
 
 import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.utils.ResumptionType;
 import com.xunmei.core.resumption.domain.AppPlan;
 import com.xunmei.core.resumption.domain.Resumption;
@@ -40,4 +42,6 @@ public interface ResumptionService extends IService<Resumption> {
     public List<WorkChangeResumptionVo> findResumptionList(List<Long> orgIds, Date date, Integer type, Integer status, Integer year, Integer quarter);
     public void saveResumption(List<Resumption> listResumption, List<AppPlan> appPlanList, List<Map<String,Long>> planIdAndOrgs);
     public void deleteResumption(List<String> ids,Integer year, Integer quarter);
+
+    List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto);
 }

+ 6 - 5
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppRuleItemServiceImpl.java

@@ -77,12 +77,12 @@ public class AppRuleItemServiceImpl extends ServiceImpl<AppRuleItemMapper, AppRu
 
         Integer itemNameNums = appRuleItemMapper.checkItemNameRepeat(item.getId(), item.getRuleId(), item.getName());
         if (itemNameNums > 0) {
-            throw new RuntimeException("检查项名称重复");
+            throw new RuntimeException("履职项重复");
         }
 
         final AppRule appRule = appRuleMapper.selectById(appRuleItemDto.getRuleId());
         if (appRule == null) {
-            throw new RuntimeException("请选择具体规范新增数据!");
+            throw new RuntimeException("履职内容库定义不存在");
         }
 
         saveOrUpdate(item);
@@ -105,7 +105,7 @@ public class AppRuleItemServiceImpl extends ServiceImpl<AppRuleItemMapper, AppRu
                     if (isUsed == null) {
                         appRulePointMapper.deleteById(pointId);
                     } else {
-                        throw new RuntimeException("有要点已被使用,不能删除!");
+                        throw new RuntimeException("履职内容已被使用,不能删除!");
                     }
                 }
             }
@@ -149,7 +149,7 @@ public class AppRuleItemServiceImpl extends ServiceImpl<AppRuleItemMapper, AppRu
 //        int order = itemPageDto() * itemPageDto.getSize();
         for (AppRuleItemPageVo vo : page.getRecords()) {
 //            vo.setOrder(++order);
-            final List<AppRulePointDetailDto> pointList = appRulePointMapper.selectDataListByItemId(vo.getId());
+            final List<AppRulePointDetailDto> pointList = appRulePointMapper.selectDataListByItemId(vo.getId(),itemPageDto.getPointName());
             vo.setPointDtoList(pointList);
         }
 
@@ -165,7 +165,7 @@ public class AppRuleItemServiceImpl extends ServiceImpl<AppRuleItemMapper, AppRu
         AppRuleItemDetailDto appRuleItemDto = new AppRuleItemDetailDto();
         BeanUtils.copyProperties(appRuleItem, appRuleItemDto);
 
-        List<AppRulePointDetailDto> list = appRulePointMapper.selectDataListByItemId(id);
+        List<AppRulePointDetailDto> list = appRulePointMapper.selectDataListByItemId(id,null);
         appRuleItemDto.setPointDtoList(list);
         return appRuleItemDto;
     }
@@ -228,6 +228,7 @@ public class AppRuleItemServiceImpl extends ServiceImpl<AppRuleItemMapper, AppRu
         List<RuleTreeItem> ruleItems = allRule.stream().filter(r -> ObjectUtil.equal(r.getOrgId(), parent.getId()))
                 .map(o -> RuleTreeItem.builder()
                         .isRule(1)
+                        .ruleStatus(o.getStatus())
                         .id(o.getId())
                         .sort(-1)
                         .name(o.getName())

+ 15 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppRuleServiceImpl.java

@@ -7,15 +7,18 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.exception.ServiceException;
 import com.xunmei.common.core.vo.IdNameVo;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.core.ServiceImplBase;
 import com.xunmei.core.resumption.domain.AppRule;
+import com.xunmei.core.resumption.domain.AppRuleItem;
 import com.xunmei.core.resumption.dto.rule.AppRuleListForOrgDto;
 import com.xunmei.core.resumption.dto.rule.AppRulePageDto;
 import com.xunmei.core.resumption.mapper.AppRuleMapper;
 import com.xunmei.core.resumption.dto.rule.AppRuleEditDto;
+import com.xunmei.core.resumption.service.IAppRuleItemService;
 import com.xunmei.core.resumption.service.IAppRuleService;
 import com.xunmei.core.resumption.vo.appRule.AppRuleInfoVo;
 import com.xunmei.core.resumption.vo.appRule.AppRulePageVo;
@@ -48,6 +51,9 @@ public class AppRuleServiceImpl extends ServiceImplBase<AppRuleMapper, AppRule>
     @Resource
     private AppRuleMapper appRuleMapper;
 
+    @Resource
+    private IAppRuleItemService appRuleItemService;
+
     @Override
     public TableDataInfo getAppRulePage(AppRulePageDto query) {
         Page<AppRulePageVo> page = query.getPageDto();
@@ -78,7 +84,7 @@ public class AppRuleServiceImpl extends ServiceImplBase<AppRuleMapper, AppRule>
         BeanUtils.copyProperties(appRuleEditDto, appRule);
         Integer nums = appRuleMapper.checkRuleNameRepeat(appRule.getId(), appRule.getName());
         if (nums > 0) {
-            throw new RuntimeException("规则名称重复");
+            throw new RuntimeException("履职内容库名称重复");
         }
 
         if (appRule.getId() == null) {
@@ -97,6 +103,14 @@ public class AppRuleServiceImpl extends ServiceImplBase<AppRuleMapper, AppRule>
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void del(Long id) {
+        LambdaQueryWrapper<AppRuleItem> wrapper=  new LambdaQueryWrapper();
+        wrapper.eq(AppRuleItem::getRuleId,id)
+                .eq(AppRuleItem::getDeleted,0);
+        Long itemCount= appRuleItemService.count(wrapper);
+        if(itemCount>0){
+            throw new ServiceException("履职内容库存在履职项,请先删除履职项");
+        }
+
         appRuleMapper.deleteById(id);
     }
 

+ 18 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/ProtectionServiceImpl.java

@@ -1,6 +1,7 @@
 package com.xunmei.core.resumption.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
@@ -8,6 +9,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.core.resumption.domain.Protection;
@@ -50,12 +53,20 @@ public class ProtectionServiceImpl extends ServiceImpl<ProtectionMapper, Protect
             request.setOrgId(SecurityUtils.getLoginUser().getOrgId());
         }
         Page<ProtectionPageVo> page = request.getPageDto();
-        if (ObjectUtil.isNotEmpty(request.getDateRange()) && request.getDateRange().length == 2) {
+        if(ObjectUtil.isNotNull(request.getHour())){
+            Date end=new Date();
+            Date start=DateUtil.offset(end, DateField.HOUR,-request.getHour());
+            request.setStartTime(start);
+            request.setEndTime(end);
+        }else  if (ObjectUtil.isNotEmpty(request.getDateRange()) && request.getDateRange().length == 2) {
             Date startTime = new DateTime(request.getDateRange()[0]).setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
             Date endTime = new DateTime(request.getDateRange()[1]).setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
             request.setStartTime(startTime);
             request.setEndTime(endTime);
         }
+
+
+
         //按规则分页
         page = this.baseMapper.pageList(page, request);
 
@@ -78,6 +89,7 @@ public class ProtectionServiceImpl extends ServiceImpl<ProtectionMapper, Protect
         LambdaQueryWrapper<Protection> repeatNameWrapper=new LambdaQueryWrapper<>();
         repeatNameWrapper.eq(Protection::getOrgId,dto.getOrgId())
                 .eq(Protection::getName,dto.getName())
+                .eq(Protection::getDeleted,0)
                 .ne(Protection::getId,ObjectUtil.isNull(dto.getId())?0:dto.getId());
 
         if(baseMapper.exists(repeatNameWrapper)){
@@ -159,5 +171,10 @@ public class ProtectionServiceImpl extends ServiceImpl<ProtectionMapper, Protect
                 .eq(Protection::getAllHour, 0));
         return list;
     }
+
+    @Override
+    public List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto) {
+        return null;
+    }
 }
 

+ 5 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/ResumptionRecordServiceImpl.java

@@ -346,13 +346,16 @@ public class ResumptionRecordServiceImpl extends ServiceImpl<ResumptionRecordMap
         Map<String, SysDictData> dicts = remoteDictDataService.selectDictByeType("resumption_status", SecurityConstants.INNER)
                 .stream().collect(Collectors.toMap(SysDictData::getDictValue, v -> v));
         List<ResumptionRecordPageVo> limit = data.stream().limit(10000).collect(Collectors.toList());
-        limit.forEach(r -> {
+        int index=1;
+        for (ResumptionRecordPageVo r : limit) {
+            r.setIndex(index++);
             if (dicts.containsKey(r.getStatus())) {
                 r.setStatusText(dicts.get(r.getStatus()).getDictLabel());
             } else {
                 r.setStatusText("未知");
             }
-        });
+        }
+
         response.setContentType("application/vnd.ms-excel");
 //        response.setCharacterEncoding("utf-8");
         // 调用EasyExcel的导出方法

+ 8 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/ResumptionServiceImpl.java

@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.mysql.cj.PreparedQuery;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.utils.DateHelper;
 import com.xunmei.common.core.utils.ResumptionType;
 import com.xunmei.common.core.utils.Ymd;
@@ -152,4 +154,10 @@ public class ResumptionServiceImpl extends ServiceImpl<ResumptionMapper, Resumpt
     public void deleteResumption(List<String> ids, Integer year, Integer quarter) {
         resumptionMapper.deleteResumption(ids, year, quarter);
     }
+
+    @Override
+    public List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto) {
+
+        return resumptionMapper.selectCurUserTaskList( panelListDto);
+    }
 }

+ 3 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/task/ResumptionTaskBusiness.java

@@ -693,7 +693,9 @@ public class ResumptionTaskBusiness {
     public Boolean updateTaskStatus() {
         LambdaUpdateWrapper<Resumption> wrapper = new LambdaUpdateWrapper<Resumption>();
         Date date = DateUtil.beginOfDay(new Date());
-        wrapper.eq(Resumption::getStatus, 1).lt(Resumption::getPlanEndTime, date).set(Resumption::getStatus, 4);
+        wrapper.lt(Resumption::getPlanEndTime, date)
+                .in(Resumption::getStatus, Arrays.asList(1,2))//未开始、进行中
+                .set(Resumption::getStatus, 4);
         return resumptionService.update(wrapper);
     }
 

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/vo/WorkTimeUpdateResumption.java

@@ -0,0 +1,4 @@
+package com.xunmei.core.resumption.vo;
+
+public class WorkTimeUpdateResumption {
+}

+ 2 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/vo/appRuleItem/RuleTreeItem.java

@@ -21,8 +21,10 @@ public class RuleTreeItem {
      String name;
 
      String shortName;
+
      int isRule;
 
+     String ruleStatus;
      /**
       * 履职机构类型
       */

+ 19 - 14
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/vo/resumptionRecord/ResumptionRecordPageVo.java

@@ -19,6 +19,11 @@ import java.util.Date;
  */
 @Data
 public class ResumptionRecordPageVo {
+    @ExcelProperty(value = "序号",index = 0)
+    @ColumnWidth(10)
+    @JsonIgnore
+    private int index;
+
     @ApiModelProperty("履职任务id")
     @ExcelIgnore
     private String resumptionId;
@@ -26,7 +31,7 @@ public class ResumptionRecordPageVo {
     /**
      * 任务名称
      */
-    @ExcelProperty("任务名称")
+    @ExcelProperty(value = "任务名称",index = 1)
     @ColumnWidth(30)
     private String name;
 
@@ -36,13 +41,13 @@ public class ResumptionRecordPageVo {
 
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @ApiModelProperty("任务开始时间")
-    @ExcelProperty("任务开始时间")
+    @ExcelProperty(value ="任务开始时间",index=5)
     @ColumnWidth(30)
     private Date planStartTime;
 
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    @ApiModelProperty("任务结束时间")
-    @ExcelProperty("任务结束时间")
+    @ApiModelProperty(value ="任务结束时间")
+    @ExcelProperty(value ="截止时间",index = 6)
     @ColumnWidth(30)
     private Date planEndTime;
 
@@ -53,12 +58,11 @@ public class ResumptionRecordPageVo {
     private Long orgId;
 
     @ApiModelProperty("上级机构")
-    @ExcelProperty("上级机构")
-    @ColumnWidth(20)
+    @ExcelIgnore
     private String parentOrgName;
 
     @ApiModelProperty("机构名称")
-    @ExcelProperty("履职机构")
+    @ExcelProperty(value="履职机构",index = 2)
     @ColumnWidth(20)
     private String orgName;
 
@@ -67,32 +71,33 @@ public class ResumptionRecordPageVo {
     private Long roleId;
 
     @ApiModelProperty("履职角色")
-    @ExcelProperty("履职角色")
+    @ExcelProperty(value="履职角色",index = 3)
     @ColumnWidth(20)
     private String roleName;
 
     @ApiModelProperty("提交人")
-    @ExcelProperty("提交人")
+    @ExcelProperty(value = "提交人",index = 7)
     @ColumnWidth(15)
     private String submitter;
 
     @ApiModelProperty("提交时间")
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    @ExcelProperty("提交时间")
+    @ExcelProperty(value = "提交时间",index = 8)
     @ColumnWidth(20)
     private Date submitTime;
 
-    @ApiModelProperty("异常要点数量")
-    @ExcelProperty("异常个数")
+    @ApiModelProperty("隐患问题数")
+    @ExcelProperty(value = "隐患问题数",index = 9)
     @ColumnWidth(15)
-    private int abnormalDataNums;
+    private Integer abnormalDataNums;
 
     //    @ApiModelProperty("状态 0:待履职 1:按时完成 3:未完成 5:补登完成")
     @ExcelIgnore
     private String status;
 
     @JsonIgnore
-    @ExcelProperty("履职状态")
+    @ExcelProperty(value = "履职进度",index = 4)
+    @ColumnWidth(15)
     private String statusText;
 
     /**

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/mapper/CoreMonitoringRetrievalTaskMapper.java

@@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xunmei.common.core.domain.edu.dto.CoreEduTrainingPlanPageDto;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanPageVo;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.domain.retrieval.domain.CoreMonitoringRetrievalTask;
 import com.xunmei.common.core.domain.retrieval.dto.RetrievalTaskPageDto;
 import com.xunmei.common.core.domain.retrieval.vo.CoreMonitoringRetrievalTaskExcelVo;
@@ -91,4 +93,6 @@ public interface CoreMonitoringRetrievalTaskMapper extends BaseMapper<CoreMonito
     void updateDeleteTaskByPlanId(@Param("planId") Long planId,@Param("isDeleted") Integer isDeleted);
 
     List<CoreMonitoringRetrievalTaskExcelVo> selectAllList(@Param("request") RetrievalTaskPageDto request);
+
+    List<PanelListVo> selectCurUserTaskList(@Param("request") PanelListDto request);
 }

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/service/ICoreMonitoringRetrievalTaskService.java

@@ -6,6 +6,8 @@ import java.util.Date;
 import java.util.List;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.domain.retrieval.vo.CoreMonitoringRetrievalTaskOneVo;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.core.access.domain.TMonitoringRetrievalPlan;
@@ -94,4 +96,6 @@ public interface ICoreMonitoringRetrievalTaskService extends IService<CoreMonito
     void deleteTaskByPlanId(Long planId);
     void  deleteWaitTaskByPlanId(Long planId);
     void updateDeleteTaskByPlanId(Long planId,Integer isDeleted);
+
+    List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto);
 }

+ 6 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/service/impl/CoreMonitoringRetrievalTaskServiceImpl.java

@@ -16,6 +16,8 @@ import com.xunmei.common.core.constant.ErrorMsgConstants;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.DateRange;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanPageVo;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.domain.retrieval.domain.CoreMonitoringRetrievalTask;
 import com.xunmei.common.core.domain.retrieval.dto.RetrievalTaskPageDto;
 import com.xunmei.common.core.domain.retrieval.vo.CoreMonitoringRetrievalTaskExcelVo;
@@ -458,4 +460,8 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
         return task;
     }
 
+    @Override
+    public List<PanelListVo> selectCurUserTaskList(PanelListDto request) {
+       return baseMapper.selectCurUserTaskList(request);
+    }
 }

+ 4 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/mapper/CoreSafetyTaskMapper.java

@@ -3,6 +3,8 @@ package com.xunmei.core.safetyCheck.mapper;
 import java.util.List;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.core.safetyCheck.domain.CoreSafetyTask;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xunmei.core.safetyCheck.dto.register.AppPageDto;
@@ -83,4 +85,6 @@ public interface CoreSafetyTaskMapper extends BaseMapper<CoreSafetyTask> {
     Page<AppPageVo> selectTaskGroup(@Param("page") Page<AppPageVo> page, @Param("params") AppPageDto params, @Param("userId") Long userId);
 
     List<CheckNfcRecord> selectNfcRecord(String taskId);
+
+    List<PanelListVo> selectCurUserTaskList(@Param("request") PanelListDto request);
 }

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/mapper/SafetyCheckRulePointMapper.java

@@ -31,7 +31,7 @@ import java.util.Map;
 @Mapper
 public interface SafetyCheckRulePointMapper extends BaseMapper<SafetyCheckRulePoint> {
 
-    List<SafetyCheckRulePointDetailDto> selectDataListByItemId(Long id);
+    List<SafetyCheckRulePointDetailDto> selectDataListByItemId(@Param("itemId") Long itemId,@Param("pointName") String pointName);
 
 //    List<AppRulePointInfoDto> selectDataListByIdList(@Param("pointIds") List<Long> pointIds, @Param("planIdList") List<Long> planIdList);
 

+ 5 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/ICoreSafetyTaskService.java

@@ -1,9 +1,12 @@
 package com.xunmei.core.safetyCheck.service;
 
+import java.util.Date;
 import java.util.List;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.core.safetyCheck.domain.CoreSafetyTask;
 import com.xunmei.core.safetyCheck.vo.CheckNfcRecord;
@@ -72,4 +75,6 @@ public interface ICoreSafetyTaskService extends IService<CoreSafetyTask> {
     TableDataInfo<CoreSafetyTask> selectPage(CoreSafetyTask coreSafetyTask);
 
     List<CheckNfcRecord> selectNfc(String taskId);
+
+    List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto);
 }

+ 7 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/CoreSafetyTaskServiceImpl.java

@@ -2,6 +2,8 @@ package com.xunmei.core.safetyCheck.service.impl;
 
 import java.util.List;
 
+import com.xunmei.common.core.domain.panel.dto.PanelListDto;
+import com.xunmei.common.core.domain.panel.vo.PanelListVo;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.core.safetyCheck.domain.CoreSafetyTask;
 import com.xunmei.core.safetyCheck.mapper.CoreSafetyTaskMapper;
@@ -135,4 +137,9 @@ public class CoreSafetyTaskServiceImpl extends ServiceImpl<CoreSafetyTaskMapper,
     public int deleteCoreSafetyTaskById(String id) {
         return coreSafetyTaskMapper.deleteById(id);
     }
+
+    @Override
+    public List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto) {
+        return coreSafetyTaskMapper.selectCurUserTaskList(panelListDto);
+    }
 }

+ 10 - 9
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/SafetyCheckRuleItemServiceImpl.java

@@ -77,22 +77,22 @@ public class SafetyCheckRuleItemServiceImpl
 //            throw new RuntimeException("检查项编号重复");
 //        }
 
+        final SafetyCheckRule rule = safetyCheckRuleMapper.selectById(ruleItemDto.getRuleId());
+        if (rule == null) {
+            throw new RuntimeException("检查内容库不存在!");
+        }
+
         Integer itemNameNums = safetyCheckRuleItemMapper.checkItemNameRepeat(item.getId(), item.getRuleId(), item.getName());
         if (itemNameNums > 0) {
             throw new RuntimeException("检查项名称重复");
         }
 
-        final SafetyCheckRule rule = safetyCheckRuleMapper.selectById(ruleItemDto.getRuleId());
-        if (rule == null) {
-            throw new RuntimeException("请选择具体规范新增数据!");
-        }
-
         saveOrUpdate(item);
         final List<SafetyCheckRulePointDto> pointDtoList = ruleItemDto.getPointDtoList();
         Set<String> hashMap = new HashSet<>();
         for (SafetyCheckRulePointDto appRulePointDto : pointDtoList) {
             if (hashMap.contains(appRulePointDto.getName())) {
-                throw new RuntimeException("履职内容重复!");
+                throw new RuntimeException("检查内容重复!");
             }
             hashMap.add(appRulePointDto.getName());
         }
@@ -107,7 +107,7 @@ public class SafetyCheckRuleItemServiceImpl
                     if (isUsed == null) {
                         safetyCheckRulePointMapper.deleteById(pointId);
                     } else {
-                        throw new RuntimeException("有要点已被使用,不能删除!");
+                        throw new RuntimeException("检查内容已被使用,不能删除!");
                     }
                 }
             }
@@ -151,7 +151,7 @@ public class SafetyCheckRuleItemServiceImpl
 //        int order = itemPageDto() * itemPageDto.getSize();
         for (SafetyCheckRuleItemPageVo vo : page.getRecords()) {
 //            vo.setOrder(++order);
-            final List<SafetyCheckRulePointDetailDto> pointList = safetyCheckRulePointMapper.selectDataListByItemId(vo.getId());
+            final List<SafetyCheckRulePointDetailDto> pointList = safetyCheckRulePointMapper.selectDataListByItemId(vo.getId(),itemPageDto.getPointName());
             vo.setPointDtoList(pointList);
         }
 
@@ -167,7 +167,7 @@ public class SafetyCheckRuleItemServiceImpl
         SafetyCheckRuleItemDetailDto appRuleItemDto = new SafetyCheckRuleItemDetailDto();
         BeanUtils.copyProperties(appRuleItem, appRuleItemDto);
 
-        List<SafetyCheckRulePointDetailDto> list = safetyCheckRulePointMapper.selectDataListByItemId(id);
+        List<SafetyCheckRulePointDetailDto> list = safetyCheckRulePointMapper.selectDataListByItemId(id,null);
         appRuleItemDto.setPointDtoList(list);
         return appRuleItemDto;
     }
@@ -228,6 +228,7 @@ public class SafetyCheckRuleItemServiceImpl
         List<RuleTreeItem> ruleItems = allRule.stream().filter(r -> ObjectUtil.equal(r.getOrgId(), parent.getId()))
                 .map(o -> RuleTreeItem.builder()
                         .isRule(1)
+                        .ruleStatus(o.getStatus())
                         .id(o.getId())
                         .name(o.getName())
                         .shortName(o.getName())

+ 15 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/SafetyCheckRuleServiceImpl.java

@@ -6,17 +6,21 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.common.core.exception.ServiceException;
 import com.xunmei.common.core.utils.IDHelper;
 import com.xunmei.common.core.vo.IdNameVo;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.core.ServiceImplBase;
+import com.xunmei.core.resumption.domain.AppRuleItem;
 import com.xunmei.core.resumption.vo.appRuleItem.RuleTreeItem;
 import com.xunmei.core.safetyCheck.domain.SafetyCheckRule;
+import com.xunmei.core.safetyCheck.domain.SafetyCheckRuleItem;
 import com.xunmei.core.safetyCheck.dto.rule.SafetyCheckRuleEditDto;
 import com.xunmei.core.safetyCheck.dto.rule.SafetyCheckRuleListForOrgDto;
 import com.xunmei.core.safetyCheck.dto.rule.SafetyCheckRulePageDto;
 import com.xunmei.core.safetyCheck.mapper.SafetyCheckRuleMapper;
+import com.xunmei.core.safetyCheck.service.ISafetyCheckRuleItemService;
 import com.xunmei.core.safetyCheck.service.ISafetyCheckRuleService;
 import com.xunmei.core.safetyCheck.vo.rule.SafetyCheckRuleInfoVo;
 import com.xunmei.core.safetyCheck.vo.rule.SafetyCheckRulePageVo;
@@ -52,6 +56,8 @@ public class SafetyCheckRuleServiceImpl extends ServiceImplBase<SafetyCheckRuleM
     @Resource
     RemoteOrgService remoteOrgService;
 
+    @Resource
+    ISafetyCheckRuleItemService safetyCheckRuleItemService;
     @Override
     public TableDataInfo getRulePage(SafetyCheckRulePageDto query) {
         Page<SafetyCheckRulePageVo> page = query.getPageDto();
@@ -81,7 +87,7 @@ public class SafetyCheckRuleServiceImpl extends ServiceImplBase<SafetyCheckRuleM
         BeanUtils.copyProperties(appRuleEditDto, appRule);
         Integer nums = safetyCheckRuleMapper.checkRuleNameRepeat(appRule.getId(), appRule.getName());
         if (nums > 0) {
-            throw new RuntimeException("规则名称重复");
+            throw new RuntimeException("检查内容库名称重复");
         }
 
         if (appRule.getId() == null) {
@@ -100,6 +106,14 @@ public class SafetyCheckRuleServiceImpl extends ServiceImplBase<SafetyCheckRuleM
     @Override
     @Transactional(rollbackFor = Exception.class)
     public void del(Long id) {
+        LambdaQueryWrapper<SafetyCheckRuleItem> wrapper=  new LambdaQueryWrapper();
+        wrapper.eq(SafetyCheckRuleItem::getRuleId,id)
+                .eq(SafetyCheckRuleItem::getDeleted,0);
+
+        Long itemCount= safetyCheckRuleItemService.count(wrapper);
+        if(itemCount>0){
+            throw new ServiceException("检查内容库存在检查项,请先删除检查项");
+        }
         safetyCheckRuleMapper.deleteById(id);
     }
 

+ 6 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/access/TMonitoringRetrievalPlanMapper.xml

@@ -231,6 +231,12 @@
                                              OR parent_id = #{id})b
             )
     </update>
+    <update id="updatePlanStatus">
+        UPDATE core_monitoring_retrieval_plan
+set plan_status=#{status}
+        WHERE
+                parent_id=#{parentId}
+    </update>
 
     <delete id="deleteTMonitoringRetrievalPlanById" parameterType="Long">
         delete

+ 26 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillTaskMapper.xml

@@ -277,4 +277,30 @@
         set rec_status=#{recStatus}
         where id = #{drillTaskId}
     </update>
+
+    <select id="selectCurUserTaskList" resultType="com.xunmei.common.core.domain.panel.vo.PanelListVo">
+        select  title as taskName,t.start_date startTime,t.end_date as endTime
+        from core_drill_task t inner join core_drill_task_to_role tr  on t.id=tr.drill_task_id
+        where t.org_id =#{request.orgId} and  tr.role_id in
+        <foreach collection="request.roleIdList" item="roleId" open="(" separator="," close=")">
+            #{roleId}
+        </foreach>
+        <if test="request.startTime != null and request.endTime != null">
+        and (
+        (
+        #{request.startTime}   <![CDATA[<=]]> t.start_date
+        and #{request.endTime}     <![CDATA[>=]]> t.start_date
+        )
+        or
+        (
+        #{request.startTime}   <![CDATA[<=]]> t.end_date
+        and #{request.endTime}     <![CDATA[>=]]> t.end_date
+        )
+        or (
+        #{request.startTime}   <![CDATA[>=]]> t.start_date
+        and #{request.endTime}     <![CDATA[<=]]> t.end_date
+        )
+        )
+        </if>
+    </select>
 </mapper>

+ 24 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/edu/CoreEduTrainingTaskMapper.xml

@@ -188,4 +188,28 @@
         where end_date <![CDATA[<]]> now()
           and status <![CDATA[<]]> 2
     </update>
+
+    <select id="selectCurUserTaskList" resultType="com.xunmei.common.core.domain.panel.vo.PanelListVo">
+        select title as taskName,t.start_date startTime,t.end_date as endTime
+        from core_edu_training_task t inner join core_edu_training_task_to_role tr on t.id=tr.role_id
+        where t.org_id =#{request.orgId} and  tr.role_id in
+        <foreach collection="request.roleIdList" item="roleId" open="(" separator="," close=")">
+            #{roleId}
+        </foreach>
+            and (
+            (
+            #{request.startTime}   <![CDATA[<=]]> t.start_date
+            and #{request.endTime}     <![CDATA[>=]]> t.start_date
+            )
+            or
+            (
+            #{request.startTime}   <![CDATA[<=]]> t.end_date
+            and #{request.endTime}     <![CDATA[>=]]> t.end_date
+            )
+            or (
+            #{request.startTime}   <![CDATA[>=]]> t.start_date
+            and #{request.endTime}     <![CDATA[<=]]> t.end_date
+            )
+            )
+    </select>
 </mapper>

+ 1 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/information/CoreMessageSendMapper.xml

@@ -79,7 +79,7 @@
         SELECT * FROM core_message_send
         WHERE del_flag=0
         <if test="request.title != null ">
-            and title = #{request.title}
+            and title like concat('%', #{request.title}, '%')
         </if>
         <if test="request.type != null ">
             and type = #{request.type}

+ 25 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppPlanMapper.xml

@@ -400,4 +400,29 @@
             </if>
         </where>
     </select>
+    <select id="selectResumptionPlan" resultType="com.xunmei.core.resumption.gx.vo.ResumptionPlanVo">
+        select
+            q.item_id,
+            q.item_name,
+            q.point_id,
+            q.point_name,
+            q.area_id,
+            w.`name` as area_name,
+            q.plan_id
+        from
+            (
+                select
+                    c.id as item_id,
+                    c.`name` as item_name,
+                    b.id as point_id,
+                    b.name as point_name,
+                    b.area_id,
+                    a.plan_id
+                from core_resumption_plan_to_point a
+                         LEFT JOIN core_resumption_rule_point b on a.point_id = b.id
+                         LEFT JOIN core_resumption_rule_item c on b.item_id = c.id
+                where a.plan_id = #{planId}
+            ) q
+                LEFT JOIN sys_area w on q.area_id = w.id
+    </select>
 </mapper>

+ 3 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppResumptionDataMapper.xml

@@ -8,6 +8,9 @@
     <sql id="baseColumn">
         id,plan_id,item_id,resumption_id,res_value,res_time,submit_time,res_status,submit_by,submit_name
     </sql>
+    <delete id="deleteByResumptionId">
+        delete from core_resumption_data where resumption_id = #{taskId}
+    </delete>
 
     <select id="findTaskDataList" parameterType="java.util.HashMap" resultType="java.util.Map">
            SELECT c.id as itemid,c.item_name as itemname FROM core_resumption_data a LEFT JOIN core_resumption_rule_point b ON a.item_id= b.id LEFT JOIN core_resumption_rule_item c ON b.item_id = c.id WHERE a.resumption_id=#{taskid} AND b.area_id=#{areaid} GROUP BY c.id having c.id is not null

+ 3 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppResumptionDataNfcMapper.xml

@@ -8,6 +8,9 @@
     <sql id="baseColumn">
         id,resumption_id,nfc_id,submit_time,status
     </sql>
+    <delete id="deleteByResumptionId">
+        delete from core_resumption_data_nfc where resumption_id = #{taskId}
+    </delete>
     <select id="findnfcDataList" parameterType="java.util.HashMap" resultType="java.util.Map">
            SELECT ANY_VALUE(a.id) AS nfcdataid,ANY_VALUE(b.id) AS nfcid,ANY_VALUE(b.code) AS nfccdoe,ANY_VALUE(a.status) as status ,ANY_VALUE(c.check_name) as checkName FROM core_resumption_data_nfc a LEFT JOIN sys_nfc_bind b ON a.nfc_id = b.check_id  left join sys_area_check c on b.check_id = c.id WHERE b.area_id=#{areaid} AND a.resumption_id=#{taskid} AND b.org_id =#{orgId} group by b.code
     </select>

+ 3 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppResumptionDataRemarkimgMapper.xml

@@ -8,4 +8,7 @@
     <sql id="baseColumn">
         id,task_id,task_data_id,remark_id,img_path
     </sql>
+    <delete id="deleteByResumptionId">
+        delete from core_resumption_data_remarkimg where resumption_id = #{taskId}
+    </delete>
 </mapper>

+ 1 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppRuleItemMapper.xml

@@ -45,7 +45,7 @@
 <!--    </select>-->
 
     <select id="checkItemNameRepeat" resultType="java.lang.Integer">
-        select count(id) from core_resumption_rule_item where rule_id=#{ruleId} and name=#{itemName}
+        select count(id) from core_resumption_rule_item where rule_id=#{ruleId} and name=#{itemName} and deleted=0
         <if test="id != null">
             and id != #{id}
         </if>

+ 1 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppRuleMapper.xml

@@ -67,7 +67,7 @@
     <!--    </select>-->
 
     <select id="checkRuleNameRepeat" resultType="java.lang.Integer">
-        select count(id) from core_resumption_rule where name=#{name}
+        select count(id) from core_resumption_rule where name=#{name} and deleted=0
         <if test="id != null">
             and id != #{id}
         </if>

+ 4 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppRulePointMapper.xml

@@ -5,8 +5,11 @@
         select p.*,a.name as areaName
         from core_resumption_rule_point p
         left join sys_area a on p.area_id = a.id
-        where item_id = #{id}
+        where item_id = #{itemId}
           and p.deleted = 0
+        <if test="pointName!=null and pointName!=''">
+            and p.name like concat('%',#{pointName},'%')
+        </if>
     </select>
 <!--    <select id="selectDataListByIdList" resultType="com.xunmei.core.resumption.dto.rulePoint.AppRulePointInfoDto"-->
 <!--            parameterType="java.util.List">-->

+ 55 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/resumption/ResumptionMapper.xml

@@ -161,4 +161,59 @@
         </if>
 
     </select>
+    <select id="selectResumptionPlan" resultType="com.xunmei.core.resumption.gx.vo.ResumptionPlanVo">
+         select
+            a.data_id,
+            a.area_id,
+            d.`name` as area_name,
+            c.id as item_id,
+            c.`name` as item_name,
+            b.id as point_id,
+            b.`name` as point_name,
+            a.res_value,
+            a.res_remark,
+            a.rectification_deadline,
+            a.data_status
+        from
+            (select id as data_id,area_id,item_id,res_value,res_remark,rectification_deadline,data_status
+             from core_resumption_data where resumption_id = #{resumptionId}) a
+                LEFT JOIN core_resumption_rule_point b on a.item_id = b.id
+                LEFT JOIN core_resumption_rule_item c on b.item_id = c.id
+                LEFT JOIN sys_area d on a.area_id = d.id
+    </select>
+    <select id="selectResumptionNFC" resultType="com.xunmei.core.resumption.gx.vo.ResumptionNFCVo">
+         SELECT
+            a.area_id,
+            a.id as nfc_id,
+            a.collection_area_name as nfc_name,
+            a.`code` as nfc_code,
+            b.`status`,
+            b.scan_method,
+            b.img
+        FROM
+            ( SELECT area_id, collection_area_name, CODE, id FROM sys_nfc_bind WHERE area_id =#{areaId} AND org_id = #{orgId} ) a
+            LEFT JOIN ( SELECT nfc_id, point_id, img, STATUS, scan_method FROM core_resumption_data_nfc WHERE resumption_id = #{resumptionId} ) b ON a.id = b.nfc_id
+
+    </select>
+
+    <select id="selectCurUserTaskList" resultType="com.xunmei.common.core.domain.panel.vo.PanelListVo">
+
+        select name as taskName,t.plan_start_time as startTime,t.plan_end_time as endTime
+        from core_resumption t where t.org_id =#{request.orgId} and  t.role_id in
+        <foreach collection="request.roleIdList" item="roleId" open="(" separator="," close=")">
+            #{roleId}
+        </foreach>
+        and ((
+            #{request.startTime}   <![CDATA[<=]]> t.plan_start_time
+        and #{request.endTime} >= t.plan_start_time
+        )
+        or (
+            #{request.startTime}    <![CDATA[<=]]> t.plan_end_time
+        and #{request.endTime} >= t.plan_end_time
+        )
+        or (
+            #{request.startTime} >= t.plan_start_time
+        and #{request.endTime}  <![CDATA[<=]]>  t.plan_end_time
+        ))
+    </select>
 </mapper>

+ 21 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/retrieval/CoreMonitoringRetrievalTaskMapper.xml

@@ -138,6 +138,7 @@
         <if test="request.moth !=null">
             and ymd_date like concat('%', #{request.moth}, '%')
         </if>
+        ORDER BY create_time DESC ,status
     </select>
     <select id="selectTaskDataVoListByRetrievalTaskId"
             resultType="com.xunmei.common.core.domain.retrieval.vo.TaskDataVo">
@@ -422,4 +423,24 @@
         set is_deleted = #{isDeleted}
         where plan_id = #{planId}
     </update>
+
+    <select id="selectCurUserTaskList" resultType="com.xunmei.common.core.domain.panel.vo.PanelListVo">
+     select  task_name as taskName,t.plan_start_time as startTime,t.plan_end_time as endTime
+        from core_monitoring_retrieval_task t where t.org_id =#{request.orgId} and  t.role_id in
+         <foreach collection="request.roleIdList" item="roleId" open="(" separator="," close=")">
+            #{roleId}
+         </foreach>
+        and ((
+                #{request.startTime}   <![CDATA[<=]]> t.plan_start_time
+                and #{request.endTime} >= t.plan_start_time
+                )
+                or (
+                #{request.startTime}    <![CDATA[<=]]> t.plan_end_time
+                and #{request.endTime} >= t.plan_end_time
+                )
+                or (
+                #{request.startTime} >= t.plan_start_time
+                and #{request.endTime}  <![CDATA[<=]]>  t.plan_end_time
+             ))
+    </select>
 </mapper>

+ 20 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/CoreSafetyTaskMapper.xml

@@ -731,4 +731,24 @@
                  left join sys_nfc_bind n on n.id = t.nfc_id
         where t.task_id = #{taskId}
     </select>
+
+    <select id="selectCurUserTaskList" resultType="com.xunmei.common.core.domain.panel.vo.PanelListVo">
+        select title as taskName,t.plan_start_time as startTime,t.plan_end_time as endTime
+        from core_safety_task t where t.org_id =#{request.orgId} and  t.role_id in
+        <foreach collection="request.roleIdList" item="roleId" open="(" separator="," close=")">
+            #{roleId}
+        </foreach>
+        and ((
+        #{request.startTime}   <![CDATA[<=]]> t.plan_start_time
+        and #{request.endTime} >= t.plan_start_time
+        )
+        or (
+        #{request.startTime}    <![CDATA[<=]]> t.plan_end_time
+        and #{request.endTime} >= t.plan_end_time
+        )
+        or (
+        #{request.startTime} >= t.plan_start_time
+        and #{request.endTime}  <![CDATA[<=]]>  t.plan_end_time
+        ))
+    </select>
 </mapper>

+ 1 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/SafetyCheckRuleItemMapper.xml

@@ -23,7 +23,7 @@
     </select>
 
     <select id="checkItemNameRepeat" resultType="java.lang.Integer">
-        select count(id) from core_safetycheck_rule_item where rule_id=#{ruleId} and name=#{itemName}
+        select count(id) from core_safetycheck_rule_item where rule_id=#{ruleId} and name=#{itemName} and deleted=0
         <if test="id != null">
             and id != #{id}
         </if>

+ 1 - 1
soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/SafetyCheckRuleMapper.xml

@@ -54,7 +54,7 @@
 
 
     <select id="checkRuleNameRepeat" resultType="java.lang.Integer">
-        select count(id) from core_safetycheck_rule where name=#{name}
+        select count(id) from core_safetycheck_rule where name=#{name} and deleted=0
         <if test="id != null">
             and id != #{id}
         </if>

+ 5 - 2
soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/SafetyCheckRulePointMapper.xml

@@ -5,8 +5,11 @@
         select p.*,a.name as areaName
         from core_safetycheck_rule_point p
         left join sys_area a on p.area_id = a.id
-        where item_id = #{id}
-          and p.deleted = 0
+        where item_id = #{itemId}
+        and p.deleted = 0
+        <if test="pointName!=null and pointName!=''">
+            and p.name like concat('%',#{pointName},'%')
+        </if>
     </select>
 <!--    <select id="findPointByPlan" parameterType="Long" resultType="com.xunmei.core.safetyCheck.vo.ruleItem.SafetyCheckRulePointTaskVo">-->
 <!--        SELECT a.*, b.point_scan-->

+ 68 - 4
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserController.java

@@ -1,11 +1,15 @@
 package com.xunmei.system.controller;
 
 import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.domain.message.domain.CoreAnnouncementNotificationToRole;
+import com.xunmei.common.core.domain.retrieval.vo.CoreMonitoringRetrievalTaskExcelVo;
+import com.xunmei.common.core.utils.DateHelper;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.utils.StringUtils;
 import com.xunmei.common.core.vo.IdNameVo;
@@ -17,10 +21,7 @@ import com.xunmei.common.security.annotation.InnerAuth;
 import com.xunmei.common.security.annotation.RequiresPermissions;
 import com.xunmei.common.security.utils.SaltHelper;
 import com.xunmei.common.security.utils.SecurityUtils;
-import com.xunmei.system.api.domain.SysOrg;
-import com.xunmei.system.api.domain.SysRole;
-import com.xunmei.system.api.domain.SysUser;
-import com.xunmei.system.api.domain.SysUserInformation;
+import com.xunmei.system.api.domain.*;
 import com.xunmei.system.api.model.LoginUser;
 import com.xunmei.system.domain.SysUserRole;
 import com.xunmei.system.domain.vo.SysUserListVo;
@@ -28,6 +29,7 @@ import com.xunmei.system.domain.vo.UserRoleVo;
 import com.xunmei.system.api.dto.SysRoleOrgDTO;
 import com.xunmei.system.mapper.SysOrgMapper;
 import com.xunmei.system.service.*;
+import com.xunmei.system.util.UserExport;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.ArrayUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -35,6 +37,9 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.net.URLEncoder;
 import java.util.Date;
 import java.util.List;
 import java.util.Set;
@@ -80,6 +85,7 @@ public class SysUserController extends BaseController {
     public AjaxResult list(SysUser user) {
         AjaxResult ajax = AjaxResult.success();
         com.xunmei.common.core.web.page.TableDataInfo<com.xunmei.system.api.domain.SysUser> sysUserTableDataInfo = userService.selectUserList(user);
+
         ajax.put("data", sysUserTableDataInfo);
         boolean admin = false;
         String s = roleService.selectRoleNameByUserId(SecurityUtils.getUserId());
@@ -459,4 +465,62 @@ public class SysUserController extends BaseController {
             return vo;
         }).collect(Collectors.toList());
     }
+
+    /**
+     * 导出用户数据
+     */
+    @RequiresPermissions("system:user:export")
+    @PostMapping("/export")
+    public void export(SysUser user, HttpServletResponse response)  {
+        List<UserExport> list=userService.down(user);
+        if (ObjectUtil.isEmpty(list)) {
+            throw new RuntimeException("导出数据为空!");
+        }
+        if(list.size()>10000){
+            throw new RuntimeException("导出数据量过大(单次导出限量10000条数据),请填写条件分批导出");
+        }
+        try {
+            // 设置响应头
+            response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("用户数据", "utf-8"));
+            response.setContentType("application/octet-stream;charset=UTF-8");
+            response.setCharacterEncoding("utf-8");
+            // 数据导出
+            EasyExcel.write(response.getOutputStream(), UserExport.class)
+                    .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).sheet("用户数据").doWrite(list);
+        } catch (Exception e) {
+            // 重置response
+            response.reset();
+            response.setContentType("application/json");
+            response.setCharacterEncoding("utf-8");
+        }
+    }
+    /**
+     * 导出管理人员数据
+     */
+    @RequiresPermissions("system:user:exportManager")
+    @PostMapping("/exportManager")
+    public void exportManager(SysUser user, HttpServletResponse response)  {
+        List<UserExport> list=userService.down(user);
+        if (ObjectUtil.isEmpty(list)) {
+            throw new RuntimeException("导出数据为空!");
+        }
+        list=list.stream().filter(e -> e.getIsManager() != null).collect(Collectors.toList());
+        if(list.size()>10000){
+            throw new RuntimeException("导出数据量过大(单次导出限量10000条数据),请填写条件分批导出");
+        }
+        try {
+            // 设置响应头
+            response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("用户数据", "utf-8"));
+            response.setContentType("application/octet-stream;charset=UTF-8");
+            response.setCharacterEncoding("utf-8");
+            // 数据导出
+            EasyExcel.write(response.getOutputStream(), UserExport.class)
+                    .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).sheet("用户数据").doWrite(list);
+        } catch (Exception e) {
+            // 重置response
+            response.reset();
+            response.setContentType("application/json");
+            response.setCharacterEncoding("utf-8");
+        }
+    }
 }

+ 7 - 8
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysUserRoleController.java

@@ -5,14 +5,7 @@ import java.io.IOException;
 import javax.servlet.http.HttpServletResponse;
 
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import com.xunmei.common.log.annotation.Log;
 import com.xunmei.common.log.enums.BusinessType;
 import com.xunmei.common.security.annotation.RequiresPermissions;
@@ -92,4 +85,10 @@ public class SysUserRoleController extends BaseController {
     public AjaxResult remove(@PathVariable Long[] userIds) {
         return toAjax(sysUserRoleService.deleteSysUserRoleByUserIds(userIds));
     }
+
+
+    @GetMapping("/getUserRoleId")
+    List<Long> getUserRoleId(@RequestParam(value = "userId") Long userId) {
+        return sysUserRoleService.getUserRoleId(userId);
+    }
 }

+ 1 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysWorkTimeController.java

@@ -74,7 +74,7 @@ public class SysWorkTimeController extends BaseController {
 
         sysWorkTimeService.handleTodayChanged(orgIds, sysWorkTimeSet.getWorkTimeList(), exists, today);
         //生成任务
-        // TODO: 2023/6/19
+//         TODO: 2023/6/19
 //        if(CollectionUtil.isNotEmpty(orgIds)){
 //            this.workTimeService.handleTodayChanged(orgIds, request.getWorkTimeList(), exists, today);
 //            this.workTimeMonthService.toLogNote("批量操作作息月[ %s ][ %s ]", request.getOrgIdList(), today);

+ 2 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysUserMapper.java

@@ -8,6 +8,7 @@ import com.xunmei.system.api.domain.SysRole;
 import com.xunmei.system.api.domain.SysUser;
 import com.xunmei.system.domain.vo.SysUserVO;
 import com.xunmei.system.api.dto.SysRoleOrgDTO;
+import com.xunmei.system.util.UserExport;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -156,4 +157,5 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
 
     List<SysUser> selectUserListByRoleAndOrg(@Param("sysRoleOrgDTO") SysRoleOrgDTO sysRoleOrgDTO);
 
+    List<UserExport> select(@Param("info") SysUser user);
 }

+ 2 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysUserRoleService.java

@@ -77,4 +77,6 @@ public interface ISysUserRoleService extends IService<SysUserRole> {
     TableDataInfo<SysUserRole> selectPage(SysUserRole sysUserRole);
 
     List<UserRoleVo> selectUserRoleVoList(Long userId);
+
+    List<Long> getUserRoleId(Long userId);
 }

+ 3 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysUserService.java

@@ -8,6 +8,7 @@ import com.xunmei.system.api.domain.SysUser;
 import com.xunmei.system.domain.vo.SysUserListVo;
 import com.xunmei.system.domain.vo.SysUserVO;
 import com.xunmei.system.api.dto.SysRoleOrgDTO;
+import com.xunmei.system.util.UserExport;
 
 import java.util.List;
 
@@ -224,4 +225,6 @@ public interface ISysUserService extends IService<SysUser> {
     List<SysUser> selectUserListByRoleAndOrg(SysRoleOrgDTO sysRoleOrgDTO);
 
     List<SysUser> selectAllUser();
+
+    List<UserExport> down(SysUser user);
 }

+ 25 - 55
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysDeviceServiceImpl.java

@@ -7,8 +7,10 @@ import com.alibaba.nacos.common.utils.CollectionUtils;
 import com.xunmei.common.core.exception.ServiceException;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.security.utils.SecurityUtils;
+import com.xunmei.system.api.RemoteProtectionService;
 import com.xunmei.system.api.domain.SysDevice;
 import com.xunmei.system.api.domain.SysOrg;
+import com.xunmei.system.api.dto.ProtectionDTO;
 import com.xunmei.system.mapper.SysOrgMapper;
 import com.xunmei.system.vo.area.AccessType;
 import com.xunmei.system.vo.area.HostVO;
@@ -42,7 +44,8 @@ public class SysDeviceServiceImpl extends ServiceImpl<SysDeviceMapper, SysDevice
     private ISysOrgService orgService;
     @Autowired
     private SysOrgMapper sysOrgMapper;
-
+    @Autowired
+  private RemoteProtectionService remoteProtectionService;
     @Override
     public TableDataInfo<SysDevice> selectPage(SysDevice sysDevice) {
         //未删除
@@ -102,6 +105,7 @@ public class SysDeviceServiceImpl extends ServiceImpl<SysDeviceMapper, SysDevice
                 QueryWrapper queryWrapper = new QueryWrapper();
                 queryWrapper.eq("del_flag", "0");
                 queryWrapper.eq("host_id", hostByOrgId.get(i).getId());
+                queryWrapper.eq("device_type","0");
                 List<SysDevice> list = baseMapper.selectList(queryWrapper);
                 if (CollectionUtils.isEmpty(list) || list.size() == longs.size()) {
                     hostByOrgId.remove(hostByOrgId.get(i));
@@ -111,48 +115,6 @@ public class SysDeviceServiceImpl extends ServiceImpl<SysDeviceMapper, SysDevice
         return hostByOrgId;
     }
 
-/*    @Override
-    public List<HostVO> getHostVideoByOrgId(Long orgId) {
-        List<HostVO> hostVOS = new ArrayList<>();
-        //查询所有视频主机
-        List<SysDevice> hostByOrgId = sysDeviceMapper.getHostByOrgId(orgId);
-        hostByOrgId.forEach(h -> {
-            HostVO hostVO = new HostVO();
-            hostVO.setHostId(h.getId());
-            hostVO.setHostName(h.getDeviceName());
-            QueryWrapper queryWrapper = new QueryWrapper();
-            queryWrapper.eq("del_flag", "0");
-            queryWrapper.eq("host_id", h.getId());
-            //查询视频
-            List<SysDevice> sysDevices = baseMapper.selectList(queryWrapper);
-            if (CollectionUtils.isNotEmpty(sysDevices)) {
-                List<VideoVO> videoVOS = new ArrayList<>();
-                sysDevices.forEach(s -> {
-                    VideoVO videoVO = new VideoVO();
-                    videoVO.setVideoId(s.getId());
-                    videoVO.setVideoName(s.getDeviceName());
-                    List<Map> accessByVideo = sysDeviceMapper.getAccessByVideo(orgId, s.getId());
-                    if (CollectionUtils.isNotEmpty(accessByVideo)) {
-                        accessByVideo.forEach(a -> {
-                            String situation = a.get("situation").toString();
-                            int num = Integer.parseInt(a.get("num").toString());
-                            videoVO.setType(1);
-                            if (situation.equals("1") && num > 0) {
-                                videoVO.setType(2);
-                            }
-                        });
-                    } else {
-                        videoVO.setType(0);
-                    }
-                    videoVOS.add(videoVO);
-                });
-                hostVO.setDeviceVOS(videoVOS);
-            }
-            hostVOS.add(hostVO);
-        });
-        return hostVOS;
-    }*/
-
     @Override
     public List<HostVO> getHostVideoByTaskId(Long taskId) {
         List<HostVO> hostVOS = new ArrayList<>();
@@ -172,7 +134,7 @@ public class SysDeviceServiceImpl extends ServiceImpl<SysDeviceMapper, SysDevice
                 sysDevices.forEach(s -> {
                     VideoVO videoVO = new VideoVO();
                     videoVO.setVideoId(s.getId());
-                    videoVO.setVideoName("通道"+s.getChannel());
+                    videoVO.setVideoName(s.getDeviceName());
                     List<AccessType> accessByVideo = sysDeviceMapper.getAccessByVideo(s.getId(), taskId);
                     if (accessByVideo.size()>0) {
                         for (AccessType a:accessByVideo){
@@ -184,15 +146,6 @@ public class SysDeviceServiceImpl extends ServiceImpl<SysDeviceMapper, SysDevice
                                 break;
                             }
                         }
-                  /*      accessByVideo.forEach(a -> {
-                            String situation = a.getSituation();
-                            int num = a.getNum();
-                            videoVO.setType(1);
-                            if (situation.equals("1") && num > 0) {
-                                videoVO.setType(2);
-                            }
-                        });*/
-
                     } else {
                         videoVO.setType(0);
                     }
@@ -241,7 +194,17 @@ public class SysDeviceServiceImpl extends ServiceImpl<SysDeviceMapper, SysDevice
         sysDevice.setCreateBy(SecurityUtils.getUsername());
         SysOrg sysOrg = orgService.selectSysOrgById(sysDevice.getOrgId());
         sysDevice.setOrgName(sysOrg.getShortName());
-        return sysDeviceMapper.insert(sysDevice);
+        int insert = sysDeviceMapper.insert(sysDevice);
+        //新增防区只有报警主机
+        if (sysDevice.getDeviceType().equals("1")){
+            ProtectionDTO protectionDTO=new ProtectionDTO();
+            protectionDTO.setName(sysDevice.getDeviceName());
+            protectionDTO.setOrgPath(sysOrg.getPath());
+            protectionDTO.setAllHour(0);
+            protectionDTO.setDeviceId(sysDevice.getId());
+            remoteProtectionService.addByDevice(protectionDTO);
+        }
+        return insert;
     }
 
     /**
@@ -255,7 +218,14 @@ public class SysDeviceServiceImpl extends ServiceImpl<SysDeviceMapper, SysDevice
         sysDevice.setUpdateTime(DateUtils.getNowDate());
         sysDevice.setUpdateBy(SecurityUtils.getUsername());
         SysOrg sysOrg = orgService.selectSysOrgById(sysDevice.getOrgId());
-        sysDevice.setOrgName(sysOrg.getName());
+        sysDevice.setOrgName(sysOrg.getShortName());
+        if (sysDevice.getDeviceType().equals("1")){
+            ProtectionDTO protectionDTO=new ProtectionDTO();
+            protectionDTO.setId(sysDevice.getId());
+            protectionDTO.setName(sysDevice.getDeviceName());
+            protectionDTO.setOrgPath(sysOrg.getPath());
+            remoteProtectionService.addByDevice(protectionDTO);
+        }
         return sysDeviceMapper.updateById(sysDevice);
     }
 

+ 8 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysUserRoleServiceImpl.java

@@ -1,5 +1,6 @@
 package com.xunmei.system.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -115,4 +116,11 @@ public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUs
     public int deleteSysUserRoleByUserId(Long userId) {
         return sysUserRoleMapper.deleteUserRoleByUserId(userId);
     }
+
+    @Override
+    public List<Long> getUserRoleId(Long userId) {
+        List<SysUserRole> selectList = sysUserRoleMapper.selectList(new LambdaQueryWrapper<SysUserRole>()
+                .eq(SysUserRole::getUserId, userId));
+        return selectList.stream().map(SysUserRole::getRoleId).collect(java.util.stream.Collectors.toList());
+    }
 }

+ 16 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysUserServiceImpl.java

@@ -26,6 +26,7 @@ import com.xunmei.system.mapper.*;
 import com.xunmei.system.service.ISysConfigService;
 import com.xunmei.system.service.ISysOrgService;
 import com.xunmei.system.service.ISysUserService;
+import com.xunmei.system.util.UserExport;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -615,4 +616,19 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     public List<SysUser> selectAllUser() {
         return userMapper.selectAllUser();
     }
+
+    @Override
+    public List<UserExport> down(SysUser user) {
+        SysOrg org = null;
+        //查询条件
+        QueryWrapper<SysOrg> queryWrapper = new QueryWrapper<>();
+        if (null == user.getOrgId()) {
+            queryWrapper.eq("parent_id", -1);
+            org = sysOrgMapper.selectOne(queryWrapper);
+        } else {
+            org = sysOrgMapper.selectById(user.getOrgId());
+        }
+        user.setOrgPath(org.getPath());
+        return userMapper.select(user);
+    }
 }

+ 4 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysWorkTimeServiceImpl.java

@@ -51,6 +51,7 @@ public class SysWorkTimeServiceImpl extends ServiceImpl<SysWorkTimeMapper, SysWo
     @Autowired
     private ApplicationContext context;
 
+
     public static Date extractDate(String dateString, String dateFormat) throws ParseException {
         SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, Locale.ENGLISH);
         sdf.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
@@ -326,6 +327,8 @@ public class SysWorkTimeServiceImpl extends ServiceImpl<SysWorkTimeMapper, SysWo
                 s.setOrgId(orgId);
                 s.setIsManual(1L);
                 s.setUpdateTime(updateTime);
+                s.setModifiedId(SecurityUtils.getUserId());
+                s.setModifiedName(SecurityUtils.getUsername());
                 baseMapper.insert(s);
             }
 
@@ -384,7 +387,7 @@ public class SysWorkTimeServiceImpl extends ServiceImpl<SysWorkTimeMapper, SysWo
         sysWorkTime.setModifiedName(SecurityUtils.getUsername());
         sysWorkTime.setModifiedId(SecurityUtils.getUserId());
         if (DateUtil.format(sysWorkTime.getYmdDate(), "yyyy-MM-dd").equals(DateUtil.format(new Date(), "yyyy-MM-dd"))) {
-            context.publishEvent(WorkChangeEvent.builder().orgIds(Lists.newArrayList(sysWorkTime.getOrgId())).dateTime(DateTime.of(sysWorkTime.getYmdDate())).build());
+//            context.publishEvent(WorkChangeEvent.builder().orgIds(Lists.newArrayList(sysWorkTime.getOrgId())).dateTime(DateTime.of(sysWorkTime.getYmdDate())).build());
         }
         return sysWorkTimeMapper.updateById(sysWorkTime);
     }

+ 0 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/util/Event.java → soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/Event.java


+ 37 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/UserExport.java

@@ -0,0 +1,37 @@
+package com.xunmei.system.util;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import com.alibaba.excel.metadata.BaseRowModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+@Data
+@ColumnWidth(15) //列宽,最大值为255
+@HeadRowHeight(16) //表头行高
+@ContentRowHeight(16) //数据行高
+public class UserExport {
+
+    @ExcelProperty(value = "用户账号", index = 1)
+    private String username;
+    @ExcelProperty(value = "用户姓名", index = 2)
+    private String name;
+    @ExcelProperty(value = "所属机构", index = 3)
+    private String orgName;
+    @ExcelProperty(value = "用户角色", index = 4)
+    private String roleNames;
+    @ExcelProperty(value = "状态", index = 5,converter = UserStatusConverter.class)
+    private String isLock;
+    @ExcelProperty(value = "是否管理人员", index = 6,converter = UserManagerConverter.class)
+    private String isManager;
+    @ExcelProperty(value = "登录IP", index = 7)
+    private String lastIp;
+    @ExcelProperty(value = "登录时间", index = 8)
+    private Date lastTime;
+}

+ 34 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/UserManagerConverter.java

@@ -0,0 +1,34 @@
+package com.xunmei.system.util;
+
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.CellData;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+
+public class UserManagerConverter implements Converter<String> {
+    @Override
+    public Class supportJavaTypeKey() {
+        return null;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return null;
+    }
+
+    @Override
+    public String convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        return null;
+    }
+
+    @Override
+    public CellData convertToExcelData(String s, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        // 根据条件修改是否管理人员的值
+        if (s!=null) {
+            return new CellData("是");
+        } else {
+            return new CellData("否");
+        }
+    }
+}

+ 39 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/util/UserStatusConverter.java

@@ -0,0 +1,39 @@
+package com.xunmei.system.util;
+
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.CellData;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+
+public class UserStatusConverter implements Converter<String> {
+
+
+
+    @Override
+    public Class supportJavaTypeKey() {
+        return null;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return null;
+    }
+
+    @Override
+    public String convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        return null;
+    }
+
+    @Override
+    public CellData convertToExcelData(String isLock, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        if ("0".equals(isLock)) {
+            return new CellData("启用");
+        } else if ("1".equals(isLock)) {
+            return new CellData("禁用");
+        } else {
+            return new CellData("禁用");
+        }
+
+    }
+}

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно