zhuo
2025-04-10 1b0b86833609f1d0a25b0bc84d21796581629f4e
温湿度报检功能调整
已修改12个文件
330 ■■■■ 文件已修改
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTreeServiceImpl.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/controller/FeTempHumDateController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/dto/FeTempHumDateDto.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/dto/FeTempHumRecordDto.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/FeTempHumRecordMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/FeTempHumDate.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumDateServiceImpl.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/FeTempHumRecordServiceImpl.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/task/FeTempHumDateSchedule.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/mapper/FeTempHumDateMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/mapper/FeTempHumRecordMapper.xml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/static/temp_hum_date.docx 补丁 | 查看 | 原始文档 | blame | 历史
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);
    }
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();
    }
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;
}
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;
}
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);
}
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)
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));
    }
}
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;
    }
}
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 温度湿度数据
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>
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>
cnas-require/src/main/resources/static/temp_hum_date.docx
Binary files differ