From b999398ae9b2719d2db15716dd353f7a3855d59e Mon Sep 17 00:00:00 2001
From: chenrui <1187576398@qq.com>
Date: 星期一, 07 四月 2025 17:33:55 +0800
Subject: [PATCH] Merge branch 'radio_frequency' of http://114.132.189.42:9002/r/lims-ruoyi-after into radio_frequency

---
 basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTreeServiceImpl.java |  411 ++++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 280 insertions(+), 131 deletions(-)

diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTreeServiceImpl.java b/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTreeServiceImpl.java
index 3fe74d1..ffab8ea 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTreeServiceImpl.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardTreeServiceImpl.java
@@ -3,29 +3,25 @@
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.poi.excel.ExcelUtil;
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.basic.dto.SampleDto;
+import com.ruoyi.basic.dto.*;
+import com.ruoyi.basic.enums.BasicTreeEnums;
+import com.ruoyi.basic.enums.TestPorjectTypeEnums;
+import com.ruoyi.basic.mapper.*;
+import com.ruoyi.basic.pojo.*;
 import com.ruoyi.common.exception.base.BaseException;
-import com.ruoyi.basic.dto.FactoryDto;
-import com.ruoyi.basic.dto.LaboratoryDto;
-import com.ruoyi.basic.dto.SampleTypeDto;
-import com.ruoyi.basic.mapper.StandardProductListMapper;
-import com.ruoyi.basic.mapper.StandardTreeMapper;
-import com.ruoyi.basic.pojo.StandardProductList;
-import com.ruoyi.basic.pojo.StandardTemplate;
-import com.ruoyi.basic.pojo.StandardTree;
-import com.ruoyi.basic.pojo.StructureTestObject;
 import com.ruoyi.basic.service.*;
+import com.ruoyi.common.utils.StringUtils;
 import lombok.AllArgsConstructor;
 import org.apache.commons.lang3.ObjectUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
@@ -57,107 +53,263 @@
 
     private StructureTestObjectService structureTestObjectService;
 
+    private StructureTestObjectMapper structureTestObjectMapper;
 
-    @Override
-    public List<FactoryDto> selectStandardTreeList() {
-        List<FactoryDto> factoryDtos = standardTreeMapper.selectStandardTreeList();
-        // 鏀堕泦鎵�鏈� sampleTypeDto 鐨� value
-        Set<String> sampleTypeValues = new HashSet<>();
-        for (FactoryDto factoryDto : factoryDtos) {
-            for (LaboratoryDto laboratoryDto : factoryDto.getChildren()) {
-                laboratoryDto.getChildren().sort((o1, o2) -> (o1.getSort() == null ? 0 : o1.getSort())
-                        - (o2.getSort() == null ? 0 : o2.getSort()));
-                for (SampleTypeDto sampleTypeDto : laboratoryDto.getChildren()) {
-                    sampleTypeValues.add(sampleTypeDto.getValue());
-                }
-            }
-        }
-        // 鎵归噺鏌ヨ鎵�鏈� sampleTypeDto 鐨勬暟鎹�
-        List<SampleDto> standardList = standardTreeMapper.getStandardTree3Batch(sampleTypeValues);
-        Map<String, List<SampleDto>> standardTreeMap = standardList.stream().collect(Collectors.groupingBy(SampleDto::getValue));
-        // 灏嗘煡璇㈢粨鏋滃垎閰嶅埌瀵瑰簲鐨� sampleTypeDto
-        for (FactoryDto factoryDto : factoryDtos) {
-            for (LaboratoryDto laboratoryDto : factoryDto.getChildren()) {
-                for (SampleTypeDto sampleTypeDto : laboratoryDto.getChildren()) {
-                    List<SampleDto> standardTreeList = standardTreeMap.get(sampleTypeDto.getValue());
-                    if (standardTreeList != null) {
-                        sampleTypeDto.getChildren().addAll(standardTreeList);
-                    }
-                }
-            }
-        }
-        return factoryDtos;
-    }
+    private ProductMapper productMapper;
+
+    private ModelMapper modelMapper;
+
+    private LaboratoryMapper laboratoryMapper;
+
+    private WorkShopMapper workShopMapper;
 
 
     @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int addStandardTree(StandardTree standardTree) {
-        LambdaQueryWrapper<StandardTree> wrapper = Wrappers.<StandardTree>lambdaQuery()
-                .eq(StandardTree::getFactory, standardTree.getFactory())
-                .eq(StandardTree::getLaboratory, standardTree.getLaboratory())
-                .eq(StandardTree::getSampleType, standardTree.getSampleType())
-                .eq(StandardTree::getSample, standardTree.getSample())
-                .eq(StandardTree::getModel, standardTree.getModel());
-        if (StringUtils.isNotBlank(standardTree.getSample())) {
-            wrapper.eq(StandardTree::getSample, standardTree.getSample());
-        }
-
-        StandardTree tree = standardTreeMapper.selectOne(wrapper);
-        if (tree != null) {
-            throw new BaseException("璇ュ瀷鍙峰凡瀛樺湪");
-        }
-        return standardTreeMapper.insert(standardTree);
-    }
-
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int delStandardTree(String tree) {
-        String[] trees = tree.split(" - ");
-        switch (trees.length) {
-            case 5:
-                if (trees[3].equals("null")) {
-                    standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0]).eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2]).isNull(StandardTree::getSample).eq(StandardTree::getModel, trees[4]));
+    public List<BasicTreeDto> selectStandardTreeList() {
+        // 鏌ヨ鎵�鏈夋鏌ュ璞�
+        List<StructureTestObject> structureTestObjectList = structureTestObjectMapper.selectList(new QueryWrapper<StructureTestObject>());
+        // 鏌ヨ鎵�鏈変骇鍝�
+        List<Product> productList = productMapper.selectList(new LambdaQueryWrapper<Product>());
+        // 鏌ヨ鎵�鏈夊瀷鍙�
+        List<Model> modelList = modelMapper.selectList(new QueryWrapper<Model>());
+        // 鎸夌収褰掑睘浜у搧id杩樻槸褰掑睘妫�娴嬪璞d灏嗗瀷鍙峰垎缁勫苟缁勮鎴怋asicTreeDto
+        Map<Integer, List<BasicTreeDto>> productModelMap = new HashMap<>();
+        Map<Integer, List<BasicTreeDto>> testObjectModelMap = new HashMap<>();
+        for (Model model : modelList) {
+            BasicTreeDto basicTreeDto = new BasicTreeDto();
+            basicTreeDto.setLevel(BasicTreeEnums.MODEL_TYPE.getCode());
+            basicTreeDto.setValue(String.valueOf(model.getId()));
+            basicTreeDto.setLabel(model.getModelName());
+            basicTreeDto.setChildren(null);
+            if (model.getProductId() != null) {
+                if (CollectionUtils.isEmpty(productModelMap.get(model.getProductId()))) {
+                    List<BasicTreeDto> basicTreeDtoList = new ArrayList<>();
+                    basicTreeDtoList.add(basicTreeDto);
+                    productModelMap.put(model.getProductId(), basicTreeDtoList);
                 } else {
-                    standardTreeMapper.delete(Wrappers.<StandardTree>lambdaUpdate().eq(StandardTree::getFactory, trees[0]).eq(StandardTree::getLaboratory, trees[1]).eq(StandardTree::getSampleType, trees[2]).eq(StandardTree::getSample, trees[3]).eq(StandardTree::getModel, trees[4]));
+                    productModelMap.get(model.getProductId()).add(basicTreeDto);
                 }
-                break;
+            }
+            if (model.getStructureTestObjectId() != null) {
+                if (CollectionUtils.isEmpty(testObjectModelMap.get(model.getStructureTestObjectId()))) {
+                    List<BasicTreeDto> basicTreeDtoList = new ArrayList<>();
+                    basicTreeDtoList.add(basicTreeDto);
+                    testObjectModelMap.put(model.getStructureTestObjectId(), basicTreeDtoList);
+                } else {
+                    testObjectModelMap.get(model.getStructureTestObjectId()).add(basicTreeDto);
+                }
+            }
         }
-        return 1;
+        // 鎸夌収妫�娴嬪璞d灏嗕骇鍝佸垎缁勫苟缁勮鎴怋asicTreeDto
+        Map<Integer, List<BasicTreeDto>> productMap = productList.stream().collect(Collectors.groupingBy(
+                Product::getObjectId,
+                Collectors.mapping(product -> {
+                    BasicTreeDto basicTreeDto = new BasicTreeDto();
+                    basicTreeDto.setValue(String.valueOf(product.getId()));
+                    basicTreeDto.setLabel(product.getName());
+                    basicTreeDto.setLevel(BasicTreeEnums.PRODUCT_TYPE.getCode());
+                    basicTreeDto.setChildren(productModelMap.get(product.getId()));
+                    return basicTreeDto;
+                }, Collectors.toList())
+        ));
+        // 瀵规娴嬪璞″厛鎸夌収瀹為獙瀹ゅ湪鎸夌収妫�鏌ュ璞$被鍒垎绫�
+        Map<Integer, Map<String, List<StructureTestObjectDto>>> laboratoryObjectTypeMap = structureTestObjectList.stream().collect(
+                Collectors.groupingBy(
+                        StructureTestObject::getLaboratoryId,
+                        Collectors.groupingBy(
+                                StructureTestObject::getObjectType,
+                                Collectors.mapping(structureTestObject -> {
+                                    StructureTestObjectDto structureTestObjectDto = new StructureTestObjectDto();
+                                    BeanUtils.copyProperties(structureTestObject, structureTestObjectDto);
+                                    List<BasicTreeDto> children = new ArrayList<>();
+                                    if (!CollectionUtils.isEmpty(productMap.get(structureTestObject.getId()))) {
+                                        children.addAll(productMap.get(structureTestObject.getId()));
+                                    }
+                                    if (!CollectionUtils.isEmpty(testObjectModelMap.get(structureTestObject.getId()))) {
+                                        children.addAll(testObjectModelMap.get(structureTestObject.getId()));
+                                    }
+                                    structureTestObjectDto.setChildren(children);
+                                    return structureTestObjectDto;
+                                }, Collectors.toList())
+                        )
+                )
+        );
+        // 鏌ヨ杞﹂棿
+        List<WorkShop> workShopList = workShopMapper.selectList(new LambdaQueryWrapper<WorkShop>());
+        // 鏌ヨ瀹為獙瀹�
+        List<Laboratory> laboratoryList = laboratoryMapper.selectList(new QueryWrapper<Laboratory>());
+        // 灏佽瀹為獙瀹ゆ爲
+        List<BasicTreeDto> laboratoryTreeDtoList = laboratoryList.stream().map(laboratory -> {
+            BasicTreeDto laboratoryTreeDto = new BasicTreeDto();
+            laboratoryTreeDto.setValue(String.valueOf(laboratory.getId()));
+            laboratoryTreeDto.setLevel(BasicTreeEnums.LABORATORY_TYPE.getCode());
+            laboratoryTreeDto.setLabel(laboratory.getLaboratoryName());
+            // 灏佽妫�娴嬪璞℃潗鏂欑被鍨嬫爲
+            List<BasicTreeDto> objectTypeChildren = new ArrayList<>();
+            Map<String, List<StructureTestObjectDto>> objectTypeMap = laboratoryObjectTypeMap.get(laboratory.getId());
+            if (!CollectionUtils.isEmpty(objectTypeMap)) {
+                for (String objectType : objectTypeMap.keySet()) {
+                    BasicTreeDto objectTypeBasicTreeDto = new BasicTreeDto();
+                    objectTypeBasicTreeDto.setValue(objectType);
+                    objectTypeBasicTreeDto.setLevel(BasicTreeEnums.MATERIAL_TYPE.getCode());
+                    objectTypeBasicTreeDto.setLabel(objectType);
+                    List<StructureTestObjectDto> structureTestObjectTypeList = objectTypeMap.get(objectType);
+                    if (CollectionUtils.isEmpty(structureTestObjectTypeList)) {
+                        continue;
+                    }
+                    // 灏佽杞﹂棿鏍�
+                    if (objectType.equals(TestPorjectTypeEnums.RAW_MATERIALS.getName()) || objectType.equals(TestPorjectTypeEnums.PACKAGING_MATERIALS.getName())) {
+                        List<BasicTreeDto> workShopTreeDtoList = new ArrayList<>();
+                        for (WorkShop workShop : workShopList) {
+                            BasicTreeDto workShopTreeDto = new BasicTreeDto();
+                            workShopTreeDto.setLevel(BasicTreeEnums.WORK_SHOP_TYPE.getCode());
+                            workShopTreeDto.setValue(String.valueOf(workShop.getId()));
+                            workShopTreeDto.setLabel(workShop.getName());
+                            List<BasicTreeDto> testObjectChildren = new ArrayList<>();
+                            // 灏佽妫�娴嬪璞℃爲
+                            for (StructureTestObjectDto structureTestObjectDto : structureTestObjectTypeList) {
+                                if (workShop.getId().equals(structureTestObjectDto.getWorkShopId())) {
+                                    BasicTreeDto testObjectTreeDto = new BasicTreeDto();
+                                    testObjectTreeDto.setLevel(BasicTreeEnums.STRUCTURE_TEST_OBJECT_TYPE.getCode());
+                                    testObjectTreeDto.setValue(String.valueOf(structureTestObjectDto.getId()));
+                                    testObjectTreeDto.setLabel(structureTestObjectDto.getSpecimenName());
+                                    testObjectTreeDto.setChildren(structureTestObjectDto.getChildren());
+                                    testObjectChildren.add(testObjectTreeDto);
+                                }
+                            }
+                            workShopTreeDto.setChildren(testObjectChildren);
+                            if (!CollectionUtils.isEmpty(testObjectChildren)) {
+                                workShopTreeDtoList.add(workShopTreeDto);
+                            }
+                        }
+                        objectTypeBasicTreeDto.setChildren(workShopTreeDtoList);
+                    }
+                    // 灏佽妫�娴嬪璞℃爲
+                    if (objectType.equals(TestPorjectTypeEnums.FINISHED_PRODUCT.getName()) || objectType.equals(TestPorjectTypeEnums.SEMI_FINISHED_PRODUCT.getName()) || objectType.equals(TestPorjectTypeEnums.PURCHASED_PART.getName())) {
+                        objectTypeBasicTreeDto.setChildren(structureTestObjectTypeList.stream().map(structureTestObjectDto -> {
+                            BasicTreeDto testObjectBasicTreeDto = new BasicTreeDto(BasicTreeEnums.STRUCTURE_TEST_OBJECT_TYPE.getCode(),
+                                    structureTestObjectDto.getSpecimenName(),
+                                    String.valueOf(structureTestObjectDto.getId()),
+                                    structureTestObjectDto.getChildren());
+                            return testObjectBasicTreeDto;
+                        }).collect(Collectors.toList()));
+                    }
+                    objectTypeChildren.add(objectTypeBasicTreeDto);
+                }
+            }
+            laboratoryTreeDto.setChildren(objectTypeChildren);
+            return laboratoryTreeDto;
+        }).collect(Collectors.toList());
+        List<BasicTreeDto> factoryList = new ArrayList<>();
+        factoryList.add(new BasicTreeDto(BasicTreeEnums.FACTORY_TYPE.getCode(), "涓ぉ绉戞妧", "1", laboratoryTreeDtoList));
+        return factoryList;
+    }
+
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int addStandardTree(ModelAddDto modelAddDto) {
+        // 鏍¢獙
+        if (StringUtils.isEmpty(modelAddDto.getParentId())) {
+            throw new RuntimeException("缂哄皯鐖跺眰绾х粦瀹氬叧绯�");
+        }
+        Model model = new Model();
+        String parentLevel = modelAddDto.getParentLevel();
+        // 鍚嶇О閲嶅鎬ф�ф牎楠�
+        QueryWrapper<Model> modelQueryWrapper = new QueryWrapper<>();
+        if (BasicTreeEnums.PRODUCT_TYPE.getCode().equals(parentLevel)) {
+            model.setProductId(Integer.valueOf(modelAddDto.getParentId()));
+            modelQueryWrapper.eq("product_id", model.getProductId());
+        } else if (BasicTreeEnums.STRUCTURE_TEST_OBJECT_TYPE.getCode().equals(parentLevel)) {
+            model.setStructureTestObjectId(Integer.valueOf(modelAddDto.getParentId()));
+            modelQueryWrapper.eq("structure_test_object_id", model.getStructureTestObjectId());
+        } else {
+            throw new RuntimeException("鍨嬪彿鍙兘缁戝畾瀵硅薄鍜屼骇鍝�");
+        }
+        model.setModelName(modelAddDto.getModelName());
+        modelQueryWrapper.eq("model_name", model.getModelName());
+        Model modelResult = modelMapper.selectOne(modelQueryWrapper);
+
+        if (ObjectUtils.isNotEmpty(modelResult)) {
+            throw new RuntimeException("璇峰嬁娣诲姞閲嶅鍨嬪彿");
+        }
+        return modelMapper.insert(model);
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public int addStandardProduct(String ids, String tree) {
-        String[] trees = tree.split(" - ");
-        JSONArray jsonArray = JSON.parseArray(ids);
-        for (Object o : jsonArray) {
-            StandardProductList standardProductList = standardTreeMapper.selectStandardProductById(Integer.parseInt("" + o));
-            standardProductList.setFactory(trees[0]);
-            try {
-                standardProductList.setLaboratory(trees[1]);
-            } catch (Exception e) {
-            }
-            try {
-                standardProductList.setSampleType(trees[2]);
-            } catch (Exception e) {
-            }
-            try {
-                standardProductList.setSample(trees[3]);
-            } catch (Exception e) {
-            }
-            try {
-                standardProductList.setModel(trees[4]);
-            } catch (Exception e) {
-            }
-            standardProductListMapper.insert(standardProductList);
+    public int delStandardTree(String level, String id) {
+        if (BasicTreeEnums.MODEL_TYPE.getCode().equals(level)) {
+            modelMapper.deleteById(id);
         }
         return 1;
     }
 
     @Override
-    public List<SampleTypeDto> getStandardTree2() {
-        return standardTreeMapper.getStandardTree2();
+    public List<BasicTreeDto> getStandardTree2() {
+        // 鏌ヨ鎵�鏈夋鏌ュ璞�
+        List<StructureTestObject> structureTestObjectList = structureTestObjectMapper.selectList(new QueryWrapper<StructureTestObject>());
+        // 鏌ヨ鎵�鏈変骇鍝�
+        List<Product> productList = productMapper.selectList(new LambdaQueryWrapper<Product>());
+        // 鏌ヨ鎵�鏈夊瀷鍙�
+        List<Model> modelList = modelMapper.selectList(new QueryWrapper<Model>());
+        // 鎸夌収褰掑睘浜у搧id杩樻槸褰掑睘妫�娴嬪璞d灏嗗瀷鍙峰垎缁勫苟缁勮鎴怋asicTreeDto
+        Map<Integer, List<BasicTreeDto>> productModelMap = new HashMap<>();
+        Map<Integer, List<BasicTreeDto>> testObjectModelMap = new HashMap<>();
+        for (Model model : modelList) {
+            BasicTreeDto basicTreeDto = new BasicTreeDto();
+            basicTreeDto.setLevel(BasicTreeEnums.MODEL_TYPE.getCode());
+            basicTreeDto.setValue(model.getModelName());
+            basicTreeDto.setLabel(model.getModelName());
+            basicTreeDto.setChildren(null);
+            if (model.getProductId() != null) {
+                if (CollectionUtils.isEmpty(productModelMap.get(model.getProductId()))) {
+                    List<BasicTreeDto> basicTreeDtoList = new ArrayList<>();
+                    basicTreeDtoList.add(basicTreeDto);
+                    productModelMap.put(model.getProductId(), basicTreeDtoList);
+                } else {
+                    productModelMap.get(model.getProductId()).add(basicTreeDto);
+                }
+            }
+            if (model.getStructureTestObjectId() != null) {
+                if (CollectionUtils.isEmpty(testObjectModelMap.get(model.getStructureTestObjectId()))) {
+                    List<BasicTreeDto> basicTreeDtoList = new ArrayList<>();
+                    basicTreeDtoList.add(basicTreeDto);
+                    testObjectModelMap.put(model.getStructureTestObjectId(), basicTreeDtoList);
+                } else {
+                    testObjectModelMap.get(model.getStructureTestObjectId()).add(basicTreeDto);
+                }
+            }
+        }
+        // 鎸夌収妫�娴嬪璞d灏嗕骇鍝佸垎缁勫苟缁勮鎴怋asicTreeDto
+        Map<Integer, List<BasicTreeDto>> productMap = productList.stream().collect(Collectors.groupingBy(
+                Product::getObjectId,
+                Collectors.mapping(product -> {
+                    BasicTreeDto basicTreeDto = new BasicTreeDto();
+                    basicTreeDto.setValue(product.getName());
+                    basicTreeDto.setLabel(product.getName());
+                    basicTreeDto.setLevel(BasicTreeEnums.PRODUCT_TYPE.getCode());
+                    basicTreeDto.setChildren(productModelMap.get(product.getId()));
+                    return basicTreeDto;
+                }, Collectors.toList())
+        ));
+        // 瀵规娴嬪璞″厛鎸夌収瀹為獙瀹ゅ湪鎸夌収妫�鏌ュ璞$被鍒垎绫�
+        List<BasicTreeDto> testProjectBasicTreeList = structureTestObjectList.stream().map(structureTestObject -> {
+            BasicTreeDto basicTreeDto = new BasicTreeDto();
+            basicTreeDto.setValue(structureTestObject.getSpecimenName() + "(" + structureTestObject.getObjectType() + ")");
+            basicTreeDto.setLabel(structureTestObject.getSpecimenName() + "(" + structureTestObject.getObjectType() + ")");
+            basicTreeDto.setLevel(BasicTreeEnums.STRUCTURE_TEST_OBJECT_TYPE.getCode());
+            List<BasicTreeDto> children = new ArrayList<>();
+            if (!CollectionUtils.isEmpty(productMap.get(structureTestObject.getId()))) {
+                children.addAll(productMap.get(structureTestObject.getId()));
+            }
+            if (!CollectionUtils.isEmpty(testObjectModelMap.get(structureTestObject.getId()))) {
+                children.addAll(testObjectModelMap.get(structureTestObject.getId()));
+            }
+            basicTreeDto.setChildren(children);
+            return basicTreeDto;
+        }).collect(Collectors.toList());
+        return testProjectBasicTreeList;
     }
 
     @Override
@@ -187,6 +339,7 @@
 
     /**
      * 娌冲彛妫�娴嬩腑蹇冨鍏�
+     *
      * @param file
      */
     @Override
@@ -466,44 +619,40 @@
 
     /**
      * 淇敼鏍囧噯鏁�
-     * @param standardTree
+     *
+     * @param modelAddDto
      * @return
      */
     @Override
-    public int updateStandardTree(StandardTree standardTree) {
-        // 淇敼鍚嶇О鍖归厤鐨勬爣鍑嗘爲涓嬬殑妫�楠岄」鐩�
-        // 鏌ヨ鎵�鏈夊璞�+鍚嶇О鐨勬爲
-
-        List<StandardProductList> standardProductLists = standardProductListService.list(Wrappers.<StandardProductList>lambdaUpdate()
-                .eq(StandardProductList::getSample, standardTree.getSample())
-                .eq(StandardProductList::getSampleType, standardTree.getSampleType())
-                .eq(StandardProductList::getModel, standardTree.getOldModel()));
-        if (CollectionUtils.isNotEmpty(standardProductLists)) {
-            for (StandardProductList standardProductList : standardProductLists) {
-                // 淇敼鏍峰搧鍚嶇О
-                standardProductList.setModel(standardTree.getModel());
-                // 淇敼鏍戝悕绉�
-                // 闇�瑕佹埅鍙栫鍥涚骇, 閬垮厤涓夊洓绾у悕绉颁竴鏍蜂慨鏀归敊璇�
-                String[] trees = standardProductList.getTree().split(" - ");
-                trees[4] = standardTree.getModel();
-                List<String> list = CollUtil.newArrayList(trees);
-                String newName = CollUtil.join(list, " - ");
-                standardProductList.setTree(newName);
+    public int updateStandardTree(ModelAddDto modelAddDto) {
+        if (modelAddDto.getId() == null) {
+            throw new RuntimeException("缂哄皯鍨嬪彿涓婚敭");
+        }
+        Model model = modelMapper.selectById(modelAddDto.getId());
+        if (ObjectUtils.isEmpty(model)) {
+            throw new RuntimeException("鍨嬪彿鏌ユ壘澶辫触");
+        }
+        QueryWrapper<Model> modelQueryWrapper = new QueryWrapper<>();
+        if (model.getStructureTestObjectId() != null) {
+            modelQueryWrapper.eq("structure_test_object_id", model.getStructureTestObjectId());
+        }
+        if (model.getProductId() != null) {
+            modelQueryWrapper.eq("product_id", model.getProductId());
+        }
+        modelQueryWrapper.eq("model_name", modelAddDto.getModelName());
+        model.setModelName(modelAddDto.getModelName());
+        List<Model> modelList = modelMapper.selectList(modelQueryWrapper);
+        if (CollectionUtils.isEmpty(modelList)) {
+            return modelMapper.updateById(model);
+        } else if (modelList.size() == 1) {
+            if (!model.getId().equals(modelList.get(0).getId())) {
+                throw new RuntimeException("鍨嬪彿鍚嶇О閲嶅");
+            } else {
+                return modelMapper.updateById(model);
             }
-            standardProductListService.updateBatchById(standardProductLists);
+        } else {
+            throw new RuntimeException("鍨嬪彿鍚嶇О閲嶅");
         }
-
-        // 淇敼鏍囧噯鏁版楠岄」鐩�
-        LambdaUpdateWrapper<StandardTree> wrapper = Wrappers.<StandardTree>lambdaUpdate()
-                .eq(StandardTree::getFactory, standardTree.getFactory())
-                .eq(StandardTree::getLaboratory, standardTree.getLaboratory())
-                .eq(StandardTree::getSampleType, standardTree.getSampleType())
-                .eq(StandardTree::getModel, standardTree.getOldModel())
-                .set(StandardTree::getModel, standardTree.getModel());
-        if (StringUtils.isNotBlank(standardTree.getSample())) {
-            wrapper.eq(StandardTree::getSample, standardTree.getSample());
-        }
-        return standardTreeMapper.update(null, wrapper);
     }
 
     @Override

--
Gitblit v1.9.3