Bläddra i källkod

停用机构,停用时删除停用当天及之后的作息时间和作息配置及作息模板数据。新增定时任务处理停用机构数据

jingyuanchao 1 år sedan
förälder
incheckning
6e1c24a77b

+ 5 - 0
project_data/sql/0.1.0_zhulu/quartz.sql

@@ -0,0 +1,5 @@
+
+-- 凌晨一点 查找停用的机构删除作息数据
+DELETE from sys_job where invoke_target='OrgTask.findDisableOrgAndClearData()';
+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', 'OrgTask.findDisableOrgAndClearData()', '0 0 3 * * ?', '1', '1', '0', null, now(), null, NULL);
+

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

@@ -6,6 +6,7 @@ import com.xunmei.common.core.domain.OrgTreeReq;
 import com.xunmei.common.core.domain.OrgTreeResp;
 import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.vo.IdNameVo;
+import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.system.api.Eto.OrgListByTypesConditionEto;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.SysOrgExtend;
@@ -201,4 +202,7 @@ public interface RemoteOrgService {
 
     @GetMapping("/dept/concatOrgName/{orgId}")
     String concatOrgName(@PathVariable("orgId") Long orgId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
+    @GetMapping("/dept/findDisableOrgAndClearData")
+    AjaxResult findDisableOrgAndClearData();
 }

+ 6 - 0
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteOrgFallbackFactory.java

@@ -5,6 +5,7 @@ import com.xunmei.common.core.domain.OrgTreeReq;
 import com.xunmei.common.core.domain.OrgTreeResp;
 import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.vo.IdNameVo;
+import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.system.api.Eto.OrgListByTypesConditionEto;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
@@ -223,6 +224,11 @@ public class RemoteOrgFallbackFactory implements FallbackFactory<RemoteOrgServic
             public String concatOrgName(Long orgId, String source) {
                 return StringUtil.EMPTY_STRING;
             }
+
+            @Override
+            public AjaxResult findDisableOrgAndClearData() {
+                return null;
+            }
         };
     }
 }

+ 29 - 0
soc-modules/soc-modules-job/src/main/java/com/xunmei/job/task/OrgTask.java

@@ -0,0 +1,29 @@
+package com.xunmei.job.task;
+
+import com.alibaba.fastjson.JSON;
+import com.xunmei.common.core.utils.uuid.UUID;
+import com.xunmei.common.core.web.domain.AjaxResult;
+import com.xunmei.system.api.RemoteOrgService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+@Slf4j
+@Component("OrgTask")
+public class OrgTask {
+
+    @Autowired
+    RemoteOrgService orgService;
+
+    //寻找同步下来停用放入机构并删除作息数据
+    public void findDisableOrgAndClearData() {
+        String id = UUID.fastUUID().toString();
+        log.info("开始处理停用机构数据,当前任务 id:{},当前时间:{}", id, new Date());
+        AjaxResult result = orgService.findDisableOrgAndClearData();
+        log.info("处理停用机构数据结束....,当前任务 id:{},当前时间:{},结果:{}", id, new Date(), JSON.toJSONString(result));
+    }
+
+
+}

+ 7 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysDeptController.java

@@ -554,4 +554,11 @@ public class SysDeptController extends BaseController {
     String concatOrgName(@PathVariable("orgId") Long orgId){
         return orgService.concatOrgName(orgId);
     }
+
+    @GetMapping("/findDisableOrgAndClearData")
+    AjaxResult findDisableOrgAndClearData(){
+
+        orgService.findDisableOrgAndClearData();
+        return AjaxResult.success();
+    }
 }

+ 6 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysOrgService.java

@@ -143,6 +143,8 @@ public interface ISysOrgService extends IService<SysOrg> {
      */
     boolean saveOrUpdateOrg(SysOrg org);
 
+    void disableOrg(List<Long> orgList);
+
     /**
      * 删除机构
      *
@@ -191,4 +193,8 @@ public interface ISysOrgService extends IService<SysOrg> {
     void exportDefenseDetailExtend(SysOrg dept, HttpServletResponse response) throws Exception;
     //返回 地区+行社+网点 的机构名称
     String concatOrgName(Long orgId);
+
+    void findDisableOrgAndClearData();
+
+
 }

+ 18 - 4
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysOrgServiceImpl.java

@@ -46,6 +46,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.redisson.api.RLock;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -79,6 +80,7 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
     @Autowired
     private SysOrgExtendMapper sysOrgExtendMapper;
     @Autowired
+    @Lazy
     private ISysWorkTimeSetService workTimeSetService;
 
     private static List<SysOrg> handleTree(Map<Long, List<SysOrg>> map, Long parentId) {
@@ -873,7 +875,7 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
             }
             if (ObjectUtil.equal(1,org.getIsLock())){
                 //停用机构
-                disableOrg(org);
+                disableOrg(Arrays.asList(org.getId()));
             }
 
             isOk = this.updateById(org);
@@ -899,12 +901,12 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         return isOk;
     }
 
-    private void disableOrg(SysOrg org) {
+    @Override
+    public void disableOrg(List<Long> orgList) {
         // 815版本
         //1、停用机构,停用时删除停用当天及之后的作息时间和作息配置及作息模板数据。
         //2、停用机构不影响 履职,安全检查,教育培训,预案演练,监控调阅等模块的 业务数据和统计报表数据的查看
-        Long orgId = org.getId();
-        workTimeSetService.deleteSysWorkTimeSetByOrgIds(Arrays.asList(org.getId()), new Date());
+        workTimeSetService.deleteSysWorkTimeSetByOrgIds(orgList, new Date());
     }
 
     // 获取机构所属行社、地区的名称
@@ -1566,4 +1568,16 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         return "";
     }
 
+    @Override
+    public void findDisableOrgAndClearData() {
+        List<SysOrg> list = lambdaQuery()
+                .eq(SysOrg::getIsLock, 1)
+                .select(SysOrg::getId, SysOrg::getType)
+                .list();
+        if (list.isEmpty()){
+            return;
+        }
+        List<Long> collect = list.stream().map(SysOrg::getId).collect(Collectors.toList());
+        this.disableOrg(collect);
+    }
 }