|
@@ -1,5 +1,6 @@
|
|
package cn.iocoder.yudao.module.dms.service.checkplan;
|
|
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.pojo.PageResult;
|
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
import cn.iocoder.yudao.framework.security.core.LoginUser;
|
|
import cn.iocoder.yudao.framework.security.core.LoginUser;
|
|
@@ -58,7 +59,6 @@ public class DmsCheckPlanServiceImpl implements DmsCheckPlanService {
|
|
private DmsCheckTaskItemService dmsCheckTaskItemService;
|
|
private DmsCheckTaskItemService dmsCheckTaskItemService;
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
|
|
|
|
public Long createCheckPlan(DmsCheckPlanSaveReqVO createReqVO) {
|
|
public Long createCheckPlan(DmsCheckPlanSaveReqVO createReqVO) {
|
|
@@ -120,12 +120,12 @@ public class DmsCheckPlanServiceImpl implements DmsCheckPlanService {
|
|
@Scheduled(cron = "0 */1 * * * ?")
|
|
@Scheduled(cron = "0 */1 * * * ?")
|
|
@TenantIgnore
|
|
@TenantIgnore
|
|
public void genTasks() {
|
|
public void genTasks() {
|
|
- System.out.println("Scheduled......");
|
|
|
|
|
|
+ System.out.println("Scheduled......");
|
|
LocalDateTime now = LocalDateTime.now();
|
|
LocalDateTime now = LocalDateTime.now();
|
|
|
|
|
|
//待生成任务的计划列表
|
|
//待生成任务的计划列表
|
|
List<DmsCheckPlanDO> checkPlans = this.checkPlanMapper.selectList(new QueryWrapper<DmsCheckPlanDO>().lambda()
|
|
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)) {
|
|
if (CollectionUtils.isNotEmpty(checkPlans)) {
|
|
// List<Long> ctIds = checkPlans.stream().map(i -> i.getCheckTemplateId()).collect(Collectors.toList());
|
|
// 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));
|
|
// 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();
|
|
// Map<Long, List<CheckTemplateItem>> itemMap = Maps.newHashMap();
|
|
checkPlans.forEach(cp -> {
|
|
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);
|
|
checkTaskMapper.insert(checkTask);
|
|
dmsCheckTaskItemService.saveBatch(genCheckTaskItems(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();
|
|
LocalDateTime now = LocalDateTime.now();
|
|
// List<DmsCheckTaskItemDO> adds = checkTemplateItems.stream().map(item -> item.buildCheckTaskItem().setCheckTaskId(checkTask.getId()).setCreateTime(now)).collect(Collectors.toList());
|
|
// List<DmsCheckTaskItemDO> adds = checkTemplateItems.stream().map(item -> item.buildCheckTaskItem().setCheckTaskId(checkTask.getId()).setCreateTime(now)).collect(Collectors.toList());
|
|
List<DmsCheckTaskItemDO> list =
|
|
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;
|
|
return list;
|
|
}
|
|
}
|
|
|
|
|