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;
|
|
/**
|
* <p>
|
* 外购件检验 服务实现类
|
* </p>
|
*
|
* @author ld
|
* @since 2025-03-25 11:22:56
|
*/
|
@Service
|
@RequiredArgsConstructor
|
@Setter
|
public class InspectionPurchasedServiceImpl extends ServiceImpl<InspectionPurchasedMapper, InspectionPurchased> implements InspectionPurchasedService {
|
|
private final InspectionPurchasedMapper inspectionPurchasedMapper;
|
|
private final MinioUtils minioUtils;
|
|
private final NumberGenerator<InspectionPurchased> 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<InspectionPurchasedDto> 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);
|
}
|
}
|