仓库管理修改

liweidong
wusiyu 2 weeks ago
parent 593051e6f7
commit 30ad675641
  1. 2
      blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGlassCakeOutMapper.java
  2. 7
      blade-service/blade-wms/src/main/java/org/springblade/wms/mapper/StGlassCakeOutMapper.xml
  3. 72
      blade-service/blade-wms/src/main/java/org/springblade/wms/service/impl/StGlassCakeOutServiceImpl.java

@ -51,5 +51,7 @@ public interface StGlassCakeOutMapper extends BaseMapper<StGlassCakeOut> {
YieldOrder getByYoCode(String cardNo); YieldOrder getByYoCode(String cardNo);
YieldOrder getByYieldOrder(String yoCode); YieldOrder getByYieldOrder(String yoCode);
List<YieldOrder> getYieldOrderList(Long id, String yieldType);
} }

@ -216,4 +216,11 @@
WHERE YO_CODE = #{yoCode} WHERE YO_CODE = #{yoCode}
</select> </select>
<select id="getYieldOrderList" resultType="org.springblade.desk.order.pojo.entity.YieldOrder">
SELECT *
FROM MES_YIELD_ORDER
WHERE FATHER_YO_ID = #{id}
AND YIELD_TYPE = #{yieldType}
</select>
</mapper> </mapper>

@ -10,7 +10,6 @@ import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.BladeUser; import org.springblade.core.secure.BladeUser;
import org.springblade.desk.dashboard.feign.IPartClient; import org.springblade.desk.dashboard.feign.IPartClient;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartRelationEntity;
import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.wms.excel.StGlassCakeOutExcel; import org.springblade.wms.excel.StGlassCakeOutExcel;
import org.springblade.wms.mapper.StGlassCakeOutMapper; import org.springblade.wms.mapper.StGlassCakeOutMapper;
@ -26,7 +25,6 @@ import org.springframework.util.CollectionUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
/** /**
* @version 1.0 * @version 1.0
@ -86,41 +84,47 @@ public class StGlassCakeOutServiceImpl extends BaseServiceImpl<StGlassCakeOutMap
// throw new RuntimeException("工单【" + dto.getWoCode() + "】未查到生产订单ID"); // throw new RuntimeException("工单【" + dto.getWoCode() + "】未查到生产订单ID");
// } // }
YieldOrder yieldOrder = baseMapper.getByYieldOrder(dto.getYoCode()); YieldOrder faYieldOrder = baseMapper.getByYieldOrder(dto.getYoCode());
if (yieldOrder == null) { if (faYieldOrder == null) {
throw new RuntimeException("根据生产订单ID【" + dto.getYoCode() + "】未查询到生产订单信息"); throw new RuntimeException("根据生产订单ID【" + dto.getYoCode() + "】未查询到生产订单信息");
} }
DsPartEntity partOne = partClient.getPart(yieldOrder.getPartCode(),yieldOrder.getPartVersion()); List<YieldOrder> yieldOrderList = baseMapper.getYieldOrderList(faYieldOrder.getId(),"12003");
if (partOne == null) {
throw new RuntimeException("根据零件编号【" + yieldOrder.getPartCode() + "】未查询到零件信息");
}
List<DsPartRelationEntity> partRelationEntityList = partClient.getSubPart(partOne.getId());
List<DsPartEntity> glassCakePartList = new ArrayList<>(); List<DsPartEntity> glassCakePartList = new ArrayList<>();
if (!CollectionUtils.isEmpty(partRelationEntityList)) { for (YieldOrder order : yieldOrderList) {
// 步骤1:提取所有非空的childPartId并去重(避免null和重复ID,减少查询压力) DsPartEntity partOne = partClient.getPart(order.getPartCode(),order.getPartVersion());
List<Long> childPartIdList = partRelationEntityList.stream() if (partOne == null) {
.map(DsPartRelationEntity::getChildPartId) // 提取子件ID throw new RuntimeException("根据零件编号【" + order.getPartCode() + "】未查询到零件信息");
.filter(Objects::nonNull) // 过滤null的ID
.distinct() // 去重,避免重复查询
.collect(Collectors.toList());
// 步骤2:批量查询DS_PART表(一次SQL,性能最优)
if (!CollectionUtils.isEmpty(childPartIdList)) {
// 调用dsPartService的批量查询方法(根据ID列表查DS_PART)
List<DsPartEntity> allChildPartList = partClient.batchParts(childPartIdList);
// 步骤3:筛选出IS_CLASS_CAKE为"玻璃饼"的记录(核心过滤)
if (!CollectionUtils.isEmpty(allChildPartList)) {
glassCakePartList = allChildPartList.stream()
.filter(part -> "1".equals(part.getIsGlassCake()))
.collect(Collectors.toList());
}
} }
glassCakePartList.add(partOne);
} }
// List<DsPartRelationEntity> partRelationEntityList = partClient.getSubPart(partOne.getId());
//
// List<DsPartEntity> glassCakePartList = new ArrayList<>();
// if (!CollectionUtils.isEmpty(partRelationEntityList)) {
// // 步骤1:提取所有非空的childPartId并去重(避免null和重复ID,减少查询压力)
// List<Long> childPartIdList = partRelationEntityList.stream()
// .map(DsPartRelationEntity::getChildPartId) // 提取子件ID
// .filter(Objects::nonNull) // 过滤null的ID
// .distinct() // 去重,避免重复查询
// .collect(Collectors.toList());
//
// // 步骤2:批量查询DS_PART表(一次SQL,性能最优)
// if (!CollectionUtils.isEmpty(childPartIdList)) {
// // 调用dsPartService的批量查询方法(根据ID列表查DS_PART)
// List<DsPartEntity> allChildPartList = partClient.batchParts(childPartIdList);
//
// // 步骤3:筛选出IS_CLASS_CAKE为"玻璃饼"的记录(核心过滤)
// if (!CollectionUtils.isEmpty(allChildPartList)) {
// glassCakePartList = allChildPartList.stream()
// .filter(part -> "1".equals(part.getIsGlassCake()))
// .collect(Collectors.toList());
// }
// }
// }
// WorkOrder workOrder = new WorkOrder(); // WorkOrder workOrder = new WorkOrder();
// workOrder.setCardNo(dto.getCardNo()); // 卡号(与DTO的cardNo一致) // workOrder.setCardNo(dto.getCardNo()); // 卡号(与DTO的cardNo一致)
// workOrder.setWoCode("WO-202602110001"); // 工单号 // workOrder.setWoCode("WO-202602110001"); // 工单号
@ -189,7 +193,7 @@ public class StGlassCakeOutServiceImpl extends BaseServiceImpl<StGlassCakeOutMap
// continue; // continue;
// } // }
Double requireQty = yieldOrder.getYpQty()*glassCake.getQuota(); Double requireQty = faYieldOrder.getYpQty()*glassCake.getQuota();
System.out.println("玻璃饼编码:" + goodsCode + ",总需求:" + requireQty); System.out.println("玻璃饼编码:" + goodsCode + ",总需求:" + requireQty);
// =====================【校验】总可用库存是否足够 ===================== // =====================【校验】总可用库存是否足够 =====================
@ -253,11 +257,11 @@ public class StGlassCakeOutServiceImpl extends BaseServiceImpl<StGlassCakeOutMap
StGlassCakeOut preOutStock = new StGlassCakeOut(); StGlassCakeOut preOutStock = new StGlassCakeOut();
// 关联玻璃饼信息 // 关联玻璃饼信息
// preOutStock.setWoCode(workOrder.getWoCode()); // preOutStock.setWoCode(workOrder.getWoCode());
preOutStock.setYoCode(yieldOrder.getYoCode()); preOutStock.setYoCode(faYieldOrder.getYoCode());
preOutStock.setCardNo(dto.getCardNo()); preOutStock.setCardNo(dto.getCardNo());
preOutStock.setQuantity(yieldOrder.getYpQty()); preOutStock.setQuantity(faYieldOrder.getYpQty());
preOutStock.setPartCode(partOne.getPartCode()); preOutStock.setPartCode(faYieldOrder.getPartCode());
preOutStock.setPartName(partOne.getPartName()); preOutStock.setPartName(faYieldOrder.getPartName());
preOutStock.setOutCode(stStockInoutRecordService.generateCode()); preOutStock.setOutCode(stStockInoutRecordService.generateCode());
preOutStock.setRequireQty(requireQty); preOutStock.setRequireQty(requireQty);

Loading…
Cancel
Save