jingyuanchao 2 éve
szülő
commit
a0263554e6

+ 3 - 5
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/RemoteWorkTimeService.java

@@ -3,6 +3,7 @@ package com.xunmei.system.api;
 import com.xunmei.common.core.constant.SecurityConstants;
 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.system.api.domain.SysWorkTime;
 import com.xunmei.system.api.factory.RemoteWorkTimesFallbackFactory;
@@ -27,10 +28,7 @@ public interface RemoteWorkTimeService {
     List<String> findWorkTimeByDateRangeAndOrgId(@RequestParam("startTime") Date startTime, @RequestParam("endTime") Date endTime, @RequestParam("orgId") Long orgId);
 
 
-    @PostMapping("/work/time/findFutureWorkTime")
-    List<SysWorkTime> findFutureWorkTime(@RequestBody List<Long> orgId,
-                                         @RequestParam(value = "startTime") String startTime,
-                                         @RequestParam(value = "ednTime") String ednTime,
-                                         @RequestHeader(SecurityConstants.INNER) String source);
+    @PostMapping("/work/time/findWorkTimeByRange")
+    List<SysWorkTime> findWorkTimeByRange(@RequestBody WorkTimeDto workTimeDto);
 
 }

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

@@ -1,6 +1,7 @@
 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.system.api.RemoteWorkTimeService;
 import com.xunmei.system.api.domain.SysWorkTime;
@@ -42,7 +43,7 @@ public class RemoteWorkTimesFallbackFactory implements FallbackFactory<RemoteWor
             }
 
             @Override
-            public List<SysWorkTime> findFutureWorkTime(List<Long> orgId, String startTime,String endTime, String source) {
+            public List<SysWorkTime> findWorkTimeByRange(WorkTimeDto workTimeDto) {
                 return null;
             }
         };

+ 15 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/worktime/dto/WorkTimeDto.java

@@ -0,0 +1,15 @@
+package com.xunmei.common.core.domain.worktime.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class WorkTimeDto {
+
+    private List<Long> orgIdList;
+
+    private String startTime;
+
+    private String endTime;
+}

+ 5 - 1
soc-modules/soc-modules-core/pom.xml

@@ -40,7 +40,11 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-actuator</artifactId>
         </dependency>
-
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
         <!-- Mysql Connector -->
         <dependency>
             <groupId>mysql</groupId>

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

@@ -571,8 +571,6 @@ public class CoreEduTrainingPlanServiceImpl extends ServiceImpl<CoreEduTrainingP
         if (ObjectUtil.equal(plan.getIssue(), 1)) {
             throw new SystemException("计划已完成发布!");
         }
-        // 下发 按钮显示逻辑:仅省联社安全保卫管理人员进入且由省联社管理安全保卫人员创建的计划才显示
-        //todo 判断当前人的角色信息
         List<CoreEduTrainingPlan> list = buildPlanData(plan, new ArrayList<>(), true);
         //下发后修改为使用中
         plan.setPlanStatus(EduTrainingPlanStatus.USING.getCode());

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

@@ -26,6 +26,7 @@ import com.xunmei.common.core.domain.edu.vo.CoreEduTrainingTaskReportVo;
 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.dto.WorkTimeDto;
 import com.xunmei.common.core.enums.EduTrainingPlanCycleEnum;
 import com.xunmei.common.core.enums.ExportPdfType;
 import com.xunmei.common.core.enums.edu.EduTrainingDoStatus;
@@ -388,11 +389,6 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
 
         if (plan.getPlanCycle() != 0) {
             //如果不是无周期的计划,那么需要查询出他的时间范围
-            List<String> workTimeList = workTimeService.findWorkTimeByDateRangeAndOrgId(start, end, plan.getBelongOrgId());
-            if (workTimeList.isEmpty()) {
-                log.error("未获取到该机构的作息时间");
-                return;
-            }
             DateRange dateRange = DateUtils.getStartAndEnd(new Date(), plan.getPlanCycle());
             start = dateRange.getStartTime();
             end = dateRange.getEndTime();
@@ -401,6 +397,11 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
             start = DateUtil.beginOfDay(start).setField(DateField.MILLISECOND, 0);
             end = DateUtil.endOfDay(end).setField(DateField.MILLISECOND, 0);
         }
+        List<SysOrg> execOrgList = getExecOrgList(plan, start, end);
+        saveTaskAndRoleData(plan, start, end, execOrgList);
+    }
+
+    private List<SysOrg> getExecOrgList(CoreEduTrainingPlanDataVo plan,Date start, Date end){
         List<CoreEduTrainingPlanToExecOrg> planExecOrgList = plan.getPlanExecOrgList();
         List<SysOrg> orgList;
         if (ObjectUtil.isEmpty(planExecOrgList)) {
@@ -410,7 +411,22 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
             List<Long> list = planExecOrgList.stream().map(CoreEduTrainingPlanToExecOrg::getOrgId).collect(Collectors.toList());
             orgList = RemoteCallHandlerExecutor.executeRemoteCall(() -> orgService.selectOrgByIdList(list, SecurityConstants.INNER), ErrorMsgConstants.QUERY_ORG_DATA_ERROR);
         }
-        saveTaskAndRoleData(plan, start, end, orgList);
+        List<Long> orgIdList = orgList.stream().map(SysOrg::getId).collect(Collectors.toList());
+        String startTime = DateUtil.format(start, Constants.DAILY_FORMAT);
+        String endTime = DateUtil.format(end, Constants.DAILY_FORMAT);
+        WorkTimeDto workTimeDto= new WorkTimeDto();
+        workTimeDto.setOrgIdList(orgIdList);
+        workTimeDto.setStartTime(startTime);
+        workTimeDto.setEndTime(endTime);
+        List<SysWorkTime> workTimeList = workTimeService.findWorkTimeByRange(workTimeDto);
+        if (workTimeList.isEmpty()) {
+            log.error("生成任务时,需要生成任务的机构均未营业,本次任务跳过!");
+            return new ArrayList<>();
+        }
+        List<Long> workOrgIdList = workTimeList.stream().filter(time -> ObjectUtil.equal(time.getIsEnable(), WORK))
+                .map(SysWorkTime::getOrgId).collect(Collectors.toList());
+        return orgList;
+       // return orgList.stream().filter(org -> workOrgIdList.contains(org.getId())).collect(Collectors.toList());
     }
 
     private void saveTaskAndRoleData(CoreEduTrainingPlanDataVo plan, Date start, Date end, List<SysOrg> orgList) {
@@ -1069,7 +1085,11 @@ public class CoreEduTrainingTaskServiceImpl extends ServiceImpl<CoreEduTrainingT
         DateRange range = DateUtils.getStartAndEnd(now, cycle);
         String startTime = DateUtil.format(range.getStartTime(), Constants.DAILY_FORMAT);
         String endTime = DateUtil.format(range.getEndTime(), Constants.DAILY_FORMAT);
-        return workTimeService.findFutureWorkTime(event.getOrgIds(), startTime, endTime, SecurityConstants.INNER);
+        WorkTimeDto workTimeDto= new WorkTimeDto();
+        workTimeDto.setOrgIdList(event.getOrgIds());
+        workTimeDto.setStartTime(startTime);
+        workTimeDto.setEndTime(endTime);
+        return workTimeService.findWorkTimeByRange(workTimeDto);
     }
 }
 

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

@@ -0,0 +1,27 @@
+package com.test;
+
+import com.xunmei.common.core.event.WorkTimeChangeEvent;
+import com.xunmei.core.SocCoreApplication;
+import com.xunmei.core.edu.service.ICoreEduTrainingTaskService;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+@SpringBootTest(classes = {SocCoreApplication.class})
+public class TestController {
+
+    @Autowired
+    private ICoreEduTrainingTaskService coreEduTrainingTaskService;
+
+
+    @Test
+    public void workTimeChangeEventTest () {
+        List<Long> list = new ArrayList<>();
+        WorkTimeChangeEvent event = new WorkTimeChangeEvent(this, list);
+        coreEduTrainingTaskService.taskChangeForTimeWorkChange(event);
+    }
+}

+ 16 - 11
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysWorkTimeController.java

@@ -1,13 +1,14 @@
 package com.xunmei.system.controller;
 
 import com.xunmei.common.core.domain.R;
+import com.xunmei.common.core.domain.worktime.dto.WorkTimeDto;
+import com.xunmei.common.core.event.WorkTimeChangeEvent;
 import com.xunmei.common.core.utils.Ymd;
 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.system.api.domain.SysWorkTime;
 import com.xunmei.system.domain.SysWorkTimeSet;
@@ -17,6 +18,7 @@ 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.*;
 
 import java.text.ParseException;
@@ -37,6 +39,8 @@ import java.util.Map;
 public class SysWorkTimeController extends BaseController {
     @Autowired
     private ISysWorkTimeService sysWorkTimeService;
+    @Autowired
+    private ApplicationEventPublisher applicationEventPublisher;
 
     /**
      * 查询【请填写功能名称】列表
@@ -67,13 +71,15 @@ public class SysWorkTimeController extends BaseController {
 //    @RequiresPermissions("system:set:monthedit")
     @PostMapping("/month/edit")
     public AjaxResult monthedit(@RequestBody WorkTimeMonthEditNewDto sysWorkTimeSet) {
-       // Date today = DateUtil.beginOfDay(new Date());
+        // Date today = DateUtil.beginOfDay(new Date());
         List<Long> orgIds = sysWorkTimeSet.getOrgIdList();
         //List<SysWorkTime> exists = sysWorkTimeService.findByYmd(orgIds, today);
-       // List<SysWorkTime> workTimeLists = new ArrayList<>();
+        // List<SysWorkTime> workTimeLists = new ArrayList<>();
         for (Long orgId : orgIds) {
-             sysWorkTimeService.batchnew(orgId, sysWorkTimeSet.getWorkTimeList());
+            sysWorkTimeService.batchnew(orgId, sysWorkTimeSet.getWorkTimeList());
         }
+        applicationEventPublisher.publishEvent(new WorkTimeChangeEvent(this, orgIds));
+
         return AjaxResult.success();
     }
 
@@ -140,15 +146,14 @@ public class SysWorkTimeController extends BaseController {
     }
 
     @GetMapping("/findWorkTimeByDateRangeAndOrgId")
-    List<String> findWorkTimeByDateRangeAndOrgId(Date startTime, Date endTime,Long orgId){
-        return sysWorkTimeService.findWorkTimeByDateRangeAndOrgId(startTime,endTime,orgId);
+    List<String> findWorkTimeByDateRangeAndOrgId(Date startTime, Date endTime, Long orgId) {
+        return sysWorkTimeService.findWorkTimeByDateRangeAndOrgId(startTime, endTime, orgId);
     }
 
-    @ApiOperation(value = "查询未来作息时间")
-    @InnerAuth
-    @PostMapping("/work/time/findFutureWorkTime")
-    List<SysWorkTime> findFutureWorkTime(@RequestBody List<Long> orgId,String startTime,String ednTime){
-        return sysWorkTimeService.findFutureWorkTime(orgId,startTime,ednTime);
+    @ApiOperation(value = "查询机构范围内的作息配置")
+    @PostMapping("/findWorkTimeByRange")
+    List<SysWorkTime>findWorkTimeByRange(@RequestBody WorkTimeDto workTimeDto) {
+        return sysWorkTimeService.findFutureWorkTime(workTimeDto);
     }
 
 }

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

@@ -1,6 +1,7 @@
 package com.xunmei.system.service;
 
 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;
@@ -95,5 +96,5 @@ public interface ISysWorkTimeService extends IService<SysWorkTime> {
 
     List<String> findWorkTimeByDateRangeAndOrgId(Date startTime, Date endTime, Long orgId);
 
-    List<SysWorkTime> findFutureWorkTime(List<Long> orgId,String startTime,String ednTime);
+    List<SysWorkTime> findFutureWorkTime(WorkTimeDto workTimeDto);
 }

+ 11 - 5
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/service/impl/SysWorkTimeServiceImpl.java

@@ -1,6 +1,7 @@
 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;
@@ -11,6 +12,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 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;
@@ -28,6 +31,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
@@ -57,7 +61,8 @@ public class SysWorkTimeServiceImpl extends ServiceImpl<SysWorkTimeMapper, SysWo
 
     @Autowired
     RemoteResumptionTaskService remoteResumptionTaskService;
-
+    @Autowired
+    ApplicationEventPublisher applicationEventPublisher;
 
     public static Date extractDate(String dateString, String dateFormat) throws ParseException {
         SimpleDateFormat sdf = new SimpleDateFormat(dateFormat, Locale.ENGLISH);
@@ -417,6 +422,7 @@ public class SysWorkTimeServiceImpl extends ServiceImpl<SysWorkTimeMapper, SysWo
             log.info("时间{}修改作息远程调用生成履职任务返回{}", new Date(), result.get("msg"));
 
         }
+        applicationEventPublisher.publishEvent(new WorkTimeChangeEvent(this, ListUtil.list(true, sysWorkTime.getOrgId())));
     }
 
     /**
@@ -454,11 +460,11 @@ public class SysWorkTimeServiceImpl extends ServiceImpl<SysWorkTimeMapper, SysWo
     }
 
     @Override
-    public List<SysWorkTime> findFutureWorkTime(List<Long> orgId,String startTime,String ednTime) {
+    public List<SysWorkTime> findFutureWorkTime(WorkTimeDto workTimeDto) {
         return lambdaQuery()
-                .ge(SysWorkTime::getYmdDate, startTime)
-                .le(SysWorkTime::getYmdDate, ednTime)
-                .in(SysWorkTime::getOrgId, orgId)
+                .ge(SysWorkTime::getYmdDate, workTimeDto.getStartTime())
+                .le(SysWorkTime::getYmdDate, workTimeDto.getEndTime())
+                .in(SysWorkTime::getOrgId, workTimeDto.getOrgIdList())
                 .select(SysWorkTime::getId, SysWorkTime::getIsEnable, SysWorkTime::getYmdDate, SysWorkTime::getOrgId)
                 .list();