From db67639449287bcec461916a7dca6003ee5dd03c Mon Sep 17 00:00:00 2001
From: czt <czt18638530771@163.com>
Date: 星期五, 05 十二月 2025 16:27:18 +0800
Subject: [PATCH] 出入库详单及补单页面及逻辑

---
 fzzy-igdss-core/src/main/java/com/fzzy/igds/service/FileService.java |  176 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 164 insertions(+), 12 deletions(-)

diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/FileService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/FileService.java
index 28379e8..cdbe480 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/FileService.java
+++ b/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));
+    }
+
 }

--
Gitblit v1.9.3