From b48847af5e49091aa47ae10d8201d4f6019eac37 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期五, 12 六月 2026 10:24:28 +0800
Subject: [PATCH] fix(home): 修复投入产出分析功能中的日期处理问题

---
 src/main/resources/mapper/production/ProductionProductInputMapper.xml |   10 ++++++++++
 src/main/java/com/ruoyi/home/controller/HomeController.java           |    2 +-
 src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java        |   35 +++++++++++++++++++++++++++++------
 3 files changed, 40 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/ruoyi/home/controller/HomeController.java b/src/main/java/com/ruoyi/home/controller/HomeController.java
index 7878d28..3daa6b5 100644
--- a/src/main/java/com/ruoyi/home/controller/HomeController.java
+++ b/src/main/java/com/ruoyi/home/controller/HomeController.java
@@ -155,7 +155,7 @@
     /********************************************************鐢熶骇绫�*****************************************************/
     @GetMapping("/inputOutputAnalysis")
     @Operation(summary = "鎶曞叆浜у嚭鍒嗘瀽")
-    public R inputOutputAnalysis(@DefaultType Integer type){
+    public R inputOutputAnalysis(@RequestParam(defaultValue = "4") Integer type){
       List<InputOutputAnalysisDto> list = homeService.inputOutputAnalysis(type);
         return R.ok(list);
     }
diff --git a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
index d3c21a2..ddd5bc0 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -1332,8 +1332,11 @@
                 int startMonth = ((currentMonth - 1) / 3) * 3 + 1;
                 startDate = LocalDate.of(today.getYear(), startMonth, 1);
                 break;
-            default:
-                startDate = today.with(DayOfWeek.MONDAY);
+            case 4: // 骞�
+                startDate = LocalDate.of(today.getYear(), 1, 1);
+                break;
+            default: // 榛樿鏌ヨ浠婂勾鏁版嵁
+                startDate = LocalDate.of(today.getYear(), 1, 1);
                 break;
         }
 
@@ -1345,15 +1348,16 @@
         String endStr = endDate.atStartOfDay()
                 .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
 
-//        List<Map<String, Object>> inputList = productionProductInputMapper.selectInputStats(startStr, endStr);
-        List<Map<String, Object>> inputList = null;
+        List<Map<String, Object>> inputList = productionProductInputMapper.selectInputStats(startStr, endStr);
+//        List<Map<String, Object>> inputList = null;
         List<Map<String, Object>> outputList = productionProductOutputMapper.selectDailyOutputStats(startStr, endStr);
 
         Map<String, InputOutputAnalysisDto> dateMap = new HashMap<>();
 
         if (!CollectionUtils.isEmpty(inputList)) {
             for (Map<String, Object> map : inputList) {
-                String date = (String) map.get("date");
+                Object dateObj = map.get("statDate");
+                String date = convertDateToString(dateObj);
                 if (date == null)
                     continue;
                 InputOutputAnalysisDto dto = dateMap.getOrDefault(date, new InputOutputAnalysisDto());
@@ -1366,7 +1370,8 @@
 
         if (!CollectionUtils.isEmpty(outputList)) {
             for (Map<String, Object> map : outputList) {
-                String date = (String) map.get("date");
+                Object dateObj = map.get("statDate");
+                String date = convertDateToString(dateObj);
                 if (date == null)
                     continue;
                 InputOutputAnalysisDto dto = dateMap.getOrDefault(date, new InputOutputAnalysisDto());
@@ -2433,4 +2438,22 @@
     private BigDecimal defaultDecimal(BigDecimal value) {
         return value == null ? BigDecimal.ZERO : value;
     }
+
+    private String convertDateToString(Object dateObj) {
+        if (dateObj == null) {
+            return null;
+        }
+        if (dateObj instanceof String) {
+            return (String) dateObj;
+        }
+        if (dateObj instanceof java.sql.Date) {
+            return ((java.sql.Date) dateObj).toLocalDate().toString();
+        }
+        if (dateObj instanceof java.util.Date) {
+            return ((java.util.Date) dateObj).toInstant()
+                    .atZone(ZoneId.systemDefault())
+                    .toLocalDate().toString();
+        }
+        return dateObj.toString();
+    }
 }
diff --git a/src/main/resources/mapper/production/ProductionProductInputMapper.xml b/src/main/resources/mapper/production/ProductionProductInputMapper.xml
index fe88ae3..2a324ef 100644
--- a/src/main/resources/mapper/production/ProductionProductInputMapper.xml
+++ b/src/main/resources/mapper/production/ProductionProductInputMapper.xml
@@ -43,4 +43,14 @@
         order by ppi.create_time desc
     </select>
 
+    <select id="selectInputStats" resultType="java.util.Map">
+        select date(create_time) as statDate,
+               sum(ifnull(input_quantity, 0)) as quantity
+        from production_product_input
+        where create_time &gt;= #{startDate}
+          and create_time &lt;= #{endDate}
+        group by date(create_time)
+        order by statDate asc
+    </select>
+
 </mapper>

--
Gitblit v1.9.3