Przeglądaj źródła

计划变更代码提交

jingyuanchao 2 lat temu
rodzic
commit
e709384cf1
14 zmienionych plików z 156 dodań i 76 usunięć
  1. 27 19
      project_data/sql/0.0.2/soc/soc.sql
  2. 2 2
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/edu/dto/CoreEduTrainingTaskReportDto.java
  3. 2 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/mapper/CoreDrillPlanMapper.java
  4. 3 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/ICoreDrillTaskService.java
  5. 12 8
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillPlanServiceImpl.java
  6. 27 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java
  7. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/listener/WorkTimeChangeEventListener.java
  8. 2 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/mapper/CoreEduTrainingPlanMapper.java
  9. 2 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/ICoreEduTrainingTaskService.java
  10. 25 18
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingPlanServiceImpl.java
  11. 24 10
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java
  12. 7 0
      soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillPlanMapper.xml
  13. 4 0
      soc-modules/soc-modules-core/src/main/resources/mapper/edu/CoreEduTrainingPlanMapper.xml
  14. 18 18
      soc-modules/soc-modules-core/src/main/resources/mapper/edu/CoreEduTrainingTaskMapper.xml

+ 27 - 19
project_data/sql/0.0.2/soc/soc.sql

@@ -907,31 +907,39 @@ CREATE TABLE `core_safety_dict` (
 -- 新增安保综合评价规则表
 DROP TABLE IF EXISTS `core_safety_index_calculate_rule`;
 CREATE TABLE `core_safety_index_calculate_rule` (
-    `id` bigint NOT NULL DEFAULT '0',
-    `type_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '指标分类code',
-    `project_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '指标项目code',
-    `point_code` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '指标要点code',
-    `deduction_type` int DEFAULT NULL COMMENT '扣分方式 1:直接扣分,2最高扣分',
-    `score` int DEFAULT NULL COMMENT '分值',
-    `formula` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '扣分规则描述',
-    `org_type` int DEFAULT NULL COMMENT '机构类型',
-    `deleted` int DEFAULT '0' COMMENT '是否删除 0否1是',
-    `cycle` int DEFAULT NULL COMMENT '周期,只有在指标分类为安保履职时使用',
-    `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
+    id             bigint default 0 not null ,
+    type_code      varchar(50)      null comment '指标分类code',
+    project_code   varchar(50)      null comment '指标项目code',
+    point_code     varchar(50)      null comment '指标要点code',
+    deduction_type int              null comment '扣分方式 1:直接扣分,2最高扣分',
+    score          int              null comment '分值',
+    formula        varchar(500)     null comment '扣分规则描述',
+    org_type       int              null comment '机构类型',
+    deleted        int    default 0 null comment '是否删除 0否1是',
+    cycle          int              null comment '周期,只有在指标分类为安保履职时使用',
+    remark         varchar(500)     null comment '备注',
+    create_time    datetime         null,
+    create_by      varchar(125)     null,
+    update_time    datetime         null,
+    update_by      varchar(125)     null,
     PRIMARY KEY (`id`) USING BTREE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='安全指标配置表';
 
 -- 新增安保综合评价规则项表
 DROP TABLE IF EXISTS `core_safety_index_calculate_rule_item`;
 CREATE TABLE `core_safety_index_calculate_rule_item` (
-     `id` bigint NOT NULL DEFAULT '0',
-     `rule_id` bigint DEFAULT NULL COMMENT '安全指标主键',
-     `indicator_note` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '细化指数描述',
-     `calculate_type` int DEFAULT NULL COMMENT '计算类型 1累计数,2连续数,3 分类,4 固化值',
-     `indicator_days` int DEFAULT NULL COMMENT '连续数,连续多少天',
-     `item_type` int DEFAULT NULL COMMENT 'calculate_type为3是用来存具体分类',
-     `item_value` double(5,2) DEFAULT NULL COMMENT '扣分系数',
-     `order_num` int DEFAULT NULL COMMENT '排序',
+     id             bigint default 0 not null ,
+     rule_id        bigint           null comment '安全指标主键',
+     indicator_note varchar(100)     null comment '细化指数描述',
+     calculate_type int              null comment '计算类型 1累计数,2连续数,3 分类,4 固化值',
+     indicator_days int              null comment '连续数,连续多少天',
+     item_type      int              null comment 'calculate_type为3是用来存具体分类',
+     item_value     double(5, 2)     null comment '扣分系数',
+     order_num      int              null comment '排序',
+     create_time    datetime         null,
+     create_by      varchar(125)     null,
+     update_time    datetime         null,
+     update_by      varchar(125)     null,
      PRIMARY KEY (`id`) USING BTREE,
      KEY `rule_id` (`rule_id`) USING BTREE
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='安全指标指数细化表';

+ 2 - 2
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/edu/dto/CoreEduTrainingTaskReportDto.java

@@ -9,9 +9,9 @@ import java.util.Date;
 @Data
 public class CoreEduTrainingTaskReportDto {
 
-    @NotNull(message = "请选择统计维度!")
+   /* @NotNull(message = "请选择统计维度!")
     @ApiModelProperty(value = "查询类型", notes = "1:按计划查询,2:按任务统计")
-    private Integer selectType;
+    private Integer selectType;*/
 
     @NotNull(message = "请选择计划进行查看!")
     @ApiModelProperty(value = "教育培训计划Id")

+ 2 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/mapper/CoreDrillPlanMapper.java

@@ -79,4 +79,6 @@ public interface CoreDrillPlanMapper extends BaseMapper<CoreDrillPlan> {
     List<CoreDrillPlanRoleVo> selectPlanRole(@Param("orgId") Long orgId);
 
     int updatePlanStatus(@Param("planId") Long planId, @Param("planStatus") int status);
+
+    void updatePlanStatusByIdOrParentId(@Param("planId") Long planId, @Param("planStatus") int status);
 }

+ 3 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/ICoreDrillTaskService.java

@@ -103,4 +103,7 @@ public interface ICoreDrillTaskService extends IService<CoreDrillTask> {
 
     Integer updateDrillTaskStatus();
 
+    void delTaskByIdList(List<Long> taskIdList);
+
+    void delByStartTimeAndEndTimeAndPlanIdList(List<Long> planIdList, Date startTime, Date endTime);
 }

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

@@ -1,6 +1,7 @@
 package com.xunmei.core.drill.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson2.JSON;
@@ -11,6 +12,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.ErrorMsgConstants;
 import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.domain.DateRange;
 import com.xunmei.common.core.domain.IdName;
 import com.xunmei.common.core.domain.drill.domain.*;
 import com.xunmei.common.core.domain.drill.dto.CoreDrillPlanInsertDto;
@@ -22,6 +24,7 @@ import com.xunmei.common.core.domain.drill.vo.CoreDrillPlanPageVo;
 import com.xunmei.common.core.domain.drill.vo.CoreDrillPlanRoleVo;
 import com.xunmei.common.core.enums.OrgTypeEnum;
 import com.xunmei.common.core.enums.drill.DrillPlanStatus;
+import com.xunmei.common.core.enums.edu.EduTrainingPlanStatus;
 import com.xunmei.common.core.exception.SystemException;
 import com.xunmei.common.core.utils.AssertUtil;
 import com.xunmei.common.core.utils.DateUtils;
@@ -578,14 +581,12 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
     @Override
     @Transactional(rollbackFor = Exception.class)
     public int revocationPlan(Long planId) {
-        final CoreDrillPlan plan = coreDrillPlanMapper.selectById(planId);
-        AssertUtil.isNotEmpty(plan, "计划不存在!");
-        //仅标准计划存在撤回的情况
-        Integer hasDoneTask = coreDrillTaskMapper.checkHasTask(planId);
-        AssertUtil.notEqual(hasDoneTask, 1, "计划已有任务执行,无法撤销");
-        deletePlanAndTaskByParentPlanId(planId);
-        plan.setPlanStatus(DrillPlanStatus.DELETED.getCode());
+        CoreDrillPlan plan = getById(planId);
         plan.setIssue(0);
+        DateRange range = DateUtils.getStartAndEnd(new Date(), plan.getPlanCycle());
+        List<Long> list = coreDrillPlanMapper.selectIdByParentId(planId);
+        coreDrillPlanMapper.updatePlanStatusByIdOrParentId(planId, EduTrainingPlanStatus.DELETED.getCode());
+        coreDrillTaskService.delByStartTimeAndEndTimeAndPlanIdList(list,range.getStartTime(),range.getEndTime());
         return coreDrillPlanMapper.updateById(plan);
     }
 
@@ -651,7 +652,10 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
         if (ObjectUtil.isEmpty(publishOrgList)) {
             throw new RuntimeException("未能查询到行社数据!");
         }
-
+        if (publishOrgList.get(0).getId().equals(plan.getBelongOrgId())) {
+            plan.setParentId(plan.getId());
+            return ListUtil.list(true, plan);
+        }
         List<CoreDrillPlanToExecOrg> planToExecOrgs = new ArrayList<>();
         List<CoreDrillPlan> list = new ArrayList<>();
         for (SysOrg sysOrg : publishOrgList) {

+ 27 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/drill/service/impl/CoreDrillTaskServiceImpl.java

@@ -884,6 +884,33 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
     public Integer updateDrillTaskStatus() {
         return coreDrillTaskMapper.updateTaskStatus();
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
+    public void delTaskByIdList(List<Long> taskIdList) {
+        if (ObjectUtil.isNotEmpty(taskIdList)) {
+            coreDrillTaskMapper.deleteBatchIds(taskIdList);
+            taskToRoleMapper.delete(new LambdaQueryWrapper<CoreDrillTaskToRole>()
+                    .in(CoreDrillTaskToRole::getDrillTaskId, taskIdList));
+            taskToUserMapper.delete(new LambdaQueryWrapper<CoreDrillTaskToUser>()
+                    .in(CoreDrillTaskToUser::getDrillTaskId, taskIdList));
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
+    public void delByStartTimeAndEndTimeAndPlanIdList(List<Long> planIdList, Date startTime, Date endTime) {
+        if (ObjectUtil.isNotEmpty(planIdList)) {
+            List<CoreDrillTask> taskList = lambdaQuery()
+                    .ge(CoreDrillTask::getStartDate, startTime)
+                    .le(CoreDrillTask::getEndDate, endTime)
+                    .in(CoreDrillTask::getPlanId, planIdList)
+                    .select(CoreDrillTask::getId)
+                    .list();
+            List<Long> taskIdList = taskList.stream().map(CoreDrillTask::getId).collect(Collectors.toList());
+            delTaskByIdList(taskIdList);
+        }
+    }
 }
 
 

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/listener/WorkTimeChangeEventListener.java

@@ -17,7 +17,7 @@ public class WorkTimeChangeEventListener implements ApplicationListener<WorkTime
 
     @Override
     @EventListener(WorkTimeChangeEvent.class)
-    @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
+    @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT,fallbackExecution = true)
     public void onApplicationEvent(WorkTimeChangeEvent event) {
 
         coreEduTrainingTaskService.taskChangeForTimeWorkChange(event);

+ 2 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/mapper/CoreEduTrainingPlanMapper.java

@@ -81,4 +81,6 @@ public interface CoreEduTrainingPlanMapper extends BaseMapper<CoreEduTrainingPla
     List<Long> selectAllIdByParentId(@Param("planId") Long planId);
 
     int updatePlanStatus(@Param("planId") Long planId, @Param("status") int status);
+
+    void updatePlanStatusByIdOrParentId(@Param("planId") Long planId, @Param("status") int status);
 }

+ 2 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/ICoreEduTrainingTaskService.java

@@ -104,4 +104,6 @@ public interface ICoreEduTrainingTaskService extends IService<CoreEduTrainingTas
 
 
     void delTaskByIdList(List<Long> idList);
+
+    void delByStartTimeAndEndTimeAndPlanIdList(List<Long> planIdList, Date startTime, Date endTime);
 }

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

@@ -1,6 +1,7 @@
 package com.xunmei.core.edu.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson2.JSON;
@@ -11,6 +12,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.ErrorMsgConstants;
 import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.domain.DateRange;
 import com.xunmei.common.core.domain.IdName;
 import com.xunmei.common.core.domain.edu.domain.*;
 import com.xunmei.common.core.domain.edu.dto.CoreEduTrainingPlanEditDto;
@@ -22,7 +24,6 @@ import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanPageVo;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingPlanRoleVo;
 import com.xunmei.common.core.enums.OrgTypeEnum;
 import com.xunmei.common.core.enums.edu.EduTrainingPlanStatus;
-import com.xunmei.common.core.exception.SystemException;
 import com.xunmei.common.core.utils.AssertUtil;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.web.page.TableDataInfo;
@@ -204,13 +205,13 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         plan.setPlanStatus(EduTrainingPlanStatus.DRAFT.getCode());
         plan.setStandard(0);
         plan.setIssue(0);
-        //省联社或者办事处创建的计划才存在下发
+        //省联社或者办事处及行社创建的计划才存在下发
         if (checkOrgType(org.getType())) {
             plan.setStandard(1);
         }
         int insert = coreEduTrainingPlanMapper.insert(plan);
 
-        //如果不是省联社或者办事处,状态启用,并且是无周期或者立即生效
+        //如果不是省联社或者办事处行社,状态启用,并且是无周期或者立即生效
         if ((!checkOrgType(org.getType())) && ObjectUtil.equal(EduTrainingPlanStatus.USING.getCode(), plan.getPlanStatus()) && (ObjectUtil.equal(0, plan.getPlanCycle()) || ObjectUtil.equal(1, plan.getBuildTaskNow()))) {
             CoreEduTrainingPlanDataVo detailPlanData = this.getCoreEduTrainingPlanDataVo(plan.getId());
             coreEduTrainingTaskService.createTaskForNow(detailPlanData, plan.getStartDate(), plan.getEndDate());
@@ -224,8 +225,10 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         if (ObjectUtil.isEmpty(orgType)) {
             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());
     }
 
     /**
@@ -238,6 +241,12 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
     @Transactional(rollbackFor = Exception.class)
     public int updateCoreEduTrainingPlan(CoreEduTrainingPlanEditDto request) {
         final CoreEduTrainingPlan plan = getById(request.getId());
+
+        if (plan.getPlanStatus()==EduTrainingPlanStatus.DRAFT.getCode()) {
+            throw new RuntimeException("当前计划已被删除,无法修改!");
+        }
+
+
         //此处判断能否修改,如果可以 需要删除任务,且还需要判断是否需要生成任务
         Boolean can = checkCanUpdate(request, plan);
         if (!can) {
@@ -565,12 +574,8 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
     @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
     public void publishPlan(Long planId) {
         final CoreEduTrainingPlan plan = coreEduTrainingPlanMapper.selectById(planId);
-        if (plan == null) {
-            throw new SystemException("计划不存在!");
-        }
-        if (ObjectUtil.equal(plan.getIssue(), 1)) {
-            throw new SystemException("计划已完成发布!");
-        }
+        AssertUtil.isNotEmpty(plan, "计划不存在!");
+        AssertUtil.equal(plan.getIssue(), 0, "计划已完成下发!");
         List<CoreEduTrainingPlan> list = buildPlanData(plan, new ArrayList<>(), true);
         //下发后修改为使用中
         plan.setPlanStatus(EduTrainingPlanStatus.USING.getCode());
@@ -615,7 +620,10 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         if (ObjectUtil.isEmpty(publishOrgList)) {
             throw new RuntimeException("未能查询到行社数据!");
         }
-
+        if (publishOrgList.get(0).getId().equals(plan.getBelongOrgId())) {
+            plan.setParentId(plan.getId());
+            return ListUtil.list(true, plan);
+        }
         List<CoreEduTrainingPlanToExecOrg> planToExecOrgs = new ArrayList<>();
         List<CoreEduTrainingPlan> list = new ArrayList<>();
         for (SysOrg sysOrg : publishOrgList) {
@@ -627,7 +635,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
             coreEduTrainingPlan.setBelongOrgPath(sysOrg.getPath());
             coreEduTrainingPlan.setStandard(0);
             coreEduTrainingPlan.setIssue(0);
-            coreEduTrainingPlan.setPlanStatus(isPublish ? EduTrainingPlanStatus.USING.getCode():plan.getPlanStatus());
+            coreEduTrainingPlan.setPlanStatus(isPublish ? EduTrainingPlanStatus.USING.getCode() : plan.getPlanStatus());
             coreEduTrainingPlan.setParentId(plan.getId());
             coreEduTrainingPlan.setCreateTime(new Date());
             coreEduTrainingPlan.setUpdateTime(new Date());
@@ -670,12 +678,11 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
     @Transactional(rollbackFor = Exception.class)
     public Integer revocationPlan(Long planId) {
         CoreEduTrainingPlan plan = getById(planId);
-        //仅标准计划存在撤回的情况
-        Integer hasDoneTask = coreEduTrainingTaskMapper.checkHasTask(planId);
-        AssertUtil.notEqual(hasDoneTask, 1, "计划已有任务执行,无法撤销");
-        deletePlanAndTaskByParentPlanId(planId);
         plan.setIssue(0);
-        plan.setPlanStatus(EduTrainingPlanStatus.DELETED.getCode());
+        DateRange range = DateUtils.getStartAndEnd(new Date(), plan.getPlanCycle());
+        List<Long> list = coreEduTrainingPlanMapper.selectIdByParentId(planId);
+        coreEduTrainingPlanMapper.updatePlanStatusByIdOrParentId(planId, EduTrainingPlanStatus.DELETED.getCode());
+        coreEduTrainingTaskService.delByStartTimeAndEndTimeAndPlanIdList(list,range.getStartTime(),range.getEndTime());
         return coreEduTrainingPlanMapper.updateById(plan);
     }
 

+ 24 - 10
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/service/impl/CoreEduTrainingTaskServiceImpl.java

@@ -401,7 +401,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         saveTaskAndRoleData(plan, start, end, execOrgList);
     }
 
-    private List<SysOrg> getExecOrgList(CoreEduTrainingPlanDataVo plan,Date start, Date end){
+    private List<SysOrg> getExecOrgList(CoreEduTrainingPlanDataVo plan, Date start, Date end) {
         List<CoreEduTrainingPlanToExecOrg> planExecOrgList = plan.getPlanExecOrgList();
         List<SysOrg> orgList;
         if (ObjectUtil.isEmpty(planExecOrgList)) {
@@ -414,12 +414,12 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         List<Long> orgIdList = orgList.stream().map(SysOrg::getId).collect(Collectors.toList());
         String startTime = DateUtil.format(start, Constants.DAILY_FORMAT);
         String endTime = DateUtil.format(end, Constants.DAILY_FORMAT);
-        WorkTimeDto workTimeDto= new WorkTimeDto();
+        WorkTimeDto workTimeDto = new WorkTimeDto();
         workTimeDto.setOrgIdList(orgIdList);
         workTimeDto.setStartTime(startTime);
         workTimeDto.setEndTime(endTime);
         List<SysWorkTime> workTimeList = RemoteCallHandlerExecutor.executeRemoteCall(() ->
-                workTimeService.findWorkTimeByRange(workTimeDto, SecurityConstants.FROM_SOURCE),
+                        workTimeService.findWorkTimeByRange(workTimeDto, SecurityConstants.FROM_SOURCE),
                 ErrorMsgConstants.QUERY_ORG_WORK_TIME_ERROR);
         if (workTimeList.isEmpty()) {
             log.error("生成任务时,需要生成任务的机构均未营业,本次任务跳过!");
@@ -428,7 +428,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         List<Long> workOrgIdList = workTimeList.stream().filter(time -> ObjectUtil.equal(time.getIsEnable(), WORK))
                 .map(SysWorkTime::getOrgId).collect(Collectors.toList());
         return orgList.stream().filter(org -> workOrgIdList.contains(org.getId())).collect(Collectors.toList());
-       // return orgList;
+        // return orgList;
 
     }
 
@@ -752,8 +752,22 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
             coreEduTrainingTaskMapper.deleteBatchIds(taskIdList);
             taskToRoleMapper.delete(new LambdaQueryWrapper<CoreEduTrainingTaskToRole>()
                     .in(CoreEduTrainingTaskToRole::getEduTrainingTaskId, taskIdList));
-            /*taskToUserMapper.delete(new LambdaQueryWrapper<CoreEduTrainingTaskToUser>()
-                    .in(CoreEduTrainingTaskToUser::getEduTrainingTaskId, taskIdList));*/
+            taskToUserMapper.delete(new LambdaQueryWrapper<CoreEduTrainingTaskToUser>()
+                    .in(CoreEduTrainingTaskToUser::getEduTrainingTaskId, taskIdList));
+        }
+    }
+
+    @Override
+    public void delByStartTimeAndEndTimeAndPlanIdList(List<Long> planIdList, Date startTime, Date endTime) {
+        if (ObjectUtil.isNotEmpty(planIdList)) {
+            List<CoreEduTrainingTask> taskList = lambdaQuery()
+                    .ge(CoreEduTrainingTask::getStartDate, startTime)
+                    .le(CoreEduTrainingTask::getEndDate, endTime)
+                    .in(CoreEduTrainingTask::getPlanId, planIdList)
+                    .select(CoreEduTrainingTask::getId)
+                    .list();
+            List<Long> taskIdList = taskList.stream().map(CoreEduTrainingTask::getId).collect(Collectors.toList());
+            delTaskByIdList(taskIdList);
         }
     }
 
@@ -839,11 +853,11 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         List<Long> workOrgIdList = workTimeList.stream().map(SysWorkTime::getOrgId).collect(Collectors.toList());
         //查询需要生成任务的机构的计划
         //每日的情况需要考虑到特殊日子,比如每月一号 一月一号等多周期重合的情况
-        List<Integer> cycleList = DateUtils.checkDate(today);
+        //List<Integer> cycleList = DateUtils.checkDate(today);
         List<CoreEduTrainingPlan> planList = coreEduTrainingPlanMapper.selectList(new LambdaQueryWrapper<CoreEduTrainingPlan>()
                 .eq(CoreEduTrainingPlan::getStandard, 0)
                 .eq(CoreEduTrainingPlan::getPlanStatus, EduTrainingPlanStatus.USING.getCode())
-                .in(CoreEduTrainingPlan::getPlanCycle, cycleList)
+                .eq(CoreEduTrainingPlan::getPlanCycle, EduTrainingPlanCycleEnum.DAILY.getCode())
                 .eq(CoreEduTrainingPlan::getDeleted, 0)
                 .in(CoreEduTrainingPlan::getBelongOrgId, workOrgIdList)
                 .select(CoreEduTrainingPlan::getId, CoreEduTrainingPlan::getPlanCycle));
@@ -1088,11 +1102,11 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         DateRange range = DateUtils.getStartAndEnd(now, cycle);
         String startTime = DateUtil.format(range.getStartTime(), Constants.DAILY_FORMAT);
         String endTime = DateUtil.format(range.getEndTime(), Constants.DAILY_FORMAT);
-        WorkTimeDto workTimeDto= new WorkTimeDto();
+        WorkTimeDto workTimeDto = new WorkTimeDto();
         workTimeDto.setOrgIdList(event.getOrgIds());
         workTimeDto.setStartTime(startTime);
         workTimeDto.setEndTime(endTime);
-        return workTimeService.findWorkTimeByRange(workTimeDto,SecurityConstants.FROM_SOURCE);
+        return workTimeService.findWorkTimeByRange(workTimeDto, SecurityConstants.FROM_SOURCE);
     }
 }
 

+ 7 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/drill/CoreDrillPlanMapper.xml

@@ -645,4 +645,11 @@
         set plan_status = #{planStatus}
         where id = #{planId}
     </update>
+
+    <update id="updatePlanStatusByIdOrParentId">
+        update core_drill_plan
+        set plan_status = #{planStatus}
+        where id = #{planId}
+           or parent_id = #{planId}
+    </update>
 </mapper>

+ 4 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/edu/CoreEduTrainingPlanMapper.xml

@@ -586,4 +586,8 @@
     <update id="updatePlanStatus">
         update core_edu_training_plan set plan_status = #{status} where id = #{planId}
     </update>
+
+    <update id="updatePlanStatusByIdOrParentId">
+        update core_edu_training_plan set plan_status = #{status} where id = #{planId} or parent_id = #{planId}
+    </update>
 </mapper>

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

@@ -186,28 +186,28 @@
         update core_edu_training_task
         set status=3
         where end_date <![CDATA[<]]> now()
-          and status not in (2,3)
+          and status not in (2, 3)
     </update>
 
     <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
+        select distinct t.id as id, title as taskName, t.start_date startTime, t.end_date as endTime, t.status
         from core_edu_training_task t
-        where t.org_id =#{request.orgId}
-        and t.status in (0,1,4)
-            and (
-            (
-            #{request.startTime}   <![CDATA[<=]]> t.start_date
-            and #{request.endTime}     <![CDATA[>=]]> t.start_date
-            )
-            or
-            (
-            #{request.startTime}   <![CDATA[<=]]> t.end_date
-            and #{request.endTime}     <![CDATA[>=]]> t.end_date
-            )
-            or (
-            #{request.startTime}   <![CDATA[>=]]> t.start_date
-            and #{request.endTime}     <![CDATA[<=]]> t.end_date
-            )
+        where t.org_id = #{request.orgId}
+          and t.status in (0, 1, 4)
+          and (
+                (
+                            #{request.startTime}   <![CDATA[<=]]> t.start_date
+                        and #{request.endTime}     <![CDATA[>=]]> t.start_date
+                    )
+                or
+                (
+                            #{request.startTime}   <![CDATA[<=]]> t.end_date
+                        and #{request.endTime}     <![CDATA[>=]]> t.end_date
+                    )
+                or (
+                            #{request.startTime}   <![CDATA[>=]]> t.start_date
+                        and #{request.endTime}     <![CDATA[<=]]> t.end_date
+                    )
             )
     </select>
 </mapper>