物流改写

liweidong
绫Umbrella 2 weeks ago
parent d9eed7cb2a
commit 35620e3312
  1. 87
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/IOrderBoxServiceImpl.java

@ -1050,10 +1050,7 @@ public class IOrderBoxServiceImpl implements IOrderBoxService {
// 计算总重量 & 查询订单列表
BigDecimal totalWeight = calculateOrderCardNoTotalWeight(cardNoList);
List<YieldOrder> orderList = yieldOrderService.list(
Wrappers.lambdaQuery(YieldOrder.class)
.in(YieldOrder::getCardNo, cardNoList)
);
List<YieldOrder> orderList = queryYieldOrders(cardNoList);
// 组装返回对象
BoxbarcodeDetailsVO detailsVO = new BoxbarcodeDetailsVO();
@ -1071,10 +1068,26 @@ public class IOrderBoxServiceImpl implements IOrderBoxService {
//判断是否是镀后库作业中心
if (DistinguishRegionsEnum.includeByWcName(workCenter.getWcName())) {
List<YieldOrder> yieldOrderList = yieldOrderService.list(new LambdaQueryWrapper<YieldOrder>().eq(YieldOrder::getCardNo, orderList.get(0).getCardNo()));
String code = DistinguishRegionsEnum.wcNameByCode(workCenter.getWcName());
String logisticsAnagementRegion = DictCache.getValue(code, yieldOrderList.get(0).getUseDept());
detailsVO.setStationRegion(logisticsAnagementRegion);
return R.data(detailsVO);
if (yieldOrderList!=null&&yieldOrderList.size()!=0) {
String code = DistinguishRegionsEnum.wcNameByCode(workCenter.getWcName());
String logisticsAnagementRegion = DictCache.getValue(code, yieldOrderList.get(0).getUseDept());
if (!logisticsAnagementRegion.isEmpty()) {
detailsVO.setStationRegion(logisticsAnagementRegion);
return R.data(detailsVO);
}
}
List<PrYieldOrder> yieldOrderList1 = prYieldOrderService.list(new LambdaQueryWrapper<PrYieldOrder>().eq(PrYieldOrder::getCardNo, orderList.get(0).getCardNo()));
if (yieldOrderList1!=null&&yieldOrderList1.size()!=0) {
String code = DistinguishRegionsEnum.wcNameByCode(workCenter.getWcName());
String logisticsAnagementRegion = DictCache.getValue(code, yieldOrderList1.get(0).getUseDept());
if (!logisticsAnagementRegion.isEmpty()) {
detailsVO.setStationRegion(logisticsAnagementRegion);
return R.data(detailsVO);
}
}
}
// 设置工位区域
List<StationCenter> stationCenterList = stationCenterService.list(
@ -1096,6 +1109,64 @@ public class IOrderBoxServiceImpl implements IOrderBoxService {
return R.data(detailsVO);
}
/**
* 查询订单列表先查YieldOrder查不到的再去查PrYieldOrder并转换
*
* @param cardNoList 流程卡号列表
* @return 合并后的YieldOrder列表
*/
private List<YieldOrder> queryYieldOrders(List<String> cardNoList) {
// 1. 查询YieldOrder
List<YieldOrder> yieldOrderList = yieldOrderService.list(
Wrappers.lambdaQuery(YieldOrder.class)
.in(YieldOrder::getCardNo, cardNoList)
);
// 2. 找到未查询到的cardNo
Set<String> foundCardNos = yieldOrderList.stream()
.map(YieldOrder::getCardNo)
.collect(Collectors.toSet());
List<String> missingCardNos = cardNoList.stream()
.filter(cardNo -> !foundCardNos.contains(cardNo))
.collect(Collectors.toList());
// 3. 如果有缺失的,查询PrYieldOrder并转换
if (!missingCardNos.isEmpty()) {
List<PrYieldOrder> prYieldOrderList = prYieldOrderService.list(
Wrappers.lambdaQuery(PrYieldOrder.class)
.in(PrYieldOrder::getCardNo, missingCardNos)
);
// 转换为YieldOrder
List<YieldOrder> convertedList = prYieldOrderList.stream()
.map(this::convertToYieldOrder)
.collect(Collectors.toList());
// 4. 合并结果
yieldOrderList.addAll(convertedList);
}
return yieldOrderList;
}
/**
* 将PrYieldOrder转换为YieldOrder
*
* @param prYieldOrder 生产报工订单
* @return YieldOrder
*/
private YieldOrder convertToYieldOrder(PrYieldOrder prYieldOrder) {
YieldOrder yieldOrder = new YieldOrder();
// 映射字段:流程卡号、车间订单号、零件号、零件名称
yieldOrder.setCardNo(prYieldOrder.getCardNo());
yieldOrder.setYoCode(prYieldOrder.getYoCode());
yieldOrder.setPartCode(prYieldOrder.getPartCode());
yieldOrder.setPartName(prYieldOrder.getPartName());
yieldOrder.setActualWeighing(new BigDecimal(0));
// 其他字段保持默认null
return yieldOrder;
}
@Override
public R getStationNameBoxBarcode(String stationCode) {
R stationR = stationService.getStationName(stationCode);

Loading…
Cancel
Save