浏览代码

培训/演练 类型默认值联动代码提交

jingyuanchao 1 年之前
父节点
当前提交
95840d9d81

+ 7 - 0
project_data/sql/0.0.3/soc/soc.sql

@@ -133,6 +133,13 @@ create table if not exists core_register_book_pdf(
     file_url           varchar(255) null comment '文件地址'
 );
 
+create table if not exists core_edu_training_plan_to_org_type
+(
+    plan_id bigint not null comment '计划id',
+    org_type  int not null comment '机构类型'
+)
+    comment '教育培训计划与执行机构类型关系表';
+
 -- 新增安全指数字典表
 delete from core_safety_dict;
 INSERT ignore INTO core_safety_dict (id, code, parent_code, name) VALUES (52, '1004', '-1', '安保履职');

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

@@ -221,11 +221,16 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
             plan.setStandard(1);
             plan.setIssue(0);
         }
+        //如果是省联社或者办事处,不需要下发
+        if (checkNeedPublish(org.getType())) {
+            plan.setStandard(2);
+            plan.setPlanStatus(EduTrainingPlanStatus.USING.getCode());
+        }
         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()))) {
+        if (checkCanBuildTaskNow(org.getType(), plan)) {
             final CoreDrillPlanDataVo detailPlanData = this.getCoreDrillPlanDataVo(plan.getId());
             coreDrillTaskService.createTaskForNow(detailPlanData, plan.getPlanStartDate(), plan.getPlanEndDate());
         }
@@ -233,6 +238,28 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         return insert;
     }
 
+    public Boolean checkCanBuildTaskNow(Integer orgType, CoreDrillPlan plan) {
+        //创建机构是否是省联社或者办事处及行社? 如果是则需要下发,不能立即创建任务
+        boolean orgFlag = !checkOrgType(orgType);
+        //使用中,如果不是使用中状态不能立即生成任务
+        boolean statusFlag = ObjectUtil.equal(DrillPlanStatus.USING.getCode(), plan.getPlanStatus());
+        //无周期?有周期的不能立即生成任务
+        boolean cycleFlag = ObjectUtil.equal(DrillPlanCycleEnum.NONE.getCode(), plan.getPlanCycle());
+        //是否需要立即生效 不是则不能立即生成任务
+        boolean buildFlag = ObjectUtil.equal(1, plan.getBuildTaskNow());
+        //是否需要下发:如果需要下发,不能立即生成任务
+        boolean publishFlag = checkNeedPublish(orgType);
+
+        return (orgFlag && statusFlag && (cycleFlag || buildFlag))||publishFlag;
+
+
+    }
+
+    private Boolean checkNeedPublish(Integer orgType) {
+        return ObjectUtil.equal(orgType, OrgTypeEnum.SHEGN_LIAN_SHE.getCode())
+                || ObjectUtil.equal(orgType, OrgTypeEnum.BAN_SHI_CHU.getCode());
+    }
+
     private Boolean checkOrgType(Integer orgType) {
         if (ObjectUtil.isEmpty(orgType)) {
             throw new RuntimeException("当前用户所在机构类型无法确认!");

+ 28 - 3
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingPlanServiceImpl.java

@@ -218,10 +218,14 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         if (checkOrgType(org.getType())) {
             plan.setStandard(1);
         }
+        //如果是省联社或者办事处,不需要下发
+        if (checkNeedPublish(org.getType())) {
+            plan.setStandard(2);
+            plan.setPlanStatus(EduTrainingPlanStatus.USING.getCode());
+        }
         int insert = coreEduTrainingPlanMapper.insert(plan);
 
-        //如果不是省联社或者办事处行社,状态启用,并且是无周期或者立即生效
-        if ((!checkOrgType(org.getType())) && ObjectUtil.equal(EduTrainingPlanStatus.USING.getCode(), plan.getPlanStatus()) && (ObjectUtil.equal(EduTrainingPlanCycleEnum.NONE.getCode(), plan.getPlanCycle()) || ObjectUtil.equal(1, plan.getBuildTaskNow()))) {
+        if (checkCanBuildTaskNow(org.getType(), plan)) {
             CoreEduTrainingPlanDataVo detailPlanData = this.getCoreEduTrainingPlanDataVo(plan.getId());
             coreEduTrainingTaskService.createTaskForNow(detailPlanData, plan.getStartDate(), plan.getEndDate());
         }
@@ -229,6 +233,27 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         return insert;
     }
 
+    public Boolean checkCanBuildTaskNow(Integer orgType, CoreEduTrainingPlan plan) {
+        //创建机构是否是省联社或者办事处及行社? 如果是则需要下发,不能立即创建任务
+        boolean orgFlag = !checkOrgType(orgType);
+        //使用中,如果不是使用中状态不能立即生成任务
+        boolean statusFlag = ObjectUtil.equal(EduTrainingPlanStatus.USING.getCode(), plan.getPlanStatus());
+        //无周期?有周期的不能立即生成任务
+        boolean cycleFlag = ObjectUtil.equal(EduTrainingPlanCycleEnum.NONE.getCode(), plan.getPlanCycle());
+        //是否需要立即生效 不是则不能立即生成任务
+        boolean buildFlag = ObjectUtil.equal(1, plan.getBuildTaskNow());
+        //是否需要下发:如果需要下发,不能立即生成任务
+        boolean publishFlag = checkNeedPublish(orgType);
+
+        return (orgFlag && statusFlag && (cycleFlag || buildFlag))||publishFlag;
+
+
+    }
+
+    private Boolean checkNeedPublish(Integer orgType) {
+        return ObjectUtil.equal(orgType, OrgTypeEnum.SHEGN_LIAN_SHE.getCode())
+                || ObjectUtil.equal(orgType, OrgTypeEnum.BAN_SHI_CHU.getCode());
+    }
 
     private Boolean checkOrgType(Integer orgType) {
         if (ObjectUtil.isEmpty(orgType)) {
@@ -740,7 +765,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         Integer isExecute = coreEduTrainingTaskMapper.selectCount(new LambdaQueryWrapper<CoreEduTrainingTask>()
                         .in(CoreEduTrainingTask::getPlanId, list)
                         .eq(CoreEduTrainingTask::getStatus, EduTrainingDoStatus.DONE.getCode()))
-                        .intValue();
+                .intValue();
         if (ObjectUtil.equal(isExecute, 0) || EduTrainingPlanCycleEnum.NONE.getCode().equals(plan.getPlanCycle())) {
             coreEduTrainingTaskService.delByStartTimeAndEndTimeAndPlanIdList(list, null, null);
         }