From 9eaf711b027f60a67a33cb5259e06c21bab620d7 Mon Sep 17 00:00:00 2001
From: luoyisheng <yangdongji@argo-ai.cn>
Date: 星期二, 01 四月 2025 17:54:30 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwMicroEquipmentRecordServiceImpl.java |   57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 56 insertions(+), 1 deletions(-)

diff --git a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwMicroEquipmentRecordServiceImpl.java b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwMicroEquipmentRecordServiceImpl.java
index 2383c4d..dd2aca7 100644
--- a/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwMicroEquipmentRecordServiceImpl.java
+++ b/medicalWaste-system/src/main/java/com/sinata/system/service/impl/MwMicroEquipmentRecordServiceImpl.java
@@ -12,6 +12,7 @@
 import com.sinata.common.utils.DateUtils;
 import com.sinata.common.utils.SecurityUtils;
 import com.sinata.common.utils.StringUtils;
+import com.sinata.system.config.AutoColumnWidthStrategy;
 import com.sinata.system.domain.MwCollectRecord;
 import com.sinata.system.domain.MwMicroEquipment;
 import com.sinata.system.domain.MwMicroEquipmentRecord;
@@ -118,7 +119,9 @@
         // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
         String fileName = URLEncoder.encode("微波设备使用记录", "UTF-8").replaceAll("\\+", "%20");
         response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
-        FastExcel.write(response.getOutputStream(), MwCollectRecordVO.class).sheet("微波设备使用记录").doWrite(list);
+        FastExcel.write(response.getOutputStream(), MwCollectRecordVO.class)
+                .registerWriteHandler(new AutoColumnWidthStrategy())
+                .sheet("微波设备使用记录").doWrite(list);
     }
 
     /**
@@ -253,6 +256,57 @@
             departmentReportItemVO.getData().add(totalCount);
             result.add(departmentReportItemVO);
         }
+
+        // 添加合计行
+        if (!result.isEmpty()) {
+            DepartmentReportItemVO totalRow = new DepartmentReportItemVO();
+            totalRow.setName("合计");
+            totalRow.setData(new ArrayList<>());
+
+            // 计算各类型废物的重量和数量总计
+            for (SysDictData sysDictData : medicalWasteTypeList) {
+                BigDecimal totalTypeWeight = BigDecimal.ZERO;
+                BigDecimal totalTypeCount = BigDecimal.ZERO;
+
+                for (DepartmentReportItemVO item : result) {
+                    // 每种废物类型占用两列(重量和数量)
+                    int index = medicalWasteTypeList.indexOf(sysDictData);
+                    int weightIndex = index * 2;
+                    int countIndex = weightIndex + 1;
+
+                    if (weightIndex < item.getData().size()) {
+                        totalTypeWeight = totalTypeWeight.add(item.getData().get(weightIndex));
+                    }
+                    if (countIndex < item.getData().size()) {
+                        totalTypeCount = totalTypeCount.add(item.getData().get(countIndex));
+                    }
+                }
+
+                totalRow.getData().add(totalTypeWeight);
+                totalRow.getData().add(totalTypeCount);
+            }
+
+            // 计算总的重量和数量
+            BigDecimal finalTotalWeight = BigDecimal.ZERO;
+            BigDecimal finalTotalCount = BigDecimal.ZERO;
+
+            for (DepartmentReportItemVO item : result) {
+                int totalWeightIndex = item.getData().size() - 2;
+                int totalCountIndex = item.getData().size() - 1;
+
+                if (totalWeightIndex >= 0 && totalCountIndex >= 0) {
+                    finalTotalWeight = finalTotalWeight.add(item.getData().get(totalWeightIndex));
+                    finalTotalCount = finalTotalCount.add(item.getData().get(totalCountIndex));
+                }
+            }
+
+            totalRow.getData().add(finalTotalWeight);
+            totalRow.getData().add(finalTotalCount);
+
+            // 将合计行添加到列表开头
+            result.add(0, totalRow);
+        }
+
         vo.setList(result);
         return vo;
     }
@@ -272,6 +326,7 @@
         FastExcel.write(response.getOutputStream())
                 .head(head)
                 .autoCloseStream(Boolean.TRUE)
+                .registerWriteHandler(new AutoColumnWidthStrategy())
                 .sheet("处置分析报表")
                 .doWrite(getStaticsReportData(query));
     }

--
Gitblit v1.7.1