PDA收货批次属性显示问题
This commit is contained in:
+53
@@ -31,6 +31,8 @@ import com.mhd.wms.domain.materialGoodsRule.repository.po.MaterialGoodsRulePO;
|
|||||||
import com.mhd.wms.domain.materialWarehouseControl.repository.facade.IMaterialWarehouseControlService;
|
import com.mhd.wms.domain.materialWarehouseControl.repository.facade.IMaterialWarehouseControlService;
|
||||||
import com.mhd.wms.domain.materialWarehouseControl.repository.po.MaterialWarehouseControlPO;
|
import com.mhd.wms.domain.materialWarehouseControl.repository.po.MaterialWarehouseControlPO;
|
||||||
import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO;
|
import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO;
|
||||||
|
import com.mhd.wms.domain.materialMoreDetail.repository.todo.MaterialMoreDetailDO;
|
||||||
|
import com.mhd.wms.domain.materialMoreDetail.service.MaterialMoreDetailDomainService;
|
||||||
import com.mhd.wms.domain.receiptMaterialDetail.repository.po.ReceiptMaterialDetailPO;
|
import com.mhd.wms.domain.receiptMaterialDetail.repository.po.ReceiptMaterialDetailPO;
|
||||||
import com.mhd.wms.domain.receiptMaterialDetail.repository.todo.ReceiptMaterialDetailDO;
|
import com.mhd.wms.domain.receiptMaterialDetail.repository.todo.ReceiptMaterialDetailDO;
|
||||||
import com.mhd.wms.domain.receiptMaterialDetail.service.ReceiptMaterialDetailDomainService;
|
import com.mhd.wms.domain.receiptMaterialDetail.service.ReceiptMaterialDetailDomainService;
|
||||||
@@ -82,6 +84,8 @@ public class StockReceiptOrderApplicationService {
|
|||||||
private IMaterialGoodsRuleService materialGoodsRuleService;
|
private IMaterialGoodsRuleService materialGoodsRuleService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private SystemServiceFeign systemServiceFeign;
|
private SystemServiceFeign systemServiceFeign;
|
||||||
|
@Autowired
|
||||||
|
private MaterialMoreDetailDomainService materialMoreDetailDomainService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserServiceFeign userServiceFeign;
|
private UserServiceFeign userServiceFeign;
|
||||||
@@ -519,6 +523,31 @@ public class StockReceiptOrderApplicationService {
|
|||||||
}
|
}
|
||||||
// 只有当获取到值时才更新attributeValue(避免覆盖已有的值)
|
// 只有当获取到值时才更新attributeValue(避免覆盖已有的值)
|
||||||
if (fieldValue != null) {
|
if (fieldValue != null) {
|
||||||
|
// 扩展属性1-4:优先使用 material_more_detail 的值(按 material_detail_unique_id 存储,每个明细独立)
|
||||||
|
// 避免从 ReceiptMaterialDetailPO 反射取值(主项/子项可能共用 in_unique_id,导致取到同一 in_material_detail 的错误值)
|
||||||
|
boolean isExtAttr = usedFieldName != null && (
|
||||||
|
"ext_attr_1".equalsIgnoreCase(usedFieldName) || "extAttr1".equals(usedFieldName)
|
||||||
|
|| "ext_attr_2".equalsIgnoreCase(usedFieldName) || "extAttr2".equals(usedFieldName)
|
||||||
|
|| "ext_attr_3".equalsIgnoreCase(usedFieldName) || "extAttr3".equals(usedFieldName)
|
||||||
|
|| "ext_attr_4".equalsIgnoreCase(usedFieldName) || "extAttr4".equals(usedFieldName));
|
||||||
|
if (isExtAttr) {
|
||||||
|
// 扩展属性:优先从 material_more_detail 表查询(按 material_detail_unique_id + batch_detail_id)
|
||||||
|
String attrFromDb = getExtAttrFromMaterialMoreDetail(receiptMaterialDetailPO.getUniqueId(), batchDetailFeignPO.getBatchDetailId());
|
||||||
|
if (StringUtils.isNotBlank(attrFromDb)) {
|
||||||
|
materialMoreDetailPO.setAttributeValue(attrFromDb);
|
||||||
|
log.debug("扩展属性 batchDetailId={}, 使用 material_more_detail 的值={}",
|
||||||
|
materialMoreDetailPO.getBatchDetailId(), attrFromDb);
|
||||||
|
} else if (StringUtils.isNotBlank(materialMoreDetailPO.getAttributeValue())) {
|
||||||
|
// 已有值(来自 queryListChildren 的 merge)则保留
|
||||||
|
log.debug("扩展属性 batchDetailId={}, 保留已有值={}",
|
||||||
|
materialMoreDetailPO.getBatchDetailId(), materialMoreDetailPO.getAttributeValue());
|
||||||
|
} else {
|
||||||
|
materialMoreDetailPO.setAttributeValue(fieldValue);
|
||||||
|
log.info("设置更多属性:batchDetailId={}, batchLabels={}, attributeValue={}(无 material_more_detail 时用反射值)",
|
||||||
|
materialMoreDetailPO.getBatchDetailId(), materialMoreDetailPO.getBatchLabels(),
|
||||||
|
materialMoreDetailPO.getAttributeValue());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
materialMoreDetailPO.setAttributeValue(fieldValue);
|
materialMoreDetailPO.setAttributeValue(fieldValue);
|
||||||
log.info("设置更多属性:batchDetailId={}, batchLabels={}, attributeValue={}",
|
log.info("设置更多属性:batchDetailId={}, batchLabels={}, attributeValue={}",
|
||||||
materialMoreDetailPO.getBatchDetailId(), materialMoreDetailPO.getBatchLabels(),
|
materialMoreDetailPO.getBatchDetailId(), materialMoreDetailPO.getBatchLabels(),
|
||||||
@@ -527,6 +556,7 @@ public class StockReceiptOrderApplicationService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
receiptMaterialDetailPO.setMaterialMoreDetailList(materialMoreDetailList);
|
receiptMaterialDetailPO.setMaterialMoreDetailList(materialMoreDetailList);
|
||||||
log.info("物料明细 uniqueId={}, materialBaseInfoId={}, materialMoreDetailList大小={}",
|
log.info("物料明细 uniqueId={}, materialBaseInfoId={}, materialMoreDetailList大小={}",
|
||||||
receiptMaterialDetailPO.getUniqueId(), receiptMaterialDetailPO.getMaterialBaseInfoId(),
|
receiptMaterialDetailPO.getUniqueId(), receiptMaterialDetailPO.getMaterialBaseInfoId(),
|
||||||
@@ -539,6 +569,29 @@ public class StockReceiptOrderApplicationService {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 从 material_more_detail 表查询扩展属性值(按 material_detail_unique_id + batch_detail_id)
|
||||||
|
* 用于 PC 端正确显示每个明细独立的扩展属性,避免主项/子项共用 in_unique_id 导致取错值
|
||||||
|
*/
|
||||||
|
private String getExtAttrFromMaterialMoreDetail(Long materialDetailUniqueId, Long batchDetailId) {
|
||||||
|
if (materialDetailUniqueId == null || batchDetailId == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
MaterialMoreDetailDO do_ = new MaterialMoreDetailDO();
|
||||||
|
do_.setMaterialDetailUniqueId(materialDetailUniqueId);
|
||||||
|
do_.setBatchDetailId(batchDetailId);
|
||||||
|
List<MaterialMoreDetailPO> list = materialMoreDetailDomainService.queryList(do_);
|
||||||
|
if (!CollectionUtils.isEmpty(list) && StringUtils.isNotBlank(list.get(0).getAttributeValue())) {
|
||||||
|
return list.get(0).getAttributeValue();
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.warn("查询 material_more_detail 扩展属性失败,materialDetailUniqueId={}, batchDetailId={},错误:{}",
|
||||||
|
materialDetailUniqueId, batchDetailId, e.getMessage());
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 递归填充明细行的物料单位信息、包装规格(如果为空)
|
* 递归填充明细行的物料单位信息、包装规格(如果为空)
|
||||||
* @param receiptMaterialDetailPOList 收货物料明细列表
|
* @param receiptMaterialDetailPOList 收货物料明细列表
|
||||||
|
|||||||
Reference in New Issue
Block a user