inspect-server/src/main/java/com/ruoyi/inspect/dto/ReliabilityPlanProductDto.java
@@ -5,4 +5,6 @@ @Data public class ReliabilityPlanProductDto extends ReliabilityPlanProduct { private String itemType; } inspect-server/src/main/java/com/ruoyi/inspect/dto/ReliabilityPlanProductItemDto.java
@@ -5,5 +5,5 @@ @Data public class ReliabilityPlanProductItemDto extends ReliabilityPlanProductItem { private Integer rePlanId; private Long rePlanId; } inspect-server/src/main/java/com/ruoyi/inspect/mapper/ReliabilityPlanProductItemMapper.java
@@ -1,7 +1,7 @@ package com.ruoyi.inspect.mapper; import com.ruoyi.framework.mybatis_config.MyBaseMapper; import com.ruoyi.inspect.pojo.ReliabilityPlanProductItem; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -15,13 +15,13 @@ * @author ld * @since 2025-04-01 05:12:38 */ public interface ReliabilityPlanProductItemMapper extends BaseMapper<ReliabilityPlanProductItem> { public interface ReliabilityPlanProductItemMapper extends MyBaseMapper<ReliabilityPlanProductItem> { List<Map<String, Object>> itemList(@Param("planId") Integer rePlanId); List<Map<String, Object>> itemList(@Param("planId") Long rePlanId); List<Map<String, Object>> codeList(@Param("planId") Integer rePlanId); List<Map<String, Object>> codeList(@Param("planId") Long rePlanId); List<Map<String, Object>> materialItem(@Param("planId") Integer rePlanId); List<Map<String, Object>> materialItem(@Param("planId") Long rePlanId); List<Map<String, Object>> materialCodeList(@Param("planId") Integer rePlanId); List<Map<String, Object>> materialCodeList(@Param("planId") Long rePlanId); } inspect-server/src/main/java/com/ruoyi/inspect/pojo/ReliabilityPlanProduct.java
@@ -24,7 +24,7 @@ public class ReliabilityPlanProduct implements Serializable { @TableId(value = "id", type = IdType.AUTO) private Integer id; private Long id; @ApiModelProperty("产品名称") private String productName; inspect-server/src/main/java/com/ruoyi/inspect/pojo/ReliabilityPlanProductItem.java
@@ -26,7 +26,7 @@ private static final long serialVersionUID = 1L; @TableId(value = "id", type = IdType.AUTO) private Integer id; private Long id; @ApiModelProperty("检验项") private String inspectionItem; @@ -41,7 +41,7 @@ private String remark; @ApiModelProperty("关联可靠性计划产品id") private Integer planId; private Long planId; /** * 成品/原辅材 */ inspect-server/src/main/java/com/ruoyi/inspect/service/impl/ReliabilityPlanProductItemServiceImpl.java
@@ -31,75 +31,9 @@ @Override public List<ReliabilityPlanProductItem> selectProductItem(ReliabilityPlanProductItemDto reliabilityPlanProductItemDto) { // 从数据库中查询新的数据 List<Map<String, Object>> maps = reliabilityPlanProductItemMapper.itemList(reliabilityPlanProductItemDto.getRePlanId()); List<ReliabilityPlanProductItem> newItemList = new ArrayList<>(); for (Map<String, Object> map : maps) { ReliabilityPlanProductItem item = new ReliabilityPlanProductItem(); item.setInspectionItem((String) map.get("inspectionItem")); item.setStandard((String) map.get("standard")); item.setFrequency((String) map.get("frequency")); item.setPlanId(reliabilityPlanProductItemDto.getRePlanId()); item.setType(reliabilityPlanProductItemDto.getType()); newItemList.add(item); } // 查询数据库中已存在的数据 List<ReliabilityPlanProductItem> existingItemList = reliabilityPlanProductItemMapper.selectList( new LambdaQueryWrapper<ReliabilityPlanProductItem>() return reliabilityPlanProductItemMapper.selectList(new LambdaQueryWrapper<ReliabilityPlanProductItem>() .eq(ReliabilityPlanProductItem::getPlanId, reliabilityPlanProductItemDto.getRePlanId()) .eq(ReliabilityPlanProductItem::getType, reliabilityPlanProductItemDto.getType()) ); // 将已存在的数据转换为以 inspectionItem_planId_type 为键的 Map Map<String, ReliabilityPlanProductItem> existingItemMap = new HashMap<>(); for (ReliabilityPlanProductItem item : existingItemList) { StringBuilder keyBuilder = new StringBuilder(); keyBuilder.append(item.getInspectionItem()) .append("_") .append(item.getPlanId()) .append("_") .append(item.getType()); existingItemMap.put(keyBuilder.toString(), item); } List<ReliabilityPlanProductItem> itemsToUpdate = new ArrayList<>(); List<ReliabilityPlanProductItem> itemsToInsert = new ArrayList<>(); // 对比新数据和已存在的数据,区分出需要更新和需要新增的记录 for (ReliabilityPlanProductItem newItem : newItemList) { StringBuilder keyBuilder = new StringBuilder(); keyBuilder.append(newItem.getInspectionItem()) .append("_") .append(newItem.getPlanId()) .append("_") .append(newItem.getType()); String key = keyBuilder.toString(); ReliabilityPlanProductItem existingItem = existingItemMap.get(key); if (existingItem != null) { // 存在则更新 existingItem.setStandard(newItem.getStandard()); existingItem.setFrequency(newItem.getFrequency()); itemsToUpdate.add(existingItem); } else { // 不存在则新增 itemsToInsert.add(newItem); } } // 执行更新和新增操作 if (!itemsToUpdate.isEmpty()) { saveOrUpdateBatch(itemsToUpdate); } if (!itemsToInsert.isEmpty()) { saveBatch(itemsToInsert); } // 可以考虑在前面的查询中保留需要的结果,避免再次查询 return existingItemList.stream() .filter(item -> item.getPlanId().equals(reliabilityPlanProductItemDto.getRePlanId()) && item.getType().equals(reliabilityPlanProductItemDto.getType())) .collect(Collectors.toList()); .eq(ReliabilityPlanProductItem::getType, reliabilityPlanProductItemDto.getType())); } @Override inspect-server/src/main/java/com/ruoyi/inspect/service/impl/ReliabilityPlanProductServiceImpl.java
@@ -1,17 +1,22 @@ package com.ruoyi.inspect.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.utils.QueryWrappers; import com.ruoyi.inspect.dto.ReliabilityPlanProductDto; import com.ruoyi.inspect.mapper.ReliabilityPlanProductItemMapper; import com.ruoyi.inspect.pojo.ReliabilityPlanProduct; import com.ruoyi.inspect.mapper.ReliabilityPlanProductMapper; import com.ruoyi.inspect.pojo.ReliabilityPlanProductItem; import com.ruoyi.inspect.service.ReliabilityPlanProductService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import java.util.Objects; import java.util.*; /** * <p> @@ -26,6 +31,7 @@ public class ReliabilityPlanProductServiceImpl extends ServiceImpl<ReliabilityPlanProductMapper, ReliabilityPlanProduct> implements ReliabilityPlanProductService { private ReliabilityPlanProductMapper reliabilityPlanProductMapper; private ReliabilityPlanProductItemMapper reliabilityPlanProductItemMapper; @Override public IPage<ReliabilityPlanProduct> selectProduct(Page page, ReliabilityPlanProductDto reliabilityPlanProductDto) { @@ -34,17 +40,48 @@ @Override public int addOrUpdateProduct(ReliabilityPlanProductDto reliabilityPlanProductDto) { int i; if (Objects.isNull(reliabilityPlanProductDto.getId())) { reliabilityPlanProductDto.setState(0); return reliabilityPlanProductMapper.insert(reliabilityPlanProductDto); i = reliabilityPlanProductMapper.insert(reliabilityPlanProductDto); } else { // 审核状态 0.待提交1.待审核2.通过3.不通过 // 审核状态 0.待提交1.待审核2.通过3.不通过 int state = reliabilityPlanProductDto.getState(); if (state != 0 && state != 1 && state != 2) { reliabilityPlanProductDto.setState(3); } return reliabilityPlanProductMapper.updateById(reliabilityPlanProductDto); i = reliabilityPlanProductMapper.updateById(reliabilityPlanProductDto); } if (i > 0) { Long id = reliabilityPlanProductDto.getId(); // 从数据库中查询新的数据 List<Map<String, Object>> maps = reliabilityPlanProductItemMapper.itemList(id); List<ReliabilityPlanProductItem> newItemList = new ArrayList<>(); for (Map<String, Object> map : maps) { ReliabilityPlanProductItem item = new ReliabilityPlanProductItem(); item.setInspectionItem((String) map.get("inspectionItem")); item.setStandard((String) map.get("standard")); item.setFrequency((String) map.get("frequency")); item.setPlanId(id); item.setType(reliabilityPlanProductDto.getItemType()); newItemList.add(item); } // 查询数据库中已存在的数据 List<ReliabilityPlanProductItem> existingItemList = reliabilityPlanProductItemMapper.selectList( new LambdaQueryWrapper<ReliabilityPlanProductItem>() .eq(ReliabilityPlanProductItem::getPlanId, id) .eq(ReliabilityPlanProductItem::getType, reliabilityPlanProductDto.getItemType()) ); if (!existingItemList.isEmpty()) { // 如果有数据,执行删除操作 reliabilityPlanProductItemMapper.delete(new LambdaUpdateWrapper<ReliabilityPlanProductItem>() .eq(ReliabilityPlanProductItem::getPlanId, id) .eq(ReliabilityPlanProductItem::getType, reliabilityPlanProductDto.getItemType()) ); } reliabilityPlanProductItemMapper.insertBatchSomeColumn(newItemList); } return i; } @Override