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/dto/FeTempHumRecordDto.java                  |   37 ++++++
 cnas-require/src/main/java/com/ruoyi/require/controller/FeTempHumDateController.java      |   17 ++
 cnas-require/src/main/java/com/ruoyi/require/mapper/FeTempHumRecordMapper.java            |    9 +
 cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumDateServiceImpl.java   |   23 +--
 cnas-require/src/main/resources/mapper/FeTempHumDateMapper.xml                            |   19 +--
 cnas-require/src/main/java/com/ruoyi/require/dto/FeTempHumDateDto.java                    |    9 +
 cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumRecordServiceImpl.java |   50 ++++++++
 cnas-require/src/main/resources/mapper/FeTempHumRecordMapper.xml                          |   25 ++++
 basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTreeServiceImpl.java      |   18 ++
 cnas-require/src/main/resources/static/temp_hum_date.docx                                 |    0 
 cnas-require/src/main/java/com/ruoyi/require/pojo/FeTempHumDate.java                      |    4 
 cnas-require/src/main/java/com/ruoyi/require/task/FeTempHumDateSchedule.java              |  119 +++++++++++++++++++
 12 files changed, 295 insertions(+), 35 deletions(-)

diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTreeServiceImpl.java b/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTreeServiceImpl.java
index f6661dc..51bd971 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTreeServiceImpl.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTreeServiceImpl.java
@@ -156,10 +156,18 @@
         // 淇敼鍚嶇О鍖归厤鐨勬爣鍑嗘爲涓嬬殑妫�楠岄」鐩�
         // 鏌ヨ鎵�鏈夊璞�+鍚嶇О鐨勬爲
 
-        List<StandardProductList> standardProductLists = standardProductListService.list(Wrappers.<StandardProductList>lambdaUpdate()
-                .eq(StandardProductList::getSample, standardTree.getSample())
+        LambdaUpdateWrapper<StandardProductList> updateWrapper = Wrappers.<StandardProductList>lambdaUpdate()
+                .eq(StandardProductList::getFactory, standardTree.getFactory())
+                .eq(StandardProductList::getLaboratory, standardTree.getLaboratory())
                 .eq(StandardProductList::getSampleType, standardTree.getSampleType())
-                .eq(StandardProductList::getModel, standardTree.getOldModel()));
+                .eq(StandardProductList::getModel, standardTree.getOldModel());
+        if (StringUtils.isNotBlank(standardTree.getSample()) && !standardTree.getSample().equals("null")) {
+            updateWrapper.eq(StandardProductList::getSample, standardTree.getSample());
+        } else {
+            updateWrapper.isNull(StandardProductList::getSample);
+        }
+
+        List<StandardProductList> standardProductLists = standardProductListService.list(updateWrapper);
         if (CollectionUtils.isNotEmpty(standardProductLists)) {
             for (StandardProductList standardProductList : standardProductLists) {
                 // 淇敼鏍峰搧鍚嶇О
@@ -182,8 +190,10 @@
                 .eq(StandardTree::getSampleType, standardTree.getSampleType())
                 .eq(StandardTree::getModel, standardTree.getOldModel())
                 .set(StandardTree::getModel, standardTree.getModel());
-        if (StringUtils.isNotBlank(standardTree.getSample())) {
+        if (StringUtils.isNotBlank(standardTree.getSample()) && !standardTree.getSample().equals("null")) {
             wrapper.eq(StandardTree::getSample, standardTree.getSample());
+        } else {
+            wrapper.isNull(StandardTree::getSample);
         }
         return standardTreeMapper.update(null, wrapper);
     }
diff --git a/cnas-require/src/main/java/com/ruoyi/require/controller/FeTempHumDateController.java b/cnas-require/src/main/java/com/ruoyi/require/controller/FeTempHumDateController.java
index 008dbd5..09fc247 100644
--- a/cnas-require/src/main/java/com/ruoyi/require/controller/FeTempHumDateController.java
+++ b/cnas-require/src/main/java/com/ruoyi/require/controller/FeTempHumDateController.java
@@ -1,6 +1,7 @@
 package com.ruoyi.require.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.core.domain.Result;
 import com.ruoyi.require.dto.FeTempHumDateDto;
@@ -60,7 +61,21 @@
     @PostMapping("addFeTempHumRecord")
     @ApiOperation("娓╂箍搴﹁褰曟柊澧�/淇敼")
     public Result<FeTempHumRecord> addFeTempHumRecord(@RequestBody FeTempHumRecord feTempHumRecord) {
-        feTempHumRecordService.saveOrUpdate(feTempHumRecord);
+        if (feTempHumRecord.getTempHumId() == null) {
+            feTempHumRecordService.save(feTempHumRecord);
+        } else {
+            feTempHumRecordService.update(Wrappers.<FeTempHumRecord>lambdaUpdate()
+                    .eq(FeTempHumRecord::getTempHumId, feTempHumRecord.getTempHumId())
+                    .set(FeTempHumRecord::getMorningTestTime, feTempHumRecord.getMorningTestTime())
+                    .set(FeTempHumRecord::getMorningTemp, feTempHumRecord.getMorningTemp())
+                    .set(FeTempHumRecord::getMorningHum, feTempHumRecord.getMorningHum())
+                    .set(FeTempHumRecord::getMorningRecorderId, feTempHumRecord.getMorningRecorderId())
+                    .set(FeTempHumRecord::getAfternoonTime, feTempHumRecord.getAfternoonTime())
+                    .set(FeTempHumRecord::getAfternoonTemp, feTempHumRecord.getAfternoonTemp())
+                    .set(FeTempHumRecord::getAfternoonHum, feTempHumRecord.getAfternoonHum())
+                    .set(FeTempHumRecord::getAfternoonRecorderId, feTempHumRecord.getAfternoonRecorderId())
+            );
+        }
         return Result.success();
     }
 
diff --git a/cnas-require/src/main/java/com/ruoyi/require/dto/FeTempHumDateDto.java b/cnas-require/src/main/java/com/ruoyi/require/dto/FeTempHumDateDto.java
index 0ba415c..f1efd6c 100644
--- a/cnas-require/src/main/java/com/ruoyi/require/dto/FeTempHumDateDto.java
+++ b/cnas-require/src/main/java/com/ruoyi/require/dto/FeTempHumDateDto.java
@@ -9,4 +9,13 @@
 
     @ApiModelProperty("鍒涘缓浜�")
     private String createName;
+
+    @ApiModelProperty("璁板綍鍛�")
+    private String registrarUserName;
+
+    @ApiModelProperty("娓╁害鍖洪棿")
+    private String temperatureSection;
+
+    @ApiModelProperty("婀垮害鍖洪棿")
+    private String humiditySection;
 }
diff --git a/cnas-require/src/main/java/com/ruoyi/require/dto/FeTempHumRecordDto.java b/cnas-require/src/main/java/com/ruoyi/require/dto/FeTempHumRecordDto.java
index 0791d8d..3b0bacc 100644
--- a/cnas-require/src/main/java/com/ruoyi/require/dto/FeTempHumRecordDto.java
+++ b/cnas-require/src/main/java/com/ruoyi/require/dto/FeTempHumRecordDto.java
@@ -1,5 +1,6 @@
 package com.ruoyi.require.dto;
 
+import com.deepoove.poi.data.PictureRenderData;
 import com.ruoyi.require.pojo.FeTempHumRecord;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -24,4 +25,40 @@
 
     @ApiModelProperty("妫�娴嬪ぉ")
     private Integer monthDay;
+
+    @ApiModelProperty("鐧昏鍛�")
+    private Integer registrarUserId;
+
+    @ApiModelProperty("璇曢獙鍖哄煙鍚嶇О")
+    private String testAreaName;
+
+    @ApiModelProperty("涓婂崍璁板綍鍛樼鍚嶅湴鍧�")
+    private String morningRecorderUrl;
+
+    @ApiModelProperty("涓嬪崍璁板綍鍛樼鍚嶅湴鍧�")
+    private String afternoonRecorderUrl;
+
+
+    @ApiModelProperty("涓婂崍璁板綍鍛樼鍚嶅湴鍧�")
+    private PictureRenderData morningRecorderUrlRender;
+
+    @ApiModelProperty("涓嬪崍璁板綍鍛樼鍚嶅湴鍧�")
+    private PictureRenderData afternoonRecorderUrlRender;
+
+
+    @ApiModelProperty("鏈�楂樻俯搴�")
+    private Double temperatureHighest;
+
+    @ApiModelProperty("鏈�浣庢俯搴�")
+    private Double temperatureLowest;
+
+    @ApiModelProperty("鏈�楂樻箍搴�")
+    private Double humidityHighest;
+
+    @ApiModelProperty("鏈�浣庢箍搴�")
+    private Double humidityLowest;
+
+    @ApiModelProperty("鏄惁鏄枒闂暟鎹�")
+    private Integer isIssue;
+
 }
diff --git a/cnas-require/src/main/java/com/ruoyi/require/mapper/FeTempHumRecordMapper.java b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeTempHumRecordMapper.java
index 9130a25..a54d597 100644
--- a/cnas-require/src/main/java/com/ruoyi/require/mapper/FeTempHumRecordMapper.java
+++ b/cnas-require/src/main/java/com/ruoyi/require/mapper/FeTempHumRecordMapper.java
@@ -7,6 +7,9 @@
 import com.ruoyi.require.pojo.FeTempHumRecord;
 import org.apache.ibatis.annotations.Param;
 
+import java.time.LocalDate;
+import java.util.List;
+
 /**
  * <p>
  * 璁炬柦鍜岀幆澧冩潯浠�-璁炬柦鍜岀幆澧冩潯浠惰姹�-娓╂箍搴﹁褰� Mapper 鎺ュ彛
@@ -18,4 +21,10 @@
 public interface FeTempHumRecordMapper extends BaseMapper<FeTempHumRecord> {
 
     IPage<FeTempHumRecordDto> getFeTempHumRecordPage(Page page, @Param("dateId") Integer dateId);
+
+    /**
+     * 鏌ヨ鏈夋棩鏈熶絾鏄湭濉啓鍚嶅瓧鐨�
+     * @return
+     */
+    List<FeTempHumRecordDto> selectNoaffirm(LocalDate date);
 }
diff --git a/cnas-require/src/main/java/com/ruoyi/require/pojo/FeTempHumDate.java b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeTempHumDate.java
index f8fb4a3..2e3c360 100644
--- a/cnas-require/src/main/java/com/ruoyi/require/pojo/FeTempHumDate.java
+++ b/cnas-require/src/main/java/com/ruoyi/require/pojo/FeTempHumDate.java
@@ -35,8 +35,8 @@
     @ApiModelProperty("澧炶ˉ淇℃伅")
     private String subjoin;
 
-    @ApiModelProperty("鏄惁纭")
-    private String isAffirm;
+    @ApiModelProperty("鐧昏鍛�")
+    private Integer registrarUserId;
 
     @ApiModelProperty("鍒涘缓鏃堕棿")
     @TableField(fill = FieldFill.INSERT)
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumDateServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumDateServiceImpl.java
index 34959ac..35960b2 100644
--- a/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumDateServiceImpl.java
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumDateServiceImpl.java
@@ -2,11 +2,13 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.deepoove.poi.XWPFTemplate;
 import com.deepoove.poi.config.Configure;
+import com.deepoove.poi.data.Pictures;
 import com.ruoyi.common.utils.QueryWrappers;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
@@ -18,6 +20,7 @@
 import com.ruoyi.require.service.FeTempHumDateService;
 import com.ruoyi.require.service.FeTempHumRecordService;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -46,6 +49,8 @@
 
     @Resource
     private FeTempHumRecordService feTempHumRecordService;
+    @Value("${file.path}")
+    private String imgUrl;
 
     @Override
     public IPage<FeTempHumDateDto> getFeTempHumDate(Page page, FeTempHumDateDto feTempHumDateDto) {
@@ -80,6 +85,10 @@
                 BeanUtils.copyProperties(recordDtos.get(0), recordDto, "month");
                 recordDto.setMorningTestTimeStr(recordDto.getMorningTestTime() == null ? null : recordDto.getMorningTestTime().format(formatter));
                 recordDto.setAfternoonTimeStr(recordDto.getAfternoonTime() == null ? null : recordDto.getAfternoonTime().format(formatter));
+                recordDto.setMorningRecorderUrlRender(StringUtils.isNotBlank(recordDto.getMorningRecorderUrl())
+                        ? Pictures.ofLocal(imgUrl + "/" + recordDto.getMorningRecorderUrl()).create() : null);
+                recordDto.setAfternoonRecorderUrlRender(StringUtils.isNotBlank(recordDto.getAfternoonRecorderUrl())
+                        ? Pictures.ofLocal(imgUrl + "/" + recordDto.getAfternoonRecorderUrl()).create() : null);
             }
 
         }
@@ -128,19 +137,7 @@
         // 娓╂箍搴︾‘璁�
         this.update(Wrappers.<FeTempHumDate>lambdaUpdate()
                 .eq(FeTempHumDate::getDateId, feTempHumDate.getDateId())
-                .set(FeTempHumDate::getSubjoin, feTempHumDate.getSubjoin())
-                .set(FeTempHumDate::getIsAffirm, 1));
+                .set(FeTempHumDate::getRegistrarUserId, feTempHumDate.getRegistrarUserId()));
 
-        // 娓╂箍搴﹁褰曟坊鍔犺褰曞憳
-        Integer userId = SecurityUtils.getUserId().intValue();
-        feTempHumRecordService.update(Wrappers.<FeTempHumRecord>lambdaUpdate()
-                .isNotNull(FeTempHumRecord::getMorningTestTime)
-                .eq(FeTempHumRecord::getDateId, feTempHumDate.getDateId())
-                .set(FeTempHumRecord::getMorningRecorderId, userId));
-
-        feTempHumRecordService.update(Wrappers.<FeTempHumRecord>lambdaUpdate()
-                .isNotNull(FeTempHumRecord::getAfternoonTime)
-                .eq(FeTempHumRecord::getDateId, feTempHumDate.getDateId())
-                .set(FeTempHumRecord::getAfternoonRecorderId, userId));
     }
 }
diff --git a/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumRecordServiceImpl.java b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumRecordServiceImpl.java
index 2e37f6a..0f8f015 100644
--- a/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumRecordServiceImpl.java
+++ b/cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumRecordServiceImpl.java
@@ -1,6 +1,7 @@
 package com.ruoyi.require.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.require.dto.FeTempHumRecordDto;
@@ -22,6 +23,53 @@
 
     @Override
     public IPage<FeTempHumRecordDto> getFeTempHumRecordPage(Page page, Integer dateId) {
-        return baseMapper.getFeTempHumRecordPage(page, dateId);
+        IPage<FeTempHumRecordDto> feTempHumRecordPage = baseMapper.getFeTempHumRecordPage(page, dateId);
+        for (FeTempHumRecordDto record : feTempHumRecordPage.getRecords()) {
+            // 鍒ゆ柇鏄惁鏄棶棰樻暟鎹�
+            // 鍒ゆ柇娓╂箍搴︽槸鍚﹁秴杩囧尯闂�
+            boolean flag = false;
+            if (StringUtils.isNotBlank(record.getMorningTemp())) {
+                Double value = Double.valueOf(record.getMorningTemp());
+                if (value > record.getTemperatureHighest() || value < record.getTemperatureLowest()) {
+                    flag = true;
+                }
+            }
+            if (StringUtils.isNotBlank(record.getMorningHum())) {
+                Double value = Double.valueOf(record.getMorningHum());
+                if (value > record.getHumidityHighest() || value < record.getHumidityLowest()) {
+                    flag = true;
+                }
+            }
+            if (StringUtils.isNotBlank(record.getAfternoonTemp())) {
+                Double value = Double.valueOf(record.getAfternoonTemp());
+                if (value > record.getTemperatureHighest() || value < record.getTemperatureLowest()) {
+                    flag = true;
+                }
+            }
+            if (StringUtils.isNotBlank(record.getAfternoonHum())) {
+                Double value = Double.valueOf(record.getAfternoonHum());
+                if (value > record.getHumidityHighest() || value < record.getHumidityLowest()) {
+                    flag = true;
+                }
+            }
+
+            // 鍒ゆ柇鏄惁鏄亽娓╀簩, 鏄亽娓╀簩涓婁笅娓╁害鏄惁瓒呰繃1鎽勬皬搴�
+            if (StringUtils.isNotBlank(record.getTestAreaName()) && record.getTestAreaName().equals("鎭掓俯浜�")) {
+                if (StringUtils.isNotBlank(record.getMorningTemp()) && StringUtils.isNotBlank(record.getAfternoonTemp())) {
+                    if (Double.valueOf(record.getAfternoonTemp()) - Double.valueOf(record.getMorningTemp()) > 1) {
+                        flag = true;
+                    }
+                }
+            }
+
+            if (flag) {
+                record.setIsIssue(1);
+            } else {
+                record.setIsIssue(0);
+            }
+
+
+        }
+        return feTempHumRecordPage;
     }
 }
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 651f615..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);
             }
         }
@@ -113,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);
+                        }
+                    });
+                }
+            }
+
         }
     }
 
@@ -202,6 +243,50 @@
             }
             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);
+                            }
+                        });
+                    }
+                }
+            }
         }
     }
 
@@ -249,6 +334,40 @@
     }
 
     /**
+     * 鎵弿瀹為獙瀹ゆ俯搴﹁褰曞垽鏂槸鍚︽湁娌℃湁纭鐨勬俯搴︿俊鎭�
+     *
+     */
+//    @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 娓╁害婀垮害鏁版嵁
diff --git a/cnas-require/src/main/resources/mapper/FeTempHumDateMapper.xml b/cnas-require/src/main/resources/mapper/FeTempHumDateMapper.xml
index 070c999..299d25d 100644
--- a/cnas-require/src/main/resources/mapper/FeTempHumDateMapper.xml
+++ b/cnas-require/src/main/resources/mapper/FeTempHumDateMapper.xml
@@ -2,22 +2,15 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.require.mapper.FeTempHumDateMapper">
 
-    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
-    <resultMap id="BaseResultMap" type="com.ruoyi.require.pojo.FeTempHumDate">
-        <id column="date_id" property="dateId" />
-        <result column="month_date" property="monthDate" />
-        <result column="test_area_name" property="testAreaName" />
-        <result column="create_time" property="createTime" />
-        <result column="update_time" property="updateTime" />
-        <result column="create_user" property="createUser" />
-        <result column="update_user" property="updateUser" />
-    </resultMap>
-
     <select id="getFeTempHumDate" resultType="com.ruoyi.require.dto.FeTempHumDateDto">
         select * from (
-        select c.*, u.name create_name
+        select c.*,
+        u.name registrar_user_name,
+        concat('鈮�', cl.temperature_lowest, '&amp;', '鈮�', cl.temperature_highest) temperature_section,
+        concat('鈮�', cl.humidity_lowest, '&amp;', '鈮�', cl.humidity_highest) humidity_section
         from cnas_fe_temp_hum_date c
-        left join user u on c.create_user = u.id) a
+        left join user u on c.registrar_user_id = u.id
+        left join collect_laboratory cl on cl.laboratory = c.test_area_name) a
         <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
             ${ew.customSqlSegment}
         </if>
diff --git a/cnas-require/src/main/resources/mapper/FeTempHumRecordMapper.xml b/cnas-require/src/main/resources/mapper/FeTempHumRecordMapper.xml
index b6c8d4b..fb79da3 100644
--- a/cnas-require/src/main/resources/mapper/FeTempHumRecordMapper.xml
+++ b/cnas-require/src/main/resources/mapper/FeTempHumRecordMapper.xml
@@ -3,11 +3,34 @@
 <mapper namespace="com.ruoyi.require.mapper.FeTempHumRecordMapper">
 
     <select id="getFeTempHumRecordPage" resultType="com.ruoyi.require.dto.FeTempHumRecordDto">
-        select c.*, u1.name afternoon_recorder_user, u2.name morning_recorder_user
+        select c.*,
+               u1.name          afternoon_recorder_user,
+               u2.name          morning_recorder_user,
+               u1.signature_url afternoon_recorder_url,
+               u2.signature_url morning_recorder_url,
+               cl.temperature_lowest,
+               cl.temperature_highest,
+               cl.humidity_lowest,
+               cl.humidity_highest,
+               cd.test_area_name
         from cnas_fe_temp_hum_record c
                  left join user u1 on u1.id = c.afternoon_recorder_id
                  left join user u2 on u2.id = c.morning_recorder_id
+                 left join cnas_fe_temp_hum_date cd on cd.date_id = c.date_id
+                 left join collect_laboratory cl on cl.laboratory = cd.test_area_name
         where c.date_id = #{dateId}
         ORDER BY c.record_date desc
     </select>
+
+    <!-- 鏌ヨ鏈夋棩鏈熶絾鏄湭濉啓鍚嶅瓧鐨� -->
+    <select id="selectNoaffirm" resultType="com.ruoyi.require.dto.FeTempHumRecordDto">
+        select cr.*,
+               cd.registrar_user_id,
+               cd.test_area_name
+        from cnas_fe_temp_hum_record cr
+                 left join cnas_fe_temp_hum_date cd on cd.date_id = cr.date_id
+        where cr.record_date = #{date}
+          and (morning_test_time is not null and morning_recorder_id is null)
+          and cd.registrar_user_id is not null
+    </select>
 </mapper>
diff --git a/cnas-require/src/main/resources/static/temp_hum_date.docx b/cnas-require/src/main/resources/static/temp_hum_date.docx
index 2c91d51..422869a 100644
--- a/cnas-require/src/main/resources/static/temp_hum_date.docx
+++ b/cnas-require/src/main/resources/static/temp_hum_date.docx
Binary files differ

--
Gitblit v1.9.3