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.config.MinioConfig; 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.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.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.time.LocalDateTime; /** *

* 外购件检验 服务实现类 *

* * @author ld * @since 2025-03-25 11:22:56 */ @Service @RequiredArgsConstructor @Setter public class InspectionPurchasedServiceImpl extends ServiceImpl implements InspectionPurchasedService { private final InspectionPurchasedMapper inspectionPurchasedMapper; private final MinioUtils minioUtils; private final NumberGenerator numberGenerator; @Autowired private MinioConfig minioConfig; @Override 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); } } @Override public int delInspection(Integer id) { return inspectionPurchasedMapper.deleteById(id); } @Override public IPage selectInspectionPurchased(Page page, InspectionPurchasedDto inspectionPurchasedDto) { return inspectionPurchasedMapper.selectPage(page, QueryWrappers.queryWrappers(inspectionPurchasedDto)); } @Override 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(minioConfig.getBucketName(), inspectionPurchased.getFileUrl())) { // 先删除 MinIO 中的对象 minioUtils.removeObjectsResult(minioConfig.getBucketName(), inspectionPurchased.getFileUrl()); } } } try { String contentType = file.getContentType(); String category = contentType != null && contentType.startsWith("image/") ? "images" : "docs"; MinioResult upload = minioUtils.upload(minioConfig.getBucketName(), file, true); // 记录存储路径 inspectionPurchased.setFileUrl(upload.getBucketFileName()); inspectionPurchased.setFilePreviewUrl(upload.getPreviewExpiry()); inspectionPurchased.setType(category.equals("images") ? 1 : 2); inspectionPurchased.setFileName(upload.getOriginalName()); } catch (Exception e) { throw new Exception("系统异常: ", e); } } return inspectionPurchasedMapper.updateById(inspectionPurchased); } }