PDA抄码修改
This commit is contained in:
+3
@@ -139,6 +139,9 @@ public class StockReceiptOrderPO extends StockInOrderBasePO {
|
||||
@ApiModelProperty("物料明细")
|
||||
private List<ReceiptMaterialDetailPO> materialDetailList;
|
||||
|
||||
@ApiModelProperty("整单是否含抄码物料:1-是(至少一行物料主数据 copyCode=1) 2-否;与明细行 copyCode 同源,来自物料主数据")
|
||||
private Integer hasCopyCodeMaterial;
|
||||
|
||||
@ApiModelProperty("收货作业单号")
|
||||
private String receiptTaskNumber;
|
||||
|
||||
|
||||
+67
-8
@@ -1123,33 +1123,92 @@ public class StockShelfOrderDomainService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 上架完成、库存入账后写入抄码对照表。数据来自上架明细 {@link ShelfMaterialDetail#getCopyDetails()},
|
||||
* 与收货明细/PDA 提交的 JSON 一致:key 为序号(字符串),value 为单件净重(千克,支持小数如 1.343)。
|
||||
*/
|
||||
private void copyCodeProductComparison(MaterialBaseInfo materialBaseInfo, ShelfMaterialDetail shelfMaterialDetail, MaterialInventoryParamDO materialInventoryId) {
|
||||
JSONObject jsonObject = JSONObject.parseObject(shelfMaterialDetail.getCopyDetails());
|
||||
ArrayList<CopyCodeReference> copyCodeReferences = new ArrayList<>();
|
||||
if (materialBaseInfo == null || shelfMaterialDetail == null || materialInventoryId == null) {
|
||||
return;
|
||||
}
|
||||
if (StringUtils.isBlank(shelfMaterialDetail.getCopyDetails())) {
|
||||
return;
|
||||
}
|
||||
JSONObject jsonObject;
|
||||
try {
|
||||
jsonObject = JSONObject.parseObject(shelfMaterialDetail.getCopyDetails().trim());
|
||||
} catch (Exception e) {
|
||||
log.warn("抄码 copyDetails 非合法 JSON,跳过写入对照表,materialDetailId={},raw={}",
|
||||
shelfMaterialDetail.getMaterialDetailId(), shelfMaterialDetail.getCopyDetails(), e);
|
||||
return;
|
||||
}
|
||||
if (jsonObject == null || jsonObject.size() == 0) {
|
||||
return;
|
||||
}
|
||||
List<CopyCodeReference> copyCodeReferences = new ArrayList<>();
|
||||
for (String key : jsonObject.keySet()) {
|
||||
if (StringUtils.isBlank(key)) {
|
||||
continue;
|
||||
}
|
||||
BigDecimal lineNetKg = parseCopyDetailNetWeightKg(jsonObject.get(key));
|
||||
if (lineNetKg == null) {
|
||||
continue;
|
||||
}
|
||||
int serial;
|
||||
try {
|
||||
serial = Integer.parseInt(key.trim());
|
||||
} catch (NumberFormatException e) {
|
||||
log.warn("抄码 copyDetails 序号非数字,已跳过 key={}", key);
|
||||
continue;
|
||||
}
|
||||
CopyCodeReference copyCodeReference = new CopyCodeReference();
|
||||
BeanUtils.copyProperties(materialBaseInfo, copyCodeReference);
|
||||
BeanUtils.copyProperties(shelfMaterialDetail, copyCodeReference, IgnoreNullUtil.getNullPropertyNames(shelfMaterialDetail));
|
||||
copyCodeReference.setBoxPalletNo(shelfMaterialDetail.getPalletNumber());
|
||||
copyCodeReference.setBatchNumber(shelfMaterialDetail.getCopyBatch());
|
||||
copyCodeReference.setSerialNumber(Integer.parseInt(key));
|
||||
Integer value = jsonObject.getInteger(key);
|
||||
copyCodeReference.setNetWeight(new BigDecimal(value));
|
||||
copyCodeReference.setSerialNumber(serial);
|
||||
copyCodeReference.setNetWeight(lineNetKg);
|
||||
copyCodeReference.setGrossWeight(shelfMaterialDetail.getTotalGrossWeight());
|
||||
copyCodeReference.setMaterialStatusName("可用");
|
||||
copyCodeReference.setMaterialStatusCode("1");
|
||||
copyCodeReference.setMaterialDetailId(shelfMaterialDetail.getMaterialDetailId());
|
||||
copyCodeReference.setMaterialInventoryId(materialInventoryId.getMaterialInventoryId());
|
||||
copyCodeReference.setInOrderNumber(materialInventoryId.getInOrderNumber());
|
||||
copyCodeReference.setInventoryQuantity(new BigDecimal(1));
|
||||
copyCodeReference.setNetWeight(shelfMaterialDetail.getTotalNetWeight());
|
||||
copyCodeReference.setGrossWeight(shelfMaterialDetail.getTotalGrossWeight());
|
||||
copyCodeReference.setInventoryQuantity(BigDecimal.ONE);
|
||||
copyCodeReference.setShipperName(materialBaseInfo.getShipperName());
|
||||
copyCodeReference.setShipperId(materialBaseInfo.getShipperId());
|
||||
copyCodeReferences.add(copyCodeReference);
|
||||
}
|
||||
if (CollectionUtils.isEmpty(copyCodeReferences)) {
|
||||
return;
|
||||
}
|
||||
copyCodeReferenceService.saveBatch(copyCodeReferences);
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析 copyDetails JSON 中单件净重(千克),支持整数与小数。
|
||||
*/
|
||||
private static BigDecimal parseCopyDetailNetWeightKg(Object raw) {
|
||||
if (raw == null) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
if (raw instanceof BigDecimal) {
|
||||
return (BigDecimal) raw;
|
||||
}
|
||||
if (raw instanceof Number) {
|
||||
return BigDecimal.valueOf(((Number) raw).doubleValue());
|
||||
}
|
||||
String s = raw.toString().trim();
|
||||
if (StringUtils.isBlank(s)) {
|
||||
return null;
|
||||
}
|
||||
return new BigDecimal(s);
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
private MaterialInventory getParam(ShelfMaterialDetail shelfMaterialDetail, List<String> fieldNames,Long shipperId,String inOrderNumber){
|
||||
MaterialInventory param = new MaterialInventory();
|
||||
param.setShipperId(shipperId);
|
||||
|
||||
Reference in New Issue
Block a user