PC收货生成上架的批次属性更新
This commit is contained in:
+11
@@ -445,6 +445,17 @@ public class ReceiptMaterialDetailImpl extends ServiceImpl<ReceiptMaterialDetail
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 仅使用 level=1 的主明细更新入库单明细的批次属性,避免子明细(level=2)覆盖主明细的值
|
||||||
|
Integer level = receiptMaterialDetailDO.getLevel();
|
||||||
|
if (level != null && level != 1) {
|
||||||
|
// 子明细不更新 in_material_detail,继续递归处理子项
|
||||||
|
List<ReceiptMaterialDetailDO> children = receiptMaterialDetailDO.getChildren();
|
||||||
|
if (!CollectionUtils.isEmpty(children)) {
|
||||||
|
updateInMaterialDetailFromAttributeOption(children, batchFieldNameCache);
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
List<MaterialMoreDetailDO> materialMoreDetailList = receiptMaterialDetailDO.getMaterialMoreDetailList();
|
List<MaterialMoreDetailDO> materialMoreDetailList = receiptMaterialDetailDO.getMaterialMoreDetailList();
|
||||||
if (CollectionUtils.isEmpty(materialMoreDetailList)) {
|
if (CollectionUtils.isEmpty(materialMoreDetailList)) {
|
||||||
// 处理子项
|
// 处理子项
|
||||||
|
|||||||
+7
-2
@@ -69,9 +69,12 @@ public class ShelfMaterialDetailImpl extends ServiceImpl<ShelfMaterialDetailMapp
|
|||||||
List<ShelfMaterialDetailPO> shelfMaterialDetailPOList = shelfMaterialDetailMapper.queryList(shelfMaterialDetailDO);
|
List<ShelfMaterialDetailPO> shelfMaterialDetailPOList = shelfMaterialDetailMapper.queryList(shelfMaterialDetailDO);
|
||||||
|
|
||||||
//回显带上更多属性值(批次标签):根据物料绑定的批次属性动态显示,与收货一致
|
//回显带上更多属性值(批次标签):根据物料绑定的批次属性动态显示,与收货一致
|
||||||
|
// material_more_detail 存储时使用收货明细的 unique_id,上架明细需用 receipt_unique_id 查询
|
||||||
shelfMaterialDetailPOList.forEach(shelfMaterialDetailPO -> {
|
shelfMaterialDetailPOList.forEach(shelfMaterialDetailPO -> {
|
||||||
MaterialMoreDetailDO materialMoreDetailDO = new MaterialMoreDetailDO();
|
MaterialMoreDetailDO materialMoreDetailDO = new MaterialMoreDetailDO();
|
||||||
materialMoreDetailDO.setMaterialDetailUniqueId(shelfMaterialDetailPO.getUniqueId());
|
Long materialDetailUniqueIdForQuery = shelfMaterialDetailPO.getReceiptUniqueId() != null
|
||||||
|
? shelfMaterialDetailPO.getReceiptUniqueId() : shelfMaterialDetailPO.getUniqueId();
|
||||||
|
materialMoreDetailDO.setMaterialDetailUniqueId(materialDetailUniqueIdForQuery);
|
||||||
List<MaterialMoreDetailPO> materialMoreDetailList = IMaterialMoreDetailService.queryList(materialMoreDetailDO);
|
List<MaterialMoreDetailPO> materialMoreDetailList = IMaterialMoreDetailService.queryList(materialMoreDetailDO);
|
||||||
if (CollectionUtils.isEmpty(materialMoreDetailList)) {
|
if (CollectionUtils.isEmpty(materialMoreDetailList)) {
|
||||||
AjaxResult ajaxResult = systemServiceFeign.getBatchDetailListByMaterialBaseInfoId(shelfMaterialDetailPO.getMaterialBaseInfoId());
|
AjaxResult ajaxResult = systemServiceFeign.getBatchDetailListByMaterialBaseInfoId(shelfMaterialDetailPO.getMaterialBaseInfoId());
|
||||||
@@ -92,7 +95,9 @@ public class ShelfMaterialDetailImpl extends ServiceImpl<ShelfMaterialDetailMapp
|
|||||||
List<ShelfMaterialDetailPO> children = getChildren(materialDetailPO.getUniqueId(), shelfMaterialDetailPOList, 2);
|
List<ShelfMaterialDetailPO> children = getChildren(materialDetailPO.getUniqueId(), shelfMaterialDetailPOList, 2);
|
||||||
children.forEach(childrenDetailPO -> {
|
children.forEach(childrenDetailPO -> {
|
||||||
MaterialMoreDetailDO materialMoreDetailDO = new MaterialMoreDetailDO();
|
MaterialMoreDetailDO materialMoreDetailDO = new MaterialMoreDetailDO();
|
||||||
materialMoreDetailDO.setMaterialDetailUniqueId(childrenDetailPO.getUniqueId());
|
Long materialDetailUniqueIdForQuery = childrenDetailPO.getReceiptUniqueId() != null
|
||||||
|
? childrenDetailPO.getReceiptUniqueId() : childrenDetailPO.getUniqueId();
|
||||||
|
materialMoreDetailDO.setMaterialDetailUniqueId(materialDetailUniqueIdForQuery);
|
||||||
List<MaterialMoreDetailPO> materialMoreDetailList = IMaterialMoreDetailService.queryList(materialMoreDetailDO);
|
List<MaterialMoreDetailPO> materialMoreDetailList = IMaterialMoreDetailService.queryList(materialMoreDetailDO);
|
||||||
if (CollectionUtils.isEmpty(materialMoreDetailList)) {
|
if (CollectionUtils.isEmpty(materialMoreDetailList)) {
|
||||||
AjaxResult ajaxResult = systemServiceFeign.getBatchDetailListByMaterialBaseInfoId(childrenDetailPO.getMaterialBaseInfoId());
|
AjaxResult ajaxResult = systemServiceFeign.getBatchDetailListByMaterialBaseInfoId(childrenDetailPO.getMaterialBaseInfoId());
|
||||||
|
|||||||
+10
-2
@@ -306,8 +306,16 @@ public class StockOutTaskOrderDomainService {
|
|||||||
if (ObjectUtil.isNull(materialInventoryOldDb)){
|
if (ObjectUtil.isNull(materialInventoryOldDb)){
|
||||||
throw new ServiceException("物料原库位下的物料库存不存在,不能进行出库");
|
throw new ServiceException("物料原库位下的物料库存不存在,不能进行出库");
|
||||||
}
|
}
|
||||||
if (materialInventoryOldDb.getInventoryQuantity().compareTo(actualQuantity) < 0){
|
BigDecimal invQty = materialInventoryOldDb.getInventoryQuantity() != null ? materialInventoryOldDb.getInventoryQuantity() : BigDecimal.ZERO;
|
||||||
throw new ServiceException("物料原库位下的物料库存不足,不能进行出库");
|
if (invQty.compareTo(actualQuantity) < 0){
|
||||||
|
String hint = "";
|
||||||
|
if (invQty.compareTo(BigDecimal.ZERO) == 0 && materialInventoryOldDb.getFreezeQuantity() != null
|
||||||
|
&& materialInventoryOldDb.getFreezeQuantity().compareTo(BigDecimal.ZERO) > 0) {
|
||||||
|
hint = String.format("(该库位库存为0,冻结数量=%s,可能需先解冻)", materialInventoryOldDb.getFreezeQuantity());
|
||||||
|
} else {
|
||||||
|
hint = String.format("库位库存=%s,拣货数量=%s", invQty, actualQuantity);
|
||||||
|
}
|
||||||
|
throw new ServiceException("物料原库位下的物料库存不足,不能进行出库。" + hint + ",物料=" + taskPickingMaterialDetailDO.getMaterialName() + ",库位=" + taskPickingMaterialDetailDO.getStorageLocationCode());
|
||||||
}
|
}
|
||||||
//原库位
|
//原库位
|
||||||
MaterialInventoryDO materialInventoryDOOld = new MaterialInventoryDO();
|
MaterialInventoryDO materialInventoryDOOld = new MaterialInventoryDO();
|
||||||
|
|||||||
Reference in New Issue
Block a user