From be09966397e0f4678bf8029ba6a3bcebaef4907b Mon Sep 17 00:00:00 2001
From: zhanghl <253316343@qq.com>
Date: 星期三, 16 四月 2025 15:30:45 +0800
Subject: [PATCH] 焊缝统计表-逻辑更新

---
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsWeldSeamServiceImpl.java |   51 +++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 49 insertions(+), 2 deletions(-)

diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsWeldSeamServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsWeldSeamServiceImpl.java
index b4c43fb..145f118 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsWeldSeamServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsWeldSeamServiceImpl.java
@@ -3,6 +3,7 @@
 import com.aps.common.core.utils.DateUtils;
 import com.aps.common.core.utils.StringUtils;
 import com.aps.common.core.utils.uuid.IdUtils;
+import com.aps.common.security.utils.SecurityUtils;
 import com.aps.core.domain.ApsWeldSeam;
 import com.aps.core.domain.ApsWeldSeamStatistics;
 import com.aps.core.domain.ApsWeldSeamTemp;
@@ -14,6 +15,7 @@
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.List;
 
@@ -100,6 +102,7 @@
         return apsWeldSeamMapper.deleteApsWeldSeamById(id);
     }
 
+    @Transactional
     @Override
     public int confirmWeldSeam(ApsWeldSeamTemp apsWeldSeamTemp) {
         //鏌ヨ涓存椂琛ㄦ暟鎹�
@@ -128,16 +131,60 @@
         if (count == apsWeldSeamTemps.size()) {
             apsWeldSeamTempMapper.deleteApsWeldSeamTempByIds(ids);
         }
+        /*鍒犻櫎鏃ф暟鎹�*/
+        apsWeldSeamStatisticsMapper.removeLastBatch();
         //鎻掑叆鐒婄紳缁熻琛�
         List<ApsWeldSeamStatistics> apsWeldSeamStatistics = apsWeldSeamMapper.weldSeamStat(apsWeldSeamTemps);
-        for (int i = 0; i < apsWeldSeamStatistics.size(); i++) {
+
+        List<Long> years = apsWeldSeamStatistics.stream().map(ApsWeldSeamStatistics::getYear).distinct().toList();
+        List<Long> months = apsWeldSeamStatistics.stream().map(ApsWeldSeamStatistics::getMonth).distinct().toList();
+        List<String> bases = apsWeldSeamStatistics.stream().map(ApsWeldSeamStatistics::getProductionBase).distinct().toList();
+
+        for (Long year : years) {
+            for (Long month : months) {
+                for (String basis : bases) {
+                    List<ApsWeldSeamStatistics> list = apsWeldSeamStatistics.stream()
+                            .filter(x -> x.getYear().equals(year) && x.getMonth().equals(month) && x.getProductionBase().equals(basis)).toList();
+
+                    long gasOrderRequirement = list.stream().filter(x -> x.getWorkOrderType().equals("0") && x.getClassification().equals("0"))
+                            .mapToLong(ApsWeldSeamStatistics::getTotal).sum();
+                    long gasPredictionRequirement = list.stream().filter(x -> x.getWorkOrderType().equals("1") && x.getClassification().equals("0"))
+                            .mapToLong(ApsWeldSeamStatistics::getTotal).sum();
+                    long pipingOrderRequirement = list.stream().filter(x -> x.getWorkOrderType().equals("0") && x.getClassification().equals("1"))
+                            .mapToLong(ApsWeldSeamStatistics::getTotal).sum();
+                    long pipingPredictionRequirement = list.stream().filter(x -> x.getWorkOrderType().equals("1") && x.getClassification().equals("1"))
+                            .mapToLong(ApsWeldSeamStatistics::getTotal).sum();
+
+                    ApsWeldSeamStatistics seamStatistics = new ApsWeldSeamStatistics();
+                    seamStatistics.setId(IdUtils.fastSimpleUUID());
+                    seamStatistics.setYear(year);
+                    seamStatistics.setMonth(month);
+                    seamStatistics.setProductionBase(basis);
+                    seamStatistics.setPipingOrderRequirement(pipingOrderRequirement);
+                    seamStatistics.setPipingPredictionRequirement(pipingPredictionRequirement);
+                    seamStatistics.setGasOrderRequirement(gasOrderRequirement);
+                    seamStatistics.setGasPredictionRequirement(gasPredictionRequirement);
+                    seamStatistics.setTotal(gasOrderRequirement + gasPredictionRequirement + pipingOrderRequirement + pipingPredictionRequirement);
+                    seamStatistics.setCreateTime(DateUtils.getNowDate());
+                    seamStatistics.setCreateBy(SecurityUtils.getUsername());
+                    apsWeldSeamStatisticsMapper.insertApsWeldSeamStatistics(seamStatistics);
+                }
+            }
+
+        }
+
+
+        /*for (int i = 0; i < apsWeldSeamStatistics.size(); i++) {
             List<ApsWeldSeamStatistics> apsWeldSeamStatistics1 = apsWeldSeamStatisticsMapper.selectApsWeldSeamStatisticsList(apsWeldSeamStatistics.get(i));
             if (apsWeldSeamStatistics1.size() > 0) {
+
                 ApsWeldSeamStatistics apsWeldSeamStatistics2 = apsWeldSeamStatistics1.get(0);
+
                 apsWeldSeamStatistics2.setPipingOrderRequirement(apsWeldSeamStatistics.get(i).getPipingOrderRequirement());
                 apsWeldSeamStatistics2.setGasOrderRequirement(apsWeldSeamStatistics.get(i).getGasOrderRequirement());
                 apsWeldSeamStatistics2.setPipingPredictionRequirement(apsWeldSeamStatistics.get(i).getPipingPredictionRequirement());
                 apsWeldSeamStatistics2.setGasPredictionRequirement(apsWeldSeamStatistics.get(i).getGasPredictionRequirement());
+
                 //棰勭暀绱ф�ヨ鍗曚骇鍑烘槸鍚︿负绌�
                 if (apsWeldSeamStatistics2.getReserveEmergencyOrderOutput() != null) {
                     apsWeldSeamStatistics2.setTotal(apsWeldSeamStatistics2.getPipingOrderRequirement() + apsWeldSeamStatistics2.getPipingPredictionRequirement() + apsWeldSeamStatistics2.getGasOrderRequirement() + apsWeldSeamStatistics2.getGasPredictionRequirement() + apsWeldSeamStatistics2.getReserveEmergencyOrderOutput());
@@ -165,7 +212,7 @@
                 apsWeldSeamStatisticsMapper.insertApsWeldSeamStatistics(apsWeldSeamStatistics.get(i));
             }
 
-        }
+        }*/
         return 1;
     }
 }

--
Gitblit v1.9.3