From 1b0b86833609f1d0a25b0bc84d21796581629f4e Mon Sep 17 00:00:00 2001 From: zhuo <2089219845@qq.com> Date: 星期四, 10 四月 2025 13:07:21 +0800 Subject: [PATCH] 温湿度报检功能调整 --- cnas-require/src/main/java/com/ruoyi/require/task/FeTempHumDateSchedule.java | 174 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 171 insertions(+), 3 deletions(-) diff --git a/cnas-require/src/main/java/com/ruoyi/require/task/FeTempHumDateSchedule.java b/cnas-require/src/main/java/com/ruoyi/require/task/FeTempHumDateSchedule.java index 5f32fd2..b721c1d 100644 --- a/cnas-require/src/main/java/com/ruoyi/require/task/FeTempHumDateSchedule.java +++ b/cnas-require/src/main/java/com/ruoyi/require/task/FeTempHumDateSchedule.java @@ -1,6 +1,11 @@ package com.ruoyi.require.task; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.common.core.domain.entity.User; +import com.ruoyi.common.utils.WxCpUtils; +import com.ruoyi.require.dto.FeTempHumRecordDto; import com.ruoyi.require.mapper.CollectLaboratoryMapper; import com.ruoyi.require.mapper.CollectTemperatureHumidityMapper; import com.ruoyi.require.mapper.FeTempHumDateMapper; @@ -9,10 +14,13 @@ import com.ruoyi.require.pojo.CollectTemperatureHumidity; import com.ruoyi.require.pojo.FeTempHumDate; import com.ruoyi.require.pojo.FeTempHumRecord; +import com.ruoyi.system.mapper.UserMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Component; +import javax.annotation.Resource; import java.lang.reflect.Field; import java.text.SimpleDateFormat; import java.time.LocalDate; @@ -20,6 +28,8 @@ import java.time.format.DateTimeFormatter; import java.util.Calendar; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * Author: yuan @@ -37,6 +47,10 @@ private CollectTemperatureHumidityMapper collectTemperatureHumidityMapper; @Autowired private FeTempHumRecordMapper feTempHumRecordMapper; + @Autowired + private ThreadPoolTaskExecutor threadPoolTaskExecutor; + @Resource + private UserMapper userMapper; // 鑾峰彇褰撳墠骞翠唤鍜屾湀浠� 濡傦細2024-11 private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); @@ -59,6 +73,9 @@ FeTempHumDate feTempHumDate = new FeTempHumDate(); feTempHumDate.setMonthDate(formattedDate); feTempHumDate.setTestAreaName(collectLaboratory.getLaboratory()); + if (collectLaboratory.getLaboratory().equals("鎭掓俯浜�")) { + feTempHumDate.setSubjoin("娉�: 璇ュ疄楠屽鐜鏉′欢娓╁害娉㈠姩涓嶅ぇ浜幝�1鈩冭姹�"); + } feTempHumDateMapper.insert(feTempHumDate); } } @@ -93,7 +110,9 @@ // 鏌ヨ璇曢獙鍖哄煙 FeTempHumDate feTempHumDate = feTempHumDateMapper.selectOne(Wrappers.<FeTempHumDate>lambdaQuery() .eq(FeTempHumDate::getMonthDate, formattedDate) - .eq(FeTempHumDate::getTestAreaName, collectLaboratory.getLaboratory())); + .eq(FeTempHumDate::getTestAreaName, collectLaboratory.getLaboratory()) + .orderByDesc(FeTempHumDate::getCreateTime) + .last("limit 1")); Integer dateId = feTempHumDate.getDateId(); // 鍒ゆ柇浠婂ぉ鏄惁鏈夋俯婀垮害璁板綍 FeTempHumRecord feTempHumRecord = record(dateId); @@ -111,6 +130,30 @@ newFeTempHumRecord.setMorningHum(humidity.toString()); newFeTempHumRecord.setDateId(dateId); feTempHumRecordMapper.insert(newFeTempHumRecord); + + // 鍒ゆ柇娓╂箍搴︽槸鍚﹁秴杩�, 瓒呰繃鎻愰啋 + if (feTempHumDate.getRegistrarUserId() != null) { + if (temperature < collectLaboratory.getTemperatureLowest() || temperature > collectLaboratory.getTemperatureHighest() || + humidity< collectLaboratory.getHumidityLowest() || humidity > collectLaboratory.getHumidityHighest()) { + // 鍙戦�佷紒涓氬井淇¢�氱煡 + threadPoolTaskExecutor.execute(() -> { + // 鏌ヨ鎺ユ敹浜� + User personnel = userMapper.selectById(feTempHumDate.getRegistrarUserId()); + + String message = ""; + message += "涓婂崍瀹為獙瀹ゆ俯搴︽垨婀垮害瓒呰繃鎸囧畾鍖洪棿, 璇峰幓鏌ョ湅"; + message += "\n璇峰幓璧勬簮绠$悊-璁炬柦鍜岀幆澧冩俯搴︿竴娓╂箍搴﹁褰�"; + message += StrUtil.format("\n瀹為獙瀹ゅ尯鍩�: {}", feTempHumDate.getTestAreaName()); + //鍙戦�佷紒涓氬井淇℃秷鎭�氱煡 + try { + WxCpUtils.inform(personnel.getAccount(), message, null); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + } + } + } } @@ -130,7 +173,9 @@ .eq(FeTempHumRecord::getDateId, dateId) // 璁板綍鏃堕棿鍦ㄤ粖澶╀箣鍐� .eq(FeTempHumRecord::getRecordDate, today) - .between(FeTempHumRecord::getMorningTestTime, start, end)); + .between(FeTempHumRecord::getMorningTestTime, start, end) + .orderByDesc(FeTempHumRecord::getTempHumId) + .last("limit 1")); } /** @@ -163,7 +208,9 @@ // 鏌ヨ璇曢獙鍖哄煙 FeTempHumDate feTempHumDate = feTempHumDateMapper.selectOne(Wrappers.<FeTempHumDate>lambdaQuery() .eq(FeTempHumDate::getMonthDate, formattedDate) - .eq(FeTempHumDate::getTestAreaName, collectLaboratory.getLaboratory())); + .eq(FeTempHumDate::getTestAreaName, collectLaboratory.getLaboratory()) + .orderByDesc(FeTempHumDate::getCreateTime) + .last("limit 1")); Integer dateId = feTempHumDate.getDateId(); // 鏌ヨ浠婂ぉ鏄惁鏈夋俯婀垮害璁板綍 FeTempHumRecord feTempHumRecord = record(dateId); @@ -196,10 +243,131 @@ } feTempHumRecordMapper.updateById(feTempHumRecord); + // 鍒ゆ柇娓╂箍搴︽槸鍚﹁秴杩�, 瓒呰繃鎻愰啋 + if (feTempHumDate.getRegistrarUserId() != null) { + if (temperature < collectLaboratory.getTemperatureLowest() || temperature > collectLaboratory.getTemperatureHighest() || + humidity< collectLaboratory.getHumidityLowest() || humidity > collectLaboratory.getHumidityHighest()) { + // 鍙戦�佷紒涓氬井淇¢�氱煡 + threadPoolTaskExecutor.execute(() -> { + // 鏌ヨ鎺ユ敹浜� + User personnel = userMapper.selectById(feTempHumDate.getRegistrarUserId()); + + String message = ""; + message += "涓嬪崍瀹為獙瀹ゆ俯搴︽垨婀垮害瓒呰繃鎸囧畾鍖洪棿, 璇峰幓鏌ョ湅"; + message += "\n璇峰幓璧勬簮绠$悊-璁炬柦鍜岀幆澧冩俯搴︿竴娓╂箍搴﹁褰�"; + message += StrUtil.format("\n瀹為獙瀹ゅ尯鍩�: {}", feTempHumDate.getTestAreaName()); + //鍙戦�佷紒涓氬井淇℃秷鎭�氱煡 + try { + WxCpUtils.inform(personnel.getAccount(), message, null); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + } + + if (feTempHumDate.getTestAreaName().equals("鎭掓俯浜�")) { + // 鍒ゆ柇涓婁笅鍗堟俯宸槸鍚﹁秴杩�1 + if (temperature - Double.valueOf(feTempHumRecord.getMorningTemp()) > 1) { + // 鍙戦�佷紒涓氬井淇¢�氱煡 + threadPoolTaskExecutor.execute(() -> { + // 鏌ヨ鎺ユ敹浜� + User personnel = userMapper.selectById(feTempHumDate.getRegistrarUserId()); + + String message = ""; + message += "鎭掓俯浜屽疄楠屽涓婁笅娓╁樊瓒呰繃 1鈩�, 璇峰幓鏌ョ湅"; + message += "\n璇峰幓璧勬簮绠$悊-璁炬柦鍜岀幆澧冩俯搴︿竴娓╂箍搴﹁褰�"; + message += StrUtil.format("\n瀹為獙瀹ゅ尯鍩�: {}", feTempHumDate.getTestAreaName()); + //鍙戦�佷紒涓氬井淇℃秷鎭�氱煡 + try { + WxCpUtils.inform(personnel.getAccount(), message, null); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + } + } + } } } /** + * 鏄熸湡澶╂墽琛屾坊鍔犵┖鐧芥暟鎹� + * 鑾峰彇娓╁害婀垮害 + */ +// @Scheduled(cron = "0/5 * * * * *") + @Scheduled(cron = "0 0 9 * * 7") // + public void task3() { + checkLaboratoriesSchedule(); + + // 鑾峰彇鎵�鏈夌殑瀹為獙瀹� + List<CollectLaboratory> collectLaboratories = collectLaboratoryMapper.selectList(null); + // 閬嶅巻鑾峰彇瀹為獙瀹ょ紪鍙� 鑾峰彇娓╂箍搴� 淇濆瓨鍦ㄥ搴旂殑 + for (CollectLaboratory collectLaboratory : collectLaboratories) { + // 鏌ヨ璇曢獙鍖哄煙 + FeTempHumDate feTempHumDate = feTempHumDateMapper.selectOne(Wrappers.<FeTempHumDate>lambdaQuery() + .eq(FeTempHumDate::getMonthDate, formattedDate) + .eq(FeTempHumDate::getTestAreaName, collectLaboratory.getLaboratory()) + .orderByDesc(FeTempHumDate::getCreateTime) + .last("limit 1")); + Integer dateId = feTempHumDate.getDateId(); + // 鍒ゆ柇浠婂ぉ鏄惁鏈夋俯婀垮害璁板綍 + // 鑾峰彇浠婂ぉ鐨勬棩鏈� + LocalDate today = LocalDate.now(); + // 鏌ヨ浠婂ぉ鏄惁鏈夋俯婀垮害璁板綍 + Long count = feTempHumRecordMapper.selectCount(Wrappers.<FeTempHumRecord>lambdaQuery() + // 鍝釜瀹為獙瀹� + .eq(FeTempHumRecord::getDateId, dateId) + // 璁板綍鏃堕棿鍦ㄤ粖澶╀箣鍐� + .eq(FeTempHumRecord::getRecordDate, today)); + // 鏌ヨ鍑烘潵灏变唬琛ㄤ粖澶╄褰曡繃浜嗗氨涓嶈褰� + if (!count.equals(0L)) { + // 鏈夋俯搴︽箍搴﹁褰曞氨涓嶈褰� + continue; + } + + // 鍒涘缓浠婂ぉ娓╂箍搴﹁褰曞璞� 璁板綍涓婂崍娓╁害婀垮害 + FeTempHumRecord newFeTempHumRecord = new FeTempHumRecord(); + newFeTempHumRecord.setRecordDate(LocalDate.now()); + newFeTempHumRecord.setDateId(dateId); + feTempHumRecordMapper.insert(newFeTempHumRecord); + } + } + + /** + * 鎵弿瀹為獙瀹ゆ俯搴﹁褰曞垽鏂槸鍚︽湁娌℃湁纭鐨勬俯搴︿俊鎭� + * + */ +// @Scheduled(cron = "0/5 * * * * *") + @Scheduled(cron = "0 0 16 * * 1-6") // 姣忓ぉ15鐐规墽琛屼竴娆� 闄や簡鏄熸湡澶� + public void affirmTempHum() { + // 鏌ヨ鏈夋棩鏈熶絾鏄湭濉啓鍚嶅瓧鐨� + List<FeTempHumRecordDto> feTempHumRecordList = feTempHumRecordMapper.selectNoaffirm(LocalDate.now()); + + for (FeTempHumRecordDto feTempHumRecord : feTempHumRecordList) { + + // 鍙戦�佷紒涓氬井淇¢�氱煡 + threadPoolTaskExecutor.execute(() -> { + // 鏌ヨ鎺ユ敹浜� + User personnel = userMapper.selectById(feTempHumRecord.getRegistrarUserId()); + + String message = ""; + message += "娓╂箍搴﹁褰曠‘璁ら�氱煡"; + message += "\n璇峰幓璧勬簮绠$悊-璁炬柦鍜岀幆澧冩俯搴︿竴娓╂箍搴﹁褰�"; + message += StrUtil.format("\n瀹為獙瀹ゅ尯鍩�: {}", feTempHumRecord.getTestAreaName()); + //鍙戦�佷紒涓氬井淇℃秷鎭�氱煡 + try { + WxCpUtils.inform(personnel.getAccount(), message, null); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + + } + + } + + + /** * 鏍规嵁瀹為獙瀹ょ紪鍙疯幏鍙栨俯搴︽箍搴� * * @param collectTemperatureHumidity 娓╁害婀垮害鏁版嵁 -- Gitblit v1.9.3