已修改20个文件
388 ■■■■■ 文件已修改
aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsWeldSeamStandardController.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsGasPipelineMoController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsGasPipelinePredictionController.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsMaterialProductGroupManagementController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsGasPipelinePrediction.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsMaterialProductGroupManagement.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsStandardProcess.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsWeldSeamStandard.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipelinePredictionMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsMaterialProductGroupManagementMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipelinePredictionServiceImpl.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsMaterialProductGroupManagementServiceImpl.java 37 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateRequireDateServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipelineMoMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipelinePredictionMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipingRouteStatMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/resources/mapper/core/ApsMaterialProductGroupManagementMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/resources/mapper/core/ApsWeldSeamStandardMapper.xml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/resources/mapper/core/ApsWeldSeamStatisticsV2Mapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/controller/basicData/ApsWeldSeamStandardController.java
@@ -1,6 +1,8 @@
package com.aps.core.controller.basicData;
import java.util.List;
import com.aps.common.security.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -26,6 +28,7 @@
    /**
     * 查询焊缝标准列表
     */
    @RequiresPermissions("weldSeamStandard:weldSeamStandard:list")
    @GetMapping("/list")
    public TableDataInfo list(ApsWeldSeamStandard apsWeldSeamStandard)
    {
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);
    }
    /**
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);
    }
    /**
     * 导出管路手工气体预测数据列表
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);
    }
    /**
     * 导出物料产品组数据管理列表
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;
    }
}
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();
    }
}
aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsStandardProcess.java
@@ -38,6 +38,10 @@
    @Schema(description = "资源组", type = "String")
    @Excel(name = "资源组")
    private String resourceGroupName;
    /** 专业 */
    @Schema(description = "专业", type = "String")
    @Excel(name = "专业")
    private String major;
    /** 产能模型: 独占/合批 */
    @Schema(description = "产能模型", type = "String")
@@ -55,8 +59,8 @@
    private String plantId;
    /** 工厂 */
    @Schema(description = "工厂", type = "String")
    @Excel(name = "工厂")
    @Schema(description = "适用工厂", type = "String")
    @Excel(name = "适用工厂")
    private String plant;
    /** 车间Id */
@@ -65,8 +69,8 @@
    private String workShopId;
    /** 车间 */
    @Schema(description = "车间", type = "String")
    @Excel(name = "车间")
    @Schema(description = "适用车间", type = "String")
    @Excel(name = "适用车间")
    private String workShop;
    /** 日历Id */
@@ -74,24 +78,22 @@
//    @Excel(name = "日历Id")
    private Long workCalenderId;
    /** 删除标志(0代表存在 2代表删除) */
    @Schema(description = "删除标志(0代表存在 2代表删除)", type = "String")
    private String delFlag;
    /** 日历描述 */
    @Schema(description = "日历描述", type = "String")
    @Excel(name = "日历描述")
    private String workCalender;
    /** 产能模型Id */
    @Schema(description = "产能模型Id", type = "Long")
//    @Excel(name = "产能模型Id")
    private Long modelId;
    /** 日历描述 */
    @Schema(description = "日历描述", type = "String")
    @Excel(name = "日历描述")
    private String workCalender;
    /** 专业 */
    @Schema(description = "专业", type = "String")
    @Excel(name = "专业")
    private String major;
    /** 删除标志(0代表存在 2代表删除) */
    @Schema(description = "删除标志(0代表存在 2代表删除)", type = "String")
    private String delFlag;
    public String getMajor() {
        return major;
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;
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);
}
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;
/**
 * 物料产品组数据管理Mapper接口
@@ -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);
}
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();
        }
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java
@@ -476,7 +476,8 @@
            }
            ApsGasPipingRouteStat queryStatParam = new ApsGasPipingRouteStat();
            BeanUtils.copyProperties(apsGasPipingRouteStat,queryStatParam);
            queryStatParam.setMajor("");
            queryStatParam.setMajor(apsGasPipingRouteStat.getMajor());
            queryStatParam.setPlant(apsGasPipingRouteStat.getPlant());
            apsGasPipingRouteStats = apsGasPipingRouteStatMapper.selectApsGasPipingRouteStatList(queryStatParam);
            //根据开工日进行升序排序
            apsGasPipingRouteStats.sort((a, b)->a.getProcessPlanStartDay().compareTo(b.getProcessPlanStartDay()));
@@ -538,7 +539,7 @@
                        String dateKey = apsResourceDateStat.getPlanDay().toString();
                        if(dayMap.containsKey(dateKey)){
                            ApsResourceDateStat apsResourceDateStatTemp = dayMap.get(dateKey);
                            String capacityKey = processName + "-" + dateKey.substring(0,7);
                            String capacityKey = processName + "-"+ apsResourceDateStat.getPlant() + "-" + dateKey.substring(0,7);
                            apsResourceDateStatTemp.setDesignTimes(apsGasPipingPlanMap.get(capacityKey)!=null?apsGasPipingPlanMap.get(capacityKey).getDayProduceAllNum():new BigDecimal(0));
                            apsResourceDateStatTemp.setRequireTimes(apsResourceDateStatTemp.getRequireTimes().add(apsResourceDateStat.getRequireTimes()));
                            if(apsResourceDateStatTemp.getDesignTimes().compareTo(BigDecimal.ZERO) > 0){
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();
        }
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlate/ApsPlateRequireDateServiceImpl.java
@@ -17,8 +17,8 @@
/**
 * @author zhl
 * @description 针对表【aps_plate_require_date(工单计划需求日期表)】的数据库操作Service实现
 * @createDate 2025-05-19 16:51:36
 * &#064;description  针对表【aps_plate_require_date(工单计划需求日期表)】的数据库操作Service实现
 * &#064;createDate  2025-05-19 16:51:36
 */
@Service
public class ApsPlateRequireDateServiceImpl extends ServiceImpl<ApsPlateRequireDateMapper, ApsPlateRequireDate>
@@ -54,7 +54,7 @@
        //TODO: 根据idList批量删除
        LambdaUpdateWrapper<ApsPlateRequireDate> queryWrapper = new LambdaUpdateWrapper<>();
        queryWrapper.in(ApsPlateRequireDate::getId, idList);
        queryWrapper.set(ApsPlateRequireDate::getDelFlag, 0);
        queryWrapper.set(ApsPlateRequireDate::getDelFlag, 1);
        return  apsPlateRequireDateMapper.update(queryWrapper);
    }
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">
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">
aps-modules/aps-core/src/main/resources/mapper/core/ApsGasPipingRouteStatMapper.xml
@@ -67,6 +67,7 @@
                    and process_name in (select process_name from aps_standard_process where major='气柜')
                </if>
            </if>
            <if test="plant != null and plant != ''"> and plant = #{plant} </if>
        </where>
    </select>
    
@@ -181,7 +182,7 @@
        id,work_order_no, road_process_number, current_process_number, production_quantity, standard_time,
        process_total_time, process_plan_start_day, design_times, del_flag, create_by, process_name,
        create_time, item_number, standard_dosage, process_total_dosage, design_capacity, major,
        plan_start_year, plan_start_month, plan_start_day,batch_number,process_plan_end_day,warning,order_plan_end_day
        plan_start_year, plan_start_month, plan_start_day,batch_number,process_plan_end_day,warning,order_plan_end_day,plant
        )
        VALUES
        <foreach collection="apsGasPipingRouteStatList" item="stat" separator=",">
@@ -190,7 +191,7 @@
            #{stat.standardTime}, #{stat.processTotalTime}, #{stat.processPlanStartDay}, #{stat.designTimes}, #{stat.delFlag},
            #{stat.createBy}, #{stat.processName}, #{stat.createTime}, #{stat.itemNumber}, #{stat.standardDosage},
            #{stat.processTotalDosage}, #{stat.designCapacity}, #{stat.major}, #{stat.planStartYear},
            #{stat.planStartMonth}, #{stat.planStartDay}, #{stat.batchNumber}, #{stat.processPlanEndDay},#{stat.warning},#{stat.orderPlanEndDay}
            #{stat.planStartMonth}, #{stat.planStartDay}, #{stat.batchNumber}, #{stat.processPlanEndDay},#{stat.warning},#{stat.orderPlanEndDay},#{stat.plant}
            )
        </foreach>
@@ -198,7 +199,7 @@
    <select id="queryTempStat"  resultMap="ApsGasPipingRouteStatResult" >
        select row_number() over (partition by rt.work_order_no order by rt.process_number desc ) as num,
                rt.work_order_no,
               rt.work_order_no,
               rt.process_name,
               cast(rt.process_number as numeric(18, 2))           as road_process_number,
               cast(rt.process_number as numeric(18, 2))           as route_process_number,
@@ -209,9 +210,10 @@
               rt.process_plan_start_day,
               rt.process_plan_end_day,
               pl.plan_end_day                         as order_plan_end_day,
                rt.item_no as item_number,
                pl.plan_type as major,
               false as warning
               rt.item_no as item_number,
               pl.plan_type as major,
               false as warning,
               pl.plant
        from aps_gas_piping_plan as pl
                 left join aps_process_route as rt on pl.document_number = rt.work_order_no
        where pl.document_number is not null and rt.work_order_no is not null and pl.plan_end_day is not null
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">
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>
aps-modules/aps-core/src/main/resources/mapper/core/ApsWeldSeamStatisticsV2Mapper.xml
@@ -164,7 +164,7 @@
                mgm.domain as 专业
            FROM aps_gas_pipeline_mo mo
            LEFT JOIN aps_weld_seam_standard ws ON mo.material_code = ws.item_code AND ws.del_flag = 0
            LEFT JOIN aps_material_product_group_management mgm ON mo.material_code = mgm.material_code
            LEFT JOIN aps_material_product_group_management mgm ON mo.material_code = mgm.material_code AND mo.factory = mgm.factory
        ),
        预测焊缝计算 AS (
            -- 计算预测的焊缝数量
@@ -177,7 +177,7 @@
                mgm.domain as 专业
            FROM aps_gas_pipeline_prediction gp
            LEFT JOIN aps_weld_seam_standard ws ON gp.material_code = ws.item_code AND ws.del_flag = 0
            LEFT JOIN aps_material_product_group_management mgm ON gp.material_code = mgm.material_code
            LEFT JOIN aps_material_product_group_management mgm ON gp.material_code = mgm.material_code AND gp.factory = mgm.factory
        ),
        汇总数据 AS (
            SELECT