PDA上架修改
This commit is contained in:
+93
-9
@@ -20,6 +20,8 @@ import com.mhd.wms.domain.shelfMaterialDetail.repository.mapper.ShelfMaterialDet
|
||||
import com.mhd.wms.domain.shelfMaterialDetail.repository.po.ShelfMaterialDetailPO;
|
||||
import com.mhd.wms.domain.shelfMaterialDetail.repository.todo.ShelfMaterialDetailDO;
|
||||
import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO;
|
||||
import com.mhd.common.core.utils.StringUtils;
|
||||
import com.mhd.system.api.domain.BatchDetailFeignPO;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -66,19 +68,19 @@ public class ShelfMaterialDetailImpl extends ServiceImpl<ShelfMaterialDetailMapp
|
||||
public List<ShelfMaterialDetailPO> queryListChildren(ShelfMaterialDetailDO shelfMaterialDetailDO) {
|
||||
List<ShelfMaterialDetailPO> shelfMaterialDetailPOList = shelfMaterialDetailMapper.queryList(shelfMaterialDetailDO);
|
||||
|
||||
//回显带上更多属性值(批次标签)
|
||||
//回显带上更多属性值(批次标签):根据物料绑定的批次属性动态显示,与收货一致
|
||||
shelfMaterialDetailPOList.forEach(shelfMaterialDetailPO -> {
|
||||
MaterialMoreDetailDO materialMoreDetailDO = new MaterialMoreDetailDO();
|
||||
materialMoreDetailDO.setMaterialDetailUniqueId(shelfMaterialDetailPO.getUniqueId());
|
||||
List<MaterialMoreDetailPO> materialMoreDetailList = IMaterialMoreDetailService.queryList(materialMoreDetailDO);
|
||||
//如果上架单的物料批属性还没存入值,那么需要从批属性表获取
|
||||
AjaxResult ajaxResult = null;
|
||||
if (CollectionUtils.isEmpty(materialMoreDetailList)) {
|
||||
ajaxResult = systemServiceFeign.getBatchDetailListByMaterialBaseInfoId(shelfMaterialDetailPO.getMaterialBaseInfoId());
|
||||
AjaxResult ajaxResult = systemServiceFeign.getBatchDetailListByMaterialBaseInfoId(shelfMaterialDetailPO.getMaterialBaseInfoId());
|
||||
if (ajaxResult != null && "200".equals(String.valueOf(ajaxResult.get("code")))) {
|
||||
materialMoreDetailList = JSON.parseArray(JSONObject.toJSONString(ajaxResult.get("data")), MaterialMoreDetailPO.class);
|
||||
List<BatchDetailFeignPO> batchList = JSON.parseArray(JSONObject.toJSONString(ajaxResult.get("data")), BatchDetailFeignPO.class);
|
||||
materialMoreDetailList = filterAndConvertToMaterialMoreDetail(batchList);
|
||||
}
|
||||
}
|
||||
fillAttributeValueFromShelfMaterialDetail(shelfMaterialDetailPO, materialMoreDetailList);
|
||||
shelfMaterialDetailPO.setMaterialMoreDetailList(materialMoreDetailList);
|
||||
});
|
||||
|
||||
@@ -92,14 +94,14 @@ public class ShelfMaterialDetailImpl extends ServiceImpl<ShelfMaterialDetailMapp
|
||||
MaterialMoreDetailDO materialMoreDetailDO = new MaterialMoreDetailDO();
|
||||
materialMoreDetailDO.setMaterialDetailUniqueId(childrenDetailPO.getUniqueId());
|
||||
List<MaterialMoreDetailPO> materialMoreDetailList = IMaterialMoreDetailService.queryList(materialMoreDetailDO);
|
||||
//如果上架单的物料批属性还没存入值,那么需要从批属性表获取
|
||||
AjaxResult ajaxResult = null;
|
||||
if (CollectionUtils.isEmpty(materialMoreDetailList)) {
|
||||
ajaxResult = systemServiceFeign.getBatchDetailListByMaterialBaseInfoId(childrenDetailPO.getMaterialBaseInfoId());
|
||||
AjaxResult ajaxResult = systemServiceFeign.getBatchDetailListByMaterialBaseInfoId(childrenDetailPO.getMaterialBaseInfoId());
|
||||
if (ajaxResult != null && "200".equals(String.valueOf(ajaxResult.get("code")))) {
|
||||
materialMoreDetailList = JSON.parseArray(JSONObject.toJSONString(ajaxResult.get("data")), MaterialMoreDetailPO.class);
|
||||
List<BatchDetailFeignPO> batchList = JSON.parseArray(JSONObject.toJSONString(ajaxResult.get("data")), BatchDetailFeignPO.class);
|
||||
materialMoreDetailList = filterAndConvertToMaterialMoreDetail(batchList);
|
||||
}
|
||||
}
|
||||
fillAttributeValueFromShelfMaterialDetail(childrenDetailPO, materialMoreDetailList);
|
||||
childrenDetailPO.setMaterialMoreDetailList(materialMoreDetailList);
|
||||
});
|
||||
materialDetailPO.setChildren(children);
|
||||
@@ -107,6 +109,88 @@ public class ShelfMaterialDetailImpl extends ServiceImpl<ShelfMaterialDetailMapp
|
||||
return receiptMaterialDetailPOParentList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 过滤 isDisplay=1 的批次属性并转换为 MaterialMoreDetailPO,与收货/PC 端一致
|
||||
*/
|
||||
private List<MaterialMoreDetailPO> filterAndConvertToMaterialMoreDetail(List<BatchDetailFeignPO> batchList) {
|
||||
List<MaterialMoreDetailPO> result = new ArrayList<>();
|
||||
if (CollectionUtils.isEmpty(batchList)) {
|
||||
return result;
|
||||
}
|
||||
for (BatchDetailFeignPO po : batchList) {
|
||||
if (po.getIsDisplay() == null || po.getIsDisplay() != 1) {
|
||||
continue;
|
||||
}
|
||||
MaterialMoreDetailPO mpo = new MaterialMoreDetailPO();
|
||||
mpo.setBatchId(po.getBatchId());
|
||||
mpo.setBatchDetailId(po.getBatchDetailId());
|
||||
mpo.setBatchLabels(po.getBatchLabels());
|
||||
mpo.setInputControl(po.getInputControl());
|
||||
mpo.setAttributeFormat(po.getAttributeFormat());
|
||||
mpo.setAttributeOption(po.getAttributeOption());
|
||||
result.add(mpo);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 从上架明细中获取收货数量、重量、体积、面积、批次属性值并填充到 materialMoreDetailList 的 attributeValue
|
||||
*/
|
||||
private void fillAttributeValueFromShelfMaterialDetail(ShelfMaterialDetailPO shelfMaterialDetailPO, List<MaterialMoreDetailPO> materialMoreDetailList) {
|
||||
if (CollectionUtils.isEmpty(materialMoreDetailList)) {
|
||||
return;
|
||||
}
|
||||
for (MaterialMoreDetailPO materialMoreDetail : materialMoreDetailList) {
|
||||
String attributeOption = materialMoreDetail.getAttributeOption();
|
||||
String batchLabels = materialMoreDetail.getBatchLabels();
|
||||
if (materialMoreDetail.getAttributeValue() != null && !materialMoreDetail.getAttributeValue().trim().isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
String refVal = null;
|
||||
if ("InvoiceNo".equalsIgnoreCase(attributeOption) || "Invoice No".equalsIgnoreCase(batchLabels) || "发票号".equals(batchLabels)) {
|
||||
refVal = shelfMaterialDetailPO.getExtAttr1();
|
||||
} else if ("BatchRefNo".equalsIgnoreCase(attributeOption) || "Batch Ref NO's".equalsIgnoreCase(batchLabels) || "批次参考号".equals(batchLabels)) {
|
||||
refVal = shelfMaterialDetailPO.getBatchRefNo();
|
||||
} else if ("SheetRefNo".equalsIgnoreCase(attributeOption) || "Sheet Ref NO's".equalsIgnoreCase(batchLabels) || "单据参考号".equals(batchLabels)) {
|
||||
refVal = shelfMaterialDetailPO.getSheetRefNo();
|
||||
} else if ("BoxPalletNo".equalsIgnoreCase(attributeOption) || "Box No./Pallet No.".equalsIgnoreCase(batchLabels) || "箱号/卡板号".equals(batchLabels)) {
|
||||
refVal = shelfMaterialDetailPO.getBoxPalletNo();
|
||||
}
|
||||
if (refVal != null) {
|
||||
materialMoreDetail.setAttributeValue(refVal);
|
||||
} else if (StringUtils.isNotBlank(batchLabels)) {
|
||||
String val = null;
|
||||
switch (batchLabels.trim()) {
|
||||
case "总净重":
|
||||
case "净重(KG)":
|
||||
case "净重":
|
||||
val = shelfMaterialDetailPO.getTotalNetWeight() != null ? shelfMaterialDetailPO.getTotalNetWeight().toString() : null;
|
||||
break;
|
||||
case "总毛重":
|
||||
case "毛重(KG)":
|
||||
case "毛重":
|
||||
val = shelfMaterialDetailPO.getTotalGrossWeight() != null ? shelfMaterialDetailPO.getTotalGrossWeight().toString() : null;
|
||||
break;
|
||||
case "总体积":
|
||||
case "体积(CBM)":
|
||||
case "体积":
|
||||
val = shelfMaterialDetailPO.getTotalVolume() != null ? shelfMaterialDetailPO.getTotalVolume().toString() : null;
|
||||
break;
|
||||
case "总面积":
|
||||
case "面积(SQM)":
|
||||
case "面积":
|
||||
val = shelfMaterialDetailPO.getTotalArea() != null ? shelfMaterialDetailPO.getTotalArea().toString() : null;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (val != null) {
|
||||
materialMoreDetail.setAttributeValue(val);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private List<ShelfMaterialDetailPO> getChildren(Long parentUniqueId, List<ShelfMaterialDetailPO> shelfMaterialDetailPOList, Integer maxLevel){
|
||||
List<ShelfMaterialDetailPO> childrenCityList = shelfMaterialDetailPOList.stream().filter(materialDetailPO -> parentUniqueId.equals(materialDetailPO.getParentUniqueId())).collect(Collectors.toList());
|
||||
if (!CollectionUtils.isEmpty(childrenCityList)){
|
||||
|
||||
+2
-1
@@ -985,7 +985,8 @@ public class StockReceiptOrderDomainService {
|
||||
//获取收货单明细
|
||||
ReceiptMaterialDetailDO receiptMaterialDetailDO = new ReceiptMaterialDetailDO();
|
||||
receiptMaterialDetailDO.setReceiptOrderNumber(stockReceiptOrderPO.getReceiptOrderNumber());
|
||||
List<ReceiptMaterialDetailPO> receiptMaterialDetailPOS = receiptMaterialDetailService.queryList(receiptMaterialDetailDO);
|
||||
// 使用 queryListChildren 获取父子结构,避免重复添加(只添加 level 1 主项,主项 receiptQuantity 已含子项汇总)
|
||||
List<ReceiptMaterialDetailPO> receiptMaterialDetailPOS = receiptMaterialDetailService.queryListChildren(receiptMaterialDetailDO);
|
||||
//上架单明细集合
|
||||
List<ShelfMaterialDetailDO> shelfMaterialDetailDOList = new ArrayList<>();
|
||||
// 批量查询入库单明细,用于获取净重、毛重、体积、面积等字段
|
||||
|
||||
Reference in New Issue
Block a user