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/InspectionOrderServiceImpl.java | 76 +++++++++++++++++++++++++++++++++++-- 1 files changed, 71 insertions(+), 5 deletions(-) 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; } -- Gitblit v1.9.3