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/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/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/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/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>