From 2786ed1fe266240fa6216c5dd6a9014481963d24 Mon Sep 17 00:00:00 2001
From: sfd <sun.sunshine@163.com>
Date: 星期二, 20 五月 2025 12:38:25 +0800
Subject: [PATCH] Merge branch 'dev' of http://192.168.50.149:8085/r/aps-backend into dev

---
 aps-modules/aps-core/src/main/java/com/aps/core/service/mainPlan/impl/ApsWeldSeamStatisticsV2ServiceImpl.java |  206 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 206 insertions(+), 0 deletions(-)

diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/mainPlan/impl/ApsWeldSeamStatisticsV2ServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/mainPlan/impl/ApsWeldSeamStatisticsV2ServiceImpl.java
new file mode 100644
index 0000000..77fd6f8
--- /dev/null
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/mainPlan/impl/ApsWeldSeamStatisticsV2ServiceImpl.java
@@ -0,0 +1,206 @@
+package com.aps.core.service.mainPlan.impl;
+
+import com.aps.common.core.utils.DateUtils;
+import com.aps.common.core.utils.uuid.IdUtils;
+import com.aps.common.core.web.page.TableDataInfo;
+import com.aps.common.security.utils.SecurityUtils;
+import com.aps.core.controller.basicData.ApsGasPipelineCapacityPlanController;
+import com.aps.core.domain.ApsGasPipelineCapacityPlan;
+import com.aps.core.domain.mainPlan.ApsWeldSeamStatisticsV2;
+import com.aps.core.mapper.mainPlan.ApsWeldSeamStatisticsV2Mapper;
+import com.aps.core.service.IApsGasPipelineCapacityPlanService;
+import com.aps.core.service.mainPlan.IApsWeldSeamStatisticsV2Service;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 鐒婄紳缁熻琛╒2Service涓氬姟灞傚鐞�
+ *
+ * @date 2023-08-01
+ */
+@Service
+public class ApsWeldSeamStatisticsV2ServiceImpl implements IApsWeldSeamStatisticsV2Service {
+    @Autowired
+    private ApsWeldSeamStatisticsV2Mapper apsWeldSeamStatisticsV2Mapper;
+    
+    @Autowired
+    private ApsGasPipelineCapacityPlanController apsGasPipelineCapacityPlanController;
+
+    /**
+     * 鏌ヨ鐒婄紳缁熻琛╒2鍒楄〃
+     *
+     * @param apsWeldSeamStatisticsV2 鐒婄紳缁熻琛╒2
+     * @return 鐒婄紳缁熻琛╒2
+     */
+    @Override
+    public List<ApsWeldSeamStatisticsV2> selectApsWeldSeamStatisticsV2List(ApsWeldSeamStatisticsV2 apsWeldSeamStatisticsV2) {
+        return apsWeldSeamStatisticsV2Mapper.selectApsWeldSeamStatisticsV2List(apsWeldSeamStatisticsV2);
+    }
+
+    /**
+     * 淇敼鐒婄紳缁熻琛╒2
+     *
+     * @param apsWeldSeamStatisticsV2 鐒婄紳缁熻琛╒2
+     * @return 鏇存柊鍚庣殑璁板綍
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public ApsWeldSeamStatisticsV2 updateApsWeldSeamStatisticsV2(ApsWeldSeamStatisticsV2 apsWeldSeamStatisticsV2)
+    {
+        // 璁剧疆鏇存柊鏃堕棿
+        apsWeldSeamStatisticsV2.setUpdateTime(DateUtils.getNowDate());
+        apsWeldSeamStatisticsV2.setUpdateBy(SecurityUtils.getUsername());
+
+        // 1. 浠庢暟鎹簱鑾峰彇鍘熷璁板綍锛屼互淇濈暀鍏朵粬瀛楁涓嶅彉
+        ApsWeldSeamStatisticsV2 originalData = apsWeldSeamStatisticsV2Mapper.selectApsWeldSeamStatisticsV2ById(apsWeldSeamStatisticsV2.getId());
+        if (originalData == null) {
+            throw new RuntimeException("璁板綍涓嶅瓨鍦紝ID: " + apsWeldSeamStatisticsV2.getId());
+        }
+
+        // 2. 鍙洿鏂皉eserveEmergencyOrderOutput鍜宒ays涓や釜瀛楁
+        originalData.setReserveEmergencyOrderOutput(apsWeldSeamStatisticsV2.getReserveEmergencyOrderOutput());
+        originalData.setDays(apsWeldSeamStatisticsV2.getDays());
+        originalData.setUpdateTime(apsWeldSeamStatisticsV2.getUpdateTime());
+        originalData.setUpdateBy(apsWeldSeamStatisticsV2.getUpdateBy());
+        
+        // 3. 纭繚鎵�鏈夌敤浜庤绠楃殑BigDecimal瀛楁涓嶄负null
+        java.math.BigDecimal pipingOrderReq = (originalData.getPipingOrderRequirement() != null) 
+                ? originalData.getPipingOrderRequirement() : java.math.BigDecimal.ZERO;
+        
+        java.math.BigDecimal pipingPredictionReq = (originalData.getPipingPredictionRequirement() != null) 
+                ? originalData.getPipingPredictionRequirement() : java.math.BigDecimal.ZERO;
+        
+        java.math.BigDecimal gasOrderReq = (originalData.getGasOrderRequirement() != null) 
+                ? originalData.getGasOrderRequirement() : java.math.BigDecimal.ZERO;
+        
+        java.math.BigDecimal gasPredictionReq = (originalData.getGasPredictionRequirement() != null) 
+                ? originalData.getGasPredictionRequirement() : java.math.BigDecimal.ZERO;
+        
+        java.math.BigDecimal reserveEmergencyOutput = (originalData.getReserveEmergencyOrderOutput() != null) 
+                ? originalData.getReserveEmergencyOrderOutput() : java.math.BigDecimal.ZERO;
+        
+        // 4. 灞炴��1锛氶噸鏂拌绠梩otal锛堝悎璁★級
+        java.math.BigDecimal total = pipingOrderReq
+                .add(pipingPredictionReq)
+                .add(gasOrderReq)
+                .add(gasPredictionReq)
+                .add(reserveEmergencyOutput);
+        
+        originalData.setTotal(total);
+        
+        // 5. 濡傛灉days涓嶄负绌轰笖澶т簬0锛岄噸鏂拌绠梤equirementDayWeldSeam鍜宨sSatisfy
+        if(originalData.getDays() != null && originalData.getDays().doubleValue() > 0) {
+            // 灞炴��2锛氳绠楅渶姹傛棩鐒婄紳 = 鍚堣/澶╂暟锛屽洓鑸嶄簲鍏�
+            double result = total.doubleValue() / originalData.getDays().doubleValue();
+            java.math.BigDecimal requirementDayWeldSeam = new java.math.BigDecimal(result).setScale(0, java.math.RoundingMode.HALF_UP);
+            originalData.setRequirementDayWeldSeam(requirementDayWeldSeam);
+            
+            // 灞炴��3锛氬垽鏂槸鍚︽弧瓒�
+            if(originalData.getProductionDayWeldSeam() != null) {
+                if(originalData.getProductionDayWeldSeam().compareTo(requirementDayWeldSeam) >= 0) {
+                    originalData.setIsSatisfy("1"); // 婊¤冻
+                } else {
+                    originalData.setIsSatisfy("0"); // 涓嶆弧瓒�
+                }
+            } else {
+                originalData.setIsSatisfy("0"); // 榛樿涓嶆弧瓒�
+            }
+        } else {
+            // 濡傛灉澶╂暟涓虹┖鎴栦负0锛岃缃负涓嶆弧瓒�
+            originalData.setIsSatisfy("0");
+        }
+        
+        // 6. 鏇存柊鏁版嵁搴�
+        apsWeldSeamStatisticsV2Mapper.updateApsWeldSeamStatisticsV2(originalData);
+        
+        // 7. 杩斿洖鏇存柊鍚庣殑瀹屾暣璁板綍
+        return originalData;
+    }
+
+    /**
+     * 鍒锋柊鐒婄紳缁熻琛ㄦ暟鎹�
+     *
+     * @param username 鎿嶄綔鐢ㄦ埛
+     * @return 鍙楀奖鍝嶇殑璁板綍鏁�
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int refreshWeldSeamStatistics(String username) {
+        // 1. 娓呯┖缁熻琛�
+        apsWeldSeamStatisticsV2Mapper.truncateTable();
+        
+        // 2. 鑾峰彇鏈�鏂扮殑缁熻鏁版嵁
+        List<ApsWeldSeamStatisticsV2> statisticsList = apsWeldSeamStatisticsV2Mapper.queryWeldSeamStatistics();
+        
+        // 3. 璁剧疆鍒涘缓淇℃伅鍜孖D锛屽苟鑾峰彇鐢熶骇鏃ョ剨缂濇暟鎹�
+        Date now = new Date();
+        for (ApsWeldSeamStatisticsV2 statistics : statisticsList) {
+            // 浣跨敤UUID浣滀负ID
+            statistics.setId(IdUtils.fastUUID());
+            statistics.setCreateBy(username);
+            statistics.setCreateTime(now);
+            
+            // 鍏堣绠楅渶姹傛棩鐒婄紳(requirementDayWeldSeam)
+            if(statistics.getDays() != null && statistics.getDays().doubleValue() > 0 && statistics.getTotal() != null) {
+                // 璁$畻闇�姹傛棩鐒婄紳 = 鍚堣/澶╂暟锛屽洓鑸嶄簲鍏�
+                double result = statistics.getTotal().doubleValue() / statistics.getDays().doubleValue();
+                BigDecimal requirementDayWeldSeam = new BigDecimal(result).setScale(0, java.math.RoundingMode.HALF_UP);
+                statistics.setRequirementDayWeldSeam(requirementDayWeldSeam);
+            } else if (statistics.getRequirementDayWeldSeam() == null) {
+                // 濡傛灉鏃犳硶璁$畻涓斾箣鍓嶆病鏈夊�硷紝璁剧疆榛樿鍊�
+                statistics.setRequirementDayWeldSeam(BigDecimal.ZERO);
+            }
+            
+            // 璁剧疆鐢熶骇鏃ョ剨缂�(productionDayWeldSeam)
+            // 鏍规嵁year銆乵onth銆乸roductionBase鏌ヨ瀵瑰簲鐨勭敓浜ф棩鐒婄紳鏁版嵁
+            if (statistics.getYear() != null && statistics.getMonth() != null && statistics.getProductionBase() != null) {
+                // 鍒涘缓鏌ヨ鏉′欢
+                ApsGasPipelineCapacityPlan queryParam = new ApsGasPipelineCapacityPlan();
+                queryParam.setYear(statistics.getYear().toString());
+                queryParam.setMonth(statistics.getMonth().toString());
+                queryParam.setOrgCode(statistics.getProductionBase());
+                
+                // 鐩存帴璋冪敤Controller鐨刲ist鏂规硶鑾峰彇鏁版嵁
+                TableDataInfo tableDataInfo = apsGasPipelineCapacityPlanController.list(queryParam);
+                List<ApsGasPipelineCapacityPlan> capacityPlans = (List<ApsGasPipelineCapacityPlan>) tableDataInfo.getRows();
+                
+                // 閬嶅巻鎵惧埌processName涓�"姘斾綋绠¤矾杞ㄩ亾鐒婃帴缁�"鐨勮褰�
+                for (ApsGasPipelineCapacityPlan plan : capacityPlans) {
+                    if ("姘斾綋绠¤矾杞ㄩ亾鐒婃帴缁�".equals(plan.getProcessName()) && plan.getDayProduceAllNum() != null) {
+                        // 璁剧疆鐢熶骇鏃ョ剨缂濆��
+                        statistics.setProductionDayWeldSeam(plan.getDayProduceAllNum());
+                        break; // 鎵惧埌鍖归厤璁板綍鍚庨��鍑哄惊鐜�
+                    }
+                }
+            }
+            
+            // 濡傛灉娌℃湁鎵惧埌鍖归厤鐨勪骇鑳借鍒掓暟鎹紝璁剧疆榛樿鐘舵��
+            if (statistics.getProductionDayWeldSeam() == null) {
+                statistics.setProductionDayWeldSeam(BigDecimal.ZERO);
+            }
+            
+            // 鏈�鍚庣粺涓�璁$畻isSatisfy锛堟槸鍚︽弧瓒筹級
+            // 褰撶敓浜ф棩鐒婄紳 >= 闇�姹傛棩鐒婄紳鏃朵负婊¤冻锛屽惁鍒欎负涓嶆弧瓒�
+            if (statistics.getRequirementDayWeldSeam() != null && 
+                statistics.getProductionDayWeldSeam() != null &&
+                statistics.getProductionDayWeldSeam().compareTo(statistics.getRequirementDayWeldSeam()) >= 0) {
+                statistics.setIsSatisfy("1"); // 婊¤冻
+            } else {
+                statistics.setIsSatisfy("0"); // 涓嶆弧瓒�
+            }
+        }
+        
+        // 4. 鎵归噺鎻掑叆鏁版嵁
+        int count = 0;
+        if (!statisticsList.isEmpty()) {
+            count = apsWeldSeamStatisticsV2Mapper.batchInsert(statisticsList);
+        }
+        
+        return count;
+    }
+} 
\ No newline at end of file

--
Gitblit v1.9.3