luojun 2 éve
szülő
commit
e66182a6d5

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

@@ -34,4 +34,6 @@ public interface RemoteWorkTimeService {
 
     @PostMapping("/work/time/checkWorkTime")
     Integer checkWorkTime(@RequestBody Map<String,Object> searchData,  @RequestHeader(SecurityConstants.FROM_SOURCE) String source);
+    @GetMapping("/work/time/findWorkTimeByOrgIdAndYmd")
+    SysWorkTime findWorkTimeByOrgIdAndYmd(@RequestParam("ymdDate") Date startTime, @RequestParam("orgId") Long orgId);
 }

+ 27 - 5
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/job/SafetyCheckJobBusiness.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 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.DateHelper;
 import com.xunmei.common.core.utils.IDHelper;
 import com.xunmei.core.TaskCreatingServiceImplBase;
@@ -42,7 +43,7 @@ import java.util.stream.Collectors;
 
 @Slf4j
 @Component
-public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafetyTaskMapper,CoreSafetyTask> {
+public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafetyTaskMapper, CoreSafetyTask> {
     @Resource
     CoreSafecheckPlanMapper planMapper;
     @Resource
@@ -94,6 +95,7 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
 
     /**
      * 检查指定机构有无作息
+     *
      * @param workstartTime
      * @param workendTime
      * @param orgId
@@ -150,23 +152,24 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
 
     /**
      * 指定计划生成任务
+     *
      * @param plans
      * @throws Exception
      */
     @Async
     public void createTaskByPlans(List<CoreSafecheckPlan> plans) throws Exception {
-        if(plans!=null&&plans.size()>0){
+        if (plans != null && plans.size() > 0) {
             int cycle = Math.toIntExact(plans.get(0).getPlanCycle());
             DateTime datetime = new DateTime();
             datetime.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"));
             DateHelper dateHelper = new DateHelper(datetime);
-            Map<String, Date> map=null;
+            Map<String, Date> map = null;
             //如果无周期
-            if(cycle==6){
+            if (cycle == 6) {
                 map = DateHelper.getStartAndEnd(dateHelper, null);
                 map.put("start", plans.get(0).getStartDate());
                 map.put("end", plans.get(0).getEndDate());
-            }else{
+            } else {
                 map = DateHelper.getStartAndEnd(dateHelper, cycle);
             }
             List<PlanTaskBuildVo> tasks = new ArrayList<>();
@@ -631,7 +634,26 @@ public class SafetyCheckJobBusiness extends TaskCreatingServiceImplBase<CoreSafe
 
     @Override
     public void rebuildWeeklyTask(List<Long> orgIds, Date startDate, Date endDate) {
+        Map<Long, Boolean> workingMap = orgWorkTimeStatusMap(startDate, CycleCommonEnum.WEEKLY, orgIds);
+//        List<Long> deleteTaskIds = new ArrayList<>();
+
+        List<SysOrg> orgs = remoteOrgService.selectByOrgIdList(orgIds, SecurityConstants.INNER);
+        for (SysOrg org : orgs) {
+            if (ObjectUtil.isNull(org.getType())) {
+                continue;
+            }
 
+            Long orgId = org.getId();
+            if (!workingMap.containsKey(orgId) || !workingMap.get(orgId)) {
+                //当前作息周期已经歇业,删除未进行的任务
+                checkTaskService.deleteByOrgIdAndRange(orgId, startDate, endDate);
+                continue;
+            }else{
+                //开始营业,重新生成任务
+
+            }
+
+        }
     }
 
     @Override

+ 8 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/ICoreSafetyTaskService.java

@@ -77,4 +77,12 @@ public interface ICoreSafetyTaskService extends IService<CoreSafetyTask> {
     List<CheckNfcRecord> selectNfc(String taskId);
 
     List<PanelListVo> selectCurUserTaskList(PanelListDto panelListDto);
+
+    /**
+     * 根据机构id删除时间区域内的未进行的任务
+     * @param orgId
+     * @param startDate
+     * @param endDate
+     */
+    void deleteByOrgIdAndRange(Long orgId, Date startDate, Date endDate);
 }

+ 7 - 0
soc-modules/soc-modules-core/src/main/java/com/xunmei/core/safetyCheck/service/impl/CoreSafetyTaskServiceImpl.java

@@ -165,4 +165,11 @@ public class CoreSafetyTaskServiceImpl extends ServiceImpl<CoreSafetyTaskMapper,
         list.forEach(item -> { item.setType(PanelTypeEnums.SAFETY_CHECK.getCode());});
         return list;
     }
+
+    @Override
+    public void deleteByOrgIdAndRange(Long orgId, Date startDate, Date endDate) {
+        coreSafetyTaskMapper.delete(new LambdaQueryWrapper<CoreSafetyTask>().eq(CoreSafetyTask::getOrgId, orgId).between(CoreSafetyTask::getYmdDate, startDate, endDate).in(CoreSafetyTask::getStatus,1,2));
+    }
+
+
 }

+ 4 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysWorkTimeController.java

@@ -163,5 +163,8 @@ public class SysWorkTimeController extends BaseController {
     Integer checkWorkTime(@RequestBody Map<String,Object> map){
         return sysWorkTimeService.checkWorkTime(map);
     }
-
+    @GetMapping("/findWorkTimeByOrgIdAndYmd")
+    SysWorkTime findWorkTimeByOrgIdAndYmd(Date ymdDate, Long orgId) {
+        return sysWorkTimeService.findWorkTimeByOrgIdAndYmd(ymdDate, orgId);
+    }
 }

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

@@ -99,4 +99,6 @@ public interface ISysWorkTimeService extends IService<SysWorkTime> {
     List<SysWorkTime> findFutureWorkTime(WorkTimeDto workTimeDto);
 
     int checkWorkTime(Map<String,Object> map);
+
+    SysWorkTime findWorkTimeByOrgIdAndYmd(Date ymdDate, Long orgId);
 }

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

@@ -465,4 +465,9 @@ public class SysWorkTimeServiceImpl extends ServiceImpl<SysWorkTimeMapper, SysWo
         return sysWorkTimeMapper.checkWorkTime(param);
     }
 
+    @Override
+    public SysWorkTime findWorkTimeByOrgIdAndYmd(Date ymdDate, Long orgId) {
+        return sysWorkTimeMapper.selectOne(new LambdaQueryWrapper<SysWorkTime>().eq(SysWorkTime::getYmdDate,ymdDate).eq(SysWorkTime::getOrgId,orgId));
+    }
+
 }