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;