Bladeren bron

实现履职任务重新生成

jiawuxian 2 jaren geleden
bovenliggende
commit
29fbe90b8e
24 gewijzigde bestanden met toevoegingen van 559 en 192 verwijderingen
  1. 1 2
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteWorkTimeService.java
  2. 1 3
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteWorkTimesFallbackFactory.java
  3. 1 1
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/worktime/domain/SysWorkTime.java
  4. 5 4
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/event/WorkTimeChangeEvent.java
  5. 67 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/TaskCreatingServiceImplBase.java
  6. 1 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/service/impl/CoreEduTrainingTaskServiceImpl.java
  8. 27 2
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/listener/WorkTimeChangeEventListener.java
  9. 16 7
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/TaskController.java
  10. 3 3
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/listener/WorkTimeChangeEventListener.java
  11. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/ResumptionService.java
  12. 112 111
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/ResumptionServiceImpl.java
  13. 260 0
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/task/RebuildResumptionTaskBusiness.java
  14. 1 1
      soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/task/ResumptionTaskBusiness.java
  15. 1 1
      soc-modules/soc-modules-core/src/test/java/com/test/TestController.java
  16. 5 2
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysWorkTimeController.java
  17. 8 2
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/WorkTimeMonthOnAppController.java
  18. 1 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/dto/SysWorkTimeDto.java
  19. 1 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/dto/WorkTimeMonthEditNewDto.java
  20. 1 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysWorkTimeMapper.java
  21. 2 2
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysWorkTimeService.java
  22. 34 36
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysWorkTimeServiceImpl.java
  23. 1 1
      soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysWorkTimeSetServiceImpl.java
  24. 8 8
      soc-modules/soc-modules-system/src/main/resources/mapper/system/SysWorkTimeMapper.xml

+ 1 - 2
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteWorkTimeService.java

@@ -5,8 +5,7 @@ import com.xunmei.common.core.constant.ServiceNameConstants;
 import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.domain.worktime.dto.WorkTimeDto;
 import com.xunmei.common.core.utils.Ymd;
-import com.xunmei.common.core.web.domain.AjaxResult;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import com.xunmei.system.api.factory.RemoteWorkTimesFallbackFactory;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.*;

+ 1 - 3
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/factory/RemoteWorkTimesFallbackFactory.java

@@ -3,14 +3,12 @@ package com.xunmei.system.api.factory;
 import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.domain.worktime.dto.WorkTimeDto;
 import com.xunmei.common.core.utils.Ymd;
-import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.system.api.RemoteWorkTimeService;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.cloud.openfeign.FallbackFactory;
 import org.springframework.stereotype.Component;
-import org.springframework.web.bind.annotation.PostMapping;
 
 import java.util.Date;
 import java.util.List;

+ 1 - 1
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/domain/SysWorkTime.java → soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/worktime/domain/SysWorkTime.java

@@ -1,4 +1,4 @@
-package com.xunmei.system.api.domain;
+package com.xunmei.common.core.domain.worktime.domain;
 
 import java.util.Date;
 

+ 5 - 4
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/event/WorkTimeChangeEvent.java

@@ -1,5 +1,6 @@
 package com.xunmei.common.core.event;
 
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import org.springframework.context.ApplicationEvent;
@@ -13,14 +14,14 @@ public class WorkTimeChangeEvent extends ApplicationEvent {
     @ApiModelProperty(value = "机构id数组", notes = "受影响的机构")
     private final List<Long> orgIds;
 
-   /* @ApiModelProperty(value = "作息时间列表", notes = "受影响的作息时间列表")
-    private final List<SysWorkTime> dataList;*/
+    @ApiModelProperty(value = "作息时间列表", notes = "受影响的作息时间列表")
+    private List<SysWorkTime> dataList;
 
 
-    public WorkTimeChangeEvent(Object source, List<Long> orgIds/*, List<SysWorkTime> dataList*/) {
+    public WorkTimeChangeEvent(Object source, List<Long> orgIds, List<SysWorkTime> dataList) {
         super(source);
         this.orgIds = orgIds;
-      //  this.dataList = dataList;
+        this.dataList = dataList;
     }
 
 }

+ 67 - 1
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/TaskCreatingServiceImplBase.java

@@ -1,6 +1,7 @@
 package com.xunmei.core;
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -12,7 +13,7 @@ import com.xunmei.common.core.event.WorkTimeChangeEvent;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.enums.CycleCommonEnum;
 import com.xunmei.system.api.RemoteWorkTimeService;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import java.util.*;
@@ -50,4 +51,69 @@ public abstract class TaskCreatingServiceImplBase<M extends BaseMapper<T>, T> ex
         });
         return r;
     }
+
+    public void rebuildTask(WorkTimeChangeEvent timeChangeEvent) {
+        if(containCurrentCycle(timeChangeEvent.getDataList(),CycleCommonEnum.DAILY)){
+            SysWorkTime today= timeChangeEvent.getDataList().stream().filter(d->d.getYmdDate().equals (DateUtil.beginOfDay(new Date()) )).findFirst().get();
+            rebuildDayTask(timeChangeEvent.getOrgIds(), today);
+        }
+
+        if(containCurrentCycle(timeChangeEvent.getDataList(),CycleCommonEnum.WEEKLY)){
+            DateRange range = DateUtils.getStartAndEnd(new Date(), CycleCommonEnum.WEEKLY);
+            rebuildWeeklyTask(timeChangeEvent.getOrgIds(),range.getStartTime(),range.getEndTime());
+        }
+
+        if(containCurrentCycle(timeChangeEvent.getDataList(),CycleCommonEnum.MONTHLY)){
+            DateRange range = DateUtils.getStartAndEnd(new Date(), CycleCommonEnum.MONTHLY);
+            rebuildMonthTask(timeChangeEvent.getOrgIds(),range.getStartTime(),range.getEndTime());
+        }
+
+        if(containCurrentCycle(timeChangeEvent.getDataList(),CycleCommonEnum.QUARTERLY)){
+            DateRange range = DateUtils.getStartAndEnd(new Date(), CycleCommonEnum.QUARTERLY);
+            rebuildQuarterTask(timeChangeEvent.getOrgIds(),range.getStartTime(),range.getEndTime());
+        }
+
+        if(containCurrentCycle(timeChangeEvent.getDataList(),CycleCommonEnum.HALF_YEARLY)){
+            DateRange range = DateUtils.getStartAndEnd(new Date(), CycleCommonEnum.HALF_YEARLY);
+            rebuildHalfYearTask(timeChangeEvent.getOrgIds(),range.getStartTime(),range.getEndTime());
+        }
+
+        if(containCurrentCycle(timeChangeEvent.getDataList(),CycleCommonEnum.YEARLY)){
+            DateRange range = DateUtils.getStartAndEnd(new Date(), CycleCommonEnum.YEARLY);
+            rebuildYearTask(timeChangeEvent.getOrgIds(),range.getStartTime(),range.getEndTime());
+        }
+    }
+
+    private Boolean containCurrentCycle(List<SysWorkTime> workTimes, CycleCommonEnum cycle) {
+        DateRange range = DateUtils.getStartAndEnd(new Date(), cycle);
+        Date start = range.getStartTime();
+        Date end = range.getEndTime();
+        if (start.after(end)) {
+            return false;
+        }
+        Set<Long> timeValues = workTimes.stream().map(t -> t.getYmdDate().getTime()).collect(Collectors.toSet());
+        while (true) {
+            if (timeValues.contains(start.getTime())) {
+                return true;
+            }
+
+            if (start.equals(end) || start.after(end)) {
+                return false;
+            }
+
+            start = DateUtil.offset(start, DateField.DAY_OF_YEAR, 1);
+        }
+    }
+
+    public  void rebuildDayTask(List<Long> orgIds, SysWorkTime workTime){}
+
+    public  void rebuildWeeklyTask(List<Long> orgIds, Date startDate, Date endDate){}
+
+    public  void rebuildMonthTask(List<Long> orgIds, Date startDate, Date endDate){}
+
+    public  void rebuildQuarterTask(List<Long> orgIds, Date startDate, Date endDate){}
+
+    public  void rebuildHalfYearTask(List<Long> orgIds, Date startDate, Date endDate){}
+
+    public  void rebuildYearTask(List<Long> orgIds, Date startDate, Date endDate){}
 }

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

@@ -20,6 +20,7 @@ import com.xunmei.common.core.domain.drill.vo.*;
 import com.xunmei.common.core.domain.panel.dto.PanelListDto;
 import com.xunmei.common.core.domain.panel.enums.PanelTypeEnums;
 import com.xunmei.common.core.domain.panel.vo.PanelListVo;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import com.xunmei.common.core.domain.worktime.dto.WorkTimeDto;
 import com.xunmei.common.core.enums.CycleCommonEnum;
 import com.xunmei.common.core.enums.EduTrainingPlanCycleEnum;

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

@@ -52,7 +52,7 @@ import com.xunmei.system.api.RemoteRoleService;
 import com.xunmei.system.api.RemoteWorkTimeService;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.SysUser;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import com.xunmei.system.api.function.RemoteCallHandlerExecutor;
 import io.netty.util.internal.StringUtil;
 import lombok.extern.slf4j.Slf4j;

+ 27 - 2
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/listener/WorkTimeChangeEventListener.java

@@ -2,6 +2,8 @@ package com.xunmei.core.listener;
 
 import com.xunmei.common.core.event.WorkTimeChangeEvent;
 import com.xunmei.core.edu.service.ICoreEduTrainingTaskService;
+import com.xunmei.core.resumption.task.RebuildResumptionTaskBusiness;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationListener;
 import org.springframework.context.event.EventListener;
@@ -10,18 +12,41 @@ import org.springframework.transaction.event.TransactionPhase;
 import org.springframework.transaction.event.TransactionalEventListener;
 
 @Component
+@Slf4j
 public class WorkTimeChangeEventListener implements ApplicationListener<WorkTimeChangeEvent> {
 
     @Autowired
     private ICoreEduTrainingTaskService coreEduTrainingTaskService;
 
+    @Autowired
+    private RebuildResumptionTaskBusiness rebuildResumptionTaskBusiness;
+
     @Override
     @EventListener(WorkTimeChangeEvent.class)
-    @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT,fallbackExecution = true)
+    @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT, fallbackExecution = true)
     public void onApplicationEvent(WorkTimeChangeEvent event) {
+        eduTask(event);
+        resumptionTask(event);
+    }
 
-        coreEduTrainingTaskService.taskChangeForTimeWorkChange(event);
+    private void eduTask(WorkTimeChangeEvent event) {
+        try {
+            log.info("教育培训开始处理机构作息变更");
+            coreEduTrainingTaskService.taskChangeForTimeWorkChange(event);
+            log.info("教育培训结束处理机构作息变更");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
 
+    }
 
+    private void resumptionTask(WorkTimeChangeEvent event) {
+        try {
+            log.info("履职开始处理机构作息变更");
+            rebuildResumptionTaskBusiness.rebuildTask(event);
+            log.info("履职结束处理机构作息变更");
+        } catch (Exception e) {
+            log.error(e.getMessage(), e);
+        }
     }
 }

+ 16 - 7
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/controller/TaskController.java

@@ -3,7 +3,7 @@ package com.xunmei.core.resumption.controller;
 import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.nacos.shaded.com.google.gson.Gson;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.xunmei.common.core.constant.SecurityConstants;
@@ -18,11 +18,12 @@ import com.xunmei.core.resumption.domain.AppPlan;
 import com.xunmei.core.resumption.dto.doTaskDto;
 import com.xunmei.core.resumption.service.AppPlanService;
 import com.xunmei.core.resumption.service.ResumptionService;
+import com.xunmei.core.resumption.task.RebuildResumptionTaskBusiness;
 import com.xunmei.core.resumption.task.ResumptionTaskBusiness;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.RemoteWorkTimeService;
 import com.xunmei.system.api.domain.SysOrg;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -50,6 +51,9 @@ public class TaskController {
     @Autowired
     private ResumptionService resumptionService;
 
+    @Autowired
+    RebuildResumptionTaskBusiness rebuildTaskBusiness;
+
     @GetMapping("/dayTask")
     public AjaxResult dayTask() {
 
@@ -136,14 +140,19 @@ public class TaskController {
             this.createNewResumptionByOrgAndPlan(orgIds, planIds, datetime);
         }
     }
+
     @InnerAuth
-    @PostMapping ("/dayTaskByWorkTime")
-    public AjaxResult dayTaskByWorkTime(@RequestBody  Map<String,Object> params) {
+    @PostMapping("/dayTaskByWorkTime")
+    public AjaxResult dayTaskByWorkTime(@RequestBody Map<String, Object> params) {
         try {
-            resumptionService.dayTaskByWorkTime(params);
+            Gson gson = new Gson();
+            SysWorkTime workTime = gson.fromJson((String) params.get("sysWorkTime"), SysWorkTime.class);
+            //SysWorkTime workTime = params.get("sysWorkTime");
+            List<Long> orgIds = (List<Long>) params.get("orgIds");
+            rebuildTaskBusiness.rebuildDayTask(orgIds, workTime);
             return AjaxResult.success("任务生成成功");
-        }catch (Exception e){
-            return  AjaxResult.error("任务生成失败");
+        } catch (Exception e) {
+            return AjaxResult.error("任务生成失败");
         }
     }
 

+ 3 - 3
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/listener/WorkTimeChangeEventListener.java

@@ -1,7 +1,7 @@
 package com.xunmei.core.resumption.listener;
 
 import com.xunmei.common.core.event.WorkTimeChangeEvent;
-import com.xunmei.core.edu.service.ICoreEduTrainingTaskService;
+import com.xunmei.core.resumption.task.RebuildResumptionTaskBusiness;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationListener;
 import org.springframework.context.event.EventListener;
@@ -13,14 +13,14 @@ import org.springframework.transaction.event.TransactionalEventListener;
 public class WorkTimeChangeEventListener implements ApplicationListener<WorkTimeChangeEvent> {
 
     @Autowired
-    private ICoreEduTrainingTaskService coreEduTrainingTaskService;
+    private RebuildResumptionTaskBusiness rebuildTaskBusiness;
 
     @Override
     @EventListener(WorkTimeChangeEvent.class)
     @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
     public void onApplicationEvent(WorkTimeChangeEvent event) {
 
-        coreEduTrainingTaskService.taskChangeForTimeWorkChange(event);
+        rebuildTaskBusiness.rebuildTask(event);
 
 
     }

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

@@ -46,7 +46,7 @@ public interface ResumptionService extends IService<Resumption> {
 
     List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto);
 
-    void dayTaskByWorkTime(Map<String, Object> params);
+//    void dayTaskByWorkTime(Map<String, Object> params);
 
     List<CoreSafetyExceptionData> findResumptionList(DateTime time);
 }

+ 112 - 111
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/service/impl/ResumptionServiceImpl.java

@@ -16,6 +16,7 @@ import com.xunmei.common.core.domain.safetyindex.domain.CoreSafetyExceptionData;
 import com.xunmei.common.core.utils.DateHelper;
 import com.xunmei.common.core.utils.ResumptionType;
 import com.xunmei.common.core.utils.Ymd;
+import com.xunmei.core.TaskCreatingServiceImplBase;
 import com.xunmei.core.resumption.domain.AppPlan;
 import com.xunmei.core.resumption.domain.AppPlanToRole;
 import com.xunmei.core.resumption.domain.Resumption;
@@ -31,7 +32,7 @@ import com.xunmei.core.resumption.vo.ResumptionTaskNewDto;
 import com.xunmei.core.resumption.vo.WorkChangeResumptionVo;
 import com.xunmei.system.api.RemoteRoleService;
 import com.xunmei.system.api.domain.SysRole;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
@@ -191,117 +192,117 @@ public class ResumptionServiceImpl extends ServiceImpl<ResumptionMapper, Resumpt
         return list;
     }
 
-    @Override
-    public void dayTaskByWorkTime(Map<String, Object> params) {
-        try {
-            Gson gson = new Gson();
-            SysWorkTime workTime = gson.fromJson((String) params.get("sysWorkTime"), SysWorkTime.class);
-            //SysWorkTime workTime = params.get("sysWorkTime");
-            List<Long> orgIds = (List<Long>) params.get("orgIds");
-            //按机构删除当天的每日履职
-            QueryWrapper<Resumption> queryWrapper = new QueryWrapper<>();
-            queryWrapper.lambda().eq(Resumption::getYmdDate, workTime.getYmdDate());
-            queryWrapper.lambda().in(Resumption::getOrgId, orgIds);
-            //待履职,进行中
-            //queryWrapper.lambda().in(Resumption::getStatus,  1, 2);
-            //每日任务
-            queryWrapper.lambda().eq(Resumption::getType, 2);
-            List<Resumption> resumptionList = resumptionMapper.selectList(queryWrapper);
-            List<Resumption> resumptionListYlz = resumptionList.stream().filter(item -> item.getStatus() == 3).collect(Collectors.toList());
-            if (CollectionUtils.isNotEmpty(resumptionList)) {
-                //取出未履职的数据(待履职,进行中)
-                List<Resumption> resumptionListWlz = resumptionList.stream().filter(item -> item.getStatus() == 1 || item.getStatus() == 2).collect(Collectors.toList());
-                //删除这些数据
-                if (CollectionUtils.isNotEmpty(resumptionListWlz)) {
-                    resumptionMapper.deleteBatchIds(resumptionListWlz.stream().map(Resumption::getId).collect(Collectors.toList()));
-                }
-            }
-
-            //营业重新生成任务
-            if (workTime.getIsEnable() == 1) {
-                QueryWrapper<AppPlan> qw = new QueryWrapper<>();
-                qw.lambda().eq(AppPlan::getPlanStatus, 1);
-                qw.lambda().in(AppPlan::getPlanOfOrgId, orgIds);
-                List<AppPlan> listPlans = appPlanMapper.selectList(qw);
-                //通过计划id获取计划关系的角色
-                if (CollectionUtils.isNotEmpty(listPlans)) {
-                    List<Long> planIds = listPlans.stream().map(AppPlan::getId).collect(Collectors.toList());
-                    List<AppPlanToRole> appPlanToRoles = appPlanToRoleMapper.selectList(new QueryWrapper<AppPlanToRole>().lambda().in(AppPlanToRole::getPlanId, planIds));
-                    List<Resumption> newResumptionList = new ArrayList<>();
-                    for (AppPlan plan : listPlans) {
-                        //根据计划获取角色
-                        List<AppPlanToRole> planToRoles = appPlanToRoles.stream().filter(item -> item.getPlanId().equals(plan.getId())).collect(Collectors.toList());
-                        List<Resumption> resumptionLista = this.buildResumptions(plan, planToRoles, workTime);
-                        if (CollectionUtils.isNotEmpty(resumptionLista)) {
-                            //根据planId和roleId是否判断resumptionLista中的数据是否在resumptionListYlz中
-                            List<Resumption> resumptionListb = resumptionLista.stream().filter(item -> !resumptionListYlz.stream().filter(item1 -> item1.getPlanId().equals(item.getPlanId())
-                                    && item1.getRoleId().equals(item.getRoleId())).findFirst().isPresent()).collect(Collectors.toList());
-                            if (CollectionUtils.isNotEmpty(resumptionListb)) {
-                                newResumptionList.addAll(resumptionListb);
-                            }
-                        }
-                    }
-                    this.saveBatch(newResumptionList);
-                }
-
-
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    private List<Resumption> buildResumptions(AppPlan appPlan, List<AppPlanToRole> planToRoles, SysWorkTime workTime) {
-        List<Resumption> resumptionList = new ArrayList<>();
-        DateTime dateTime = new DateTime(workTime.getYmdDate());
-        String opentime = workTime.getOpenTime();//营业时间
-        String closetime = workTime.getCloseTime();//营业终了
-        DateTime planstartTime = null;
-        DateTime planendTime = null;
-
-        DateTime time1 = new DateTime(dateTime);
-        time1.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
-        DateTime time2 = new DateTime(dateTime);
-        time2.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+//    @Override
+//    public void dayTaskByWorkTime(Map<String, Object> params) {
+//        try {
+//            Gson gson = new Gson();
+//            SysWorkTime workTime = gson.fromJson((String) params.get("sysWorkTime"), SysWorkTime.class);
+//            //SysWorkTime workTime = params.get("sysWorkTime");
+//            List<Long> orgIds = (List<Long>) params.get("orgIds");
+//            //按机构删除当天的每日履职
+//            QueryWrapper<Resumption> queryWrapper = new QueryWrapper<>();
+//            queryWrapper.lambda().eq(Resumption::getYmdDate, workTime.getYmdDate());
+//            queryWrapper.lambda().in(Resumption::getOrgId, orgIds);
+//            //待履职,进行中
+//            //queryWrapper.lambda().in(Resumption::getStatus,  1, 2);
+//            //每日任务
+//            queryWrapper.lambda().eq(Resumption::getType, 2);
+//            List<Resumption> resumptionList = resumptionMapper.selectList(queryWrapper);
+//            List<Resumption> resumptionListYlz = resumptionList.stream().filter(item -> item.getStatus() == 3).collect(Collectors.toList());
+//            if (CollectionUtils.isNotEmpty(resumptionList)) {
+//                //取出未履职的数据(待履职,进行中)
+//                List<Resumption> resumptionListWlz = resumptionList.stream().filter(item -> item.getStatus() == 1 || item.getStatus() == 2).collect(Collectors.toList());
+//                //删除这些数据
+//                if (CollectionUtils.isNotEmpty(resumptionListWlz)) {
+//                    resumptionMapper.deleteBatchIds(resumptionListWlz.stream().map(Resumption::getId).collect(Collectors.toList()));
+//                }
+//            }
+//
+//            //营业重新生成任务
+//            if (workTime.getIsEnable() == 1) {
+//                QueryWrapper<AppPlan> qw = new QueryWrapper<>();
+//                qw.lambda().eq(AppPlan::getPlanStatus, 1);
+//                qw.lambda().in(AppPlan::getPlanOfOrgId, orgIds);
+//                List<AppPlan> listPlans = appPlanMapper.selectList(qw);
+//                //通过计划id获取计划关系的角色
+//                if (CollectionUtils.isNotEmpty(listPlans)) {
+//                    List<Long> planIds = listPlans.stream().map(AppPlan::getId).collect(Collectors.toList());
+//                    List<AppPlanToRole> appPlanToRoles = appPlanToRoleMapper.selectList(new QueryWrapper<AppPlanToRole>().lambda().in(AppPlanToRole::getPlanId, planIds));
+//                    List<Resumption> newResumptionList = new ArrayList<>();
+//                    for (AppPlan plan : listPlans) {
+//                        //根据计划获取角色
+//                        List<AppPlanToRole> planToRoles = appPlanToRoles.stream().filter(item -> item.getPlanId().equals(plan.getId())).collect(Collectors.toList());
+//                        List<Resumption> resumptionLista = this.buildResumptions(plan, planToRoles, workTime);
+//                        if (CollectionUtils.isNotEmpty(resumptionLista)) {
+//                            //根据planId和roleId是否判断resumptionLista中的数据是否在resumptionListYlz中
+//                            List<Resumption> resumptionListb = resumptionLista.stream().filter(item -> !resumptionListYlz.stream().filter(item1 -> item1.getPlanId().equals(item.getPlanId())
+//                                    && item1.getRoleId().equals(item.getRoleId())).findFirst().isPresent()).collect(Collectors.toList());
+//                            if (CollectionUtils.isNotEmpty(resumptionListb)) {
+//                                newResumptionList.addAll(resumptionListb);
+//                            }
+//                        }
+//                    }
+//                    this.saveBatch(newResumptionList);
+//                }
+//
+//
+//            }
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//    }
 
-        if (appPlan.getPlanExec() == 1) {//全天 上班时间-下班时间 00:00:00-23:59:59
-            planstartTime = time1.setField(DateField.HOUR_OF_DAY, 0).setField(DateField.MINUTE, 0).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
-            planendTime = DateUtil.endOfDay(time2).setField(DateField.MILLISECOND, 0);
-        } else if (appPlan.getPlanExec() == 2) {//营业前 上班时间-营业时间
-            planstartTime = time1.setField(DateField.HOUR_OF_DAY, 0).setField(DateField.MINUTE, 0).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
-            planendTime = time2.setField(DateField.HOUR_OF_DAY, Integer.parseInt(opentime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(opentime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
-        } else if (appPlan.getPlanExec() == 3) {//营业期间 营业时间-营业终了
-            planstartTime = time1.setField(DateField.HOUR_OF_DAY, Integer.parseInt(opentime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(opentime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
-            planendTime = time2.setField(DateField.HOUR_OF_DAY, Integer.parseInt(closetime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(closetime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
-        } else if (appPlan.getPlanExec() == 4) {//营业终 营业终了-23.59.59
-            planstartTime = time1.setField(DateField.HOUR_OF_DAY, Integer.parseInt(closetime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(closetime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
-            planendTime = DateUtil.endOfDay(time2).setField(DateField.MILLISECOND, 0);
-        }
-        for (AppPlanToRole role : planToRoles) {
-            Resumption resumption = new Resumption();
-            Ymd ymd = Ymd.of(dateTime);
-            resumption.setStatus(1);
-            resumption.setYmd(ymd);
-            resumption.setName(appPlan.getPlanName());
-            resumption.setYmdDate(ymd.getDate());
-            resumption.setYmdDay(Long.valueOf(ymd.getDay()));
-            resumption.setYmdMonth(Long.valueOf(ymd.getMonth()));
-            resumption.setYmdWeek(Long.valueOf(ymd.getWeek()));
-            resumption.setYmdYear(Long.valueOf(ymd.getYear()));
-            resumption.setYmdHour(Long.valueOf(ymd.getHour()));
-            resumption.setYmdQuarter(Long.valueOf(ymd.getQuarter()));
-            resumption.setYmdHalfyear(Long.valueOf(ymd.getHalfyear()));
-            resumption.setPlanId((ObjectUtil.equal(appPlan.getParentId(), -1L) || ObjectUtil.isNull(appPlan.getParentId())) ? appPlan.getId() : appPlan.getParentId());
-            resumption.setOrgId(appPlan.getPlanOfOrgId());
-            resumption.setType(appPlan.getPlanCycle());
-            resumption.setRoleId(role.getRoleId());
-            resumption.setPlanStartTime(planstartTime);
-            resumption.setPlanEndTime(planendTime);
-            resumption.setCreateTime(new Date());
-            resumptionList.add(resumption);
-        }
-        return resumptionList;
-    }
+//    private List<Resumption> buildResumptions(AppPlan appPlan, List<AppPlanToRole> planToRoles, SysWorkTime workTime) {
+//        List<Resumption> resumptionList = new ArrayList<>();
+//        DateTime dateTime = new DateTime(workTime.getYmdDate());
+//        String opentime = workTime.getOpenTime();//营业时间
+//        String closetime = workTime.getCloseTime();//营业终了
+//        DateTime planstartTime = null;
+//        DateTime planendTime = null;
+//
+//        DateTime time1 = new DateTime(dateTime);
+//        time1.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+//        DateTime time2 = new DateTime(dateTime);
+//        time2.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+//
+//        if (appPlan.getPlanExec() == 1) {//全天 上班时间-下班时间 00:00:00-23:59:59
+//            planstartTime = time1.setField(DateField.HOUR_OF_DAY, 0).setField(DateField.MINUTE, 0).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+//            planendTime = DateUtil.endOfDay(time2).setField(DateField.MILLISECOND, 0);
+//        } else if (appPlan.getPlanExec() == 2) {//营业前 上班时间-营业时间
+//            planstartTime = time1.setField(DateField.HOUR_OF_DAY, 0).setField(DateField.MINUTE, 0).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+//            planendTime = time2.setField(DateField.HOUR_OF_DAY, Integer.parseInt(opentime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(opentime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+//        } else if (appPlan.getPlanExec() == 3) {//营业期间 营业时间-营业终了
+//            planstartTime = time1.setField(DateField.HOUR_OF_DAY, Integer.parseInt(opentime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(opentime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+//            planendTime = time2.setField(DateField.HOUR_OF_DAY, Integer.parseInt(closetime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(closetime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+//        } else if (appPlan.getPlanExec() == 4) {//营业终 营业终了-23.59.59
+//            planstartTime = time1.setField(DateField.HOUR_OF_DAY, Integer.parseInt(closetime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(closetime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+//            planendTime = DateUtil.endOfDay(time2).setField(DateField.MILLISECOND, 0);
+//        }
+//        for (AppPlanToRole role : planToRoles) {
+//            Resumption resumption = new Resumption();
+//            Ymd ymd = Ymd.of(dateTime);
+//            resumption.setStatus(1);
+//            resumption.setYmd(ymd);
+//            resumption.setName(appPlan.getPlanName());
+//            resumption.setYmdDate(ymd.getDate());
+//            resumption.setYmdDay(Long.valueOf(ymd.getDay()));
+//            resumption.setYmdMonth(Long.valueOf(ymd.getMonth()));
+//            resumption.setYmdWeek(Long.valueOf(ymd.getWeek()));
+//            resumption.setYmdYear(Long.valueOf(ymd.getYear()));
+//            resumption.setYmdHour(Long.valueOf(ymd.getHour()));
+//            resumption.setYmdQuarter(Long.valueOf(ymd.getQuarter()));
+//            resumption.setYmdHalfyear(Long.valueOf(ymd.getHalfyear()));
+//            resumption.setPlanId((ObjectUtil.equal(appPlan.getParentId(), -1L) || ObjectUtil.isNull(appPlan.getParentId())) ? appPlan.getId() : appPlan.getParentId());
+//            resumption.setOrgId(appPlan.getPlanOfOrgId());
+//            resumption.setType(appPlan.getPlanCycle());
+//            resumption.setRoleId(role.getRoleId());
+//            resumption.setPlanStartTime(planstartTime);
+//            resumption.setPlanEndTime(planendTime);
+//            resumption.setCreateTime(new Date());
+//            resumptionList.add(resumption);
+//        }
+//        return resumptionList;
+//    }
 
     @Override
     public List<CoreSafetyExceptionData> findResumptionList(DateTime time) {

+ 260 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/resumption/task/RebuildResumptionTaskBusiness.java

@@ -0,0 +1,260 @@
+package com.xunmei.core.resumption.task;
+
+import cn.hutool.core.collection.ListUtil;
+import cn.hutool.core.date.DateField;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.NumberUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
+import com.xunmei.common.core.enums.CycleCommonEnum;
+import com.xunmei.common.core.utils.Ymd;
+import com.xunmei.core.TaskCreatingServiceImplBase;
+import com.xunmei.core.resumption.domain.AppPlan;
+import com.xunmei.core.resumption.domain.AppPlanToRole;
+import com.xunmei.core.resumption.domain.Resumption;
+import com.xunmei.core.resumption.mapper.AppPlanMapper;
+import com.xunmei.core.resumption.mapper.AppPlanToRoleMapper;
+import com.xunmei.core.resumption.mapper.ResumptionMapper;
+import com.xunmei.system.api.RemoteOrgService;
+import com.xunmei.system.api.domain.SysOrg;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Component
+public class RebuildResumptionTaskBusiness extends TaskCreatingServiceImplBase<ResumptionMapper, Resumption> {
+    @Autowired
+    private AppPlanMapper appPlanMapper;
+
+    @Autowired
+    private AppPlanToRoleMapper appPlanToRoleMapper;
+
+    @Autowired
+    private RemoteOrgService remoteOrgService;
+
+    @Override
+    public void rebuildDayTask(List<Long> orgIds, SysWorkTime workTime) {
+        try {
+            List<Resumption> resumptionList = queryTask(workTime.getYmdDate(), CycleCommonEnum.DAILY, orgIds);
+            List<Resumption> resumptionListYlz = resumptionList.stream().filter(item -> item.getStatus() == 3).collect(Collectors.toList());
+            if (CollectionUtils.isNotEmpty(resumptionList)) {
+                //取出未履职的数据(待履职,进行中)
+                List<Resumption> resumptionListWlz = resumptionList.stream().filter(item -> item.getStatus() == 1 || item.getStatus() == 2).collect(Collectors.toList());
+                //删除这些数据
+                if (CollectionUtils.isNotEmpty(resumptionListWlz)) {
+                    baseMapper.deleteBatchIds(resumptionListWlz.stream().map(Resumption::getId).collect(Collectors.toList()));
+                }
+            }
+
+            //营业重新生成任务
+            if (workTime.getIsEnable() == 1) {
+                List<Long> hsOrgIds = remoteOrgService.selectParentHs(orgIds, SecurityConstants.INNER)
+                        .stream().map(SysOrg::getId)
+                        .collect(Collectors.toList());
+                List<AppPlan> listPlans = queryPlans(hsOrgIds, CycleCommonEnum.DAILY);
+                //通过计划id获取计划关系的角色
+                if (CollectionUtils.isNotEmpty(listPlans)) {
+                    List<Long> planIds = listPlans.stream().map(AppPlan::getId).collect(Collectors.toList());
+                    List<AppPlanToRole> appPlanToRoles = appPlanToRoleMapper.selectList(new QueryWrapper<AppPlanToRole>().lambda().in(AppPlanToRole::getPlanId, planIds));
+                    List<Resumption> newResumptionList = new ArrayList<>();
+                    for (AppPlan plan : listPlans) {
+                        //根据计划获取角色
+                        List<AppPlanToRole> planToRoles = appPlanToRoles.stream().filter(item -> item.getPlanId().equals(plan.getId())).collect(Collectors.toList());
+                        List<Resumption> resumptionLista = this.buildResumptions(plan, planToRoles, workTime);
+                        if (CollectionUtils.isNotEmpty(resumptionLista)) {
+                            //根据planId和roleId是否判断resumptionLista中的数据是否在resumptionListYlz中
+                            List<Resumption> resumptionListb = resumptionLista.stream().filter(item -> !resumptionListYlz.stream().filter(item1 -> item1.getPlanId().equals(item.getPlanId())
+                                    && item1.getRoleId().equals(item.getRoleId())).findFirst().isPresent()).collect(Collectors.toList());
+                            if (CollectionUtils.isNotEmpty(resumptionListb)) {
+                                newResumptionList.addAll(resumptionListb);
+                            }
+                        }
+                    }
+                    this.saveBatch(newResumptionList);
+                }
+
+
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Override
+    public void rebuildWeeklyTask(List<Long> orgIds, Date startDate, Date endDate) {
+        rebuildTask(orgIds,startDate,endDate,CycleCommonEnum.WEEKLY);
+    }
+
+
+    @Override
+    public void rebuildMonthTask(List<Long> orgIds, Date startDate, Date endDate) {
+        rebuildTask(orgIds,startDate,endDate,CycleCommonEnum.MONTHLY);
+    }
+
+    @Override
+    public void rebuildQuarterTask(List<Long> orgIds, Date startDate, Date endDate) {
+        rebuildTask(orgIds,startDate,endDate,CycleCommonEnum.QUARTERLY);
+    }
+
+    @Override
+    public void rebuildHalfYearTask(List<Long> orgIds, Date startDate, Date endDate) {
+        rebuildTask(orgIds,startDate,endDate,CycleCommonEnum.HALF_YEARLY);
+    }
+
+    @Override
+    public void rebuildYearTask(List<Long> orgIds, Date startDate, Date endDate) {
+        rebuildTask(orgIds,startDate,endDate,CycleCommonEnum.YEARLY);
+    }
+    private void rebuildTask(List<Long> orgIds, Date startDate, Date endDate, CycleCommonEnum cycle) {
+        List<Resumption> resumptionList = queryTask(startDate, cycle, orgIds);
+        List<Long> deleteIds = resumptionList.stream()
+                .filter(r -> (ObjectUtil.equal(r.getStatus(), 1) || ObjectUtil.equal(r.getStatus(), 2)))
+                .map(Resumption::getId).collect(Collectors.toList());
+        if (CollectionUtils.isNotEmpty(deleteIds)) {
+            baseMapper.deleteBatchIds(deleteIds);
+        }
+
+        List<Resumption> executedResumptionList = resumptionList.stream()
+                .filter(r -> ObjectUtil.equal(r.getStatus(), 3))
+                .collect(Collectors.toList());
+        Map<Long, Boolean> workingMap = orgWorkTimeStatusMap(startDate, cycle, orgIds);
+//        List<Long> deleteTaskIds = new ArrayList<>();
+
+        for (Long orgId : orgIds) {
+            if (!workingMap.containsKey(orgId) || workingMap.get(orgId) == false) {
+                //当前作息周期已经歇业
+                continue;
+            }
+
+            List<Long> hsOrgIds = remoteOrgService.selectParentHs(ListUtil.toList(orgId), SecurityConstants.INNER)
+                    .stream().map(SysOrg::getId)
+                    .collect(Collectors.toList());
+            List<AppPlan> listPlans = queryPlans(hsOrgIds, CycleCommonEnum.DAILY);
+            if (CollectionUtils.isEmpty(listPlans)) {
+                continue;
+            }
+
+            List<Long> planIds = listPlans.stream().map(AppPlan::getId).collect(Collectors.toList());
+            List<AppPlanToRole> appPlanToRoles = appPlanToRoleMapper.selectList(new QueryWrapper<AppPlanToRole>().lambda().in(AppPlanToRole::getPlanId, planIds));
+            List<Resumption> newResumptionList = new ArrayList<>();
+            for (AppPlan plan : listPlans) {
+                //根据计划获取角色
+                List<AppPlanToRole> planToRoles = appPlanToRoles.stream().filter(item -> item.getPlanId().equals(plan.getId())).collect(Collectors.toList());
+                Long executedCount = executedResumptionList.stream()
+                        .filter(r -> ObjectUtil.equal(r.getOrgId(), orgId) && ObjectUtil.equal(r.getPlanId(), plan.getParentId()))
+                        .count();
+                List<Resumption> planResumptionList = this.buildResumptions(plan, planToRoles, startDate, endDate, executedCount);
+                if (CollectionUtils.isNotEmpty(planResumptionList)) {
+                    //根据planId和roleId是否判断resumptionLista中的数据是否在resumptionListYlz中
+//                    List<Resumption> resumptionListb = resumptionLista.stream().filter(item -> !resumptionListYlz.stream().filter(item1 -> item1.getPlanId().equals(item.getPlanId())
+//                            && item1.getRoleId().equals(item.getRoleId())).findFirst().isPresent()).collect(Collectors.toList());
+//                    if (CollectionUtils.isNotEmpty(resumptionListb)) {
+                    newResumptionList.addAll(planResumptionList);
+//                    }
+                }
+            }
+            this.saveBatch(newResumptionList);
+        }
+    }
+
+    private List<Resumption> buildResumptions(AppPlan appPlan, List<AppPlanToRole> planToRoles, SysWorkTime workTime) {
+        DateTime dateTime = new DateTime(workTime.getYmdDate());
+        String opentime = workTime.getOpenTime();//营业时间
+        String closetime = workTime.getCloseTime();//营业终了
+        DateTime planstartTime = null;
+        DateTime planendTime = null;
+
+        DateTime time1 = new DateTime(dateTime);
+        time1.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+        DateTime time2 = new DateTime(dateTime);
+        time2.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
+
+        if (appPlan.getPlanExec() == 1) {//全天 上班时间-下班时间 00:00:00-23:59:59
+            planstartTime = time1.setField(DateField.HOUR_OF_DAY, 0).setField(DateField.MINUTE, 0).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+            planendTime = DateUtil.endOfDay(time2).setField(DateField.MILLISECOND, 0);
+        } else if (appPlan.getPlanExec() == 2) {//营业前 上班时间-营业时间
+            planstartTime = time1.setField(DateField.HOUR_OF_DAY, 0).setField(DateField.MINUTE, 0).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+            planendTime = time2.setField(DateField.HOUR_OF_DAY, Integer.parseInt(opentime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(opentime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+        } else if (appPlan.getPlanExec() == 3) {//营业期间 营业时间-营业终了
+            planstartTime = time1.setField(DateField.HOUR_OF_DAY, Integer.parseInt(opentime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(opentime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+            planendTime = time2.setField(DateField.HOUR_OF_DAY, Integer.parseInt(closetime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(closetime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+        } else if (appPlan.getPlanExec() == 4) {//营业终 营业终了-23.59.59
+            planstartTime = time1.setField(DateField.HOUR_OF_DAY, Integer.parseInt(closetime.split(":")[0])).setField(DateField.MINUTE, Integer.parseInt(closetime.split(":")[1])).setField(DateField.SECOND, 0).setField(DateField.MILLISECOND, 0);
+            planendTime = DateUtil.endOfDay(time2).setField(DateField.MILLISECOND, 0);
+        }
+
+        return buildResumptions(appPlan, planToRoles, planstartTime, planendTime, 0L);
+    }
+
+    private List<Resumption> buildResumptions(AppPlan appPlan, List<AppPlanToRole> planToRoles, Date planStartTime, Date planEndTime, Long executedCount) {
+        if (CollectionUtils.isEmpty(planToRoles)) {
+            return new ArrayList<>();
+        }
+
+        List<Resumption> resumptionList = new ArrayList<>();
+        Long count = 1L;
+        if (NumberUtil.isNumber(appPlan.getCount())) {
+            count = NumberUtil.parseLong(appPlan.getCount());
+        }
+
+        for (Long i = 0L; i < (count - executedCount); i++) {
+            Resumption resumption = new Resumption();
+            Ymd ymd = Ymd.of(planStartTime);
+            resumption.setStatus(1);
+            resumption.setYmd(ymd);
+            resumption.setName(appPlan.getPlanName());
+            resumption.setYmdDate(ymd.getDate());
+            resumption.setYmdDay(Long.valueOf(ymd.getDay()));
+            resumption.setYmdMonth(Long.valueOf(ymd.getMonth()));
+            resumption.setYmdWeek(Long.valueOf(ymd.getWeek()));
+            resumption.setYmdYear(Long.valueOf(ymd.getYear()));
+            resumption.setYmdHour(Long.valueOf(ymd.getHour()));
+            resumption.setYmdQuarter(Long.valueOf(ymd.getQuarter()));
+            resumption.setYmdHalfyear(Long.valueOf(ymd.getHalfyear()));
+            resumption.setPlanId((ObjectUtil.equal(appPlan.getParentId(), -1L) || ObjectUtil.isNull(appPlan.getParentId())) ? appPlan.getId() : appPlan.getParentId());
+            resumption.setOrgId(appPlan.getPlanOfOrgId());
+            resumption.setType(appPlan.getPlanCycle());
+            resumption.setRoleId(planToRoles.get(0).getRoleId());
+            resumption.setPlanStartTime(planStartTime);
+            resumption.setPlanEndTime(planEndTime);
+            resumption.setCreateTime(new Date());
+            resumptionList.add(resumption);
+        }
+
+        return resumptionList;
+    }
+
+    private List<Resumption> queryTask(Date ymdDate, CycleCommonEnum cycle, List<Long> orgIds) {
+        QueryWrapper<Resumption> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(Resumption::getYmdDate, ymdDate);
+        queryWrapper.lambda().in(Resumption::getOrgId, orgIds);
+        queryWrapper.lambda().eq(Resumption::getType, cycle.getCode());
+
+        List<Resumption> resumptionList = baseMapper.selectList(queryWrapper);
+        return resumptionList;
+    }
+
+    /**
+     * 获取所属机构的计划
+     *
+     * @param planOfOrgId
+     * @param cycle
+     * @return
+     */
+    private List<AppPlan> queryPlans(List<Long> planOfOrgId, CycleCommonEnum cycle) {
+        QueryWrapper<AppPlan> qw = new QueryWrapper<>();
+        qw.lambda().eq(AppPlan::getPlanStatus, 1);
+        qw.lambda().eq(AppPlan::getPlanCycle, cycle.getCode());
+        qw.lambda().in(AppPlan::getPlanOfOrgId, planOfOrgId);
+
+        List<AppPlan> listPlans = appPlanMapper.selectList(qw);
+
+        return listPlans;
+    }
+}

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

@@ -26,7 +26,7 @@ import com.xunmei.system.api.Eto.OrgListByTypesConditionEto;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.RemoteWorkTimeService;
 import com.xunmei.system.api.domain.SysOrg;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;

+ 1 - 1
soc-modules/soc-modules-core/src/test/java/com/test/TestController.java

@@ -21,7 +21,7 @@ public class TestController {
     @Test
     public void workTimeChangeEventTest () {
         List<Long> list = new ArrayList<>();
-        WorkTimeChangeEvent event = new WorkTimeChangeEvent(this, list);
+        WorkTimeChangeEvent event = new WorkTimeChangeEvent(this, list,null);
         coreEduTrainingTaskService.taskChangeForTimeWorkChange(event);
     }
 }

+ 5 - 2
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysWorkTimeController.java

@@ -1,5 +1,6 @@
 package com.xunmei.system.controller;
 
+import cn.hutool.core.collection.ListUtil;
 import com.xunmei.common.core.domain.R;
 import com.xunmei.common.core.domain.worktime.dto.WorkTimeDto;
 import com.xunmei.common.core.event.WorkTimeChangeEvent;
@@ -11,7 +12,7 @@ import com.xunmei.common.log.annotation.Log;
 import com.xunmei.common.log.enums.BusinessType;
 import com.xunmei.common.security.annotation.InnerAuth;
 import com.xunmei.common.security.annotation.RequiresPermissions;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import com.xunmei.system.domain.SysWorkTimeSet;
 import com.xunmei.system.dto.SysWorkTimeDto;
 import com.xunmei.system.dto.WorkTimeMonthEditNewDto;
@@ -79,7 +80,7 @@ public class SysWorkTimeController extends BaseController {
         for (Long orgId : orgIds) {
             sysWorkTimeService.batchnew(orgId, sysWorkTimeSet.getWorkTimeList());
         }
-        applicationEventPublisher.publishEvent(new WorkTimeChangeEvent(this, orgIds));
+        applicationEventPublisher.publishEvent(new WorkTimeChangeEvent(this, orgIds,sysWorkTimeSet.getWorkTimeList()));
 
         return AjaxResult.success();
     }
@@ -104,6 +105,8 @@ public class SysWorkTimeController extends BaseController {
     @PostMapping("/saveOneWorkTime")
     public AjaxResult edit(@RequestBody SysWorkTime sysWorkTime) {
         sysWorkTimeService.updateSysWorkTime(sysWorkTime);
+        applicationEventPublisher.publishEvent(new WorkTimeChangeEvent(
+                this, ListUtil.list(true, sysWorkTime.getOrgId()),ListUtil.toList(sysWorkTime)));
         return success();
     }
 

+ 8 - 2
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/WorkTimeMonthOnAppController.java

@@ -1,14 +1,16 @@
 package com.xunmei.system.controller;
 
 import cn.hutool.core.date.DateUtil;
+import com.xunmei.common.core.event.WorkTimeChangeEvent;
 import com.xunmei.common.core.web.controller.BaseController;
 import com.xunmei.common.core.web.domain.AjaxResult;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import com.xunmei.system.dto.WorkTimeMonthEditNewDto;
 import com.xunmei.system.service.ISysWorkTimeService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -24,6 +26,10 @@ import java.util.List;
 public class WorkTimeMonthOnAppController extends BaseController {
     @Autowired
     private ISysWorkTimeService sysWorkTimeService;
+
+    @Autowired
+    ApplicationEventPublisher applicationEventPublisher;
+
     @ApiOperation(value = "按月")
     @PostMapping(value = "/find/month")
     AjaxResult findMonth(@RequestBody @Valid SysWorkTime request) {
@@ -40,7 +46,7 @@ public class WorkTimeMonthOnAppController extends BaseController {
             List<SysWorkTime> batchnew = sysWorkTimeService.batchnew(orgId, sysWorkTimeSet.getWorkTimeList());
         }
 
-        sysWorkTimeService.handleTodayChanged(sysWorkTimeSet.getOrgIdList(),sysWorkTimeSet.getWorkTimeList(), exists, today);
+        applicationEventPublisher.publishEvent(new WorkTimeChangeEvent(this, orgIds,sysWorkTimeSet.getWorkTimeList()));
 //        this.workTimeMonthService.toLogNote("批量操作作息月[ %s ]", request.getOrgIdList());
         return success();
     }

+ 1 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/dto/SysWorkTimeDto.java

@@ -1,6 +1,6 @@
 package com.xunmei.system.dto;
 
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import lombok.Data;
 
 @Data

+ 1 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/dto/WorkTimeMonthEditNewDto.java

@@ -1,6 +1,6 @@
 package com.xunmei.system.dto;
 
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.AllArgsConstructor;

+ 1 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/mapper/SysWorkTimeMapper.java

@@ -8,7 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.xunmei.system.dto.SysWorkTimeDto;
 import org.apache.ibatis.annotations.MapKey;

+ 2 - 2
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/ISysWorkTimeService.java

@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.xunmei.common.core.domain.worktime.dto.WorkTimeDto;
 import com.xunmei.common.core.utils.Ymd;
 import com.xunmei.common.core.web.page.TableDataInfo;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import com.xunmei.system.domain.SysWorkTimeSet;
 import com.xunmei.system.dto.SysWorkTimeDto;
 
@@ -34,7 +34,7 @@ public interface ISysWorkTimeService extends IService<SysWorkTime> {
 
     List<Long> findOrgIdsByYmd(String toYmd);
 
-    void handleTodayChanged(List<Long> orgIdList, List<SysWorkTime> workTimeList, List<SysWorkTime> exists, Date today);
+//    void handleTodayChanged(List<Long> orgIdList, List<SysWorkTime> workTimeList, List<SysWorkTime> exists, Date today);
 
     List<SysWorkTime> findByYmd(List<Long> orgIds, Date ymd);
 

+ 34 - 36
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysWorkTimeServiceImpl.java

@@ -1,7 +1,6 @@
 package com.xunmei.system.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.collection.ListUtil;
 import cn.hutool.core.date.DateField;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
@@ -13,14 +12,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.worktime.dto.WorkTimeDto;
-import com.xunmei.common.core.event.WorkTimeChangeEvent;
 import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.core.utils.Ymd;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.system.api.RemoteResumptionTaskService;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import com.xunmei.system.domain.SysWorkTimeSet;
 import com.xunmei.system.dto.SysWorkTimeDto;
 import com.xunmei.system.mapper.SysWorkTimeMapper;
@@ -260,28 +258,28 @@ public class SysWorkTimeServiceImpl extends ServiceImpl<SysWorkTimeMapper, SysWo
                 && StringUtils.equals(workTime.getWorkOffTime(), dto.getWorkOffTime()) && StringUtils.equals(workTime.getCloseTime(), dto.getCloseTime());
     }
 
-    @Override
-    public void handleTodayChanged(List<Long> orgIdList, List<SysWorkTime> workTimeList, List<SysWorkTime> exists, Date today) {
-//        Optional<SysWorkTimeSet> todaySet = workTimeList.stream().filter(t -> DateUtil.beginOfDay(t.getDate()).equals(today)).findFirst();
-//        if (todaySet.isPresent()) {
-//            List<Long> todayChanged = exists.stream().filter(e -> !timesetIsEqual(e, todaySet.get())).map(WorkTime::getOrgId).collect(Collectors.toList());
-//            List<Long> existOrgIds = exists.stream().map(SysWorkTime::getOrgId).collect(Collectors.toList());
-//            List<Long> addOrgIds = orgIdList.stream().filter(o -> existOrgIds.indexOf(o) < 0).collect(Collectors.toList());
-//            todayChanged.addAll(addOrgIds);
-//            if (CollectionUtil.isNotEmpty(todayChanged)) {
-//                WORKTIMELOG.info("以下机构今日作息变更,重新生成履职:" + JSON.toJSONString(todayChanged));
-//                context.publishEvent(WorkChangeEvent.builder().orgIds(todayChanged).dateTime(DateTime.of(today)).build());
-//            } else {
-//                WORKTIMELOG.info("今日作息变更,今日作息未变化");
-//                WORKTIMELOG.info("今日变化todayChanged:" + JSON.toJSONString(todayChanged));
-//                WORKTIMELOG.info("今日变化existOrgIds:" + JSON.toJSONString(existOrgIds));
-//                WORKTIMELOG.info("今日变化orgIdList:" + JSON.toJSONString(orgIdList));
-//            }
-//        } else {
-//            WORKTIMELOG.info("今日作息变更,未找到今日作息配置数据" + DateUtil.format(today, "yyyy-MM-dd"));
-//            WORKTIMELOG.info("配置数据:" + JSON.toJSONString(workTimeList));
-//        }
-    }
+//    @Override
+//    public void handleTodayChanged(List<Long> orgIdList, List<SysWorkTime> workTimeList, List<SysWorkTime> exists, Date today) {
+////        Optional<SysWorkTimeSet> todaySet = workTimeList.stream().filter(t -> DateUtil.beginOfDay(t.getDate()).equals(today)).findFirst();
+////        if (todaySet.isPresent()) {
+////            List<Long> todayChanged = exists.stream().filter(e -> !timesetIsEqual(e, todaySet.get())).map(WorkTime::getOrgId).collect(Collectors.toList());
+////            List<Long> existOrgIds = exists.stream().map(SysWorkTime::getOrgId).collect(Collectors.toList());
+////            List<Long> addOrgIds = orgIdList.stream().filter(o -> existOrgIds.indexOf(o) < 0).collect(Collectors.toList());
+////            todayChanged.addAll(addOrgIds);
+////            if (CollectionUtil.isNotEmpty(todayChanged)) {
+////                WORKTIMELOG.info("以下机构今日作息变更,重新生成履职:" + JSON.toJSONString(todayChanged));
+////                context.publishEvent(WorkChangeEvent.builder().orgIds(todayChanged).dateTime(DateTime.of(today)).build());
+////            } else {
+////                WORKTIMELOG.info("今日作息变更,今日作息未变化");
+////                WORKTIMELOG.info("今日变化todayChanged:" + JSON.toJSONString(todayChanged));
+////                WORKTIMELOG.info("今日变化existOrgIds:" + JSON.toJSONString(existOrgIds));
+////                WORKTIMELOG.info("今日变化orgIdList:" + JSON.toJSONString(orgIdList));
+////            }
+////        } else {
+////            WORKTIMELOG.info("今日作息变更,未找到今日作息配置数据" + DateUtil.format(today, "yyyy-MM-dd"));
+////            WORKTIMELOG.info("配置数据:" + JSON.toJSONString(workTimeList));
+////        }
+//    }
 
     @Override
     public List<SysWorkTime> findByYmd(List<Long> orgIds, Date ymd) {
@@ -411,18 +409,18 @@ public class SysWorkTimeServiceImpl extends ServiceImpl<SysWorkTimeMapper, SysWo
 
         sysWorkTimeMapper.updateById(sysWorkTime);
         //判断日期是否为今天
-        if (DateUtil.format(sysWorkTime.getYmdDate(), "yyyy-MM-dd").equals(DateUtil.format(new Date(), "yyyy-MM-dd"))) {
-            List<Long> orgIds = new ArrayList<>();
-            orgIds.add(sysWorkTime.getOrgId());
-            Map<String, Object> param = new HashMap<>();
-            param.put("orgIds", orgIds);
-            param.put("sysWorkTime", new Gson().toJson(sysWorkTime));
-            log.info("时间{}修改作息远程调用生成履职任务", new Date());
-            AjaxResult result = remoteResumptionTaskService.dayTaskByWorkTime(param, SecurityConstants.INNER);
-            log.info("时间{}修改作息远程调用生成履职任务返回{}", new Date(), result.get("msg"));
+//        if (DateUtil.format(sysWorkTime.getYmdDate(), "yyyy-MM-dd").equals(DateUtil.format(new Date(), "yyyy-MM-dd"))) {
+//            List<Long> orgIds = new ArrayList<>();
+//            orgIds.add(sysWorkTime.getOrgId());
+//            Map<String, Object> param = new HashMap<>();
+//            param.put("orgIds", orgIds);
+//            param.put("sysWorkTime", new Gson().toJson(sysWorkTime));
+//            log.info("时间{}修改作息远程调用生成履职任务", new Date());
+//            AjaxResult result = remoteResumptionTaskService.dayTaskByWorkTime(param, SecurityConstants.INNER);
+//            log.info("时间{}修改作息远程调用生成履职任务返回{}", new Date(), result.get("msg"));
+//
+//        }
 
-        }
-        applicationEventPublisher.publishEvent(new WorkTimeChangeEvent(this, ListUtil.list(true, sysWorkTime.getOrgId())));
     }
 
     /**

+ 1 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysWorkTimeSetServiceImpl.java

@@ -16,7 +16,7 @@ import com.xunmei.common.core.utils.Ymd;
 import com.xunmei.common.core.utils.snowId.DateHelper;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.system.api.domain.SysOrg;
-import com.xunmei.system.api.domain.SysWorkTime;
+import com.xunmei.common.core.domain.worktime.domain.SysWorkTime;
 import com.xunmei.system.domain.SysWorkTimeSetDayofweek;
 import com.xunmei.system.mapper.SysWorkTimeMapper;
 import com.xunmei.system.mapper.SysWorkTimeSetDayofweekMapper;

+ 8 - 8
soc-modules/soc-modules-system/src/main/resources/mapper/system/SysWorkTimeMapper.xml

@@ -4,7 +4,7 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.xunmei.system.mapper.SysWorkTimeMapper">
 
-    <resultMap type="com.xunmei.system.api.domain.SysWorkTime" id="SysWorkTimeResult">
+    <resultMap type="com.xunmei.common.core.domain.worktime.domain.SysWorkTime" id="SysWorkTimeResult">
                 <result property="id" column="id"/>
                 <result property="createTime" column="create_time"/>
                 <result property="modifiedId" column="modified_id"/>
@@ -39,7 +39,7 @@
         from sys_work_time
     </sql>
 
-    <select id="selectSysWorkTimeList" parameterType="com.xunmei.system.api.domain.SysWorkTime"
+    <select id="selectSysWorkTimeList" parameterType="com.xunmei.common.core.domain.worktime.domain.SysWorkTime"
             resultMap="SysWorkTimeResult">
         <include refid="selectSysWorkTimeVo"/>
         <where>
@@ -133,14 +133,14 @@
             ${ew.customSqlSegment}
 
     </select>
-    <select id="findByOrgAndMonth" resultType="com.xunmei.system.api.domain.SysWorkTime">
+    <select id="findByOrgAndMonth" resultType="com.xunmei.common.core.domain.worktime.domain.SysWorkTime">
 
         select *
         from sys_work_time
         where org_id = #{orgId}
           and ymd_date like concat(#{monthStr}, '%')
     </select>
-    <select id="findByYmd" resultType="com.xunmei.system.api.domain.SysWorkTime">
+    <select id="findByYmd" resultType="com.xunmei.common.core.domain.worktime.domain.SysWorkTime">
         select * from sys_work_time where org_id in
         <foreach item="orgId" collection="orgIds" open="(" separator="," close=")">
             #{orgId}
@@ -148,7 +148,7 @@
 
          and  ymd_date=#{date}
     </select>
-    <select id="getOrgWorkTimeByMonth" resultType="com.xunmei.system.api.domain.SysWorkTime">
+    <select id="getOrgWorkTimeByMonth" resultType="com.xunmei.common.core.domain.worktime.domain.SysWorkTime">
         select * from sys_work_time where is_manual=1 and ymd_date>=#{map.effectiveDate} and
         #{map.lastDayOfNextMonth}>=ymd_date
         and org_id in
@@ -162,7 +162,7 @@
         select org_id from sys_work_time where ymd_date=#{data} and is_enable=1
 
     </select>
-    <select id="findByOrgAndDate" resultType="com.xunmei.system.api.domain.SysWorkTime">
+    <select id="findByOrgAndDate" resultType="com.xunmei.common.core.domain.worktime.domain.SysWorkTime">
         select *
         from sys_work_time
         where org_id = #{orgId}
@@ -172,7 +172,7 @@
         select count(*) from sys_work_time where ymd_date>=#{workstartTime} and #{workendTime} >=ymd_date and org_id=#{orgId} and is_enable=1
     </select>
 
-    <insert id="insertSysWorkTime" parameterType="com.xunmei.system.api.domain.SysWorkTime">
+    <insert id="insertSysWorkTime" parameterType="com.xunmei.common.core.domain.worktime.domain.SysWorkTime">
         insert into sys_work_time
         <trim prefix="(" suffix=")" suffixOverrides=",">
                     <if test="id != null">id,
@@ -288,7 +288,7 @@
         </trim>
     </insert>
 
-    <update id="updateSysWorkTime" parameterType="com.xunmei.system.api.domain.SysWorkTime">
+    <update id="updateSysWorkTime" parameterType="com.xunmei.common.core.domain.worktime.domain.SysWorkTime">
         update sys_work_time
         <trim prefix="SET" suffixOverrides=",">
                     <if test="createTime != null">create_time =