From 951b06c1aaa8cc4c83f9e4b4ba9fae066fd84941 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期五, 11 七月 2025 21:11:03 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java | 43 ++++++++++++++++++++++++++++++++++++------- 1 files changed, 36 insertions(+), 7 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java index 6457e24..6596671 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java @@ -60,6 +60,8 @@ private TTaskCleanService taskCleanService; @Autowired private TTemplateCountService templateCountService; + @Autowired + private TEarlyWarningService earlyWarningService; // 每一个小时执行一次 @@ -89,6 +91,30 @@ taskCleanService.updateBatchById(taskCleanList); } + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Scheduled(cron = "0 0 20 * * ?") + public void dayOfEarlyWarning() { + try { + // 查询前一天为执行的所有任务,改成已超时状态 + List<TTask> taskCleanList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) + .like(TTask::getImplementTime, LocalDate.now().minusDays(1)) + .eq(TTask::getStatus, 1)); + if (!CollectionUtils.isEmpty(taskCleanList)) { + List<TEarlyWarning> earlyWarningList = new ArrayList<>(); + taskCleanList.forEach(task -> { + task.setStatus(2); + TEarlyWarning earlyWarning = new TEarlyWarning(); + earlyWarning.setWarningType(1); + earlyWarning.setTaskId(task.getId()); + earlyWarningList.add(earlyWarning); + }); + earlyWarningService.saveBatch(earlyWarningList); + taskCleanService.updateBatchById(taskCleanList); + } } catch (Exception e) { e.printStackTrace(); } @@ -275,26 +301,26 @@ } } } - + tLocationList = tLocationList.stream().distinct().collect(Collectors.toList()); // 抽取重复点位 Integer currentValue = detail.getCurrentValue(); if(currentValue != cycle){ // 周期天数加一 detail.setCurrentValue(currentValue + 1); // 获取重复点位 - Set<TLocation> repeatLocation = redisCache.getCacheSet(detail.getId() + REPEAT_LOCATION); + Set<TLocation> repeatLocation = redisCache.getCacheSet(detail.getId() + ":" + sysUser.getUserId() + REPEAT_LOCATION); if(!CollectionUtils.isEmpty(repeatLocation)){ List<TLocation> locations = randomSelection(new ArrayList<>(tLocationList), num3); tLocationList.addAll(locations); } Set<TLocation> locationSet = new HashSet<>(tLocationList); - redisCache.setCacheSet(detail.getId() + REPEAT_LOCATION, locationSet); + redisCache.setCacheSet(detail.getId() + ":" + sysUser.getUserId() + REPEAT_LOCATION, locationSet); }else { // 设置当前周期为0 detail.setCurrentValue(0); // 将重复点位置空 - redisCache.deleteObject(detail.getId() + REPEAT_LOCATION); + redisCache.deleteObject(detail.getId() + ":" + sysUser.getUserId() + REPEAT_LOCATION); // 将项目部权重置空 redisCache.deleteObject(detail.getId() + PROJECT_DEPT_WEIGHT); // 将保洁员权重置空 @@ -327,11 +353,14 @@ // 添加应生成任务数量 TTemplateCount templateCount = new TTemplateCount(); - templateCount.setTemplateId(detail.getId()); - templateCount.setTaskCount(tLocationList.size()* cycle); + templateCount.setTemplateId(detail.getTemplateId()); + // 查询所有的保洁员下面的点位 + List<String> cleanIds = cleaners.stream().map(TCleaner::getId).collect(Collectors.toList()); + List<TLocation> tLocations = locationService.list(Wrappers.lambdaQuery(TLocation.class) + .in(TLocation::getLocationCleaner, cleanIds)); + templateCount.setTaskCount(tLocations.size()); templateCount.setUserId(sysUser.getUserId()); templateCountService.save(templateCount); - taskCleanService.saveBatch(tasks); taskCount = taskCount + tasks.size(); } -- Gitblit v1.7.1