From 8c215c8be0f5076e8c95daf1b2203440ca7dfcad Mon Sep 17 00:00:00 2001
From: yxh <172933527@qq.com>
Date: 星期五, 23 十月 2026 13:42:50 +0800
Subject: [PATCH] 修改了报销校验

---
 ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFunddetailController.java |   56 +++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 43 insertions(+), 13 deletions(-)

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFunddetailController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFunddetailController.java
index 88b364d..167f43d 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFunddetailController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/ServiceFunddetailController.java
@@ -7,10 +7,13 @@
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.project.domain.FunddetailReqVo;
 import com.ruoyi.project.domain.ServiceFunddetail;
 import com.ruoyi.project.domain.SpStatBonusReq;
+import com.ruoyi.project.domain.vo.TaxMoneyByItemEO;
+import com.ruoyi.project.domain.vo.TaxMoneySumEO;
 import com.ruoyi.project.domain.vo.TaxMoneyVO;
 import com.ruoyi.project.service.IServiceFunddetailService;
 import io.swagger.annotations.Api;
@@ -19,8 +22,10 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.Arrays;
-import java.util.List;
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.time.temporal.TemporalAdjusters;
+import java.util.*;
 
 /**
  * 璐圭敤鐢宠鏄庣粏Controller
@@ -41,7 +46,7 @@
      * 鏌ヨ璐圭敤鐢宠鏄庣粏鍒楄〃
      */
     @ApiOperation("鏌ヨ璐圭敤鐢宠鏄庣粏鍒楄〃")
-    //@PreAuthorize("@ss.hasPermi('project:funddetail:list')")
+    //// @PreAuthorize("@ss.hasPermi('project:funddetail:list')")
     @GetMapping("/list")
     public TableDataInfo list(ServiceFunddetail serviceFunddetail) {
         startPage();
@@ -54,7 +59,7 @@
      * 瀵煎嚭璐圭敤鐢宠鏄庣粏鍒楄〃
      */
     @ApiOperation("瀵煎嚭璐圭敤鐢宠鏄庣粏鍒楄〃")
-    //@PreAuthorize("@ss.hasPermi('project:funddetail:export')")
+    //// @PreAuthorize("@ss.hasPermi('project:funddetail:export')")
     @Log(title = "璐圭敤鐢宠鏄庣粏", businessType = BusinessType.EXPORT)
     @GetMapping("/export")
     public AjaxResult export(ServiceFunddetail serviceFunddetail) {
@@ -67,7 +72,7 @@
      * 鑾峰彇璐圭敤鐢宠鏄庣粏璇︾粏淇℃伅
      */
     @ApiOperation("鑾峰彇璐圭敤鐢宠鏄庣粏璇︾粏淇℃伅")
-    //@PreAuthorize("@ss.hasPermi('project:funddetail:query')")
+    //// @PreAuthorize("@ss.hasPermi('project:funddetail:query')")
     @GetMapping(value = "/{id}")
     public AjaxResult getInfo(@PathVariable("id") Long id) {
         return AjaxResult.success(serviceFunddetailService.getById(id));
@@ -77,11 +82,18 @@
      * 鏂板璐圭敤鐢宠鏄庣粏
      */
     @ApiOperation("鏂板璐圭敤鐢宠鏄庣粏")
-    //@PreAuthorize("@ss.hasPermi('project:funddetail:add')")
+    //// @PreAuthorize("@ss.hasPermi('project:funddetail:add')")
     @Log(title = "璐圭敤鐢宠鏄庣粏", businessType = BusinessType.INSERT)
     @PostMapping("/add")
     @NotRepeatCommit(key = "param:arg[1]", value = 30000)
     public AjaxResult add(@RequestBody ServiceFunddetail serviceFunddetail) {
+        // 2026-10-15锛氶檮浠舵枃浠跺悕瑙勮寖浜屾鏍¢獙锛堜笌鍓嶇 opo-web/src/utils/fileNameCheck.js 鍚屽彛寰勶紝
+        // 鐩殑鏄槻姝㈢粫杩囧墠绔洿鎺ヨ皟鎺ュ彛淇濆瓨涓嶅悎瑙勯檮浠跺悕锛夈�傛柊澧炲満鏅病鏈夊巻鍙查檮浠讹紝鐢ㄤ弗鏍兼ā寮忋��
+        String nameError = com.ruoyi.project.common.AttachmentNameValidator
+                .checkJsonList(serviceFunddetail.getInvoicefiles(), serviceFunddetail.getAnnexfiles());
+        if (nameError != null) {
+            return AjaxResult.error("闄勪欢鏂囦欢鍚嶄笉绗﹀悎瑕佹眰锛屾棤娉曚繚瀛橈細" + nameError);
+        }
         boolean save = serviceFunddetailService.save(serviceFunddetail);
         return AjaxResult.success(serviceFunddetail);
     }
@@ -90,12 +102,30 @@
      * 淇敼璐圭敤鐢宠鏄庣粏
      */
     @ApiOperation("淇敼璐圭敤鐢宠鏄庣粏")
-    //@PreAuthorize("@ss.hasPermi('project:funddetail:edit')")
+    //// @PreAuthorize("@ss.hasPermi('project:funddetail:edit')")
     @Log(title = "璐圭敤鐢宠鏄庣粏", businessType = BusinessType.UPDATE)
     @PostMapping("/edit")
     @NotRepeatCommit(key = "param:arg[1]", value = 30000)
     public AjaxResult edit(@RequestBody ServiceFunddetail serviceFunddetail) {
         log.info("淇敼鐨勬暟鎹俊鎭細{}", serviceFunddetail);
+        // 2026-10-15锛氶檮浠舵枃浠跺悕瑙勮寖浜屾鏍¢獙銆備慨鏀瑰満鏅寜涓氬姟鍙e緞"鍙牎楠屾湰娆″彉鏇寸殑闄勪欢"锛�
+        // 淇濆瓨鍓嶈鏄庣粏宸插瓨鍦ㄧ殑鍘嗗彶闄勪欢鍚嶄笉鍙備笌鏍¢獙锛屽惁鍒欒�佸崟鎹紙鍘嗗彶涓嶅悎瑙勫悕鍗犳瘮寰堥珮锛夋敼涓噾棰濋兘瀛樹笉杩涘幓銆�
+        java.util.Set<String> existingNames = new java.util.HashSet<>();
+        if (serviceFunddetail.getId() != null) {
+            ServiceFunddetail oldDetail = serviceFunddetailService.getById(serviceFunddetail.getId());
+            if (oldDetail != null) {
+                existingNames.addAll(com.ruoyi.project.common.AttachmentNameValidator
+                        .collectNames(oldDetail.getInvoicefiles()));
+                existingNames.addAll(com.ruoyi.project.common.AttachmentNameValidator
+                        .collectNames(oldDetail.getAnnexfiles()));
+            }
+        }
+        String nameError = com.ruoyi.project.common.AttachmentNameValidator
+                .checkJsonListForUpdate(existingNames, serviceFunddetail.getInvoicefiles(),
+                        serviceFunddetail.getAnnexfiles());
+        if (nameError != null) {
+            return AjaxResult.error("闄勪欢鏂囦欢鍚嶄笉绗﹀悎瑕佹眰锛屾棤娉曚繚瀛橈細" + nameError);
+        }
         return toAjax(serviceFunddetailService.updateById(serviceFunddetail));
     }
 
@@ -103,7 +133,7 @@
      * 鍒犻櫎璐圭敤鐢宠鏄庣粏
      */
     @ApiOperation("鍒犻櫎璐圭敤鐢宠鏄庣粏")
-    //@PreAuthorize("@ss.hasPermi('project:funddetail:remove')")
+    //// @PreAuthorize("@ss.hasPermi('project:funddetail:remove')")
     @Log(title = "璐圭敤鐢宠鏄庣粏", businessType = BusinessType.DELETE)
     @GetMapping("/remove/{ids}")
     public AjaxResult remove(@PathVariable Long[] ids) {
@@ -160,11 +190,11 @@
         return AjaxResult.success(serviceFunddetailService.getFundDetail(id));
     }
 
-    @ApiOperation("鏍规嵁鏉′欢绠楃◣")
-    @PostMapping("/calculateTax")
-    public AjaxResult calculateTax(@RequestBody List<ServiceFunddetail> serviceFunddetails) {
-        return AjaxResult.success(serviceFunddetailService.calculateTax(serviceFunddetails));
-    }
+//    @ApiOperation("鏍规嵁鏉′欢绠楃◣")
+//    @PostMapping("/calculateTax")
+//    public AjaxResult calculateTax(@RequestBody List<ServiceFunddetail> serviceFunddetails) {
+//        return AjaxResult.success(serviceFunddetailService.calculateTax2(serviceFunddetails));
+//    }
 
 //    /**
 //     * 缁╂晥璁$畻

--
Gitblit v1.9.3