Merge remote-tracking branch 'origin/dev_WMS20260401' into dev_WMS20260401

This commit is contained in:
王奎兴
2026-06-04 19:01:52 +08:00
2 changed files with 47 additions and 1 deletions
@@ -23,6 +23,8 @@ import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
import com.mhd.system.api.model.LoginUser;
import com.mhd.wms.application.service.materialBaseInfo.MaterialBaseInfoApplicationService;
import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBaseInfoPO;
import com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail;
import com.mhd.wms.domain.inMaterialDetail.repository.facade.IInMaterialDetailService;
import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO;
import com.mhd.wms.domain.pickingMaterialDetail.repository.facade.IPickingMaterialDetailService;
import com.mhd.wms.domain.pickingMaterialDetail.repository.po.PickingMaterialDetailPO;
@@ -89,6 +91,8 @@ public class PickingOrderApplicationService {
private MaterialBaseInfoApplicationService materialBaseInfoApplicationService;
@Autowired
private IPickingMaterialDetailService pickingMaterialDetailService;
@Autowired
private IInMaterialDetailService inMaterialDetailService;
private static final String PUSH_API_URL = "http://10.33.0.100/nagu-erp-api/transfer/pushData";
@@ -192,9 +196,47 @@ public class PickingOrderApplicationService {
pickingOrderPO.setMaterialQuantity(0);
}
}
// ========== 批量查保管明细表补规格型号 ==========
Set<String> inOrderNumberSet = new HashSet<>();
Set<Long> materialBaseInfoIdSet = new HashSet<>();
for (List<PickingMaterialDetailPO> details : materialDetailsByOrderNumber.values()) {
for (PickingMaterialDetailPO d : details) {
if (StringUtils.isNotBlank(d.getInOrderNumber()) && d.getMaterialBaseInfoId() != null) {
inOrderNumberSet.add(d.getInOrderNumber());
materialBaseInfoIdSet.add(d.getMaterialBaseInfoId());
}
}
}
if (!inOrderNumberSet.isEmpty() && !materialBaseInfoIdSet.isEmpty()) {
LambdaQueryWrapper<InMaterialDetail> inWrapper = new LambdaQueryWrapper<>();
inWrapper.in(InMaterialDetail::getInOrderNumber, inOrderNumberSet);
inWrapper.in(InMaterialDetail::getMaterialBaseInfoId, materialBaseInfoIdSet);
inWrapper.eq(InMaterialDetail::getDelFlag, 1);
List<InMaterialDetail> inDetailList = inMaterialDetailService.list(inWrapper);
// 按 inOrderNumber + materialBaseInfoId 分组
Map<String, Map<Long, List<InMaterialDetail>>> grouped = inDetailList.stream()
.collect(Collectors.groupingBy(InMaterialDetail::getInOrderNumber,
Collectors.groupingBy(InMaterialDetail::getMaterialBaseInfoId)));
// 回填到拣货单头
for (PickingOrderPO po : pickingOrderPOList) {
List<PickingMaterialDetailPO> details = materialDetailsByOrderNumber.get(po.getPickingOrderNumber());
if (CollectionUtils.isEmpty(details)) continue;
PickingMaterialDetailPO first = details.get(0);
Map<Long, List<InMaterialDetail>> byBaseId = grouped.get(first.getInOrderNumber());
if (byBaseId != null) {
List<InMaterialDetail> list = byBaseId.get(first.getMaterialBaseInfoId());
if (list != null && !list.isEmpty()) {
po.setSpecificationModel(list.get(0).getSpecificationModel());
}
}
}
}
// ========== 批量查保管明细表补规格型号结束 ==========
}
}
return pickingOrderPOList;
}
@@ -162,4 +162,8 @@ public class PickingOrderPO extends StockOutOrderBasePO {
@ApiModelProperty("是否报关")
private String needDeclareFlag;
@ApiModelProperty("规格型号")
@Excel(name = "规格型号")
private String specificationModel;
}