From 51d7b5b62db52c8c80d0bac9d42c37e33ce48a5d Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期三, 29 七月 2026 17:20:45 +0800
Subject: [PATCH] 1.手动下单:修复选择样品后查询的检测项缺失问题 2.人员考勤:修复同步ICC考勤数据报错问题

---
 basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java |  390 +++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 292 insertions(+), 98 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..97b846d 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
@@ -6,6 +6,7 @@
 import com.baomidou.mybatisplus.core.toolkit.*;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.vo.StandardProductListVO;
 import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.basic.dto.CopyStandardProductListDto;
@@ -20,7 +21,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 +45,6 @@
 
     private StandardTreeMapper standardTreeMapper;
 
-    private StandardProductListService2 standardProductListService2;
-
     private IfsInventoryQuantityMapper ifsInventoryQuantityMapper;
 
     private StandardProductListSupplierAskMapper standardProductListSupplierAskMapper;
@@ -57,10 +55,6 @@
         return standardProductListMapper.updateById(list);
     }
 
-    @Override
-    public int delStandardProduct(JSONArray list) {
-        return standardProductListMapper.deleteBatchIds(list);
-    }
 
     @Override
     public List<StandardProductList> selectStandardProductList(InsSampleReceiveDto insSample) {
@@ -69,8 +63,8 @@
 //        String[] models = insSample.getModel().split("-(?=[^-]*$)");//鎷嗗垎鏈�鍚庝竴涓��-銆�
         String model = insSample.getModel();
         String modelNum = insSample.getModelNum();
-        List<StandardProductList> list = standardProductListMapper.selectDetail(insSample.getStandardMethodListId(), 1, model, insSample.getIsCableTag());
-        if (list.size() == 0) {
+        List<StandardProductList> list = standardProductListMapper.selectDetail(insSample.getStandardMethodListId(), 1, model,insSample.getFactory(), insSample.getIsCableTag());
+        if (list.isEmpty()) {
             if (Objects.equals(insSample.getFactory(), "") || insSample.getFactory() == null) {
                 return null;
             }
@@ -78,12 +72,12 @@
             split[3] = split[3].replace("- ", "");
             String tree = split[0] + " - " + split[1] + " - " + split[2] + " - " + split[3] + " - null";
             list = standardProductListMapper.selectDetail2(insSample.getStandardMethodListId(), 1, tree, insSample.getIsCableTag());
-            if (list.size() == 0) {
+            if (list.isEmpty()) {
                 String tree1 = split[0] + " - " + split[1] + " - " + split[2] + " - null - " + split[3];
                 list = standardProductListMapper.selectDetail2(insSample.getStandardMethodListId(), 1, tree1, insSample.getIsCableTag());
 
                 // 鍙湁瀵硅薄鐨勪竴灞�
-                if (list.size() == 0) {
+                if (list.isEmpty()) {
                     String tree2 = split[0] + " - " + split[1] + " - " + split[2] + " - null - null";
                     list = standardProductListMapper.selectDetail2(insSample.getStandardMethodListId(), 1, tree2, insSample.getIsCableTag());
                     // 鏍峰搧鐩存帴璧嬪�兼牱鍝佸垎绫�
@@ -93,12 +87,15 @@
             }
         }
         String[] split1 = insSample.getFactory().split(" - ");
+        if(split1[3].equals("null")){
+            split1[3] = "";
+        }
         if (!isNoSample) {
             //鍒ゆ柇闀垮害
             if (split1.length > 4) {
                 if (ObjectUtils.isNotEmpty(split1[3])) {
                     list = list.stream().filter(list1 -> Objects.nonNull(list1.getSample()) && Objects.equals(list1.getSample(), split1[3])).collect(Collectors.toList());
-                } else if (split1[3].equals("")) {
+                } else if (split1[3].isEmpty()) {
                     list = list.stream().filter(list1 -> Objects.nonNull(list1.getSampleType()) && Objects.equals(list1.getSampleType(), split1[2])).collect(Collectors.toList());
                 }
             }
@@ -139,7 +136,7 @@
                     }
                     return true;
                 }).peek(standardProductList -> {
-                    // todo: 鍒ゆ柇鏄惁鏄師鏉愪笅鍗�, 闇�瑕佸晩鎶婇鑹茬粦瀹氬埌璇曟牱棰滆壊鐨勮姹傚�间笂
+                    //鍒ゆ柇鏄惁鏄師鏉愪笅鍗�, 闇�瑕佸晩鎶婇鑹茬粦瀹氬埌璇曟牱棰滆壊鐨勮姹傚�间笂
                     if (StringUtils.isNotBlank(insSample.getPartNo())) {
                         // 鍒ゆ柇鏄惁鏈夎繖涓瓧娈典笖鏄枃鏈被鍨�
                         if (StringUtils.isNotBlank(standardProductList.getInspectionItem())
@@ -196,16 +193,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,15 +259,11 @@
 
     @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<>();
+        List<StandardProductListVO> list = new ArrayList<>();
         if (trees.length == 3) {
             List<StandardTree> treeList = new ArrayList<>();
             StandardTree standardTree = new StandardTree();
@@ -308,10 +300,6 @@
                     .eq(StandardProductList::getStandardMethodListId, id)
                     .isNull(StandardProductList::getModel)
                     .like(StandardProductList::getTree, tree));
-            if (count == 0) {
-                isDrag = true;
-            }
-
             isDrag = true;
             List<StandardTree> treeList = standardTreeMapper.selectList(Wrappers.<StandardTree>lambdaQuery().eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2]).eq(StandardTree::getSample, trees[3]));
             if (treeList.size() == 0) {
@@ -335,23 +323,22 @@
         for (StandardProductList productList : list) {
             productList.setId(IdWorker.getId());
         }
-        List<StandardProductList> standardProductLists;
+        List<StandardProductListVO> standardProductLists;
 
-        if (isDrag) {
-            standardProductLists = standardProductListMapper.selectList(Wrappers.<StandardProductList>lambdaQuery()
-                    .eq(StandardProductList::getStandardMethodListId, id)
-                    .like(StandardProductList::getTree, tree)
-                    .orderByAsc(StandardProductList::getSort));
-            // 鍒ゆ柇鏄惁鏈夋病鏈夊簭鍙风殑, 娌℃湁搴忓彿閲嶇疆
-            boolean b = standardProductLists.stream().anyMatch(standardProductList -> standardProductList.getSort() == null);
-        } else {
-            standardProductLists = standardProductListMapper.selectList(Wrappers.<StandardProductList>lambdaQuery()
-                    .eq(StandardProductList::getStandardMethodListId, id)
-                    .like(StandardProductList::getTree, tree));
-        }
+//        if (isDrag) {
+//            standardProductLists = standardProductListMapper.selectList(Wrappers.<StandardProductList>lambdaQuery()
+//                    .eq(StandardProductList::getStandardMethodListId, id)
+//                    .like(StandardProductList::getTree, tree)
+//                    .orderByAsc(StandardProductList::getSort));
+//        } else {
+//            standardProductLists = standardProductListMapper.selectList(Wrappers.<StandardProductList>lambdaQuery()
+//                    .eq(StandardProductList::getStandardMethodListId, id)
+//                    .like(StandardProductList::getTree, tree));
+//        }
+        standardProductLists = standardProductListMapper.selectStandardProductList(id,tree,isDrag);
 
-        for (StandardProductList sp : standardProductLists) {
-            for (StandardProductList pl : list) {
+        for (StandardProductListVO sp : standardProductLists) {
+            for (StandardProductListVO pl : list) {
                 // 鍒ゆ柇鏉′欢鏄惁鍙湁涓�涓�, 鏈変竴涓殑璇濋粯璁ょ涓�涓�
                 String radiusList = pl.getRadiusList();
                 if (StringUtils.isNotBlank(radiusList) && !radiusList.equals("null") && !radiusList.equals("\"\"")) {
@@ -370,6 +357,12 @@
                     pl.setId(sp.getId());
                     // 娣诲姞鎺掑簭瀛楁
                     pl.setSort(sp.getSort());
+                    pl.setCreateUserName(sp.getCreateUserName());
+                    pl.setCreateTime(sp.getCreateTime());
+                    pl.setCreateUser(sp.getCreateUser());
+                    pl.setUpdateUserName(sp.getUpdateUserName());
+                    pl.setUpdateTime(sp.getUpdateTime());
+                    pl.setUpdateUser(sp.getUpdateUser());
                     if (sp.getState() != null && !sp.getState().equals("")) {
                         pl.setState(sp.getState());
                     } else {
@@ -411,55 +404,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)) {
+            this.saveOrUpdateBatch(productLists);
+        }
+
+
         Collections.sort(list, (o1, o2) -> {
             String field1 = o1.getManHourGroup();
             String field2 = o2.getManHourGroup();
@@ -479,16 +456,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 +726,7 @@
 
     /**
      * 淇敼鏍囧噯搴撳尯闂�
+     *
      * @param list
      * @return
      */
@@ -549,6 +739,7 @@
 
     /**
      * 鏍囧噯搴撴嫋鎷�
+     *
      * @param resetTreeDragDTO
      */
     @Override
@@ -567,7 +758,7 @@
                     resetTreeDragDTO.getTree());
 
             // 浠庝笅寰�涓�
-        } else if (beginIndex > endIndex){
+        } else if (beginIndex > endIndex) {
             standardProductListMapper.updateSortDown(beginIndex,
                     endIndex,
                     methodId,
@@ -583,11 +774,12 @@
 
     @Override
     public void resetTreeDragBatch(List<StandardProductList> standardProductLists) {
-        standardProductListService2.updateBatchById(standardProductLists);
+        this.updateBatchById(standardProductLists);
     }
 
     /**
      * 妫�楠岄」瑕佹眰鍊煎姣�
+     *
      * @param copyDto
      * @return
      */
@@ -631,6 +823,7 @@
 
     /**
      * 妫�楠岄」澶嶅埗瀵规瘮涓�涓�
+     *
      * @param dto
      * @return
      */
@@ -665,6 +858,7 @@
 
     /**
      * 妫�楠岄」澶嶅埗鎺掑簭
+     *
      * @param copyDto
      * @return
      */

--
Gitblit v1.9.3