维他奶w库存;

This commit is contained in:
王奎兴
2026-05-27 19:50:33 +08:00
parent 7a2174d626
commit e2d312a79c
8 changed files with 137 additions and 12 deletions
@@ -53,6 +53,8 @@ import lombok.extern.slf4j.Slf4j;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
@@ -430,6 +432,7 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl<ReceiptMaterialDetail
List<MaterialMoreDetail> materialMoreDetailList = new ArrayList<>();
List<InMaterialDetailSerialNumber> materialDetailSerialNumberList = new ArrayList<>();
for (ReceiptMaterialDetailDO receiptMaterialDetailDO : receiptMaterialDetailDOList){
setMore(receiptMaterialDetailDO);
extractBatchAttributesToReceiptDetail(receiptMaterialDetailDO);
// 自动生成批次号并校验唯一性(包括子项)
generateAndValidateBatchNumber(receiptMaterialDetailDO, shipperId, currentInOrderNumber);
@@ -453,6 +456,7 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl<ReceiptMaterialDetail
List<ReceiptMaterialDetail> receiptMaterialDetailChildList = new ArrayList<>();
if (!CollectionUtils.isEmpty(receiptMaterialDetailDOChildList)){
for (ReceiptMaterialDetailDO receiptMaterialDetailDOChild : receiptMaterialDetailDOChildList){
setMore(receiptMaterialDetailDOChild);
// 子项批次属性已在 generateAndValidateBatchNumber 递归中提取
ReceiptMaterialDetail receiptMaterialDetailChild = new ReceiptMaterialDetail();
BeanUtils.copyProperties(receiptMaterialDetailDOChild, receiptMaterialDetailChild);
@@ -511,6 +515,72 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl<ReceiptMaterialDetail
updateInMaterialDetailFromAttributeOption(receiptMaterialDetailDOList);
}
private void setMore(ReceiptMaterialDetailDO receiptMaterialDetailDO) {
List<MaterialMoreDetailDO> materialMoreDetailList = receiptMaterialDetailDO.getMaterialMoreDetailList();
if (!CollectionUtils.isEmpty(materialMoreDetailList)) {
for (MaterialMoreDetailDO materialMoreDetailDO : materialMoreDetailList) {
String attributeValue = materialMoreDetailDO.getAttributeValue();
String batchLabels = materialMoreDetailDO.getBatchLabels();
if ("生产日期".equals(batchLabels)) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sdf.parse(attributeValue);
} catch (ParseException e) {
throw new RuntimeException(e);
}
receiptMaterialDetailDO.setProductionDate(date);
} else if ("过期日期".equals(batchLabels)) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sdf.parse(attributeValue);
} catch (ParseException e) {
throw new RuntimeException(e);
}
receiptMaterialDetailDO.setExpiryDate(date);
} else if ("扩展属性4".equals(batchLabels)) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sdf.parse(attributeValue);
} catch (ParseException e) {
throw new RuntimeException(e);
}
//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);
} else if ("扩展属性2".equals(batchLabels)) {
receiptMaterialDetailDO.setExtAttr2(attributeValue);
} else if ("扩展属性1".equals(batchLabels)) {
receiptMaterialDetailDO.setExtAttr1(attributeValue);
} else if ("箱号/卡板号".equals(batchLabels)) {
receiptMaterialDetailDO.setBoxPalletNo(attributeValue);
} else if ("Sheet Ref NO's".equals(batchLabels)) {
receiptMaterialDetailDO.setSheetRefNo(attributeValue);
} else if ("Batch Ref NO's".equals(batchLabels)) {
receiptMaterialDetailDO.setBatchRefNo(attributeValue);
} else if ("存货日期".equals(batchLabels)) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sdf.parse(attributeValue);
} catch (ParseException e) {
throw new RuntimeException(e);
}
receiptMaterialDetailDO.setInventoryDate(date);
}
}
}
}
/**
* PDA 上传的 receiptQuantity 为「本次收货量」;落库时与累计已收货 already_receipt_quantity 对齐,
* 否则多次收货会把 receipt_quantity 覆盖成仅最后一次本次量(如先 1000 再 100 却存成 100)。
@@ -570,7 +570,7 @@ public class StockInOrderDomainService {
planQty = inMaterialDetailPO.getInboundQuantity();
}
receiptMaterialDetailDO.setQuantity(planQty);
receiptMaterialDetailDO.setDrinkDate(inMaterialDetailPO.getDrinkDate());
// receiptMaterialDetailDO.setDrinkDate(inMaterialDetailPO.getDrinkDate());
receiptMaterialDetailDOList.add(receiptMaterialDetailDO);
});
stockReceiptOrderDO.setMaterialDetailList(receiptMaterialDetailDOList);
@@ -42,6 +42,7 @@ import com.mhd.wms.domain.inventoryStandingReport.repository.todo.InventoryStand
import com.mhd.wms.domain.materialGoodsRule.entity.MaterialGoodsRule;
import com.mhd.wms.domain.materialGoodsRule.repository.facade.IMaterialGoodsRuleService;
import com.mhd.wms.domain.materialGoodsRule.repository.po.MaterialGoodsRulePO;
import com.mhd.wms.domain.materialMoreDetail.entity.MaterialMoreDetail;
import com.mhd.wms.domain.materialMoreDetail.repository.facade.IMaterialMoreDetailService;
import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO;
import com.mhd.wms.domain.materialMoreDetail.repository.todo.MaterialMoreDetailDO;
@@ -84,6 +85,7 @@ import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@@ -191,6 +193,20 @@ public class StockReceiptOrderDomainService {
receiptMaterialDetail.setCreateBy(loginUser.getUserid());
receiptMaterialDetail.setCreateByName(userRealName);
receiptMaterialDetail.setCreateTime(new Date());
Date drinkDate = receiptMaterialDetail.getDrinkDate();
if (drinkDate != null) {
receiptMaterialDetail.setExpiryDate(receiptMaterialDetail.getDrinkDate());
MaterialMoreDetail materialMoreDetail = new MaterialMoreDetail();
materialMoreDetail.setBatchLabels("过期日期");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = sdf.format(drinkDate);
materialMoreDetail.setAttributeValue(dateStr);
materialMoreDetail.setMaterialDetailUniqueId(receiptMaterialDetail.getUniqueId());
materialMoreDetail.setOrganizationId(receiptMaterialDetail.getOrganizationId());
materialMoreDetail.setOrganizationName(receiptMaterialDetail.getOrganizationName());
materialMoreDetail.setTopOrganizationId(receiptMaterialDetail.getTopOrganizationId());
materialMoreDetail.setOrderNumber(receiptMaterialDetail.getReceiptOrderNumber());
}
receiptMaterialDetailList.add(receiptMaterialDetail);
});
});