From 596834ce4e233130d61888128fe66a0c008543dd Mon Sep 17 00:00:00 2001
From: yxh <172933527@qq.com>
Date: 星期二, 13 十月 2026 09:15:51 +0800
Subject: [PATCH] 修改了报销校验

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDocumentfilesController.java |   72 ++++++++++++++++++++++++++++++++++++
 1 files changed, 72 insertions(+), 0 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDocumentfilesController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDocumentfilesController.java
index 349b078..9c7bae0 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDocumentfilesController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceDocumentfilesController.java
@@ -1,5 +1,6 @@
 package com.ruoyi.web.controller.project;
 
+import java.io.File;
 import java.util.Arrays;
 import java.util.List;
 
@@ -23,8 +24,13 @@
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.project.domain.ServiceDocumentfiles;
 import com.ruoyi.project.service.IServiceDocumentfilesService;
+import com.ruoyi.common.config.RuoYiConfig;
+import com.ruoyi.common.utils.file.FileUploadUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.framework.config.ServerConfig;
+import org.springframework.mock.web.MockMultipartFile;
+import org.springframework.web.multipart.MultipartFile;
 
 /**
  * 鎹愮尞闄勪欢Controller
@@ -40,6 +46,72 @@
     @Autowired
     private IServiceDocumentfilesService serviceDocumentfilesService;
 
+    @Autowired
+    private ServerConfig serverConfig;
+
+    /**
+     * 鏀跨瓥鏂囦欢涓婁紶锛�**涓嶉檺鏂囦欢绫诲瀷**锛夈��
+     *
+     * <p>2026-10-09 涓氬姟瑕佹眰锛氭斂绛栨枃浠舵ā鍧楀厑璁镐笂浼�/涓嬭浇浠绘剰鏂囦欢绫诲瀷銆�
+     *
+     * <p>涓轰粈涔堜笉鐩存帴鐢� {@code /common/upload}锛氶�氱敤涓婁紶璧�
+     * {@code FileUploadUtils.upload(baseDir, file)}锛屼細鎸� {@code MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION}
+     * 鐧藉悕鍗曟牎楠屾墿灞曞悕锛岄潪鐧藉悕鍗曠被鍨嬶紙濡� dwg銆�7z銆乷fd銆乪ml 绛夛級浼氳鎷掔粷銆�
+     * 杩欓噷鎶� allowedExtension 鏄惧紡浼� {@code null} 鈥斺�� {@code assertAllowed} 鐨勫垽鏂槸
+     * {@code allowedExtension != null && !isAllowedExtension(...)}锛屼紶 null 鍗宠烦杩囨墿灞曞悕鏍¢獙锛�
+     * 鍚屾椂**浠嶄繚鐣�** 500MB 澶у皬闄愬埗銆佹枃浠跺悕闀垮害闄愬埗涓庡瓨鍌ㄨ矾寰勫畨鍏ㄥ鐞嗐��
+     *
+     * <p>浠呮斂绛栨枃浠舵ā鍧椾娇鐢ㄦ湰鎺ュ彛锛泏@code /common/upload} 涓庡叾浠栨ā鍧楃殑鐧藉悕鍗曚繚鎸佷笉鍙樸��
+     *
+     * @param file 涓婁紶鏂囦欢
+     * @return 涓� {@code /common/upload} 涓�鑷寸殑杩斿洖浣擄紙code/msg/fileName/url锛�
+     */
+    @ApiOperation("鏀跨瓥鏂囦欢涓婁紶锛堜笉闄愭枃浠剁被鍨嬶級")
+    @PostMapping("/upload")
+    public AjaxResult uploadFile(MultipartFile file) {
+        String originalFilename = file == null ? null : file.getOriginalFilename();
+        try {
+            if (file == null || file.isEmpty()) {
+                return AjaxResult.error("涓婁紶鏂囦欢涓虹┖锛岃閲嶆柊閫夋嫨鏂囦欢");
+            }
+            // 涓婁紶鏂囦欢璺緞
+            String filePath = RuoYiConfig.getUploadPath();
+
+            // 鍚屽悕鏂囦欢澶勭悊锛氬姞鏃堕棿鎴抽噸鍛藉悕锛岄伩鍏嶈鐩栧凡涓婁紶鏂囦欢锛堜笌閫氱敤涓婁紶淇濇寔涓�鑷达級
+            String filename = originalFilename == null ? "" : originalFilename.trim();
+            String pathFileName = FileUploadUtils.extractFilename(file);
+            File target = new File(filePath + "/" + pathFileName);
+            if (target.exists()) {
+                int i = filename.lastIndexOf(".");
+                if (i > -1) {
+                    String startStr = filename.substring(0, i);
+                    String endStr = filename.substring(i);
+                    String newFilename = startStr + System.currentTimeMillis() + endStr;
+                    file = new MockMultipartFile(newFilename, newFilename, file.getContentType(), file.getBytes());
+                }
+            }
+
+            // allowedExtension 浼� null锛氫笉鍋氭墿灞曞悕鏍¢獙锛屽厑璁镐换鎰忔枃浠剁被鍨�
+            String relativePath = FileUploadUtils.upload(filePath, file, null);
+
+            // 涓庨�氱敤涓婁紶涓�鑷寸殑 url 澶勭悊锛堥儴鍒嗛儴缃蹭笅 8032 闇�瑕佸甫 /prod-api 鍓嶇紑锛�
+            String url = serverConfig.getUrl();
+            if (url != null && url.contains("8032")) {
+                url = url.replace("8032", "8032/prod-api");
+            }
+
+            log.info("鏀跨瓥鏂囦欢涓婁紶鎴愬姛锛氬師濮嬫枃浠跺悕={}锛屽瓨鍌ㄨ矾寰�={}", filename, relativePath);
+            AjaxResult ajax = AjaxResult.success();
+            ajax.put("fileName", relativePath);
+            ajax.put("url", url + relativePath);
+            return ajax;
+        } catch (Exception e) {
+            // 杩斿洖 AjaxResult锛圚TTP 200 + code=500锛夛紝鍓嶇 uploadSccess 鐨� else 鍒嗘敮浼氭妸鍘熷洜寮瑰嚭鏉�
+            log.error("鏀跨瓥鏂囦欢涓婁紶澶辫触锛氬師濮嬫枃浠跺悕={}", originalFilename, e);
+            return AjaxResult.error("涓婁紶澶辫触锛�" + e.getMessage());
+        }
+    }
+
     /**
      * 鏌ヨ鎹愮尞闄勪欢鍒楄〃
      */

--
Gitblit v1.9.3