From 5a4ce1d3f7d37d01c5a55cbf0006af6344bbe889 Mon Sep 17 00:00:00 2001 From: zhuo <2089219845@qq.com> Date: 星期四, 06 三月 2025 17:16:03 +0800 Subject: [PATCH] 添加温度数采 --- cnas-require/src/main/java/com/ruoyi/require/pojo/CollectTemperatureHumidity.java | 66 +++++++++ cnas-require/src/main/java/com/ruoyi/require/pojo/CollectLaboratory.java | 41 +++++ ruoyi-admin/src/main/resources/application-prod.yml | 5 ruoyi-admin/src/main/resources/application-druid.yml | 5 cnas-require/src/main/java/com/ruoyi/require/mapper/CollectTemperatureHumidityMapper.java | 15 ++ cnas-require/src/main/java/com/ruoyi/require/mapper/CollectLaboratoryMapper.java | 15 ++ cnas-require/src/main/java/com/ruoyi/require/task/FeTempHumDateSchedule.java | 219 +++++++++++++++++++++++++++++++ 7 files changed, 366 insertions(+), 0 deletions(-) diff --git a/cnas-require/src/main/java/com/ruoyi/require/mapper/CollectLaboratoryMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/CollectLaboratoryMapper.java new file mode 100644 index 0000000..9452260 --- /dev/null +++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/CollectLaboratoryMapper.java @@ -0,0 +1,15 @@ +package com.ruoyi.require.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.require.pojo.CollectLaboratory; + +/** + * 娓╂箍搴﹂噰闆嗗疄楠屽缁戝畾 + * + * @author zhuo + * @since 2024-12-18 + */ +public interface CollectLaboratoryMapper extends BaseMapper<CollectLaboratory> { + +} + diff --git a/cnas-require/src/main/java/com/ruoyi/require/mapper/CollectTemperatureHumidityMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/CollectTemperatureHumidityMapper.java new file mode 100644 index 0000000..957f967 --- /dev/null +++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/CollectTemperatureHumidityMapper.java @@ -0,0 +1,15 @@ +package com.ruoyi.require.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.require.pojo.CollectTemperatureHumidity; + +/** + * 娓╂箍搴﹂噰闆嗕俊鎭� + * + * @author zhuo + * @since 2024-12-18 + */ +public interface CollectTemperatureHumidityMapper extends BaseMapper<CollectTemperatureHumidity> { + +} + diff --git a/cnas-require/src/main/java/com/ruoyi/require/pojo/CollectLaboratory.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/CollectLaboratory.java new file mode 100644 index 0000000..bb3e525 --- /dev/null +++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/CollectLaboratory.java @@ -0,0 +1,41 @@ +package com.ruoyi.require.pojo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 娓╂箍搴﹂噰闆嗗疄楠屽缁戝畾 + * + * @author zhuo + * @since 2024-12-18 + */ +@Data +@TableName("collect_laboratory") +public class CollectLaboratory { + + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty("瀹為獙瀹�") + private String laboratory; + + @ApiModelProperty("娓╂箍搴﹁澶囩紪鍙�") + private String deviceCode; + + @ApiModelProperty("鏈�楂樻俯搴�") + private Double temperatureHighest; + + @ApiModelProperty("鏈�浣庢俯搴�") + private Double temperatureLowest; + + @ApiModelProperty("鏈�楂樻箍搴�") + private Double humidityHighest; + + @ApiModelProperty("鏈�浣庢箍搴�") + private Double humidityLowest; + +} + diff --git a/cnas-require/src/main/java/com/ruoyi/require/pojo/CollectTemperatureHumidity.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/CollectTemperatureHumidity.java new file mode 100644 index 0000000..95b2f27 --- /dev/null +++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/CollectTemperatureHumidity.java @@ -0,0 +1,66 @@ +package com.ruoyi.require.pojo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * 娓╂箍搴﹂噰闆嗕俊鎭� + * + * @author zhuo + * @since 2024-12-18 + */ +@Data +@TableName("collect_temperature_humidity") +public class CollectTemperatureHumidity { + + @TableId(type = IdType.AUTO) + private Integer superviseId; + //7801娓╁害 + private Double code7801Temperature; + //7801婀垮害 + private Double code7801Humidity; + //7802娓╁害 + private Double code7802Temperature; + //7802婀垮害 + private Double code7802Humidity; + //7803娓╁害 + private Double code7803Temperature; + //7803婀垮害 + private Double code7803Humidity; + //7804娓╁害 + private Double code7804Temperature; + //7804婀垮害 + private Double code7804Humidity; + //7805娓╁害 + private Double code7805Temperature; + //7805婀垮害 + private Double code7805Humidity; + //7806娓╁害 + private Double code7806Temperature; + //7806婀垮害 + private Double code7806Humidity; + //7807娓╁害 + private Double code7807Temperature; + //7807婀垮害 + private Double code7807Humidity; + //7808娓╁害 + private Double code7808Temperature; + //7808婀垮害 + private Double code7808Humidity; + //7809娓╁害 + private Double code7809Temperature; + //7809婀垮害 + private Double code7809Humidity; + //7810娓╁害 + private Double code7810Temperature; + //7810婀垮害 + private Double code7810Humidity; + //閲囬泦鏃堕棿 + private Date collectTime; + +} + 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 new file mode 100644 index 0000000..5f32fd2 --- /dev/null +++ b/cnas-require/src/main/java/com/ruoyi/require/task/FeTempHumDateSchedule.java @@ -0,0 +1,219 @@ +package com.ruoyi.require.task; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.require.mapper.CollectLaboratoryMapper; +import com.ruoyi.require.mapper.CollectTemperatureHumidityMapper; +import com.ruoyi.require.mapper.FeTempHumDateMapper; +import com.ruoyi.require.mapper.FeTempHumRecordMapper; +import com.ruoyi.require.pojo.CollectLaboratory; +import com.ruoyi.require.pojo.CollectTemperatureHumidity; +import com.ruoyi.require.pojo.FeTempHumDate; +import com.ruoyi.require.pojo.FeTempHumRecord; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.lang.reflect.Field; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalTime; +import java.time.format.DateTimeFormatter; +import java.util.Calendar; +import java.util.List; + +/** + * Author: yuan + * Date: 2024-12-19 鏄熸湡鍥� 8:33:56 + * Description: + */ +@Component +public class FeTempHumDateSchedule { + + @Autowired + private CollectLaboratoryMapper collectLaboratoryMapper; + @Autowired + private FeTempHumDateMapper feTempHumDateMapper; + @Autowired + private CollectTemperatureHumidityMapper collectTemperatureHumidityMapper; + @Autowired + private FeTempHumRecordMapper feTempHumRecordMapper; + + // 鑾峰彇褰撳墠骞翠唤鍜屾湀浠� 濡傦細2024-11 + private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); + private String formattedDate = sdf.format(Calendar.getInstance().getTime()); + + /** + * 妫�鏌ュ疄楠屽鏄惁鏈変换鍔� + */ + public synchronized void checkLaboratoriesSchedule() { + // 鑾峰彇褰撳墠骞翠唤鍜屾湀浠� 濡傦細2024-11 + formattedDate = sdf.format(Calendar.getInstance().getTime()); + // 鏌ヨ鎵�鏈夌殑瀹為獙瀹� + List<CollectLaboratory> collectLaboratories = collectLaboratoryMapper.selectList(null); + // 閬嶅巻瀹為獙瀹わ紝鍒ゆ柇浠诲姟鍒楄〃涓槸鍚﹀瓨璇ュ疄楠屽鐨勪换鍔� + for (CollectLaboratory collectLaboratory : collectLaboratories) { + // 鏌ヨ鏁版嵁搴撲腑鏄惁瀛樺湪璇ュ疄楠屽鐨勪换鍔� + int count = feTempHumDateMapper.selectFeTempHumDateIncludeFormattedDate(collectLaboratory.getLaboratory(), formattedDate); + // 鏌ヨ缁撴灉涓�0锛岃鏄庢暟鎹簱涓笉瀛樺湪璇ュ疄楠屽鐨勪换鍔★紝闇�瑕佹柊澧� + if (count == 0) { + FeTempHumDate feTempHumDate = new FeTempHumDate(); + feTempHumDate.setMonthDate(formattedDate); + feTempHumDate.setTestAreaName(collectLaboratory.getLaboratory()); + feTempHumDateMapper.insert(feTempHumDate); + } + } + } + + /** + * 姣忓ぉ9鐐规墽琛屼竴娆� 闄や簡鏄熸湡澶� + * 鑾峰彇娓╁害婀垮害 + */ +// @Scheduled(cron = "0/5 * * * * *") + @Scheduled(cron = "0 0 9 * * 1-6") // 姣忓ぉ9鐐规墽琛屼竴娆� 闄や簡鏄熸湡澶� + public void task1() { + checkLaboratoriesSchedule(); + // 鏍规嵁鏃堕棿闄嶅簭锛岃幏鍙栧埌鏈�鏂扮殑涓�鏉℃暟鎹� + CollectTemperatureHumidity collectTemperatureHumidity = collectTemperatureHumidityMapper.selectOne(Wrappers.<CollectTemperatureHumidity>lambdaQuery() + .orderByDesc(CollectTemperatureHumidity::getCollectTime) + .last("limit 1")); + + // 鑾峰彇鎵�鏈夌殑瀹為獙瀹� + List<CollectLaboratory> collectLaboratories = collectLaboratoryMapper.selectList(null); + // 閬嶅巻鑾峰彇瀹為獙瀹ょ紪鍙� 鑾峰彇娓╂箍搴� 淇濆瓨鍦ㄥ搴旂殑 + for (CollectLaboratory collectLaboratory : collectLaboratories) { + // 瀹為獙瀹ょ紪鍙� + int labNumber = Integer.parseInt(collectLaboratory.getDeviceCode()); + // 鏍规嵁瀹為獙瀹ょ紪鍙锋嫾鎺ュ搴旂殑婀垮害鍜屾俯搴﹀瓧娈� + String temperatureField = "code" + labNumber + "Temperature"; + String humidityField = "code" + labNumber + "Humidity"; + // 鑾峰彇娓╁害 + Double temperature = getFieldValue(collectTemperatureHumidity, temperatureField) != null ? (Double) getFieldValue(collectTemperatureHumidity, temperatureField) : Double.valueOf(00.0); + // 鑾峰彇婀垮害 + Double humidity = getFieldValue(collectTemperatureHumidity, humidityField) != null ? (Double) getFieldValue(collectTemperatureHumidity, humidityField) : Double.valueOf(00.0); + // 鏌ヨ璇曢獙鍖哄煙 + FeTempHumDate feTempHumDate = feTempHumDateMapper.selectOne(Wrappers.<FeTempHumDate>lambdaQuery() + .eq(FeTempHumDate::getMonthDate, formattedDate) + .eq(FeTempHumDate::getTestAreaName, collectLaboratory.getLaboratory())); + Integer dateId = feTempHumDate.getDateId(); + // 鍒ゆ柇浠婂ぉ鏄惁鏈夋俯婀垮害璁板綍 + FeTempHumRecord feTempHumRecord = record(dateId); + // 鏌ヨ鍑烘潵灏变唬琛ㄤ粖澶╄褰曡繃浜嗗氨涓嶈褰� + if (feTempHumRecord != null) { + // 鏈夋俯搴︽箍搴﹁褰曞氨涓嶈褰� + continue; + } + + // 鍒涘缓浠婂ぉ娓╂箍搴﹁褰曞璞� 璁板綍涓婂崍娓╁害婀垮害 + FeTempHumRecord newFeTempHumRecord = new FeTempHumRecord(); + newFeTempHumRecord.setRecordDate(LocalDate.now()); + newFeTempHumRecord.setMorningTestTime(LocalTime.now()); + newFeTempHumRecord.setMorningTemp(temperature.toString()); + newFeTempHumRecord.setMorningHum(humidity.toString()); + newFeTempHumRecord.setDateId(dateId); + feTempHumRecordMapper.insert(newFeTempHumRecord); + } + } + + /** + * 鍒ゆ柇浠婂ぉ鏄惁鏈夋俯婀垮害璁板綍 + */ + private FeTempHumRecord record(Integer dateId) { + // 鑾峰彇浠婂ぉ鐨勬棩鏈� + LocalDate today = LocalDate.now(); + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss"); + // 鑾峰彇浠婂ぉ鐨� 00:00:00 鍜� 23:59:59 + String start = today.atStartOfDay().format(dateTimeFormatter); // 00:00:00 + String end = today.atTime(LocalTime.MAX).format(dateTimeFormatter); // 23:59:59 + // 鏌ヨ浠婂ぉ鏄惁鏈夋俯婀垮害璁板綍 + return feTempHumRecordMapper.selectOne(Wrappers.<FeTempHumRecord>lambdaQuery() + // 鍝釜瀹為獙瀹� + .eq(FeTempHumRecord::getDateId, dateId) + // 璁板綍鏃堕棿鍦ㄤ粖澶╀箣鍐� + .eq(FeTempHumRecord::getRecordDate, today) + .between(FeTempHumRecord::getMorningTestTime, start, end)); + } + + /** + * 姣忓ぉ14鐐规墽琛屼竴娆� 闄や簡鏄熸湡鍏拰鏄熸湡澶� + * 鑾峰彇娓╁害婀垮害 + */ +// @Scheduled(cron = "0/5 * * * * *") + @Scheduled(cron = "0 0 14 * * 1-5") // 姣忓ぉ14鐐规墽琛屼竴娆� 闄や簡鏄熸湡鍏拰鏄熸湡澶� + public void task2() { + + // 妫�鏌ュ疄楠屽鏄惁鏈変换鍔� 濡傛灉娌℃湁鏂板浠诲姟 + checkLaboratoriesSchedule(); + // 鏍规嵁鏃堕棿闄嶅簭锛岃幏鍙栧埌鏈�鏂扮殑涓�鏉℃暟鎹� + CollectTemperatureHumidity collectTemperatureHumidity = collectTemperatureHumidityMapper.selectOne(Wrappers.<CollectTemperatureHumidity>lambdaQuery() + .orderByDesc(CollectTemperatureHumidity::getCollectTime) + .last("limit 1")); + // 鑾峰彇鎵�鏈夌殑瀹為獙瀹� + List<CollectLaboratory> collectLaboratories = collectLaboratoryMapper.selectList(null); + // 閬嶅巻鑾峰彇瀹為獙瀹ょ紪鍙� 鑾峰彇娓╂箍搴� 淇濆瓨鍦ㄥ搴旂殑 + for (CollectLaboratory collectLaboratory : collectLaboratories) { + // 瀹為獙瀹ょ紪鍙� + int labNumber = Integer.parseInt(collectLaboratory.getDeviceCode()); + // 鏍规嵁瀹為獙瀹ょ紪鍙锋嫾鎺ュ搴旂殑婀垮害鍜屾俯搴﹀瓧娈� + String temperatureField = "code" + labNumber + "Temperature"; + String humidityField = "code" + labNumber + "Humidity"; + // 鑾峰彇娓╁害 + Double temperature = getFieldValue(collectTemperatureHumidity, temperatureField) != null ? (Double) getFieldValue(collectTemperatureHumidity, temperatureField) : Double.valueOf(00.0); + // 鑾峰彇婀垮害 + Double humidity = getFieldValue(collectTemperatureHumidity, humidityField) != null ? (Double) getFieldValue(collectTemperatureHumidity, humidityField) : Double.valueOf(00.0); + // 鏌ヨ璇曢獙鍖哄煙 + FeTempHumDate feTempHumDate = feTempHumDateMapper.selectOne(Wrappers.<FeTempHumDate>lambdaQuery() + .eq(FeTempHumDate::getMonthDate, formattedDate) + .eq(FeTempHumDate::getTestAreaName, collectLaboratory.getLaboratory())); + Integer dateId = feTempHumDate.getDateId(); + // 鏌ヨ浠婂ぉ鏄惁鏈夋俯婀垮害璁板綍 + FeTempHumRecord feTempHumRecord = record(dateId); + // 濡傛灉娌℃湁鏌ヨ缁撴灉灏辫鏄庝笂鍗堟病鏈夎褰� + if (feTempHumRecord == null) { + // 鍒涘缓浠婂ぉ娓╂箍搴﹁褰曞璞� 璁板綍涓嬪崍娓╁害婀垮害 + FeTempHumRecord newFeTempHumRecord = new FeTempHumRecord(); + newFeTempHumRecord.setAfternoonTime(LocalTime.now()); + newFeTempHumRecord.setAfternoonTemp(temperature.toString()); + newFeTempHumRecord.setAfternoonHum(humidity.toString()); + newFeTempHumRecord.setDateId(dateId); + feTempHumRecordMapper.insert(newFeTempHumRecord); + continue; + } + + // 鏌ヨ鍑烘潵灏变唬琛ㄤ粖澶╄褰曡繃 鍐嶅垽鏂笅鍗堟湁璁板綍杩囨病鏈� + // 娓╁害鏄惁璁板綍杩� + if (feTempHumRecord.getAfternoonTemp() == null) { + // 娌℃湁灏辫嚜鍔ㄨ褰� + feTempHumRecord.setAfternoonTemp(temperature.toString()); + // 淇敼璁板綍鏃堕棿 + feTempHumRecord.setAfternoonTime(LocalTime.now()); + } + // 婀垮害鏄惁璁板綍杩� + if (feTempHumRecord.getAfternoonHum() == null) { + // 娌℃湁灏辫嚜鍔ㄨ褰� + feTempHumRecord.setAfternoonHum(humidity.toString()); + // 淇敼璁板綍鏃堕棿 + feTempHumRecord.setAfternoonTime(LocalTime.now()); + } + feTempHumRecordMapper.updateById(feTempHumRecord); + + } + } + + /** + * 鏍规嵁瀹為獙瀹ょ紪鍙疯幏鍙栨俯搴︽箍搴� + * + * @param collectTemperatureHumidity 娓╁害婀垮害鏁版嵁 + * @param fieldName 瀛楁鍚� + * @return 瀛楁鍊� + */ + public static Object getFieldValue(CollectTemperatureHumidity collectTemperatureHumidity, String fieldName) { + try { + Field field = collectTemperatureHumidity.getClass().getDeclaredField(fieldName); + field.setAccessible(true); // 璁剧疆鍙互璁块棶绉佹湁瀛楁 + return field.get(collectTemperatureHumidity); // 鑾峰彇瀛楁鐨勫�� + } catch (NoSuchFieldException | IllegalAccessException e) { + e.printStackTrace(); + return null; + } + } +} diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml index 722d41f..dfad74e 100644 --- a/ruoyi-admin/src/main/resources/application-druid.yml +++ b/ruoyi-admin/src/main/resources/application-druid.yml @@ -98,6 +98,11 @@ cache-enabled: false log-impl: org.apache.ibatis.logging.stdout.StdOutImpl +# Swagger閰嶇疆 +swagger: + # 鏄惁寮�鍚痵wagger + enabled: true + minio: endpoint: http://114.132.189.42/ port: 7019 diff --git a/ruoyi-admin/src/main/resources/application-prod.yml b/ruoyi-admin/src/main/resources/application-prod.yml index 8b41a4d..6f68d66 100644 --- a/ruoyi-admin/src/main/resources/application-prod.yml +++ b/ruoyi-admin/src/main/resources/application-prod.yml @@ -98,6 +98,11 @@ cache-enabled: false log-impl: # org.apache.ibatis.logging.stdout.StdOutImpl +# Swagger閰嶇疆 +swagger: + # 鏄惁寮�鍚痵wagger + enabled: true + minio: endpoint: http://114.132.189.42/ port: 7019 -- Gitblit v1.9.3