From bf2026a38d4d36371060673d4651b6e05ca90632 Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期二, 01 九月 2026 17:07:30 +0800
Subject: [PATCH] feat(device): 1.更新设备导入验证逻辑和检验任务功能 2.报告编制

---
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java |   69 ++++++++++++++++++++++++++++------
 1 files changed, 57 insertions(+), 12 deletions(-)

diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
index 952b412..cb1f287 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InsOrderServiceImpl.java
@@ -648,13 +648,6 @@
                 if(isSplitOrder){
                     ifsInventoryQuantity.setIsSplitOrder(1);
                 }
-                //todo:涓嶆竻妤氱敤閫旓紝鏆傛椂灞忚斀鎺�
-                // 鏌ヨ浜т笟閾炬娴嬫暟鎹�
-//                String industryChainAttrFields = IndustryChainUtils.getIndustryChainAttrFields(ifsInventoryQuantity.getOrderNo(),
-//                        ifsInventoryQuantity.getLineNo(),
-//                        ifsInventoryQuantity.getReleaseNo());
-//                ifsInventoryQuantity.setIndustryChain(industryChainAttrFields);
-
                 ifsInventoryQuantityMapper.insert(ifsInventoryQuantity);
             }
         }
@@ -802,6 +795,9 @@
         ifsInventoryQuantity.setIsCopper(1);
         ifsInventoryQuantity.setIsQuarter(0);
         ifsInventoryQuantity.setInspectStatus(0);
+        //閾滄潗鏂欎笅鍗曢粯璁ゅ��
+        ifsInventoryQuantity.setOrderType(OrderType.RAW.getValue());
+        ifsInventoryQuantity.setMaterialProp("01Cu");
 
         ifsInventoryQuantity.setQtyArrived(insOrder.getQtyArrived());
         ifsInventoryQuantity.setBuyUnitMeas(insOrder.getBuyUnitMeas());
@@ -811,10 +807,8 @@
 
         ifsInventoryQuantityMapper.insert(ifsInventoryQuantity);
 
-
         insOrder.setIfsInventoryId(ifsInventoryQuantity.getId());
         insOrder.setState(1);
-
 
         upInsOrderOfState(insOrder);
         upInsOrder(insOrder.getId(), null, appointed != null ? appointed.toString() : null, SecurityUtils.getUserId().intValue(), "鍘熸潗鏂�");
@@ -880,6 +874,19 @@
     @Override
     @Transactional(rollbackFor = Exception.class)
     public Boolean updateInsOrder(InsOrderUpdateDto insOrderUpdateDto) {
+        InsOrder currentOrder = insOrderMapper.selectById(insOrderUpdateDto.getInsOrder().getId());
+        if (currentOrder == null || !Objects.equals(currentOrder.getState(), 2)) {
+            throw new ErrorException("鍙湁閫�鍥炵殑妫�楠屽崟鍙互淇敼");
+        }
+        boolean hasSelectedProduct = CollectionUtils.isNotEmpty(insOrderUpdateDto.getSampleProduct())
+                && insOrderUpdateDto.getSampleProduct().stream()
+                .filter(sample -> CollectionUtils.isNotEmpty(sample.getInsProduct()))
+                .flatMap(sample -> sample.getInsProduct().stream())
+                .anyMatch(product -> Objects.equals(product.getState(), 1));
+        if (!hasSelectedProduct) {
+            throw new ErrorException("璇疯嚦灏戦�夋嫨涓�涓楠岄」");
+        }
+
         // 淇敼璁㈠崟
         insOrderUpdateDto.getInsOrder().setState(0);
         insOrderUpdateDto.getInsOrder().setTell("");
@@ -887,11 +894,50 @@
 
         // 淇敼妫�楠岄」
         for (SampleProductDto sampleProductDto : insOrderUpdateDto.getSampleProduct()) {
+            Long sampleCount = insSampleMapper.selectCount(Wrappers.<InsSample>lambdaQuery()
+                    .eq(InsSample::getId, sampleProductDto.getId())
+                    .eq(InsSample::getInsOrderId, insOrderUpdateDto.getInsOrder().getId()));
+            if (sampleCount == 0) {
+                throw new ErrorException("妫�楠屾牱鍝佹暟鎹紓甯�");
+            }
+
             insSampleService.update(Wrappers.<InsSample>lambdaUpdate()
                     .eq(InsSample::getId, sampleProductDto.getId())
                     .set(InsSample::getSpecialStandardMethod, sampleProductDto.getSpecialStandardMethod()));
 
-            insProductService.updateBatchById(sampleProductDto.getInsProduct());
+            List<InsProduct> products = sampleProductDto.getInsProduct();
+            if (CollectionUtils.isEmpty(products)) {
+                continue;
+            }
+
+            Set<Integer> productIds = insProductMapper.selectList(Wrappers.<InsProduct>lambdaQuery()
+                            .eq(InsProduct::getInsSampleId, sampleProductDto.getId()))
+                    .stream()
+                    .map(InsProduct::getId)
+                    .collect(Collectors.toSet());
+            if (products.stream().anyMatch(product -> product.getId() != null && !productIds.contains(product.getId()))) {
+                throw new ErrorException("妫�楠岄」鏁版嵁寮傚父");
+            }
+
+            List<Integer> removedIds = products.stream()
+                    .filter(product -> product.getId() != null && !Objects.equals(product.getState(), 1))
+                    .map(InsProduct::getId)
+                    .collect(Collectors.toList());
+            if (CollectionUtils.isNotEmpty(removedIds)) {
+                insProductService.removeByIds(removedIds);
+            }
+
+            List<InsProduct> existingProducts = products.stream()
+                    .filter(product -> product.getId() != null && Objects.equals(product.getState(), 1))
+                    .collect(Collectors.toList());
+            if (CollectionUtils.isNotEmpty(existingProducts)) {
+                insProductService.updateBatchById(existingProducts);
+            }
+
+            List<InsProduct> newProducts = products.stream()
+                    .filter(product -> product.getId() == null && Objects.equals(product.getState(), 1))
+                    .collect(Collectors.toList());
+            addInsProductMethod(sampleProductDto.getId(), newProducts);
         }
 
         return true;
@@ -1222,8 +1268,7 @@
         // 妫�楠屽悗绉诲簱
         //1301:鍘熸潗鏂欏悎鏍煎簱锛孋P-02-001:鎴愬搧搴�
         if(StringUtils.equals(inventoryQuantity.getOrderType(), OrderType.RAW.getValue())){
-            //濡傛灉璁㈠崟涓哄師鏉愭枡鐨勬媶鍒嗚鍗曪紝鍒欑Щ鍒板璐師鏉愭枡搴撲綅W03
-            toLocation = one.getIsSplitOrder().equals(1)?"W03":"1301";
+            toLocation = "1301";
         }else if(StringUtils.equals(inventoryQuantity.getOrderType(), OrderType.WG.getValue())){
             toLocation = "CP-02-001";
         }else{

--
Gitblit v1.9.3