From b95f460e35a59aa920e27f0f7e29e0fdf0da1c7c Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期二, 01 四月 2025 14:25:01 +0800
Subject: [PATCH] 1。检验对象导入优化 2.可靠性计划产品选择

---
 basic-server/src/main/java/com/ruoyi/basic/mapper/StructureItemParameterMapper.java   |    2 ++
 basic-server/src/main/java/com/ruoyi/basic/service/CapacityScopeService.java          |    3 +++
 basic-server/src/main/java/com/ruoyi/basic/service/impl/CapacityScopeServiceImpl.java |   30 ++++++++++++++++++------------
 basic-server/src/main/java/com/ruoyi/basic/controller/CapacityScopeController.java    |    9 +++++++++
 basic-server/src/main/resources/mapper/StructureItemParameterMapper.xml               |    7 +++++++
 basic-server/src/main/java/com/ruoyi/basic/dto/StructureTestObjectDto.java            |    2 ++
 6 files changed, 41 insertions(+), 12 deletions(-)

diff --git a/basic-server/src/main/java/com/ruoyi/basic/controller/CapacityScopeController.java b/basic-server/src/main/java/com/ruoyi/basic/controller/CapacityScopeController.java
index 97ac1cf..113195d 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/controller/CapacityScopeController.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/controller/CapacityScopeController.java
@@ -143,6 +143,15 @@
         return Result.success(capacityScopeService.getItemTree());
     }
 
+    /**
+     * 鎴愬搧/鍘熻緟鏉�
+     */
+    @ApiOperation(value = "鑾峰彇妫�楠屽璞℃爲")
+    @GetMapping("/getItemTreeProduct")
+    public Result getItemTreeProduct(StructureTestObjectDto structureTestObjectDto) {
+        return Result.success(capacityScopeService.getItemTreeProduct(structureTestObjectDto));
+    }
+
     @PostMapping("/importEquipData")
     public Result importData(@RequestParam("file") MultipartFile file) {
         // 璋冪敤瀵煎叆宸ュ叿
diff --git a/basic-server/src/main/java/com/ruoyi/basic/dto/StructureTestObjectDto.java b/basic-server/src/main/java/com/ruoyi/basic/dto/StructureTestObjectDto.java
index 2aa9a4f..9734ab9 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/dto/StructureTestObjectDto.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/dto/StructureTestObjectDto.java
@@ -14,5 +14,7 @@
 
     private String workShopName;
 
+    private String objectType;
+
     private List<BasicTreeDto> children;
 }
diff --git a/basic-server/src/main/java/com/ruoyi/basic/mapper/StructureItemParameterMapper.java b/basic-server/src/main/java/com/ruoyi/basic/mapper/StructureItemParameterMapper.java
index b7e7074..e95ac18 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/mapper/StructureItemParameterMapper.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/mapper/StructureItemParameterMapper.java
@@ -29,5 +29,7 @@
     int removeNoSample(@Param("sample") String sample);
 
     List<StructureItemParameter> selectItemParameterBySample(@Param("sample") String sample);
+
+    List<TestItemDto> getItemTreeProduct(@Param("objectType") String objectType);
 }
 
diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/CapacityScopeService.java b/basic-server/src/main/java/com/ruoyi/basic/service/CapacityScopeService.java
index c34de55..ef27aea 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/service/CapacityScopeService.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/CapacityScopeService.java
@@ -4,6 +4,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.basic.dto.PageTestObjectDto;
+import com.ruoyi.basic.dto.StructureTestObjectDto;
 import com.ruoyi.basic.dto.TestItemDto;
 
 import com.ruoyi.basic.excel.StructureTestObjectData;
@@ -45,5 +46,7 @@
     List<TestItemDto> getItemTree();
 
     void importPartExcel(List<StructureTestObjectData> list);
+
+    List<TestItemDto> getItemTreeProduct(StructureTestObjectDto structureTestObjectDto);
 }
 
diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/impl/CapacityScopeServiceImpl.java b/basic-server/src/main/java/com/ruoyi/basic/service/impl/CapacityScopeServiceImpl.java
index d59f70f..4f790a1 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/service/impl/CapacityScopeServiceImpl.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/CapacityScopeServiceImpl.java
@@ -7,6 +7,7 @@
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.basic.dto.StructureTestObjectDto;
 import com.ruoyi.basic.excel.StructureTestObjectData;
 import com.ruoyi.basic.service.*;
 import com.ruoyi.common.exception.base.BaseException;
@@ -189,25 +190,25 @@
     public List<TestItemDto> getItemTree() {
         return structureItemParameterMapper.getItemTree();
     }
+
+    @Override
+    public List<TestItemDto> getItemTreeProduct(StructureTestObjectDto structureTestObjectDto) {
+        return structureItemParameterMapper.getItemTreeProduct(structureTestObjectDto.getObjectType());
+    }
     
     @Transactional(rollbackFor = Exception.class)
     @Override
     public void importPartExcel(List<StructureTestObjectData> list) {
-        // 闃舵1: 鏁版嵁棰勫鐞�
-        // 鏀堕泦鎵�鏈夐渶瑕佹煡璇㈢殑鏍囨湰淇℃伅
-        Set<String> specimenKeys = list.stream()
-                .map(i -> i.getSpecimenName() + "|" + i.getSpecimenNameEn())
-                .collect(Collectors.toSet());
-
         // 闃舵2: 鎵归噺鏌ヨ鐜版湁缁撴瀯娴嬭瘯瀵硅薄
         Map<String, StructureTestObject> existStructureTestObjects = structureTestObjectMapper.selectList(
                 Wrappers.<StructureTestObject>lambdaQuery()
                         .in(StructureTestObject::getSpecimenName, list.stream().map(StructureTestObjectData::getSpecimenName).collect(Collectors.toSet()))
                         .in(StructureTestObject::getSpecimenNameEn, list.stream().map(StructureTestObjectData::getSpecimenNameEn).collect(Collectors.toSet()))
+                        .in(StructureTestObject::getObjectType, list.stream().map(StructureTestObjectData::getObjectType).collect(Collectors.toSet()))
         ).stream().collect(Collectors.toMap(
-                obj -> obj.getSpecimenName() + "|" + obj.getSpecimenNameEn(),
+                obj -> generateStructureKey(obj.getSpecimenName(), obj.getSpecimenNameEn(), obj.getObjectType()), // 缁熶竴閿敓鎴�
                 Function.identity(),
-                (existing, replacement) -> existing  // 澶勭悊閲嶅閿�
+                (existing, replacement) -> existing
         ));
 
         // 闃舵3: 棰勫鐞嗚溅闂翠俊鎭�
@@ -234,7 +235,7 @@
 
         for (StructureTestObjectData i : list) {
             // 澶勭悊缁撴瀯娴嬭瘯瀵硅薄锛堥�昏緫涓嶅彉锛�
-            String specimenKey = i.getSpecimenName() + "|" + i.getSpecimenNameEn();
+            String specimenKey = i.getSpecimenName() + "|" + i.getSpecimenNameEn() + "|" + i.getObjectType();
             StructureTestObject structureTestObject = existStructureTestObjects.get(specimenKey);
 
             if (structureTestObject == null) {
@@ -270,6 +271,11 @@
         obj.setLaboratoryId(9);
     }
 
+    // 缁熶竴閿敓鎴愭柟娉�
+    private String generateStructureKey(String name, String nameEn, String objectType) {
+        return name + "|" + nameEn + "|" + objectType;
+    }
+
     // 澶勭悊浜у搧鏁版嵁
     private void processProductData(StructureTestObjectData data,
                                     Integer objectId,
@@ -277,7 +283,7 @@
                                     List<Product> insertList,
                                     List<Product> updateList) {
         // 鏋勫缓浜у搧鍞竴鏍囪瘑
-        String productKey = data.getName() + "|" + data.getNameEn();
+        String productKey = data.getName() + "|" + data.getNameEn() + "|" + data.getObjectType();
 
         // 妫�鏌ュ唴瀛樹腑鏄惁宸插鐞嗚繃璇ヤ骇鍝�
         Optional<Product> existingProduct = findProductInBatchLists(productKey, insertList, updateList);
@@ -364,7 +370,7 @@
             List<StructureTestObject> insertedObjects) {
 
         insertedObjects.forEach(obj -> {
-            String key = obj.getSpecimenName() + "|" + obj.getSpecimenNameEn();
+            String key = obj.getSpecimenName() + "|" + obj.getSpecimenNameEn()+ "|" + obj.getObjectType();
             existStructureTestObjects.get(key).setId(obj.getId()); // 鏇存柊缂撳瓨涓殑ID
         });
     }
@@ -378,7 +384,7 @@
 
         // 闃舵5鍘熸湁浜у搧澶勭悊閫昏緫杩佺Щ鑷虫
         pendingProducts.forEach(i -> {
-            String specimenKey = i.getSpecimenName() + "|" + i.getSpecimenNameEn();
+            String specimenKey = i.getSpecimenName() + "|" + i.getSpecimenNameEn()+ "|" + i.getObjectType();
             StructureTestObject sto = structureTestObjectCache.get(specimenKey);
 
             processProductData(
diff --git a/basic-server/src/main/resources/mapper/StructureItemParameterMapper.xml b/basic-server/src/main/resources/mapper/StructureItemParameterMapper.xml
index 117b826..c8c4ea8 100644
--- a/basic-server/src/main/resources/mapper/StructureItemParameterMapper.xml
+++ b/basic-server/src/main/resources/mapper/StructureItemParameterMapper.xml
@@ -164,4 +164,11 @@
         )
         order by id asc
     </select>
+
+    <select id="getItemTreeProduct" resultMap="itemDto">
+        select sto.id sId, sto.specimen_name sName, p.id pId, p.name pName
+        from structure_test_object sto
+                 left join product p on p.object_id = sto.id
+        WHERE sto.object_type = #{objectType}
+    </select>
 </mapper>

--
Gitblit v1.9.3