Procházet zdrojové kódy

培训演练代码优化

jingyuanchao před 10 měsíci
rodič
revize
67a0aa807c

+ 4 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/vo/CoreDrillPlanDetailVo.java

@@ -70,5 +70,9 @@ public class CoreDrillPlanDetailVo {
     @ApiModelProperty(value = "登记簿url")
     private String pdfUrl;
 
+    @ApiModelProperty(value = "是否存在已完成任务", notes = "1:是, 0/null:否")
     private Integer done;
+
+    @ApiModelProperty(value = "标准机构下发的计划是否已生成了任务", notes = "1:生成, 0/null:未生成")
+    private Integer hasTask;
 }

+ 1 - 1
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/drill/vo/CoreDrillPlanPageVo.java

@@ -78,7 +78,7 @@ public class CoreDrillPlanPageVo {
     private Integer done;
 
     @ApiModelProperty(value = "标准机构下发的计划是否已生成了任务", notes = "1:生成, 0/null:未生成")
-    private Integer haTask;
+    private Integer hasTask;
 
     //private String planRoleNameList;
 

+ 3 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/edu/vo/CoreEduTrainingPlanDetailVo.java

@@ -66,5 +66,8 @@ public class CoreEduTrainingPlanDetailVo {
     @ApiModelProperty(value = "登记簿url")
     private String pdfUrl;
 
+    @ApiModelProperty(value = "标准机构下发的计划所生成任务是否存在已完成的任务", notes = "1:存在, 0/null:不存在")
     private Integer done;
+    @ApiModelProperty(value = "标准机构下发的计划是否已生成了任务", notes = "1:生成, 0/null:未生成")
+    private Integer hasTask;
 }

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

@@ -29,18 +29,13 @@ import com.xunmei.common.core.domain.drill.vo.CoreDrillPlanDataVo;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillPlanDetailVo;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillPlanPageVo;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillPlanRoleVo;
-import com.xunmei.common.core.domain.edu.domain.CoreEduTrainingPlan;
 import com.xunmei.common.core.domain.reminder.domain.CoreReminderSchedule;
 import com.xunmei.common.core.domain.reminder.vo.CoreReminderConfigurationFullVo;
 import com.xunmei.common.core.enums.BusinessPlanType;
 import com.xunmei.common.core.enums.CycleCommonEnum;
 import com.xunmei.common.core.enums.OrgTypeEnum;
-import com.xunmei.common.core.enums.drill.DrillDoStatus;
 import com.xunmei.common.core.enums.drill.DrillPlanCycleEnum;
 import com.xunmei.common.core.enums.drill.DrillPlanStatus;
-import com.xunmei.common.core.enums.edu.EduTrainingDoStatus;
-import com.xunmei.common.core.enums.edu.EduTrainingPlanCycleEnum;
-import com.xunmei.common.core.enums.edu.EduTrainingPlanStatus;
 import com.xunmei.common.core.exception.ServiceException;
 import com.xunmei.common.core.thread.ThreadPoolConfig;
 import com.xunmei.common.core.util.BeanHelper;
@@ -164,7 +159,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
             record.setDone(done);
             //是否已生成了任务
             final Integer hasTask = coreDrillTaskMapper.checkHasTaskByPlanParentId(record.getId());
-            record.setHaTask(hasTask);
+            record.setHasTask(hasTask);
         }
         if (Objects.equals(record.getPlanCycle(), DrillPlanCycleEnum.NONE.getCode())) {
             final Integer done = coreDrillTaskMapper.checkHasTaskIsDoneByPlanIdOrParentId(record.getId());
@@ -198,6 +193,9 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         if (plan.getStandard() == 1) {
             final Integer done = coreDrillTaskMapper.checkHasTaskIsDoneByPlanParentId(plan.getId());
             vo.setDone(done);
+            //是否已生成了任务
+            final Integer hasTask = coreDrillTaskMapper.checkHasTaskByPlanParentId(vo.getId());
+            vo.setHasTask(hasTask);
         }
         if (Objects.equals(plan.getPlanCycle(), DrillPlanCycleEnum.NONE.getCode())) {
             final Integer done = coreDrillTaskMapper.checkHasTaskIsDoneByPlanIdOrParentId(plan.getId());
@@ -343,8 +341,8 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         }
         if (plan.getPlanStatus() == DrillPlanStatus.USING.getCode()) {
             //使用中 状态,支持编辑名称;
-            //存在已完成任务,本次修改内容将从下周期生效
             //不存在已完成任务,本次修改内容将立即生成
+            //存在已完成任务,本次修改内容将从下周期生效
             doUpdatePlanForUsing(plan, request);
         }
     }
@@ -352,10 +350,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
     private void doUpdatePlanForUsing(CoreDrillPlan plan, CoreDrillPlanUpdateDto request) {
         doUpdatePlanForDeleted(plan, request);
         final List<Long> list = coreDrillPlanMapper.selectIdByParentId(plan.getId());
-        Integer isExecute = coreDrillTaskMapper.selectCount(new LambdaQueryWrapper<CoreDrillTask>()
-                        .in(CoreDrillTask::getPlanId, list)
-                        .eq(CoreDrillTask::getStatus, EduTrainingDoStatus.DONE.getCode()))
-                .intValue();
+        Integer isExecute = coreDrillTaskMapper.checkHasTaskIsDoneByPlanParentId(plan.getId());
         //不存在已完成任务,本次修改内容将立即生成
         //存在已完成任务,本次修改内容将从下周期生效
         if (isExecute < 1) {
@@ -515,10 +510,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
             removeById(id);
             return;
         }
-        int isExecute = coreDrillTaskMapper.selectCount(new LambdaQueryWrapper<CoreDrillTask>()
-                        .in(CoreDrillTask::getPlanId, list)
-                        .eq(CoreDrillTask::getStatus, DrillDoStatus.DONE.getCode()))
-                .intValue();
+        Integer isExecute = coreDrillTaskMapper.checkHasTaskIsDoneByPlanParentId(id);
         list.add(id);
         if (isExecute < 1) {
             // 计划下没有已完成:删除所有任务,计划数据做物理删除。
@@ -637,7 +629,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
             plan.setBuildTaskNow(0);
             plan.setEffectiveTime(DateUtil.offsetDay(plan.getPlanEndDate(), 1));
         }
-        if (plan.getPlanCycle().equals(EduTrainingPlanCycleEnum.NONE.getCode())) {
+        if (plan.getPlanCycle().equals(DrillPlanCycleEnum.NONE.getCode())) {
             plan.setEffectiveTime(new Date());
         }
     }
@@ -747,7 +739,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         LambdaQueryWrapper<CoreDrillPlan> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(CoreDrillPlan::getBelongOrgId, orgId)
                 .eq(CoreDrillPlan::getDeleted, 0)
-                .eq(CoreDrillPlan::getPlanStatus, EduTrainingPlanStatus.USING.getCode());
+                .eq(CoreDrillPlan::getPlanStatus, DrillPlanStatus.USING.getCode());
         if(ObjectUtil.isNotNull(standard))
         {
             queryWrapper.eq(CoreDrillPlan::getStandard, standard);
@@ -773,7 +765,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         LambdaQueryWrapper<CoreDrillPlan> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.in(CoreDrillPlan::getBelongOrgId, orgIds)
                 .eq(CoreDrillPlan::getDeleted, 0)
-                .eq(CoreDrillPlan::getPlanStatus, EduTrainingPlanStatus.USING.getCode());
+                .eq(CoreDrillPlan::getPlanStatus, DrillPlanStatus.USING.getCode());
         if(ObjectUtil.isNotNull(standard))
         {
             queryWrapper.eq(CoreDrillPlan::getStandard, standard);

+ 0 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/mapper/CoreEduTrainingTaskMapper.java

@@ -36,7 +36,6 @@ public interface CoreEduTrainingTaskMapper extends BaseMapper<CoreEduTrainingTas
     Integer checkHasTask(@Param("planId") Long planId);
     //判断任务是否已经执行
     Integer checkHasTaskIsExecute(@Param("list") List<Long> planIdList);
-    //判断任务是否已经完成或逾期
     Integer checkHasTaskIsDoneByPlanParentId(@Param("planId") Long planId);
     //判断任务是否已经执行
     Integer checkHasTaskIsExecuteByPlanParentId(@Param("planId") Long planId);

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

@@ -37,7 +37,6 @@ import com.xunmei.common.core.enums.CycleCommonEnum;
 import com.xunmei.common.core.enums.OrgTypeEnum;
 import com.xunmei.common.core.enums.drill.DrillPlanCycleEnum;
 import com.xunmei.common.core.enums.drill.DrillPlanStatus;
-import com.xunmei.common.core.enums.edu.EduTrainingDoStatus;
 import com.xunmei.common.core.enums.edu.EduTrainingPlanCycleEnum;
 import com.xunmei.common.core.enums.edu.EduTrainingPlanStatus;
 import com.xunmei.common.core.exception.ServiceException;
@@ -196,8 +195,11 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         vo.setPlanRoleId(ObjectUtil.isEmpty(execRoleIdList) ? null : execRoleIdList);
         if (plan.getStandard() == 1) {
             //是否存在已完成的任务
-            final Integer done = coreEduTrainingTaskMapper.checkHasTaskIsDoneByPlanParentId(plan.getId());
+            final Integer done = coreEduTrainingTaskMapper.checkHasTaskIsDoneByPlanParentId(vo.getId());
             vo.setDone(done);
+            //是否已生成了任务
+            final Integer hasTask = coreEduTrainingTaskMapper.checkHasTaskByPlanParentId(vo.getId());
+            vo.setHasTask(hasTask);
         }
         if (ObjectUtil.equal(plan.getPlanCycle(), EduTrainingPlanCycleEnum.NONE.getCode())) {
             vo.setDone(coreEduTrainingTaskMapper.checkHasTaskIsDoneByPlanIdOrParentId(plan.getId()));
@@ -293,7 +295,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
     @Transactional(rollbackFor = Exception.class)
     public int updateCoreEduTrainingPlan(CoreEduTrainingPlanEditDto request) {
         final CoreEduTrainingPlan plan = getById(request.getId());
-        if (plan==null){
+        if (plan == null) {
             throw new RuntimeException("计划不存在!");
         }
         plan.setUpdateTime(DateUtils.getNowDate());
@@ -308,8 +310,8 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         }
         if (plan.getPlanStatus() == EduTrainingPlanStatus.USING.getCode()) {
             //使用中 状态,支持编辑名称;
-            //存在已完成任务,本次修改内容将从下周期生效
             //不存在已完成任务,本次修改内容将立即生成
+            //存在已完成任务,本次修改内容将从下周期生效
             doUpdatePlanForUsing(plan, request);
         }
 
@@ -319,13 +321,10 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
     private void doUpdatePlanForUsing(CoreEduTrainingPlan plan, CoreEduTrainingPlanEditDto request) {
         doUpdatePlanForDeleted(plan, request);
         final List<Long> list = coreEduTrainingPlanMapper.selectIdByParentId(plan.getId());
-        Integer isExecute = coreEduTrainingTaskMapper.selectCount(new LambdaQueryWrapper<CoreEduTrainingTask>()
-                        .in(CoreEduTrainingTask::getPlanId, list)
-                        .eq(CoreEduTrainingTask::getStatus, EduTrainingDoStatus.DONE.getCode()))
-                .intValue();
+        Integer isExecute = coreEduTrainingTaskMapper.checkHasTaskIsDoneByPlanParentId(plan.getId());
         //不存在已完成任务,本次修改内容将立即生成
         //存在已完成任务,本次修改内容将从下周期生效
-        if (isExecute < 1) {
+        if (isExecute == null || isExecute < 1) {
             coreEduTrainingTaskService.delByStartTimeAndEndTimeAndPlanIdList(list, null, null);
             //使用中 状态,支持编辑名称,所以这里只需要修改计划名称就行了
             this.update(new LambdaUpdateWrapper<CoreEduTrainingPlan>().in(CoreEduTrainingPlan::getId, list)
@@ -394,7 +393,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         List<Long> longs = baseMapper.selectAllIdByParentId(plan.getId());
         if (!longs.isEmpty()) {
             longs.remove(plan.getId());
-            if(!longs.isEmpty()){
+            if (!longs.isEmpty()) {
                 baseMapper.delByIds(longs);
             }
 //            physicalDeleteMapper.deletedEduPlanByIds(longs);
@@ -498,12 +497,9 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
             removeById(id);
             return;
         }
-        int isExecute = coreEduTrainingTaskMapper.selectCount(new LambdaQueryWrapper<CoreEduTrainingTask>()
-                        .in(CoreEduTrainingTask::getPlanId, list)
-                        .eq(CoreEduTrainingTask::getStatus, EduTrainingDoStatus.DONE.getCode()))
-                .intValue();
+        Integer isExecute = coreEduTrainingTaskMapper.checkHasTaskIsDoneByPlanParentId(id);
         list.add(id);
-        if (isExecute < 1) {
+        if (isExecute == null || isExecute < 1) {
             // 计划下没有已完成:删除所有任务,计划数据做物理删除。
             coreEduTrainingTaskService.delByStartTimeAndEndTimeAndPlanIdList(list, null, null);
             coreEduTrainingPlanMapper.delByIds(list);
@@ -786,7 +782,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         List<Long> list = coreEduTrainingPlanMapper.selectIdByParentId(planId);
         Integer isExecute = coreEduTrainingTaskMapper.checkHasTaskIsDoneByPlanParentId(planId);
         //计划下没有已完成:计划下没有已完成:删除所有任务数据,计划状态回到草稿状态。
-        if (ObjectUtil.isNull(isExecute) || isExecute < 1/* || EduTrainingPlanCycleEnum.NONE.getCode().equals(plan.getPlanCycle())*/) {
+        if (isExecute == null || isExecute < 1) {
             // 删除所有任务数据
             coreEduTrainingTaskService.delByStartTimeAndEndTimeAndPlanIdList(list, null, null);
             //删除所有子计划
@@ -829,18 +825,17 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
 //                }
 
                 //1、由办事处机构获取到省联社机构,并获取到计划数据
-                List<SysOrgVO> parentOrgList= RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.getSelfAndAllParentOrgs(orgId), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+                List<SysOrgVO> parentOrgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.getSelfAndAllParentOrgs(orgId), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
                 SysOrgVO slsOrgVo = parentOrgList.stream().filter(x -> ObjectUtil.equal(x.getType(), 1)).findFirst().orElse(null);
-                List<CoreEduTrainingPlan> lsPlanList =new ArrayList<>();
-                if(ObjectUtil.isNotNull(slsOrgVo))
-                {
+                List<CoreEduTrainingPlan> lsPlanList = new ArrayList<>();
+                if (ObjectUtil.isNotNull(slsOrgVo)) {
                     lsPlanList = getPlanList(slsOrgVo.getId(), 1, 1);
                 }
                 //2、由办事处计划获取到下辖行社机构,并获取到由省联社下发到行社的计划数据
-                List<SysOrg> hsOrgList= RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectChildHs(orgId,SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
-                List<CoreEduTrainingPlan> bscHsPlanList = getPlanList(hsOrgList.stream().map(x->x.getId()).collect(toList()), 0,0);
+                List<SysOrg> hsOrgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectChildHs(orgId, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+                List<CoreEduTrainingPlan> bscHsPlanList = getPlanList(hsOrgList.stream().map(x -> x.getId()).collect(toList()), 0, 0);
                 //3、对比第一步和第二步的计划,两种相同的任务名称交集才是该办事处需要看到的省联社下发计划
-                lsPlanList=lsPlanList.stream().filter(ls->bscHsPlanList.stream().anyMatch(hs->ls.getPlanName().equals(hs.getPlanName()))).collect(toList());
+                lsPlanList = lsPlanList.stream().filter(ls -> bscHsPlanList.stream().anyMatch(hs -> ls.getPlanName().equals(hs.getPlanName()))).collect(toList());
 
                 //4、办事处自己下发的任务
 
@@ -852,12 +847,11 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
                 return hsPlanList.stream().map(x -> new IdName<>(x.getId().toString(), x.getPlanName())).collect(Collectors.toList());
             case 4:
                 //网点
-                List<SysOrgVO> parentOrgList1= RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.getSelfAndAllParentOrgs(orgId), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+                List<SysOrgVO> parentOrgList1 = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.getSelfAndAllParentOrgs(orgId), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
                 SysOrgVO hsOrgVo = parentOrgList1.stream().filter(x -> ObjectUtil.equal(x.getType(), 3)).findFirst().orElse(null);
-                Long tempOrgId=orgId;
-                if(ObjectUtil.isNotNull(hsOrgVo))
-                {
-                    tempOrgId=hsOrgVo.getId();
+                Long tempOrgId = orgId;
+                if (ObjectUtil.isNotNull(hsOrgVo)) {
+                    tempOrgId = hsOrgVo.getId();
                 }
                 final List<CoreEduTrainingPlan> wdhsPlanList = getPlanList(tempOrgId, null, null);
                 return wdhsPlanList.stream().map(x -> new IdName<>(x.getId().toString(), x.getPlanName())).collect(Collectors.toList());
@@ -867,16 +861,14 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
     }
 
     private List<CoreEduTrainingPlan> getPlanList(Long orgId, Integer standard, Integer issue) {
-         LambdaQueryWrapper<CoreEduTrainingPlan> queryWrapper = new LambdaQueryWrapper<>();
-         queryWrapper.eq(CoreEduTrainingPlan::getBelongOrgId, orgId)
+        LambdaQueryWrapper<CoreEduTrainingPlan> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(CoreEduTrainingPlan::getBelongOrgId, orgId)
                 .eq(CoreEduTrainingPlan::getDeleted, 0)
                 .eq(CoreEduTrainingPlan::getPlanStatus, EduTrainingPlanStatus.USING.getCode());
-         if(ObjectUtil.isNotNull(standard))
-         {
-             queryWrapper.eq(CoreEduTrainingPlan::getStandard, standard);
-         }
-        if(ObjectUtil.isNotNull(issue))
-        {
+        if (ObjectUtil.isNotNull(standard)) {
+            queryWrapper.eq(CoreEduTrainingPlan::getStandard, standard);
+        }
+        if (ObjectUtil.isNotNull(issue)) {
             queryWrapper.eq(CoreEduTrainingPlan::getIssue, issue);
         }
         return coreEduTrainingPlanMapper.selectList(queryWrapper.select(CoreEduTrainingPlan::getId, CoreEduTrainingPlan::getPlanName));
@@ -889,12 +881,10 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         queryWrapper.in(CoreEduTrainingPlan::getBelongOrgId, orgIds)
                 .eq(CoreEduTrainingPlan::getDeleted, 0)
                 .eq(CoreEduTrainingPlan::getPlanStatus, EduTrainingPlanStatus.USING.getCode());
-        if(ObjectUtil.isNotNull(standard))
-        {
+        if (ObjectUtil.isNotNull(standard)) {
             queryWrapper.eq(CoreEduTrainingPlan::getStandard, standard);
         }
-        if(ObjectUtil.isNotNull(issue))
-        {
+        if (ObjectUtil.isNotNull(issue)) {
             queryWrapper.eq(CoreEduTrainingPlan::getIssue, issue);
         }
         return coreEduTrainingPlanMapper.selectList(queryWrapper.select(CoreEduTrainingPlan::getId, CoreEduTrainingPlan::getPlanName));
@@ -988,38 +978,38 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
                 compensateLogService.buildLog(getBusinessPlanType(), false, orgIdList, trainingPlan.getId(), trainingPlan.getPlanName(), errorMsg);
 
                 return;
-            }else{
+            } else {
                 Integer execOrgType = trainingPlan.getExecOrgType();
                 List<Long> orgIds = coreEduTrainingPlanToExecOrgMapper.selectOrgIdByPlanId(trainingPlan.getId());
                 List<Long> ids = new ArrayList<>();
-                if(ObjectUtil.isNotEmpty(orgIds)){
+                if (ObjectUtil.isNotEmpty(orgIds)) {
                     //该计划是指定了具体机构的计划
                     //获取机构在 orgList子集机构
                     for (SysOrgVO sysOrgVO : orgList) {
                         List<SysOrg> sysOrgs = orgService.selectByOrgPathAndOrgType(sysOrgVO.getPath(), execOrgType, SecurityConstants.INNER);
-                        if(ObjectUtil.isNotEmpty(sysOrgs)){
+                        if (ObjectUtil.isNotEmpty(sysOrgs)) {
                             //获取sysOrgs 的属性id集合
                             List<Long> cids = sysOrgs.stream().map(SysOrg::getId).collect(toList());
                             //求cids和orgIds之间的交集
                             List<Long> collect = cids.stream().filter(id -> orgIds.contains(id)).collect(toList());
-                            if(!collect.isEmpty()){
+                            if (!collect.isEmpty()) {
                                 ids.addAll(collect);
                             }
                         }
                     }
-                }else{
+                } else {
                     //该计划是只指定了机构类型的计划
                     //获取orgList 机构树下的 机构类型
                     for (SysOrgVO sysOrgVO : orgList) {
                         List<SysOrg> sysOrgs = orgService.selectByOrgPathAndOrgType(sysOrgVO.getPath(), execOrgType, SecurityConstants.INNER);
-                        if(ObjectUtil.isNotEmpty(sysOrgs)){
-                           //获取sysOrgs 的属性id集合
+                        if (ObjectUtil.isNotEmpty(sysOrgs)) {
+                            //获取sysOrgs 的属性id集合
                             ids.addAll(sysOrgs.stream().map(SysOrg::getId).collect(toList()));
                         }
                     }
                 }
                 //没有子类计划的省联社计划
-                create(trainingPlan,ids,threadPoolTaskExecutor);
+                create(trainingPlan, ids, threadPoolTaskExecutor);
                 compensateLogService.buildLog(getBusinessPlanType(), false, orgIdList, trainingPlan.getId(), trainingPlan.getPlanName(), errorMsg);
                 return;
             }
@@ -1027,7 +1017,6 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         }
 
 
-
         // 行社自建计划
         if (INVALID_ORG_TYPES.contains(orgTypeEnum)) {
             errorMsg = "补偿范围中传递机构信息错误!与计划信息不匹配";

+ 11 - 10
soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillTaskMapper.xml

@@ -149,14 +149,6 @@
         limit 1
     </select>
 
-    <select id="checkHasTaskIsDoneByPlanParentId" resultType="java.lang.Integer">
-        select 1
-        from core_drill_task
-        where status in (2,3)
-          and plan_id in
-              (select id from core_drill_plan where parent_id = #{planId})
-        limit 1
-    </select>
 
     <select id="selectDrillTaskDetail" resultType="com.xunmei.common.core.domain.drill.vo.CoreDrillTaskDetailVo">
         select t.id               as id,
@@ -463,7 +455,16 @@
     </select>
 
     <select id="checkHasTaskByPlanParentId" resultType="java.lang.Integer">
-        SELECT 1 FROM `core_drill_task` where plan_id= #{planId} LIMIT 1;
+        SELECT 1
+        FROM `core_drill_task`
+        where (plan_id = #{planId} or plan_id in (select id from core_drill_plan where parent_id = #{planId}))
+        LIMIT 1
+    </select>
+    <select id="checkHasTaskIsDoneByPlanParentId" resultType="java.lang.Integer">
+        select 1
+        from core_drill_task
+        where status in (2,3)
+          and (plan_id = #{planId} or plan_id in (select id from core_drill_plan where parent_id = #{planId}))
+        limit 1
     </select>
-
 </mapper>

+ 41 - 36
soc-modules/soc-modules-core/src/main/resources/mapper/edu/CoreEduTrainingTaskMapper.xml

@@ -89,24 +89,24 @@
         LEFT JOIN sys_user u ON t.host_id = u.id
         LEFT JOIN sys_org d ON t.org_id = d.id
         where d.deleted=0
-            <choose>
-                <when test="request.checkSub==true">
-                    and  t.org_path like concat(#{request.orgPath}, '%')
-                </when>
-                <otherwise>
-                    and  t.org_id = #{request.orgId}
-                </otherwise>
-            </choose>
-            <if test="request.title!= null and request.title !=''">
-                and t.title like concat('%',#{request.title}, '%')
-            </if>
-            <if test="request.type!= null">
-                and t.type=#{request.type}
-            </if>
-            <if test="request.status != null">
-                and t.status=#{request.status}
-            </if>
-            <include refid="timeRangeSql"/>
+        <choose>
+            <when test="request.checkSub==true">
+                and t.org_path like concat(#{request.orgPath}, '%')
+            </when>
+            <otherwise>
+                and t.org_id = #{request.orgId}
+            </otherwise>
+        </choose>
+        <if test="request.title!= null and request.title !=''">
+            and t.title like concat('%',#{request.title}, '%')
+        </if>
+        <if test="request.type!= null">
+            and t.type=#{request.type}
+        </if>
+        <if test="request.status != null">
+            and t.status=#{request.status}
+        </if>
+        <include refid="timeRangeSql"/>
         order by field(t.status,1,4,0,2,3),t.id
     </select>
 
@@ -148,7 +148,7 @@
         ifnull(SUM(t.status = 2),0) AS finish
         from core_edu_training_task t inner join sys_org o on t.org_id = o.id
         <where>
-                and o.deleted=0 and o.is_lock=0
+            and o.deleted=0 and o.is_lock=0
             <if test="request.orgPath != null">
                 and o.path like concat(#{request.orgPath}, '%')
             </if>
@@ -173,18 +173,12 @@
         limit 1
     </select>
 
-    <select id="checkHasTaskIsDoneByPlanParentId" resultType="java.lang.Integer">
-        select 1
-        from core_edu_training_task
-        where status in (2)
-          and plan_id in
-              (select id from core_edu_training_plan where  parent_id = #{planId})
-        limit 1
-    </select>
+
 
     <update id="updateStatusByIdList">
         update core_edu_training_task
-        set status=3,update_time= now()
+        set status=3,
+            update_time= now()
         where end_date <![CDATA[<]]> now()
           and status not in (2, 3)
     </update>
@@ -208,23 +202,24 @@
         </if>
     </sql>
     <select id="selectCurUserTaskList" resultType="com.xunmei.common.core.domain.panel.vo.PanelListVo">
-        select distinct t.id as id, title as taskName, t.start_date startTime, t.end_date as endTime, t.status,concat_ws('-',o.affiliated_area,o.affiliated_bank,o.short_name) as orgName
-        from core_edu_training_task t  inner join sys_org o on o.id=t.org_id
+        select distinct t.id as id, title as taskName, t.start_date startTime, t.end_date as endTime,
+        t.status,concat_ws('-',o.affiliated_area,o.affiliated_bank,o.short_name) as orgName
+        from core_edu_training_task t inner join sys_org o on o.id=t.org_id
         where t.org_id = #{request.orgId}
         and t.status in (0, 1, 4)
         <include refid="timeRangeSql"/>
     </select>
 
     <select id="selectUserAllEduTrainingSignList" resultType="com.xunmei.common.core.domain.panel.vo.PanelListVo">
-        select distinct t.id as id, title as taskName, t.start_date startTime, t.end_date as endTime, t.status,concat_ws('-',o.affiliated_area,o.affiliated_bank,o.short_name) as orgName
-        from core_edu_training_task t   inner join sys_org o on o.id=t.org_id
+        select distinct t.id as id, title as taskName, t.start_date startTime, t.end_date as endTime,
+        t.status,concat_ws('-',o.affiliated_area,o.affiliated_bank,o.short_name) as orgName
+        from core_edu_training_task t inner join sys_org o on o.id=t.org_id
         inner join core_edu_training_task_to_user u ON t.id=u.edu_training_task_id
         where t.status in (0, 1, 4) and u.type=1 and u.sign=0 and u.user_id=#{request.userId}
         <include refid="timeRangeSql"/>
     </select>
 
 
-
     <select id="checkHasTaskIsExecuteByPlanParentId" resultType="java.lang.Integer">
         select 1
         from core_edu_training_task
@@ -273,10 +268,10 @@
         <where>
             <choose>
                 <when test="request.checkSub==true">
-                    and  t.org_path like concat(#{request.orgPath}, '%')
+                    and t.org_path like concat(#{request.orgPath}, '%')
                 </when>
                 <otherwise>
-                    and  t.org_id = #{request.orgId}
+                    and t.org_id = #{request.orgId}
                 </otherwise>
             </choose>
             <if test="request.title!= null and request.title !=''">
@@ -324,7 +319,17 @@
     </select>
 
     <select id="checkHasTaskByPlanParentId" resultType="java.lang.Integer">
-        SELECT 1 FROM `core_edu_training_task` where plan_id=#{planId} LIMIT 1
+        SELECT 1
+        FROM `core_edu_training_task`
+        where (plan_id = #{planId} or plan_id in (select id from core_edu_training_plan where parent_id = #{planId}))
+        LIMIT 1
     </select>
 
+    <select id="checkHasTaskIsDoneByPlanParentId" resultType="java.lang.Integer">
+        select 1
+        from core_edu_training_task
+        where status in (2)
+          and (plan_id = #{planId} or plan_id in (select id from core_edu_training_plan where parent_id = #{planId}))
+        limit 1
+    </select>
 </mapper>