From 49120f2b9db33455756a911e56cfefd7c3120a14 Mon Sep 17 00:00:00 2001
From: sinake <sinake1@qq.com>
Date: 星期三, 28 十月 2026 17:05:36 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

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

diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/SpStatExpenseController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/SpStatExpenseController.java
index 1addef2..112822e 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/SpStatExpenseController.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/project/SpStatExpenseController.java
@@ -7,6 +7,7 @@
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.project.domain.SpStatExpense;
+import com.ruoyi.project.domain.SpStatExpenseDept;
 import com.ruoyi.project.domain.SpStatExpenseReq;
 import com.ruoyi.project.service.SpstatExpenseService;
 import io.swagger.annotations.Api;
@@ -20,7 +21,10 @@
 import org.springframework.web.bind.annotation.RestController;
 
 import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 鎶ラ攢缁熻
@@ -68,6 +72,56 @@
         return util.exportExcel(list, "璐圭敤缁熻鏁版嵁");
     }
 
+    /**
+     * 瀵煎嚭璐圭敤缁熻锛堟寜涓氬姟缁勶級
+     */
+    @ApiOperation("瀵煎嚭璐圭敤缁熻锛堟寜涓氬姟缁勶級")
+    @Log(title = "璐圭敤缁熻", businessType = BusinessType.EXPORT)
+    @GetMapping("/exportDept")
+    public AjaxResult exportDept(SpStatExpenseReq spStatExpenseReq) {
+        List<SpStatExpense> list = spstatExpenseService.getListBySpstatExpense(spStatExpenseReq);
+        Map<String, SpStatExpenseDept> grouped = new LinkedHashMap<String, SpStatExpenseDept>();
+        for (SpStatExpense row : list) {
+            String key = row.getDeptmentno() != null ? row.getDeptmentno() : row.getDeptmentName();
+            if (key == null) {
+                key = "";
+            }
+            SpStatExpenseDept dept = grouped.get(key);
+            if (dept == null) {
+                dept = new SpStatExpenseDept();
+                dept.setDeptname(row.getDeptmentName() == null ? "鏈垎缁�" : row.getDeptmentName());
+                dept.setAmount(BigDecimal.ZERO);
+                dept.setExpertfee(BigDecimal.ZERO);
+                dept.setEthicalistfee(BigDecimal.ZERO);
+                dept.setMedicalcost(BigDecimal.ZERO);
+                dept.setOfficecost(BigDecimal.ZERO);
+                dept.setReimcost(BigDecimal.ZERO);
+                grouped.put(key, dept);
+            }
+            dept.setAmount(dept.getAmount().add(nz(row.getAmount())));
+            dept.setExpertfee(dept.getExpertfee().add(nz(row.getExpertfee())));
+            dept.setEthicalistfee(dept.getEthicalistfee().add(nz(row.getEthicalistfee())));
+            dept.setMedicalcost(dept.getMedicalcost().add(nz(row.getMedicalcost())));
+            dept.setOfficecost(dept.getOfficecost().add(nz(row.getOfficecost())));
+            dept.setReimcost(dept.getReimcost().add(nz(row.getReimcost())));
+        }
+        List<SpStatExpenseDept> result = new ArrayList<SpStatExpenseDept>(grouped.values());
+        for (SpStatExpenseDept dept : result) {
+            dept.setAmount(blankZero(dept.getAmount()));
+            dept.setExpertfee(blankZero(dept.getExpertfee()));
+            dept.setEthicalistfee(blankZero(dept.getEthicalistfee()));
+            dept.setMedicalcost(blankZero(dept.getMedicalcost()));
+            dept.setOfficecost(blankZero(dept.getOfficecost()));
+            dept.setReimcost(blankZero(dept.getReimcost()));
+        }
+        ExcelUtil<SpStatExpenseDept> util = new ExcelUtil<SpStatExpenseDept>(SpStatExpenseDept.class);
+        return util.exportExcel(result, "璐圭敤缁熻锛堟寜涓氬姟缁勶級");
+    }
+
+    private BigDecimal nz(BigDecimal value) {
+        return value == null ? BigDecimal.ZERO : value;
+    }
+
     private BigDecimal blankZero(BigDecimal value) {
         return (value == null || value.compareTo(BigDecimal.ZERO) == 0) ? null : value;
     }

--
Gitblit v1.9.3