From 0d7c3e7923c420ae6d3f8feff280bf4fcaac5ce7 Mon Sep 17 00:00:00 2001
From: buhuazhen <hua100783@gmail.com>
Date: 星期四, 28 五月 2026 11:22:06 +0800
Subject: [PATCH] feat 人员合同、设备定时保养、排班之后APP推送通知
---
src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskJob.java | 82 ++++++++++++++++++++++++++++++++++++++--
1 files changed, 77 insertions(+), 5 deletions(-)
diff --git a/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskJob.java b/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskJob.java
index b9deb2d..bef3be6 100644
--- a/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskJob.java
+++ b/src/main/java/com/ruoyi/device/service/impl/MaintenanceTaskJob.java
@@ -1,9 +1,17 @@
package com.ruoyi.device.service.impl;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.ruoyi.device.pojo.DeviceMaintenance;
import com.ruoyi.device.pojo.MaintenanceTask;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.mapper.SysUserMapper;
+import com.ruoyi.project.system.service.ISysNoticeService;
+import com.ruoyi.staff.pojo.StaffOnJob;
+import com.ruoyi.staff.mapper.StaffOnJobMapper;
import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
import org.quartz.*;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
@@ -16,16 +24,28 @@
import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import java.util.ArrayList;
@Component
-@DisallowConcurrentExecution // 绂佹骞跺彂鎵ц鍚屼竴涓狫ob
-@RequiredArgsConstructor
+@DisallowConcurrentExecution
+@Slf4j
public class MaintenanceTaskJob implements Job, Serializable {
- private static final long serialVersionUID = 1L; // 蹇呴』瀹氫箟搴忓垪鍖朓D
+ private static final long serialVersionUID = 1L;
- private final DeviceMaintenanceServiceImpl deviceMaintenanceService;
+ @Autowired
+ private DeviceMaintenanceServiceImpl deviceMaintenanceService;
- private final JdbcTemplate jdbcTemplate;
+ @Autowired
+ private JdbcTemplate jdbcTemplate;
+
+ @Autowired
+ private StaffOnJobMapper staffOnJobMapper;
+
+ @Autowired
+ private SysUserMapper sysUserMapper;
+
+ @Autowired
+ private ISysNoticeService sysNoticeService;
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
@@ -50,6 +70,9 @@
// 2. 鍒涘缓骞朵繚瀛樺贰妫�浠诲姟璁板綍 - 杩欏氨鏄偍鎻愪緵鐨勪唬鐮佸簲璇ユ斁鐨勪綅缃�
DeviceMaintenance deviceMaintenance = createInspectionTask(timingTask);
deviceMaintenanceService.save(deviceMaintenance);
+
+ // 鍙戦�佷繚鍏绘彁閱掗�氱煡
+ sendMaintenanceReminder(timingTask);
// 3. 鏇存柊瀹氭椂浠诲姟鐨勬墽琛屾椂闂�
if (!tasks.isEmpty()) {
@@ -91,11 +114,13 @@
inspectionTask.setMaintenanceTaskId(timingTask.getId());
inspectionTask.setDeviceLedgerId(timingTask.getTaskId());
inspectionTask.setMaintenancePlanTime(LocalDateTime.now());
+ inspectionTask.setMaintenanceActuallyName(timingTask.getMaintenancePerson());
inspectionTask.setFrequencyType(timingTask.getFrequencyType());
inspectionTask.setFrequencyDetail(timingTask.getFrequencyDetail());
inspectionTask.setTenantId(timingTask.getTenantId());
inspectionTask.setStatus(0);
inspectionTask.setDeviceModel(timingTask.getDeviceModel());
+ inspectionTask.setMachineryCategory(timingTask.getMachineryCategory());
inspectionTask.setCreateUser(Integer.parseInt(timingTask.getRegistrantId().toString()));
inspectionTask.setUpdateTime(LocalDateTime.now());
inspectionTask.setCreateTime(LocalDateTime.now());
@@ -239,4 +264,51 @@
return days;
}
+
+ /**
+ * 鍙戦�佽澶囦繚鍏绘彁閱掗�氱煡
+ * @param timingTask 淇濆吇浠诲姟
+ */
+ private void sendMaintenanceReminder(MaintenanceTask timingTask) {
+ try {
+ if (timingTask.getMaintenancePerson() == null || timingTask.getMaintenancePerson().isEmpty()) {
+ log.warn("淇濆吇浠诲姟 {} 鏈寚瀹氫繚鍏讳汉锛岃烦杩囨帹閫�", timingTask.getTaskName());
+ return;
+ }
+
+ // 閫氳繃淇濆吇浜哄鍚嶆煡璇㈠憳宸ユ。妗�
+ List<StaffOnJob> staffList = staffOnJobMapper.selectList(Wrappers.<StaffOnJob>lambdaQuery()
+ .eq(StaffOnJob::getStaffName, timingTask.getMaintenancePerson())
+ .eq(StaffOnJob::getStaffState, 1)
+ .last("LIMIT 1"));
+
+ if (staffList.isEmpty()) {
+ log.warn("鏈壘鍒颁繚鍏讳汉 {} 鐨勫憳宸ユ。妗�", timingTask.getMaintenancePerson());
+ return;
+ }
+
+ StaffOnJob staff = staffList.get(0);
+
+ // 閫氳繃鍛樺伐缂栧彿鏌ヨ绯荤粺鐢ㄦ埛
+ SysUser sysUser = sysUserMapper.selectUserByUserName(staff.getStaffNo());
+ if (sysUser == null) {
+ log.warn("淇濆吇浜� {} 鏈壘鍒板搴旂殑绯荤粺鐢ㄦ埛璐﹀彿", staff.getStaffName());
+ return;
+ }
+
+ // 鏋勫缓閫氱煡鍐呭
+ String title = "璁惧淇濆吇鎻愰啋";
+ String message = String.format("鎮ㄥソ锛岃澶囥��%s銆戦渶瑕佽繘琛屼繚鍏伙紝璇峰強鏃跺鐞嗐��",
+ timingTask.getTaskName());
+
+ // 鍙戦�侀�氱煡
+ List<Long> userIds = new ArrayList<>();
+ userIds.add(sysUser.getUserId());
+ sysNoticeService.simpleNoticeByUser(title, message, userIds, "/deviceMaintenance");
+
+ log.info("宸插悜淇濆吇浜� {} 鍙戦�佽澶囦繚鍏绘彁閱�", timingTask.getMaintenancePerson());
+ } catch (Exception e) {
+ log.error("鍙戦�佽澶囦繚鍏绘彁閱掑け璐ワ細{}", e.getMessage(), e);
+ }
+ }
}
--
Gitblit v1.9.3