维他奶w库存;
This commit is contained in:
+70
@@ -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)。
|
||||
|
||||
+1
-1
@@ -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);
|
||||
|
||||
+16
@@ -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);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -88,6 +88,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<result property="singleVolume" column="single_volume" />
|
||||
<result property="singleGrossWeight" column="single_gross_weight" />
|
||||
<result property="lotNo" column="lot_no" />
|
||||
<result property="drinkDate" column="drink_date" />
|
||||
</resultMap>
|
||||
|
||||
|
||||
@@ -114,7 +115,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
a.SPECIFICATION_MODEL, a.SKU_CODE, a.INVOICE_NO, a.LITER, a.DIMENSIONS, a.DECLARATION_UNIT, a.BATCH_REF_NO, a.SHEET_REF_NO,
|
||||
a.ORIGIN_COUNTRY, a.BOX_PALLET_NO, a.CURRENCY, a.UNIT, a.DECLARED_QUANTITY, a.BOX_COUNT, a.PIECE_COUNT, a.INBOUND_QUANTITY,
|
||||
a.TOTAL_NET_WEIGHT, a.TOTAL_GROSS_WEIGHT, a.TOTAL_VOLUME, a.TOTAL_AREA, a.TOTAL_PRICE,
|
||||
a.PRODUCTION_DATE, a.EXPIRY_DATE, a.INVENTORY_DATE, a.EXT_ATTR_1, a.EXT_ATTR_2, a.EXT_ATTR_3, a.EXT_ATTR_4,
|
||||
a.PRODUCTION_DATE, a.EXPIRY_DATE, a.INVENTORY_DATE, a.EXT_ATTR_1, a.EXT_ATTR_2, a.EXT_ATTR_3, a.EXT_ATTR_4,a.DRINK_DATE,
|
||||
a.OMS_IN_MATERIAL_DETAIL
|
||||
,CASE
|
||||
WHEN (a.quantity - a.receipt_quantity) < 0 THEN 0
|
||||
|
||||
+4
-2
@@ -89,6 +89,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
<result property="copyDetails" column="copy_details" />
|
||||
<result property="copyCode" column="COPY_CODE" />
|
||||
<result property="omsInMaterialDetail" column="OMS_IN_MATERIAL_DETAIL" />
|
||||
<result property="drinkDate" column="DRINK_DATE" />
|
||||
</resultMap>
|
||||
|
||||
|
||||
@@ -96,7 +97,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
select a.MATERIAL_DETAIL_ID, a.ORGANIZATION_ID, a.ORGANIZATION_NAME, a.TOP_ORGANIZATION_ID, a.UNIQUE_ID, a.RECEIPT_ORDER_NUMBER, a.MATERIAL_BASE_INFO_ID,
|
||||
ifnull(a.MATERIAL_CODE, c.MATERIAL_CODE) MATERIAL_CODE,
|
||||
ifnull(a.MATERIAL_NAME, c.MATERIAL_NAME) MATERIAL_NAME,
|
||||
a.BAR_CODE,
|
||||
a.BAR_CODE,
|
||||
c.SPECIFICATION_MODEL,
|
||||
a.DIMENSIONS DIMENSIONS,
|
||||
a.QUANTITY, a.ALREADY_RECEIPT_QUANTITY, a.ALREADY_RECEIPT_GROSS_WEIGHT, a.ALREADY_RECEIPT_NET_WEIGHT, a.ALREADY_RECEIPT_VOLUME, a.ALREADY_RECEIPT_AREA, a.RECEIPT_QUANTITY, a.RECEIPT_STATUS, a.PACK_ID, a.PACK_CODE, a.PACK_NAME, a.PACK_DETAIL_ID, ifnull(a.UNIT_CODE, b.UNIT_CODE) UNIT_CODE, ifnull(a.UNIT_NAME, b.UNIT_NAME) UNIT_NAME, a.UNIT_NUMBER, a.MATERIAL_WAREHOUSE_CONTROL_ID, a.SERIAL_NUMBER_MANAGE, a.QUALITY_INSPECTION_MANAGE, a.QUALITY_INSPECTION_STAGE, a.QUALITY_INSPECTION_RULE, a.QUALITY_INSPECTION_RATIO, a.QUALITY_INSPECTION_TERM, a.QUALITY_INSPECTION_RESULTS, a.ALLOW_OVERCHARGE, a.OVERCHARGE_RATIO, a.BATCH_NUMBER, ifnull(a.LOT_NO, b.LOT_NO) LOT_NO, a.MATERIAL_STATUS_CODE, a.MATERIAL_STATUS_NAME, a.DISTRIBUTE_RULE_ID, a.DISTRIBUTE_RULE_CODE, a.DISTRIBUTE_RULE_NAME, a.CONTAINER_ID, a.CONTAINER_CODE, a.CONTAINER_TYPE, a.CONTAINER_TYPE_NAME, a.LEVEL, a.PARENT_UNIQUE_ID, a.IN_UNIQUE_ID, a.ALLOW_MODIFY, a.REMARK, a.CREATE_TIME, a.CREATE_BY, a.CREATE_BY_NAME, a.UPDATE_TIME, a.UPDATE_BY, a.UPDATE_BY_NAME, a.GEN_STOCK_SHELF, a.DEL_FLAG,
|
||||
@@ -121,7 +122,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
ifnull(a.EXT_ATTR_2, b.EXT_ATTR_2) EXT_ATTR_2,
|
||||
ifnull(a.EXT_ATTR_3, b.EXT_ATTR_3) EXT_ATTR_3,
|
||||
ifnull(a.EXT_ATTR_4, b.EXT_ATTR_4) EXT_ATTR_4,
|
||||
a.OMS_IN_MATERIAL_DETAIL
|
||||
a.OMS_IN_MATERIAL_DETAIL,
|
||||
a.DRINK_DATE
|
||||
from RECEIPT_MATERIAL_DETAIL a
|
||||
LEFT JOIN IN_MATERIAL_DETAIL b ON a.IN_UNIQUE_ID = b.UNIQUE_ID AND b.DEL_FLAG = 1
|
||||
LEFT JOIN MATERIAL_BASE_INFO c ON a.MATERIAL_BASE_INFO_ID = c.MATERIAL_BASE_INFO_ID AND c.DEL_FLAG = 1
|
||||
|
||||
Reference in New Issue
Block a user