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