From 8d87f13ab4c7539b4f5d0c5ce0ada6838993a2fb Mon Sep 17 00:00:00 2001 From: zss <zss@example.com> Date: 星期四, 17 四月 2025 17:20:32 +0800 Subject: [PATCH] 7.1设备使用记录 --- cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessOrderDeviceServiceImpl.java | 26 ++++ cnas-process/src/main/java/com/ruoyi/process/mapper/InspectionOrderMapper.java | 4 cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessOrderDevice.java | 69 +++++++++++ cnas-process/src/main/resources/mapper/InspectionOrderMapper.xml | 1 cnas-process/src/main/java/com/ruoyi/process/service/impl/InspectionOrderServiceImpl.java | 76 +++++++++++ cnas-process/src/main/resources/mapper/ProcessOrderDeviceMapper.xml | 52 ++++++++ cnas-process/src/main/java/com/ruoyi/process/controller/ProcessOrderDeviceController.java | 64 ++++++++++ cnas-process/src/main/java/com/ruoyi/process/service/ProcessOrderDeviceService.java | 19 +++ inspect-server/src/main/resources/mapper/InsProductResultMapper.xml | 3 cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessOrderDeviceMapper.java | 27 ++++ 10 files changed, 334 insertions(+), 7 deletions(-) diff --git a/cnas-process/src/main/java/com/ruoyi/process/controller/ProcessOrderDeviceController.java b/cnas-process/src/main/java/com/ruoyi/process/controller/ProcessOrderDeviceController.java new file mode 100644 index 0000000..0bd5ff2 --- /dev/null +++ b/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); + } +} diff --git a/cnas-process/src/main/java/com/ruoyi/process/mapper/InspectionOrderMapper.java b/cnas-process/src/main/java/com/ruoyi/process/mapper/InspectionOrderMapper.java index 0ab8bb3..96cee33 100644 --- a/cnas-process/src/main/java/com/ruoyi/process/mapper/InspectionOrderMapper.java +++ b/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); + } diff --git a/cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessOrderDeviceMapper.java b/cnas-process/src/main/java/com/ruoyi/process/mapper/ProcessOrderDeviceMapper.java new file mode 100644 index 0000000..80e4b76 --- /dev/null +++ b/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); +} diff --git a/cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessOrderDevice.java b/cnas-process/src/main/java/com/ruoyi/process/pojo/ProcessOrderDevice.java new file mode 100644 index 0000000..9d2ae0a --- /dev/null +++ b/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("濮旀墭鍗昳d") + private Integer inspectionOrderId; + + @ApiModelProperty("鏍峰搧缂栧彿") + private String sampleCode; + + @ApiModelProperty("浣跨敤鍓�0浠h〃涓嶆甯�1浠h〃姝e父") + private Integer useBefore; + + @ApiModelProperty("浣跨敤鍚�0浠h〃涓嶆甯�1浠h〃姝e父") + private Integer useAfter; + + @ApiModelProperty("寮傚父鎯呭喌") + private String abnormal; + + @ApiModelProperty("浣跨敤寮�濮嬫棩鏈�") + private LocalDateTime useStartDate; + + @ApiModelProperty("浣跨敤浜篿d") + 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; +} diff --git a/cnas-process/src/main/java/com/ruoyi/process/service/ProcessOrderDeviceService.java b/cnas-process/src/main/java/com/ruoyi/process/service/ProcessOrderDeviceService.java new file mode 100644 index 0000000..949f455 --- /dev/null +++ b/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); +} diff --git a/cnas-process/src/main/java/com/ruoyi/process/service/impl/InspectionOrderServiceImpl.java b/cnas-process/src/main/java/com/ruoyi/process/service/impl/InspectionOrderServiceImpl.java index 733c7b6..9cab43d 100644 --- a/cnas-process/src/main/java/com/ruoyi/process/service/impl/InspectionOrderServiceImpl.java +++ b/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);//浣跨敤浜篿d + 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; } diff --git a/cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessOrderDeviceServiceImpl.java b/cnas-process/src/main/java/com/ruoyi/process/service/impl/ProcessOrderDeviceServiceImpl.java new file mode 100644 index 0000000..c92c389 --- /dev/null +++ b/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); + } +} diff --git a/cnas-process/src/main/resources/mapper/InspectionOrderMapper.xml b/cnas-process/src/main/resources/mapper/InspectionOrderMapper.xml index e43189c..ba0c03f 100644 --- a/cnas-process/src/main/resources/mapper/InspectionOrderMapper.xml +++ b/cnas-process/src/main/resources/mapper/InspectionOrderMapper.xml @@ -24,5 +24,4 @@ ${ew.customSqlSegment} </if> </select> - </mapper> diff --git a/cnas-process/src/main/resources/mapper/ProcessOrderDeviceMapper.xml b/cnas-process/src/main/resources/mapper/ProcessOrderDeviceMapper.xml new file mode 100644 index 0000000..4165595 --- /dev/null +++ b/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> diff --git a/inspect-server/src/main/resources/mapper/InsProductResultMapper.xml b/inspect-server/src/main/resources/mapper/InsProductResultMapper.xml index 0a42c74..519d61a 100644 --- a/inspect-server/src/main/resources/mapper/InsProductResultMapper.xml +++ b/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 -- Gitblit v1.9.3