Przeglądaj źródła

停用机构,停用时删除停用当天及之后的作息时间和作息配置及作息模板数据。

jingyuanchao 1 rok temu
rodzic
commit
fb22d75e42

+ 9 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysWorkTimeSetService.java

@@ -6,6 +6,7 @@ import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.system.domain.SysWorkTimeSet;
 
 import java.text.ParseException;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -68,6 +69,14 @@ public interface ISysWorkTimeSetService extends IService<SysWorkTimeSet> {
     int deleteSysWorkTimeSetByIds(Long[] ids);
 
     /**
+     * 删除指定机构的作息模版和指定日期后的作息数据
+     *
+     * @param orgIds
+     * @param deleteTime
+     */
+    void deleteSysWorkTimeSetByOrgIds(List<Long> orgIds, Date deleteTime);
+
+    /**
      * 删除作息设置信息
      *
      * @param id 作息设置主键

+ 15 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysOrgServiceImpl.java

@@ -39,6 +39,7 @@ import com.xunmei.system.mapper.SysOrgMapper;
 import com.xunmei.system.mapper.SysPhysicalDefenseConstructionMapper;
 import com.xunmei.system.mapper.SysUserMapper;
 import com.xunmei.system.service.ISysOrgService;
+import com.xunmei.system.service.ISysWorkTimeSetService;
 import com.xunmei.system.util.*;
 import io.netty.util.internal.StringUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -77,6 +78,8 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
 
     @Autowired
     private SysOrgExtendMapper sysOrgExtendMapper;
+    @Autowired
+    private ISysWorkTimeSetService workTimeSetService;
 
     private static List<SysOrg> handleTree(Map<Long, List<SysOrg>> map, Long parentId) {
         List<SysOrg> orgList = map.get(parentId);
@@ -868,6 +871,10 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
                 // 删除机构扩展信息
                 sysOrgExtendMapper.delete(new LambdaQueryWrapper<SysOrgExtend>().eq(SysOrgExtend::getOrgId,org.getId()));
             }
+            if (ObjectUtil.equal(1,org.getIsLock())){
+                //停用机构
+                disableOrg(org);
+            }
 
             isOk = this.updateById(org);
 
@@ -892,6 +899,14 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         return isOk;
     }
 
+    private void disableOrg(SysOrg org) {
+        // 815版本
+        //1、停用机构,停用时删除停用当天及之后的作息时间和作息配置及作息模板数据。
+        //2、停用机构不影响 履职,安全检查,教育培训,预案演练,监控调阅等模块的 业务数据和统计报表数据的查看
+        Long orgId = org.getId();
+        workTimeSetService.deleteSysWorkTimeSetByOrgIds(Arrays.asList(org.getId()), new Date());
+    }
+
     // 获取机构所属行社、地区的名称
     private List<String> getHsAndDqOrgName(String path) {
         List<String> list = new ArrayList<>();

+ 24 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysWorkTimeSetServiceImpl.java

@@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.CacheConstants;
+import com.xunmei.common.core.constant.Constants;
 import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import com.xunmei.common.core.enums.OrgTypeEnum;
 import com.xunmei.common.core.thread.ThreadPoolConfig;
@@ -154,7 +155,7 @@ public class SysWorkTimeSetServiceImpl extends ServiceImpl<SysWorkTimeSetMapper,
         query.orderByDesc
                 ("t.effective_date");
         //时间范围查询
-        if (sysWorkTimeSet.getDateRange() != null && sysWorkTimeSet.getDateRange().length==2) {
+        if (sysWorkTimeSet.getDateRange() != null && sysWorkTimeSet.getDateRange().length == 2) {
             query.between("t.effective_date", DateUtil.beginOfDay(sysWorkTimeSet.getDateRange()[0]).toString("yyyy-MM-dd HH:mm:ss"), DateUtil.endOfDay(sysWorkTimeSet.getDateRange()[1]).toString("yyyy-MM-dd HH:mm:ss"));
         }
         //获取数据
@@ -463,12 +464,15 @@ public class SysWorkTimeSetServiceImpl extends ServiceImpl<SysWorkTimeSetMapper,
     }
 
     private void deleteTimeSetAndDayOfWeek(List<Long> orgIds) {
+        //查询作息模板配置
         List<SysWorkTimeSet> workTimeSetIds = lambdaQuery().in(SysWorkTimeSet::getOrgId, orgIds).select(SysWorkTimeSet::getId).list();
         if (workTimeSetIds.isEmpty()) {
             return;
         }
         List<Long> collect = workTimeSetIds.stream().map(SysWorkTimeSet::getId).collect(Collectors.toList());
+        //删除周内每一天的作息配置
         sysWorkTimeSetDayofweekMapper.delete(new LambdaQueryWrapper<SysWorkTimeSetDayofweek>().in(SysWorkTimeSetDayofweek::getWorkTimeSetId, collect));
+        //删除作息模板配置
         baseMapper.delete(new LambdaQueryWrapper<SysWorkTimeSet>().in(SysWorkTimeSet::getId, collect));
     }
 
@@ -785,6 +789,25 @@ public class SysWorkTimeSetServiceImpl extends ServiceImpl<SysWorkTimeSetMapper,
         return sysWorkTimeSetMapper.deleteBatchIds(Arrays.asList((ids)));
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteSysWorkTimeSetByOrgIds(List<Long> orgIds, Date deleteTime) {
+        if (ObjectUtil.isEmpty(orgIds)){
+            return;
+        }
+        //删除作息模板,周内每天的作息配置
+        deleteTimeSetAndDayOfWeek(orgIds);
+
+        if (ObjectUtil.isNull(deleteTime)){
+            return;
+        }
+        String dayStr = DateUtil.format(deleteTime, Constants.DAILY_FORMAT);
+        //删除每天的作息数据
+        sysWorkTimeMapper.delete(new LambdaQueryWrapper<SysWorkTime>()
+                .in(SysWorkTime::getOrgId, orgIds)
+                .ge(SysWorkTime::getYmdDate, dayStr));
+    }
+
     /**
      * 删除作息设置信息
      *