From d75541110d428f61a9fe3378110248b7dd78e240 Mon Sep 17 00:00:00 2001
From: zhanghl <253316343@qq.com>
Date: 星期三, 21 五月 2025 12:31:15 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsGasPipelineMoController.java                  |    4 
 aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsGasPipelinePredictionController.java          |   30 +---
 aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsWeldSeamStandard.java                                      |    4 
 aps-modules/aps-core/src/main/resources/mapper/core/ApsWeldSeamStandardMapper.xml                                    |    4 
 aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsMaterialProductGroupManagementMapper.java                  |   17 ++
 aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipelinePrediction.java                                 |   19 +++
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipelinePredictionServiceImpl.java                |   82 ++++++++-----
 aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsMaterialProductGroupManagement.java                        |   99 +++++++++-------
 aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsMaterialProductGroupManagementController.java |    4 
 aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipelineMoMapper.xml                                       |    1 
 aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipelinePredictionMapper.xml                               |    1 
 aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsMaterialProductGroupManagementServiceImpl.java       |   37 +++++-
 aps-modules/aps-core/src/main/resources/mapper/core/ApsMaterialProductGroupManagementMapper.xml                      |    1 
 aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipelinePredictionMapper.java                           |   21 +++
 14 files changed, 219 insertions(+), 105 deletions(-)

diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsGasPipelineMoController.java b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsGasPipelineMoController.java
index 9c72746..5f836fe 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsGasPipelineMoController.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsGasPipelineMoController.java
@@ -53,8 +53,8 @@
     @PostMapping("/importData")
     public AjaxResult importData(MultipartFile file) throws Exception {
 
-        int i = apsGasPipelineMoService.batchInsertGasPipelineMo(file);
-        return  toAjax(i);
+        apsGasPipelineMoService.batchInsertGasPipelineMo(file);
+        return  toAjax(true);
     }
 
     /**
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsGasPipelinePredictionController.java b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsGasPipelinePredictionController.java
index c045a32..90a9b60 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsGasPipelinePredictionController.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsGasPipelinePredictionController.java
@@ -1,30 +1,22 @@
 package com.aps.core.controller.mainPlan;
 
-import java.util.List;
-
+import com.aps.common.core.utils.poi.ExcelUtil;
+import com.aps.common.core.web.controller.BaseController;
+import com.aps.common.core.web.domain.AjaxResult;
 import com.aps.common.core.web.page.TableDataInfo;
-import com.aps.core.domain.ApsGasPipelineMo;
+import com.aps.common.log.annotation.Log;
+import com.aps.common.log.enums.BusinessType;
+import com.aps.common.security.annotation.RequiresPermissions;
 import com.aps.core.domain.ApsGasPipelinePrediction;
 import com.aps.core.service.IApsGasPipelinePredictionService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.aps.common.log.annotation.Log;
-import com.aps.common.log.enums.BusinessType;
-import com.aps.common.security.annotation.RequiresPermissions;
-import com.aps.common.core.web.controller.BaseController;
-import com.aps.common.core.web.domain.AjaxResult;
-import com.aps.common.core.utils.poi.ExcelUtil;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
 
 /**
  * 绠¤矾鎵嬪伐姘斾綋棰勬祴鏁版嵁Controller
@@ -61,8 +53,8 @@
     @PostMapping("/importData")
     public AjaxResult importData(MultipartFile file) throws Exception {
 
-        int i = apsGasPipelinePredictionService.batchInsertApsGasPipelinePrediction(file);
-        return  toAjax(i);
+        apsGasPipelinePredictionService.batchInsertApsGasPipelinePrediction(file);
+        return  toAjax(true);
     }
     /**
      * 瀵煎嚭绠¤矾鎵嬪伐姘斾綋棰勬祴鏁版嵁鍒楄〃
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsMaterialProductGroupManagementController.java b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsMaterialProductGroupManagementController.java
index 347af56..97eefb8 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsMaterialProductGroupManagementController.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsMaterialProductGroupManagementController.java
@@ -53,8 +53,8 @@
     @PostMapping("/importData")
     public AjaxResult importData(MultipartFile file) throws Exception {
 
-        int i = apsMaterialProductGroupManagementService.batchInsertApsMaterialProductGroupManagement(file);
-        return  toAjax(i);
+        apsMaterialProductGroupManagementService.batchInsertApsMaterialProductGroupManagement(file);
+        return  toAjax(true);
     }
     /**
      * 瀵煎嚭鐗╂枡浜у搧缁勬暟鎹鐞嗗垪琛�
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipelinePrediction.java b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipelinePrediction.java
index 294c62e..6a23249 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipelinePrediction.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipelinePrediction.java
@@ -2,13 +2,19 @@
 
 import com.aps.common.core.annotation.Excel;
 import com.aps.common.core.web.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import org.springframework.data.annotation.Id;
 
 import java.math.BigDecimal;
 import java.sql.Timestamp;
+import java.text.SimpleDateFormat;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 绠¤矾鎵嬪伐姘斾綋棰勬祴鏁版嵁瀵硅薄 aps_gas_pipeline_prediction
@@ -49,4 +55,17 @@
     @Schema(description = "鏁伴噺")
     private BigDecimal predictQuantity;
 
+    @JsonIgnore
+    @TableField(exist = false)
+    private String key;
+
+    @JsonIgnore
+    public String getKey() {
+        if (key == null && getPredictDate() != null) {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
+            key = getFactory() + "##" + getMaterialCode() + "##" + sdf.format(getPredictDate());
+        }
+        return key;
+    }
+
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsMaterialProductGroupManagement.java b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsMaterialProductGroupManagement.java
index da7a861..a51836c 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsMaterialProductGroupManagement.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsMaterialProductGroupManagement.java
@@ -1,7 +1,9 @@
 package com.aps.core.domain;
 
 import com.aps.common.core.web.domain.BaseEntity;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import org.apache.commons.lang3.builder.ToStringBuilder;
@@ -11,14 +13,13 @@
 
 /**
  * 鐗╂枡浜у搧缁勬暟鎹鐞嗗璞� aps_material_product_group_management
- * 
+ *
  * @author ruoyi
  * @date 2025-05-19
  */
 @Schema(description = "鐗╂枡浜у搧缁勬暟鎹鐞嗗疄浣撶被")
 @Data
-public class ApsMaterialProductGroupManagement extends BaseEntity
-{
+public class ApsMaterialProductGroupManagement extends BaseEntity {
     private static final long serialVersionUID = 1L;
 
     @Id
@@ -27,104 +28,114 @@
     @Schema(description = "ID")
     private Long id;
 
-    /** 閫傜敤宸ュ巶  鍙傝�� aps_factory */
+    /**
+     * 閫傜敤宸ュ巶  鍙傝�� aps_factory
+     */
     @Excel(name = "閫傜敤宸ュ巶  鍙傝�� aps_factory")
     @Schema(description = "閫傜敤宸ュ巶  鍙傝�� aps_factory")
     private String factory;
 
-    /** 鏂欏彿 */
+    /**
+     * 鏂欏彿
+     */
     @Excel(name = "鏂欏彿")
     @Schema(description = "鏂欏彿")
     private String materialCode;
 
-    /** 涓撲笟 鍙傝��	aps_domain */
+    /**
+     * 涓撲笟 鍙傝��	aps_domain
+     */
     @Excel(name = "涓撲笟 鍙傝��	aps_domain")
     @Schema(description = "涓撲笟 鍙傝��	aps_domain")
     private String domain;
 
-    /** 鏄惁涓轰富闃� 鏄�/鍚� */
+    /**
+     * 鏄惁涓轰富闃� 鏄�/鍚�
+     */
     @Excel(name = "鏄惁涓轰富闃� 鏄�/鍚�")
     @Schema(description = "鏄惁涓轰富闃� 鏄�/鍚�")
     private String isMain;
 
-    /** 鏂欏彿绫诲埆 鍒堕�犱欢/閲囪喘浠� */
+    @JsonIgnore
+    @TableField(exist = false)
+    private String key;
+
+    @JsonIgnore
+    public String getKey() {
+        if (key == null) {
+            key = getFactory() + "##" + getMaterialCode();
+        }
+        return key;
+    }
+
+    /**
+     * 鏂欏彿绫诲埆 鍒堕�犱欢/閲囪喘浠�
+     */
     @Excel(name = "鏂欏彿绫诲埆 鍒堕�犱欢/閲囪喘浠�")
     @Schema(description = "鏂欏彿绫诲埆 鍒堕�犱欢/閲囪喘浠�")
     private String materialType;
 
-    public void setId(Long id) 
-    {
+    public void setId(Long id) {
         this.id = id;
     }
 
-    public Long getId() 
-    {
+    public Long getId() {
         return id;
     }
 
-    public void setFactory(String factory) 
-    {
+    public void setFactory(String factory) {
         this.factory = factory;
     }
 
-    public String getFactory() 
-    {
+    public String getFactory() {
         return factory;
     }
 
-    public void setMaterialCode(String materialCode) 
-    {
+    public void setMaterialCode(String materialCode) {
         this.materialCode = materialCode;
     }
 
-    public String getMaterialCode() 
-    {
+    public String getMaterialCode() {
         return materialCode;
     }
 
-    public void setDomain(String domain) 
-    {
+    public void setDomain(String domain) {
         this.domain = domain;
     }
 
-    public String getDomain() 
-    {
+    public String getDomain() {
         return domain;
     }
 
-    public void setIsMain(String isMain) 
-    {
+    public void setIsMain(String isMain) {
         this.isMain = isMain;
     }
 
-    public String getIsMain() 
-    {
+    public String getIsMain() {
         return isMain;
     }
 
-    public void setMaterialType(String materialType) 
-    {
+    public void setMaterialType(String materialType) {
         this.materialType = materialType;
     }
 
-    public String getMaterialType() 
-    {
+    public String getMaterialType() {
         return materialType;
     }
 
     @Override
     public String toString() {
-        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
-            .append("id", getId())
-            .append("factory", getFactory())
-            .append("materialCode", getMaterialCode())
-            .append("domain", getDomain())
-            .append("createBy", getCreateBy())
-            .append("createTime", getCreateTime())
-            .append("updateBy", getUpdateBy())
-            .append("updateTime", getUpdateTime())
-            .append("isMain", getIsMain())
-            .append("materialType", getMaterialType())
-            .toString();
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+                .append("id", getId())
+                .append("factory", getFactory())
+                .append("materialCode", getMaterialCode())
+                .append("domain", getDomain())
+                .append("createBy", getCreateBy())
+                .append("createTime", getCreateTime())
+                .append("updateBy", getUpdateBy())
+                .append("updateTime", getUpdateTime())
+                .append("isMain", getIsMain())
+                .append("materialType", getMaterialType())
+                .toString();
     }
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsWeldSeamStandard.java b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsWeldSeamStandard.java
index fb3e055..4083ea4 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsWeldSeamStandard.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsWeldSeamStandard.java
@@ -49,6 +49,10 @@
     /** 鐒婃帴褰㈠紡(hup\lod) */
     @Excel(name = "鐒婃帴褰㈠紡")
     private String type;
+    
+    /** 閫傜敤宸ュ巶 */
+    @Excel(name = "閫傜敤宸ュ巶")
+    private String plant;
 
     /** 鏄惁鍒犻櫎(0鍚︼紝1鏄�) */
     private Integer delFlag;
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipelinePredictionMapper.java b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipelinePredictionMapper.java
index c653463..7ca23e2 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipelinePredictionMapper.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipelinePredictionMapper.java
@@ -1,9 +1,15 @@
 package com.aps.core.mapper;
 
 import com.aps.core.domain.ApsGasPipelinePrediction;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 /**
  * 绠¤矾鎵嬪伐姘斾綋棰勬祴鏁版嵁Mapper鎺ュ彛
@@ -62,4 +68,19 @@
     public int deleteApsGasPipelinePredictionByIds(Long[] ids);
 
     void deleteAll();
+
+    @Select("""
+        <script>
+            select id,  factory || '##' || material_code || '##' || TO_CHAR(predict_date, 'yyyy-MM') as key
+             from aps_gas_pipeline_prediction
+            where 1 = 0
+            <if test="!keys.isEmpty()">or factory || '##' || material_code || '##' || TO_CHAR(predict_date, 'yyyy-MM') in
+                <foreach collection="keys" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </script>
+    """)
+    List<Map<String, Object>> selectByFacOrMaterial(@NotNull Set<String> keys);
+
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsMaterialProductGroupManagementMapper.java b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsMaterialProductGroupManagementMapper.java
index 44a8536..956dfc5 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsMaterialProductGroupManagementMapper.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsMaterialProductGroupManagementMapper.java
@@ -2,8 +2,11 @@
 
 import com.aps.core.domain.ApsMaterialProductGroupManagement;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Select;
+import org.jetbrains.annotations.NotNull;
 
 import java.util.List;
+import java.util.Set;
 
 /**
  * 鐗╂枡浜у搧缁勬暟鎹鐞哅apper鎺ュ彛
@@ -62,4 +65,18 @@
     public int deleteApsMaterialProductGroupManagementByIds(Long[] ids);
 
     void deleteAll();
+
+
+    @Select("""
+        <script>
+            select distinct factory || '##' || material_code from aps_material_product_group_management
+            where 1 = 0
+            <if test="!keys.isEmpty()">or factory || '##' || material_code in
+                <foreach collection="keys" item="item" open="(" separator="," close=")">
+                    #{item}
+                </foreach>
+            </if>
+        </script>
+    """)
+    Set<String> selectByFacOrMaterial(@NotNull Set<String> keys);
 }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipelinePredictionServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipelinePredictionServiceImpl.java
index cf3d710..3012ee2 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipelinePredictionServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipelinePredictionServiceImpl.java
@@ -4,8 +4,10 @@
 import com.aps.common.core.utils.DateUtils;
 import com.aps.common.security.utils.SecurityUtils;
 import com.aps.core.domain.ApsGasPipelinePrediction;
+import com.aps.core.domain.ApsMaterialProductGroupManagement;
 import com.aps.core.mapper.ApsGasPipelinePredictionMapper;
 import com.aps.core.service.IApsGasPipelinePredictionService;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import io.micrometer.common.util.StringUtils;
 import lombok.SneakyThrows;
 import org.apache.poi.ss.usermodel.Row;
@@ -18,93 +20,87 @@
 
 import java.math.BigDecimal;
 import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.stream.Collectors;
 
 /**
  * 绠¤矾鎵嬪伐姘斾綋棰勬祴鏁版嵁Service涓氬姟灞傚鐞�
- * 
+ *
  * @author ruoyi
  * @date 2025-05-19
  */
 @Service
-public class ApsGasPipelinePredictionServiceImpl implements IApsGasPipelinePredictionService
-{
+public class ApsGasPipelinePredictionServiceImpl implements IApsGasPipelinePredictionService {
     @Autowired
     private ApsGasPipelinePredictionMapper apsGasPipelinePredictionMapper;
 
     /**
      * 鏌ヨ绠¤矾鎵嬪伐姘斾綋棰勬祴鏁版嵁
-     * 
+     *
      * @param id 绠¤矾鎵嬪伐姘斾綋棰勬祴鏁版嵁涓婚敭
      * @return 绠¤矾鎵嬪伐姘斾綋棰勬祴鏁版嵁
      */
     @Override
-    public ApsGasPipelinePrediction selectApsGasPipelinePredictionById(Long id)
-    {
+    public ApsGasPipelinePrediction selectApsGasPipelinePredictionById(Long id) {
         return apsGasPipelinePredictionMapper.selectApsGasPipelinePredictionById(id);
     }
 
     /**
      * 鏌ヨ绠¤矾鎵嬪伐姘斾綋棰勬祴鏁版嵁鍒楄〃
-     * 
+     *
      * @param apsGasPipelinePrediction 绠¤矾鎵嬪伐姘斾綋棰勬祴鏁版嵁
      * @return 绠¤矾鎵嬪伐姘斾綋棰勬祴鏁版嵁
      */
     @Override
-    public List<ApsGasPipelinePrediction> selectApsGasPipelinePredictionList(ApsGasPipelinePrediction apsGasPipelinePrediction)
-    {
+    public List<ApsGasPipelinePrediction> selectApsGasPipelinePredictionList(ApsGasPipelinePrediction apsGasPipelinePrediction) {
         return apsGasPipelinePredictionMapper.selectApsGasPipelinePredictionList(apsGasPipelinePrediction);
     }
 
     /**
      * 鏂板绠¤矾鎵嬪伐姘斾綋棰勬祴鏁版嵁
-     * 
+     *
      * @param apsGasPipelinePrediction 绠¤矾鎵嬪伐姘斾綋棰勬祴鏁版嵁
      * @return 缁撴灉
      */
     @Override
-    public int insertApsGasPipelinePrediction(ApsGasPipelinePrediction apsGasPipelinePrediction)
-    {
+    public int insertApsGasPipelinePrediction(ApsGasPipelinePrediction apsGasPipelinePrediction) {
         apsGasPipelinePrediction.setCreateTime(DateUtils.getNowDate());
         return apsGasPipelinePredictionMapper.insertApsGasPipelinePrediction(apsGasPipelinePrediction);
     }
 
     /**
      * 淇敼绠¤矾鎵嬪伐姘斾綋棰勬祴鏁版嵁
-     * 
+     *
      * @param apsGasPipelinePrediction 绠¤矾鎵嬪伐姘斾綋棰勬祴鏁版嵁
      * @return 缁撴灉
      */
     @Override
-    public int updateApsGasPipelinePrediction(ApsGasPipelinePrediction apsGasPipelinePrediction)
-    {
+    public int updateApsGasPipelinePrediction(ApsGasPipelinePrediction apsGasPipelinePrediction) {
         apsGasPipelinePrediction.setUpdateTime(DateUtils.getNowDate());
         return apsGasPipelinePredictionMapper.updateApsGasPipelinePrediction(apsGasPipelinePrediction);
     }
 
     /**
      * 鎵归噺鍒犻櫎绠¤矾鎵嬪伐姘斾綋棰勬祴鏁版嵁
-     * 
+     *
      * @param ids 闇�瑕佸垹闄ょ殑绠¤矾鎵嬪伐姘斾綋棰勬祴鏁版嵁涓婚敭
      * @return 缁撴灉
      */
     @Override
-    public int deleteApsGasPipelinePredictionByIds(Long[] ids)
-    {
+    public int deleteApsGasPipelinePredictionByIds(Long[] ids) {
         return apsGasPipelinePredictionMapper.deleteApsGasPipelinePredictionByIds(ids);
     }
 
     /**
      * 鍒犻櫎绠¤矾鎵嬪伐姘斾綋棰勬祴鏁版嵁淇℃伅
-     * 
+     *
      * @param id 绠¤矾鎵嬪伐姘斾綋棰勬祴鏁版嵁涓婚敭
      * @return 缁撴灉
      */
     @Override
-    public int deleteApsGasPipelinePredictionById(Long id)
-    {
+    public int deleteApsGasPipelinePredictionById(Long id) {
         return apsGasPipelinePredictionMapper.deleteApsGasPipelinePredictionById(id);
     }
 
@@ -117,16 +113,16 @@
         int rows = sheet.getLastRowNum();
         if (rows > 0) {
             List<ApsGasPipelinePrediction> list = new ArrayList<>();
-
+            Set<String> keys = new HashSet<>();
             /*鏁版嵁鍒椾粠1寮�濮�*/
-            for (int i = 1; i <= rows; i++) {
+            for (int i = rows; i > 0; --i) {
                 Row row = sheet.getRow(i);
-                if (row.getCell(0) == null){
+                if (row.getCell(0) == null) {
                     continue;
                 }
 
                 String materialCode = row.getCell(0).getStringCellValue();
-                if (StringUtils.isEmpty(materialCode)){
+                if (StringUtils.isEmpty(materialCode)) {
                     continue;
                 }
                 String factory = row.getCell(1).getStringCellValue();
@@ -142,12 +138,36 @@
                     item.setCreateTime(DateUtils.getNowDate());
                     item.setPredictQuantity(new BigDecimal(quantity));
                     item.setPredictDate(new Timestamp(date.getTime()));
-                    list.add(item);
+                    if (!keys.contains(item.getKey())) {
+                        keys.add(item.getKey());
+                        list.add(item);
+                    }
                 }
             }
             if (!list.isEmpty()) {
-                apsGasPipelinePredictionMapper.deleteAll();
-                apsGasPipelinePredictionMapper.insert(list);
+                List<Map<String, Object>> facCodeKey = apsGasPipelinePredictionMapper.selectByFacOrMaterial(keys);
+                if (!facCodeKey.isEmpty()) {
+                    Iterator<ApsGasPipelinePrediction> it = list.iterator();
+                    while (it.hasNext()) {
+                        ApsGasPipelinePrediction item = it.next();
+                        long count = facCodeKey.stream()
+                                .filter(map -> map.get("key").equals(item.getKey()))
+                                .peek(row -> {
+                                    item.setId((Long) row.get("id"));
+                                    item.setCreateBy(null);
+                                    item.setCreateTime(null);
+                                    item.setUpdateBy(SecurityUtils.getUsername());
+                                    item.setUpdateTime(new Timestamp(System.currentTimeMillis()));
+                                    apsGasPipelinePredictionMapper.updateById(item);
+                                }).count();
+                        if (count > 0){
+                            it.remove();
+                        }
+                    }
+                }
+                if (!list.isEmpty()) {
+                    apsGasPipelinePredictionMapper.insert(list);
+                }
             }
             return list.size();
         }
diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsMaterialProductGroupManagementServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsMaterialProductGroupManagementServiceImpl.java
index 5a9c0e1..52ac0a3 100644
--- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsMaterialProductGroupManagementServiceImpl.java
+++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsMaterialProductGroupManagementServiceImpl.java
@@ -2,9 +2,8 @@
 
 import java.math.BigDecimal;
 import java.sql.Timestamp;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 import cn.hutool.core.util.IdUtil;
 import com.aps.common.core.utils.DateUtils;
@@ -13,6 +12,7 @@
 import com.aps.core.domain.ApsMaterialProductGroupManagement;
 import com.aps.core.mapper.ApsMaterialProductGroupManagementMapper;
 import com.aps.core.service.IApsMaterialProductGroupManagementService;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import io.micrometer.common.util.StringUtils;
 import lombok.SneakyThrows;
 import org.apache.poi.ss.usermodel.Row;
@@ -123,7 +123,8 @@
             List<ApsMaterialProductGroupManagement> list = new ArrayList<>();
 
             /*鏁版嵁鍒椾粠1寮�濮�*/
-            for (int i = 1; i <= rows; i++) {
+            Set<String> keys = new HashSet<>();
+            for (int i = rows; i > 0; --i) {
                 Row row = sheet.getRow(i);
                 if (row.getCell(0) == null) {
                     continue;
@@ -149,11 +150,35 @@
                     item.setIsMain(isMain);
                     item.setCreateBy(SecurityUtils.getUsername());
                     item.setCreateTime(DateUtils.getNowDate());
-                    list.add(item);
+                    if (!keys.contains(item.getKey())) {
+                        keys.add(item.getKey());
+                        list.add(item);
+                    }
                 }
             }
             if (!list.isEmpty()) {
-                apsMaterialProductGroupManagementMapper.insert(list);
+                Set<String> facCodeKey = apsMaterialProductGroupManagementMapper.selectByFacOrMaterial(keys);
+                if (!facCodeKey.isEmpty()) {
+                    Iterator<ApsMaterialProductGroupManagement> it = list.iterator();
+                    while (it.hasNext()) {
+                        ApsMaterialProductGroupManagement item = it.next();
+                        if (facCodeKey.contains(item.getKey())) {
+                            LambdaUpdateWrapper<ApsMaterialProductGroupManagement> wrapper = new LambdaUpdateWrapper<>();
+                            wrapper.eq(ApsMaterialProductGroupManagement::getFactory, item.getFactory());
+                            wrapper.eq(ApsMaterialProductGroupManagement::getMaterialCode, item.getMaterialCode());
+                            item.setCreateBy(null);
+                            item.setCreateTime(null);
+                            item.setUpdateBy(SecurityUtils.getUsername());
+                            item.setUpdateTime(new Timestamp(System.currentTimeMillis()));
+                            apsMaterialProductGroupManagementMapper.update(item, wrapper);
+                            it.remove();
+                        }
+                    }
+                }
+
+                if (!list.isEmpty()) {
+                    apsMaterialProductGroupManagementMapper.insert(list);
+                }
             }
             return list.size();
         }
diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipelineMoMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipelineMoMapper.xml
index 0e1c12b..b9d9b9e 100644
--- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipelineMoMapper.xml
+++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipelineMoMapper.xml
@@ -30,6 +30,7 @@
             <if test="planEnd != null  and planEnd != ''"> and plan_end = #{planEnd}</if>
             <if test="quantity != null  and quantity != ''"> and quantity = #{quantity}</if>
         </where>
+        order by create_time desc
     </select>
     
     <select id="selectApsGasPipelineMoById" parameterType="Long" resultMap="ApsGasPipelineMoResult">
diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipelinePredictionMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipelinePredictionMapper.xml
index b8c149a..5dd5657 100644
--- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipelinePredictionMapper.xml
+++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipelinePredictionMapper.xml
@@ -28,6 +28,7 @@
             <if test="predictDate != null  and predictDate != ''"> and predict_date = #{predictDate}</if>
             <if test="predictQuantity != null  and predictQuantity != ''"> and predict_quantity = #{predictQuantity}</if>
         </where>
+        order by create_time desc
     </select>
     
     <select id="selectApsGasPipelinePredictionById" parameterType="Long" resultMap="ApsGasPipelinePredictionResult">
diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsMaterialProductGroupManagementMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsMaterialProductGroupManagementMapper.xml
index 73a5bd1..1714c80 100644
--- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsMaterialProductGroupManagementMapper.xml
+++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsMaterialProductGroupManagementMapper.xml
@@ -30,6 +30,7 @@
             <if test="isMain != null  and isMain != ''"> and is_main = #{isMain}</if>
             <if test="materialType != null  and materialType != ''"> and material_type = #{materialType}</if>
         </where>
+        order by create_time desc
     </select>
     
     <select id="selectApsMaterialProductGroupManagementById" parameterType="Long" resultMap="ApsMaterialProductGroupManagementResult">
diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsWeldSeamStandardMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsWeldSeamStandardMapper.xml
index bf80750..4cbf684 100644
--- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsWeldSeamStandardMapper.xml
+++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsWeldSeamStandardMapper.xml
@@ -12,11 +12,12 @@
         <result property="hupQty"    column="hup_qty"    />
         <result property="lodQty"    column="lod_qty"    />
         <result property="type"    column="type"    />
+        <result property="plant"    column="plant"    />
         <result property="delFlag"    column="del_flag"    />
     </resultMap>
 
     <sql id="selectApsWeldSeamStandardVo">
-        select id, item_code, item_figure, item_figure_version, hup_qty, lod_qty, type, del_flag from aps_weld_seam_standard
+        select id, item_code, item_figure, item_figure_version, hup_qty, lod_qty, type, plant, del_flag from aps_weld_seam_standard
     </sql>
 
     <select id="selectApsWeldSeamStandardList" parameterType="com.aps.core.domain.ApsWeldSeamStandard" resultMap="ApsWeldSeamStandardResult">
@@ -28,6 +29,7 @@
             <if test="hupQty != null "> and hup_qty = #{hupQty}</if>
             <if test="lodQty != null "> and lod_qty = #{lodQty}</if>
             <if test="type != null  and type != ''"> and type = #{type}</if>
+            <if test="plant != null  and plant != ''"> and plant = #{plant}</if>
             and del_flag = 0
         </where>
     </select>

--
Gitblit v1.9.3