liding
2025-03-26 e713714eb3796ac4d67495f823aa633535b3ad15
1.外购件检验 2.标准方法导入
已修改6个文件
已添加6个文件
560 ■■■■ 文件已修改
basic-server/src/main/java/com/ruoyi/basic/controller/WorkShopController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/pojo/StandardMethod.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/WorkShopFileService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardMethodServiceImpl.java 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/service/impl/WorkShopFileServiceImpl.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/controller/InspectionPurchasedController.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/dto/InspectionPurchasedDto.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InspectionPurchasedMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InspectionPurchased.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/InspectionPurchasedService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InspectionPurchasedServiceImpl.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
basic-server/src/main/java/com/ruoyi/basic/controller/WorkShopController.java
@@ -34,7 +34,7 @@
        return Result.success(workShopService.addWorkShop(workShopDto));
    }
    @ApiOperation(value = "删除检验单模板")
    @ApiOperation(value = "删除车间名称数据")
    @DeleteMapping("/delWorkShop")
    public Result<?> delWorkShop(Integer id) {
        return Result.success(workShopService.delWorkShop(id));
@@ -57,4 +57,10 @@
    public Result<?> delFile(Integer id) {
        return Result.success(workShopFileService.delFile(id));
    }
    @ApiOperation(value = "查询附件列表")
    @GetMapping("/partFileList")
    public Result partFileList(Page page,@RequestParam("partNo") String partNo) {
        return Result.success(workShopFileService.partFileList(page,partNo));
    }
}
basic-server/src/main/java/com/ruoyi/basic/pojo/StandardMethod.java
@@ -1,5 +1,6 @@
package com.ruoyi.basic.pojo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
@@ -21,38 +22,47 @@
    @TableId(type = IdType.AUTO)
    private Integer id;
    @ExcelProperty("领域")
    private String field;
    @ExcelProperty("检验对象")
    @ApiModelProperty("检验对象")
    private String structureTestObjectId;
    /**
     * æ ‡å‡†ç¼–号
     */
    @ExcelProperty("标准编号")
    @ApiModelProperty(value = "标准编号")
    private String code;
    /**
     * æ ‡å‡†æ–¹æ³•
     */
    @ExcelProperty("标准描述")
    @ApiModelProperty(value = "标准描述")
    private String name;
    @ExcelProperty("标准描述EN")
    @ApiModelProperty(value = "标准描述EN")
    private String nameEn;
    /**
     * å¤‡æ³¨
     */
    @ExcelProperty("备注")
    @ApiModelProperty(value = "备注")
    private String remark;
    @ExcelProperty("资质")
    @ApiModelProperty(value = "资质")
    private String qualificationId;
    @ExcelProperty("是否产品标准")
    @ApiModelProperty(value = "是否产品标准")
    private Integer isProduct;
    @ExcelProperty("是否启用")
    @ApiModelProperty(value = "是否启用")
    private Integer isUse;
basic-server/src/main/java/com/ruoyi/basic/service/WorkShopFileService.java
@@ -1,6 +1,8 @@
package com.ruoyi.basic.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.basic.pojo.WorkShopFile;
@@ -11,4 +13,6 @@
public interface WorkShopFileService extends IService<WorkShopFile> {
    int delFile(Integer id);
    IPage<WorkShopFile> partFileList(Page page,String partNo);
}
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardMethodServiceImpl.java
@@ -1,7 +1,10 @@
package com.ruoyi.basic.service.impl;
import cn.hutool.json.JSONUtil;
import cn.hutool.poi.excel.ExcelUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -131,22 +134,115 @@
    @Transactional(rollbackFor = Exception.class)
    @Override
    public void inputExcel(MultipartFile file) throws IOException {
        // å­˜å‚¨æ£€æµ‹å¯¹è±¡List
        List<Object> structureTestObjectIdList = new ArrayList<>();
        Set<Object> structureTestObjectIdSet = new HashSet<>();
        List<StandardMethod> result = new ArrayList<>();
        ExcelUtil.readBySax(file.getInputStream(), 0, (i, l, list) -> {
            // åŽ»é™¤ç¬¬ä¸€è¡Œè¡¨å¤´
            if (l == 0) {
                return;
        EasyExcel.read(file.getInputStream(), StandardMethod.class, new AnalysisEventListener<StandardMethod>() {
            @Override
            public void invoke(StandardMethod data, AnalysisContext context) {
                // åŽ»é™¤ç¬¬ä¸€è¡Œè¡¨å¤´ï¼ŒEasyExcel è‡ªåŠ¨å¤„ç†è¡¨å¤´ï¼Œè¿™é‡Œæ— éœ€é¢å¤–å¤„ç†
                // å­˜å‚¨å”¯ä¸€æ£€æµ‹å¯¹è±¡
                String structureTestObjectId = data.getStructureTestObjectId();
                Object idObj = getFirstIdFromJson(structureTestObjectId);
                if (idObj != null) {
                    structureTestObjectIdSet.add(idObj);
                }
                result.add(data);
            }
            // å­˜å‚¨å”¯ä¸€æ£€æµ‹å¯¹è±¡
            if (!structureTestObjectIdList.contains(list.get(2))) {
                structureTestObjectIdList.add(list.get(2));
            @Override
            public void doAfterAllAnalysed(AnalysisContext context) {
                // è§£æžå®ŒæˆåŽæ‰§è¡Œæ·»åŠ æ“ä½œ
                addStructureTest(new ArrayList<>(structureTestObjectIdSet), result);
            }
            StandardMethod standardMethod = formatData(list);
            result.add(standardMethod);
        });
        addStructureTest(structureTestObjectIdList, result);
        }).sheet().doRead();
    }
    private Object getFirstIdFromJson(String json) {
        // ç®€å•解析 JSON æ•°ç»„获取第一个元素
        if (json != null && json.startsWith("[") && json.contains(",")) {
            return json.substring(2, json.indexOf(","));
        } else if (json != null && json.startsWith("[")) {
            return json.substring(1, json.length() - 1);
        }
        return null;
    }
    public void addStructureTest(List<Object> structureTestObjectIdList, List<StandardMethod> standardMethodList) {
        List<StandardMethod> updateList = new ArrayList<>();
        List<Integer> deleteListId = new ArrayList<>();
        List<StandardMethod> addList = new ArrayList<>();
        // å…ˆå°† Excel æ•°æ®æŒ‰ key åˆ†ç»„
        Map<String, StandardMethod> excelDataMap = new HashMap<>();
        for (StandardMethod excelMethod : standardMethodList) {
            String key = generateKey(excelMethod);
            excelDataMap.put(key, excelMethod);
        }
//        if (!structureTestObjectIdList.isEmpty()) {
            // ä»¥ excel ä¸­çš„组名查询数据库中的分组
            List<StandardMethod> allDbMethods = new ArrayList<>();
            for (Object j : structureTestObjectIdList) {
                List<StandardMethod> standardMethods = baseMapper.selectList(new LambdaQueryWrapper<StandardMethod>()
                        .like(StandardMethod::getStructureTestObjectId, "\"" + j + "\""));
                allDbMethods.addAll(standardMethods);
            }
            // å°†æ•°æ®åº“数据按 key åˆ†ç»„
            Map<String, StandardMethod> dbDataMap = new HashMap<>();
            for (StandardMethod dbMethod : allDbMethods) {
                String key = generateKey(dbMethod);
                dbDataMap.put(key, dbMethod);
            }
            // å¤„理更新和新增
            for (Map.Entry<String, StandardMethod> entry : excelDataMap.entrySet()) {
                String key = entry.getKey();
                StandardMethod excelMethod = entry.getValue();
                StandardMethod dbMethod = dbDataMap.get(key);
                if (dbMethod != null) {
                    // æ›´æ–°
                    excelMethod.setId(dbMethod.getId());
                    updateList.add(excelMethod);
                } else {
                    // æ–°å¢ž
                    addList.add(excelMethod);
                }
            }
            // å¤„理删除
            for (Map.Entry<String, StandardMethod> entry : dbDataMap.entrySet()) {
                String key = entry.getKey();
                if (!excelDataMap.containsKey(key)) {
                    StandardMethod dbMethod = entry.getValue();
                    deleteListId.add(dbMethod.getId());
                }
            }
        if (!addList.isEmpty()) {
            // æ–°å¢ž
            baseMapper.insertBatchSomeColumn(addList);
        }
        if (!deleteListId.isEmpty()) {
            // åˆ é™¤
            baseMapper.deleteBatchIds(deleteListId);
        }
        if (!updateList.isEmpty()) {
            // æ›´æ–°
            updateList.forEach(i -> {
                baseMapper.updateById(i);
            });
        }
    }
    private String generateKey(StandardMethod method) {
        return method.getStructureTestObjectId() + "-" + method.getCode() + "-" + method.getField();
    }
    // æ ¼å¼åŒ–数据
@@ -185,74 +281,6 @@
        return standardMethod;
    }
    // æ–°å¢žæ•°æ®
    public void addStructureTest(List<Object> structureTestObjectIdList, List<StandardMethod> standardMethodList) {
        List<StandardMethod> updateList = new ArrayList<>();
        List<Integer> deleteListId = new ArrayList<>();
        List<StandardMethod> addList = new ArrayList<>();
        if (!structureTestObjectIdList.isEmpty()) {
            // å¾ªçޝexcel里面的分组
            structureTestObjectIdList.forEach(j -> {
                // ä»¥excel中的组名查询数据库中的分组
                List<StandardMethod> standardMethods = baseMapper.selectList(Wrappers.<StandardMethod>lambdaQuery()
                        .like(StandardMethod::getStructureTestObjectId, "\"" + j + "\""));
                // å°†ç»“果循环匹配
                for (int i = 0; i < standardMethods.size(); i++) {
                    boolean isExistence = false;
                    for (int i1 = 0; i1 < standardMethodList.size(); i1++) {
                        // æ›´æ–°
                        if (standardMethods.get(i).getStructureTestObjectId().equals(standardMethodList.get(i1).getStructureTestObjectId())
                                && standardMethods.get(i).getCode().equals(standardMethodList.get(i1).getCode())
                                && standardMethods.get(i).getField().equals(standardMethodList.get(i1).getField())) {
                            // ç»™excel数据赋值id做更新
                            standardMethodList.get(i1).setId(standardMethods.get(i).getId());
                            // æ›´æ–°
                            updateList.add(standardMethodList.get(i1));
                            isExistence = true;
                            break;
                        }
                    }
                    // åˆ é™¤
                    if (!isExistence) {
                        deleteListId.add(standardMethods.get(i).getId());
                    }
                }
                for (int i = 0; i < standardMethodList.size(); i++) {
                    if (standardMethodList.get(i).getStructureTestObjectId().contains("\"" + j + "\"")) {
                        boolean isExistence = false;
                        for (int i1 = 0; i1 < standardMethods.size(); i1++) {
                            if (standardMethods.get(i1).getStructureTestObjectId().equals(standardMethodList.get(i).getStructureTestObjectId())
                                    && standardMethods.get(i1).getCode().equals(standardMethodList.get(i).getCode())
                                    && standardMethods.get(i1).getField().equals(standardMethodList.get(i).getField())) {
                                isExistence = true;
                                break;
                            }
                        }
                        // æ–°å¢ž
                        if (!isExistence) {
                            addList.add(standardMethodList.get(i));
                        }
                    }
                }
            });
        }
        if (!addList.isEmpty()) {
            // æ–°å¢ž
            baseMapper.insertBatchSomeColumn(addList);
        }
        if (!deleteListId.isEmpty()) {
            // åˆ é™¤
            baseMapper.deleteBatchIds(deleteListId);
        }
        if (!updateList.isEmpty()) {
            // æ›´æ–°
            updateList.forEach(i -> {
                baseMapper.updateById(i);
            });
        }
    }
}
basic-server/src/main/java/com/ruoyi/basic/service/impl/StandardProductListServiceImpl.java
@@ -2,23 +2,19 @@
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.*;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.mapper.*;
import com.ruoyi.basic.pojo.*;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.basic.dto.CopyStandardProductListDto;
import com.ruoyi.basic.dto.InsSampleReceiveDto;
import com.ruoyi.basic.dto.ProductDto;
import com.ruoyi.basic.dto.ResetTreeDragDTO;
import com.ruoyi.basic.mapper.IfsInventoryQuantityMapper;
import com.ruoyi.basic.mapper.StandardProductListMapper;
import com.ruoyi.basic.mapper.StandardProductListSupplierAskMapper;
import com.ruoyi.basic.mapper.StandardTreeMapper;
import com.ruoyi.basic.pojo.StandardProductList;
import com.ruoyi.basic.pojo.StandardProductListSupplierAsk;
import com.ruoyi.basic.pojo.StandardTree;
import com.ruoyi.basic.service.StandardProductListService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
@@ -47,6 +43,10 @@
    private IfsInventoryQuantityMapper ifsInventoryQuantityMapper;
    private StandardProductListSupplierAskMapper standardProductListSupplierAskMapper;
    private ProductPartMapper productPartMapper;
    private StructureTestObjectPartMapper  structureTestObjectPartMapper;
    @Override
@@ -185,6 +185,25 @@
            }
        }
        ProductPart productPart = productPartMapper.selectOne(new LambdaQueryWrapper<ProductPart>().eq(ProductPart::getPartNo, insSample.getPartNo()));
        if (productPart != null){
            if (StringUtils.isNotEmpty(productPart.getInspectionItem())){
                String inspectionItem = productPart.getInspectionItem();
                list = list.stream()
                        .filter(standardProductList -> inspectionItem.equals(standardProductList.getInspectionItem()))
                        .collect(Collectors.toList());
            }
        }
        StructureTestObjectPart structureTestObjectPart = structureTestObjectPartMapper.selectOne(new LambdaQueryWrapper<StructureTestObjectPart>().eq(StructureTestObjectPart::getPartNo, insSample.getPartNo()));
        if (structureTestObjectPart != null){
            if (StringUtils.isNotEmpty(structureTestObjectPart.getInspectionItem())){
                String inspectionItem = structureTestObjectPart.getInspectionItem();
                list = list.stream()
                        .filter(standardProductList -> inspectionItem.equals(standardProductList.getInspectionItem()))
                        .collect(Collectors.toList());
            }
        }
        return list;
    }
basic-server/src/main/java/com/ruoyi/basic/service/impl/WorkShopFileServiceImpl.java
@@ -1,9 +1,11 @@
package com.ruoyi.basic.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.basic.mapper.WorkShopFileMapper;
import com.ruoyi.basic.pojo.WorkShopFile;
import com.ruoyi.basic.mapper.*;
import com.ruoyi.basic.pojo.*;
import com.ruoyi.basic.service.WorkShopFileService;
import com.ruoyi.common.utils.file.MinioUtils;
import org.springframework.beans.factory.annotation.Value;
@@ -20,6 +22,17 @@
    @Resource
    private WorkShopFileMapper workShopFileMapper;
    @Resource
    private ProductPartMapper productPartMapper;
    @Resource
    private ProductMapper productMapper;
    @Resource
    private StructureTestObjectPartMapper structureTestObjectPartMapper;
    @Resource
    private StructureTestObjectMapper structureTestObjectMapper;
    @Resource
    private MinioUtils minioUtils;
@@ -52,6 +65,30 @@
            return 0;
        }
    }
    @Override
    public IPage<WorkShopFile> partFileList(Page page, String partNo) {
        StructureTestObject structureTestObject = findStructureTestObjectByPartNo(partNo);
        if (structureTestObject != null && structureTestObject.getWorkShopId() != null) {
            return workShopFileMapper.selectPage(page, new LambdaQueryWrapper<WorkShopFile>().eq(WorkShopFile::getWorkShopId, structureTestObject.getWorkShopId()));
        }
        return null;
    }
    private StructureTestObject findStructureTestObjectByPartNo(String partNo) {
        ProductPart productPart = productPartMapper.selectOne(new LambdaQueryWrapper<ProductPart>().eq(ProductPart::getPartNo, partNo));
        if (productPart != null) {
            Product product = productMapper.selectById(productPart.getProductId());
            if (product != null) {
                return structureTestObjectMapper.selectById(product.getObjectId());
            }
        }
        StructureTestObjectPart structureTestObjectPart = structureTestObjectPartMapper.selectOne(new LambdaQueryWrapper<StructureTestObjectPart>().eq(StructureTestObjectPart::getPartNo, partNo));
        if (structureTestObjectPart != null) {
            return structureTestObjectMapper.selectById(structureTestObjectPart.getTestObjectId());
        }
        return null;
    }
}
inspect-server/src/main/java/com/ruoyi/inspect/controller/InspectionPurchasedController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
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.InspectionPurchasedDto;
import com.ruoyi.inspect.service.InspectionPurchasedService;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
/**
 * <p>
 * å¤–购件检验 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author ld
 * @since 2025-03-25 11:22:56
 */
@RestController
@RequestMapping("/inspectionPurchased")
@AllArgsConstructor
public class InspectionPurchasedController {
    private InspectionPurchasedService inspectionPurchasedService;
    @ApiOperation("查询列表")
    @GetMapping("/selectInspection")
    public Result selectInspectionPurchased(Page page, InspectionPurchasedDto inspectionPurchasedDto) {
        return Result.success(inspectionPurchasedService.selectInspectionPurchased(page,inspectionPurchasedDto));
    }
    @ApiOperation(value = "添加外购件检验数据")
    @PostMapping("/addOrUpdateInspection")
    public Result<?> addOrUpdateInspection(@RequestBody InspectionPurchasedDto inspectionPurchasedDto) {
        return Result.success(inspectionPurchasedService.addOrUpdateInspection(inspectionPurchasedDto));
    }
    @ApiOperation(value = "更新提交外购件检验数据")
    @PostMapping("/UpdateInspection")
    public Result<?> UpdateInspection(InspectionPurchasedDto inspectionPurchasedDto) throws Exception {
        return Result.success(inspectionPurchasedService.UpdateInspection(inspectionPurchasedDto));
    }
    @ApiOperation(value = "删除外购件检验")
    @DeleteMapping("/delInspection")
    public Result<?> delWorkShop(Integer id) {
        return Result.success(inspectionPurchasedService.delInspection(id));
    }
}
inspect-server/src/main/java/com/ruoyi/inspect/dto/InspectionPurchasedDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.ruoyi.inspect.dto;
import com.ruoyi.inspect.pojo.InspectionPurchased;
import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
@Data
public class InspectionPurchasedDto extends InspectionPurchased {
    private MultipartFile file;
}
inspect-server/src/main/java/com/ruoyi/inspect/mapper/InspectionPurchasedMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.inspect.mapper;
import com.ruoyi.inspect.pojo.InspectionPurchased;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
 * <p>
 * å¤–购件检验 Mapper æŽ¥å£
 * </p>
 *
 * @author ld
 * @since 2025-03-25 01:58:21
 */
public interface InspectionPurchasedMapper extends BaseMapper<InspectionPurchased> {
}
inspect-server/src/main/java/com/ruoyi/inspect/pojo/InspectionPurchased.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,73 @@
package com.ruoyi.inspect.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
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-25 01:58:21
 */
@TableName("inspection_purchased")
@ApiModel(value = "InspectionPurchased对象", description = "外购件检验")
@Data
public class InspectionPurchased implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("产品名称")
    private String name;
    @ApiModelProperty("来料数量")
    private String num;
    @ApiModelProperty("供货厂家")
    private String supplier;
    @ApiModelProperty("订单号")
    private String orderNum;
    @ApiModelProperty("sp号")
    private String spNum;
    @ApiModelProperty("委托编号")
    private String entrustmentNo;
    @ApiModelProperty("逻辑状态")
    @TableLogic
    private String state;
    @ApiModelProperty("检验状态")
    private String inspectionStatus;
    @ApiModelProperty("备注")
    private String remark;
    @ApiModelProperty("文件名")
    private String fileName;
    @ApiModelProperty("文件路径")
    private String fileUrl;
    @ApiModelProperty("文件预览路径")
    private String filePreviewUrl;
    @ApiModelProperty("检验项")
    private String inspectionItems;
    @ApiModelProperty("检测结果")
    private String result;
    @ApiModelProperty("类型")
    private Integer type;
}
inspect-server/src/main/java/com/ruoyi/inspect/service/InspectionPurchasedService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package com.ruoyi.inspect.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.inspect.dto.InspectionPurchasedDto;
import com.ruoyi.inspect.pojo.InspectionPurchased;
/**
 * <p>
 * å¤–购件检验 æœåŠ¡ç±»
 * </p>
 *
 * @author ld
 * @since 2025-03-25 11:22:56
 */
public interface InspectionPurchasedService extends IService<InspectionPurchased> {
    int addOrUpdateInspection(InspectionPurchasedDto inspectionPurchasedDto);
    int delInspection(Integer id);
    IPage<InspectionPurchasedDto> selectInspectionPurchased(Page page, InspectionPurchasedDto inspectionPurchasedDto);
    int UpdateInspection(InspectionPurchasedDto inspectionPurchasedDto) throws Exception;
}
inspect-server/src/main/java/com/ruoyi/inspect/service/impl/InspectionPurchasedServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,95 @@
package com.ruoyi.inspect.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
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.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 org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
 * <p>
 * å¤–购件检验 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author ld
 * @since 2025-03-25 11:22:56
 */
@Service
public class InspectionPurchasedServiceImpl extends ServiceImpl<InspectionPurchasedMapper, InspectionPurchased> implements InspectionPurchasedService {
    @Resource
    private InspectionPurchasedMapper inspectionPurchasedMapper;
    @Resource
    private MinioUtils minioUtils;
    @Value("${minio.bucketName}")
    private String bucketName;
    @Override
    public int addOrUpdateInspection(InspectionPurchasedDto inspectionPurchasedDto) {
        if (inspectionPurchasedDto.getId() == null) {
            inspectionPurchasedDto.setInspectionStatus(String.valueOf(0));
            return inspectionPurchasedMapper.insert(inspectionPurchasedDto);
        } else {
            return inspectionPurchasedMapper.updateById(inspectionPurchasedDto);
        }
    }
    @Override
    public int delInspection(Integer id) {
        return inspectionPurchasedMapper.deleteById(id);
    }
    @Override
    public IPage<InspectionPurchasedDto> selectInspectionPurchased(Page page, InspectionPurchasedDto inspectionPurchasedDto) {
        return inspectionPurchasedMapper.selectPage(page, QueryWrappers.queryWrappers(inspectionPurchasedDto));
    }
    @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())){
                if (inspectionPurchased != null && inspectionPurchased.getFileUrl() != null) {
                    // æ£€æŸ¥ MinIO ä¸­æ–‡ä»¶æ˜¯å¦å­˜åœ¨
                    if (minioUtils.objectExists(bucketName, inspectionPurchased.getFileUrl())) {
                        // å…ˆåˆ é™¤ MinIO ä¸­çš„对象
                        minioUtils.removeObjectsResult(bucketName, inspectionPurchased.getFileUrl());
                    }
                }
            }
            try {
                String contentType = inspectionPurchasedDto.getFile().getContentType();
                String category = contentType != null && contentType.startsWith("image/") ? "images" : "docs";
                MinioResult upload = minioUtils.upload(bucketName, inspectionPurchasedDto.getFile(), 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;
            } catch (Exception e) {
                throw new Exception("系统异常: ", e);
            }
        }
        return insertResult;
    }
}