sfd
2025-05-21 7c266bff815ebed897e51f401ef5987629d77c44
修改管路预测与物料产品组导入功能 根据工厂及料号更新与插入
已修改4个文件
135 ■■■■ 文件已修改
aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsGasPipelinePredictionMapper.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsMaterialProductGroupManagementMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipelinePredictionServiceImpl.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsMaterialProductGroupManagementServiceImpl.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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,24 @@
    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="!facs.isEmpty()">or factory in
                <foreach collection="facs" item="item" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
            <if test="!facs.isEmpty()">or material_code in
                <foreach collection="codes" item="item" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
        </script>
    """)
    List<Map<String, Object>> selectByFacOrMaterial(@NotNull Set<String> facs, @NotNull Set<String> codes);
}
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,23 @@
    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="!facs.isEmpty()">or factory in
                <foreach collection="facs" item="item" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
            <if test="!facs.isEmpty()">or material_code in
                <foreach collection="codes" item="item" open="(" separator="," close=")">
                    #{item}
                </foreach>
            </if>
        </script>
    """)
    Set<String> selectByFacOrMaterial(@NotNull Set<String> facs, @NotNull Set<String> codes);
}
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,9 +20,9 @@
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.stream.Collectors;
/**
 * 管路手工气体预测数据Service业务层处理
@@ -29,8 +31,7 @@
 * @date 2025-05-19
 */
@Service
public class ApsGasPipelinePredictionServiceImpl implements IApsGasPipelinePredictionService
{
public class ApsGasPipelinePredictionServiceImpl implements IApsGasPipelinePredictionService {
    @Autowired
    private ApsGasPipelinePredictionMapper apsGasPipelinePredictionMapper;
@@ -41,8 +42,7 @@
     * @return 管路手工气体预测数据
     */
    @Override
    public ApsGasPipelinePrediction selectApsGasPipelinePredictionById(Long id)
    {
    public ApsGasPipelinePrediction selectApsGasPipelinePredictionById(Long id) {
        return apsGasPipelinePredictionMapper.selectApsGasPipelinePredictionById(id);
    }
@@ -53,8 +53,7 @@
     * @return 管路手工气体预测数据
     */
    @Override
    public List<ApsGasPipelinePrediction> selectApsGasPipelinePredictionList(ApsGasPipelinePrediction apsGasPipelinePrediction)
    {
    public List<ApsGasPipelinePrediction> selectApsGasPipelinePredictionList(ApsGasPipelinePrediction apsGasPipelinePrediction) {
        return apsGasPipelinePredictionMapper.selectApsGasPipelinePredictionList(apsGasPipelinePrediction);
    }
@@ -65,8 +64,7 @@
     * @return 结果
     */
    @Override
    public int insertApsGasPipelinePrediction(ApsGasPipelinePrediction apsGasPipelinePrediction)
    {
    public int insertApsGasPipelinePrediction(ApsGasPipelinePrediction apsGasPipelinePrediction) {
        apsGasPipelinePrediction.setCreateTime(DateUtils.getNowDate());
        return apsGasPipelinePredictionMapper.insertApsGasPipelinePrediction(apsGasPipelinePrediction);
    }
@@ -78,8 +76,7 @@
     * @return 结果
     */
    @Override
    public int updateApsGasPipelinePrediction(ApsGasPipelinePrediction apsGasPipelinePrediction)
    {
    public int updateApsGasPipelinePrediction(ApsGasPipelinePrediction apsGasPipelinePrediction) {
        apsGasPipelinePrediction.setUpdateTime(DateUtils.getNowDate());
        return apsGasPipelinePredictionMapper.updateApsGasPipelinePrediction(apsGasPipelinePrediction);
    }
@@ -91,8 +88,7 @@
     * @return 结果
     */
    @Override
    public int deleteApsGasPipelinePredictionByIds(Long[] ids)
    {
    public int deleteApsGasPipelinePredictionByIds(Long[] ids) {
        return apsGasPipelinePredictionMapper.deleteApsGasPipelinePredictionByIds(ids);
    }
@@ -103,8 +99,7 @@
     * @return 结果
     */
    @Override
    public int deleteApsGasPipelinePredictionById(Long id)
    {
    public int deleteApsGasPipelinePredictionById(Long id) {
        return apsGasPipelinePredictionMapper.deleteApsGasPipelinePredictionById(id);
    }
@@ -146,9 +141,34 @@
                }
            }
            if (!list.isEmpty()) {
                apsGasPipelinePredictionMapper.deleteAll();
                List<Map<String, Object>> facCodeKey = apsGasPipelinePredictionMapper.selectByFacOrMaterial(
                        list.stream().map(ApsGasPipelinePrediction::getFactory).collect(Collectors.toSet()),
                        list.stream().map(ApsGasPipelinePrediction::getMaterialCode).collect(Collectors.toSet())
                );
                if (!facCodeKey.isEmpty()) {
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
                    Iterator<ApsGasPipelinePrediction> it = list.iterator();
                    while (it.hasNext()) {
                        ApsGasPipelinePrediction item = it.next();
                        String key = item.getFactory() + "##" + item.getMaterialCode() + "##" + sdf.format(item.getPredictDate());
                        facCodeKey.stream()
                                .filter(map -> map.get("key").equals(key))
                                .forEach(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);
                                    it.remove();
                                });
                    }
                }
                if (!list.isEmpty()) {
                apsGasPipelinePredictionMapper.insert(list);
            }
            }
            return list.size();
        }
        return 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;
@@ -153,8 +153,33 @@
                }
            }
            if (!list.isEmpty()) {
                Set<String> facCodeKey = apsMaterialProductGroupManagementMapper.selectByFacOrMaterial(
                        list.stream().map(ApsMaterialProductGroupManagement::getFactory).collect(Collectors.toSet()),
                        list.stream().map(ApsMaterialProductGroupManagement::getMaterialCode).collect(Collectors.toSet())
                );
                if (!facCodeKey.isEmpty()) {
                    Iterator<ApsMaterialProductGroupManagement> it = list.iterator();
                    while (it.hasNext()) {
                        ApsMaterialProductGroupManagement item = it.next();
                        String key = item.getFactory() + "##" + item.getMaterialCode();
                        if (facCodeKey.contains(key)) {
                            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();
        }
        return 0;