luojun 1 жил өмнө
parent
commit
754ca35be9

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

@@ -10,6 +10,7 @@ import com.xunmei.system.api.Eto.OrgListByTypesConditionEto;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.SysOrgExtend;
 import com.xunmei.system.api.factory.RemoteOrgFallbackFactory;
+import com.xunmei.system.api.vo.FindOrgTypes;
 import com.xunmei.system.api.vo.SysOrgVO;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.*;
@@ -172,4 +173,7 @@ public interface RemoteOrgService {
 
     @GetMapping("/dept/selectOrgNameByPath")
     String selectOrgNameByPath(@RequestParam("orgId") Long orgId, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+    @PostMapping("/dept/findByOrgTypesAndParent")
+    List<SysOrg> findByOrgTypesAndParent(@RequestBody FindOrgTypes types, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+
 }

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

@@ -9,6 +9,7 @@ import com.xunmei.system.api.Eto.OrgListByTypesConditionEto;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.SysOrgExtend;
+import com.xunmei.system.api.vo.FindOrgTypes;
 import com.xunmei.system.api.vo.SysOrgVO;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -180,6 +181,11 @@ public class RemoteOrgFallbackFactory implements FallbackFactory<RemoteOrgServic
             }
 
             @Override
+            public List<SysOrg> findByOrgTypesAndParent(FindOrgTypes types, String source) {
+                return null;
+            }
+
+            @Override
 
 
             public List<SysOrg> selectOrgTreeListByCurOrgId(Long id, String source) {

+ 8 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/domain/CoreSafecheckPlan.java

@@ -52,6 +52,8 @@ public class CoreSafecheckPlan extends BaseEntity {
 //    private Long index;
 
     private String distribute;
+    @TableField(exist = false)
+    private String typeNames;
     /**
      * 计划名称
      */
@@ -150,6 +152,11 @@ public class CoreSafecheckPlan extends BaseEntity {
     @ApiModelProperty(value = "受检机构")
     private String checkOrg;
 
+    @TableField(exist = false)
+    private List<CoreSafecheckPlanToCheckOrgType> checkOrgTypeList;
+    @TableField(exist = false)
+    private List<Integer> checkOrgTypes;
+
     /**
      * 计划状态:0:启用,1禁用
      */
@@ -243,7 +250,7 @@ public class CoreSafecheckPlan extends BaseEntity {
                 .append("execOrgType", getExecOrgType())
 
 
-                .append("checkOrgType", getCheckOrgType())
+//                .append("checkOrgType", getCheckOrgType())
 
 
                 .append("planStatus", getPlanStatus())

+ 133 - 115
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/job/SafetyCheckJobBusiness.java

@@ -26,6 +26,7 @@ import com.xunmei.core.safetyCheck.vo.PlanTaskBuildVo;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.RemoteWorkTimeService;
 import com.xunmei.system.api.domain.SysOrg;
+import com.xunmei.system.api.vo.FindOrgTypes;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Async;
@@ -62,6 +63,8 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
     private RemoteOrgService orgService;
     @Autowired
     RemoteWorkTimeService workTimeService;
+    @Autowired
+    private CoreSafecheckPlanToCheckOrgTypeMapper coreSafecheckPlanToCheckOrgTypeMapper;
 
     @Transactional(rollbackFor = Exception.class)
     public void createTaskForNow(Long planId, Date start, Date end, Boolean isNeedSendTodo, Integer sourceType) throws Exception {
@@ -201,8 +204,8 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
 
         List<PlanTaskBuildVo> list = new ArrayList<>();
         Integer execOrgType = Math.toIntExact(plan.getExecOrgType());
-        Integer checkOrgType = Math.toIntExact(plan.getCheckOrgType());
-
+//        Integer checkOrgType = Math.toIntExact(plan.getCheckOrgType());
+        List<Integer> checkOrgTypes = coreSafecheckPlanToCheckOrgTypeMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToCheckOrgType>().eq(CoreSafecheckPlanToCheckOrgType::getPlanId, plan.getId())).stream().map(CoreSafecheckPlanToCheckOrgType::getTypeId).collect(Collectors.toList());
         //获取具体执行检查的机构
         QueryWrapper<CoreSafecheckPlanToExecOrg> eos = new QueryWrapper<>();
         eos.lambda().eq(CoreSafecheckPlanToExecOrg::getPlanId, plan.getId());
@@ -237,11 +240,11 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
             List<SysOrg> checkOrgs = null;
             if (ObjectUtil.isEmpty(checkOrg)) {
                 //如果没有选择具体受检的机构,则根据受检机构类型查询
-                if (ObjectUtil.equal(plan.getCheckOrgType(), plan.getExecOrgType())) {
+                if (checkOrgTypes.contains(execOrgType) && checkOrgTypes.size() == 1) {
                     //如果检查机构类型与被检机构类型一致,则表示查自己
                     checkOrgs = Arrays.asList(org);
                 } else {
-                    checkOrgs = orgService.findByOrgTypeAndParent(checkOrgType, org.getPath(), SecurityConstants.INNER);
+                    checkOrgs = orgService.findByOrgTypesAndParent(new FindOrgTypes(checkOrgTypes, org.getPath()), SecurityConstants.INNER);
                 }
             } else {
                 //选择了具体的受检机构
@@ -268,7 +271,8 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
 
         List<PlanTaskBuildVo> list = new ArrayList<>();
         Integer execOrgType = Math.toIntExact(plan.getExecOrgType());
-        Integer checkOrgType = Math.toIntExact(plan.getCheckOrgType());
+//        Integer checkOrgType = Math.toIntExact(plan.getCheckOrgType());
+        List<Integer> checkOrgTypes = coreSafecheckPlanToCheckOrgTypeMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToCheckOrgType>().eq(CoreSafecheckPlanToCheckOrgType::getPlanId, plan.getId())).stream().map(CoreSafecheckPlanToCheckOrgType::getTypeId).collect(Collectors.toList());
 
         //获取具体执行检查的机构
         List<CoreSafecheckPlanToExecOrg> execOrg = null;
@@ -334,10 +338,11 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
             List<SysOrg> checkOrgs = null;
             if (ObjectUtil.isEmpty(checkOrg)) {
                 //如果没有选择具体受检的机构,则根据受检机构类型查询
-                if (ObjectUtil.equal(plan.getCheckOrgType(), plan.getExecOrgType())) {
+                if (checkOrgTypes.contains(execOrgType) && checkOrgTypes.size() == 1) {
+                    //如果检查机构类型与被检机构类型一致,则表示查自己
                     checkOrgs = Arrays.asList(org);
                 } else {
-                    checkOrgs = orgService.findByOrgTypeAndParent(checkOrgType, org.getPath(), SecurityConstants.INNER);
+                    checkOrgs = orgService.findByOrgTypesAndParent(new FindOrgTypes(checkOrgTypes, org.getPath()), SecurityConstants.INNER);
                 }
             } else {
                 //选择了具体的受检机构
@@ -525,7 +530,7 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
                 //如果存在同批次的已完成或者已逾期的任务需要同步批次id
                 checkTask.setBatchId(coreSafetyTasks.get(0).getBatchId());
             } else {
-                checkTaskService.remove(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getOrgId, checkTask.getOrgId()).eq(CoreSafetyTask::getYmdDate, checkTask.getYmdDate()).in(CoreSafetyTask::getStatus, 1, 2).eq(CoreSafetyTask::getPlanId,checkTask.getPlanId()));
+                checkTaskService.remove(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getOrgId, checkTask.getOrgId()).eq(CoreSafetyTask::getYmdDate, checkTask.getYmdDate()).in(CoreSafetyTask::getStatus, 1, 2).eq(CoreSafetyTask::getPlanId, checkTask.getPlanId()));
                 ats.add(checkTask);
             }
 
@@ -580,111 +585,111 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
         buildTask(safetyTaskBuildDto.getDate(), tasks, map.get("start"), map.get("end"), true, 0);
     }
 
-    //检查参数
-    public List<String> checkParam(SafetyTaskBuildDto safetyTaskBuildDto) {
-        List<String> list = new ArrayList<>();
-        DateHelper dateHelper = new DateHelper(safetyTaskBuildDto.getDate());
-        Map<String, Date> map = null;
-        List<CoreSafecheckPlan> plans = null;
-        if (safetyTaskBuildDto.getPlanId() != null) {
-            plans = new ArrayList<>();
-            CoreSafecheckPlan coreSafecheckPlan = planMapper.selectById(safetyTaskBuildDto.getPlanId());
-            if (coreSafecheckPlan.getPlanStatus() == 1) {
-                list.add("当前计划:" + coreSafecheckPlan.getPlanName() + "已禁用!");
-                return list;
-            }
-            plans.add(coreSafecheckPlan);
-            map = DateHelper.getStartAndEnd(safetyTaskBuildDto.getDate(), Math.toIntExact(coreSafecheckPlan.getPlanCycle()));
-        } else {
-            LambdaUpdateWrapper<CoreSafecheckPlan> qw = new LambdaUpdateWrapper<>();
-            qw.eq(CoreSafecheckPlan::getPlanCycle, safetyTaskBuildDto.getPlanCycle());
-            qw.eq(CoreSafecheckPlan::getIsDeleted, 0);
-            qw.eq(CoreSafecheckPlan::getPlanStatus, 0);
-            plans = planMapper.selectList(qw);
-            map = DateHelper.getStartAndEnd(safetyTaskBuildDto.getDate(), safetyTaskBuildDto.getPlanCycle());
-        }
-        if (CollectionUtil.isEmpty(plans)) {
-            list.add("计划不存在");
-        }
-        for (CoreSafecheckPlan plan : plans) {
-            if (ObjectUtil.notEqual(plan.getPlanCycle(), safetyTaskBuildDto.getPlanCycle())) {
-                list.add("计划周期与计划不匹配");
-                break;
-            }
-        }
-        if (map.keySet().size() == 0) {
-            list.add("计划周期不存在");
-        }
-        if (ObjectUtil.isNotEmpty(safetyTaskBuildDto.getExecOrgIdList())) {
-            List<Long> execOrgIdList = safetyTaskBuildDto.getExecOrgIdList();
-            for (CoreSafecheckPlan plan : plans) {
-                List<CoreSafecheckPlanToExecOrg> coreSafecheckPlanToExecOrgs = planToExecOrgMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToExecOrg>().eq(CoreSafecheckPlanToExecOrg::getPlanId, plan.getId()));
-                if (CollectionUtil.isEmpty(coreSafecheckPlanToExecOrgs)) {
-                    //说明计划是根据机构类型配置的,获取所有的机构类型,如果参数中执行机构的机构类型存在不属于此计划的执行机构,则返回错误
-                    List<Long> orgTypeList = orgService.selectOrgTypeByIdList(execOrgIdList, SecurityConstants.INNER);
-                    for (Long orgType : orgTypeList) {
-                        if (ObjectUtil.notEqual(orgType, plan.getExecOrgType())) {
-                            list.add("参数中," + plan.getPlanName() + "计划下存在错误执行机构数据");
-                            break;
-                        }
-                    }
-                } else {
-                    //获取当前计划的所有执行机构,如果参数中存在不属于此计划的执行机构,则返回错误
-                    List<Long> collect = coreSafecheckPlanToExecOrgs.stream().map(CoreSafecheckPlanToExecOrg::getOrgId).collect(Collectors.toList());
-                    for (Long execOrgId : execOrgIdList) {
-                        if (!collect.contains(execOrgId)) {
-                            list.add("参数中," + plan.getPlanName() + "计划下存在错误执行机构数据");
-                            break;
-                        }
-                    }
-                }
-
-
-            }
-
-        }
-        if (ObjectUtil.isNotEmpty(safetyTaskBuildDto.getCheckOrgIdList())) {
-            List<Long> checkOrgIdList = safetyTaskBuildDto.getCheckOrgIdList();
-            for (CoreSafecheckPlan plan : plans) {
-                List<CoreSafecheckPlanToCheckOrg> coreSafecheckPlanToCheckOrgs = planToCheckOrgMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToCheckOrg>().eq(CoreSafecheckPlanToCheckOrg::getPlanId, plan.getId()));
-                if (ObjectUtil.isEmpty(coreSafecheckPlanToCheckOrgs)) {
-                    //说明计划是根据机构类型配置的,获取所有的机构类型,如果参数中受检机构的机构类型存在不属于此计划的受检机构,则返回错误
-                    List<Long> orgTypeList = orgService.selectOrgTypeByIdList(checkOrgIdList, SecurityConstants.INNER);
-                    for (Long orgType : orgTypeList) {
-                        if (ObjectUtil.notEqual(orgType, plan.getCheckOrgType())) {
-                            list.add("参数中," + plan.getPlanName() + "计划下存在错误检查机构数据");
-                            break;
-                        }
-                    }
-                } else {
-                    //获取当前计划的所有受检机构,如果参数中存在不属于此计划的受检机构,则返回错误
-                    List<Long> collect = coreSafecheckPlanToCheckOrgs.stream().map(CoreSafecheckPlanToCheckOrg::getOrgId).collect(Collectors.toList());
-                    for (Long checkOrgId : checkOrgIdList) {
-                        if (!collect.contains(checkOrgId)) {
-                            list.add("参数中," + plan.getPlanName() + "计划下存在错误检查机构数据");
-                            break;
-                        }
-                    }
-                }
-            }
-        }
-        if (ObjectUtil.isNotEmpty(safetyTaskBuildDto.getRoleIdList())) {
-            List<Long> roleIdList = safetyTaskBuildDto.getRoleIdList();
-            for (CoreSafecheckPlan plan : plans) {
-                List<CoreSafecheckPlanToRole> coreSafecheckPlanToRoles = planToRoleMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToRole>().eq(CoreSafecheckPlanToRole::getPlanId, plan.getId()));
-                List<Long> collect = coreSafecheckPlanToRoles.stream().map(CoreSafecheckPlanToRole::getRoleId).collect(Collectors.toList());
-                if (!new HashSet<>(collect).containsAll(roleIdList)) {
-                    list.add("参数中," + plan.getPlanName() + "计划下存在错误角色数据");
-                    break;
-                }
-            }
-        }
-        if (DateUtil.beginOfDay(map.get("end")).isBefore(DateUtil.beginOfDay(new Date()))) {
-            list.add("计划周期已过");
-        }
-        return list;
-
-    }
+//    //检查参数
+//    public List<String> checkParam(SafetyTaskBuildDto safetyTaskBuildDto) {
+//        List<String> list = new ArrayList<>();
+//        DateHelper dateHelper = new DateHelper(safetyTaskBuildDto.getDate());
+//        Map<String, Date> map = null;
+//        List<CoreSafecheckPlan> plans = null;
+//        if (safetyTaskBuildDto.getPlanId() != null) {
+//            plans = new ArrayList<>();
+//            CoreSafecheckPlan coreSafecheckPlan = planMapper.selectById(safetyTaskBuildDto.getPlanId());
+//            if (coreSafecheckPlan.getPlanStatus() == 1) {
+//                list.add("当前计划:" + coreSafecheckPlan.getPlanName() + "已禁用!");
+//                return list;
+//            }
+//            plans.add(coreSafecheckPlan);
+//            map = DateHelper.getStartAndEnd(safetyTaskBuildDto.getDate(), Math.toIntExact(coreSafecheckPlan.getPlanCycle()));
+//        } else {
+//            LambdaUpdateWrapper<CoreSafecheckPlan> qw = new LambdaUpdateWrapper<>();
+//            qw.eq(CoreSafecheckPlan::getPlanCycle, safetyTaskBuildDto.getPlanCycle());
+//            qw.eq(CoreSafecheckPlan::getIsDeleted, 0);
+//            qw.eq(CoreSafecheckPlan::getPlanStatus, 0);
+//            plans = planMapper.selectList(qw);
+//            map = DateHelper.getStartAndEnd(safetyTaskBuildDto.getDate(), safetyTaskBuildDto.getPlanCycle());
+//        }
+//        if (CollectionUtil.isEmpty(plans)) {
+//            list.add("计划不存在");
+//        }
+//        for (CoreSafecheckPlan plan : plans) {
+//            if (ObjectUtil.notEqual(plan.getPlanCycle(), safetyTaskBuildDto.getPlanCycle())) {
+//                list.add("计划周期与计划不匹配");
+//                break;
+//            }
+//        }
+//        if (map.keySet().size() == 0) {
+//            list.add("计划周期不存在");
+//        }
+//        if (ObjectUtil.isNotEmpty(safetyTaskBuildDto.getExecOrgIdList())) {
+//            List<Long> execOrgIdList = safetyTaskBuildDto.getExecOrgIdList();
+//            for (CoreSafecheckPlan plan : plans) {
+//                List<CoreSafecheckPlanToExecOrg> coreSafecheckPlanToExecOrgs = planToExecOrgMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToExecOrg>().eq(CoreSafecheckPlanToExecOrg::getPlanId, plan.getId()));
+//                if (CollectionUtil.isEmpty(coreSafecheckPlanToExecOrgs)) {
+//                    //说明计划是根据机构类型配置的,获取所有的机构类型,如果参数中执行机构的机构类型存在不属于此计划的执行机构,则返回错误
+//                    List<Long> orgTypeList = orgService.selectOrgTypeByIdList(execOrgIdList, SecurityConstants.INNER);
+//                    for (Long orgType : orgTypeList) {
+//                        if (ObjectUtil.notEqual(orgType, plan.getExecOrgType())) {
+//                            list.add("参数中," + plan.getPlanName() + "计划下存在错误执行机构数据");
+//                            break;
+//                        }
+//                    }
+//                } else {
+//                    //获取当前计划的所有执行机构,如果参数中存在不属于此计划的执行机构,则返回错误
+//                    List<Long> collect = coreSafecheckPlanToExecOrgs.stream().map(CoreSafecheckPlanToExecOrg::getOrgId).collect(Collectors.toList());
+//                    for (Long execOrgId : execOrgIdList) {
+//                        if (!collect.contains(execOrgId)) {
+//                            list.add("参数中," + plan.getPlanName() + "计划下存在错误执行机构数据");
+//                            break;
+//                        }
+//                    }
+//                }
+//
+//
+//            }
+//
+//        }
+//        if (ObjectUtil.isNotEmpty(safetyTaskBuildDto.getCheckOrgIdList())) {
+//            List<Long> checkOrgIdList = safetyTaskBuildDto.getCheckOrgIdList();
+//            for (CoreSafecheckPlan plan : plans) {
+//                List<CoreSafecheckPlanToCheckOrg> coreSafecheckPlanToCheckOrgs = planToCheckOrgMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToCheckOrg>().eq(CoreSafecheckPlanToCheckOrg::getPlanId, plan.getId()));
+//                if (ObjectUtil.isEmpty(coreSafecheckPlanToCheckOrgs)) {
+//                    //说明计划是根据机构类型配置的,获取所有的机构类型,如果参数中受检机构的机构类型存在不属于此计划的受检机构,则返回错误
+//                    List<Long> orgTypeList = orgService.selectOrgTypeByIdList(checkOrgIdList, SecurityConstants.INNER);
+//                    for (Long orgType : orgTypeList) {
+//                        if (ObjectUtil.notEqual(orgType, plan.getCheckOrgType())) {
+//                            list.add("参数中," + plan.getPlanName() + "计划下存在错误检查机构数据");
+//                            break;
+//                        }
+//                    }
+//                } else {
+//                    //获取当前计划的所有受检机构,如果参数中存在不属于此计划的受检机构,则返回错误
+//                    List<Long> collect = coreSafecheckPlanToCheckOrgs.stream().map(CoreSafecheckPlanToCheckOrg::getOrgId).collect(Collectors.toList());
+//                    for (Long checkOrgId : checkOrgIdList) {
+//                        if (!collect.contains(checkOrgId)) {
+//                            list.add("参数中," + plan.getPlanName() + "计划下存在错误检查机构数据");
+//                            break;
+//                        }
+//                    }
+//                }
+//            }
+//        }
+//        if (ObjectUtil.isNotEmpty(safetyTaskBuildDto.getRoleIdList())) {
+//            List<Long> roleIdList = safetyTaskBuildDto.getRoleIdList();
+//            for (CoreSafecheckPlan plan : plans) {
+//                List<CoreSafecheckPlanToRole> coreSafecheckPlanToRoles = planToRoleMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToRole>().eq(CoreSafecheckPlanToRole::getPlanId, plan.getId()));
+//                List<Long> collect = coreSafecheckPlanToRoles.stream().map(CoreSafecheckPlanToRole::getRoleId).collect(Collectors.toList());
+//                if (!new HashSet<>(collect).containsAll(roleIdList)) {
+//                    list.add("参数中," + plan.getPlanName() + "计划下存在错误角色数据");
+//                    break;
+//                }
+//            }
+//        }
+//        if (DateUtil.beginOfDay(map.get("end")).isBefore(DateUtil.beginOfDay(new Date()))) {
+//            list.add("计划周期已过");
+//        }
+//        return list;
+//
+//    }
 
     @Override
     public void rebuildDayTask(List<Long> orgIds, SysWorkTime workTime) {
@@ -742,9 +747,22 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
                     ofType = ofhs.getType();
                     //拿到当前周期所有检查计划
                     List<CoreSafecheckPlan> plans = planMapper.selectByPlanStatus(1, planCycle);
-                    Long fcheckOrgType = Long.valueOf(worg.getType());
+//                    Long fcheckOrgType = Long.valueOf(worg.getType());
                     //过滤受检机构类型为作息变更机构类型的计划
-                    plans = plans.stream().filter(p -> p.getCheckOrgType().equals(fcheckOrgType)).collect(Collectors.toList());
+
+                    Iterator<CoreSafecheckPlan> iterator = plans.iterator();
+
+                    while (iterator.hasNext()) {
+                        CoreSafecheckPlan p = iterator.next();
+                        List<Integer> checkOrgTypes = coreSafecheckPlanToCheckOrgTypeMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToCheckOrgType>().eq(CoreSafecheckPlanToCheckOrgType::getPlanId, p.getId())).stream().map(CoreSafecheckPlanToCheckOrgType::getTypeId).collect(Collectors.toList());
+                        if (!checkOrgTypes.contains(worg.getType())) {
+                            iterator.remove();
+                        }
+                    }
+
+//                    plans = plans.stream().filter(p -> {
+//                        p.getCheckOrgType().equals(fcheckOrgType)
+//                    }).collect(Collectors.toList());
                     Integer fofOrgType = ofType;
                     //过滤所属机构类型为作息变更机构所属行社的机构类型的计划
                     plans = plans.stream().filter(p -> p.getPlanOfOrgType().equals(fofOrgType)).collect(Collectors.toList());

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

@@ -82,6 +82,8 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
     private AppPlanMapper appPlanMapper;
     @Autowired
     private RemoteFileService fileService;
+    @Autowired
+    private CoreSafecheckPlanToCheckOrgTypeMapper coreSafecheckPlanToCheckOrgTypeMapper;
     @Override
     public TableDataInfo<CoreSafecheckPlan> selectPage(CoreSafecheckPlan coreSafecheckPlan) {
         //未删除
@@ -329,7 +331,6 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
             throw new RuntimeException("未选择检查项!");
         }
 
-        Long pid = coreSafecheckPlan.getId();
         if (coreSafecheckPlan.getId() == null) {
             //先处理检查计划
             coreSafecheckPlan.setPlanOfOrgId(coreSafecheckPlan.getPlanCreateOrgId());
@@ -398,6 +399,15 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
 
             }
         }
+        //再处理受检机构类型
+        if(coreSafecheckPlan.getCheckOrgTypes()!=null){
+            //删除当前计划的受检机构类型
+            coreSafecheckPlanToCheckOrgTypeMapper.delete(new LambdaQueryWrapper<CoreSafecheckPlanToCheckOrgType>().eq(CoreSafecheckPlanToCheckOrgType::getPlanId, coreSafecheckPlan.getId()));
+            for (Integer type :
+                    coreSafecheckPlan.getCheckOrgTypes()) {
+                coreSafecheckPlanToCheckOrgTypeMapper.insert(new CoreSafecheckPlanToCheckOrgType(coreSafecheckPlan.getId(),type));
+            }
+        }
 
 
         return returnId;
@@ -416,7 +426,7 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
             p.setModifiedBy(SecurityUtils.getUserId());
             p.setPlanName(coreSafecheckPlan.getPlanName());
             p.setBuildTaskNow(coreSafecheckPlan.isBuildTaskNow());
-            p.setCheckOrgType(coreSafecheckPlan.getCheckOrgType());
+//            p.setCheckOrgType(coreSafecheckPlan.getCheckOrgType());
             p.setCheckType(coreSafecheckPlan.getCheckType());
             p.setCount(p.getCount() > coreSafecheckPlan.getCount() ? p.getCount() : coreSafecheckPlan.getCount());
             p.setDescription(coreSafecheckPlan.getDescription());
@@ -460,6 +470,16 @@ public class CoreSafecheckPlanServiceImpl extends ServiceImpl<CoreSafecheckPlanM
 
                 }
             }
+            //再处理受检机构类型
+            List<CoreSafecheckPlanToCheckOrgType> checkOrgTypes = coreSafecheckPlanToCheckOrgTypeMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToCheckOrgType>().eq(CoreSafecheckPlanToCheckOrgType::getPlanId, coreSafecheckPlan.getId()));
+            if(checkOrgTypes!=null){
+                //删除当前计划的受检机构类型
+                coreSafecheckPlanToCheckOrgTypeMapper.delete(new LambdaQueryWrapper<CoreSafecheckPlanToCheckOrgType>().eq(CoreSafecheckPlanToCheckOrgType::getPlanId, coreSafecheckPlan.getId()));
+                for (CoreSafecheckPlanToCheckOrgType type :
+                        checkOrgTypes) {
+                    coreSafecheckPlanToCheckOrgTypeMapper.insert(new CoreSafecheckPlanToCheckOrgType(p.getId(),type.getTypeId()));
+                }
+            }
             //再处理子计划检查要点关系
             //查询计划id为当前父计划的id,所属机构id为当前父计划所属机构id的数据
             List<CoreSafecheckPlanToPoint> rpList = coreSafecheckPlanToPointMapper.selectList(new LambdaQueryWrapper<CoreSafecheckPlanToPoint>().eq(CoreSafecheckPlanToPoint::getPlanId, coreSafecheckPlan.getId()).eq(CoreSafecheckPlanToPoint::getOfOrgId, coreSafecheckPlan.getPlanOfOrgId()));

+ 29 - 15
soc-modules/soc-modules-core/src/main/resources/mapper/safetycheck/CoreSafecheckPlanMapper.xml

@@ -22,6 +22,7 @@
         <result property="modifiedBy" column="modified_by"/>
         <result property="sourceType" column="source_type"/>
         <result property="roleNames" column="role_names"/>
+        <result property="typeNames" column="type_names"/>
 
         <result property="distribute" column="distribute"/>
         <result property="distributeStatus" column="distribute_status"/>
@@ -55,6 +56,12 @@
             <result column="exec_org_id" property="id"/>
             <result column="exec_org_name" property="name"/>
         </collection>
+        <!-- 检查机构类型关系映射 -->
+        <collection property="checkOrgTypeList"
+                    ofType="com.xunmei.core.safetyCheck.domain.CoreSafecheckPlanToCheckOrgType">
+            <result column="type_plan_id" property="planId"/>
+            <result column="type_id" property="typeId"/>
+        </collection>
         <!-- 检查要点关系映射 -->
         <collection property="rulePointList" ofType="com.xunmei.core.safetyCheck.vo.ruleItem.SafetyCheckRulePointVo">
             <result column="rule_point_id" property="id"/>
@@ -161,7 +168,9 @@
                o3.NAME          AS exec_org_name,
                o4.id            AS check_org_id,
                o4.NAME          AS check_org_name,
-               pp.of_org_id
+               pp.of_org_id,
+               typ.type_id,
+               typ.plan_id      as type_plan_id
         FROM core_safecheck_plan c
                  LEFT JOIN sys_org o1 ON c.plan_create_org_id = o1.id
                  LEFT JOIN sys_org o2 ON c.plan_of_org_id = o2.id
@@ -175,8 +184,8 @@
                  LEFT JOIN core_safetycheck_rule_point rp ON rp.id = pp.point_id
                  LEFT JOIN core_safetycheck_rule_item ri ON ri.id = rp.item_id
                  LEFT JOIN core_safetycheck_rule cr ON cr.id = ri.rule_id
-                 LEFT JOIN sys_area are
-        ON are.id = rp.area_id
+                 LEFT JOIN sys_area are ON are.id = rp.area_id
+                 LEFT JOIN core_safecheck_plan_to_check_org_type typ ON c.id = typ.plan_id
         where c.id = #{id}
 
     </select>
@@ -185,6 +194,7 @@
         GROUP_CONCAT(DISTINCT role_name) as role_names,
         GROUP_CONCAT( tem.check_org_name) as check_org,
         GROUP_CONCAT( tem.exec_org_name) as exec_org,
+        GROUP_CONCAT( tem.dict_label) as type_names,
         tem.*
         FROM
         (
@@ -192,7 +202,6 @@
         c.plan_name,
         c.plan_cycle,
         c.exec_org_type,
-        c.check_org_type,
         c.plan_status,
         c.start_date,
         c.end_date,
@@ -221,7 +230,10 @@
         o3.id AS check_org_id,
         o3.short_name AS check_org_name,
         o4.id AS exec_org_id,
-        o4.short_name AS exec_org_name
+        o4.short_name AS exec_org_name,
+        typ.type_id,
+        typ.plan_id as type_plan_id,
+        dic.dict_label
         FROM
         core_safecheck_plan c
         LEFT JOIN sys_org o1 ON c.plan_create_org_id = o1.id
@@ -233,8 +245,11 @@
         LEFT JOIN core_safecheck_plan_to_exec_org eo ON eo.plan_id = c.id
         LEFT JOIN sys_org o4 ON o4.id = eo.org_id
         LEFT JOIN sys_user u1 ON u1.id = c.modified_by
+        LEFT JOIN core_safecheck_plan_to_check_org_type typ ON c.id=typ.plan_id
+        LEFT JOIN sys_dict_data dic ON dic.dict_value = typ.type_id
         WHERE
         1 =1
+        and dic.dict_type='sys_org_type'
         <if test="check.planName != null  and check.planName != ''">
             and c.plan_name like concat('%', #{check.planName}, '%')
         </if>
@@ -247,9 +262,9 @@
         <if test="check.execOrgType != null and check.execOrgType != ''">
             and c.exec_org_type = #{check.execOrgType}
         </if>
-        <if test="check.checkOrgType != null and check.checkOrgType != ''">
-            and c.check_org_type = #{check.checkOrgType}
-        </if>
+        <!--        <if test="check.checkOrgType != null and check.checkOrgType != ''">-->
+        <!--            and c.check_org_type = #{check.checkOrgType}-->
+        <!--        </if>-->
         <if test="check.planStatus != null ">
             and c.plan_status = #{check.planStatus}
         </if>
@@ -294,7 +309,7 @@
         1,
         2
         )
-            )
+        )
 
 
     </select>
@@ -434,11 +449,11 @@
     </delete>
     <select id="selectByRole" resultType="com.xunmei.core.safetyCheck.domain.CoreSafecheckPlan">
         select * from core_safecheck_plan p
-<!--        inner join sys_org o on p.plan_of_org_id =o.id and o.deleted=0 and o.type=3-->
-            inner join core_safecheck_plan_to_role r on p.id=r.plan_id and r.role_id in
-            <foreach collection="roleIds" item="id" separator="," open="(" close=")">
-                #{id}
-            </foreach>
+        <!--        inner join sys_org o on p.plan_of_org_id =o.id and o.deleted=0 and o.type=3-->
+        inner join core_safecheck_plan_to_role r on p.id=r.plan_id and r.role_id in
+        <foreach collection="roleIds" item="id" separator="," open="(" close=")">
+            #{id}
+        </foreach>
         where status=1 and plan_of_org_id=#{hangsheOrgId};
     </select>
     <select id="selectChildren" resultMap="CoreSafecheckPlanResult">
@@ -581,6 +596,5 @@
         </if>
 
 
-
     </select>
 </mapper>

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

@@ -21,6 +21,7 @@ import com.xunmei.system.api.Eto.SysOrgTreeRequestDto;
 import com.xunmei.system.api.domain.SysDept;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.SysUser;
+import com.xunmei.system.api.vo.FindOrgTypes;
 import com.xunmei.system.api.vo.SysOrgVO;
 import com.xunmei.system.service.ISysDeptService;
 import com.xunmei.system.service.ISysOrgService;
@@ -346,7 +347,12 @@ public class SysDeptController extends BaseController {
         return orgService.findByOrgTypeAndParent(orgType, path);
     }
 
-
+    @ApiOperation(value = "根据受检机构类型查询")
+    @InnerAuth
+    @GetMapping("/findByOrgTypesAndParent")
+    List<SysOrg> findByOrgTypesAndParent(@RequestBody FindOrgTypes types) {
+        return orgService.findByOrgTypesAndParent(types);
+    }
     @ApiOperation(value = "获取机构查询参数")
     @PostMapping("/selectOrgTreeReq")
     R<OrgTreeResp> getOrgTreeResp(@RequestBody OrgTreeReq orgTreeReq) {

+ 3 - 0
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysOrgMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xunmei.common.core.vo.IdNameVo;
 import com.xunmei.system.api.domain.SysOrg;
+import com.xunmei.system.api.vo.FindOrgTypes;
 import com.xunmei.system.api.vo.SysOrgVO;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Component;
@@ -88,4 +89,6 @@ public interface SysOrgMapper extends BaseMapper<SysOrg> {
     List<IdNameVo> getParentName(@Param("ids") List<Long> ids);
 
     List<SysOrg> findByOrgTypeAndParent(@Param("orgType")Integer orgType, @Param("path")String path);
+
+    List<SysOrg> findByOrgTypesAndParent(@Param("types")List<Integer> types,@Param("path") String path);
 }

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

@@ -5,6 +5,7 @@ import com.xunmei.common.core.domain.OrgTreeReq;
 import com.xunmei.common.core.domain.OrgTreeResp;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.system.api.domain.SysOrg;
+import com.xunmei.system.api.vo.FindOrgTypes;
 import com.xunmei.system.api.vo.SysOrgVO;
 
 import java.util.List;
@@ -142,4 +143,6 @@ public interface ISysOrgService extends IService<SysOrg> {
     SysOrg selectByShortName(String shortName);
 
     String selectOrgNameByPath(Long orgId);
+
+    List<SysOrg> findByOrgTypesAndParent(FindOrgTypes types);
 }

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

@@ -21,6 +21,7 @@ import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.redis.utils.RedisUtils;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.system.api.domain.SysOrg;
+import com.xunmei.system.api.vo.FindOrgTypes;
 import com.xunmei.system.api.vo.SysOrgVO;
 import com.xunmei.system.mapper.SysOrgMapper;
 import com.xunmei.system.mapper.SysUserMapper;
@@ -582,4 +583,9 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
         });
         return String.join("_", list);
     }
+
+    @Override
+    public List<SysOrg> findByOrgTypesAndParent(FindOrgTypes types) {
+        return sysOrgMapper.findByOrgTypesAndParent(types.getTypes(),types.getPath());
+    }
 }

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

@@ -689,5 +689,14 @@
     <select id="selectByShortName" resultType="com.xunmei.system.api.domain.SysOrg">
             SELECT * FROM sys_org WHERE short_name=#{name}  AND deleted=0
     </select>
+    <select id="findByOrgTypesAndParent" resultType="com.xunmei.system.api.domain.SysOrg">
+        select c.* from sys_org c where c.path like concat('%',#{path}, '%')  and deleted=0
+and
+            c.type in
+
+        <foreach collection="types" item="type" separator="," open="(" close=")">
+            #{type}
+        </foreach>
+    </select>
 
 </mapper>