瀏覽代碼

工作台代码提交

jingyuanchao 2 年之前
父節點
當前提交
7e5243a88e

+ 5 - 2
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteEduTrainingService.java

@@ -1,11 +1,12 @@
 package com.xunmei.system.api;
 
+import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.constant.ServiceNameConstants;
+import com.xunmei.common.core.event.WorkTimeChangeEvent;
 import com.xunmei.common.core.web.domain.AjaxResult;
 import com.xunmei.system.api.factory.RemoteEduTrainingFallbackFactory;
 import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.Date;
 
@@ -30,4 +31,6 @@ public interface RemoteEduTrainingService {
     @GetMapping(value = "/eduTask/updateEduTaskStatus")
     AjaxResult updateEduTaskStatus();
 
+    @PostMapping("/eduTask/change")
+    AjaxResult rebuild(@RequestBody String event, @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
 }

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

@@ -40,9 +40,8 @@ public class CoreEduTrainingPlanEditDto {
     @ApiModelProperty(value = "是否立即生效", notes = "0:否,1:是")
     private Boolean buildTaskNow = Boolean.FALSE;
 
-    @Size(min = 1, message = "计划培训角色")
-    @ApiModelProperty(value = "计划执行角色")
-    private List<Long> planRoleId;
+    /*@ApiModelProperty(value = "计划执行角色")
+    private List<Long> planRoleId;*/
 
     @ApiModelProperty(value = "培训机构类型")
     private Integer execOrgType;

+ 27 - 27
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/edu/dto/CoreEduTrainingPlanInsertDto.java

@@ -16,46 +16,46 @@ import java.util.List;
 public class CoreEduTrainingPlanInsertDto {
 
 
-        @NotBlank(message = "计划名称不能为空")
-        @ApiModelProperty(value = "计划名称")
-        private String planName;
+    @NotBlank(message = "计划名称不能为空")
+    @ApiModelProperty(value = "计划名称")
+    private String planName;
 
-        @NotNull(message = "计划周期不能为空")
-        @ApiModelProperty(value = "计划周期")
-        private Integer planCycle;
+    @NotNull(message = "计划周期不能为空")
+    @ApiModelProperty(value = "计划周期")
+    private Integer planCycle;
 
-        @ApiModelProperty(value = "计划开始时间")
-        private Date startDate;
-        @ApiModelProperty(value = "计划结束时间")
-        private Date endDate;
-        @NotNull(message = "执行次数不能为空")
-        @ApiModelProperty(value = "执行次数")
-        private Integer execTimes;
+    @ApiModelProperty(value = "计划开始时间")
+    private Date startDate;
+    @ApiModelProperty(value = "计划结束时间")
+    private Date endDate;
+    @NotNull(message = "执行次数不能为空")
+    @ApiModelProperty(value = "执行次数")
+    private Integer execTimes;
 
-        @ApiModelProperty(value = "计划状态")
-        private int planStatus;
+    @ApiModelProperty(value = "计划状态")
+    private int planStatus;
 
-        @ApiModelProperty(value = "是否立即生效", notes = "0:否,1:是")
-        private Boolean buildTaskNow=Boolean.FALSE;
+    @ApiModelProperty(value = "是否立即生效", notes = "0:否,1:是")
+    private Boolean buildTaskNow = Boolean.FALSE;
 
         /*@Size(min = 1,message = "计划培训角色")
         @ApiModelProperty(value = "计划执行角色")
         private List<Long> planRoleId;*/
 
-        @ApiModelProperty(value = "培训机构类型")
-        private Integer execOrgType;
+    @ApiModelProperty(value = "培训机构类型")
+    private Integer execOrgType;
 
-        @ApiModelProperty(value = "计划执行具体机构")
-        private List<Long> planExecOrgIdList;
+    @ApiModelProperty(value = "计划执行具体机构")
+    private List<Long> planExecOrgIdList;
 
-        @ApiModelProperty(value = "备注")
-        private String remark;
+    @ApiModelProperty(value = "备注")
+    private String remark;
 
-        @ApiModelProperty(value = "计划所属机构")
-        private Long belongOrgId;
+    @ApiModelProperty(value = "计划所属机构")
+    private Long belongOrgId;
 
-        @ApiModelProperty(value = "附件")
-        private List<String> fileList;
+    @ApiModelProperty(value = "附件")
+    private List<String> fileList;
 
 
 }

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

@@ -31,8 +31,8 @@ public class CoreEduTrainingPlanPageDto extends PageRequest {
     @ApiModelProperty(value = "计划状态")
     private Integer planStatus;
 
-    @ApiModelProperty(value = "计划执行角色")
-    private Long planRoleId;
+    /*@ApiModelProperty(value = "计划执行角色")
+    private Long planRoleId;*/
 
     @ApiModelProperty(value = "计划名称")
     private String planName;

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

@@ -266,6 +266,7 @@ public class CoreDrillPlanServiceImpl extends ServiceImpl<CoreDrillPlanMapper, C
     private void doUpdatePlan(CoreDrillPlan plan, CoreDrillPlanUpdateDto request) {
         BeanUtils.copyProperties(request, plan);
         plan.setUpdateTime(DateUtils.getNowDate());
+        plan.setBuildTaskNow(request.getBuildTaskNow() ? 1 : 0);
         plan.setFileList(ObjectUtil.isNotEmpty(request.getFileList()) ? JSON.toJSONString(request.getFileList()) : null);
         plan.setUpdateBy(SecurityUtils.getLoginUser().getSysUser().getId().toString());
         coreDrillPlanToRoleMapper.deleteByMap(MapUtil.of("plan_id", plan.getId()));

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

@@ -263,12 +263,12 @@ public class CoreDrillTaskServiceImpl extends ServiceImpl<CoreDrillTaskMapper, C
         } else {
             coreDrillTask.setHostId(SecurityUtils.getUserId());
         }
-        List<CoreDrillTaskToUser> taskUserList;
-        if (ObjectUtil.isNotEmpty(request.getTaskUserList())) {
+        List<CoreDrillTaskToUser> taskUserList=request.getTaskUserList();
+        /*if (ObjectUtil.isNotEmpty(request.getTaskUserList())) {
             taskUserList = request.getTaskUserList();
         } else {
             taskUserList = Stream.of(request.getAbsenceList(), request.getAbsentList()).flatMap(Collection::stream).collect(Collectors.toList());
-        }
+        }*/
         if (ObjectUtil.isNotEmpty(taskUserList)) {
             checkTheSameUser(taskUserList);
             for (CoreDrillTaskToUser taskToUser : taskUserList) {

+ 10 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/edu/controller/CoreEduTrainingTaskController.java

@@ -1,13 +1,16 @@
 package com.xunmei.core.edu.controller;
 
 
+import com.alibaba.nacos.shaded.com.google.gson.Gson;
 import com.xunmei.common.core.domain.edu.dto.*;
 import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskPageVo;
+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.common.core.web.page.TableDataInfo;
 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.core.edu.service.ICoreEduTrainingTaskService;
 import io.swagger.annotations.Api;
@@ -109,4 +112,11 @@ public class CoreEduTrainingTaskController extends BaseController {
     AjaxResult updateEduTaskStatus() {
         return success(coreEduTrainingTaskService.updateEduTaskStatus());
     }
+
+
+    @PostMapping(value = "/change")
+    @InnerAuth
+    void rebuildTask(@RequestBody String event){
+        coreEduTrainingTaskService.taskChangeForTimeWorkChange(new Gson().fromJson(event,WorkTimeChangeEvent.class));
+    }
 }

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

@@ -273,6 +273,7 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
 
     private void doUpdatePlan(CoreEduTrainingPlan plan, CoreEduTrainingPlanEditDto request) {
         BeanUtils.copyProperties(request, plan);
+        plan.setBuildTaskNow(request.getBuildTaskNow() ? 1 : 0);
         plan.setUpdateTime(DateUtils.getNowDate());
         plan.setFileList(ObjectUtil.isNotEmpty(request.getFileList()) ? JSON.toJSONString(request.getFileList()) : null);
         plan.setUpdateBy(SecurityUtils.getLoginUser().getSysUser().getId().toString());

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

@@ -794,31 +794,39 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
     @Override
     public void taskChangeForTimeWorkChange(WorkTimeChangeEvent event) {
         String date = LocalDate.now().format(DateTimeFormatter.ofPattern(Constants.DAILY_FORMAT));
+        final List<SysWorkTime> dataList = event.getDataList();
+        final List<Date> collect = dataList.stream().map(SysWorkTime::getYmdDate).distinct().collect(Collectors.toList());
         Date now = new Date();
         for (EduTrainingPlanCycleEnum value : EduTrainingPlanCycleEnum.values()) {
             switch (value) {
                 case DAILY:
-                    List<SysWorkTime> dailyFutureWorkTime = selectWorkTimeList(now, CycleCommonEnum.DAILY, event);
+                    final Optional<SysWorkTime> any = dataList.stream()
+                            .filter(time -> DateUtils.isSameDay(time.getYmdDate(), new Date()))
+                            .findAny();
+                    if (!any.isPresent()) {
+                        continue;
+                    }
+                    List<SysWorkTime> dailyFutureWorkTime = selectWorkTimeList(now, EduTrainingPlanCycleEnum.DAILY, event);
                     dealTimeWorkChangeForDaily(event, date, dailyFutureWorkTime);
                     break;
                 case WEEKLY:
-                    List<SysWorkTime> weeklyFutureWorkTime = selectWorkTimeList(now, CycleCommonEnum.WEEKLY, event);
+                    List<SysWorkTime> weeklyFutureWorkTime = selectWorkTimeList(now, EduTrainingPlanCycleEnum.WEEKLY, event);
                     dealTimeWorkChangeForWeekly(event, date, weeklyFutureWorkTime);
                     break;
                 case MONTHLY:
-                    List<SysWorkTime> monthlyFutureWorkTime = selectWorkTimeList(now, CycleCommonEnum.MONTHLY, event);
+                    List<SysWorkTime> monthlyFutureWorkTime = selectWorkTimeList(now, EduTrainingPlanCycleEnum.MONTHLY, event);
                     dealTimeWorkChangeForMonthly(event, date, monthlyFutureWorkTime);
                     break;
                 case QUARTERLY:
-                    List<SysWorkTime> quarterlyFutureWorkTime = selectWorkTimeList(now, CycleCommonEnum.QUARTERLY, event);
+                    List<SysWorkTime> quarterlyFutureWorkTime = selectWorkTimeList(now, EduTrainingPlanCycleEnum.QUARTERLY, event);
                     dealTimeWorkChangeForQuarterly(event, date, quarterlyFutureWorkTime);
                     break;
                 case HALF_YEARLY:
-                    List<SysWorkTime> halfYearlyFutureWorkTime = selectWorkTimeList(now, CycleCommonEnum.HALF_YEARLY, event);
+                    List<SysWorkTime> halfYearlyFutureWorkTime = selectWorkTimeList(now, EduTrainingPlanCycleEnum.HALF_YEARLY, event);
                     dealTimeWorkChangeForHalfYearly(event, date, halfYearlyFutureWorkTime);
                     break;
                 case YEARLY:
-                    List<SysWorkTime> yearlyFutureWorkTime = selectWorkTimeList(now, CycleCommonEnum.YEARLY, event);
+                    List<SysWorkTime> yearlyFutureWorkTime = selectWorkTimeList(now, EduTrainingPlanCycleEnum.YEARLY, event);
                     dealTimeWorkChangeForYearly(event, date, yearlyFutureWorkTime);
                     break;
                 default:
@@ -836,7 +844,7 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         //查询机构当天是否存在任务
         //因为是每日,每日的任务都是在当天凌晨生成,所以这里只考虑今天的任务情况就行
         List<CoreEduTrainingTask> taskList = lambdaQuery()
-                .eq(CoreEduTrainingTask::getPlanCycle, EduTrainingPlanCycleEnum.DAILY.getCode())
+                .in(CoreEduTrainingTask::getPlanCycle, EduTrainingPlanCycleEnum.DAILY.getCode(), EduTrainingPlanCycleEnum.NONE.getCode())
                 .like(CoreEduTrainingTask::getStartDate, todayStr)
                 .in(CoreEduTrainingTask::getOrgId, orgIds)
                 .select(CoreEduTrainingTask::getId, CoreEduTrainingTask::getOrgId,
@@ -846,33 +854,39 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         Map<Long, List<SysWorkTime>> listMap = futureWorkTime.stream().collect(Collectors.groupingBy(SysWorkTime::getIsEnable));
         //歇业的数据
         List<SysWorkTime> unWorkTimeList = listMap.get(UN_WORK);
-        //获取歇业的机构信息
-        List<Long> unWorkOrgIdList = unWorkTimeList.stream().map(SysWorkTime::getOrgId).collect(Collectors.toList());
-        //删除已经歇业且未执行的任务
-        List<Long> delTaskIdList = taskList.stream()
-                .filter(task -> unWorkOrgIdList.contains(task.getOrgId()))
-                .filter(task -> task.getStatus().equals(EduTrainingDoStatus.WAIT_RECORDED.getCode()))
-                .map(CoreEduTrainingTask::getId).collect(Collectors.toList());
-        //删除任务
-        delTaskByIdList(delTaskIdList);
+        if (ObjectUtil.isNotEmpty(unWorkTimeList)) {
+            //获取歇业的机构信息
+            List<Long> unWorkOrgIdList = unWorkTimeList.stream().map(SysWorkTime::getOrgId).collect(Collectors.toList());
+            //删除已经歇业且未执行的任务
+            List<Long> delTaskIdList = taskList.stream()
+                    .filter(task -> unWorkOrgIdList.contains(task.getOrgId()))
+                    .filter(task -> task.getStatus().equals(EduTrainingDoStatus.WAIT_RECORDED.getCode()))
+                    .map(CoreEduTrainingTask::getId).collect(Collectors.toList());
+            //删除任务
+            delTaskByIdList(delTaskIdList);
+        }
+
 
 
         //营业的数据
         List<SysWorkTime> workTimeList = listMap.get(WORK);
-        //营业的机构id
-        List<Long> workOrgIdList = workTimeList.stream().map(SysWorkTime::getOrgId).collect(Collectors.toList());
-        //查询需要生成任务的机构的计划
-        //每日的情况需要考虑到特殊日子,比如每月一号 一月一号等多周期重合的情况
-        //List<Integer> cycleList = DateUtils.checkDate(today);
-        List<CoreEduTrainingPlan> planList = coreEduTrainingPlanMapper.selectList(new LambdaQueryWrapper<CoreEduTrainingPlan>()
-                .eq(CoreEduTrainingPlan::getStandard, 0)
-                .eq(CoreEduTrainingPlan::getPlanStatus, EduTrainingPlanStatus.USING.getCode())
-                .eq(CoreEduTrainingPlan::getPlanCycle, EduTrainingPlanCycleEnum.DAILY.getCode())
-                .eq(CoreEduTrainingPlan::getDeleted, 0)
-                .in(CoreEduTrainingPlan::getBelongOrgId, workOrgIdList)
-                .select(CoreEduTrainingPlan::getId, CoreEduTrainingPlan::getPlanCycle));
-        //此list中Plan对象仅id与planCycle字段有值,
-        buildTaskByPlan(planList, today);
+        if (ObjectUtil.isNotEmpty(workTimeList)) {
+            //营业的机构id
+            List<Long> workOrgIdList = workTimeList.stream().map(SysWorkTime::getOrgId).collect(Collectors.toList());
+            //查询需要生成任务的机构的计划
+            //每日的情况需要考虑到特殊日子,比如每月一号 一月一号等多周期重合的情况
+            //List<Integer> cycleList = DateUtils.checkDate(today);
+            List<CoreEduTrainingPlan> planList = coreEduTrainingPlanMapper.selectList(new LambdaQueryWrapper<CoreEduTrainingPlan>()
+                    .eq(CoreEduTrainingPlan::getStandard, 0)
+                    .eq(CoreEduTrainingPlan::getPlanStatus, EduTrainingPlanStatus.USING.getCode())
+                    .in(CoreEduTrainingPlan::getPlanCycle, EduTrainingPlanCycleEnum.DAILY.getCode(),EduTrainingPlanCycleEnum.NONE.getCode())
+                    .eq(CoreEduTrainingPlan::getDeleted, 0)
+                    .in(CoreEduTrainingPlan::getBelongOrgId, workOrgIdList)
+                    .select(CoreEduTrainingPlan::getId, CoreEduTrainingPlan::getPlanCycle));
+            //此list中Plan对象仅id与planCycle字段有值,
+            buildTaskByPlan(planList, today);
+        }
+
     }
 
 
@@ -910,13 +924,15 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         //删除任务
         delTaskByIdList(delTaskIdList);
 
+        List<SysOrg> orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectParentHs(workOrgIdList, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
+        final List<Long> collect = orgList.stream().map(SysOrg::getId).collect(Collectors.toList());
         //查询需要生成任务的机构的计划
         List<CoreEduTrainingPlan> planList = coreEduTrainingPlanMapper.selectList(new LambdaQueryWrapper<CoreEduTrainingPlan>()
                 .eq(CoreEduTrainingPlan::getStandard, 0)
                 .eq(CoreEduTrainingPlan::getPlanStatus, EduTrainingPlanStatus.USING.getCode())
                 .eq(CoreEduTrainingPlan::getPlanCycle, EduTrainingPlanCycleEnum.WEEKLY.getCode())
                 .eq(CoreEduTrainingPlan::getDeleted, 0)
-                .in(CoreEduTrainingPlan::getBelongOrgId, workOrgIdList)
+                .in(CoreEduTrainingPlan::getBelongOrgId, collect)
                 .select(CoreEduTrainingPlan::getId, CoreEduTrainingPlan::getPlanCycle));
         //此list中Plan对象仅id与planCycle字段有值,
         buildTaskByPlan(planList, today);
@@ -1108,8 +1124,8 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
     }
 
 
-    private List<SysWorkTime> selectWorkTimeList(Date now, CycleCommonEnum cycle, WorkTimeChangeEvent event) {
-        DateRange range = DateUtils.getStartAndEnd(now, cycle);
+    private List<SysWorkTime> selectWorkTimeList(Date now, EduTrainingPlanCycleEnum cycle, WorkTimeChangeEvent event) {
+        DateRange range = DateUtils.getStartAndEnd(now, cycle.getCode());
         String startTime = DateUtil.format(range.getStartTime(), Constants.DAILY_FORMAT);
         String endTime = DateUtil.format(range.getEndTime(), Constants.DAILY_FORMAT);
         WorkTimeDto workTimeDto = new WorkTimeDto();

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

@@ -446,14 +446,14 @@
         p.belong_org_name
         from core_edu_training_plan p left join sys_user u on p.update_by=u.id
         where p.deleted = 0
-        <if test="request.planRoleId!=null">
+       <!-- <if test="request.planRoleId!=null">
             and p.id in ( select distinct p1.id
             from core_edu_training_plan p1
             inner join core_edu_training_plan_to_role r1 on p1.id = r1.plan_id
             where p1.deleted = 0
             and p1.plan_status = 0
             and r1.role_id = #{request.planRoleId})
-        </if>
+        </if>-->
         <include refid="pageIncludeP"/>
         order by p.create_time desc
     </select>

+ 6 - 2
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/listener/WorkTimeChangeEventListener.java

@@ -3,6 +3,7 @@ package com.xunmei.system.listener;
 import com.alibaba.fastjson2.JSON;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.event.WorkTimeChangeEvent;
+import com.xunmei.system.api.RemoteEduTrainingService;
 import com.xunmei.system.api.RemoteResumptionTaskService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,12 +21,15 @@ public class WorkTimeChangeEventListener implements ApplicationListener<WorkTime
 
     @Autowired
     RemoteResumptionTaskService remoteResumptionTaskService;
-
+    @Autowired
+    RemoteEduTrainingService eduTrainingService;
     @Override
     @EventListener(WorkTimeChangeEvent.class)
     @TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT, fallbackExecution = false)
     public void onApplicationEvent(WorkTimeChangeEvent event) {
 
-        remoteResumptionTaskService.rebuild(JSON.toJSONString(event), SecurityConstants.INNER);
+        //remoteResumptionTaskService.rebuild(JSON.toJSONString(event), SecurityConstants.INNER);
+        //eduTrainingService.rebuild(JSON.toJSONString(event), SecurityConstants.INNER);
+
     }
 }