浏览代码

履职任务下发流程变更

jiawuxian 1 年之前
父节点
当前提交
ee206d2957
共有 15 个文件被更改,包括 151 次插入104 次删除
  1. 19 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/enums/resumption/ResumptionTaskStatus.java
  2. 0 38
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/utils/ResumptionStatus.java
  3. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/service/impl/AppCockpitServiceImpl.java
  4. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/service/impl/QuestionReformServiceImpl.java
  5. 2 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/domain/AppPlan.java
  6. 0 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/domain/Resumption.java
  7. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/service/ResumptionServiceImpl.java
  8. 3 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppPlanMapper.java
  9. 1 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppRulePointMapper.java
  10. 2 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/IAppRulePointService.java
  11. 70 36
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppPlanServiceImpl.java
  12. 5 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppRulePointServiceImpl.java
  13. 29 19
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/task/ResumptionTaskBusiness.java
  14. 10 5
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppPlanMapper.xml
  15. 7 0
      soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppRulePointMapper.xml

+ 19 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/enums/resumption/ResumptionTaskStatus.java

@@ -0,0 +1,19 @@
+package com.xunmei.common.core.enums.resumption;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 任务状态
+ */
+@Getter
+@AllArgsConstructor
+public enum ResumptionTaskStatus {
+    Waiting(1, "待履职"),
+    UnderWay(2, "进行中"),
+    Completed(3, "已完成"),
+    Overdue(4, "已过期");
+
+    private final Integer code;
+    private final String name;
+}

+ 0 - 38
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/utils/ResumptionStatus.java

@@ -1,38 +0,0 @@
-package com.xunmei.common.core.utils;
-
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.ser.std.EnumSerializer;
-import lombok.Getter;
-
-/**
- * 履职状态
- */
-@JsonSerialize(using = EnumSerializer.class)
-public enum ResumptionStatus {
-    WAIT("履职中"),
-    NORMAL("按时完成"),
-    ERROR("按时完成"),
-    NOT("未完成"),
-    NA("无需履职"),
-    DELAY("补登完成");
-
-    /*
-    public static class ResumptionStatusListConverter implements AttributeConverter<List<ResumptionStatus>, String> {
-        @Override
-        public String convertToDatabaseColumn(final List<ResumptionStatus> attribute) {
-            return attribute == null ? "[]" : JSON.toJSONString(attribute);
-        }
-        @Override
-        public List<ResumptionStatus> convertToEntityAttribute(final String dbData) {
-            return JSON.parseArray(dbData, ResumptionStatus.class);
-        }
-    }
-    */
-
-    @Getter
-    private final String text;
-
-    ResumptionStatus(final String text) {
-        this.text = text;
-    }
-}

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/board/service/impl/AppCockpitServiceImpl.java

@@ -341,7 +341,7 @@ public class AppCockpitServiceImpl implements AppCockpitService {
         AppSyntheticQuestionVo vo = new AppSyntheticQuestionVo();
         vo.getRateByState().put("已确认", (float) questionDto.getConfirmedCount());
         vo.getRateByState().put("有异议", (float) questionDto.getDissentCount());
-        vo.getRateByState().put("已取消", (float) questionDto.getCancelCount());
+        vo.getRateByState().put("已关闭", (float) questionDto.getCancelCount());
         vo.getRateByState().put("待整改", (float) questionDto.getWaitReformCount());
         vo.getRateByState().put("已逾期", (float) overdueCount);
         vo.getRateByState().put("已整改", (float) questionDto.getReformedCount());

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/question/service/impl/QuestionReformServiceImpl.java

@@ -48,7 +48,7 @@ import java.util.stream.Collectors;
  * @date 2023-09-12
  */
 @Service
-public class QuestionReformServiceImpl extends ServiceImpl<QuestionMapper, Question> implements IQuestionReformService {
+public class  QuestionReformServiceImpl extends ServiceImpl<QuestionMapper, Question> implements IQuestionReformService {
     @Autowired
     private QuestionFlowMapper questionFlowMapper;
     @Autowired

+ 2 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/domain/AppPlan.java

@@ -173,9 +173,10 @@ public class AppPlan extends Model<AppPlan> implements Serializable {
 //    @Obsolete
 //    private Integer buildTaskNow;
 
-//    @TableLogic(value = "0", delval = "1")
+    @TableLogic(value = "0", delval = "1")
     @ApiModelProperty(value = "是否删除 1是 0否")
     private int deleted;
+
     @ApiModelProperty(value = "1:表示有已完成的任务")
     private Integer taskHasCompleted;
 //    public static ObjectDataClass planTo(AppPlan appPlan) {

+ 0 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/domain/Resumption.java

@@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.xunmei.common.core.utils.FormType;
-import com.xunmei.common.core.utils.ResumptionStatus;
 import com.xunmei.common.core.utils.ResumptionType;
 import com.xunmei.common.core.utils.Ymd;
 import com.xunmei.common.core.web.domain.BaseEntity;

+ 1 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/gx/service/ResumptionServiceImpl.java

@@ -98,7 +98,7 @@ public class ResumptionServiceImpl implements ResumptionService {
         if (status == 1 || status == 4) {
             //待履职 和已过期的数据是没有保存过数据的只能根据计划获取
             Long planId = resumption.getPlanId();
-            resumptionPlanVos = appPlanMapper.selectResumptionPlan(planId, resumption.getPlanStartTime());
+            resumptionPlanVos = appPlanMapper.selectResumptionPlan(planId);
             isExist = false;
         } else {
             resumptionPlanVos = resumptionMapper.selectResumptionPlan(taskDetailVo.getTaskId());

+ 3 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppPlanMapper.java

@@ -91,7 +91,7 @@ public interface AppPlanMapper extends BaseMapper<AppPlan> {
      * @param startDate 任务的开始日期
      * @return
      */
-    List<ResumptionPlanVo> selectResumptionPlan(@Param("planId") Long planId, @Param("startDate") Date startDate);
+    List<ResumptionPlanVo> selectResumptionPlan(@Param("planId") Long planId);
 
     Integer updateParentPlanCompletedState(@Param("planId") Long planId);
 
@@ -117,4 +117,6 @@ public interface AppPlanMapper extends BaseMapper<AppPlan> {
     Integer copyPlanRoles(@Param("planId") Long planId, @Param("newPlanId")Long newPlanId);
 
     Integer copyPlanOrgs(@Param("planId") Long planId, @Param("newPlanId")Long newPlanId);
+
+    Integer physicsDeleteById(@Param("ids") List<Long> ids);
 }

+ 1 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/mapper/AppRulePointMapper.java

@@ -34,6 +34,7 @@ public interface AppRulePointMapper extends BaseMapper<AppRulePoint> {
 
     List<AppRulePointTaskVo> findPointByPlan(Long planid);
 
+    Integer countPointByPlan(Long planid);
     List<Map<String, Object>> findAreaListPlan(Long planid);
 
     Map<String, Object> findByName(Map<String, Object> param);

+ 2 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/IAppRulePointService.java

@@ -20,6 +20,8 @@ public interface IAppRulePointService extends IService<AppRulePoint> {
 
     List<AppRulePointTaskVo> findPointByPlan(Long id);
 
+    Integer countPointByPlan(Long id);
+
     List<Map<String, Object>> findAreaListPlan(Long planid);
 
     Map<String, Object> findByName(String name,Long ruleId);

+ 70 - 36
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppPlanServiceImpl.java

@@ -12,10 +12,10 @@ 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.R;
-import com.xunmei.common.core.enums.CycleCommonEnum;
+import com.xunmei.common.core.enums.OrgTypeEnum;
 import com.xunmei.common.core.enums.PlanStatus;
+import com.xunmei.common.core.enums.resumption.ResumptionTaskStatus;
 import com.xunmei.common.core.exception.ServiceException;
 import com.xunmei.common.core.domain.registerbook.domain.CoreRegisterBookPdf;
 import com.xunmei.common.core.enums.RegisterBookType;
@@ -32,7 +32,6 @@ import com.xunmei.core.resumption.dto.plan.CoreResumptionPlanPageDto;
 import com.xunmei.core.resumption.mapper.*;
 import com.xunmei.core.resumption.service.AppPlanService;
 import com.xunmei.core.resumption.service.IResumptionRecordService;
-import com.xunmei.core.resumption.task.ResumptionTaskBusiness;
 import com.xunmei.core.resumption.task.ResumptionTaskBusinessService;
 import com.xunmei.core.resumption.vo.appPlan.AppPlanVo;
 import com.xunmei.core.resumption.vo.appPlan.ResumptionPlanPageVo;
@@ -48,7 +47,6 @@ import com.xunmei.system.api.domain.ResumptionPdf;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
 import org.apache.commons.lang3.StringUtils;
-import org.omg.IOP.TransactionService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -56,7 +54,6 @@ import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
@@ -199,8 +196,9 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
                     tempplan.setDistributeStatus("1");
                     if (immediateEffect) {
                         //停用状态下发,逻辑删除旧的计划,并生成一份副本
-                        tempplan.setDeleted(1);
                         baseMapper.updateById(tempplan);
+                        baseMapper.deleteById(tempplan);
+
                         Long hsPlanId = IDHelper.id();
                         baseMapper.copyChildren(tempplan.getId(), hsPlanId, parentId);
                         baseMapper.copyPlanOrgs(tempplan.getId(), hsPlanId);
@@ -218,7 +216,8 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
                     if (immediateEffect) {
                         hsPlans.add(plan);
                     }
-
+                    plan.setSolidId(IDHelper.id());
+                    plan.setParentSolidId(oldPlan.getSolidId());
                     plan.setOrgId(d.getOrgId().toString());
                     plan.setDistributeStatus("1");
                     plan.setPlanOfOrgId(d.getOrgId());
@@ -230,6 +229,7 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
 //            plan.setPlanName(plan.getPlanName()+"下发"+orgService.selectOrgById(d.getOrgId(),SecurityConstants.INNER).getName());
                     plan.setPlanName(plan.getPlanName());
                     plan.setParentId(dto.getId());
+
                     baseMapper.insert(plan);
                     Long id = plan.getId();
 
@@ -268,13 +268,18 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
 
         if (immediateEffect && ObjectUtil.equal(oldPlan.getPlanStatus(), PlanStatus.DELETED.getCode())) {
             //停用时下发且立即生效,逻辑删除旧计划并生成新计划
-            plan.setDeleted(1);
+            baseMapper.updateById(plan);
+
             baseMapper.copySelf(plan.getId(), parentId);
             baseMapper.copyPlanPoints(plan.getId(), parentId);
             baseMapper.copyPlanRoles(plan.getId(), parentId);
             baseMapper.copyPlanOrgs(plan.getId(), parentId);
+
+            baseMapper.deleteById(plan);
+        } else {
+            baseMapper.updateById(plan);
         }
-        baseMapper.updateById(plan);
+
         if (immediateEffect) {
             resumptionTaskBusiness.rebuildCurrentCycleTask(hsPlans);
         }
@@ -300,9 +305,11 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
             if (ObjectUtil.equal(planStatus, PlanStatus.DRAFT.getCode())) {
                 //草稿状态下发,立即生效则生成任务
                 newlist.add(plan);
+                baseMapper.updateById(plan);
             } else if (ObjectUtil.equal(planStatus, PlanStatus.DELETED.getCode())) {
                 //停用状态下发,逻辑删除旧计划,并生成计划的副本,并更新任务名称和关联的计划id
-                plan.setDeleted(1);
+                baseMapper.updateById(plan);
+                baseMapper.deleteById(plan.getId());
                 Long newPlanId = IDHelper.id();
                 copyHsPlan(id, newPlanId);
 
@@ -311,9 +318,11 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
             }
 
             resumptionTaskBusiness.rebuildCurrentCycleTask(newlist);
+        } else {
+            baseMapper.updateById(plan);
         }
 
-        baseMapper.updateById(plan);
+
         return plan;
     }
 
@@ -348,12 +357,13 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
             baseMapper.update(null, updateWrapper);
 
             List<Long> childrenPlanIds = baseMapper.selectList(new LambdaQueryWrapper<AppPlan>()
-                            .eq(AppPlan::getParentId, id).select(AppPlan::getId))
-                    .stream().map(AppPlan::getId).collect(Collectors.toList());
+                            .eq(AppPlan::getParentId, id)
+                            .select(AppPlan::getSolidId))
+                    .stream().map(AppPlan::getSolidId).collect(Collectors.toList());
             delete(childrenPlanIds);
 
-            childrenPlanIds.add(plan.getId());
-            deleteTaskByPlanId(childrenPlanIds);
+            childrenPlanIds.add(plan.getSolidId());
+            deleteAllTaskByPlanId(childrenPlanIds);
         }
 //
 //        //修改所有子计划
@@ -384,11 +394,27 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
     }
 
     @Async
-    protected void deleteTaskByPlanId(List<Long> planIds) {
-        if (CollectionUtils.isEmpty(planIds)) {
+    protected void deleteTaskByPlanId(List<Long> solidPlanIds) {
+        if (CollectionUtils.isEmpty(solidPlanIds)) {
             return;
         }
-        resumptionMapper.delete(new LambdaQueryWrapper<Resumption>().in(Resumption::getPlanId, planIds));
+        Date date = DateUtil.beginOfDay(new Date());
+        resumptionMapper.delete(new LambdaQueryWrapper<Resumption>()
+                .in(Resumption::getSolidId, solidPlanIds)
+                .ne(Resumption::getStatus, ResumptionTaskStatus.Completed.getCode())
+                .and(w ->
+                        w.ge(Resumption::getYmdDate, date)
+                                .or(w1 -> w1.le(Resumption::getPlanEndTime, date))
+                ));
+    }
+
+    @Async
+    protected void deleteAllTaskByPlanId(List<Long> solidPlanIds) {
+        if (CollectionUtils.isEmpty(solidPlanIds)) {
+            return;
+        }
+        resumptionMapper.delete(new LambdaQueryWrapper<Resumption>()
+                .in(Resumption::getSolidId, solidPlanIds));
     }
 
     /**
@@ -503,7 +529,8 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
             LambdaQueryWrapper<AppPlanToPoint> pointWrapper = new LambdaQueryWrapper<>();
             pointWrapper.eq(AppPlanToPoint::getPlanId, app.getId());
 
-            Boolean needCopy = immediateEffect && ObjectUtil.equal(existPlan.getPlanStatus(), PlanStatus.USING.getCode());
+            Boolean needCopy = immediateEffect
+                    && ObjectUtil.equal(existPlan.getPlanStatus(), PlanStatus.USING.getCode());
             List<Object> needRebuildPlans = new ArrayList<>();
             //修改所有子计划
             List<AppPlan> appPlans = baseMapper.selectList(new LambdaQueryWrapper<AppPlan>().eq(AppPlan::getParentId, plan.getId()));
@@ -519,8 +546,8 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
                     baseMapper.copyPlanRoles(ap.getId(), newChildPlanId);
                     baseMapper.copyPlanPoints(ap.getId(), newChildPlanId);
 
-                    ap.setDeleted(1);
                     baseMapper.updateById(ap);
+                    baseMapper.deleteById(ap.getId());
                     child = baseMapper.selectById(newChildPlanId);
                     needRebuildPlans.add(child);
                 }
@@ -600,10 +627,11 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
                 baseMapper.copyPlanRoles(existPlan.getId(), newPlanID);
                 baseMapper.copyPlanPoints(existPlan.getId(), newPlanID);
 
-                plan.setDeleted(1);
-                baseMapper.updateById(plan);
+                baseMapper.deleteById(app.getId());
 
                 plan.setId(newPlanID);
+
+
             }
 
 //处理本计划关联
@@ -674,6 +702,9 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
             plan.setPlanCreateOrgName(null);
             baseMapper.updateById(plan);
 
+            if (needCopy && ObjectUtil.equal(plan.getPlanOfOrgType(), OrgTypeEnum.HANG_SHE.getCode().longValue())) {
+                needRebuildPlans.add(baseMapper.selectById(plan.getId()));
+            }
             resumptionTaskBusiness.rebuildCurrentCycleTask(needRebuildPlans);
 //            //如果计划是编辑全部,代表不存在已完成或者逾期的任务,需要删除重新生成
 //            if (ObjectUtil.notEqual(existPlan.getTaskHasCompleted(),1)) {
@@ -756,24 +787,28 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
     @Transactional(rollbackFor = Exception.class)
     public void deleted(Long id) throws Exception {
         AppPlan plan = baseMapper.selectById(id);
+        List<AppPlan> plans = baseMapper.selectList(new LambdaQueryWrapper<AppPlan>()
+                .eq(AppPlan::getId, id).or().eq(AppPlan::getParentId, id)
+                .select(AppPlan::getId, AppPlan::getSolidId));
+
         if (ObjectUtil.equal(plan.getTaskHasCompleted(), 1)) {
-            //有已完成时,计划逻辑删除
-            LambdaUpdateWrapper<AppPlan> updateWrapper = new LambdaUpdateWrapper<>();
-            updateWrapper.set(AppPlan::getDeleted, 1);
-            updateWrapper.eq(AppPlan::getId, id).or().eq(AppPlan::getParentId, id);
+            //有已完成时,计划逻辑删除,删除当前轮次及之后未完成的任务
+            LambdaQueryWrapper<AppPlan> wrapper = new LambdaQueryWrapper<>();
+            wrapper.in(AppPlan::getId, plans.stream().map(AppPlan::getId).collect(Collectors.toList()));
 
-            baseMapper.update(null, updateWrapper);
+            baseMapper.delete(wrapper);
+            deleteTaskByPlanId(plans.stream().map(AppPlan::getSolidId).collect(Collectors.toList()));
         } else {
-            //无已完成时,计划物理删除
-            List<Long> planIds = baseMapper.selectList(new LambdaQueryWrapper<AppPlan>()
-                            .eq(AppPlan::getId, id).or().eq(AppPlan::getParentId, id).select(AppPlan::getId))
-                    .stream().map(AppPlan::getId).collect(Collectors.toList());
-            delete(planIds);
+            //无已完成时,计划物理删除,删除所有任务
+
+
+            delete(plans.stream().map(AppPlan::getId).collect(Collectors.toList()));
+            deleteAllTaskByPlanId(plans.stream().map(AppPlan::getSolidId).collect(Collectors.toList()));
         }
     }
 
     private void delete(List<Long> planIds) {
-        if(ObjectUtil.isEmpty(planIds)){
+        if (ObjectUtil.isEmpty(planIds)) {
             return;
         }
         //删除对应的角色关系
@@ -791,9 +826,7 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
         apo.lambda().in(AppPlanToExecOrg::getPlanId, planIds);
         appPlanToExecOrgMapper.delete(apo);
 
-        LambdaQueryWrapper<AppPlan> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.in(AppPlan::getId, planIds);
-        baseMapper.delete(queryWrapper);
+        baseMapper.physicsDeleteById(planIds);
     }
 
     private AppPlanVo convertToAppPlanVo(AppPlan app) {
@@ -847,6 +880,7 @@ public class AppPlanServiceImpl extends ServiceImpl<AppPlanMapper, AppPlan> impl
 
         plan.setId(app.getId());
         plan.setNotResumptionOnRest(app.getNotResumptionOnRest());
+        plan.setPlanOfOrgType(app.getPlanOfOrgType());
 //        plan.setBuildTaskNow(app.getBuildTaskNow());
 
         return plan;

+ 5 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/AppRulePointServiceImpl.java

@@ -29,6 +29,11 @@ public class AppRulePointServiceImpl extends ServiceImpl<AppRulePointMapper, App
     }
 
     @Override
+    public Integer countPointByPlan(Long planid) {
+        return baseMapper.countPointByPlan(planid);
+    }
+
+    @Override
     public List<Map<String, Object>> findAreaListPlan(Long planid) {
         return baseMapper.findAreaListPlan(planid);
     }

+ 29 - 19
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/task/ResumptionTaskBusiness.java

@@ -14,7 +14,7 @@ import com.xunmei.common.core.domain.DateRange;
 import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import com.xunmei.common.core.enums.CycleCommonEnum;
 import com.xunmei.common.core.enums.ExecTimeCommonEnum;
-import com.xunmei.common.core.enums.OrgTypeEnum;
+import com.xunmei.common.core.enums.resumption.ResumptionTaskStatus;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.utils.StringUtils;
 import com.xunmei.common.core.utils.Ymd;
@@ -23,7 +23,6 @@ import com.xunmei.core.resumption.domain.AppPlan;
 import com.xunmei.core.resumption.domain.Resumption;
 import com.xunmei.core.resumption.mapper.AppPlanMapper;
 import com.xunmei.core.resumption.mapper.ResumptionMapper;
-import com.xunmei.core.resumption.service.AppPlanService;
 import com.xunmei.core.resumption.service.IAppRulePointService;
 import com.xunmei.core.resumption.service.ResumptionService;
 import com.xunmei.core.resumption.vo.AppRulePointTaskVo;
@@ -43,7 +42,7 @@ import java.util.stream.Collectors;
 @Component
 @Slf4j
 public class ResumptionTaskBusiness extends TaskCreatingServiceImplBase<ResumptionMapper, Resumption>
-implements  ResumptionTaskBusinessService{
+        implements ResumptionTaskBusinessService {
     @Autowired
     private AppPlanMapper appPlanMapper;
 
@@ -96,8 +95,8 @@ implements  ResumptionTaskBusinessService{
                 continue;
             }
             //获取履职计划中对应的检查要点
-            List<AppRulePointTaskVo> pointList = appRulePointService.findPointByPlan(appPlan.getId());
-            if (pointList.size() <= 0) {//没有检查项不生成履职任务
+            Integer pointCount = appRulePointService.countPointByPlan(appPlan.getId());
+            if (ObjectUtil.equal(pointCount, 0)) {//没有检查项不生成履职任务
                 log.info("error:该计划ID:" + appPlan.getId() + "没有检查项");
                 continue;
             }
@@ -119,12 +118,15 @@ implements  ResumptionTaskBusinessService{
             DateRange range = DateUtils.getStartAndEnd(date, cycleCommonEnum);
             Map<Long, List<SysWorkTime>> workTimes = orgDutyOrWorkTimes(new Date(), cycleCommonEnum, orgs.stream().map(SysOrg::getId).collect(Collectors.toList()));
 
+            List<Resumption> existTasks = queryTask(range.getStartTime(), range.getEndTime(), CycleCommonEnum.getEnum(appPlan.getPlanCycle()), execOrgIds, Arrays.asList(appPlan.getSolidId()));
+
             for (SysOrg org : orgs) {
                 List<Resumption> tasks;
+                List<Short> executedTimes = existTasks.stream().filter(t -> ObjectUtil.equal(t.getOrgId(), org.getId())).map(t -> t.getTimes()).collect(Collectors.toList());
                 if (ObjectUtil.equal(CycleCommonEnum.DAILY.getCode(), appPlan.getPlanCycle())) {
-                    tasks = buildResumptions(appPlan, org, null, new Date(), workTimes);
+                    tasks = buildResumptions(appPlan, org, executedTimes, new Date(), workTimes);
                 } else {
-                    tasks = buildResumptions(appPlan, org, range.getStartTime(), range.getEndTime(), null, workTimes);
+                    tasks = buildResumptions(appPlan, org, range.getStartTime(), range.getEndTime(), executedTimes, workTimes);
                 }
 
                 if (CollectionUtils.isNotEmpty(tasks)) {
@@ -159,7 +161,7 @@ implements  ResumptionTaskBusinessService{
         }
         List<Long> hsOrgIds = getHangsheOrgIds();
         Set<Long> sOrgIds = new HashSet<>();
-        if(ObjectUtil.isNotEmpty(hsOrgIds)){
+        if (ObjectUtil.isNotEmpty(hsOrgIds)) {
             sOrgIds.addAll(hsOrgIds);
         }
         List<AppPlan> appPlans = new ArrayList<>();
@@ -172,10 +174,12 @@ implements  ResumptionTaskBusinessService{
             if (!sOrgIds.contains(p.getPlanOfOrgId())) {
                 continue;
             }
-            if (ObjectUtil.equal(p.getTaskHasCompleted(), 1)) {
+//            if (ObjectUtil.equal(p.getTaskHasCompleted(), 1)) {
+//                continue;
+//            }
+            if (ObjectUtil.isNull(p.getPlanStatus()) || ObjectUtil.equal(p.getPlanStatus(), 0)) {
                 continue;
             }
-
             appPlans.add(p);
         }
 
@@ -183,14 +187,19 @@ implements  ResumptionTaskBusinessService{
             return;
         }
 
-
-        //删除没有已完成计划下的所有任务
+        //删除本周期未完成任务
+        Date workDate = new Date();
+        DateRange dr = DateUtils.getStartAndEnd(workDate, appPlans.stream().findFirst().get().getPlanCycle());
         LambdaUpdateWrapper<Resumption> wrapper = new LambdaUpdateWrapper<>();
-        wrapper.in(Resumption::getPlanId, appPlans.stream().map(p -> p.getId()).collect(Collectors.toList()));
+        wrapper.ge(Resumption::getYmdDate, dr.getStartTime())
+                .le(Resumption::getYmdDate, dr.getEndTime())
+                .ne(Resumption::getStatus, ResumptionTaskStatus.Completed.getCode())
+                .in(Resumption::getSolidId, appPlans.stream().map(p -> p.getSolidId()).collect(Collectors.toList()));
         baseMapper.delete(wrapper);
 
+
 //        AppPlan plan = appPlans.get(0);
-        Date workDate = new Date();
+
 //        CycleCommonEnum cycle = CycleCommonEnum.getEnum(plan.getPlanCycle());
 //        DateRange range = DateUtils.getStartAndEnd(workDate, cycle);
 
@@ -202,6 +211,7 @@ implements  ResumptionTaskBusinessService{
 //            baseMapper.deleteBatchIds(deleteIds);
 //        }
 
+
         buildTask(null, appPlans, workDate);
     }
 
@@ -339,7 +349,7 @@ implements  ResumptionTaskBusinessService{
 //                List<AppPlanToRole> planToRoles = appPlanToRoles.stream().filter(item -> item.getPlanId().equals(plan.getId())).collect(Collectors.toList());
 
                 List<Short> executedOrders = executedResumptionList.stream()
-                        .filter(r -> ObjectUtil.equal(r.getOrgId(), orgId) && ObjectUtil.equal(r.getPlanId(), plan.getId()))
+                        .filter(r -> ObjectUtil.equal(r.getOrgId(), orgId) && ObjectUtil.equal(r.getSolidId(), plan.getSolidId()))
                         .map(Resumption::getTimes)
                         .collect(Collectors.toList());
 
@@ -511,7 +521,7 @@ implements  ResumptionTaskBusinessService{
 
         short realOrder = 0;
         Set<Short> ex = new HashSet<>();
-        if(ObjectUtil.isNotEmpty(executedOrders)){
+        if (ObjectUtil.isNotEmpty(executedOrders)) {
             ex.addAll(executedOrders);
         }
         for (Short i = 1; i <= count; i++) {
@@ -557,7 +567,7 @@ implements  ResumptionTaskBusinessService{
         return resumptionList;
     }
 
-    private List<Resumption> queryTask(Date startDate, Date endDate, CycleCommonEnum cycle, List<Long> orgIds, List<Long> planIds) {
+    private List<Resumption> queryTask(Date startDate, Date endDate, CycleCommonEnum cycle, List<Long> orgIds, List<Long> planSolidIds) {
         QueryWrapper<Resumption> queryWrapper = new QueryWrapper<>();
         Date start = DateUtil.beginOfDay(startDate);
         Date end = DateUtil.endOfDay(endDate);
@@ -566,8 +576,8 @@ implements  ResumptionTaskBusinessService{
         if (CollectionUtils.isNotEmpty(orgIds)) {
             queryWrapper.lambda().in(Resumption::getOrgId, orgIds);
         }
-        if (CollectionUtils.isNotEmpty(planIds)) {
-            queryWrapper.lambda().in(Resumption::getPlanId, planIds);
+        if (CollectionUtils.isNotEmpty(planSolidIds)) {
+            queryWrapper.lambda().in(Resumption::getSolidId, planSolidIds);
         }
         queryWrapper.lambda().eq(Resumption::getType, cycle.getCode());
 

+ 10 - 5
soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppPlanMapper.xml

@@ -421,13 +421,12 @@
               from core_resumption_plan_to_point a
                        LEFT JOIN core_resumption_rule_point b on a.point_id = b.id
                        LEFT JOIN core_resumption_rule_item c on b.item_id = c.id
-              where a.plan_id = #{planId}
-                and a.effective_date &lt; #{startDate}) q
+              where a.plan_id = #{planId}) q
                  LEFT JOIN sys_area w on q.area_id = w.id
     </select>
     <update id="updateParentPlanCompletedState">
         UPDATE core_resumption_plan
-        SET task_has_completed = (SELECT c
+        SET task_has_completed = (SELECT if(c>0,1,0)
                                   from (SELECT count(0) as c
                                         from core_resumption_plan
                                         WHERE parent_id = #{planId}
@@ -461,7 +460,7 @@
                `check_org_type`,
                `check_type`,
                `distribute_plan_status`,
-               `deleted`,
+               0,
                `distribute`,
                `build_task_now`,
                `plan_of_org_type`,
@@ -496,7 +495,7 @@
                `check_org_type`,
                `check_type`,
                `distribute_plan_status`,
-               `deleted`,
+               0,
                `distribute`,
                `build_task_now`,
                `plan_of_org_type`,
@@ -530,4 +529,10 @@
         FROM core_resumption_plan_to_exec_org
         WHERE plan_id =#{planId}
     </insert>
+    <delete id="physicsDeleteById">
+        delete  from core_resumption_plan where id  in
+        <foreach collection="ids" item="id" open="(" close=")" separator=",">
+            #{id}
+        </foreach>;
+    </delete>
 </mapper>

+ 7 - 0
soc-modules/soc-modules-core/src/main/resources/mapper/resumption/AppRulePointMapper.xml

@@ -59,6 +59,13 @@
                  LEFT JOIN core_resumption_plan c ON b.plan_id = c.id
         WHERE c.id = #{planid}
     </select>
+    <select id="countPointByPlan" parameterType="Long" resultType="Integer">
+        SELECT count(0)
+        from core_resumption_rule_point a
+                 LEFT JOIN core_resumption_plan_to_point b ON a.id = b.point_id
+                 LEFT JOIN core_resumption_plan c ON b.plan_id = c.id
+        WHERE c.id = #{planid}
+    </select>
     <select id="selectPointListByIdList" resultType="com.xunmei.core.resumption.dto.rulePoint.AppRulePointInfoDto"
             parameterType="java.util.List">
         select