package com.fzzy.igds.service;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.fzzy.igds.domain.FileInfo;
|
import com.fzzy.igds.mapper.FileMapper;
|
import com.fzzy.igds.utils.ContextUtil;
|
import com.ruoyi.common.config.FrameworkConfig;
|
import org.apache.commons.lang3.time.DateFormatUtils;
|
import org.springframework.scheduling.annotation.Async;
|
import org.springframework.stereotype.Service;
|
import com.ruoyi.common.utils.StringUtils;
|
import javax.annotation.Resource;
|
import javax.imageio.ImageIO;
|
import java.awt.*;
|
import java.awt.image.BufferedImage;
|
import java.io.File;
|
import java.io.IOException;
|
import java.util.Date;
|
import java.util.List;
|
|
/**
|
* @Description
|
* @Author CZT
|
* @Date 2025/12/4 17:36
|
*/
|
@Service
|
public class FileService {
|
|
@Resource
|
private FileMapper fileMapper;
|
|
/**
|
* 异步执行附件保存
|
* @param files 附件信息
|
* @param bizId 业务id
|
* @param bizTag 标签
|
* @param pathTag 文件路径标识
|
*/
|
@Async
|
public void saveInoutFiles(List<FileInfo> files, String bizId, String bizTag, String pathTag) {
|
|
if (null == files || files.isEmpty()) {
|
return;
|
}
|
|
for (FileInfo data : files) {
|
// 如果没有附件名称,则不保存附件信息
|
if (StringUtils.isBlank(data.getFileName())) {
|
continue;
|
}
|
|
data.setId(ContextUtil.generateId());
|
data.setCompanyId(ContextUtil.getCompanyId());
|
|
//文件全路径
|
String filePath = getFileSavePath(pathTag) + data.getFileName();
|
filePath = filePath.replace(FrameworkConfig.getProfile(), "/profile/");
|
data.setFilePath(filePath);
|
|
if (StringUtils.isNotEmpty(bizId)) {
|
data.setBizId(bizId);
|
}
|
if (StringUtils.isNotEmpty(bizTag)) {
|
data.setBizTag(bizTag);
|
}
|
|
data.setCreateTime(new Date());
|
data.setCreateBy(ContextUtil.getLoginUserName());
|
|
data.setUpdateTime(new Date());
|
data.setUpdateBy(ContextUtil.getLoginUserName());
|
fileMapper.insert(data);
|
}
|
}
|
|
/**
|
* 根据条件查询数据
|
* @param companyId
|
* @param deptId
|
* @param bizId
|
* @return
|
*/
|
public List<FileInfo> listFile(String companyId, String deptId, String bizId, String bizTag) {
|
QueryWrapper<FileInfo> queryWrapper = new QueryWrapper<>();
|
if (StringUtils.isNotBlank(companyId)) {
|
queryWrapper.eq("company_id", companyId);
|
}
|
if (StringUtils.isNotBlank(deptId)) {
|
queryWrapper.eq("dept_id", deptId);
|
}
|
if (StringUtils.isNotBlank(bizId)) {
|
queryWrapper.eq("biz_id", bizId);
|
}
|
if (StringUtils.isNotBlank(bizTag)) {
|
queryWrapper.eq("biz_tag", bizTag);
|
}
|
return fileMapper.selectList(queryWrapper);
|
}
|
|
/**
|
*
|
* @param id
|
*/
|
public void delFile(String id) {
|
fileMapper.deleteById(id);
|
}
|
|
/**
|
* 获取出入库文件路径
|
* @param pathTag
|
* @return
|
*/
|
public String getFileSavePath(String pathTag) {
|
if(StringUtils.isBlank(pathTag)){
|
pathTag = "COMMON";
|
}
|
if("INOUT".equals(pathTag)) return getInoutFilePath();
|
if("PATROL".equals(pathTag)) return getPatrolFilePath();
|
if("DEPT".equals(pathTag)) return getDeptFilePath();
|
|
return getCommonFilePath();
|
}
|
|
/**
|
* 获取出入库文件路径
|
* @return
|
*/
|
public String getPatrolFilePath() {
|
String basePath = FrameworkConfig.getProfile() + "INOUT/" + DateFormatUtils.format(new Date(), "yyyyMM") + "/";
|
File file = new File(basePath);
|
if (!file.exists()) {
|
file.mkdirs();
|
}
|
return basePath;
|
}
|
|
/**
|
* 获取出入库文件路径
|
* @return
|
*/
|
public String getInoutFilePath() {
|
String basePath = FrameworkConfig.getProfile() + "INOUT/" + DateFormatUtils.format(new Date(), "yyyyMM") + "/";
|
File file = new File(basePath);
|
if (!file.exists()) {
|
file.mkdirs();
|
}
|
return basePath;
|
}
|
|
/**
|
* 获取库区路径下文件
|
* @return
|
*/
|
public String getDeptFilePath() {
|
|
String basePath = FrameworkConfig.getProfile() + "IMG/"+ FrameworkConfig.getCompanyId() + "/SECURITY/";
|
|
File file = new File(basePath);
|
if (!file.exists()) {
|
file.mkdirs();
|
}
|
return basePath;
|
}
|
|
/**
|
* 获取公共路径
|
* @return
|
*/
|
public String getCommonFilePath() {
|
|
String basePath = FrameworkConfig.getProfile() + "COMMON/" + DateFormatUtils.format(new Date(), "yyyyMM") + "/";
|
|
File file = new File(basePath);
|
if (!file.exists()) {
|
file.mkdirs();
|
}
|
return basePath;
|
}
|
|
/**
|
* 压缩图片
|
*
|
* @param filePath 压缩前路径
|
* @param scale 压缩比例
|
* @param outputPath 压缩后路径
|
* @throws IOException
|
*/
|
public void compressedImage(String filePath, double scale, String outputPath) throws IOException {
|
BufferedImage bufferedImage = ImageIO.read(new File(filePath));
|
int newWidth = (int) (bufferedImage.getWidth() * scale);
|
int newHeight = (int) (bufferedImage.getHeight() * scale);
|
|
//创建压缩后的图片
|
BufferedImage compressedImage = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_INT_RGB);
|
Graphics2D graphics2D = compressedImage.createGraphics();
|
|
//绘制原始图片到压缩后的图片上
|
graphics2D.drawImage(bufferedImage, 0, 0, newWidth, newHeight, null);
|
graphics2D.dispose();
|
|
ImageIO.write(compressedImage, "jpg", new File(outputPath));
|
}
|
|
}
|