zss
2025-04-17 8d87f13ab4c7539b4f5d0c5ce0ada6838993a2fb
7.1设备使用记录
已修改4个文件
已添加6个文件
341 ■■■■■ 文件已修改
cnas-process/src/main/java/com/ruoyi/process/controller/ProcessOrderDeviceController.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/InspectionOrderMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessOrderDeviceMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessOrderDevice.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/ProcessOrderDeviceService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/InspectionOrderServiceImpl.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessOrderDeviceServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/InspectionOrderMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/resources/mapper/ProcessOrderDeviceMapper.xml 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/InsProductResultMapper.xml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/controller/ProcessOrderDeviceController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,64 @@
package com.ruoyi.process.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.device.pojo.DeviceRecord;
import com.ruoyi.device.service.DeviceRecordService;
import com.ruoyi.process.pojo.ProcessOrderDevice;
import com.ruoyi.process.service.ProcessOrderDeviceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * cnas设备使用记录表(7.1检验委托单) å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author
 * @since 2025-04-17 03:51:48
 */
@Api(tags = "cnas设备使用记录")
@RestController
@RequestMapping("/processOrderDevice")
public class ProcessOrderDeviceController {
    @Autowired
    private ProcessOrderDeviceService processOrderDeviceService;
    @ApiOperation(value = "设备使用记录查询")
    @GetMapping("/deviceRecordPage")
    public Result deviceRecordPage(Integer deviceId, Page page, String sampleCode, String managementNumber) {
        return Result.success(processOrderDeviceService.deviceRecordPage(deviceId, page, sampleCode, managementNumber));
    }
    @ApiOperation(value = "新增")
    @PostMapping("/saveDeviceRecord")
    public Result saveDeviceRecords(@RequestBody ProcessOrderDevice processOrderDevice) {
        return Result.success(processOrderDeviceService.save(processOrderDevice));
    }
    /**
     * ç¼–辑设备使用记录
     * @param processOrderDevice
     * @return
     */
    @ApiOperation(value = "修改")
    @PostMapping("/updateDeviceRecord")
    public Result updateDeviceRecord(@RequestBody ProcessOrderDevice processOrderDevice) {
        return Result.success(processOrderDeviceService.updateById(processOrderDevice));
    }
    @DeleteMapping("/deleteDeviceRecord")
    public Result deleteDeviceRecords(@RequestParam("id") Integer id) {
        return Result.success(processOrderDeviceService.removeById(id));
    }
    @ApiOperation(value = "设备使用记录导出")
    @GetMapping("/exportUseRecord")
    public void exportUseRecord(Integer deviceId, String exportDate, HttpServletResponse response){
        //processOrderDeviceService.exportUseRecord(deviceId, exportDate, response);
    }
}
cnas-process/src/main/java/com/ruoyi/process/mapper/InspectionOrderMapper.java
@@ -9,6 +9,9 @@
import com.ruoyi.process.pojo.InspectionOrder;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * æ£€éªŒå§”托单 Mapper æŽ¥å£
@@ -34,4 +37,5 @@
     * @return
     */
    IPage<InsOrder> getInsOrderOnInspection(Page page, @Param("ew") QueryWrapper<InsOrder> insOrderQueryWrapper);
}
cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessOrderDeviceMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package com.ruoyi.process.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.process.pojo.ProcessOrderDevice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Set;
/**
 * <p>
 * cnas设备使用记录表(7.1检验委托单) Mapper æŽ¥å£
 * </p>
 *
 * @author
 * @since 2025-04-17 03:51:48
 */
public interface ProcessOrderDeviceMapper extends BaseMapper<ProcessOrderDevice> {
    Set<String> selectDeviceNumber(@Param("inspectionOrderId") Integer inspectionOrderId);
    List<Integer> selectDeviceIdsByNumbers(@Param("orderDeviceNumbers") Set<String> orderDeviceNumbers);
    IPage<ProcessOrderDevice> deviceRecordPage(@Param("deviceId") Integer deviceId, @Param("page") Page page, @Param("sampleCode") String sampleCode, @Param("managementNumber") String managementNumber);
}
cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessOrderDevice.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
package com.ruoyi.process.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
 * <p>
 * cnas设备使用记录表(7.1检验委托单)
 * </p>
 *
 * @author
 * @since 2025-04-17 03:51:48
 */
@Getter
@Setter
@TableName("cnas_process_order_device")
@ApiModel(value = "ProcessOrderDevice对象", description = "cnas设备使用记录表(7.1检验委托单)")
public class ProcessOrderDevice implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    private Integer deviceId;
    @ApiModelProperty("委托单id")
    private Integer inspectionOrderId;
    @ApiModelProperty("样品编号")
    private String sampleCode;
    @ApiModelProperty("使用前0代表不正常1代表正常")
    private Integer useBefore;
    @ApiModelProperty("使用后0代表不正常1代表正常")
    private Integer useAfter;
    @ApiModelProperty("异常情况")
    private String abnormal;
    @ApiModelProperty("使用开始日期")
    private LocalDateTime useStartDate;
    @ApiModelProperty("使用人id")
    private Integer usePersonId;
    @ApiModelProperty("使用人")
    private String usePerson;
    @ApiModelProperty("备注")
    private String remark;
    @ApiModelProperty("使用结束时间")
    private LocalDateTime useEndDate;
    @ApiModelProperty("设备名称")
    @TableField(select = false,exist = false)
    private String deviceName;
    @ApiModelProperty("设备编号")
    @TableField(select = false,exist = false)
    private String managementNumber;
}
cnas-process/src/main/java/com/ruoyi/process/service/ProcessOrderDeviceService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package com.ruoyi.process.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.process.pojo.ProcessOrderDevice;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * <p>
 * cnas设备使用记录表(7.1检验委托单) æœåŠ¡ç±»
 * </p>
 *
 * @author
 * @since 2025-04-17 03:51:48
 */
public interface ProcessOrderDeviceService extends IService<ProcessOrderDevice> {
    IPage<ProcessOrderDevice> deviceRecordPage(Integer deviceId, Page page, String sampleCode, String managementNumber);
}
cnas-process/src/main/java/com/ruoyi/process/service/impl/InspectionOrderServiceImpl.java
@@ -1,5 +1,8 @@
package com.ruoyi.process.service.impl;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -7,22 +10,28 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.inspect.pojo.InsOrder;
import com.ruoyi.inspect.pojo.InsReport;
import com.ruoyi.inspect.dto.InsOrderDeviceRecordDto;
import com.ruoyi.inspect.mapper.InsProductResultMapper;
import com.ruoyi.inspect.pojo.*;
import com.ruoyi.inspect.service.InsOrderService;
import com.ruoyi.inspect.service.InsReportService;
import com.ruoyi.inspect.util.HackLoopTableRenderPolicy;
import com.ruoyi.process.dto.InspectionOrderDto;
import com.ruoyi.process.dto.InspectionOrderExportDto;
import com.ruoyi.process.mapper.InspectionOrderMapper;
import com.ruoyi.process.mapper.ProcessOrderDeviceMapper;
import com.ruoyi.process.pojo.InspectionOrder;
import com.ruoyi.process.pojo.InspectionOrderDetail;
import com.ruoyi.process.pojo.ProcessOrderDevice;
import com.ruoyi.process.pojo.ProcessReport;
import com.ruoyi.process.service.InspectionOrderDetailService;
import com.ruoyi.process.service.InspectionOrderService;
import com.ruoyi.process.service.ProcessOrderDeviceService;
import com.ruoyi.process.service.ProcessReportService;
import com.ruoyi.system.mapper.UserMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -42,8 +51,8 @@
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
 * <p>
@@ -66,6 +75,14 @@
    private String wordUrl;
    @Resource
    private ProcessReportService processReportService;
    @Resource
    private ProcessOrderDeviceMapper processOrderDeviceMapper;
    @Resource
    private InsProductResultMapper insProductResultMapper;
    @Resource
    private ProcessOrderDeviceService processOrderDeviceService;
    @Resource
    private UserMapper userMapper;
    /**
@@ -122,7 +139,7 @@
            }
            inspectionOrderDetailService.saveBatch(inspectionOrder.getOrderDetailList());
        }
        //新增7.8报告结果
        /*新增7.8报告结果*/
        ProcessReport processReport = new ProcessReport();
        processReport.setInspectionOrderId(inspectionOrder.getInsOrderId());
        processReport.setInsReportCode(inspectionOrder.getEntrustCode());//报告编号=委托编号
@@ -139,7 +156,50 @@
        processReport.setSendUser(64);//发送人固定
        processReport.setSignatory(inspectionOrder.getCommissionUser());//签收人=委托人
        processReportService.save(processReport);
        /*新增7.1委托单对应的设备使用记录*/
        addDeviceRecord(inspectionOrder,insReport.getWriteUserId());
        return true;
    }
    private synchronized void addDeviceRecord(InspectionOrder inspectionOrder,Integer userId) {
        // æŸ¥è¯¢è®¾å¤‡ä½¿ç”¨è®°å½•查询该订单的使用记录
        Set<String> recordCodeset = processOrderDeviceMapper.selectDeviceNumber(inspectionOrder.getInspectionOrderId());
        // èŽ·å–è®¢å•è®¾å¤‡ç¼–å·
        List<InsProductResult> resultList = insProductResultMapper.selectResultByOrderId(inspectionOrder.getInsOrderId());
        Set<String> deviceCodeSet = new HashSet<>();
        for (InsProductResult result : resultList) {
            // æ·»åŠ è®¾å¤‡ç¼–å·
            List<JSONObject> jsonObjects = JSON.parseArray(result.getEquipValue(), JSONObject.class);
            for (JSONObject jsonObject : jsonObjects) {
                if (!"".equals(jsonObject.get("v") + "")) {
                    List<String> v = StrUtil.split(jsonObject.get("v") + "", ",");
                    deviceCodeSet.addAll(v);
                }
            }
        }
        // 1.判断是否有没有添加的使用记录
        Set<String> orderDeviceNumbers = getDeviceDifference(deviceCodeSet, recordCodeset);
        // æ·»åŠ ä½¿ç”¨è®°å½•, æ ¹æ®ç¼–号查询设备id
        if (CollectionUtils.isNotEmpty(orderDeviceNumbers)) {
            List<Integer> orderDeviceIds = processOrderDeviceMapper.selectDeviceIdsByNumbers(orderDeviceNumbers);
            List<ProcessOrderDevice> collect = orderDeviceIds.stream().map(deviceId -> {
                ProcessOrderDevice processOrderDevice = new ProcessOrderDevice();
                processOrderDevice.setInspectionOrderId(inspectionOrder.getInspectionOrderId());
                processOrderDevice.setDeviceId(deviceId);
                processOrderDevice.setSampleCode(inspectionOrder.getEntrustCode());
                processOrderDevice.setUseBefore(1);
                processOrderDevice.setUseAfter(1);
                processOrderDevice.setUsePerson(userMapper.selectById(userId).getName());//使用人
                processOrderDevice.setUsePersonId(userId);//使用人id
                return processOrderDevice;
            }).collect(Collectors.toList());
            processOrderDeviceService.saveBatch(collect);
        }
    }
    private static Set<String> getDeviceDifference(Set<String> number1, Set<String> number2) {
        return number1.stream().filter(s1 -> number2.stream().noneMatch(s2 -> s1.equals(s2)))
                .collect(Collectors.toSet());
    }
    /**
@@ -179,6 +239,12 @@
        inspectionOrderDetailService.remove(Wrappers.<InspectionOrderDetail>lambdaQuery()
                .eq(InspectionOrderDetail::getInspectionOrderId, inspectionOrderId));
        baseMapper.deleteById(inspectionOrderId);
        //删除7.8报告
        processReportService.remove(Wrappers.<ProcessReport>lambdaQuery()
                .eq(ProcessReport::getInspectionOrderId, inspectionOrderId));
        //删除对应的设备使用记录
        processOrderDeviceService.remove(Wrappers.<ProcessOrderDevice>lambdaQuery()
                .eq(ProcessOrderDevice::getInspectionOrderId, inspectionOrderId));
        return true;
    }
cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessOrderDeviceServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.ruoyi.process.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.process.pojo.ProcessOrderDevice;
import com.ruoyi.process.mapper.ProcessOrderDeviceMapper;
import com.ruoyi.process.service.ProcessOrderDeviceService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
 * <p>
 * cnas设备使用记录表(7.1检验委托单) æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author
 * @since 2025-04-17 03:51:48
 */
@Service
public class ProcessOrderDeviceServiceImpl extends ServiceImpl<ProcessOrderDeviceMapper, ProcessOrderDevice> implements ProcessOrderDeviceService {
    @Override
    public IPage<ProcessOrderDevice> deviceRecordPage(Integer deviceId, Page page, String sampleCode, String managementNumber) {
        return baseMapper.deviceRecordPage(deviceId, page, sampleCode, managementNumber);
    }
}
cnas-process/src/main/resources/mapper/InspectionOrderMapper.xml
@@ -24,5 +24,4 @@
            ${ew.customSqlSegment}
        </if>
    </select>
</mapper>
cnas-process/src/main/resources/mapper/ProcessOrderDeviceMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.process.mapper.ProcessOrderDeviceMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.ruoyi.process.pojo.ProcessOrderDevice">
        <id column="id" property="id" />
        <result column="device_id" property="deviceId" />
        <result column="inspection_order_id" property="inspectionOrderId" />
        <result column="sample_code" property="sampleCode" />
        <result column="use_before" property="useBefore" />
        <result column="use_after" property="useAfter" />
        <result column="abnormal" property="abnormal" />
        <result column="use_start_date" property="useStartDate" />
        <result column="use_person_id" property="usePersonId" />
        <result column="use_person" property="usePerson" />
        <result column="remark" property="remark" />
        <result column="use_end_date" property="useEndDate" />
    </resultMap>
    <select id="selectDeviceNumber" resultType="java.lang.String">
        select distinct d.management_number
        from  cnas_process_order_device cpod
                 left join device d on d.id = cpod.device_id
        where cpod.inspection_order_id = #{inspectionOrderId}
    </select>
    <select id="selectDeviceIdsByNumbers" resultType="java.lang.Integer">
        select id
        from device
        where management_number in
        <foreach collection="deviceNumbers" index="index" open="(" separator="," close=")" item="val">
            #{val}
        </foreach>
    </select>
    <select id="deviceRecordPage" resultType="com.ruoyi.process.pojo.ProcessOrderDevice">
        select cpod.*,
        d.device_name,
        d.management_number
        from cnas_process_order_device cpod
        left join device d on d.id = cpod.device_id
        where 1=1
        <if test="deviceId != null">
            and dr.device_id = #{deviceId}
        </if>
        <if test="sampleCode != '' and sampleCode != null">
            and dr.sample_code like concat('%', #{sampleCode}, '%')
        </if>
        <if test="managementNumber != '' and managementNumber != null">
            and d.management_number like concat('%', #{managementNumber}, '%')
        </if>
        ORDER BY (cpod.use_start_date IS NULL) desc , cpod.use_start_date DESC
    </select>
</mapper>
inspect-server/src/main/resources/mapper/InsProductResultMapper.xml
@@ -31,7 +31,8 @@
    <!-- æ ¹æ®è®¢å•id查询检验结果 -->
    <select id="selectResultByOrderId" resultType="com.ruoyi.inspect.pojo.InsProductResult">
        select ipr.equip_value
        select ipr.equip_value,
            ipr.create_user
        from ins_product_result ipr
                 left join ins_product ip on ip.id = ipr.ins_product_id
                 left join ins_sample is2 on is2.id = ip.ins_sample_id