From a1e19c7466cce45b5bb360e38ab7c7c1753986f2 Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期二, 13 一月 2026 15:03:40 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_ztns' into dev_ztns

---
 basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java |  335 +++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 262 insertions(+), 73 deletions(-)

diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java b/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java
index c5695ec..51dd916 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java
@@ -20,7 +20,6 @@
 import com.ruoyi.basic.pojo.StandardProductListSupplierAsk;
 import com.ruoyi.basic.pojo.StandardTree;
 import com.ruoyi.basic.service.StandardProductListService;
-import com.ruoyi.basic.service.StandardProductListService2;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -45,8 +44,6 @@
 
     private StandardTreeMapper standardTreeMapper;
 
-    private StandardProductListService2 standardProductListService2;
-
     private IfsInventoryQuantityMapper ifsInventoryQuantityMapper;
 
     private StandardProductListSupplierAskMapper standardProductListSupplierAskMapper;
@@ -57,10 +54,6 @@
         return standardProductListMapper.updateById(list);
     }
 
-    @Override
-    public int delStandardProduct(JSONArray list) {
-        return standardProductListMapper.deleteBatchIds(list);
-    }
 
     @Override
     public List<StandardProductList> selectStandardProductList(InsSampleReceiveDto insSample) {
@@ -139,7 +132,7 @@
                     }
                     return true;
                 }).peek(standardProductList -> {
-                    // todo: 鍒ゆ柇鏄惁鏄師鏉愪笅鍗�, 闇�瑕佸晩鎶婇鑹茬粦瀹氬埌璇曟牱棰滆壊鐨勮姹傚�间笂
+                    //鍒ゆ柇鏄惁鏄師鏉愪笅鍗�, 闇�瑕佸晩鎶婇鑹茬粦瀹氬埌璇曟牱棰滆壊鐨勮姹傚�间笂
                     if (StringUtils.isNotBlank(insSample.getPartNo())) {
                         // 鍒ゆ柇鏄惁鏈夎繖涓瓧娈典笖鏄枃鏈被鍨�
                         if (StringUtils.isNotBlank(standardProductList.getInspectionItem())
@@ -196,16 +189,15 @@
     }
 
     /**
-     *
-     * @param str                 鍒ゅ畾鍏紡
-     * @param model               鍨嬪彿
-     * @param standardCores       鑺暟
-     * @param conductorMaterial   瀵间綋鏉愯川
-     * @param conductorType       瀵间綋绫诲瀷
+     * @param str               鍒ゅ畾鍏紡
+     * @param model             鍨嬪彿
+     * @param standardCores     鑺暟
+     * @param conductorMaterial 瀵间綋鏉愯川
+     * @param conductorType     瀵间綋绫诲瀷
      * @param insSample
      * @return
      */
-    private boolean getIsIf(String str, String model, String standardCores, String conductorMaterial, String conductorType,InsSampleReceiveDto insSample) {
+    private boolean getIsIf(String str, String model, String standardCores, String conductorMaterial, String conductorType, InsSampleReceiveDto insSample) {
         Matcher matcher = Pattern.compile("\\d+(\\.\\d+)?").matcher(model);
         String model2 = "";
         while (matcher.find()) {
@@ -263,13 +255,9 @@
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Map<String, Object> selectStandardProductListByMethodId(Integer id, String tree, Integer page) {
+    public Map<String, Object> selectStandardProductListByMethodId(Integer id, String tree) {
         String[] trees = tree.split(" - ");
-        try {
-            String tree1 = trees[2];
-        } catch (Exception e) {
-            throw new BaseException("鎿嶄綔澶揩,绯荤粺浼犲弬閿欒!!!!");
-        }
+        // 鍒ゆ柇鏄惁鎷栨嫿
         boolean isDrag = false;
         List<StandardProductList> list = new ArrayList<>();
         if (trees.length == 3) {
@@ -411,55 +399,39 @@
                     if (sp.getTemplateId() != null && !sp.getTemplateId().equals("")) {
                         pl.setTemplateId(sp.getTemplateId());
                     }
-                    //鍥犱负杩樻湁涓骇鍝佸彨鑰愬紶绾垮す 鎺ョ画閲戝叿 ,杩欎袱涓」鐩殑鏁版嵁瀹屽叏涓�鏍�,鐗规畩澶勭悊
-                    if (sp.getTree() != null && !sp.getTree().equals("") && !pl.getTree().equals("涓ぉ绉戞妧妫�娴嬩腑蹇� - 鐢靛姏浜у搧瀹為獙瀹� - 閲戝叿 - 鑰愬紶绾垮す - null")) {
-                        pl.setTree(sp.getTree());
-                    }
                     break;
                 }
             }
         }
-        if (page == 1) {
-            Integer userId = SecurityUtils.getUserId().intValue();
-//            CompletableFuture.supplyAsync(() -> {
-            if (trees.length == 5) {
-                standardProductListMapper.delete(Wrappers.<StandardProductList>lambdaUpdate()
-                        .eq(StandardProductList::getStandardMethodListId, id)
-                        .eq(StandardProductList::getTree, tree));
-            } else {
-                standardProductListMapper.delete(Wrappers.<StandardProductList>lambdaUpdate()
-                        .eq(StandardProductList::getStandardMethodListId, id)
-                        .like(StandardProductList::getTree, tree));
-            }
 
-            boolean success = false;
-            int retryCount = 0;
-            while (!success && retryCount < 100) {
-                try {
-                    standardProductListService2.saveBatch(list.stream().map(a -> {
-                        a.setFactory(trees[0]);
-                        a.setLaboratory(trees[1]);
-                        a.setSampleType(trees[2]);
-                        a.setCreateUser(userId);
-                        a.setUpdateUser(userId);
-                        a.setStandardMethodListId(id);
-                        return a;
-                    }).collect(Collectors.toList()));
-                    ;
-                    success = true;
-                } catch (Exception e) {
-                    // 澶勭悊閲嶅 ID 鐨勮褰曪紝閲嶆柊鐢熸垚 ID 骞剁户缁皾璇曟彃鍏�
-                    for (StandardProductList productList : list) {
-                        productList.setId(IdWorker.getId());
-                    }
-                }
-            }
-            if (!success) {
-                throw new RuntimeException("鎻掑叆澶辫触");
-            }
-
+        Integer userId = SecurityUtils.getUserId().intValue();
+        if (trees.length == 5) {
+            standardProductListMapper.delete(Wrappers.<StandardProductList>lambdaUpdate()
+                    .eq(StandardProductList::getStandardMethodListId, id)
+                    .eq(StandardProductList::getTree, tree));
+        } else {
+            standardProductListMapper.delete(Wrappers.<StandardProductList>lambdaUpdate()
+                    .eq(StandardProductList::getStandardMethodListId, id)
+                    .like(StandardProductList::getTree, tree));
         }
-        Map<String, Object> map = new HashMap<>();
+
+
+        List<StandardProductList> productLists = list.stream().map(a -> {
+            a.setFactory(trees[0]);
+            a.setLaboratory(trees[1]);
+            a.setSampleType(trees[2]);
+            a.setCreateUser(userId);
+            a.setUpdateUser(userId);
+            a.setStandardMethodListId(id);
+            return a;
+        }).collect(Collectors.toList());
+//            this.saveBatch(productLists);
+        // 鎵归噺娣诲姞鏍囧噯
+        if (CollectionUtils.isNotEmpty(productLists)) {
+            baseMapper.saveBatchProductLists(productLists);
+        }
+
+
         Collections.sort(list, (o1, o2) -> {
             String field1 = o1.getManHourGroup();
             String field2 = o2.getManHourGroup();
@@ -479,16 +451,228 @@
                 return Integer.compare(num1, num2);
             }
         });
-          // 鎸夌収绱㈠紩鎺掑簭
+        // 鎸夌収绱㈠紩鎺掑簭
         if (isDrag) {
-            list.sort((o1, o2) -> (o1.getSort() == null ? 0 : o1.getSort())
-                    - (o2.getSort() == null ? 0 : o2.getSort()));
+            list.sort(Comparator.comparingInt(o -> (o.getSort() == null ? 0 : o.getSort())));
         }
-        try {
-            map.put("productList", list.subList((page - 1) * 300, page * 300));
-        } catch (IndexOutOfBoundsException e) {
-            map.put("productList", list.subList((page - 1) * 300, list.size()));
+
+        Map<String, Object> map = new HashMap<>();
+        map.put("productList", list);
+        map.put("total", list.size());
+        return map;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Map<String, Object> buildStandardProductListNoDrag(Integer id, String tree) {
+
+        String[] trees = tree.split(" - ");
+        List<StandardProductList> list = new ArrayList<>();
+        if (trees.length == 3) {
+            List<StandardTree> treeList = new ArrayList<>();
+            StandardTree standardTree = new StandardTree();
+            standardTree.setFactory(trees[0]);
+            standardTree.setLaboratory(trees[1]);
+            standardTree.setSampleType(trees[2]);
+
+            List<ProductDto> pList = standardTreeMapper.selectPList(trees[2]);
+            if (CollectionUtils.isEmpty(pList) || pList.get(0) == null) {
+                List<StandardTree> treeList1 =
+                        standardTreeMapper.selectList(
+                                Wrappers.<StandardTree>lambdaQuery()
+                                        .eq(StandardTree::getLaboratory, trees[1])
+                                        .eq(StandardTree::getSampleType, trees[2])
+                        );
+                if (CollectionUtils.isEmpty(treeList1)) {
+                    treeList.add(standardTree);
+                } else {
+                    treeList.addAll(treeList1);
+                }
+            } else {
+                for (ProductDto p : pList) {
+                    standardTree.setSample(p.getName());
+                    List<StandardTree> treeList1 =
+                            standardTreeMapper.selectList(
+                                    Wrappers.<StandardTree>lambdaQuery()
+                                            .eq(StandardTree::getLaboratory, trees[1])
+                                            .eq(StandardTree::getSampleType, trees[2])
+                                            .eq(StandardTree::getSample, p.getName())
+                            );
+                    if (CollectionUtils.isEmpty(treeList1)) {
+                        treeList.add(JSON.parseObject(
+                                JSON.toJSONString(standardTree),
+                                StandardTree.class
+                        ));
+                    } else {
+                        treeList.addAll(treeList1);
+                    }
+                }
+            }
+
+            for (StandardTree st : treeList) {
+                String tree2 = trees[0] + " - " + trees[1] + " - " + trees[2]
+                        + " - " + st.getSample() + " - " + st.getModel();
+
+                list.addAll(
+                        standardTreeMapper.selectStandardProductListByTree(
+                                "\"" + trees[2] + "\"",
+                                st.getSample(),
+                                st.getModel(),
+                                tree2,
+                                trees[1]
+                        )
+                );
+                list.addAll(
+                        standardTreeMapper.selectStandardProductListByTree2(
+                                "\"" + trees[2] + "\",\"" + st.getSample() + "\"",
+                                st.getSample(),
+                                st.getModel(),
+                                tree2,
+                                trees[1]
+                        )
+                );
+            }
+
+        } else if (trees.length == 4) {
+
+            List<StandardTree> treeList =
+                    standardTreeMapper.selectList(
+                            Wrappers.<StandardTree>lambdaQuery()
+                                    .eq(StandardTree::getLaboratory, trees[1])
+                                    .eq(StandardTree::getSampleType, trees[2])
+                                    .eq(StandardTree::getSample, trees[3])
+                    );
+
+            if (CollectionUtils.isEmpty(treeList)) {
+                StandardTree st = new StandardTree();
+                st.setFactory(trees[0]);
+                st.setLaboratory(trees[1]);
+                st.setSampleType(trees[2]);
+                st.setSample(trees[3]);
+                treeList.add(st);
+            }
+
+            for (StandardTree st : treeList) {
+                String str = tree + " - " + st.getModel();
+                list.addAll(
+                        standardTreeMapper.selectStandardProductListByTree(
+                                "\"" + trees[2] + "\"",
+                                st.getSample(),
+                                st.getModel(),
+                                str,
+                                trees[1]
+                        )
+                );
+                list.addAll(
+                        standardTreeMapper.selectStandardProductListByTree2(
+                                "\"" + trees[2] + "\",\"" + trees[3] + "\"",
+                                st.getSample(),
+                                st.getModel(),
+                                str,
+                                trees[1]
+                        )
+                );
+            }
+
+        } else {
+            list.addAll(
+                    standardTreeMapper.selectStandardProductListByTree(
+                            "\"" + trees[2] + "\"",
+                            "null".equals(trees[3]) ? null : trees[3],
+                            trees[4],
+                            tree,
+                            trees[1]
+                    )
+            );
+            list.addAll(
+                    standardTreeMapper.selectStandardProductListByTree2(
+                            "\"" + trees[2] + "\",\"" + trees[3] + "\"",
+                            "null".equals(trees[3]) ? null : trees[3],
+                            trees[4],
+                            tree,
+                            trees[1]
+                    )
+            );
         }
+
+        for (StandardProductList p : list) {
+            p.setId(IdWorker.getId());
+        }
+        List<StandardProductList> oldList =
+                standardProductListMapper.selectList(
+                        Wrappers.<StandardProductList>lambdaQuery()
+                                .eq(StandardProductList::getStandardMethodListId, id)
+                                .like(StandardProductList::getTree, tree)
+                );
+
+        for (StandardProductList old : oldList) {
+            for (StandardProductList cur : list) {
+
+                // 鍗婂緞鍙湁涓�涓�硷紝鑷姩璧嬪��
+                String radiusList = cur.getRadiusList();
+                if (StringUtils.isNotBlank(radiusList)
+                        && !"null".equals(radiusList)
+                        && !"\"\"".equals(radiusList)) {
+                    JSONArray jsonArray = JSON.parseArray(radiusList);
+                    List<String> radius = jsonArray.toJavaList(String.class);
+                    if (CollectionUtils.isNotEmpty(radius) && radius.size() == 1) {
+                        cur.setRadius(radius.get(0));
+                    }
+                }
+
+                if (Objects.equals(old.getInspectionItem(), cur.getInspectionItem())
+                        && Objects.equals(
+                        Objects.toString(old.getInspectionItemSubclass(), ""),
+                        Objects.toString(cur.getInspectionItemSubclass(), "")
+                )
+                        && Objects.equals(old.getModel(), cur.getModel())
+                        && old.getTree().contains(
+                        cur.getSample() == null ? "null" : cur.getSample()
+                )
+                        && Objects.equals(
+                        old.getStructureItemParameterId(),
+                        cur.getStructureItemParameterId()
+                )) {
+
+                    cur.setId(old.getId());
+                    cur.setSort(old.getSort());
+                    cur.setState(old.getState());
+                    cur.setMethod(old.getMethodS());
+                    cur.setRadius(old.getRadius());
+                    cur.setRates(old.getRates());
+                    cur.setAsk(old.getAsk());
+                    cur.setTell(old.getTell());
+                    cur.setPrice(old.getPrice());
+                    cur.setManHour(old.getManHour());
+                    cur.setSection(old.getSection());
+                    cur.setCores(old.getCores());
+                    cur.setConductorMaterial(old.getConductorMaterial());
+                    cur.setConductorType(old.getConductorType());
+                    cur.setTemplateId(old.getTemplateId());
+                    break;
+                }
+            }
+        }
+
+        list.sort((o1, o2) -> {
+            String f1 = o1.getManHourGroup();
+            String f2 = o2.getManHourGroup();
+
+            boolean e1 = StringUtils.isBlank(f1);
+            boolean e2 = StringUtils.isBlank(f2);
+
+            if (e1 && e2) return 0;
+            if (e1) return 1;
+            if (e2) return -1;
+
+            return Integer.compare(
+                    extractNumber(f1),
+                    extractNumber(f2)
+            );
+        });
+
+        Map<String, Object> map = new HashMap<>();
+        map.put("productList", list);
         map.put("total", list.size());
         return map;
     }
@@ -537,6 +721,7 @@
 
     /**
      * 淇敼鏍囧噯搴撳尯闂�
+     *
      * @param list
      * @return
      */
@@ -549,6 +734,7 @@
 
     /**
      * 鏍囧噯搴撴嫋鎷�
+     *
      * @param resetTreeDragDTO
      */
     @Override
@@ -567,7 +753,7 @@
                     resetTreeDragDTO.getTree());
 
             // 浠庝笅寰�涓�
-        } else if (beginIndex > endIndex){
+        } else if (beginIndex > endIndex) {
             standardProductListMapper.updateSortDown(beginIndex,
                     endIndex,
                     methodId,
@@ -583,11 +769,12 @@
 
     @Override
     public void resetTreeDragBatch(List<StandardProductList> standardProductLists) {
-        standardProductListService2.updateBatchById(standardProductLists);
+        this.updateBatchById(standardProductLists);
     }
 
     /**
      * 妫�楠岄」瑕佹眰鍊煎姣�
+     *
      * @param copyDto
      * @return
      */
@@ -631,6 +818,7 @@
 
     /**
      * 妫�楠岄」澶嶅埗瀵规瘮涓�涓�
+     *
      * @param dto
      * @return
      */
@@ -665,6 +853,7 @@
 
     /**
      * 妫�楠岄」澶嶅埗鎺掑簭
+     *
      * @param copyDto
      * @return
      */

--
Gitblit v1.9.3