From 25b19e60e004290531f61fdf608d1adb5e531903 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期六, 12 七月 2025 14:40:12 +0800 Subject: [PATCH] 保洁巡检本周代码 --- ruoyi-admin/src/main/java/com/ruoyi/web/controller/task/TaskUtil.java | 163 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 137 insertions(+), 26 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 74ac94b..34324ab 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 @@ -10,6 +10,8 @@ import com.ruoyi.system.mapper.TCleanerMapper; import com.ruoyi.system.model.*; import com.ruoyi.system.service.*; +import com.ruoyi.web.controller.tool.EmailUtils; +import com.ruoyi.web.controller.tool.MsgUtils; import javafx.concurrent.Task; import lombok.extern.slf4j.Slf4j; import org.apache.poi.ss.formula.functions.T; @@ -17,7 +19,9 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; +import org.springframework.util.StringUtils; +import javax.annotation.Resource; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDate; @@ -60,11 +64,17 @@ private TTaskCleanService taskCleanService; @Autowired private TTemplateCountService templateCountService; + @Autowired + private TEarlyWarningService earlyWarningService; + @Autowired + private TLeaveService leaveService; + @Resource + private TNoticeService noticeService; // 每一个小时执行一次 // @Scheduled(cron = "0 0 0 * * ?") - @Scheduled(fixedRate = 1500000000) +// @Scheduled(fixedRate = 1500000000) public void dayOfCreateInspection() { try { @@ -78,20 +88,91 @@ createInspection(template); }); - // 查询前一天为执行的所有任务,改成已超时状态 - List<TTask> taskCleanList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) - .like(TTask::getImplementTime, LocalDate.now().minusDays(1)) - .eq(TTask::getStatus, 1)); - if (!CollectionUtils.isEmpty(taskCleanList)) { - taskCleanList.forEach(task -> { - task.setStatus(2); - }); - taskCleanService.updateBatchById(taskCleanList); - } - } catch (Exception e) { e.printStackTrace(); } + } + @Resource + private TNoticeSetService noticeSetService; + @Resource + private MsgUtils msgUtils; + @Resource + private TDictDataService dictDataService; + @Scheduled(cron = "0 0 20 * * ?") + public void dayOfEarlyWarning() { + try { + // 查询前一天为执行的所有任务,改成已超时状态 + List<TTask> taskCleanList = taskCleanService.list(Wrappers.lambdaQuery(TTask.class) + .like(TTask::getImplementTime, LocalDate.now()) + .eq(TTask::getStatus, 1)); + List<String> userIds = taskCleanList.stream().map(TTask::getPatrolInspector).distinct().collect(Collectors.toList()); + List<SysUser> sysUsers = sysUserService.selectAllList(); + TNoticeSet noticeSet = noticeSetService.lambdaQuery().eq(TNoticeSet::getType, 2).last("limit 1") + .one(); + // 邮箱 + TDictData email = dictDataService.lambdaQuery().eq(TDictData::getDataType,4).one(); + // 授权码 + TDictData code = dictDataService.lambdaQuery().eq(TDictData::getDataType,5).one(); + if (!CollectionUtils.isEmpty(taskCleanList)) { + List<TEarlyWarning> earlyWarningList = new ArrayList<>(); + List<TNotice> noticeList = new ArrayList<>(); + List<TNotice> addNotice = new ArrayList<>(); + taskCleanList.forEach(task -> { + task.setStatus(2); + TEarlyWarning earlyWarning = new TEarlyWarning(); + earlyWarning.setWarningType(1); + earlyWarning.setTaskId(task.getId()); + earlyWarningList.add(earlyWarning); + TNotice tNotice = new TNotice(); + tNotice.setUserId(task.getPatrolInspector()); + tNotice.setStatus(1); + tNotice.setDataId(task.getId()); + tNotice.setNoticeType(3); + tNotice.setNoticeSetType(noticeSet.getNoticeType()); + noticeList.add(tNotice); + }); + earlyWarningService.saveBatch(earlyWarningList); + + for (String userId : userIds) { + SysUser sysUser = sysUsers.stream().filter(e -> e.getUserId().equals(Long.valueOf(userId))).findFirst().orElse(null); + long count = taskCleanList.stream().filter(e -> e.getPatrolInspector().equals(userId)).count(); + TNotice tNotice = new TNotice(); + tNotice.setUserId(userId); + tNotice.setStatus(1); + tNotice.setNoticeType(3); + tNotice.setNoticeContent("今日剩余"+count+"个任务未完成,请尽快处理"); + tNotice.setNoticeSetType(noticeSet.getNoticeType()); + addNotice.add(tNotice); + + if (sysUser!=null){ + switch (noticeSet.getNoticeType()) { + case 1: + msgUtils.sendMsg2(sysUser.getPhonenumber(),count+""); + break; + case 2: + if (StringUtils.hasLength(email.getDataContent())&&StringUtils.hasLength(code.getDataContent())){ + EmailUtils.sendEmail(sysUser.getEmail(),email.getDataContent(),code.getDataContent(),"今日剩余"+count+"个任务未完成,请尽快处理"); + } + break; + case 3: + break; + } + } + } + noticeService.saveBatch(addNotice); + taskCleanService.updateBatchById(taskCleanList); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 生成点位预警 + */ + // 每分钟执行一次 + public void earning() { + } public void createInspection(TTemplate template) { @@ -138,18 +219,30 @@ int taskCount = 0; for (SysUser sysUser : sysUsers) { + + if("1".equals(sysUser.getStatus())){ + continue; + } + List<TProjectDept> projectDeptLists = new ArrayList<>(); if(sysUser.getDeptType() == 1){ TProjectDept projectDept = projectDeptService.getById(sysUser.getDeptId()); - if("0".equals(projectDept.getParentId())){ - projectDeptLists = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) - .eq(TProjectDept::getParentId, projectDept.getId())); - }else { - projectDeptLists.add(projectDept); + if(projectDept.getStatus() == 1){ + if("0".equals(projectDept.getParentId())){ + projectDeptLists = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) + .eq(TProjectDept::getParentId, projectDept.getId()) + .eq(TProjectDept::getStatus, 1)); + }else { + projectDeptLists.add(projectDept); + } } }else { projectDeptLists = projectDeptService.list(Wrappers.lambdaQuery(TProjectDept.class) - .ne(TProjectDept::getParentId,0)); + .ne(TProjectDept::getParentId,0) + .eq(TProjectDept::getStatus, 1)); + } + if(CollectionUtils.isEmpty(projectDeptLists)){ + continue; } List<String> proDeptIds = projectDeptLists.stream().map(TProjectDept::getId).collect(Collectors.toList()); @@ -301,6 +394,14 @@ redisCache.deleteObject(detail.getId() + CLEANER_WEIGHT); } + + // 查询请假记录 + TLeave leave = leaveService.getOne(Wrappers.lambdaQuery(TLeave.class) + .eq(TLeave::getLeavePerson, sysUser.getUserId()) + .eq(TLeave::getAuditStatus, 2) + .orderByDesc(TLeave::getCreateTime) + .last("LIMIT 1")); + // 创建任务 List<TTask> tasks = new ArrayList<>(); for (TLocation tLocation : tLocationList) { @@ -316,7 +417,14 @@ task.setUserId(sysUser.getUserId()); task.setStatus(1); task.setLocationId(tLocation.getId()); - task.setImplementTime(LocalDateTime.now().plusDays(1)); + + // 判断今天是否在请假时间内 + if(Objects.nonNull(leave) && ((leave.getStartTime().toLocalDate().isBefore(LocalDate.now().plusDays(1)) && leave.getEndTime().toLocalDate().isAfter(LocalDate.now().plusDays(1))) + || (leave.getStartTime().toLocalDate().isEqual(LocalDate.now().plusDays(1)) || leave.getEndTime().toLocalDate().isEqual(LocalDate.now().plusDays(1))))){ + task.setImplementTime(leave.getEndTime().plusDays(1)); + }else { + task.setImplementTime(LocalDateTime.now().plusDays(1)); + } task.setTaskType(1); task.setTemplateId(detail.getTemplateId()); String nameAndCode = CodeGenerateUtils.generateVolumeSn(); @@ -325,13 +433,16 @@ tasks.add(task); } - // 添加应生成任务数量 - TTemplateCount templateCount = new TTemplateCount(); - templateCount.setTemplateId(detail.getTemplateId()); - templateCount.setTaskCount(tLocationList.size()* cycle); - templateCount.setUserId(sysUser.getUserId()); - templateCountService.save(templateCount); - + // 添加应生成任务数量 + TTemplateCount templateCount = new TTemplateCount(); + 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