From d2f503f72b5485bfee54ea296c7d0a9a243cea02 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期三, 14 一月 2026 17:51:19 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_ztns' into dev_ztns

---
 inspect-server/src/main/java/com/ruoyi/inspect/controller/DataAnalysisController.java |   77 ++++++++++++++++++++++++++++++++++++--
 1 files changed, 73 insertions(+), 4 deletions(-)

diff --git a/inspect-server/src/main/java/com/ruoyi/inspect/controller/DataAnalysisController.java b/inspect-server/src/main/java/com/ruoyi/inspect/controller/DataAnalysisController.java
index 130e075..c6efafd 100644
--- a/inspect-server/src/main/java/com/ruoyi/inspect/controller/DataAnalysisController.java
+++ b/inspect-server/src/main/java/com/ruoyi/inspect/controller/DataAnalysisController.java
@@ -2,7 +2,9 @@
 
 import com.ruoyi.basic.dto.IfsInventoryQuantitySupplierDto;
 import com.ruoyi.common.core.domain.Result;
+import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.inspect.dto.DataAnalysisDto;
+import com.ruoyi.inspect.dto.MaterialPropTableDTO;
 import com.ruoyi.inspect.service.DataAnalysisService;
 import com.ruoyi.inspect.vo.DeviationAnalyzeVo;
 import io.swagger.annotations.Api;
@@ -10,6 +12,9 @@
 import lombok.AllArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.List;
 
 /**
@@ -25,30 +30,88 @@
     private DataAnalysisService dataAnalysisService;
 
     /**
-     * 鏌ヨ鍘熸潗鏂欐煴鐘剁粺璁�
+     * 鏌ヨ鐗╂枡灞炴�ф煴鐘剁粺璁�
+     *
      * @param dataAnalysisDto
      * @return
      */
-    @ApiOperation(value = "鏌ヨ鍘熸潗鏂欐煴鐘剁粺璁�")
+    @ApiOperation(value = "鏌ヨ鐗╂枡灞炴�ф煴鐘剁粺璁�")
     @GetMapping("/getRawPassRateByBarChart")
     public Result getRawPassRateByBarChart(DataAnalysisDto dataAnalysisDto) {
         return Result.success(dataAnalysisService.getRawPassRateByBarChart(dataAnalysisDto));
     }
 
     /**
-     * 鏌ヨ鍘熸潗鏂欐煴鐘剁粺璁�
+     * 鏌ヨ鐗╂枡灞炴�ф煴鐘剁粺璁�
+     *
      * @param dataAnalysisDto
      * @return
      */
-    @ApiOperation(value = "鏌ヨ鍘熸潗鏂欏悎鏍肩巼楗肩姸鎬�")
+    @ApiOperation(value = "鏌ヨ鐗╂枡灞炴�у悎鏍肩巼楗肩姸鍥�")
     @GetMapping("/getRawPassRateByCake")
     public Result getRawPassRateByCake(DataAnalysisDto dataAnalysisDto) {
         return Result.success(dataAnalysisService.getRawPassRateByCake(dataAnalysisDto));
     }
 
+    /**
+     * 鏌ヨ鐗╂枡灞炴�у悎鏍肩巼琛ㄦ牸
+     *
+     * @param dataAnalysisDto 鏌ヨ鍙傛暟
+     * @return
+     */
+    @ApiOperation(value = "鏌ヨ鐗╂枡灞炴�у悎鏍肩巼琛ㄦ牸")
+    @GetMapping("/getMaterialPropTable")
+    public Result getMaterialPropTable(DataAnalysisDto dataAnalysisDto) {
+        return Result.success(dataAnalysisService.getMaterialPropTable(dataAnalysisDto));
+    }
+
+    @PostMapping("/exportSupplierExcel")
+    public void exportSupplierExcel(HttpServletResponse response, @RequestBody List<MaterialPropTableDTO> materialProps) {
+
+        if (materialProps == null || materialProps.isEmpty()) {
+            return;
+        }
+
+        int index = 1;
+        for (MaterialPropTableDTO dto : materialProps) {
+            dto.setIndex(String.valueOf(index++));
+        }
+
+        int totalBatchSum = 0;
+        int unqualifiedBatchSum = 0;
+
+        for (MaterialPropTableDTO dto : materialProps) {
+            if (dto.getTotalBatch() != null) {
+                totalBatchSum += dto.getTotalBatch();
+            }
+            if (dto.getUnqualifiedBatch() != null) {
+                unqualifiedBatchSum += dto.getUnqualifiedBatch();
+            }
+        }
+
+        BigDecimal passRateSum = BigDecimal.ZERO;
+        if (totalBatchSum > 0) {
+            passRateSum = BigDecimal
+                    .valueOf(totalBatchSum - unqualifiedBatchSum)
+                    .multiply(BigDecimal.valueOf(100))
+                    .divide(BigDecimal.valueOf(totalBatchSum), 2, RoundingMode.HALF_UP);
+        }
+
+        MaterialPropTableDTO totalRow = new MaterialPropTableDTO();
+        totalRow.setIndex("鍚堣");
+        totalRow.setSupplierName("");
+        totalRow.setTotalBatch(totalBatchSum);
+        totalRow.setUnqualifiedBatch(unqualifiedBatchSum);
+        totalRow.setPassRate(passRateSum);
+        materialProps.add(totalRow);
+
+        ExcelUtil<MaterialPropTableDTO> excelUtil = new ExcelUtil<>(MaterialPropTableDTO.class);
+        excelUtil.exportExcel(response, materialProps, "鍚堟牸鐜囩粺璁�");
+    }
 
     /**
      * 鏌ヨ鍘熸潗鏂欓」
+     *
      * @param dataAnalysisDto
      * @return
      */
@@ -60,6 +123,7 @@
 
     /**
      * 鏌ヨ鍘熸潗鏂欓」妫�鍒嗘瀽
+     *
      * @param dataAnalysisDto
      * @return
      */
@@ -71,6 +135,7 @@
 
     /**
      * 鏌ヨ鍘熸潗鏂欓」妫�鍒嗘瀽鍒楄〃
+     *
      * @param dataAnalysisDto
      * @return
      */
@@ -82,6 +147,7 @@
 
     /**
      * 鏌ヨ鍘熸潗鏂欓」妫�鍒嗘瀽鍒楄〃
+     *
      * @param dataAnalysisDto
      * @return
      */
@@ -93,6 +159,7 @@
 
     /**
      * 鏌ヨ鍘熸潗鏂欓」妫�鍜屽巶瀹舵暟鎹姣�
+     *
      * @param dataAnalysisDto
      * @return
      */
@@ -104,6 +171,7 @@
 
     /**
      * 鏌ヨ鏈湀涓庝笂涓湀鍚堟牸鐜囧姣�
+     *
      * @param dataAnalysisDto
      * @return
      */
@@ -115,6 +183,7 @@
 
     /**
      * 鏌ヨ妫�楠岄」绫诲瀷楗煎浘
+     *
      * @param dataAnalysisDto
      * @return
      */

--
Gitblit v1.9.3