Browse Source

预案演练计划代码提交

jingyuanchao 2 years ago
parent
commit
bd2431594a

+ 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);
 }

+ 13 - 7
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());
     }
 
     /**
@@ -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())))) {

+ 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>