Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/V0.0.2' into V0.0.2

ouyang 2 gadi atpakaļ
vecāks
revīzija
51046d8e7b
31 mainītis faili ar 394 papildinājumiem un 239 dzēšanām
  1. 21 2
      project_data/sql/0.0.2/soc/soc.sql
  2. 3 2
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteResumptionTaskService.java
  3. 2 1
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteResumptionTaskFallbackFactory.java
  4. 2 4
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/panel/dto/PanelListDto.java
  5. 6 2
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/event/WorkTimeChangeEvent.java
  6. 1 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/TaskCreatingServiceImplBase.java
  7. 0 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/access/service/impl/TMonitoringRetrievalPlanServiceImpl.java
  8. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/controller/CoreDrillTaskController.java
  9. 2 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/mapper/CoreDrillPlanMapper.java
  10. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/mapper/CoreDrillTaskMapper.java
  11. 16 9
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillPlanServiceImpl.java
  12. 25 13
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java
  13. 16 9
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java
  14. 5 5
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/listener/WorkTimeChangeEventListener.java
  15. 3 13
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/panel/service/impl/PanelServiceImpl.java
  16. 12 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/ResumptionController.java
  17. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppPlanServiceImpl.java
  18. 32 23
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/task/RebuildResumptionTaskBusiness.java
  19. 0 5
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/retrieval/service/impl/CoreMonitoringRetrievalTaskServiceImpl.java
  20. 17 13
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/controller/CoreSafecheckPlanController.java
  21. 4 3
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/domain/CoreSafecheckPlan.java
  22. 115 70
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/CoreSafecheckPlanServiceImpl.java
  23. 7 0
      soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillPlanMapper.xml
  24. 20 53
      soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillTaskMapper.xml
  25. 21 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysNfcBindController.java
  26. 3 2
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/domain/SysNfcBind.java
  27. 31 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/listener/WorkTimeChangeEventListener.java
  28. 2 2
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysNfcBindMapper.java
  29. 2 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysNfcBindService.java
  30. 14 0
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysNfcBindServiceImpl.java
  31. 9 0
      soc-modules/soc-modules-system/src/main/resources/mapper/system/SysNfcBindMapper.xml

+ 21 - 2
project_data/sql/0.0.2/soc/soc.sql

@@ -989,6 +989,11 @@ IF
 
 	END IF;
 	IF
+NOT EXISTS ( SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE  table_schema = DATABASE () and TABLE_NAME = 'sys_nfc_bind' AND COLUMN_NAME = 'source' ) THEN
+ALTER TABLE sys_nfc_bind ADD COLUMN source VARCHAR ( 2 ) COMMENT '来源1web端2app';
+
+END IF;
+	IF
 		EXISTS ( SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = DATABASE () and  TABLE_NAME = 'sys_area_check' AND COLUMN_NAME = 'area_id' ) THEN
 			ALTER TABLE sys_area_check DROP COLUMN area_id;
 
@@ -1081,12 +1086,24 @@ END IF;
         ALTER TABLE `core_resumption_plan` ADD COLUMN `plan_of_org_type` INT NULL DEFAULT NULL COMMENT '所属机构类型';
 
     END IF;
+
+    -- 安全检查所属机构类型
+    IF
+        NOT EXISTS ( SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = DATABASE () and  TABLE_NAME = 'core_safecheck_plan' AND COLUMN_NAME = 'plan_of_org_type' ) THEN
+        ALTER TABLE `core_safecheck_plan` ADD COLUMN `plan_of_org_type` INT NULL DEFAULT NULL COMMENT '计划所属机构类型';
+
+    END IF;
+
+
 	-- 履职任务NFC表增加submitby
     IF
         NOT EXISTS ( SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = DATABASE () and TABLE_NAME = 'core_resumption_data_nfc' AND COLUMN_NAME = 'submit_by' ) THEN
         ALTER TABLE `core_resumption_data_nfc` ADD COLUMN `submit_by` bigint NULL COMMENT '提交人id' AFTER `submit_time`;
 
     END IF;
+
+
+
 	ALTER TABLE `core_protection` MODIFY COLUMN `device_id` BIGINT NULL DEFAULT NULL COMMENT '设备ID' AFTER `id`;
 -- 机构扩展添加是否业务库
 	ALTER TABLE sys_org_extend MODIFY COLUMN business_library INT COMMENT '是否业务库';
@@ -1748,7 +1765,7 @@ VALUES ( 4, '新任职保卫人员未参考', '4', 'post_no_pass', NULL, 'defaul
 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,01706239529069875202);
+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,01706239529069875202,2214);
 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', '');
@@ -1783,13 +1800,14 @@ 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 (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 (01706239529069875202, '下发', 2317, 6, '', NULL, NULL, 1, 0, 'F', '0', '0', 'core:checkplan:distribute', '1', '#', NULL, '超级管理员', '2023-09-26 09:56:04', '', 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 (00000000000000002214, '隐患问题清单', 2136, 4, '/problemItem', NULL, NULL, 1, 0, 'M', '0', '0', '', '0', 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAABWCAMAAACNSvr7AAAAM1BMVEVHcEzNmKXNmKXNmKXNmKXNmKXNmKXNmKXNmKXNmKXNmKXNmKXNmKXNmKXNmKXNmKXNmKXc/5sSAAAAEHRSTlMA4NAQ8DBgQIDAoHAgUJCwaDv5MQAAAAlwSFlzAAALEgAACxIB0t1+/AAAAltJREFUWIXtmN12qyAQRkf+FUx4/6c9C4QaZQYwC08v6neTNqm7hIHNKDx58uSXwlfzRXRrsEb4b2Ia2OUrapNrv8S2uJP3flJuHszVAcsBRnON917BPVx94moytpv78t7DiVuftT7ufBM3jFfewOWzn+8Yb84d3OCdaTy38M4YbumdIVxVYMdww8QKI0fXDfPOCC7mnVHc/+Wdvlz3zggu5p0RXDeV3hnB/ZyP4Vx99M4grn36HQAQ0TuaDeaGHS8u9TtsZh3c4Afbu86m18rjVU4t4rp3iMyxk47+cYHd5EIPl2mAdflZ5rOpc3u9YwDUae8sNfLS5R2hQJYrRlia6ybPmuMVEjtevfdvXp2MFlcRWO9ZFaxt1TuGxPrty+KxDZcxkJVPX7XKVaMB/cevpEHi/rDpnTmu8SIKpKjNRPSOqnhnRYcbeo4EXtGSbcuIXg8TrAQ2g98Yt3mftWAF2LDAt2+JrbWmdxSUU5SwLn2CVa7pHQ35J5HPwYSV+XfMmE3vcJexMoHOWJTb9E7uIUNxAyq8HrFbY3OKbHkncTecFAgW5X7OBxrH47sJ5xAsfdLJlfZOqttRXAcsxV2r3jFpnTG5X6GPHRJuiIZ33rGV9XvBylsoFEurNYVnS2bw+Qp0H0epsJp37I93NrA+/wE6De3nO9M+QKHOJSNXWcfzHfNhCFVgiap19DvCfZxDBZZYZD39DqsUl9prXf3Ocv2c7+t3KPBCtg9SbN6R9M1rCAdd7spaH9XqN/fw83MVerBXo957vewwaozU1ljdfFb95M/nSQoA/AN/gr7nzB2jDwAAAABJRU5ErkJggg==', NULL, '超级管理员', '2023-09-20 15:14:35', '超级管理员', '2023-09-20 17:47:12', '');
 
 
 DELETE FROM sys_menu WHERE id IN(2359,2360,2361,2362,2363,2364,2365,2207);
 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 (2207, '信息中心', 0, 8, 'infoCore', NULL, NULL, 1, 0, 'M', '0', '0', 'core:send:list', '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 (2359, '息发送管理', 2207, 3, 'send', 'core/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', '');
+VALUES (2359, '息发送管理', 2207, 3, 'send', 'core/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 (2360, '新增', 2359, 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`)
@@ -1989,6 +2007,7 @@ INSERT INTO sys_menu (id, menu_name, parent_id, order_num, path, component, quer
 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 (1714188002965626881, '综合评价规则列表查询', 1712278645189414914, 4, '', null, null, 1, 0, 'F', '0', '0', 'core:safetyIndexRule:list', '1', null, null, null, now(), '', 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 (1714188131026116609, '综合评价规则删除', 1712278645189414914, 5, '', null, null, 1, 0, 'F', '0', '0', 'core:safetyIndexRule:remove', '1', null, null, null, now(), '', 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 (1714247486990786561, '撤回计划', 2052, 9, '', null, null, 1, 0, 'F', '0', '0', 'core:accessPlan:add', '1', null, null, null, now(), '', null, '');
 delete from sys_role_menu where menu_id in (1712277074707779586,1712278645189414914,1714187591810588674,1714187748136493058,1714187851295399937,1714188002965626881,1714188131026116609);

+ 3 - 2
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteResumptionTaskService.java

@@ -3,6 +3,7 @@ package com.xunmei.system.api;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.constant.ServiceNameConstants;
 import com.xunmei.common.core.domain.R;
+import com.xunmei.common.core.event.WorkTimeChangeEvent;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.system.api.factory.RemoteEduTrainingFallbackFactory;
 import com.xunmei.system.api.factory.RemoteResumptionTaskFallbackFactory;
@@ -46,6 +47,6 @@ public interface RemoteResumptionTaskService {
 
     @GetMapping(value = "resumption/task/updatetaskstatus")
     R<Boolean> updateTaskStatus();
-    @PostMapping("resumption/task/dayTaskByWorkTime")
-    AjaxResult dayTaskByWorkTime(@RequestBody Map<String, Object> param,@RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+    @PostMapping("api/resumption/rebuild")
+    AjaxResult rebuild(@RequestBody String event, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 }

+ 2 - 1
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteResumptionTaskFallbackFactory.java

@@ -1,6 +1,7 @@
 package com.xunmei.system.api.factory;
 
 import com.xunmei.common.core.domain.R;
+import com.xunmei.common.core.event.WorkTimeChangeEvent;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.system.api.RemoteEduTrainingService;
 import com.xunmei.system.api.RemoteOrgService;
@@ -61,7 +62,7 @@ public class RemoteResumptionTaskFallbackFactory implements FallbackFactory<Remo
             }
 
             @Override
-            public AjaxResult dayTaskByWorkTime(Map<String, Object> param,String source) {
+            public AjaxResult rebuild(String event, String source) {
                 return null;
             }
 

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

@@ -13,13 +13,11 @@ public class PanelListDto {
     private Long userId;
     private Long orgId;
     private String orgPath;
-
     private List<Long> roleIdList;
-
     private List<Integer> statusList;
-
-
     private Date startTime;
     private Date endTime;
 
+    private Integer orgType;
+
 }

+ 6 - 2
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/event/WorkTimeChangeEvent.java

@@ -2,7 +2,9 @@ package com.xunmei.common.core.event;
 
 import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 import lombok.Getter;
+import lombok.Setter;
 import org.springframework.context.ApplicationEvent;
 
 import java.util.Date;
@@ -10,12 +12,14 @@ import java.util.List;
 
 
 @Getter
+@Setter
 public class WorkTimeChangeEvent extends ApplicationEvent {
 
     @ApiModelProperty(value = "机构id数组", notes = "受影响的机构")
-    private final List<Long> orgIds;
+    private List<Long> orgIds;
+
+    private List<SysWorkTime> dataList;
 
-    private final List<SysWorkTime> dataList;
 
     public WorkTimeChangeEvent(Object source, List<Long> orgIds, List<SysWorkTime> dataList) {
         super(source);

+ 1 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/TaskCreatingServiceImplBase.java

@@ -99,11 +99,10 @@ public abstract class TaskCreatingServiceImplBase<M extends BaseMapper<T>, T> ex
                 return true;
             }
 
+            start = DateUtil.offset(start, DateField.DAY_OF_YEAR, 1);
             if (start.equals(end) || start.after(end)) {
                 return false;
             }
-
-            start = DateUtil.offset(start, DateField.DAY_OF_YEAR, 1);
         }
     }
 

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

@@ -387,7 +387,6 @@ public class TMonitoringRetrievalPlanServiceImpl extends ServiceImpl<TMonitoring
             sysOrg.setPath(nowUserOrg.getPath());
             sysOrg.setType(Integer.valueOf(tMonitoringRetrievalPlan.getOrgType()));
             List<SysOrg> sysOrgs = remoteOrgService.listByParentIdAndType(sysOrg, SecurityConstants.INNER);
-            // List<TMonitoringRetrievalPlan> tMonitoringRetrievalPlans = new ArrayList<>();
             for (SysOrg s : sysOrgs) {
                 TMonitoringRetrievalPlan plan = new TMonitoringRetrievalPlan();
                 BeanUtils.copyProperties(tMonitoringRetrievalPlan, plan);

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/controller/CoreDrillTaskController.java

@@ -138,6 +138,6 @@ public class CoreDrillTaskController extends BaseController {
     @ApiOperation(value = "未完成任务修改成已过期")
     @GetMapping("/updateDrillTaskStatus")
     public AjaxResult updateDrillTaskStatus() {
-        return success(coreDrillTaskService.updateDrillTaskStatus());
+        return toAjax(coreDrillTaskService.updateDrillTaskStatus());
     }
 }

+ 2 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/mapper/CoreDrillPlanMapper.java

@@ -81,4 +81,6 @@ public interface CoreDrillPlanMapper extends BaseMapper<CoreDrillPlan> {
     int updatePlanStatus(@Param("planId") Long planId, @Param("planStatus") int status);
 
     void updatePlanStatusByIdOrParentId(@Param("planId") Long planId, @Param("planStatus") int status);
+
+    void updatePlanStatusByIdList(@Param("list") List<Long> list, @Param("status") int status);
 }

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

@@ -45,6 +45,6 @@ public interface CoreDrillTaskMapper extends BaseMapper<CoreDrillTask> {
 
     List<PanelListVo> selectWaitEvaluateTaskList(@Param("request") PanelListDto panelListDto);
 
-    Integer updateTaskStatus();
+    Integer updateTaskStatus(@Param("status") int status);
 
 }

+ 16 - 9
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillPlanServiceImpl.java

@@ -210,7 +210,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         plan.setPlanStatus(DrillPlanStatus.DRAFT.getCode());
         plan.setStandard(0);
         plan.setIssue(0);
-        //省联社或者办事处创建的计划才存在下发
+        //省联社或者办事处行社创建的计划才存在下发
         if (checkOrgType(org.getType())) {
             plan.setStandard(1);
             plan.setIssue(0);
@@ -218,7 +218,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         plan.setBeIssue(0);
         int insert = coreDrillPlanMapper.insert(plan);
 
-        //如果不是省联社或者办事处,状态启用,并且是无周期或者立即生效
+        //如果不是省联社或者办事处行社,状态启用,并且是无周期或者立即生效
         if ((!checkOrgType(org.getType())) && ObjectUtil.equal(DrillPlanStatus.USING.getCode(), plan.getPlanStatus()) && (ObjectUtil.equal(DrillPlanCycleEnum.NONE.getCode(), plan.getPlanCycle()) || ObjectUtil.equal(1, plan.getBuildTaskNow()))) {
             final CoreDrillPlanDataVo detailPlanData = this.getCoreDrillPlanDataVo(plan.getId());
             coreDrillTaskService.createTaskForNow(detailPlanData, plan.getPlanStartDate(), plan.getPlanEndDate());
@@ -232,7 +232,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
             throw new RuntimeException("当前用户所在机构类型无法确认!");
         }
         //如果是省联社或者办事处则返回1,其他机构类型返回0
-        return ObjectUtil.equal(orgType, OrgTypeEnum.SHEGN_LIAN_SHE.getCode()) || ObjectUtil.equal(orgType, OrgTypeEnum.BAN_SHI_CHU.getCode());
+        return ObjectUtil.equal(orgType, OrgTypeEnum.SHEGN_LIAN_SHE.getCode()) || ObjectUtil.equal(orgType, OrgTypeEnum.BAN_SHI_CHU.getCode()) || ObjectUtil.equal(orgType, OrgTypeEnum.HANG_SHE.getCode());
     }
 
     /**
@@ -269,8 +269,8 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         plan.setFileList(ObjectUtil.isNotEmpty(request.getFileList()) ? JSON.toJSONString(request.getFileList()) : null);
         plan.setUpdateBy(SecurityUtils.getLoginUser().getSysUser().getId().toString());
         coreDrillPlanToRoleMapper.deleteByMap(MapUtil.of("plan_id", plan.getId()));
-        //List<CoreEduTrainingPlanToRole> trainingPlanToRoleList = batchSavePlanToRole(request.getPlanRoleId(), plan.getId());
         coreDrillPlanToExecOrgMapper.deleteByMap(MapUtil.of("plan_id", plan.getId()));
+        batchSavePlanToRole(request.getPlanRoleId(), plan.getId());
         batchSavePlanToExecOrg(request.getPlanExecOrgIdList(), plan.getId());
         coreDrillPlanMapper.updateById(plan);
     }
@@ -282,7 +282,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         Long planId = plan.getId();
         // 判断标准计划能否修改:存在下发的计划生成了任务且任务存在已执行
         Integer standardPlanHasDone = coreDrillTaskMapper.checkHasTaskIsDoneByPlanParentId(planId);
-        if (standardPlanHasDone == 1) {
+        if (ObjectUtil.equal(standardPlanHasDone, 1)) {
             //验证修改的字段是否符合要求
             String errorMsg = "有任务已执行或已过期,仅允许修改培训主题!";
             validatePlanForStandard(request, plan, errorMsg, 1);
@@ -453,18 +453,24 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         if (ObjectUtil.equal(plan.getIssue(), 1)) {
             throw new SystemException("计划已完成发布!");
         }
-        // 下发 按钮显示逻辑:仅省联社安全保卫管理人员进入且由省联社管理安全保卫人员创建的计划才显示
-        //todo 判断当前人的角色信息
-        List<CoreDrillPlan> list = buildPlanData(plan, new ArrayList<>(), true);
+        List<CoreDrillPlan> planList = lambdaQuery().eq(CoreDrillPlan::getParentId, planId).select(CoreDrillPlan::getId).list();
+        if (planList.isEmpty()) {
+            planList = buildPlanData(plan, new ArrayList<>(), true);
+        } else {
+            planList.forEach(plan1 -> plan1.setPlanStatus(EduTrainingPlanStatus.USING.getCode()));
+            List<Long> collect = planList.stream().map(CoreDrillPlan::getId).collect(Collectors.toList());
+            coreDrillPlanMapper.updatePlanStatusByIdList(collect, EduTrainingPlanStatus.USING.getCode());
+        }
         //下发后修改为使用中
         plan.setPlanStatus(DrillPlanStatus.USING.getCode());
         plan.setIssue(1);
         this.updateById(plan);
         //事务提交后执行
+        List<CoreDrillPlan> finalPlanList = planList;
         TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
             @Override
             public void afterCommit() {
-                for (CoreDrillPlan drillPlan : list) {
+                for (CoreDrillPlan drillPlan : finalPlanList) {
                     CompletableFuture.runAsync(() -> {
                         //如果不是省联社或者办事处,状态启用,并且是无周期或者立即生效
                         if ((ObjectUtil.equal(DrillPlanStatus.USING.getCode(), plan.getPlanStatus()) && (ObjectUtil.equal(DrillPlanCycleEnum.NONE.getCode(), plan.getPlanCycle()) || ObjectUtil.equal(1, plan.getBuildTaskNow())))) {
@@ -483,6 +489,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
     public int revocationPlan(Long planId) {
         CoreDrillPlan plan = getById(planId);
         plan.setIssue(0);
+        plan.setPlanStatus(EduTrainingPlanStatus.DELETED.getCode());
         DateRange range = DateUtils.getStartAndEnd(new Date(), plan.getPlanCycle());
         List<Long> list = coreDrillPlanMapper.selectIdByParentId(planId);
         coreDrillPlanMapper.updatePlanStatusByIdOrParentId(planId, EduTrainingPlanStatus.DELETED.getCode());

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

@@ -58,6 +58,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.time.LocalDateTime;
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
@@ -150,11 +151,10 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         record.setStatusText(DrillDoStatus.getName(record.getStatus()));
 
         List<CoreDrillTaskToRole> coreDrillTaskToRoles = listMap.get(record.getId());
-        if (ObjectUtil.isEmpty(coreDrillTaskToRoles)) {
-            return;
+        if (ObjectUtil.isNotEmpty(coreDrillTaskToRoles)) {
+            record.setTaskRoleList(coreDrillTaskToRoles);
+            record.setTaskRoleNameList(coreDrillTaskToRoles.stream().map(CoreDrillTaskToRole::getRoleName).collect(Collectors.joining(",")));
         }
-        record.setTaskRoleList(coreDrillTaskToRoles);
-        record.setTaskRoleNameList(coreDrillTaskToRoles.stream().map(CoreDrillTaskToRole::getRoleName).collect(Collectors.joining(",")));
         //状态 != 待执行才存在相关用户信息
         if (!record.getStatus().equals(DrillDoStatus.WAIT_RECORDED.getCode())) {
             List<CoreDrillTaskToUser> userList = taskToUserMapper.selectList(new LambdaQueryWrapper<CoreDrillTaskToUser>()
@@ -339,7 +339,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         saveTaskAndRoleData(plan, start, end, execOrgList);
     }
 
-    private List<SysOrg> getExecOrgList(CoreDrillPlanDataVo plan, Date start, Date end){
+    private List<SysOrg> getExecOrgList(CoreDrillPlanDataVo plan, Date start, Date end) {
         List<CoreDrillPlanToExecOrg> planExecOrgList = plan.getPlanExecOrgList();
         List<SysOrg> orgList;
         if (ObjectUtil.isEmpty(planExecOrgList)) {
@@ -352,7 +352,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         List<Long> orgIdList = orgList.stream().map(SysOrg::getId).collect(Collectors.toList());
         String startTime = DateUtil.format(start, Constants.DAILY_FORMAT);
         String endTime = DateUtil.format(end, Constants.DAILY_FORMAT);
-        WorkTimeDto workTimeDto= new WorkTimeDto();
+        WorkTimeDto workTimeDto = new WorkTimeDto();
         workTimeDto.setOrgIdList(orgIdList);
         workTimeDto.setStartTime(startTime);
         workTimeDto.setEndTime(endTime);
@@ -366,7 +366,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         List<Long> workOrgIdList = workTimeList.stream().filter(time -> ObjectUtil.equal(time.getIsEnable(), WORK))
                 .map(SysWorkTime::getOrgId).collect(Collectors.toList());
         return orgList.stream().filter(org -> workOrgIdList.contains(org.getId())).collect(Collectors.toList());
-       // return orgList;
+        // return orgList;
 
     }
 
@@ -375,8 +375,15 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         List<CoreDrillTask> taskList = new ArrayList<>();
         List<CoreDrillTaskToRole> taskRoleList = new ArrayList<>();
         Map<Integer, DateRange> dateRangeMap = DateUtils.splitDateRange(start, end, plan.getExecTimes());
+
         for (SysOrg org : orgList) {
             for (int i = 1; i <= plan.getExecTimes(); i++) {
+                final LocalDateTime time = DateUtils.toLocalDateTime(DateUtils.getPreciseTime(dateRangeMap.get(i).getEndTime()));
+                if (time.isBefore(LocalDateTime.now())) {
+                    //如果任务的结束时间 已经小于当前时间则没必要生成任务了,
+                    //用于处理周期中生成多次任务,周期初的任务一经生成就无法执行(预期)的问题,
+                    continue;
+                }
                 CoreDrillTask trainingTask = new CoreDrillTask();
                 trainingTask.setId(IdWorker.getId());
                 trainingTask.setPlanId(plan.getId());
@@ -410,8 +417,6 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
                     taskRoleList.add(coreDrillTaskToRole);
                 }
             }
-
-
         }
         if (ObjectUtil.isNotEmpty(taskList)) {
             this.saveBatch(taskList);
@@ -635,7 +640,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
                 //此处因为planService会导致循环依赖
                 final CoreDrillPlanDataVo detailPlanData = coreDrillPlanMapper.getDetailPlanData(plan.getId());
                 detailPlanData.setFileList(ObjectUtil.isNotEmpty(detailPlanData.getFile()) ? JSON.parseArray(detailPlanData.getFile(), String.class) : null);
-                DateRange range = DateUtils.getStartAndEnd(finalDate, EduTrainingPlanCycleEnum.toCommmonEnum( plan.getPlanCycle()));
+                DateRange range = DateUtils.getStartAndEnd(finalDate, EduTrainingPlanCycleEnum.toCommmonEnum(plan.getPlanCycle()));
                 this.createTaskForNow(detailPlanData, range.getStartTime(), range.getEndTime());
             }, threadPoolTaskExecutor);
         }
@@ -839,16 +844,23 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
     public List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto) {
         SysOrg sysOrg = RemoteCallHandlerExecutor.executeRemoteCall(() ->
                 orgService.selectSysOrgById(panelListDto.getOrgId(), SecurityConstants.FROM_SOURCE), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+        panelListDto.setOrgType(sysOrg.getType());
+        panelListDto.setOrgPath(sysOrg.getPath());
         List<Integer> statusList = new ArrayList<>();
         Collections.addAll(statusList, 0, 1);
         List<PanelListVo> list = coreDrillTaskMapper.selectCurUserTaskList(panelListDto, statusList);
         dealListData(list, panelListDto.getUserId());
-        if (!OrgTypeEnum.YINGYE_WANGDIAN.getCode().equals(sysOrg.getType())) {
-            panelListDto.setOrgPath(sysOrg.getPath());
+        //省联社/办事处或行社
+        if (OrgTypeEnum.HANG_SHE.getCode().equals(sysOrg.getType()) ||
+                OrgTypeEnum.BAN_SHI_CHU.getCode().equals(sysOrg.getType()) ||
+                OrgTypeEnum.SHEGN_LIAN_SHE.getCode().equals(sysOrg.getType())) {
+
             //查询待评价数据
             List<PanelListVo> list2 = coreDrillTaskMapper.selectWaitEvaluateTaskList(panelListDto);
             list2.removeIf(item -> DateUtil.compare(new Date(), item.getEndTime()) > 0);
             list.addAll(list2);
+
+
         }
 
         list.forEach(item -> {
@@ -883,7 +895,7 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
     @Override
     @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
     public Integer updateDrillTaskStatus() {
-        return coreDrillTaskMapper.updateTaskStatus();
+        return coreDrillTaskMapper.updateTaskStatus(DrillDoStatus.OVERDUE.getCode());
     }
 
     @Override

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

@@ -70,6 +70,7 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.NumberFormat;
 import java.time.LocalDate;
+import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
@@ -141,13 +142,13 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         IPage<CoreEduTrainingTaskPageVo> pageData = coreEduTrainingTaskMapper.selectPageData(request.getPageRequest(), request);
         if (ObjectUtil.isNotEmpty(pageData.getRecords())) {
             pageData.getRecords().sort(getComparator());
-            List<Long> idList = pageData.getRecords().stream().map(CoreEduTrainingTaskPageVo::getId).collect(Collectors.toList());
+           /* List<Long> idList = pageData.getRecords().stream().map(CoreEduTrainingTaskPageVo::getId).collect(Collectors.toList());
             List<CoreEduTrainingTaskToRole> roleList = taskToRoleMapper.selectList(new LambdaQueryWrapper<CoreEduTrainingTaskToRole>()
                     .in(CoreEduTrainingTaskToRole::getEduTrainingTaskId, idList));
-            Map<Long, List<CoreEduTrainingTaskToRole>> listMap = roleList.stream().collect(Collectors.groupingBy(CoreEduTrainingTaskToRole::getEduTrainingTaskId));
+            Map<Long, List<CoreEduTrainingTaskToRole>> listMap = roleList.stream().collect(Collectors.groupingBy(CoreEduTrainingTaskToRole::getEduTrainingTaskId));*/
             final List<CoreEduTrainingTaskPageVo> records = pageData.getRecords();
             for (CoreEduTrainingTaskPageVo record : records) {
-                dealData(record, records, listMap);
+                dealData(record, records, null);
             }
         }
         //抓换为TableDataInfo适配前端
@@ -181,12 +182,12 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         //record.setTypeText(EduTrainingType.getName(record.getType()));
         record.setStatusText(EduTrainingDoStatus.getName(record.getStatus()));
 
-        List<CoreEduTrainingTaskToRole> coreEduTrainingTaskToRoles = listMap.get(record.getId());
-        if (ObjectUtil.isEmpty(coreEduTrainingTaskToRoles)) {
-            return;
-        }
-        record.setTaskRoleList(coreEduTrainingTaskToRoles);
+       /* List<CoreEduTrainingTaskToRole> coreEduTrainingTaskToRoles = listMap.get(record.getId());
+        if (ObjectUtil.isNotEmpty(coreEduTrainingTaskToRoles)) {
+           record.setTaskRoleList(coreEduTrainingTaskToRoles);
         record.setTaskRoleNameList(coreEduTrainingTaskToRoles.stream().map(CoreEduTrainingTaskToRole::getRoleName).collect(Collectors.joining(",")));
+        }*/
+
         List<CoreEduTrainingTaskToUser> userList = taskToUserMapper.selectList(new LambdaQueryWrapper<CoreEduTrainingTaskToUser>()
                 .eq(CoreEduTrainingTaskToUser::getEduTrainingTaskId, record.getId()));
         int signNums = (int) userList.stream().filter(user -> user.getSign() == 1 && ObjectUtil.equal(user.getType(), 1)).count();
@@ -436,11 +437,17 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
     private void saveTaskAndRoleData(CoreEduTrainingPlanDataVo plan, Date start, Date end, List<SysOrg> orgList) {
         //List<CoreEduTrainingPlanToRole> planRoleList = plan.getPlanRoleList();
         List<CoreEduTrainingTask> taskList = new ArrayList<>();
-        List<CoreEduTrainingTaskToRole> taskRoleList = new ArrayList<>();
+        //List<CoreEduTrainingTaskToRole> taskRoleList = new ArrayList<>();
         Map<Integer, DateRange> dateRangeMap = DateUtils.splitDateRange(start, end, plan.getExecTimes());
         Date date = new Date();
         for (SysOrg org : orgList) {
             for (int i = 1; i <= plan.getExecTimes(); i++) {
+                final LocalDateTime time = DateUtils.toLocalDateTime(DateUtils.getPreciseTime(dateRangeMap.get(i).getEndTime()));
+                if (time.isBefore(LocalDateTime.now())) {
+                    //如果任务的结束时间 已经小于当前时间则没必要生成任务了,
+                    //用于处理周期中生成多次任务,周期初的任务一经生成就无法执行(预期)的问题,
+                    continue;
+                }
                 DateRange dateRange = dateRangeMap.get(i);
                 CoreEduTrainingTask trainingTask = new CoreEduTrainingTask();
                 trainingTask.setId(IdWorker.getId());

+ 5 - 5
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/listener/WorkTimeChangeEventListener.java

@@ -25,15 +25,15 @@ public class WorkTimeChangeEventListener implements ApplicationListener<WorkTime
     @EventListener(WorkTimeChangeEvent.class)
     @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT, fallbackExecution = true)
     public void onApplicationEvent(WorkTimeChangeEvent event) {
-        eduTask(event);
+//        eduTask(event);
         resumptionTask(event);
     }
 
     private void eduTask(WorkTimeChangeEvent event) {
         try {
-            log.info("教育培训开始处理机构作息变更");
+            log.info("鏁欒偛鍩硅�寮€濮嬪�鐞嗘満鏋勪綔鎭�彉鏇�");
             coreEduTrainingTaskService.taskChangeForTimeWorkChange(event);
-            log.info("教育培训结束处理机构作息变更");
+            log.info("鏁欒偛鍩硅�缁撴潫澶勭悊鏈烘瀯浣滄伅鍙樻洿");
         } catch (Exception e) {
             log.error(e.getMessage(), e);
         }
@@ -42,9 +42,9 @@ public class WorkTimeChangeEventListener implements ApplicationListener<WorkTime
 
     private void resumptionTask(WorkTimeChangeEvent event) {
         try {
-            log.info("履职开始处理机构作息变更");
+            log.info("灞ヨ亴寮€濮嬪�鐞嗘満鏋勪綔鎭�彉鏇�");
             rebuildResumptionTaskBusiness.rebuildTask(event);
-            log.info("履职结束处理机构作息变更");
+            log.info("灞ヨ亴缁撴潫澶勭悊鏈烘瀯浣滄伅鍙樻洿");
         } catch (Exception e) {
             log.error(e.getMessage(), e);
         }

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

@@ -99,18 +99,6 @@ public class PanelServiceImpl implements PanelService {
         CompletableFuture<List<PanelListVo>> eduTrainingTaskFuture = CompletableFuture.supplyAsync(() ->
              eduTrainingTaskService.selectCurUserTaskList(panelListDto)
         );
-      /*  List<PanelListVo> resumptionTaskResult = resumptionTaskFuture.get(TIMEOUT, TimeUnit.SECONDS);
-
-        List<PanelListVo> protectionTaskResult = protectionTaskFuture.get(TIMEOUT, TimeUnit.SECONDS);
-        List<PanelListVo> monitorTaskResult = monitorTaskFuture.get(TIMEOUT, TimeUnit.SECONDS);
-        List<PanelListVo> safetyTaskResult = safetyTaskFuture.get(TIMEOUT, TimeUnit.SECONDS);
-        List<PanelListVo> drillTaskResult = drillTaskFuture.get(TIMEOUT, TimeUnit.SECONDS);
-        List<PanelListVo> eduTrainingTaskResult = eduTrainingTaskFuture.get(TIMEOUT, TimeUnit.SECONDS);
-        dealResult(resumptionTaskResult,protectionTaskResult,monitorTaskResult,safetyTaskResult,drillTaskResult,eduTrainingTaskResult);
-        List<PanelListVo> resultList = Stream.of(resumptionTaskResult, protectionTaskResult, monitorTaskResult, safetyTaskResult, drillTaskResult, eduTrainingTaskResult)
-                .flatMap(Collection::stream)
-                .collect(Collectors.toList());*/
-
         CompletableFuture<Void> allQueries = CompletableFuture.allOf(
                 resumptionTaskFuture, protectionTaskFuture, monitorTaskFuture,
                 safetyTaskFuture, drillTaskFuture, eduTrainingTaskFuture
@@ -125,7 +113,9 @@ public class PanelServiceImpl implements PanelService {
                 .flatMap(Collection::stream)
                 .collect(Collectors.toList());
         //将resultList根据type字段分组,并排序
-        Map<Integer, List<PanelListVo>> listMap = resultList.stream().sorted(Comparator.comparing(PanelListVo::getType)).collect(Collectors.groupingBy(PanelListVo::getType));
+        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();

+ 12 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/ResumptionController.java

@@ -3,12 +3,17 @@ package com.xunmei.core.resumption.controller;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson2.JSON;
 import com.alibaba.nacos.common.utils.CollectionUtils;
+import com.alibaba.nacos.shaded.com.google.gson.Gson;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.constant.SystemParameterConstant;
+import com.xunmei.common.core.event.WorkTimeChangeEvent;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.redis.utils.RedisUtils;
+import com.xunmei.common.security.annotation.InnerAuth;
 import com.xunmei.common.security.utils.SecurityUtils;
+import com.xunmei.core.listener.WorkTimeChangeEventListener;
 import com.xunmei.core.resumption.domain.Resumption;
 import com.xunmei.core.resumption.dto.resumptionRegister.ResumptionTaskDataDto;
 import com.xunmei.core.resumption.dto.TaskDetailsDto;
@@ -46,7 +51,13 @@ public class ResumptionController {
     @Autowired
     ResumptionService resumptionService;
 
-
+    @Autowired
+    WorkTimeChangeEventListener workTimeChangeEventListener;
+    @PostMapping(value = "/rebuild")
+    @InnerAuth
+    void rebuildTask(@RequestBody String event){
+        workTimeChangeEventListener.onApplicationEvent(new Gson().fromJson(event,WorkTimeChangeEvent.class));
+    }
 
     @ApiOperation(value = "new所有")
     @PostMapping(value = "/newTaskList")

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

@@ -215,7 +215,7 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
             baseMapper.updateById(ap);
             //撤回需要删除本周期所有任务
             DateRange dateRange = DateUtils.getStartAndEnd(new Date(), plan.getPlanCycle());
-            resumptionMapper.delete(new LambdaQueryWrapper<Resumption>().eq(Resumption::getPlanId, plan.getId()).between(Resumption::getYmdDate, dateRange.getStartTime(), dateRange.getEndTime()));
+            resumptionMapper.delete(new LambdaQueryWrapper<Resumption>().eq(Resumption::getPlanId, ap.getId()).between(Resumption::getYmdDate, dateRange.getStartTime(), dateRange.getEndTime()));
 
         }
         //设置下发状态为未下发

+ 32 - 23
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/task/RebuildResumptionTaskBusiness.java

@@ -8,6 +8,7 @@ import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.google.common.collect.Lists;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import com.xunmei.common.core.enums.CycleCommonEnum;
@@ -57,7 +58,7 @@ public class RebuildResumptionTaskBusiness extends TaskCreatingServiceImplBase<R
                 List<Long> hsOrgIds = remoteOrgService.selectParentHs(orgIds, SecurityConstants.INNER)
                         .stream().map(SysOrg::getId)
                         .collect(Collectors.toList());
-                List<AppPlan> listPlans = queryPlans(hsOrgIds, CycleCommonEnum.DAILY);
+                List<AppPlan> listPlans = queryPlans(hsOrgIds, CycleCommonEnum.DAILY,new ArrayList<>());
                 //通过计划id获取计划关系的角色
                 if (CollectionUtils.isNotEmpty(listPlans)) {
                     List<Long> planIds = listPlans.stream().map(AppPlan::getId).collect(Collectors.toList());
@@ -65,8 +66,8 @@ public class RebuildResumptionTaskBusiness extends TaskCreatingServiceImplBase<R
                     List<Resumption> newResumptionList = new ArrayList<>();
                     for (AppPlan plan : listPlans) {
                         //根据计划获取角色
-                        List<AppPlanToRole> planToRoles = appPlanToRoles.stream().filter(item -> item.getPlanId().equals(plan.getId())).collect(Collectors.toList());
-                        List<Resumption> resumptionLista = this.buildResumptions(plan, planToRoles, workTime);
+//                        List<AppPlanToRole> planToRoles = appPlanToRoles.stream().filter(item -> item.getPlanId().equals(plan.getId())).collect(Collectors.toList());
+                        List<Resumption> resumptionLista = this.buildResumptions(plan,  workTime);
                         if (CollectionUtils.isNotEmpty(resumptionLista)) {
                             //根据planId和roleId是否判断resumptionLista中的数据是否在resumptionListYlz中
                             List<Resumption> resumptionListb = resumptionLista.stream().filter(item -> !resumptionListYlz.stream().filter(item1 -> item1.getPlanId().equals(item.getPlanId())
@@ -88,29 +89,30 @@ public class RebuildResumptionTaskBusiness extends TaskCreatingServiceImplBase<R
 
     @Override
     public void rebuildWeeklyTask(List<Long> orgIds, Date startDate, Date endDate) {
-        rebuildTask(orgIds,startDate,endDate,CycleCommonEnum.WEEKLY);
+        rebuildTask(orgIds, startDate, endDate, CycleCommonEnum.WEEKLY);
     }
 
 
     @Override
     public void rebuildMonthTask(List<Long> orgIds, Date startDate, Date endDate) {
-        rebuildTask(orgIds,startDate,endDate,CycleCommonEnum.MONTHLY);
+        rebuildTask(orgIds, startDate, endDate, CycleCommonEnum.MONTHLY);
     }
 
     @Override
     public void rebuildQuarterTask(List<Long> orgIds, Date startDate, Date endDate) {
-        rebuildTask(orgIds,startDate,endDate,CycleCommonEnum.QUARTERLY);
+        rebuildTask(orgIds, startDate, endDate, CycleCommonEnum.QUARTERLY);
     }
 
     @Override
     public void rebuildHalfYearTask(List<Long> orgIds, Date startDate, Date endDate) {
-        rebuildTask(orgIds,startDate,endDate,CycleCommonEnum.HALF_YEARLY);
+        rebuildTask(orgIds, startDate, endDate, CycleCommonEnum.HALF_YEARLY);
     }
 
     @Override
     public void rebuildYearTask(List<Long> orgIds, Date startDate, Date endDate) {
-        rebuildTask(orgIds,startDate,endDate,CycleCommonEnum.YEARLY);
+        rebuildTask(orgIds, startDate, endDate, CycleCommonEnum.YEARLY);
     }
+
     private void rebuildTask(List<Long> orgIds, Date startDate, Date endDate, CycleCommonEnum cycle) {
         List<Resumption> resumptionList = queryTask(startDate, cycle, orgIds);
         List<Long> deleteIds = resumptionList.stream()
@@ -126,7 +128,13 @@ public class RebuildResumptionTaskBusiness extends TaskCreatingServiceImplBase<R
         Map<Long, Boolean> workingMap = orgWorkTimeStatusMap(startDate, cycle, orgIds);
 //        List<Long> deleteTaskIds = new ArrayList<>();
 
-        for (Long orgId : orgIds) {
+        List<SysOrg> orgs = remoteOrgService.selectByOrgIdList(orgIds, SecurityConstants.INNER);
+        for (SysOrg org : orgs) {
+            if(ObjectUtil.isNull(org.getType())){
+                continue;
+            }
+
+            Long orgId = org.getId();
             if (!workingMap.containsKey(orgId) || workingMap.get(orgId) == false) {
                 //当前作息周期已经歇业
                 continue;
@@ -135,21 +143,21 @@ public class RebuildResumptionTaskBusiness extends TaskCreatingServiceImplBase<R
             List<Long> hsOrgIds = remoteOrgService.selectParentHs(ListUtil.toList(orgId), SecurityConstants.INNER)
                     .stream().map(SysOrg::getId)
                     .collect(Collectors.toList());
-            List<AppPlan> listPlans = queryPlans(hsOrgIds, CycleCommonEnum.DAILY);
+            List<AppPlan> listPlans = queryPlans(hsOrgIds, cycle, ListUtil.toList(org.getType()));
             if (CollectionUtils.isEmpty(listPlans)) {
                 continue;
             }
 
-            List<Long> planIds = listPlans.stream().map(AppPlan::getId).collect(Collectors.toList());
-            List<AppPlanToRole> appPlanToRoles = appPlanToRoleMapper.selectList(new QueryWrapper<AppPlanToRole>().lambda().in(AppPlanToRole::getPlanId, planIds));
+//            List<Long> planIds = listPlans.stream().map(AppPlan::getId).collect(Collectors.toList());
+//            List<AppPlanToRole> appPlanToRoles = appPlanToRoleMapper.selectList(new QueryWrapper<AppPlanToRole>().lambda().in(AppPlanToRole::getPlanId, planIds));
             List<Resumption> newResumptionList = new ArrayList<>();
             for (AppPlan plan : listPlans) {
                 //根据计划获取角色
-                List<AppPlanToRole> planToRoles = appPlanToRoles.stream().filter(item -> item.getPlanId().equals(plan.getId())).collect(Collectors.toList());
+//                List<AppPlanToRole> planToRoles = appPlanToRoles.stream().filter(item -> item.getPlanId().equals(plan.getId())).collect(Collectors.toList());
                 Long executedCount = executedResumptionList.stream()
                         .filter(r -> ObjectUtil.equal(r.getOrgId(), orgId) && ObjectUtil.equal(r.getPlanId(), plan.getParentId()))
                         .count();
-                List<Resumption> planResumptionList = this.buildResumptions(plan, planToRoles, startDate, endDate, executedCount);
+                List<Resumption> planResumptionList = this.buildResumptions(plan, startDate, endDate, executedCount);
                 if (CollectionUtils.isNotEmpty(planResumptionList)) {
                     //根据planId和roleId是否判断resumptionLista中的数据是否在resumptionListYlz中
 //                    List<Resumption> resumptionListb = resumptionLista.stream().filter(item -> !resumptionListYlz.stream().filter(item1 -> item1.getPlanId().equals(item.getPlanId())
@@ -163,7 +171,7 @@ public class RebuildResumptionTaskBusiness extends TaskCreatingServiceImplBase<R
         }
     }
 
-    private List<Resumption> buildResumptions(AppPlan appPlan, List<AppPlanToRole> planToRoles, SysWorkTime workTime) {
+    private List<Resumption> buildResumptions(AppPlan appPlan, SysWorkTime workTime) {
         DateTime dateTime = new DateTime(workTime.getYmdDate());
         String opentime = workTime.getOpenTime();//营业时间
         String closetime = workTime.getCloseTime();//营业终了
@@ -189,14 +197,10 @@ public class RebuildResumptionTaskBusiness extends TaskCreatingServiceImplBase<R
             planendTime = DateUtil.endOfDay(time2).setField(DateField.MILLISECOND, 0);
         }
 
-        return buildResumptions(appPlan, planToRoles, planstartTime, planendTime, 0L);
+        return buildResumptions(appPlan, planstartTime, planendTime, 0L);
     }
 
-    private List<Resumption> buildResumptions(AppPlan appPlan, List<AppPlanToRole> planToRoles, Date planStartTime, Date planEndTime, Long executedCount) {
-        if (CollectionUtils.isEmpty(planToRoles)) {
-            return new ArrayList<>();
-        }
-
+    private List<Resumption> buildResumptions(AppPlan appPlan, Date planStartTime, Date planEndTime, Long executedCount) {
         List<Resumption> resumptionList = new ArrayList<>();
         Long count = 1L;
         if (NumberUtil.isNumber(appPlan.getCount())) {
@@ -220,7 +224,6 @@ public class RebuildResumptionTaskBusiness extends TaskCreatingServiceImplBase<R
             resumption.setPlanId((ObjectUtil.equal(appPlan.getParentId(), -1L) || ObjectUtil.isNull(appPlan.getParentId())) ? appPlan.getId() : appPlan.getParentId());
             resumption.setOrgId(appPlan.getPlanOfOrgId());
             resumption.setType(appPlan.getPlanCycle());
-            resumption.setRoleId(planToRoles.get(0).getRoleId());
             resumption.setPlanStartTime(planStartTime);
             resumption.setPlanEndTime(planEndTime);
             resumption.setCreateTime(new Date());
@@ -247,12 +250,18 @@ public class RebuildResumptionTaskBusiness extends TaskCreatingServiceImplBase<R
      * @param cycle
      * @return
      */
-    private List<AppPlan> queryPlans(List<Long> planOfOrgId, CycleCommonEnum cycle) {
+    private List<AppPlan> queryPlans(List<Long> planOfOrgId, CycleCommonEnum cycle,List<Integer> execOrgTypes) {
+        if (CollectionUtils.isEmpty(planOfOrgId)) {
+            return new ArrayList<>();
+        }
         QueryWrapper<AppPlan> qw = new QueryWrapper<>();
         qw.lambda().eq(AppPlan::getPlanStatus, 1);
         qw.lambda().eq(AppPlan::getPlanCycle, cycle.getCode());
         qw.lambda().in(AppPlan::getPlanOfOrgId, planOfOrgId);
 
+        if(CollectionUtils.isNotEmpty(execOrgTypes)){
+            qw.lambda().in(AppPlan::getExecOrgType,execOrgTypes);
+        }
         List<AppPlan> listPlans = appPlanMapper.selectList(qw);
 
         return listPlans;

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

@@ -508,11 +508,6 @@ public class CoreMonitoringRetrievalTaskServiceImpl extends ServiceImpl<CoreMoni
             dateRange = DateUtils.getStartAndEnd(dateTime, EduTrainingPlanCycleEnum.toCommmonEnum(Integer.parseInt(plan.getPlanCycle())));
         }
         Map<Integer, DateRange> dateRanges = DateUtils.splitDateRange(dateRange.getStartTime(), dateRange.getEndTime(), plan.getPlanFrequency().intValue());
-        for (int i = 1; i <= plan.getPlanFrequency(); i++) {
-            DateRange dateRange1 = dateRanges.get(i);
-            CoreMonitoringRetrievalTask task = this.buildCoreMonitoringRetrievalTask(batchNum, i, plan, sysOrg, dateRange1, ymd);
-            taskList.add(task);
-        }
         //判断作息(无周期排开)
         if(!plan.getPlanCycle().equals(RetrievalTaskCycle.NOCYCLE.getCode().toString())){
             boolean flag = checkWorkTime(dateRange.getStartTime(), dateRange.getEndTime(), sysOrg.getId());

+ 17 - 13
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/controller/CoreSafecheckPlanController.java

@@ -116,20 +116,24 @@ public class CoreSafecheckPlanController extends BaseController {
             coreSafecheckPlanService.distributeToOrg(dto);
             //下发完成生成任务
             CoreSafecheckPlan plan = coreSafecheckPlanService.getById(dto.getId());
-            int cycle = Math.toIntExact(plan.getPlanCycle());
-            DateTime datetime = new DateTime();
-            datetime.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
-            DateHelper dateHelper = new DateHelper(datetime);
-            Map<String, Date> map=null;
-            //如果无周期
-            if(cycle==6){
-                map = DateHelper.getStartAndEnd(dateHelper, null);
-                map.put("start", plan.getStartDate());
-                map.put("end", plan.getEndDate());
-            }else{
-                map = DateHelper.getStartAndEnd(dateHelper, cycle);
+            //如果选择了立即生效或者无周期
+            if(plan.isBuildTaskNow()||plan.getPlanCycle()==6){
+                int cycle = Math.toIntExact(plan.getPlanCycle());
+                DateTime datetime = new DateTime();
+                datetime.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+                DateHelper dateHelper = new DateHelper(datetime);
+                Map<String, Date> map=null;
+                //如果无周期
+                if(cycle==6){
+                    map = DateHelper.getStartAndEnd(dateHelper, null);
+                    map.put("start", plan.getStartDate());
+                    map.put("end", plan.getEndDate());
+                }else{
+                    map = DateHelper.getStartAndEnd(dateHelper, cycle);
+                }
+                jobBusiness.createTask(datetime, cycle, map.get("start"), map.get("end"));
             }
-            jobBusiness.createTask(datetime, cycle, map.get("start"), map.get("end"));
+
             return AjaxResult.success();
         } catch (Exception e) {
             e.printStackTrace();

+ 4 - 3
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/domain/CoreSafecheckPlan.java

@@ -59,8 +59,7 @@ public class CoreSafecheckPlan extends BaseEntity {
     private String planName;
     @TableField(exist = false)
     private String checkRole;
-    @TableField(exist = false)
-    private String planOfOrgType;
+    private Integer planOfOrgType;
     /**
      * 检查角色
      */
@@ -221,7 +220,9 @@ public class CoreSafecheckPlan extends BaseEntity {
      * 检查次数
      */
     private Long count;
-
+    //涉及编辑内容
+    @TableField(exist = false)
+    private Integer hasEdit;
 
     @Override
     public String toString() {

+ 115 - 70
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/CoreSafecheckPlanServiceImpl.java

@@ -6,12 +6,15 @@ import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.domain.DateRange;
 import com.xunmei.common.core.utils.DateHelper;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.core.resumption.domain.AppPlan;
 import com.xunmei.core.resumption.domain.AppPlanToPoint;
 import com.xunmei.core.resumption.domain.AppPlanToRole;
+import com.xunmei.core.resumption.domain.Resumption;
 import com.xunmei.core.resumption.dto.DistributeDto;
 import com.xunmei.core.resumption.dto.DistributeStatusDto;
 import com.xunmei.core.resumption.vo.appPlan.ResumptionPlanPageVo;
@@ -55,6 +58,8 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
     private CoreSafecheckPlanToPointMapper coreSafecheckPlanToPointMapper;
     @Autowired
     private SafetyCheckJobBusiness safetyCheckJobBusiness;
+    @Autowired
+    private CoreSafetyTaskMapper coreSafetyTaskMapper;
 
     @Override
     public TableDataInfo<CoreSafecheckPlan> selectPage(CoreSafecheckPlan coreSafecheckPlan) {
@@ -103,13 +108,23 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
     public void distributeToOrg(DistributeDto dto) {
         for (DistributeStatusDto d :
                 dto.getOrgAndStatus()) {
+            CoreSafecheckPlan plan = baseMapper.selectOne(new LambdaQueryWrapper<CoreSafecheckPlan>().eq(CoreSafecheckPlan::getPlanOfOrgId, d.getOrgId()).eq(CoreSafecheckPlan::getParentId, dto.getId()));
+            //如果子计划计划已存在
+            if (plan != null) {
+                plan.setPlanStatus((long) (d.getStatus() > 0 ? 1 : 2));
+                plan.setDistributePlanStatus(d.getStatus().toString());
+                plan.setDistributeStatus("1");
+                baseMapper.updateById(plan);
+            }else{
 
             CoreSafecheckPlan coreSafecheckPlan = baseMapper.selectById(dto.getId());
             coreSafecheckPlan.setDistributeStatus("1");
             coreSafecheckPlan.setPlanOfOrgId(d.getOrgId());
-            coreSafecheckPlan.setPlanStatus((long) (d.getStatus() == 0 ? 2 : 1));
+            coreSafecheckPlan.setPlanStatus((long) (d.getStatus() > 0 ? 1 : 2));
             coreSafecheckPlan.setDistributePlanStatus(d.getStatus().toString());
             coreSafecheckPlan.setCreateTime(new Date());
+            //下发所属机构类型
+            coreSafecheckPlan.setPlanOfOrgType(orgService.selectSysOrgById(coreSafecheckPlan.getPlanOfOrgId(), SecurityConstants.INNER).getType());
             coreSafecheckPlan.setId(null);
 //            if (coreSafecheckPlan.getPlanCycle()==6){
 //                coreSafecheckPlan.setStartDate();
@@ -160,11 +175,13 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
                 }
             }
         }
+        }
         //更改下发状态
         CoreSafecheckPlan coreSafecheckPlan = new CoreSafecheckPlan();
         coreSafecheckPlan.setId(dto.getId());
         coreSafecheckPlan.setDistribute("1");
         coreSafecheckPlan.setPlanStatus(1L);
+        coreSafecheckPlan.setBuildTaskNow(coreSafecheckPlanMapper.selectById(dto.getId()).isBuildTaskNow());
         coreSafecheckPlanMapper.updateById(coreSafecheckPlan);
     }
 
@@ -178,11 +195,20 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
 //修改计划状态为停用
             ap.setPlanStatus(2L);
             baseMapper.updateById(ap);
+
+            //撤回需要删除本周期所有任务
+            DateRange dateRange = DateUtils.getStartAndEnd(new Date(), Math.toIntExact(plan.getPlanCycle()));
+            coreSafetyTaskMapper.delete(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, ap.getId()).between(CoreSafetyTask::getYmdDate, dateRange.getStartTime(), dateRange.getEndTime()));
+
         }
         //设置下发状态为未下发
         plan.setDistribute("0");
-        plan.setPlanStatus(0L);
+        plan.setPlanStatus(2L);
         baseMapper.updateById(plan);
+        //撤回需要删除本周期所有任务
+        DateRange dateRange = DateUtils.getStartAndEnd(new Date(), Math.toIntExact(plan.getPlanCycle()));
+        coreSafetyTaskMapper.delete(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, plan.getId()).between(CoreSafetyTask::getYmdDate, dateRange.getStartTime(), dateRange.getEndTime()));
+
     }
 
     @Override
@@ -191,7 +217,7 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
         //修改所有子计划
         List<CoreSafecheckPlan> appPlans = baseMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlan>().eq(CoreSafecheckPlan::getParentId, id));
         //如果不存在子计划直接返回
-        if(appPlans==null||appPlans.size()==0){
+        if (appPlans == null || appPlans.size() == 0) {
             return 0;
         }
         for (CoreSafecheckPlan ap :
@@ -216,7 +242,24 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
      */
     @Override
     public CoreSafecheckPlan selectCoreSafecheckPlanById(Long id) {
-        return coreSafecheckPlanMapper.selectCoreSafecheckPlanById(id);
+        CoreSafecheckPlan coreSafecheckPlan = coreSafecheckPlanMapper.selectCoreSafecheckPlanById(id);
+        Long sum=coreSafetyTaskMapper.selectCount(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, id).in(CoreSafetyTask::getStatus, 3,4));
+        if (sum > 0) {
+            //如果存在完成或者逾期的任务设置编辑状态为1
+            coreSafecheckPlan.setHasEdit(1);
+        }
+        //查找子计划是否存在完成或者逾期的任务
+        List<CoreSafecheckPlan> appPlans = baseMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlan>().eq(CoreSafecheckPlan::getParentId, id));
+        for (CoreSafecheckPlan p :
+                appPlans) {
+            Long csum=coreSafetyTaskMapper.selectCount(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getPlanId, p.getId()).in(CoreSafetyTask::getStatus, 3,4));
+            if (csum > 0) {
+                //如果存在完成或者逾期的任务设置编辑状态为1
+                coreSafecheckPlan.setHasEdit(1);
+                break;
+            }
+        }
+        return coreSafecheckPlan;
     }
 
     /**
@@ -238,7 +281,7 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
      */
     @Override
     public void insertCoreSafecheckPlan(CoreSafecheckPlan coreSafecheckPlan) {
-        if(coreSafecheckPlan.getRulePointList().size()==0){
+        if (coreSafecheckPlan.getRulePointList().size() == 0) {
             throw new RuntimeException("未选择检查项!");
         }
 
@@ -250,6 +293,8 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
             coreSafecheckPlan.setCreateTime(DateUtils.getNowDate());
             coreSafecheckPlan.setModifiedBy(SecurityUtils.getUserId());
             coreSafecheckPlan.setDistribute("0");
+            //计划所属机构类型
+            coreSafecheckPlan.setPlanOfOrgType(orgService.selectSysOrgById(coreSafecheckPlan.getPlanOfOrgId(), SecurityConstants.INNER).getType());
             coreSafecheckPlanMapper.insert(coreSafecheckPlan);
 
         } else {
@@ -297,21 +342,21 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
             }
         }
 
-        //如果是新增计划并且勾选立即执行
-        if (pid==null&&coreSafecheckPlan.isBuildTaskNow()) {
+        //如果是新增计划并且勾选立即执行并且是行社或者无周期,立即生成计划
+        if (pid == null && coreSafecheckPlan.isBuildTaskNow() && (coreSafecheckPlan.getPlanOfOrgType() == 3 || coreSafecheckPlan.getPlanCycle() == 6)) {
             DateTime datetime = new DateTime();
             datetime.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
             DateHelper dateHelper = new DateHelper(datetime);
             int cycle = Math.toIntExact(coreSafecheckPlan.getPlanCycle());
 //        SCHEDULEDTASKSLOG.info("开始生成每周常规安全检查任务!");
             try {
-                Map<String, Date> map=null;
+                Map<String, Date> map = null;
                 //如果无周期
-                if(cycle==6){
+                if (cycle == 6) {
                     map = DateHelper.getStartAndEnd(dateHelper, null);
                     map.put("start", coreSafecheckPlan.getStartDate());
                     map.put("end", coreSafecheckPlan.getEndDate());
-                }else{
+                } else {
                     map = DateHelper.getStartAndEnd(dateHelper, cycle);
                 }
 
@@ -320,72 +365,72 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
                 throw new RuntimeException("生成常规安全检查任务失败!");
             }
         }
-
-
-        //处理子计划
-        //拿到所有子计划
-        List<CoreSafecheckPlan> children = baseMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlan>().eq(CoreSafecheckPlan::getParentId, coreSafecheckPlan.getId()));
-        coreSafecheckPlan = baseMapper.selectById(coreSafecheckPlan.getId());
-        for (CoreSafecheckPlan p :
-                children) {
-            p.setPlanName(coreSafecheckPlan.getPlanName());
-            p.setBuildTaskNow(coreSafecheckPlan.isBuildTaskNow());
-            p.setCheckOrgType(coreSafecheckPlan.getCheckOrgType());
-            p.setCheckType(coreSafecheckPlan.getCheckType());
-            p.setCount(coreSafecheckPlan.getCount());
-            p.setDescription(coreSafecheckPlan.getDescription());
-            p.setExecOrgType(coreSafecheckPlan.getExecOrgType());
-            p.setPlanCycle(coreSafecheckPlan.getPlanCycle());
-            p.setPlanStatus(coreSafecheckPlan.getPlanStatus());
-            p.setSourceType(coreSafecheckPlan.getSourceType());
-            baseMapper.updateById(p);
-
-
-            //拿到父计划的所有角色映射
-            List<CoreSafecheckPlanToRole> roleList = coreSafecheckPlanToRoleMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToRole>().eq(CoreSafecheckPlanToRole::getPlanId, coreSafecheckPlan.getId()));
-            //再处理角色关系
-            if (roleList != null) {
-                //删除子计划原角色映射
-                coreSafecheckPlanToRoleMapper.deleteCoreSafecheckPlanToRoleByPlanId(p.getId());
-                for (CoreSafecheckPlanToRole r :
-                        roleList) {
-                    //添加来自父计划的角色映射
-                    coreSafecheckPlanToRoleMapper.insert(new CoreSafecheckPlanToRole(p.getId(), r.getRoleId()));
-
+//如果编辑需要处理子计划
+        if (pid == null) {
+            //处理子计划
+            //拿到所有子计划
+            List<CoreSafecheckPlan> children = baseMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlan>().eq(CoreSafecheckPlan::getParentId, coreSafecheckPlan.getId()));
+            coreSafecheckPlan = baseMapper.selectById(coreSafecheckPlan.getId());
+            for (CoreSafecheckPlan p :
+                    children) {
+                p.setPlanName(coreSafecheckPlan.getPlanName());
+                p.setBuildTaskNow(coreSafecheckPlan.isBuildTaskNow());
+                p.setCheckOrgType(coreSafecheckPlan.getCheckOrgType());
+                p.setCheckType(coreSafecheckPlan.getCheckType());
+                p.setCount(coreSafecheckPlan.getCount());
+                p.setDescription(coreSafecheckPlan.getDescription());
+                p.setExecOrgType(coreSafecheckPlan.getExecOrgType());
+                p.setPlanCycle(coreSafecheckPlan.getPlanCycle());
+                p.setPlanStatus(coreSafecheckPlan.getPlanStatus());
+                p.setSourceType(coreSafecheckPlan.getSourceType());
+                baseMapper.updateById(p);
+
+
+                //拿到父计划的所有角色映射
+                List<CoreSafecheckPlanToRole> roleList = coreSafecheckPlanToRoleMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToRole>().eq(CoreSafecheckPlanToRole::getPlanId, coreSafecheckPlan.getId()));
+                //再处理角色关系
+                if (roleList != null) {
+                    //删除子计划原角色映射
+                    coreSafecheckPlanToRoleMapper.deleteCoreSafecheckPlanToRoleByPlanId(p.getId());
+                    for (CoreSafecheckPlanToRole r :
+                            roleList) {
+                        //添加来自父计划的角色映射
+                        coreSafecheckPlanToRoleMapper.insert(new CoreSafecheckPlanToRole(p.getId(), r.getRoleId()));
+
+                    }
                 }
-            }
-            //再处理检查机构关系
-            List<CoreSafecheckPlanToExecOrg> execOrgList = coreSafecheckPlanToExecOrgMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToExecOrg>().eq(CoreSafecheckPlanToExecOrg::getPlanId, coreSafecheckPlan.getId()));
-            if (execOrgList != null) {
-                coreSafecheckPlanToExecOrgMapper.deleteCoreSafecheckPlanToExecOrgByPlanId(p.getId());
-                for (CoreSafecheckPlanToExecOrg org :
-                        execOrgList) {
-                    coreSafecheckPlanToExecOrgMapper.insert(new CoreSafecheckPlanToExecOrg(p.getId(), org.getOrgId()));
-
+                //再处理检查机构关系
+                List<CoreSafecheckPlanToExecOrg> execOrgList = coreSafecheckPlanToExecOrgMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToExecOrg>().eq(CoreSafecheckPlanToExecOrg::getPlanId, coreSafecheckPlan.getId()));
+                if (execOrgList != null) {
+                    coreSafecheckPlanToExecOrgMapper.deleteCoreSafecheckPlanToExecOrgByPlanId(p.getId());
+                    for (CoreSafecheckPlanToExecOrg org :
+                            execOrgList) {
+                        coreSafecheckPlanToExecOrgMapper.insert(new CoreSafecheckPlanToExecOrg(p.getId(), org.getOrgId()));
+
+                    }
                 }
-            }
-            //再处理受检机构关系
-            List<CoreSafecheckPlanToCheckOrg> checkOrgList = coreSafecheckPlanToCheckOrgMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToCheckOrg>().eq(CoreSafecheckPlanToCheckOrg::getPlanId, coreSafecheckPlan.getId()));
-            if (checkOrgList != null) {
-                coreSafecheckPlanToCheckOrgMapper.deleteCoreSafecheckPlanToCheckOrgByPlanId(p.getId());
-                for (CoreSafecheckPlanToCheckOrg org :
-                        checkOrgList) {
-                    coreSafecheckPlanToCheckOrgMapper.insert(new CoreSafecheckPlanToCheckOrg(p.getId(), org.getOrgId()));
-
+                //再处理受检机构关系
+                List<CoreSafecheckPlanToCheckOrg> checkOrgList = coreSafecheckPlanToCheckOrgMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToCheckOrg>().eq(CoreSafecheckPlanToCheckOrg::getPlanId, coreSafecheckPlan.getId()));
+                if (checkOrgList != null) {
+                    coreSafecheckPlanToCheckOrgMapper.deleteCoreSafecheckPlanToCheckOrgByPlanId(p.getId());
+                    for (CoreSafecheckPlanToCheckOrg org :
+                            checkOrgList) {
+                        coreSafecheckPlanToCheckOrgMapper.insert(new CoreSafecheckPlanToCheckOrg(p.getId(), org.getOrgId()));
+
+                    }
                 }
-            }
-            //再处理检查要点关系
-            List<CoreSafecheckPlanToPoint> rpList = coreSafecheckPlanToPointMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToPoint>().eq(CoreSafecheckPlanToPoint::getPlanId, coreSafecheckPlan.getId()));
-            if (rpList != null) {
-                coreSafecheckPlanToPointMapper.deleteCoreSafecheckPlanToPointByPlanId(p.getId());
-                for (CoreSafecheckPlanToPoint s :
-                        rpList) {
-                    coreSafecheckPlanToPointMapper.insert(new CoreSafecheckPlanToPoint(p.getId(), s.getPointId(), s.isPointScan(), s.isRequired()));
-
+                //再处理检查要点关系
+                List<CoreSafecheckPlanToPoint> rpList = coreSafecheckPlanToPointMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToPoint>().eq(CoreSafecheckPlanToPoint::getPlanId, coreSafecheckPlan.getId()));
+                if (rpList != null) {
+                    coreSafecheckPlanToPointMapper.deleteCoreSafecheckPlanToPointByPlanId(p.getId());
+                    for (CoreSafecheckPlanToPoint s :
+                            rpList) {
+                        coreSafecheckPlanToPointMapper.insert(new CoreSafecheckPlanToPoint(p.getId(), s.getPointId(), s.isPointScan(), s.isRequired()));
+
+                    }
                 }
             }
         }
-
     }
 
     /**

+ 7 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillPlanMapper.xml

@@ -652,4 +652,11 @@
         where id = #{planId}
            or parent_id = #{planId}
     </update>
+
+    <update id="updatePlanStatusByIdList">
+        update core_drill_plan set plan_status = #{status} where id in
+        <foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
+            #{item}
+        </foreach>
+    </update>
 </mapper>

+ 20 - 53
soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillTaskMapper.xml

@@ -85,23 +85,7 @@
             <if test="request.status != null">
                 and t.status=#{request.status}
             </if>
-            <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>
+            <include refid="timeRangeSql"/>
         </where>
         order by t.update_time desc
     </select>
@@ -216,23 +200,7 @@
             #{item}
         </foreach>
         and t.org_path like concat(#{request.orgPath},'%')
-        <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>
+        <include refid="timeRangeSql"/>
     </select>
     <sql id="recTaskListPage">
         <if test="request.orgPath !=null and request.orgPath != ''">
@@ -285,7 +253,13 @@
         <foreach collection="request.roleIdList" item="roleId" open="(" separator="," close=")">
             #{roleId}
         </foreach>
-        and t.status in (0,1,2)
+        and t.status in
+        <foreach collection="list" item="status" open="(" separator="," close=")">
+            #{status}
+        </foreach>
+        <include refid="timeRangeSql"/>
+    </select>
+    <sql id="timeRangeSql">
         <if test="request.startTime != null and request.endTime != null">
             and (
             (
@@ -303,35 +277,28 @@
             )
             )
         </if>
-    </select>
+    </sql>
 
     <select id="selectWaitEvaluateTaskList" resultType="com.xunmei.common.core.domain.panel.vo.PanelListVo">
         select distinct t.id as id, title as taskName,t.start_date startTime,t.end_date as endTime,t.status
         from core_drill_task t
         where t.status =2
         and t.org_path like concat(#{request.orgPath},'%')
-        <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 test="request.orgType =3">
+            or (t.rec_status=0)
+        </if>
+        <if test="request.orgType =2">
+            or (t.rec_status=2)
+        </if>
+        <if test="request.orgType =2">
+            or (t.rec_status=4)
         </if>
+        <include refid="timeRangeSql"/>
     </select>
 
     <update id="updateTaskStatus">
         update core_drill_task
-        set status=3
+        set status=#{status}
         where end_date <![CDATA[<]]> now()
           and status in (0, 1)
     </update>

+ 21 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysNfcBindController.java

@@ -1,6 +1,7 @@
 package com.xunmei.system.controller;
 
 import java.util.List;
+
 import com.xunmei.system.api.domain.SysArea;
 import com.xunmei.system.domain.SysAreaCheck;
 import com.xunmei.system.service.ISysAreaCheckService;
@@ -52,6 +53,15 @@ public class SysNfcBindController extends BaseController {
         return sysNfcBindService.selectPage(sysNfcBind);
     }
 
+    /**
+     * 获取【请填写功能名称】详细信息
+     */
+    @ApiOperation(value = "获取SysNfcBind详细信息")
+    @RequiresPermissions("system:bind:query")
+    @GetMapping(value = {"/appGetInfo", "/{code}"})
+    public AjaxResult appGetInfo(@PathVariable(value = "code", required = false) String code) {
+        return success(sysNfcBindService.selectSysNfcBindByCode(code));
+    }
 
     /**
      * 获取【请填写功能名称】详细信息
@@ -106,4 +116,15 @@ public class SysNfcBindController extends BaseController {
     public AjaxResult remove(@PathVariable Long[] ids) {
         return toAjax(sysNfcBindService.deleteSysNfcBindByIds(ids));
     }
+
+    /**
+     * 解绑【请填写功能名称】
+     */
+    @ApiOperation(value = "解绑")
+    @RequiresPermissions("system:bind:remove")
+    @Log(title = "【请填写功能名称】", businessType = BusinessType.DELETE)
+    @DeleteMapping("/unbinding/{code}")
+    public AjaxResult unbinding(@PathVariable String code) {
+        return toAjax(sysNfcBindService.deleteSysNfcBindByCode(code));
+    }
 }

+ 3 - 2
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/domain/SysNfcBind.java

@@ -57,7 +57,7 @@ public class SysNfcBind extends BaseEntity {
      */
     @ApiModelProperty(value = "标签编号")
     private String code;
-    @ApiModelProperty(value = "标签名称")
+    @ApiModelProperty(value = "标签名称,app没有不传")
     private String labelName;
 
     /**
@@ -65,7 +65,8 @@ public class SysNfcBind extends BaseEntity {
      */
     @ApiModelProperty(value = "最后修改人id")
     private Long updateId;
-
+    @ApiModelProperty(value = "来源1web端2app")
+private String source;
     /**
      * 机构
      */

+ 31 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/listener/WorkTimeChangeEventListener.java

@@ -0,0 +1,31 @@
+package com.xunmei.system.listener;
+
+import com.alibaba.fastjson2.JSON;
+import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.event.WorkTimeChangeEvent;
+import com.xunmei.system.api.RemoteResumptionTaskService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationListener;
+import org.springframework.context.event.EventListener;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.event.TransactionPhase;
+import org.springframework.transaction.event.TransactionalEventListener;
+import springfox.documentation.spring.web.json.Json;
+
+@Component
+@Slf4j
+public class WorkTimeChangeEventListener implements ApplicationListener<WorkTimeChangeEvent> {
+
+
+    @Autowired
+    RemoteResumptionTaskService remoteResumptionTaskService;
+
+    @Override
+    @EventListener(WorkTimeChangeEvent.class)
+    @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT, fallbackExecution = false)
+    public void onApplicationEvent(WorkTimeChangeEvent event) {
+
+//        remoteResumptionTaskService.rebuild(JSON.toJSONString(event), SecurityConstants.INNER);
+    }
+}

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

@@ -40,7 +40,7 @@ public interface SysNfcBindMapper extends BaseMapper<SysNfcBind> {
      * @return
      */
     Page<SysNfcBind> selectNFCPage(Page<SysNfcBind> page, @Param("info") SysNfcBind info);
-
+    SysNfcBind selectSysNfcBindByCode(String code);
     /**
      * 修改区域名称
      * @param sysNfcBind
@@ -69,7 +69,7 @@ public interface SysNfcBindMapper extends BaseMapper<SysNfcBind> {
      * @return 结果
      */
      int updateSysNfcBind(SysNfcBind sysNfcBind);
-
+    int deleteSysNfcBindByCode(String code);
     /**
      * 删除【请填写功能名称】
      *

+ 2 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysNfcBindService.java

@@ -22,6 +22,7 @@ public interface ISysNfcBindService extends IService<SysNfcBind> {
      */
     SysNfcBind selectSysNfcBindById(Long id);
 
+    SysNfcBind selectSysNfcBindByCode(String code);
     /**
      * 查询【NFC管理】列表
      *
@@ -53,7 +54,7 @@ public interface ISysNfcBindService extends IService<SysNfcBind> {
      * @return 结果
      */
     int deleteSysNfcBindByIds(Long[] ids);
-
+int deleteSysNfcBindByCode(String code);
     /**
      * 删除【NFC管理】信息
      *

+ 14 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysNfcBindServiceImpl.java

@@ -91,6 +91,11 @@ public class SysNfcBindServiceImpl extends ServiceImpl<SysNfcBindMapper, SysNfcB
         return sysNfcBindMapper.selectById(id);
     }
 
+    @Override
+    public SysNfcBind selectSysNfcBindByCode(String code) {
+        return sysNfcBindMapper.selectSysNfcBindByCode(code);
+    }
+
     /**
      * 查询【请填写功能名称】列表
      *
@@ -123,6 +128,10 @@ public class SysNfcBindServiceImpl extends ServiceImpl<SysNfcBindMapper, SysNfcB
         sysNfcBind.setUpdateTime(DateUtils.getNowDate());
         sysNfcBind.setCreateTime(DateUtils.getNowDate());
         sysNfcBind.setDelFlag("0");
+        sysNfcBind.setSource("1");
+        if(null==sysNfcBind.getCode()){
+            sysNfcBind.setSource("2");
+        }
         SysOrg sysOrg = sysOrgService.selectSysOrgById(sysNfcBind.getOrgId());
         if (null != sysOrg) {
             sysNfcBind.setOrgName(sysOrg.getShortName());
@@ -194,6 +203,11 @@ public class SysNfcBindServiceImpl extends ServiceImpl<SysNfcBindMapper, SysNfcB
 
     }
 
+    @Override
+    public int deleteSysNfcBindByCode(String code) {
+        return sysNfcBindMapper.deleteSysNfcBindByCode(code);
+    }
+
     /**
      * 删除【请填写功能名称】信息
      *

+ 9 - 0
soc-modules/soc-modules-system/src/main/resources/mapper/system/SysNfcBindMapper.xml

@@ -122,6 +122,9 @@
         </if>
         order by a.org_id,a.area_id,code
     </select>
+    <select id="selectSysNfcBindByCode" resultType="com.xunmei.system.domain.SysNfcBind">
+        SELECT * FROM sys_nfc_bind WHERE source=2 AND code=#{code}
+    </select>
 
     <insert id="insertSysNfcBind" parameterType="com.xunmei.system.domain.SysNfcBind">
         insert into sys_nfc_bind
@@ -252,4 +255,10 @@
             #{id}
         </foreach>
     </delete>
+    <delete id="deleteSysNfcBindByCode">
+        delete
+        from sys_nfc_bind
+        where source = '2'
+          and code = #{code}
+    </delete>
 </mapper>