From cc9e229da3a5d06be13e9ade5b5254d403f47c57 Mon Sep 17 00:00:00 2001
From: huminmin <mac@MacBook-Pro.local>
Date: 星期四, 02 四月 2026 14:42:30 +0800
Subject: [PATCH] 生产报表相关接口
---
src/main/java/com/ruoyi/production/service/impl/ProductionStatisticServiceImpl.java | 68 ++++++++++++++++++++++++----------
1 files changed, 48 insertions(+), 20 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionStatisticServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionStatisticServiceImpl.java
index 17dc1c4..c32593d 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionStatisticServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionStatisticServiceImpl.java
@@ -346,6 +346,8 @@
// 瑙f瀽鏃ユ湡
LocalDate startLocalDate = LocalDate.parse(startDate);
LocalDate endLocalDate = LocalDate.parse(endDate);
+ Date start = Date.from(startLocalDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
+ Date end = Date.from(endLocalDate.plusDays(1).atStartOfDay(ZoneId.systemDefault()).toInstant());
// 鏌ヨ鎵�鏈夊伐搴�
List<ProductProcess> processList = productProcessMapper.selectList(null);
@@ -356,6 +358,42 @@
while (!currentDate.isAfter(endLocalDate)) {
dateSet.add(currentDate);
currentDate = currentDate.plusDays(1);
+ }
+
+ // 涓�娆℃�ф煡璇㈡墍鏈夋棩鏈熻寖鍥村唴鐨勮川閲忔楠岃褰�
+ List<QualityInspect> allQualityInspects = qualityInspectMapper.selectList(
+ new LambdaQueryWrapper<QualityInspect>()
+ .ge(QualityInspect::getCheckTime, start)
+ .lt(QualityInspect::getCheckTime, end)
+ );
+
+ // 鎸夋棩鏈熷拰宸ュ簭鍒嗙粍澶勭悊鏁版嵁
+ Map<LocalDate, Map<String, BigDecimal[]>> dateProcessMap = new HashMap<>();
+
+ for (QualityInspect inspect : allQualityInspects) {
+ if (inspect.getCheckTime() != null && inspect.getProcess() != null) {
+ // 杞崲妫�鏌ユ椂闂翠负LocalDate
+ LocalDate inspectDate = inspect.getCheckTime().toInstant()
+ .atZone(ZoneId.systemDefault()).toLocalDate();
+
+ // 纭繚鏃ユ湡鍦ㄦ煡璇㈣寖鍥村唴
+ if (dateSet.contains(inspectDate)) {
+ String processName = inspect.getProcess();
+
+ // 鍒濆鍖栨棩鏈熷拰宸ュ簭鏁版嵁
+ dateProcessMap.computeIfAbsent(inspectDate, k -> new HashMap<>());
+ BigDecimal[] quantities = dateProcessMap.get(inspectDate)
+ .computeIfAbsent(processName, k -> new BigDecimal[]{BigDecimal.ZERO, BigDecimal.ZERO});
+
+ // 绱姞鏁伴噺
+ if (inspect.getQuantity() != null) {
+ quantities[0] = quantities[0].add(inspect.getQuantity());
+ }
+ if (inspect.getDefectiveQuantity() != null) {
+ quantities[1] = quantities[1].add(inspect.getDefectiveQuantity());
+ }
+ }
+ }
}
// 鏋勫缓缁撴灉鏁版嵁
@@ -370,30 +408,20 @@
// 鍒濆鍖栧伐搴忔暟鎹垪琛�
List<Map<String, Object>> processesList = new ArrayList<>();
+ // 鑾峰彇璇ユ棩鏈熺殑宸ュ簭鏁版嵁
+ Map<String, BigDecimal[]> processData = dateProcessMap.getOrDefault(date, new HashMap<>());
+
for (ProductProcess process : processList) {
if (process.getName() != null) {
- // 鏌ヨ璇ュ伐搴忓湪鎸囧畾鏃ユ湡鐨勮川閲忔楠岃褰�
- List<QualityInspect> qualityInspects = qualityInspectMapper.selectList(
- new LambdaQueryWrapper<QualityInspect>()
- .eq(QualityInspect::getProcess, process.getName())
- .ge(QualityInspect::getCheckTime, Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant()))
- .lt(QualityInspect::getCheckTime, Date.from(date.plusDays(1).atStartOfDay(ZoneId.systemDefault()).toInstant()))
- );
+ String processName = process.getName();
+ BigDecimal[] quantities = processData.getOrDefault(processName, new BigDecimal[]{BigDecimal.ZERO, BigDecimal.ZERO});
- // 璁$畻璇ュ伐搴忕殑鎬绘楠屾暟閲忓拰涓嶈壇鏁伴噺
- BigDecimal processTotalQuantity = BigDecimal.ZERO;
- BigDecimal processDefectiveQuantity = BigDecimal.ZERO;
+ BigDecimal processTotalQuantity = quantities[0];
+ BigDecimal processDefectiveQuantity = quantities[1];
- for (QualityInspect inspect : qualityInspects) {
- if (inspect.getQuantity() != null) {
- processTotalQuantity = processTotalQuantity.add(inspect.getQuantity());
- dailyTotalQuantity = dailyTotalQuantity.add(inspect.getQuantity());
- }
- if (inspect.getDefectiveQuantity() != null) {
- processDefectiveQuantity = processDefectiveQuantity.add(inspect.getDefectiveQuantity());
- dailyDefectiveQuantity = dailyDefectiveQuantity.add(inspect.getDefectiveQuantity());
- }
- }
+ // 绱姞姣忔棩鎬绘暟閲�
+ dailyTotalQuantity = dailyTotalQuantity.add(processTotalQuantity);
+ dailyDefectiveQuantity = dailyDefectiveQuantity.add(processDefectiveQuantity);
// 璁$畻璇ュ伐搴忕殑涓嶈壇鐜�
double processDefectRate = 0.0;
--
Gitblit v1.9.3