From 9b5243a4eb50a6e034620f2fb9b2ffd6fb80820a Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期五, 28 三月 2025 09:19:23 +0800
Subject: [PATCH] 1.检验对象导入优化,2.外购件附件提交3.可靠性计划成品和原辅料

---
 basic-server/src/main/java/com/ruoyi/basic/service/CapacityScopeService.java                        |    3 
 basic-server/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java                     |   92 -------
 basic-server/src/main/java/com/ruoyi/basic/excel/StructureTestObjectListener.java                   |   10 
 ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml                                 |    2 
 inspect-server/src/main/java/com/ruoyi/inspect/dto/ReliabilityPlanProductDto.java                   |    8 
 basic-server/src/main/java/com/ruoyi/basic/service/ProductService.java                              |    3 
 inspect-server/src/main/java/com/ruoyi/inspect/pojo/ReliabilityPlanMaterial.java                    |   43 +++
 inspect-server/src/main/java/com/ruoyi/inspect/mapper/ReliabilityPlanProductMapper.java             |   16 +
 inspect-server/src/main/java/com/ruoyi/inspect/service/ReliabilityPlanMaterialService.java          |   24 +
 inspect-server/src/main/java/com/ruoyi/inspect/controller/InspectionPurchasedController.java        |   12 
 inspect-server/src/main/java/com/ruoyi/inspect/controller/ReliabilityPlanMaterialController.java    |   43 +++
 inspect-server/src/main/resources/mapper/ReliabilityPlanProductMapper.xml                           |   17 +
 basic-server/src/main/java/com/ruoyi/basic/controller/CapacityScopeController.java                  |    2 
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/ReliabilityPlanProductServiceImpl.java  |   54 ++++
 inspect-server/src/main/java/com/ruoyi/inspect/controller/ReliabilityPlanProductController.java     |   44 +++
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InspectionPurchasedServiceImpl.java     |   50 ++-
 basic-server/src/main/java/com/ruoyi/basic/service/impl/CapacityScopeServiceImpl.java               |  144 ++++++++++
 inspect-server/src/main/java/com/ruoyi/inspect/pojo/ReliabilityPlanProduct.java                     |   49 +++
 inspect-server/src/main/java/com/ruoyi/inspect/pojo/InspectionPurchased.java                        |    6 
 inspect-server/src/main/java/com/ruoyi/inspect/dto/ReliabilityPlanMaterialDto.java                  |    8 
 inspect-server/src/main/java/com/ruoyi/inspect/mapper/ReliabilityPlanMaterialMapper.java            |   16 +
 inspect-server/src/main/resources/mapper/ReliabilityPlanMaterialMapper.xml                          |   16 +
 inspect-server/src/main/java/com/ruoyi/inspect/service/impl/ReliabilityPlanMaterialServiceImpl.java |   55 ++++
 inspect-server/src/main/java/com/ruoyi/inspect/service/InspectionPurchasedService.java              |    3 
 inspect-server/src/main/java/com/ruoyi/inspect/service/ReliabilityPlanProductService.java           |   24 +
 25 files changed, 610 insertions(+), 134 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 b30d50e..7923abd 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
@@ -394,7 +394,7 @@
             }
             processedFiles.add(fileHash);
 
-            EasyExcel.read(file.getInputStream(), StructureTestObjectData.class, new StructureTestObjectListener(productService)).sheet().doRead();
+            EasyExcel.read(file.getInputStream(), StructureTestObjectData.class, new StructureTestObjectListener(capacityScopeService)).sheet().doRead();
         } catch (IOException e) {
             // 杩欓噷鍙互鏍规嵁瀹為檯鎯呭喌杩涜鏇村畬鍠勭殑閿欒澶勭悊锛屾瘮濡傝褰曟棩蹇楃瓑
             System.err.println("璇诲彇鏂囦欢鏃跺彂鐢熼敊璇�: " + e.getMessage());
diff --git a/basic-server/src/main/java/com/ruoyi/basic/excel/StructureTestObjectListener.java b/basic-server/src/main/java/com/ruoyi/basic/excel/StructureTestObjectListener.java
index 04d3c2c..3a915aa 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/excel/StructureTestObjectListener.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/excel/StructureTestObjectListener.java
@@ -2,7 +2,7 @@
 
 import com.alibaba.excel.context.AnalysisContext;
 import com.alibaba.excel.event.AnalysisEventListener;
-import com.ruoyi.basic.service.ProductService;
+import com.ruoyi.basic.service.CapacityScopeService;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -11,10 +11,10 @@
     private static final int BATCH_COUNT = 1000;
     List<StructureTestObjectData> list = new ArrayList<>();
 
-    private ProductService productService;
+    private CapacityScopeService capacityScopeService;
 
-    public StructureTestObjectListener(ProductService productService) {
-        this.productService = productService;
+    public StructureTestObjectListener(CapacityScopeService capacityScopeService) {
+        this.capacityScopeService = capacityScopeService;
     }
 
     @Override
@@ -33,6 +33,6 @@
 
 
     private void save() {
-        productService.importPartExcel(list);
+        capacityScopeService.importPartExcel(list);
     }
 }
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 6139cd1..c34de55 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
@@ -6,6 +6,7 @@
 import com.ruoyi.basic.dto.PageTestObjectDto;
 import com.ruoyi.basic.dto.TestItemDto;
 
+import com.ruoyi.basic.excel.StructureTestObjectData;
 import com.ruoyi.basic.pojo.StructureItemParameter;
 import com.ruoyi.basic.pojo.StructureTestObject;
 
@@ -42,5 +43,7 @@
     List<Map<String, Object>> getInsProduction();
 
     List<TestItemDto> getItemTree();
+
+    void importPartExcel(List<StructureTestObjectData> list);
 }
 
diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/ProductService.java b/basic-server/src/main/java/com/ruoyi/basic/service/ProductService.java
index 20c7b91..093a285 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/service/ProductService.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/ProductService.java
@@ -5,7 +5,6 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.basic.dto.ProductDTO1;
 import com.ruoyi.basic.dto.StructureTestObjectDto;
-import com.ruoyi.basic.excel.StructureTestObjectData;
 import com.ruoyi.basic.pojo.Product;
 
 import java.util.List;
@@ -24,8 +23,6 @@
     int upProduct(Product product);
 
     int delProduct(Integer id);
-
-    void importPartExcel(List<StructureTestObjectData> list);
 
     int updateWorkShop(Integer productId, Integer workShopId, String name);
 
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 5fa1c5b..c58580b 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
@@ -2,23 +2,28 @@
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 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.excel.StructureTestObjectData;
+import com.ruoyi.basic.service.*;
 import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.QueryWrappers;
 import com.ruoyi.basic.dto.PageTestObjectDto;
 import com.ruoyi.basic.dto.TestItemDto;
 import com.ruoyi.basic.mapper.*;
 import com.ruoyi.basic.pojo.*;
-import com.ruoyi.basic.service.CapacityScopeService;
-import com.ruoyi.basic.service.StandardProductListService;
-import com.ruoyi.basic.service.StructureItemParameterService;
+import com.ruoyi.common.utils.StringUtils;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -39,6 +44,10 @@
 
     private ProductMapper productMapper;
 
+    private ProductService productService;
+
+    private StructureTestObjectService structureTestObjectService;
+
     private StructureTestObjectPartMapper structureTestObjectPartMapper;
 
     private ProductPartMapper productPartMapper;
@@ -49,6 +58,8 @@
 
     private StructureItemParameterService structureItemParameterService;
 
+    private WorkShopMapper workShopMapper;
+    
     @Override
     public IPage<StructureItemParameter> selectItemParameterList(Page page, StructureItemParameter itemParameter) {
         return structureItemParameterMapper.selectItemParameterList(page, QueryWrappers.queryWrappers(itemParameter));
@@ -181,5 +192,132 @@
     public List<TestItemDto> getItemTree() {
         return structureItemParameterMapper.getItemTree();
     }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void importPartExcel(List<StructureTestObjectData> list) {
+        // 鎵归噺鏌ヨ StructureTestObject
+        Map<String, StructureTestObject> structureTestObjectMap = getStructureTestObjectMap(list);
+        // 鎵归噺鏌ヨ WorkShop
+        Map<String, WorkShop> workShopMap = getWorkShopMap(list);
+
+        List<StructureTestObject> insertStructureTestObjects = new ArrayList<>();
+        List<StructureTestObject> updateStructureTestObjects = new ArrayList<>();
+        List<Product> insertProducts = new ArrayList<>();
+        List<Product> updateProducts = new ArrayList<>();
+
+        for (StructureTestObjectData data : list) {
+            String key = data.getSpecimenName() + "_" + data.getSpecimenNameEn();
+            StructureTestObject structureTestObject = structureTestObjectMap.get(key);
+
+            if (ObjectUtils.isEmpty(structureTestObject)) {
+                structureTestObject = createStructureTestObject(data);
+                insertStructureTestObjects.add(structureTestObject);
+            } else {
+                updateStructureTestObject(structureTestObject, data);
+                updateStructureTestObjects.add(structureTestObject);
+            }
+
+            String productKey = data.getName() + "_" + data.getNameEn();
+            Product product = productMapper.selectOne(new LambdaQueryWrapper<Product>()
+                    .eq(Product::getName, data.getName())
+                    .eq(Product::getNameEn, data.getNameEn()));
+
+            if (ObjectUtils.isEmpty(product)) {
+                product = createProduct(data, structureTestObject.getId(), workShopMap);
+                insertProducts.add(product);
+            } else {
+                updateProduct(product, data, structureTestObject.getId(), workShopMap);
+                updateProducts.add(product);
+            }
+        }
+
+        // 鎵归噺鎻掑叆鍜屾洿鏂�
+        if (!insertStructureTestObjects.isEmpty()) {
+            structureTestObjectService.saveOrUpdateBatch(insertStructureTestObjects);
+        }
+        if (!updateStructureTestObjects.isEmpty()) {
+            structureTestObjectService.updateBatchById(updateStructureTestObjects);
+        }
+        if (!insertProducts.isEmpty()) {
+            productService.saveOrUpdateBatch(insertProducts);
+        }
+        if (!updateProducts.isEmpty()) {
+            productService.updateBatchById(updateProducts);
+        }
+    }
+
+    private Map<String, StructureTestObject> getStructureTestObjectMap(List<StructureTestObjectData> list) {
+        List<String> specimenNames = list.stream().map(StructureTestObjectData::getSpecimenName).collect(Collectors.toList());
+        List<String> specimenNamesEn = list.stream().map(StructureTestObjectData::getSpecimenNameEn).collect(Collectors.toList());
+        List<StructureTestObject> structureTestObjects = structureTestObjectMapper.selectList(new LambdaQueryWrapper<StructureTestObject>()
+                .in(StructureTestObject::getSpecimenName, specimenNames)
+                .in(StructureTestObject::getSpecimenNameEn, specimenNamesEn));
+        Map<String, StructureTestObject> map = new HashMap<>();
+        for (StructureTestObject obj : structureTestObjects) {
+            map.put(obj.getSpecimenName() + "_" + obj.getSpecimenNameEn(), obj);
+        }
+        return map;
+    }
+
+    private Map<String, WorkShop> getWorkShopMap(List<StructureTestObjectData> list) {
+        List<String> workShopNames = list.stream()
+                .map(StructureTestObjectData::getWorkShopName)
+                .filter(StringUtils::isNotEmpty)
+                .distinct()
+                .collect(Collectors.toList());
+        List<WorkShop> workShops = workShopMapper.selectList(new LambdaQueryWrapper<WorkShop>()
+                .in(WorkShop::getName, workShopNames));
+        Map<String, WorkShop> map = new HashMap<>();
+        for (WorkShop workShop : workShops) {
+            map.put(workShop.getName(), workShop);
+        }
+        return map;
+    }
+
+    private StructureTestObject createStructureTestObject(StructureTestObjectData data) {
+        StructureTestObject structureTestObject = new StructureTestObject();
+        structureTestObject.setLaboratoryId(9);
+        structureTestObject.setSpecimenName(data.getSpecimenName());
+        structureTestObject.setSpecimenNameEn(data.getSpecimenNameEn());
+        structureTestObject.setCode(data.getCode());
+        structureTestObject.setWorkShopName("");
+        return structureTestObject;
+    }
+
+    private void updateStructureTestObject(StructureTestObject structureTestObject, StructureTestObjectData data) {
+        structureTestObject.setCode(data.getCode());
+        structureTestObject.setLaboratoryId(9);
+    }
+
+    private Product createProduct(StructureTestObjectData data, Integer objectId, Map<String, WorkShop> workShopMap) {
+        Product product = new Product();
+        product.setName(data.getName());
+        product.setNameEn(data.getNameEn());
+        if (StringUtils.isNotEmpty(data.getWorkShopName())) {
+            WorkShop workShop = workShopMap.get(data.getWorkShopName());
+            if (workShop == null) {
+                throw new BaseException("璇峰厛缁存姢杞﹂棿淇℃伅");
+            }
+            product.setWorkShopId(workShop.getId());
+        }
+        product.setWorkShopName(data.getWorkShopName());
+        product.setObjectId(objectId);
+        return product;
+    }
+
+    private void updateProduct(Product product, StructureTestObjectData data, Integer objectId, Map<String, WorkShop> workShopMap) {
+        if (StringUtils.isNotEmpty(data.getWorkShopName())) {
+            WorkShop workShop = workShopMap.get(data.getWorkShopName());
+            if (workShop == null) {
+                throw new BaseException("璇峰厛缁存姢杞﹂棿淇℃伅");
+            }
+            product.setWorkShopId(workShop.getId());
+        }
+        product.setWorkShopName(data.getWorkShopName());
+        product.setName(data.getName());
+        product.setNameEn(data.getNameEn());
+        product.setObjectId(objectId);
+    }
 }
 
diff --git a/basic-server/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java b/basic-server/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
index f144c00..918a98b 100644
--- a/basic-server/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
+++ b/basic-server/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java
@@ -4,25 +4,20 @@
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
-import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 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.mapper.*;
 import com.ruoyi.basic.service.*;
-import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.QueryWrappers;
 import com.ruoyi.basic.dto.ProductDTO1;
-import com.ruoyi.basic.excel.StructureTestObjectData;
 import com.ruoyi.basic.pojo.*;
-import com.ruoyi.common.utils.StringUtils;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
-
 /**
  * @author z1292
  * @description 閽堝琛ㄣ�恜roduct(浜у搧琛�)銆戠殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
@@ -34,8 +29,6 @@
     implements ProductService{
 
     private ProductMapper productMapper;
-
-    private LaboratoryService laboratoryService;
 
     private StructureTestObjectMapper structureTestObjectMapper;
 
@@ -129,91 +122,6 @@
                 .eq(ProductPart::getProductId, id));
 
         return productMapper.deleteById(id);
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void importPartExcel(List<StructureTestObjectData> list) {
-        list.forEach(i -> {
-            // 妫�楠屽璞�
-            StructureTestObject structureTestObject1 = structureTestObjectMapper.selectOne(Wrappers.<StructureTestObject>lambdaQuery()
-                    .eq(StructureTestObject::getSpecimenName, i.getSpecimenName())
-                    .eq(StructureTestObject::getSpecimenNameEn, i.getSpecimenNameEn()));
-//            Laboratory laboratory = laboratoryService.getOne(Wrappers.<Laboratory>lambdaQuery()
-//                    .eq(Laboratory::getId, i.getLaboratory()));
-//            if (ObjectUtils.isEmpty(laboratory)) {
-//                throw new BaseException("鏈壘鍒拌鍦烘墍锛�" + i.getLaboratory() + "锛岃妫�鏌ユ槸鍚﹀瓨鍦ㄨ鍦烘墍锛�");
-//            }
-            // 濡傛灉涓虹┖杩涜鏂板
-            if (ObjectUtils.isEmpty(structureTestObject1)) {
-                StructureTestObject structureTestObject = new StructureTestObject();
-                structureTestObject.setLaboratoryId(9);
-                structureTestObject.setSpecimenName(i.getSpecimenName());
-                structureTestObject.setSpecimenNameEn(i.getSpecimenNameEn());
-                structureTestObject.setCode(i.getCode());
-                structureTestObject.setWorkShopName("");
-                structureTestObjectMapper.insert(structureTestObject);
-
-                // 浜у搧
-                Product product = productMapper.selectOne(Wrappers.<Product>lambdaQuery()
-                        .eq(Product::getName, i.getName())
-                        .eq(Product::getNameEn, i.getNameEn()));
-                if (ObjectUtils.isEmpty(product)) {
-                    Product product1 = new Product();
-                    product1.setName(i.getName());
-                    product1.setNameEn(i.getNameEn());
-                    if (StringUtils.isNotEmpty(i.getWorkShopName())) {
-                        WorkShop workShop = workShopMapper.selectOne(Wrappers.<WorkShop>lambdaQuery().eq(WorkShop::getName, i.getWorkShopName()));
-                        if (workShop == null){
-                            throw new BaseException("璇峰厛缁存姢杞﹂棿淇℃伅");
-                        }else {
-                            product1.setWorkShopId(workShop.getId());
-                        }
-                    }
-                    product1.setWorkShopName(i.getWorkShopName());
-                    product1.setObjectId(structureTestObject.getId());
-                    baseMapper.insert(product1);
-                }
-            } else {
-                structureTestObject1.setCode(i.getCode());
-                structureTestObject1.setLaboratoryId(9);
-                structureTestObjectMapper.updateById(structureTestObject1);
-                // 浜у搧
-                Product product = productMapper.selectOne(Wrappers.<Product>lambdaQuery()
-                        .eq(Product::getName, i.getName())
-                        .eq(Product::getNameEn, i.getNameEn()));
-                if (ObjectUtils.isEmpty(product)) {
-                    Product product1 = new Product();
-                    if (StringUtils.isNotEmpty(i.getWorkShopName())) {
-                        WorkShop workShop =  workShopMapper.selectOne(Wrappers.<WorkShop>lambdaQuery().eq(WorkShop::getName, i.getWorkShopName()));
-                        if (workShop == null){
-                            throw new BaseException("璇峰厛缁存姢杞﹂棿淇℃伅");
-                        }else {
-                            product1.setWorkShopId(workShop.getId());
-                        }
-                    }
-                    product1.setWorkShopName(i.getWorkShopName());
-                    product1.setName(i.getName());
-                    product1.setNameEn(i.getNameEn());
-                    product1.setObjectId(structureTestObject1.getId());
-                    baseMapper.insert(product1);
-                } else {
-                    if (StringUtils.isNotEmpty(i.getWorkShopName())) {
-                        WorkShop workShop =  workShopMapper.selectOne(Wrappers.<WorkShop>lambdaQuery().eq(WorkShop::getName, i.getWorkShopName()));
-                        if (workShop == null){
-                            throw new BaseException("璇峰厛缁存姢杞﹂棿淇℃伅");
-                        }else {
-                            product.setWorkShopId(workShop.getId());
-                        }
-                    }
-                    product.setWorkShopName(i.getWorkShopName());
-                    product.setName(i.getName());
-                    product.setNameEn(i.getNameEn());
-                    product.setObjectId(structureTestObject1.getId());
-                    baseMapper.updateById(product);
-                }
-            }
-        });
     }
 
     @Override
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InspectionPurchasedController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InspectionPurchasedController.java
index bab4e46..bdd00f9 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/controller/InspectionPurchasedController.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/InspectionPurchasedController.java
@@ -7,6 +7,7 @@
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 /**
  * <p>
@@ -26,7 +27,7 @@
     @ApiOperation("鏌ヨ鍒楄〃")
     @GetMapping("/selectInspection")
     public Result selectInspectionPurchased(Page page, InspectionPurchasedDto inspectionPurchasedDto) {
-        return Result.success(inspectionPurchasedService.selectInspectionPurchased(page,inspectionPurchasedDto));
+        return Result.success(inspectionPurchasedService.selectInspectionPurchased(page, inspectionPurchasedDto));
     }
 
     @ApiOperation(value = "娣诲姞澶栬喘浠舵楠屾暟鎹�")
@@ -36,9 +37,12 @@
     }
 
     @ApiOperation(value = "鏇存柊鎻愪氦澶栬喘浠舵楠屾暟鎹�")
-    @PostMapping("/UpdateInspection")
-    public Result<?> UpdateInspection(InspectionPurchasedDto inspectionPurchasedDto) throws Exception {
-        return Result.success(inspectionPurchasedService.UpdateInspection(inspectionPurchasedDto));
+    @PostMapping("/updateInspection")
+    public Result<?> updateInspection(@RequestParam("id") Integer id,
+                                      @RequestParam(value = "file", required = false) MultipartFile file,
+                                      @RequestParam("inspectionItems") String inspectionItems,
+                                      @RequestParam("result") String result) throws Exception {
+        return Result.success(inspectionPurchasedService.updateInspection(file, id, inspectionItems, result));
     }
 
     @ApiOperation(value = "鍒犻櫎澶栬喘浠舵楠�")
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/ReliabilityPlanMaterialController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/ReliabilityPlanMaterialController.java
new file mode 100644
index 0000000..924e4d4
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/ReliabilityPlanMaterialController.java
@@ -0,0 +1,43 @@
+package com.ruoyi.inspect.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.inspect.dto.ReliabilityPlanMaterialDto;
+import com.ruoyi.inspect.service.ReliabilityPlanMaterialService;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ * 鍙潬鎬ц鍒掑師杈呮枡 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author ld
+ * @since 2025-03-26 02:24:43
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/reliabilityPlanMaterial")
+public class ReliabilityPlanMaterialController {
+
+    private ReliabilityPlanMaterialService reliabilityPlanMaterialService;
+
+    @ApiOperation("鏌ヨ鍙潬鎬ц鍒掓垚鍝�")
+    @GetMapping("/selectMaterial")
+    public Result selectMaterial(Page page, ReliabilityPlanMaterialDto reliabilityPlanMaterialDto) {
+        return Result.success(reliabilityPlanMaterialService.selectMaterial(page,reliabilityPlanMaterialDto));
+    }
+
+    @ApiOperation(value = "娣诲姞鍙潬鎬ц鍒掓垚鍝�")
+    @PostMapping("/addOrUpdateMaterial")
+    public Result<?> addOrUpdateMaterial(@RequestBody ReliabilityPlanMaterialDto reliabilityPlanMaterialDto) {
+        return Result.success(reliabilityPlanMaterialService.addOrUpdateMaterial(reliabilityPlanMaterialDto));
+    }
+
+    @ApiOperation(value = "鍒犻櫎鍙潬鎬ц鍒掓垚鍝�")
+    @DeleteMapping("/delMaterial")
+    public Result<?> delMaterial(Integer id) {
+        return Result.success(reliabilityPlanMaterialService.delMaterial(id));
+    }
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/ReliabilityPlanProductController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/ReliabilityPlanProductController.java
new file mode 100644
index 0000000..ceaaadb
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/ReliabilityPlanProductController.java
@@ -0,0 +1,44 @@
+package com.ruoyi.inspect.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.inspect.dto.ReliabilityPlanProductDto;
+import com.ruoyi.inspect.service.ReliabilityPlanProductService;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * <p>
+ * 鍙潬鎬ц鍒掓垚鍝� 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author ld
+ * @since 2025-03-26 01:54:17
+ */
+@RestController
+@AllArgsConstructor
+@RequestMapping("/reliabilityPlanProduct")
+public class ReliabilityPlanProductController {
+
+    private ReliabilityPlanProductService reliabilityPlanProductService;
+
+    @ApiOperation("鏌ヨ鍙潬鎬ц鍒掓垚鍝�")
+    @GetMapping("/selectProduct")
+    public Result selectProduct(Page page, ReliabilityPlanProductDto reliabilityPlanProductDto) {
+        return Result.success(reliabilityPlanProductService.selectProduct(page,reliabilityPlanProductDto));
+    }
+
+    @ApiOperation(value = "娣诲姞鍙潬鎬ц鍒掓垚鍝�")
+    @PostMapping("/addOrUpdateProduct")
+    public Result<?> addOrUpdateProduct(@RequestBody ReliabilityPlanProductDto reliabilityPlanProductDto) {
+        return Result.success(reliabilityPlanProductService.addOrUpdateProduct(reliabilityPlanProductDto));
+    }
+
+    @ApiOperation(value = "鍒犻櫎鍙潬鎬ц鍒掓垚鍝�")
+    @DeleteMapping("/delProduct")
+    public Result<?> delProduct(Integer id) {
+        return Result.success(reliabilityPlanProductService.delProduct(id));
+    }
+
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/dto/ReliabilityPlanMaterialDto.java b/inspect-server/src/main/java/com/ruoyi/inspect/dto/ReliabilityPlanMaterialDto.java
new file mode 100644
index 0000000..e600736
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/dto/ReliabilityPlanMaterialDto.java
@@ -0,0 +1,8 @@
+package com.ruoyi.inspect.dto;
+
+import com.ruoyi.inspect.pojo.ReliabilityPlanMaterial;
+import lombok.Data;
+
+@Data
+public class ReliabilityPlanMaterialDto extends ReliabilityPlanMaterial {
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/dto/ReliabilityPlanProductDto.java b/inspect-server/src/main/java/com/ruoyi/inspect/dto/ReliabilityPlanProductDto.java
new file mode 100644
index 0000000..9e8c98b
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/dto/ReliabilityPlanProductDto.java
@@ -0,0 +1,8 @@
+package com.ruoyi.inspect.dto;
+
+import com.ruoyi.inspect.pojo.ReliabilityPlanProduct;
+import lombok.Data;
+
+@Data
+public class ReliabilityPlanProductDto extends ReliabilityPlanProduct {
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/ReliabilityPlanMaterialMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/ReliabilityPlanMaterialMapper.java
new file mode 100644
index 0000000..b03f90e
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/ReliabilityPlanMaterialMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.inspect.mapper;
+
+import com.ruoyi.inspect.pojo.ReliabilityPlanMaterial;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 鍙潬鎬ц鍒掑師杈呮枡 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author ld
+ * @since 2025-03-26 02:24:43
+ */
+public interface ReliabilityPlanMaterialMapper extends BaseMapper<ReliabilityPlanMaterial> {
+
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/mapper/ReliabilityPlanProductMapper.java b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/ReliabilityPlanProductMapper.java
new file mode 100644
index 0000000..c0ec82c
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/mapper/ReliabilityPlanProductMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.inspect.mapper;
+
+import com.ruoyi.inspect.pojo.ReliabilityPlanProduct;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 鍙潬鎬ц鍒掓垚鍝� Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author ld
+ * @since 2025-03-26 02:17:45
+ */
+public interface ReliabilityPlanProductMapper extends BaseMapper<ReliabilityPlanProduct> {
+
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/pojo/InspectionPurchased.java b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/InspectionPurchased.java
index e0cdb22..5b9c4f3 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/pojo/InspectionPurchased.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/InspectionPurchased.java
@@ -43,9 +43,9 @@
     @ApiModelProperty("濮旀墭缂栧彿")
     private String entrustmentNo;
 
-    @ApiModelProperty("閫昏緫鐘舵��")
-    @TableLogic
-    private String state;
+//    @ApiModelProperty("閫昏緫鐘舵��")
+//    @TableLogic
+//    private String state;
 
     @ApiModelProperty("妫�楠岀姸鎬�")
     private String inspectionStatus;
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/pojo/ReliabilityPlanMaterial.java b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/ReliabilityPlanMaterial.java
new file mode 100644
index 0000000..2521bee
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/ReliabilityPlanMaterial.java
@@ -0,0 +1,43 @@
+package com.ruoyi.inspect.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * <p>
+ * 鍙潬鎬ц鍒掑師杈呮枡
+ * </p>
+ *
+ * @author ld
+ * @since 2025-03-26 02:24:43
+ */
+@Data
+@TableName("reliability_plan_material")
+@ApiModel(value = "ReliabilityPlanMaterial瀵硅薄", description = "鍙潬鎬ц鍒掑師杈呮枡")
+public class ReliabilityPlanMaterial implements Serializable {
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("鍘熻緟鏂欏悕绉�")
+    private String materialName;
+
+    @ApiModelProperty("闆朵欢鍙�")
+    private String partNo;
+
+    @ApiModelProperty("瀹℃牳鐘舵��")
+    private String state;
+
+    @ApiModelProperty("鏄惁閫氳繃")
+    private String isPass;
+
+    @ApiModelProperty("瀹℃牳浜篿d")
+    private Integer reviewerId;
+
+    @ApiModelProperty("瀹℃牳浜�")
+    private String reviewer;
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/pojo/ReliabilityPlanProduct.java b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/ReliabilityPlanProduct.java
new file mode 100644
index 0000000..ded59c8
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/pojo/ReliabilityPlanProduct.java
@@ -0,0 +1,49 @@
+package com.ruoyi.inspect.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 鍙潬鎬ц鍒掓垚鍝�
+ * </p>
+ *
+ * @author ld
+ * @since 2025-03-26 02:17:45
+ */
+@Getter
+@Setter
+@TableName("reliability_plan_product")
+@ApiModel(value = "ReliabilityPlanProduct瀵硅薄", description = "鍙潬鎬ц鍒掓垚鍝�")
+public class ReliabilityPlanProduct implements Serializable {
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @ApiModelProperty("浜у搧鍚嶇О")
+    private String productName;
+
+    @ApiModelProperty("浜у搧鍨嬪彿")
+    private String productType;
+
+    @ApiModelProperty("闆朵欢鍙�")
+    private String partNo;
+
+    @ApiModelProperty("瀹℃牳鐘舵��")
+    private String state;
+
+    @ApiModelProperty("鏄惁閫氳繃")
+    private String isPass;
+
+    @ApiModelProperty("瀹℃牳浜篿d")
+    private Integer reviewerId;
+
+    @ApiModelProperty("瀹℃牳浜�")
+    private String reviewer;
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/InspectionPurchasedService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/InspectionPurchasedService.java
index 0713915..2414856 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/InspectionPurchasedService.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/InspectionPurchasedService.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.inspect.dto.InspectionPurchasedDto;
 import com.ruoyi.inspect.pojo.InspectionPurchased;
+import org.springframework.web.multipart.MultipartFile;
 
 /**
  * <p>
@@ -22,5 +23,5 @@
 
     IPage<InspectionPurchasedDto> selectInspectionPurchased(Page page, InspectionPurchasedDto inspectionPurchasedDto);
 
-    int UpdateInspection(InspectionPurchasedDto inspectionPurchasedDto) throws Exception;
+    int updateInspection(MultipartFile file,Integer id,String inspectionItems,String result) throws Exception;
 }
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/ReliabilityPlanMaterialService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/ReliabilityPlanMaterialService.java
new file mode 100644
index 0000000..754e5d2
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/ReliabilityPlanMaterialService.java
@@ -0,0 +1,24 @@
+package com.ruoyi.inspect.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.inspect.dto.ReliabilityPlanMaterialDto;
+import com.ruoyi.inspect.pojo.ReliabilityPlanMaterial;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 鍙潬鎬ц鍒掑師杈呮枡 鏈嶅姟绫�
+ * </p>
+ *
+ * @author ld
+ * @since 2025-03-26 02:24:43
+ */
+public interface ReliabilityPlanMaterialService extends IService<ReliabilityPlanMaterial> {
+
+    IPage<ReliabilityPlanMaterial> selectMaterial(Page page, ReliabilityPlanMaterialDto reliabilityPlanMaterialDto);
+
+    int addOrUpdateMaterial(ReliabilityPlanMaterialDto reliabilityPlanMaterialDto);
+
+    int delMaterial(Integer id);
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/ReliabilityPlanProductService.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/ReliabilityPlanProductService.java
new file mode 100644
index 0000000..338ee5a
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/ReliabilityPlanProductService.java
@@ -0,0 +1,24 @@
+package com.ruoyi.inspect.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.inspect.dto.ReliabilityPlanProductDto;
+import com.ruoyi.inspect.pojo.ReliabilityPlanProduct;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 鍙潬鎬ц鍒掓垚鍝� 鏈嶅姟绫�
+ * </p>
+ *
+ * @author ld
+ * @since 2025-03-26 01:54:17
+ */
+public interface ReliabilityPlanProductService extends IService<ReliabilityPlanProduct> {
+
+    IPage<ReliabilityPlanProduct> selectProduct(Page page, ReliabilityPlanProductDto reliabilityPlanProductDto);
+
+    int addOrUpdateProduct(ReliabilityPlanProductDto reliabilityPlanProductDto);
+
+    int delProduct(Integer id);
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InspectionPurchasedServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InspectionPurchasedServiceImpl.java
index 31c5bec..a5b652f 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InspectionPurchasedServiceImpl.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InspectionPurchasedServiceImpl.java
@@ -5,17 +5,21 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ruoyi.common.core.domain.MinioResult;
+import com.ruoyi.common.numgen.NumberGenerator;
+import com.ruoyi.common.utils.LimsDateUtil;
 import com.ruoyi.common.utils.QueryWrappers;
 import com.ruoyi.common.utils.file.MinioUtils;
-import com.ruoyi.framework.exception.ErrorException;
 import com.ruoyi.inspect.dto.InspectionPurchasedDto;
 import com.ruoyi.inspect.mapper.InspectionPurchasedMapper;
 import com.ruoyi.inspect.pojo.InspectionPurchased;
 import com.ruoyi.inspect.service.InspectionPurchasedService;
+import lombok.RequiredArgsConstructor;
+import lombok.Setter;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
-import javax.annotation.Resource;
+import java.time.LocalDateTime;
 
 /**
  * <p>
@@ -26,13 +30,15 @@
  * @since 2025-03-25 11:22:56
  */
 @Service
+@RequiredArgsConstructor
+@Setter
 public class InspectionPurchasedServiceImpl extends ServiceImpl<InspectionPurchasedMapper, InspectionPurchased> implements InspectionPurchasedService {
 
-    @Resource
-    private InspectionPurchasedMapper inspectionPurchasedMapper;
+    private final InspectionPurchasedMapper inspectionPurchasedMapper;
 
-    @Resource
-    private MinioUtils minioUtils;
+    private final MinioUtils minioUtils;
+
+    private final NumberGenerator<InspectionPurchased> numberGenerator;
 
     @Value("${minio.bucketName}")
     private String bucketName;
@@ -41,7 +47,11 @@
     public int addOrUpdateInspection(InspectionPurchasedDto inspectionPurchasedDto) {
         if (inspectionPurchasedDto.getId() == null) {
             inspectionPurchasedDto.setInspectionStatus(String.valueOf(0));
-            
+            //濮旀墭缂栧彿瑙勫垯鏄疛CZX/SP+W+骞存湀+搴忓彿
+            String no = numberGenerator.generateNumberWithPrefix(3,
+                    "JCZX/SP-" + "W" + LimsDateUtil.resetDate(LocalDateTime.now()),
+                    InspectionPurchased::getEntrustmentNo);
+            inspectionPurchasedDto.setEntrustmentNo(no);
             return inspectionPurchasedMapper.insert(inspectionPurchasedDto);
         } else {
             return inspectionPurchasedMapper.updateById(inspectionPurchasedDto);
@@ -59,11 +69,14 @@
     }
 
     @Override
-    public int UpdateInspection(InspectionPurchasedDto inspectionPurchasedDto) throws Exception {
-        int insertResult = 0;
-        InspectionPurchased inspectionPurchased = inspectionPurchasedMapper.selectById(inspectionPurchasedDto.getId());
-        if (ObjectUtils.isNotEmpty(inspectionPurchasedDto.getFile())) {
-            if (ObjectUtils.isNotEmpty(inspectionPurchased.getFileUrl())){
+    public int updateInspection(MultipartFile file, Integer id, String inspectionItems, String result) throws Exception {
+        InspectionPurchased inspectionPurchased = inspectionPurchasedMapper.selectById(id);
+        inspectionPurchased.setInspectionStatus(String.valueOf(2));
+        inspectionPurchased.setInspectionItems(inspectionItems);
+        inspectionPurchased.setResult(result);
+        // 妫�鏌ユ枃浠舵槸鍚﹀瓨鍦�
+        if (file != null && !ObjectUtils.isEmpty(file)) {
+            if (ObjectUtils.isNotEmpty(inspectionPurchased.getFileUrl())) {
                 if (inspectionPurchased != null && inspectionPurchased.getFileUrl() != null) {
                     // 妫�鏌� MinIO 涓枃浠舵槸鍚﹀瓨鍦�
                     if (minioUtils.objectExists(bucketName, inspectionPurchased.getFileUrl())) {
@@ -73,23 +86,18 @@
                 }
             }
             try {
-                String contentType = inspectionPurchasedDto.getFile().getContentType();
+                String contentType = file.getContentType();
                 String category = contentType != null && contentType.startsWith("image/") ? "images" : "docs";
-                MinioResult upload = minioUtils.upload(bucketName, inspectionPurchasedDto.getFile(), true);
+                MinioResult upload = minioUtils.upload(bucketName, file, true);
                 // 璁板綍瀛樺偍璺緞
                 inspectionPurchased.setFileUrl(upload.getBucketFileName());
                 inspectionPurchased.setFilePreviewUrl(upload.getPreviewExpiry());
                 inspectionPurchased.setType(category.equals("images") ? 1 : 2);
-                // 鏁版嵁搴撴搷浣�
-                insertResult = inspectionPurchasedMapper.updateById(inspectionPurchased);
-                if (insertResult <= 0) {
-                    throw new ErrorException("鏁版嵁搴撴彃鍏ュけ璐�");
-                }
-                return insertResult;
+                inspectionPurchased.setFileName(upload.getOriginalName());
             } catch (Exception e) {
                 throw new Exception("绯荤粺寮傚父: ", e);
             }
         }
-        return insertResult;
+        return inspectionPurchasedMapper.updateById(inspectionPurchased);
     }
 }
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/ReliabilityPlanMaterialServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/ReliabilityPlanMaterialServiceImpl.java
new file mode 100644
index 0000000..a64b03f
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/ReliabilityPlanMaterialServiceImpl.java
@@ -0,0 +1,55 @@
+package com.ruoyi.inspect.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.QueryWrappers;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.inspect.dto.ReliabilityPlanMaterialDto;
+import com.ruoyi.inspect.pojo.ReliabilityPlanMaterial;
+import com.ruoyi.inspect.mapper.ReliabilityPlanMaterialMapper;
+import com.ruoyi.inspect.service.ReliabilityPlanMaterialService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.Objects;
+
+/**
+ * <p>
+ * 鍙潬鎬ц鍒掑師杈呮枡 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author ld
+ * @since 2025-03-26 02:24:43
+ */
+@Service
+@AllArgsConstructor
+public class ReliabilityPlanMaterialServiceImpl extends ServiceImpl<ReliabilityPlanMaterialMapper, ReliabilityPlanMaterial> implements ReliabilityPlanMaterialService {
+
+    private ReliabilityPlanMaterialMapper reliabilityPlanMaterialMapper;
+
+    @Override
+    public IPage<ReliabilityPlanMaterial> selectMaterial(Page page, ReliabilityPlanMaterialDto reliabilityPlanMaterialDto) {
+        return reliabilityPlanMaterialMapper.selectPage(page, QueryWrappers.queryWrappers(reliabilityPlanMaterialDto));
+    }
+
+    @Override
+    public int addOrUpdateMaterial(ReliabilityPlanMaterialDto reliabilityPlanMaterialDto) {
+        if (Objects.isNull(reliabilityPlanMaterialDto.getId())) {
+            reliabilityPlanMaterialDto.setState(null);
+            return reliabilityPlanMaterialMapper.insert(reliabilityPlanMaterialDto);
+        } else {
+            //1宸插鏍�
+            if (!StringUtils.isNotBlank(reliabilityPlanMaterialDto.getState())) {
+                reliabilityPlanMaterialDto.setState(null);
+            }
+            return reliabilityPlanMaterialMapper.updateById(reliabilityPlanMaterialDto);
+
+        }
+    }
+
+    @Override
+    public int delMaterial(Integer id) {
+        return reliabilityPlanMaterialMapper.deleteById(id);
+    }
+}
diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/ReliabilityPlanProductServiceImpl.java b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/ReliabilityPlanProductServiceImpl.java
new file mode 100644
index 0000000..cb7d510
--- /dev/null
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/service/impl/ReliabilityPlanProductServiceImpl.java
@@ -0,0 +1,54 @@
+package com.ruoyi.inspect.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.QueryWrappers;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.inspect.dto.ReliabilityPlanProductDto;
+import com.ruoyi.inspect.pojo.ReliabilityPlanProduct;
+import com.ruoyi.inspect.mapper.ReliabilityPlanProductMapper;
+import com.ruoyi.inspect.service.ReliabilityPlanProductService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.Objects;
+
+/**
+ * <p>
+ * 鍙潬鎬ц鍒掓垚鍝� 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author ld
+ * @since 2025-03-26 01:54:17
+ */
+@Service
+@AllArgsConstructor
+public class ReliabilityPlanProductServiceImpl extends ServiceImpl<ReliabilityPlanProductMapper, ReliabilityPlanProduct> implements ReliabilityPlanProductService {
+
+    private ReliabilityPlanProductMapper reliabilityPlanProductMapper;
+
+    @Override
+    public IPage<ReliabilityPlanProduct> selectProduct(Page page, ReliabilityPlanProductDto reliabilityPlanProductDto) {
+        return reliabilityPlanProductMapper.selectPage(page, QueryWrappers.queryWrappers(reliabilityPlanProductDto));
+    }
+
+    @Override
+    public int addOrUpdateProduct(ReliabilityPlanProductDto reliabilityPlanProductDto) {
+        if (Objects.isNull(reliabilityPlanProductDto.getId())) {
+            reliabilityPlanProductDto.setState(null);
+            return reliabilityPlanProductMapper.insert(reliabilityPlanProductDto);
+        } else {
+            //1宸插鏍�
+            if (!StringUtils.isNotBlank(reliabilityPlanProductDto.getState())) {
+                reliabilityPlanProductDto.setState(null);
+            }
+            return reliabilityPlanProductMapper.updateById(reliabilityPlanProductDto);
+        }
+    }
+
+    @Override
+    public int delProduct(Integer id) {
+        return reliabilityPlanProductMapper.deleteById(id);
+    }
+}
diff --git a/inspect-server/src/main/resources/mapper/ReliabilityPlanMaterialMapper.xml b/inspect-server/src/main/resources/mapper/ReliabilityPlanMaterialMapper.xml
new file mode 100644
index 0000000..0261327
--- /dev/null
+++ b/inspect-server/src/main/resources/mapper/ReliabilityPlanMaterialMapper.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.inspect.mapper.ReliabilityPlanMaterialMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.inspect.pojo.ReliabilityPlanMaterial">
+        <id column="id" property="id" />
+        <result column="material_name" property="materialName" />
+        <result column="part_no" property="partNo" />
+        <result column="state" property="state" />
+        <result column="is_pass" property="isPass" />
+        <result column="reviewer_id" property="reviewerId" />
+        <result column="reviewer" property="reviewer" />
+    </resultMap>
+
+</mapper>
diff --git a/inspect-server/src/main/resources/mapper/ReliabilityPlanProductMapper.xml b/inspect-server/src/main/resources/mapper/ReliabilityPlanProductMapper.xml
new file mode 100644
index 0000000..85787b7
--- /dev/null
+++ b/inspect-server/src/main/resources/mapper/ReliabilityPlanProductMapper.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.inspect.mapper.ReliabilityPlanProductMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.inspect.pojo.ReliabilityPlanProduct">
+        <id column="id" property="id" />
+        <result column="product_name" property="productName" />
+        <result column="product_type" property="productType" />
+        <result column="part_no" property="partNo" />
+        <result column="state" property="state" />
+        <result column="is_pass" property="isPass" />
+        <result column="reviewer_id" property="reviewerId" />
+        <result column="reviewer" property="reviewer" />
+    </resultMap>
+
+</mapper>
diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml
index 4b3c2a1..6e033d3 100644
--- a/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml
+++ b/ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml
@@ -122,7 +122,7 @@
 	</insert>
 
 	<select id="selectDictValue" resultType="java.lang.String">
-		select dict_label from sys_dict_data
+		select dict_value from sys_dict_data
 		where dict_type = #{dictType} and dict_label = #{dictLabel}
 	</select>
 </mapper>

--
Gitblit v1.9.3