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