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;
/**
*
* 外购件检验 服务实现类
*
*
* @author ld
* @since 2025-03-25 11:22:56
*/
@Service
public class InspectionPurchasedServiceImpl extends ServiceImpl 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 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;
}
}