From c0062ec768989f560d5039d0cc0cca6622b150b4 Mon Sep 17 00:00:00 2001
From: zhuo <2089219845@qq.com>
Date: 星期二, 06 五月 2025 15:41:55 +0800
Subject: [PATCH] 装备lims设备提前5天到期需要提醒设备管理员
---
cnas-device/src/main/java/com/ruoyi/device/task/DeviceRecordSchedule.java | 38 +++++++++++++++++++
cnas-device/src/main/resources/mapper/DeviceMapper.xml | 16 +++++++-
cnas-personnel/src/main/java/com/ruoyi/personnel/task/PersonTrainingSchedule.java | 4 +-
cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMapper.java | 6 +++
4 files changed, 60 insertions(+), 4 deletions(-)
diff --git a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMapper.java b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMapper.java
index 92a8b2d..be50081 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMapper.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/mapper/DeviceMapper.java
@@ -36,5 +36,11 @@
List<Map<String, Object>> treeDevice(@Param("deviceName") String deviceName);
DeviceDto selectDeviceByCode(Integer id);
+
+ /**
+ * 鏌ヨ鍒拌揪鏍″噯鏈夋晥鏈熺殑璁惧-鎻愬墠5澶�
+ * @return
+ */
+ List<Device> selectOverdueDevice();
}
diff --git a/cnas-device/src/main/java/com/ruoyi/device/task/DeviceRecordSchedule.java b/cnas-device/src/main/java/com/ruoyi/device/task/DeviceRecordSchedule.java
index 7ead8cb..3c1a898 100644
--- a/cnas-device/src/main/java/com/ruoyi/device/task/DeviceRecordSchedule.java
+++ b/cnas-device/src/main/java/com/ruoyi/device/task/DeviceRecordSchedule.java
@@ -3,7 +3,9 @@
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.WxCpUtils;
import com.ruoyi.device.dto.DeviceRecordDto;
+import com.ruoyi.device.mapper.DeviceMapper;
import com.ruoyi.device.mapper.DeviceRecordMapper;
+import com.ruoyi.device.pojo.Device;
import com.ruoyi.device.pojo.DeviceRecord;
import com.ruoyi.system.mapper.UserMapper;
import org.springframework.scheduling.annotation.Scheduled;
@@ -20,6 +22,9 @@
*/
@Component
public class DeviceRecordSchedule {
+
+ @Resource
+ private DeviceMapper deviceMapper;
@Resource
private DeviceRecordMapper deviceRecordMapper;
@Resource
@@ -58,8 +63,41 @@
});
});
+ }
+ /**
+ * 姣忓ぉ9鐐规墽琛屼竴娆� 闄や簡鏄熸湡澶�
+ * 鍒ゆ柇鏄惁鏈夎澶囧埌杈炬牎鍑嗘湁鏁堟湡
+ */
+// @Scheduled(cron = "0/5 * * * * *")
+ @Scheduled(cron = "0 0 9 * * 1-6") // 姣忓ぉ9鐐规墽琛屼竴娆� 闄や簡鏄熸湡澶�
+ public void task2() {
+ // 鏌ヨ鍒拌揪鏍″噯鏈夋晥鏈熺殑璁惧-鎻愬墠5澶�
+ List<Device> deviceList = deviceMapper.selectOverdueDevice();
+ Map<Integer, List<Device>> userPersonIdMap = deviceList.stream().collect(Collectors.groupingBy(Device::getEquipmentManager));
+ userPersonIdMap.forEach((userId, recordList) -> {
+ threadPoolTaskExecutor.execute(() -> {
+ // 浼佷笟寰俊閫氱煡濉啓璁惧浣跨敤璁板綍
+ User user = userMapper.selectById(userId);
+ String message = "";
+ message += "璁惧浣跨敤璁板綍鏈~鍐欐彁閱掗�氱煡";
+ for (Device deviceRecord : recordList) {
+ message += "\n璁惧鍚嶇О缂栧彿: " + deviceRecord.getDeviceName() + "-" + deviceRecord.getManagementNumber();
+ message += "\n濮旀墭缂栧彿: " + deviceRecord.getSampleCode();
+ message += "\n";
+ }
+ message += "\n璇峰幓濉啓璁惧浣跨敤璁板綍";
+
+ //鍙戦�佷紒涓氬井淇℃秷鎭�氱煡
+ try {
+ WxCpUtils.inform(user.getAccount(), message, null);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+
+ });
+ });
}
}
diff --git a/cnas-device/src/main/resources/mapper/DeviceMapper.xml b/cnas-device/src/main/resources/mapper/DeviceMapper.xml
index 33fd802..2c2436a 100644
--- a/cnas-device/src/main/resources/mapper/DeviceMapper.xml
+++ b/cnas-device/src/main/resources/mapper/DeviceMapper.xml
@@ -142,6 +142,7 @@
<resultMap id="deviceNameMap" type="map">
<result property="value" column="id"/>
<result property="label" column="device_name"/>
+ <result property="activationDate" column="activation_date"/>
<result property="managementNumber" column="management_number"/>
</resultMap>
@@ -152,7 +153,8 @@
case when d.storage_point is null || d.storage_point ='' then '鍏朵粬' else d.storage_point end as storage_point,
d.device_name,
d.management_number,
- null as value
+ null as value,
+ d.activation_date
from device d
LEFT JOIN laboratory l ON l.id = d.subordinate_departments_id
<where>
@@ -160,7 +162,6 @@
and device_name like concat('%',#{deviceName},'%')
</if>
</where>
- order by l.laboratory_name desc, d.storage_point desc
</select>
<select id="selectDeviceByCode" resultType="com.ruoyi.device.dto.DeviceDto">
@@ -181,4 +182,15 @@
u1.name,
u2.name
</select>
+
+ <!-- 鏌ヨ鍒拌揪鏍″噯鏈夋晥鏈熺殑璁惧-鎻愬墠5澶� -->
+ <select id="selectOverdueDevice" resultType="com.ruoyi.device.pojo.Device">
+ SELECT *
+ FROM device
+ WHERE
+ -- 绛涢�夊嚭 activation_date 鍦ㄥ綋鍓嶆棩鏈熷墠浜斿ぉ鍐呯殑鏁版嵁
+ activation_date BETWEEN now() AND now() + INTERVAL 5 DAY
+ -- 绛涢�夊嚭 activation_date 宸茬粡瓒呰繃褰撳墠鏃ユ湡鐨勬暟鎹�
+ OR activation_date < now()
+ </select>
</mapper>
diff --git a/cnas-personnel/src/main/java/com/ruoyi/personnel/task/PersonTrainingSchedule.java b/cnas-personnel/src/main/java/com/ruoyi/personnel/task/PersonTrainingSchedule.java
index 4e87b34..2fe4b34 100644
--- a/cnas-personnel/src/main/java/com/ruoyi/personnel/task/PersonTrainingSchedule.java
+++ b/cnas-personnel/src/main/java/com/ruoyi/personnel/task/PersonTrainingSchedule.java
@@ -28,10 +28,10 @@
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
/**
- * 鎻愰啋濉啓璁惧浣跨敤璁板綍
+ * 鎻愰啋濉啓浜哄憳鍩硅璁板綍
*/
// @Scheduled(cron = "0/5 * * * * *")
- @Scheduled(cron = "0 0 9 1 * *") // 姣忔湀涓�鍙锋墽琛�
+ @Scheduled(cron = "0 0 9 1,15 * *") // 姣忔湀涓�鍙锋墽琛�
public void task1() {
// 鏌ヨ褰撴湀鍩硅璁″垝
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.M");
--
Gitblit v1.9.3