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