修改移位后生成的库存批次属性维护的值没保存上

This commit is contained in:
zhou-hongcheng
2026-03-13 10:29:48 +08:00
parent a4aeb1489a
commit 4bd8005e1e
5 changed files with 70 additions and 4 deletions
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO;
import com.mhd.wms.domain.shiftMaterialDetail.repository.todo.ShiftMaterialDetailDO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -19,6 +19,7 @@ import com.mhd.wms.domain.inventoryStandingDetail.repository.todo.InventoryStand
import com.mhd.wms.domain.materialInventory.entity.MaterialInventory;
import com.mhd.wms.domain.materialInventory.repository.facade.IMaterialInventoryService;
import com.mhd.wms.domain.materialInventory.repository.todo.MaterialInventoryDO;
import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO;
import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.facade.IOutMaterialDetailSerialNumberService;
import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.po.OutMaterialDetailSerialNumberPO;
import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.todo.OutMaterialDetailSerialNumberDO;
@@ -37,6 +38,8 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -274,7 +277,7 @@ public class ShiftManageDomainService {
.set(ShiftManage::getUpdateTime, new Date())
.eq(ShiftManage::getShiftManageId, shiftManageDO.getShiftManageId()));
//修改库存
updateMaterialInventory(shiftManagePO.getShiftNumber());
updateMaterialInventory(shiftManagePO.getShiftNumber(),shiftManageDO.getShiftMaterialDetailList());
//生成移位追溯记录
genInventoryStandingDetail(shiftManagePO);
return true;
@@ -305,7 +308,7 @@ public class ShiftManageDomainService {
.set(ShiftManage::getUpdateTime, new Date())
.eq(ShiftManage::getShiftManageId, shiftManageDO.getShiftManageId()));
//修改库存
updateMaterialInventory(shiftManagePO.getShiftNumber());
updateMaterialInventory(shiftManagePO.getShiftNumber(),shiftManageDO.getShiftMaterialDetailList());
//生成移位追溯记录
genInventoryStandingDetail(shiftManagePO);
return true;
@@ -412,7 +415,7 @@ public class ShiftManageDomainService {
//移位完成
if (shiftStatus == 4){
//修改库存
updateMaterialInventory(shiftManagePO.getShiftNumber());
updateMaterialInventory(shiftManagePO.getShiftNumber(),shiftManageDO.getShiftMaterialDetailList());
//生成移位追溯记录
genInventoryStandingDetail(shiftManagePO);
}
@@ -426,16 +429,21 @@ public class ShiftManageDomainService {
* @return Boolean
*/
@Transactional(rollbackFor = Exception.class)
public void updateMaterialInventory(String shiftNumber){
public void updateMaterialInventory(String shiftNumber,List<ShiftMaterialDetailDO> shiftMaterialDetailList){
List<MaterialInventoryDO> materialInventoryOldList = new ArrayList<>();
List<MaterialInventoryDO> materialInventoryNowList = new ArrayList<>();
ShiftMaterialDetailDO shiftMaterialDetailDO = new ShiftMaterialDetailDO();
shiftMaterialDetailDO.setShiftNumber(shiftNumber);
List<ShiftMaterialDetailPO> shiftMaterialDetailPOList = shiftMaterialDetailService.queryListChildren(shiftMaterialDetailDO);
Map<String, List<MaterialMoreDetailPO>> MaterialMoreDetailMap = shiftMaterialDetailList.stream().collect(Collectors.toMap(
ShiftMaterialDetailDO::getShiftNumber,
ShiftMaterialDetailDO::getMaterialMoreDetailList
));
for (ShiftMaterialDetailPO shiftMaterialDetailPO : shiftMaterialDetailPOList){
MaterialInventory materialInventoryOldDb = materialInventoryService.getById(shiftMaterialDetailPO.getMaterialInventoryId());
BigDecimal shiftQuantity = shiftMaterialDetailPO.getShiftQuantity();
//构建新物料库存信息
shiftMaterialDetailPO.setMaterialMoreDetailList(MaterialMoreDetailMap.get(shiftMaterialDetailPO.getShiftNumber()));
// shiftMaterialDetailPO.setNetWeight(materialInventoryOldDb.getNetWeight());
// shiftMaterialDetailPO.setGrossWeight(materialInventoryOldDb.getGrossWeight());
// shiftMaterialDetailPO.setVolume(materialInventoryOldDb.getVolume());
@@ -530,8 +538,10 @@ public class ShiftManageDomainService {
queryWrapper.eq(MaterialInventory::getContainerId,shiftMaterialDetailPO.getContainerId());
}
MaterialInventory materialInventoryDb = materialInventoryService.getOne(queryWrapper);
List<MaterialMoreDetailPO> materialMoreDetailList = shiftMaterialDetailPO.getMaterialMoreDetailList();
if (ObjectUtil.isNull(materialInventoryDb)){
MaterialInventoryDO materialInventoryDONow = new MaterialInventoryDO();
BatchAttributeAssignment(materialMoreDetailList, materialInventoryDONow);//批次属性赋值
materialInventoryDONow.setMaterialBaseInfoId(shiftMaterialDetailPO.getMaterialBaseInfoId());
materialInventoryDONow.setWarehouseId(shiftMaterialDetailPO.getNewWarehouseId());
materialInventoryDONow.setWarehouseCode(shiftMaterialDetailPO.getNewWarehouseCode());
@@ -568,4 +578,50 @@ public class ShiftManageDomainService {
return materialInventoryDONow;
}
}
private void BatchAttributeAssignment(List<MaterialMoreDetailPO> materialMoreDetailList, MaterialInventoryDO materialInventoryDONow) {
for (MaterialMoreDetailPO materialMoreDetailPO : materialMoreDetailList) {
if (materialMoreDetailPO == null || materialMoreDetailPO.getBatchLabels() == null) {
continue;
}
String attributeValue = materialMoreDetailPO.getAttributeValue();
switch (materialMoreDetailPO.getBatchLabels()) {
case "生产日期":
if (attributeValue != null && !attributeValue.isEmpty()) {
materialInventoryDONow.setProductionDate(stringToDate(attributeValue));
}
break;
case "过期日期":
if (attributeValue != null && !attributeValue.isEmpty()) {
materialInventoryDONow.setExpiryDate(stringToDate(attributeValue));
}
break;
case "存货日期":
if (attributeValue != null && !attributeValue.isEmpty()) {
materialInventoryDONow.setInventoryDate(stringToDate(attributeValue));
}
break;
case "Batch Ref NO's":
materialInventoryDONow.setBatchRefNo(attributeValue);
break;
case "Sheet Ref NO's":
materialInventoryDONow.setSheetRefNo(attributeValue);
break;
case "箱号/卡板号":
materialInventoryDONow.setBoxPalletNo(attributeValue);
break;
default:
break;
}
}
}
public Date stringToDate(String dateStr) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
return sdf.parse(dateStr);
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
}
@@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO;
import com.mhd.wms.domain.outMaterialDetailSerialNumber.repository.todo.OutMaterialDetailSerialNumberDO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -269,4 +270,7 @@ public class ShiftMaterialDetailDO extends BaseVOEntity {
@ApiModelProperty("序列号")
private List<OutMaterialDetailSerialNumberDO> materialDetailSerialNumberList;
@ApiModelProperty("批次属性")
private List<MaterialMoreDetailPO> materialMoreDetailList;
}
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO;
import com.mhd.wms.domain.shiftMaterialDetail.repository.po.ShiftMoveMaterialQuantityPO;
import com.mhd.wms.interfaces.dto.shiftMaterialDetail.ShiftMaterialDetailDTO;
import io.swagger.annotations.ApiModelProperty;
@@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.mhd.common.core.annotation.Excel;
import com.mhd.common.core.web.domain.BaseVOEntity;
import com.mhd.wms.domain.materialMoreDetail.repository.po.MaterialMoreDetailPO;
import com.mhd.wms.interfaces.dto.outMaterialDetailSerialNumber.OutMaterialDetailSerialNumberDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -274,4 +275,7 @@ public class ShiftMaterialDetailDTO extends BaseVOEntity {
@ApiModelProperty("序列号")
private List<OutMaterialDetailSerialNumberDTO> materialDetailSerialNumberList;
@ApiModelProperty("批次属性")
private List<MaterialMoreDetailPO> materialMoreDetailList;
}