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 &lt; 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