From 7e84848f0ea65411bdc9f27e5fa9d714157d032a Mon Sep 17 00:00:00 2001
From: chenhj <1263187585@qq.com>
Date: 星期四, 05 二月 2026 17:24:20 +0800
Subject: [PATCH] 生产统计

---
 src/main/java/com/ruoyi/production/service/ProductionProductMainService.java          |    9 +++++++++
 src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java |    6 ++++++
 src/main/resources/mapper/production/ProductionProductMainMapper.xml                  |   26 ++++++++++++++++++++++++++
 src/main/java/com/ruoyi/production/mapper/ProductionProductMainMapper.java            |    3 +++
 src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java    |    9 +++++----
 src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java                  |    4 ++--
 6 files changed, 51 insertions(+), 6 deletions(-)

diff --git a/src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java b/src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java
index 1dd597b..7f398b6 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java
@@ -3,9 +3,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.web.domain.R;
-import com.ruoyi.production.dto.ProductProcessRouteItemDto;
 import com.ruoyi.production.dto.ProductionProductMainDto;
-import com.ruoyi.production.dto.SalesLedgerProductionAccountingDto;
 import com.ruoyi.production.service.ProductionProductMainService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -14,7 +12,6 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
-import java.util.Arrays;
 import java.util.List;
 
 @RequestMapping("productionProductMain")
@@ -54,7 +51,6 @@
         return R.ok(productionProductMainService.removeProductMain(productionProductMainDto.getId()));
     }
 
-
     /**
      * 瀵煎嚭
      */
@@ -65,4 +61,9 @@
         ExcelUtil<ProductionProductMainDto> util = new ExcelUtil<ProductionProductMainDto>(ProductionProductMainDto.class);
         util.exportExcel(response, list, "鐢熶骇鎶ュ伐鏁版嵁");
     }
+
+    @GetMapping("/queryProductInputAndOutput")
+    public R queryProductInputAndOutput(Page page, ProductionProductMainDto productionProductMainDto) {
+        return R.ok(productionProductMainService.queryProductInputAndOutput(page, productionProductMainDto));
+    }
 }
diff --git a/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java b/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
index 5ef224b..76723de 100644
--- a/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
@@ -10,7 +10,6 @@
 
 import java.math.BigDecimal;
 import java.time.LocalDate;
-import java.time.LocalDateTime;
 
 @Data
 @ExcelIgnoreUnannotated
@@ -59,5 +58,6 @@
     private BigDecimal workHours;
     private BigDecimal wages;
 
-
+    private String startTime;
+    private String endTime;
 }
diff --git a/src/main/java/com/ruoyi/production/mapper/ProductionProductMainMapper.java b/src/main/java/com/ruoyi/production/mapper/ProductionProductMainMapper.java
index e63e032..e228019 100644
--- a/src/main/java/com/ruoyi/production/mapper/ProductionProductMainMapper.java
+++ b/src/main/java/com/ruoyi/production/mapper/ProductionProductMainMapper.java
@@ -11,6 +11,7 @@
 import org.apache.ibatis.annotations.Param;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 
 @Mapper
@@ -33,4 +34,6 @@
     IPage<ProductionProductMainDto> listProductionDetails(@Param("ew") SalesLedgerProductionAccountingDto salesLedgerProductionAccountingDto, Page page);
 
     ArrayList<Long> listMain(List<Long> idList);
+
+    IPage<HashMap<String, Object>> queryProductInputAndOutput(Page page, @Param("ew") ProductionProductMainDto productionProductMainDto);
 }
diff --git a/src/main/java/com/ruoyi/production/service/ProductionProductMainService.java b/src/main/java/com/ruoyi/production/service/ProductionProductMainService.java
index 72d868c..cfd55f1 100644
--- a/src/main/java/com/ruoyi/production/service/ProductionProductMainService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductionProductMainService.java
@@ -7,6 +7,7 @@
 import com.ruoyi.production.pojo.ProductionProductMain;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 
 public interface ProductionProductMainService extends IService<ProductionProductMain> {
@@ -17,4 +18,12 @@
     Boolean removeProductMain(Long id);
 
     ArrayList<Long> listMain(List<Long> idList);
+
+    /**
+     * 鎸夊ぉ鏌ヨ浜у搧鐨勬姇鍏ュ拰浜у嚭
+     * @param page
+     * @param productionProductMainDto
+     * @return
+     */
+    IPage<HashMap<String, Object>> queryProductInputAndOutput(Page page, ProductionProductMainDto productionProductMainDto);
 }
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
index e24045c..d5d2437 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -37,6 +37,7 @@
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -337,4 +338,9 @@
     public ArrayList<Long> listMain(List<Long> idList) {
         return productionProductMainMapper.listMain(idList);
     }
+
+    @Override
+    public IPage<HashMap<String, Object>> queryProductInputAndOutput(Page page, ProductionProductMainDto productionProductMainDto) {
+        return productionProductMainMapper.queryProductInputAndOutput(page, productionProductMainDto);
+    }
 }
diff --git a/src/main/resources/mapper/production/ProductionProductMainMapper.xml b/src/main/resources/mapper/production/ProductionProductMainMapper.xml
index 9c3bf3d..fee9cdc 100644
--- a/src/main/resources/mapper/production/ProductionProductMainMapper.xml
+++ b/src/main/resources/mapper/production/ProductionProductMainMapper.xml
@@ -115,4 +115,30 @@
             #{id}
         </foreach>
     </delete>
+
+    <select id="queryProductInputAndOutput" resultType="Hashmap">
+        select *
+        from (select p.product_name      as productName,
+                     pm.model            as model,
+                     pm.unit             as unit,
+                     temp.inputQuantity  as inputQuantity,
+                     temp.outputQuantity as outputQuantity
+              from (select product_model_id,
+                           coalesce(sum(inputQuantity), 0)  as inputQuantity,
+                           coalesce(sum(outputQuantity), 0) as outputQuantity
+                    from ((select product_model_id, coalesce(sum(quantity), 0) as inputQuantity, 0 as outputQuantity
+                           from production_product_input
+                           where create_time &gt;= #{ew.startTime}
+                             and create_time &lt; #{ew.endTime}
+                           group by product_model_id)
+                          union all
+                          (select product_model_id, 0 as inputQuantity, coalesce(sum(quantity), 0) as outputQuantity
+                           from production_product_output
+                           where create_time &gt;= #{ew.startTime}
+                             and create_time &lt; #{ew.endTime}
+                           group by product_model_id)) t
+                    group by product_model_id) temp
+                       left join product_model pm on temp.product_model_id = pm.id
+                       left join product p on pm.product_id = p.id) tmp
+    </select>
 </mapper>

--
Gitblit v1.9.3