仓库管理修改

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 getByYieldOrder(String yoCode);
List<YieldOrder> getYieldOrderList(Long id, String yieldType);
}

@ -216,4 +216,11 @@
WHERE YO_CODE = #{yoCode}
</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>

@ -10,7 +10,6 @@ import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.BladeUser;
import org.springblade.desk.dashboard.feign.IPartClient;
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.wms.excel.StGlassCakeOutExcel;
import org.springblade.wms.mapper.StGlassCakeOutMapper;
@ -26,7 +25,6 @@ import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
/**
* @version 1.0
@ -86,41 +84,47 @@ public class StGlassCakeOutServiceImpl extends BaseServiceImpl<StGlassCakeOutMap
// throw new RuntimeException("工单【" + dto.getWoCode() + "】未查到生产订单ID");
// }
YieldOrder yieldOrder = baseMapper.getByYieldOrder(dto.getYoCode());
if (yieldOrder == null) {
YieldOrder faYieldOrder = baseMapper.getByYieldOrder(dto.getYoCode());
if (faYieldOrder == null) {
throw new RuntimeException("根据生产订单ID【" + dto.getYoCode() + "】未查询到生产订单信息");
}
DsPartEntity partOne = partClient.getPart(yieldOrder.getPartCode(),yieldOrder.getPartVersion());
if (partOne == null) {
throw new RuntimeException("根据零件编号【" + yieldOrder.getPartCode() + "】未查询到零件信息");
}
List<DsPartRelationEntity> partRelationEntityList = partClient.getSubPart(partOne.getId());
List<YieldOrder> yieldOrderList = baseMapper.getYieldOrderList(faYieldOrder.getId(),"12003");
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());
}
for (YieldOrder order : yieldOrderList) {
DsPartEntity partOne = partClient.getPart(order.getPartCode(),order.getPartVersion());
if (partOne == null) {
throw new RuntimeException("根据零件编号【" + order.getPartCode() + "】未查询到零件信息");
}
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.setCardNo(dto.getCardNo()); // 卡号(与DTO的cardNo一致)
// workOrder.setWoCode("WO-202602110001"); // 工单号
@ -189,7 +193,7 @@ public class StGlassCakeOutServiceImpl extends BaseServiceImpl<StGlassCakeOutMap
// continue;
// }
Double requireQty = yieldOrder.getYpQty()*glassCake.getQuota();
Double requireQty = faYieldOrder.getYpQty()*glassCake.getQuota();
System.out.println("玻璃饼编码:" + goodsCode + ",总需求:" + requireQty);
// =====================【校验】总可用库存是否足够 =====================
@ -253,11 +257,11 @@ public class StGlassCakeOutServiceImpl extends BaseServiceImpl<StGlassCakeOutMap
StGlassCakeOut preOutStock = new StGlassCakeOut();
// 关联玻璃饼信息
// preOutStock.setWoCode(workOrder.getWoCode());
preOutStock.setYoCode(yieldOrder.getYoCode());
preOutStock.setYoCode(faYieldOrder.getYoCode());
preOutStock.setCardNo(dto.getCardNo());
preOutStock.setQuantity(yieldOrder.getYpQty());
preOutStock.setPartCode(partOne.getPartCode());
preOutStock.setPartName(partOne.getPartName());
preOutStock.setQuantity(faYieldOrder.getYpQty());
preOutStock.setPartCode(faYieldOrder.getPartCode());
preOutStock.setPartName(faYieldOrder.getPartName());
preOutStock.setOutCode(stStockInoutRecordService.generateCode());
preOutStock.setRequireQty(requireQty);

Loading…
Cancel
Save