fix(库存): 修复OMS/WMS库存查询过期日期不回显
根因:业务只在OMS填写饮用日期,且下发DTO无过期日期字段,饮用日期→过期日期的转换仅存在于收货单生成瞬间,后续环节全部丢失。 - InMaterialDetail(DTO) 补充 expiryDate 字段,打通OMS→WMS传递 - 预约单/执行单下发前:过期日期为空时用饮用日期补齐(治本) - WMS收货批次属性回写:恢复饮用日期回写并兜底转换为过期日期(加固) - WMS上架确认:过期日期为空时从收货明细兜底补齐(加固)
This commit is contained in:
+13
-8
@@ -743,14 +743,19 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl<ReceiptMaterialDetail
|
||||
}
|
||||
//receiptMaterialDetailDO.setExtAttr4(date);
|
||||
} else if ("饮用日期".equals(batchLabels)) {
|
||||
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
// Date date = null;
|
||||
// try {
|
||||
// date = sdf.parse(attributeValue);
|
||||
// } catch (ParseException e) {
|
||||
// throw new RuntimeException(e);
|
||||
// }
|
||||
// receiptMaterialDetailDO.setInventoryDate(date);
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
Date date = null;
|
||||
try {
|
||||
date = sdf.parse(attributeValue);
|
||||
} catch (ParseException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
receiptMaterialDetailDO.setDrinkDate(date);
|
||||
// 过期日期未单独填写时,饮用日期兜底作为过期日期(与收货单生成时的转换逻辑保持一致),
|
||||
// 避免只填饮用日期导致库存过期日期为空不回显
|
||||
if (receiptMaterialDetailDO.getExpiryDate() == null) {
|
||||
receiptMaterialDetailDO.setExpiryDate(date);
|
||||
}
|
||||
} else if ("扩展属性2".equals(batchLabels)) {
|
||||
receiptMaterialDetailDO.setExtAttr2(attributeValue);
|
||||
} else if ("扩展属性1".equals(batchLabels)) {
|
||||
|
||||
+19
@@ -62,6 +62,8 @@ import com.mhd.wms.domain.materialInventory.repository.po.MaterialInventoryPO;
|
||||
import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryDO;
|
||||
import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryParamDO;
|
||||
import com.mhd.wms.domain.materialMoreDetail.repository.todo.MaterialMoreDetailDO;
|
||||
import com.mhd.wms.domain.receiptMaterialDetail.entity.ReceiptMaterialDetail;
|
||||
import com.mhd.wms.domain.receiptMaterialDetail.repository.facade.IReceiptMaterialDetailService;
|
||||
import com.mhd.wms.domain.serialNumber.entity.SerialNumber;
|
||||
import com.mhd.wms.domain.serialNumber.repository.facade.ISerialNumberService;
|
||||
import com.mhd.wms.domain.shelfMaterialDetail.entity.ShelfMaterialDetail;
|
||||
@@ -148,6 +150,8 @@ public class StockShelfOrderDomainService {
|
||||
private MaterialBaseInfoMapper materialBaseInfoMapper;
|
||||
@Autowired
|
||||
private ICopyCodeReferenceService copyCodeReferenceService;
|
||||
@Autowired
|
||||
private IReceiptMaterialDetailService receiptMaterialDetailService;
|
||||
@Resource
|
||||
private OmsServiceFeign omsServiceFeign;
|
||||
|
||||
@@ -1134,6 +1138,21 @@ public class StockShelfOrderDomainService {
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
// 过期日期兜底:上架明细未带过期日期时,回查收货明细补齐(优先过期日期,其次饮用日期),
|
||||
// 避免收货环节补填的效期丢失导致库存过期日期为空不回显
|
||||
if (shelfMaterialDetail.getExpiryDate() == null && shelfMaterialDetail.getReceiptUniqueId() != null) {
|
||||
ReceiptMaterialDetail receiptDetail = receiptMaterialDetailService.getOne(
|
||||
new LambdaQueryWrapper<ReceiptMaterialDetail>()
|
||||
.eq(ReceiptMaterialDetail::getUniqueId, shelfMaterialDetail.getReceiptUniqueId())
|
||||
.last("LIMIT 1"));
|
||||
if (receiptDetail != null) {
|
||||
if (receiptDetail.getExpiryDate() != null) {
|
||||
shelfMaterialDetail.setExpiryDate(receiptDetail.getExpiryDate());
|
||||
} else if (receiptDetail.getDrinkDate() != null) {
|
||||
shelfMaterialDetail.setExpiryDate(receiptDetail.getDrinkDate());
|
||||
}
|
||||
}
|
||||
}
|
||||
Long shipperId = stockReceiptOrderDO.getShipperId();
|
||||
MaterialInventory param = getParam(shelfMaterialDetail, fieldNames, shipperId,stockReceiptOrderDO.getInOrderNumber());
|
||||
List<MaterialInventoryPO> materialInventoryPOS = materialInventoryMapper.selectListByWhere(param);
|
||||
|
||||
Reference in New Issue
Block a user