liding
2025-03-28 9b5243a4eb50a6e034620f2fb9b2ffd6fb80820a
1.检验对象导入优化,2.外购件附件提交3.可靠性计划成品和原辅料
已修改11个文件
已添加14个文件
744 ■■■■ 文件已修改
basic-server/src/main/java/com/ruoyi/basic/controller/CapacityScopeController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/excel/StructureTestObjectListener.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/CapacityScopeService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/ProductService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/CapacityScopeServiceImpl.java 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/ProductServiceImpl.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/controller/InspectionPurchasedController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/controller/ReliabilityPlanMaterialController.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/controller/ReliabilityPlanProductController.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/ReliabilityPlanMaterialDto.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/ReliabilityPlanProductDto.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/ReliabilityPlanMaterialMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/ReliabilityPlanProductMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InspectionPurchased.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/ReliabilityPlanMaterial.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/ReliabilityPlanProduct.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/InspectionPurchasedService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/ReliabilityPlanMaterialService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/ReliabilityPlanProductService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InspectionPurchasedServiceImpl.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/ReliabilityPlanMaterialServiceImpl.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/ReliabilityPlanProductServiceImpl.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/ReliabilityPlanMaterialMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/resources/mapper/ReliabilityPlanProductMapper.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/SysDictDataMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
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());
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);
    }
}
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);
}
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);
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);
    }
}
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 é’ˆå¯¹è¡¨ã€product(产品表)】的数据库操作Service实现
@@ -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
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 = "删除外购件检验")
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));
    }
}
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));
    }
}
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 {
}
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 {
}
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> {
}
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> {
}
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;
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("审核人id")
    private Integer reviewerId;
    @ApiModelProperty("审核人")
    private String reviewer;
}
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("审核人id")
    private Integer reviewerId;
    @ApiModelProperty("审核人")
    private String reviewer;
}
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;
}
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);
}
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);
}
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));
            //委托编号规则是JCZX/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);
    }
}
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);
    }
}
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);
    }
}
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>
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>
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>