Prechádzať zdrojové kódy

feat:巡检计划定时任务调整

dzx 3 týždňov pred
rodič
commit
4e20d0f6a8

+ 38 - 41
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/service/checkplan/DmsCheckPlanServiceImpl.java

@@ -1,5 +1,6 @@
 package cn.iocoder.yudao.module.dms.service.checkplan;
 
+import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
 import cn.iocoder.yudao.framework.security.core.LoginUser;
@@ -58,7 +59,6 @@ public class DmsCheckPlanServiceImpl implements DmsCheckPlanService {
     private DmsCheckTaskItemService dmsCheckTaskItemService;
 
 
-
     @Override
 
     public Long createCheckPlan(DmsCheckPlanSaveReqVO createReqVO) {
@@ -120,12 +120,12 @@ public class DmsCheckPlanServiceImpl implements DmsCheckPlanService {
     @Scheduled(cron = "0 */1 * * * ?")
     @TenantIgnore
     public void genTasks() {
-            System.out.println("Scheduled......");
+        System.out.println("Scheduled......");
         LocalDateTime now = LocalDateTime.now();
 
         //待生成任务的计划列表
         List<DmsCheckPlanDO> checkPlans = this.checkPlanMapper.selectList(new QueryWrapper<DmsCheckPlanDO>().lambda()
-                .eq(DmsCheckPlanDO::getUseFlag, 1).ge(DmsCheckPlanDO::getEndTime, now));
+                .eq(DmsCheckPlanDO::getUseFlag, CommonStatusEnum.ENABLE.getStatus()).ge(DmsCheckPlanDO::getEndTime, now));
         if (CollectionUtils.isNotEmpty(checkPlans)) {
 //            List<Long> ctIds = checkPlans.stream().map(i -> i.getCheckTemplateId()).collect(Collectors.toList());
 //            List<CheckTemplate> checkTemplates = this.checkTemplateMapper.selectList(new LambdaQueryWrapper<CheckTemplate>().in(CheckTemplate::getId, ctIds));
@@ -133,47 +133,44 @@ public class DmsCheckPlanServiceImpl implements DmsCheckPlanService {
 //            Map<Long, List<CheckTemplateItem>> itemMap = Maps.newHashMap();
             checkPlans.forEach(cp -> {
 
-                TenantUtils.execute(cp.getTenantId(), new Runnable() {
-                    @Override
-                    public void run() {
-                        Long dbTasNum = checkTaskMapper.selectCount(new LambdaQueryWrapper<DmsCheckTaskDO>()
-                                .ge(DmsCheckTaskDO::getStartTime, now)
-                                .eq(DmsCheckTaskDO::getDeviceId, cp.getDeviceId()).eq(DmsCheckTaskDO::getCheckPlanId, cp.getId()));
-                        if (Objects.equals(cp.getTaskNum(), new Integer(0))) {
-                            //下次生产任务数量为零 只在任务提前十二个小时生产任务
-                            if (now.isAfter(cp.getStartTime())  && Objects.equals(new Integer(0), dbTasNum)){
-                                DmsCheckTaskDO checkTask = cp.buildTask().setStatus(0).setStartTime(LocalDateTime.now());
-                                checkTask.setEndTime(checkTask.getStartTime().plusHours(cp.oneTotal() + cp.executeTotal()));
+                TenantUtils.execute(cp.getTenantId(), () -> {
+                    Long dbTasNum = checkTaskMapper.selectCount(new LambdaQueryWrapper<DmsCheckTaskDO>()
+                            .ge(DmsCheckTaskDO::getStartTime, now)
+                            .eq(DmsCheckTaskDO::getDeviceId, cp.getDeviceId()).eq(DmsCheckTaskDO::getCheckPlanId, cp.getId()));
+                    if (Objects.equals(cp.getTaskNum(), new Integer(0))) {
+                        //下次生产任务数量为零 只在任务提前十二个小时生产任务
+                        if (now.isAfter(cp.getStartTime()) && Objects.equals(new Integer(0), dbTasNum)) {
+                            DmsCheckTaskDO checkTask = cp.buildTask().setStatus(0).setStartTime(LocalDateTime.now());
+                            checkTask.setEndTime(checkTask.getStartTime().plusHours(cp.oneTotal() + cp.executeTotal()));
+                            checkTaskMapper.insert(checkTask);
+                            dmsCheckTaskItemService.saveBatch(genCheckTaskItems(checkTask));
+                        }
+
+                    } else if (dbTasNum < cp.getTaskNum()) {
+                        LambdaQueryWrapper<DmsCheckTaskDO> checkTaskLambdaQueryWrapper = new LambdaQueryWrapper<DmsCheckTaskDO>()
+                                .eq(DmsCheckTaskDO::getUseFlag, 1)
+                                .eq(DmsCheckTaskDO::getDeviceId, cp.getDeviceId()).eq(DmsCheckTaskDO::getCheckPlanId, cp.getId())
+                                .ge(DmsCheckTaskDO::getStartTime, cp.getStartTime()).orderByDesc(DmsCheckTaskDO::getEndTime);
+                        checkTaskLambdaQueryWrapper.last(" LIMIT 1");
+                        DmsCheckTaskDO lastCheckTask = checkTaskMapper.selectOne(checkTaskLambdaQueryWrapper);
+                        if (Objects.isNull(lastCheckTask)) {
+                            //首次生成任务
+                            for (int i = 0; i < cp.getTaskNum(); i++) {
+                                DmsCheckTaskDO checkTask = cp.buildTask().setStatus(0)
+                                        .setStartTime(cp.getStartTime().plusHours(i * cp.oneTotal()))
+                                        .setEndTime(cp.getStartTime().plusHours(i * cp.oneTotal() + cp.executeTotal()));
                                 checkTaskMapper.insert(checkTask);
                                 dmsCheckTaskItemService.saveBatch(genCheckTaskItems(checkTask));
                             }
+                        } else {
+                            //非首次生成任务
+                            for (int i = 1; i <= cp.getTaskNum() - dbTasNum; i++) {
+                                DmsCheckTaskDO checkTask = cp.buildTask().setStatus(0)
+                                        .setStartTime(lastCheckTask.getStartTime().plusHours(i * cp.oneTotal()))
+                                        .setEndTime(lastCheckTask.getStartTime().plusHours(i * cp.oneTotal() + cp.executeTotal()));
+                                checkTaskMapper.insert(checkTask);
+                                dmsCheckTaskItemService.saveBatch(genCheckTaskItems(checkTask));
 
-                        } else if (dbTasNum < cp.getTaskNum()) {
-                            LambdaQueryWrapper<DmsCheckTaskDO> checkTaskLambdaQueryWrapper = new LambdaQueryWrapper<DmsCheckTaskDO>()
-                                    .eq(DmsCheckTaskDO::getUseFlag, 1)
-                                    .eq(DmsCheckTaskDO::getDeviceId, cp.getDeviceId()).eq(DmsCheckTaskDO::getCheckPlanId, cp.getId())
-                                    .ge(DmsCheckTaskDO::getStartTime, cp.getStartTime()).orderByDesc(DmsCheckTaskDO::getEndTime);
-                            checkTaskLambdaQueryWrapper.last(" LIMIT 1");
-                            DmsCheckTaskDO lastCheckTask = checkTaskMapper.selectOne(checkTaskLambdaQueryWrapper);
-                            if (Objects.isNull(lastCheckTask)) {
-                                //首次生成任务
-                                for (int i = 0; i < cp.getTaskNum(); i++) {
-                                    DmsCheckTaskDO checkTask = cp.buildTask().setStatus(0)
-                                            .setStartTime(cp.getStartTime().plusHours(i * cp.oneTotal()))
-                                            .setEndTime(cp.getStartTime().plusHours(i * cp.oneTotal() + cp.executeTotal()));
-                                    checkTaskMapper.insert(checkTask);
-                                    dmsCheckTaskItemService.saveBatch(genCheckTaskItems(checkTask));
-                                }
-                            } else {
-                                //非首次生成任务
-                                for (int i = 1; i <= cp.getTaskNum() - dbTasNum; i++) {
-                                    DmsCheckTaskDO checkTask = cp.buildTask().setStatus(0)
-                                            .setStartTime(lastCheckTask.getStartTime().plusHours(i * cp.oneTotal()) )
-                                            .setEndTime( lastCheckTask.getStartTime().plusHours(i * cp.oneTotal() + cp.executeTotal()));
-                                    checkTaskMapper.insert(checkTask);
-                                    dmsCheckTaskItemService.saveBatch(genCheckTaskItems(checkTask));
-
-                                }
                             }
                         }
                     }
@@ -191,7 +188,7 @@ public class DmsCheckPlanServiceImpl implements DmsCheckPlanService {
         LocalDateTime now = LocalDateTime.now();
 //        List<DmsCheckTaskItemDO> adds = checkTemplateItems.stream().map(item -> item.buildCheckTaskItem().setCheckTaskId(checkTask.getId()).setCreateTime(now)).collect(Collectors.toList());
         List<DmsCheckTaskItemDO> list =
-                checkTemplateItems.stream().map(item ->item.buildCheckTaskItem().setCheckTaskId(checkTask.getId())).collect(Collectors.toList());
+                checkTemplateItems.stream().map(item -> item.buildCheckTaskItem().setCheckTaskId(checkTask.getId())).collect(Collectors.toList());
         return list;
     }