czt
9 天以前 db67639449287bcec461916a7dca6003ee5dd03c
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/FileService.java
@@ -1,12 +1,22 @@
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
@@ -16,14 +26,120 @@
@Service
public class FileService {
    @Resource
    private FileMapper fileMapper;
    /**
     * 获取出入库文件路径
     * @param date
     * 异步执行附件保存
     * @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 String getInoutFilePath(Date date) {
        if (null == date) date = new Date();
        String basePath = FrameworkConfig.getProfile() + "INOUT/" + DateFormatUtils.format(date, "yyyyMM") + "/";
    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();
@@ -33,15 +149,11 @@
    /**
     * 获取库区路径下文件
     * @param companyId
     * @return
     */
    public String getDeptFilePath(String companyId) {
        if (StringUtils.isEmpty(companyId)){
            companyId = FrameworkConfig.getCompanyId();
        }
    public String getDeptFilePath() {
        String basePath = FrameworkConfig.getProfile() + "IMG/"+ companyId + "/SECURITY/";
        String basePath = FrameworkConfig.getProfile() + "IMG/"+ FrameworkConfig.getCompanyId() + "/SECURITY/";
        File file = new File(basePath);
        if (!file.exists()) {
@@ -49,4 +161,44 @@
        }
        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));
    }
}