PDA移位管理批次属性查询修改,库存查询修改
This commit is contained in:
+212
@@ -16,6 +16,12 @@ import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskService;
|
||||
import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO;
|
||||
import com.mhd.wms.domain.inventoryStandingDetail.repository.facade.IInventoryStandingDetailService;
|
||||
import com.mhd.wms.domain.inventoryStandingDetail.repository.todo.InventoryStandingDetailDO;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.mhd.common.core.web.domain.AjaxResult;
|
||||
import com.mhd.common.core.utils.StringUtils;
|
||||
import com.mhd.system.api.SystemServiceFeign;
|
||||
import com.mhd.system.api.domain.BatchDetailFeignPO;
|
||||
import com.mhd.wms.domain.materialInventory.entity.MaterialInventory;
|
||||
import com.mhd.wms.domain.materialInventory.repository.facade.IMaterialInventoryService;
|
||||
import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryDO;
|
||||
@@ -68,6 +74,8 @@ public class ShiftManageDomainService {
|
||||
private IInventoryStandingDetailService inventoryStandingDetailService;
|
||||
@Autowired
|
||||
private IDeliveTaskService deliveTaskService;
|
||||
@Autowired
|
||||
private SystemServiceFeign systemServiceFeign;
|
||||
|
||||
|
||||
/**
|
||||
@@ -95,6 +103,10 @@ public class ShiftManageDomainService {
|
||||
Map<Long, List<OutMaterialDetailSerialNumberPO>> inMaterialDetailSerialNumberMap = outMaterialDetailSerialNumberPOList.stream()
|
||||
.collect(Collectors.groupingBy(OutMaterialDetailSerialNumberPO::getMaterialDetailUniqueId));
|
||||
shiftMaterialDetailPOList.forEach(shiftMaterialDetailPO -> {
|
||||
// PDA移位页面:父级也填充批次属性、净重、毛重、面积、体积,保证顶层结构有值
|
||||
fillMaterialMoreDetailForShiftDetail(shiftMaterialDetailPO);
|
||||
// 填充 totalNetWeight 等,供 PDA 表单区(移入数量、移入库位、容器旁)显示
|
||||
fillTotalWeightVolumeArea(shiftMaterialDetailPO);
|
||||
List<ShiftMaterialDetailPO> shiftMaterialDetailPOChildrenNowList = new ArrayList<>();
|
||||
ShiftMaterialDetailPO shiftMaterialDetailPOChildrenNow = new ShiftMaterialDetailPO();
|
||||
BeanUtils.copyProperties(shiftMaterialDetailPO, shiftMaterialDetailPOChildrenNow, "children");
|
||||
@@ -104,10 +116,15 @@ public class ShiftManageDomainService {
|
||||
}else {
|
||||
shiftMaterialDetailPOChildrenNow.setMaterialDetailSerialNumberList(new ArrayList<>());
|
||||
}
|
||||
// 子项副本同步批次属性
|
||||
shiftMaterialDetailPOChildrenNow.setMaterialMoreDetailList(shiftMaterialDetailPO.getMaterialMoreDetailList());
|
||||
fillTotalWeightVolumeArea(shiftMaterialDetailPOChildrenNow);
|
||||
shiftMaterialDetailPOChildrenNowList.add(shiftMaterialDetailPOChildrenNow);
|
||||
//子集
|
||||
List<ShiftMaterialDetailPO> shiftMaterialDetailPOChildrenList = shiftMaterialDetailPO.getChildren();
|
||||
shiftMaterialDetailPOChildrenList.forEach(receiptMaterialDetailPOChildren -> {
|
||||
fillMaterialMoreDetailForShiftDetail(receiptMaterialDetailPOChildren);
|
||||
fillTotalWeightVolumeArea(receiptMaterialDetailPOChildren);
|
||||
List<OutMaterialDetailSerialNumberPO> materialDetailSerialNumberChildrenList = inMaterialDetailSerialNumberMap.get(shiftMaterialDetailPO.getUniqueId());
|
||||
if (!CollectionUtils.isEmpty(materialDetailSerialNumberChildrenList)){
|
||||
receiptMaterialDetailPOChildren.setMaterialDetailSerialNumberList(materialDetailSerialNumberChildrenList);
|
||||
@@ -122,7 +139,202 @@ public class ShiftManageDomainService {
|
||||
return shiftManagePO;
|
||||
}
|
||||
|
||||
/**
|
||||
* PDA移位页面:根据物料批次属性动态填充 materialMoreDetailList,有值显示
|
||||
* 净重、毛重、体积、面积不在此展示,由 totalNetWeight 等在底部表单区显示
|
||||
*/
|
||||
private void fillMaterialMoreDetailForShiftDetail(ShiftMaterialDetailPO shiftMaterialDetailPO) {
|
||||
if (shiftMaterialDetailPO == null || shiftMaterialDetailPO.getMaterialBaseInfoId() == null) {
|
||||
shiftMaterialDetailPO.setMaterialMoreDetailList(new ArrayList<>());
|
||||
return;
|
||||
}
|
||||
List<MaterialMoreDetailPO> materialMoreDetailList = new ArrayList<>();
|
||||
AjaxResult ajaxResult = systemServiceFeign.getBatchDetailListByMaterialBaseInfoId(shiftMaterialDetailPO.getMaterialBaseInfoId());
|
||||
if (ajaxResult != null && "200".equals(String.valueOf(ajaxResult.get("code")))) {
|
||||
List<BatchDetailFeignPO> batchList = JSON.parseArray(JSONObject.toJSONString(ajaxResult.get("data")), BatchDetailFeignPO.class);
|
||||
materialMoreDetailList = filterAndConvertToMaterialMoreDetail(batchList);
|
||||
}
|
||||
// 上面区域不展示净重、毛重、体积、面积,排除这些批次属性
|
||||
materialMoreDetailList = excludeWeightVolumeAreaFromList(materialMoreDetailList);
|
||||
fillAttributeValueFromShiftMaterialDetail(shiftMaterialDetailPO, materialMoreDetailList);
|
||||
// 有值显示:仅保留 attributeValue 非空的批次属性
|
||||
List<MaterialMoreDetailPO> filtered = materialMoreDetailList.stream()
|
||||
.filter(m -> m.getAttributeValue() != null && !m.getAttributeValue().trim().isEmpty())
|
||||
.collect(Collectors.toList());
|
||||
shiftMaterialDetailPO.setMaterialMoreDetailList(filtered);
|
||||
}
|
||||
|
||||
/**
|
||||
* 填充 totalNetWeight、totalGrossWeight、totalVolume、totalArea,供 PDA 表单区(移入数量、移入库位、容器旁)显示
|
||||
* 优先用移位明细,无则用库存
|
||||
*/
|
||||
private void fillTotalWeightVolumeArea(ShiftMaterialDetailPO shiftMaterialDetailPO) {
|
||||
if (shiftMaterialDetailPO == null) {
|
||||
return;
|
||||
}
|
||||
if (shiftMaterialDetailPO.getTotalNetWeight() == null) {
|
||||
if (shiftMaterialDetailPO.getNetWeight() != null) {
|
||||
shiftMaterialDetailPO.setTotalNetWeight(shiftMaterialDetailPO.getNetWeight());
|
||||
} else if (shiftMaterialDetailPO.getMaterialInventoryId() != null) {
|
||||
MaterialInventory mi = materialInventoryService.getById(shiftMaterialDetailPO.getMaterialInventoryId());
|
||||
if (mi != null && mi.getNetWeight() != null) {
|
||||
shiftMaterialDetailPO.setTotalNetWeight(mi.getNetWeight());
|
||||
}
|
||||
}
|
||||
}
|
||||
if (shiftMaterialDetailPO.getTotalGrossWeight() == null) {
|
||||
if (shiftMaterialDetailPO.getGrossWeight() != null) {
|
||||
shiftMaterialDetailPO.setTotalGrossWeight(shiftMaterialDetailPO.getGrossWeight());
|
||||
} else if (shiftMaterialDetailPO.getMaterialInventoryId() != null) {
|
||||
MaterialInventory mi = materialInventoryService.getById(shiftMaterialDetailPO.getMaterialInventoryId());
|
||||
if (mi != null && mi.getGrossWeight() != null) {
|
||||
shiftMaterialDetailPO.setTotalGrossWeight(mi.getGrossWeight());
|
||||
}
|
||||
}
|
||||
}
|
||||
if (shiftMaterialDetailPO.getTotalVolume() == null) {
|
||||
if (shiftMaterialDetailPO.getVolume() != null) {
|
||||
shiftMaterialDetailPO.setTotalVolume(shiftMaterialDetailPO.getVolume());
|
||||
} else if (shiftMaterialDetailPO.getMaterialInventoryId() != null) {
|
||||
MaterialInventory mi = materialInventoryService.getById(shiftMaterialDetailPO.getMaterialInventoryId());
|
||||
if (mi != null && mi.getVolume() != null) {
|
||||
shiftMaterialDetailPO.setTotalVolume(mi.getVolume());
|
||||
}
|
||||
}
|
||||
}
|
||||
if (shiftMaterialDetailPO.getTotalArea() == null) {
|
||||
if (shiftMaterialDetailPO.getArea() != null) {
|
||||
shiftMaterialDetailPO.setTotalArea(shiftMaterialDetailPO.getArea());
|
||||
} else if (shiftMaterialDetailPO.getMaterialInventoryId() != null) {
|
||||
MaterialInventory mi = materialInventoryService.getById(shiftMaterialDetailPO.getMaterialInventoryId());
|
||||
if (mi != null && mi.getArea() != null) {
|
||||
shiftMaterialDetailPO.setTotalArea(mi.getArea());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** 净重、毛重、体积、面积在移位上面区域不展示,从 materialMoreDetailList 中排除 */
|
||||
private static final String[] WEIGHT_VOLUME_AREA_LABELS = {
|
||||
"净重(KG)", "净重", "总净重",
|
||||
"毛重(KG)", "毛重", "总毛重",
|
||||
"体积(CBM)", "体积", "总体积",
|
||||
"面积(SQM)", "面积", "总面积"
|
||||
};
|
||||
|
||||
private List<MaterialMoreDetailPO> excludeWeightVolumeAreaFromList(List<MaterialMoreDetailPO> list) {
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return list;
|
||||
}
|
||||
return list.stream()
|
||||
.filter(m -> {
|
||||
String label = m.getBatchLabels();
|
||||
if (label == null) return true;
|
||||
for (String exclude : WEIGHT_VOLUME_AREA_LABELS) {
|
||||
if (exclude.equals(label.trim())) return false;
|
||||
}
|
||||
return true;
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
private void fillAttributeValueFromShiftMaterialDetail(ShiftMaterialDetailPO shiftMaterialDetailPO, List<MaterialMoreDetailPO> materialMoreDetailList) {
|
||||
if (CollectionUtils.isEmpty(materialMoreDetailList)) {
|
||||
return;
|
||||
}
|
||||
MaterialInventory materialInventory = null;
|
||||
if (shiftMaterialDetailPO.getMaterialInventoryId() != null) {
|
||||
materialInventory = materialInventoryService.getById(shiftMaterialDetailPO.getMaterialInventoryId());
|
||||
}
|
||||
for (MaterialMoreDetailPO materialMoreDetail : materialMoreDetailList) {
|
||||
if (materialMoreDetail.getAttributeValue() != null && !materialMoreDetail.getAttributeValue().trim().isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
String batchLabels = materialMoreDetail.getBatchLabels();
|
||||
String attributeOption = materialMoreDetail.getAttributeOption();
|
||||
String refVal = null;
|
||||
// 净重、毛重、面积、体积:优先从移位明细,其次从库存
|
||||
if (StringUtils.isNotBlank(batchLabels)) {
|
||||
switch (batchLabels.trim()) {
|
||||
case "总净重":
|
||||
case "净重(KG)":
|
||||
case "净重":
|
||||
refVal = shiftMaterialDetailPO.getNetWeight() != null ? shiftMaterialDetailPO.getNetWeight().toString()
|
||||
: (materialInventory != null && materialInventory.getNetWeight() != null ? materialInventory.getNetWeight().toString() : null);
|
||||
break;
|
||||
case "总毛重":
|
||||
case "毛重(KG)":
|
||||
case "毛重":
|
||||
refVal = shiftMaterialDetailPO.getGrossWeight() != null ? shiftMaterialDetailPO.getGrossWeight().toString()
|
||||
: (materialInventory != null && materialInventory.getGrossWeight() != null ? materialInventory.getGrossWeight().toString() : null);
|
||||
break;
|
||||
case "总体积":
|
||||
case "体积(CBM)":
|
||||
case "体积":
|
||||
refVal = shiftMaterialDetailPO.getVolume() != null ? shiftMaterialDetailPO.getVolume().toString()
|
||||
: (materialInventory != null && materialInventory.getVolume() != null ? materialInventory.getVolume().toString() : null);
|
||||
break;
|
||||
case "总面积":
|
||||
case "面积(SQM)":
|
||||
case "面积":
|
||||
refVal = shiftMaterialDetailPO.getArea() != null ? shiftMaterialDetailPO.getArea().toString()
|
||||
: (materialInventory != null && materialInventory.getArea() != null ? materialInventory.getArea().toString() : null);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (refVal == null && materialInventory != null) {
|
||||
if ("InvoiceNo".equalsIgnoreCase(attributeOption) || "Invoice No".equalsIgnoreCase(batchLabels) || "发票号".equals(batchLabels)) {
|
||||
refVal = materialInventory.getExtAttr1();
|
||||
} else if ("扩展字段1".equals(batchLabels) || "扩展属性1".equals(batchLabels)) {
|
||||
refVal = materialInventory.getExtAttr1();
|
||||
} else if ("扩展字段2".equals(batchLabels) || "扩展属性2".equals(batchLabels)) {
|
||||
refVal = materialInventory.getExtAttr2();
|
||||
} else if ("BatchRefNo".equalsIgnoreCase(attributeOption) || "Batch Ref NO's".equalsIgnoreCase(batchLabels) || "批次参考号".equals(batchLabels)) {
|
||||
refVal = materialInventory.getBatchRefNo();
|
||||
} else if ("SheetRefNo".equalsIgnoreCase(attributeOption) || "Sheet Ref NO's".equalsIgnoreCase(batchLabels) || "单据参考号".equals(batchLabels)) {
|
||||
refVal = materialInventory.getSheetRefNo();
|
||||
} else if ("BoxPalletNo".equalsIgnoreCase(attributeOption) || "Box No./Pallet No.".equalsIgnoreCase(batchLabels) || "箱号/卡板号".equals(batchLabels)) {
|
||||
refVal = materialInventory.getBoxPalletNo();
|
||||
} else if (materialInventory.getProductionDate() != null && ("生产日期".equals(batchLabels) || "ProductionDate".equalsIgnoreCase(attributeOption))) {
|
||||
refVal = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(materialInventory.getProductionDate());
|
||||
} else if (materialInventory.getExpiryDate() != null && ("过期日期".equals(batchLabels) || "ExpiryDate".equalsIgnoreCase(attributeOption))) {
|
||||
refVal = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(materialInventory.getExpiryDate());
|
||||
} else if (materialInventory.getInventoryDate() != null && ("存货日期".equals(batchLabels) || "InventoryDate".equalsIgnoreCase(attributeOption))) {
|
||||
refVal = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(materialInventory.getInventoryDate());
|
||||
} else if (materialInventory.getExtAttr3() != null && ("扩展字段3".equals(batchLabels) || "扩展属性3".equals(batchLabels))) {
|
||||
refVal = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(materialInventory.getExtAttr3());
|
||||
} else if (materialInventory.getExtAttr4() != null && ("扩展字段4".equals(batchLabels) || "扩展属性4".equals(batchLabels))) {
|
||||
refVal = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(materialInventory.getExtAttr4());
|
||||
}
|
||||
}
|
||||
if (refVal != null) {
|
||||
materialMoreDetail.setAttributeValue(refVal);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增移位管理
|
||||
|
||||
+15
@@ -259,6 +259,21 @@ public class ShiftMaterialDetailPO extends BaseVOEntity {
|
||||
@Excel(name = "面积")
|
||||
private BigDecimal area;
|
||||
|
||||
@ApiModelProperty("总净重(KG),PDA 表单区显示")
|
||||
@Excel(name = "总净重(KG)")
|
||||
private BigDecimal totalNetWeight;
|
||||
|
||||
@ApiModelProperty("总毛重(KG),PDA 表单区显示")
|
||||
@Excel(name = "总毛重(KG)")
|
||||
private BigDecimal totalGrossWeight;
|
||||
|
||||
@ApiModelProperty("总体积(CBM),PDA 表单区显示")
|
||||
@Excel(name = "总体积(CBM)")
|
||||
private BigDecimal totalVolume;
|
||||
|
||||
@ApiModelProperty("总面积(SQM),PDA 表单区显示")
|
||||
@Excel(name = "总面积(SQM)")
|
||||
private BigDecimal totalArea;
|
||||
|
||||
@ApiModelProperty("移位详情")
|
||||
@TableField(exist = false)
|
||||
|
||||
+9
@@ -264,6 +264,15 @@ public class ShiftMaterialDetailDO extends BaseVOEntity {
|
||||
@Excel(name = "面积")
|
||||
private BigDecimal area;
|
||||
|
||||
@ApiModelProperty("总净重(KG),PDA 表单区修改后回传")
|
||||
private BigDecimal totalNetWeight;
|
||||
@ApiModelProperty("总毛重(KG),PDA 表单区修改后回传")
|
||||
private BigDecimal totalGrossWeight;
|
||||
@ApiModelProperty("总体积(CBM),PDA 表单区修改后回传")
|
||||
private BigDecimal totalVolume;
|
||||
@ApiModelProperty("总面积(SQM),PDA 表单区修改后回传")
|
||||
private BigDecimal totalArea;
|
||||
|
||||
@ApiModelProperty("移位详情")
|
||||
@TableField(exist = false)
|
||||
private List<ShiftMaterialDetailDO> children;
|
||||
|
||||
Reference in New Issue
Block a user