移位完成后库存上的货主、净重、毛重、体积、面积都没有了bug修改
This commit is contained in:
+20
-5
@@ -1,6 +1,7 @@
|
|||||||
package com.mhd.wms.domain.materialInventory.repository.persistence;
|
package com.mhd.wms.domain.materialInventory.repository.persistence;
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.mhd.common.core.exception.ServiceException;
|
import com.mhd.common.core.exception.ServiceException;
|
||||||
@@ -24,6 +25,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.CollectionUtils;
|
||||||
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -161,7 +163,7 @@ public class MaterialInventoryImpl extends ServiceImpl<MaterialInventoryMapper,
|
|||||||
Map<String, MaterialInventory> materialInventoryAddNowMap = new HashMap<>();
|
Map<String, MaterialInventory> materialInventoryAddNowMap = new HashMap<>();
|
||||||
|
|
||||||
// 批量获取物料基础信息,以获取货主ID(用于查询和key生成)
|
// 批量获取物料基础信息,以获取货主ID(用于查询和key生成)
|
||||||
Map<Long, Long> materialBaseInfoIdToShipperIdMap = new HashMap<>();
|
Map<Long, MaterialBaseInfoPO> materialBaseInfoIdToShipperIdMap = new HashMap<>();
|
||||||
if (!CollectionUtils.isEmpty(materialInventoryDOList)) {
|
if (!CollectionUtils.isEmpty(materialInventoryDOList)) {
|
||||||
Set<Long> materialBaseInfoIds = new HashSet<>();
|
Set<Long> materialBaseInfoIds = new HashSet<>();
|
||||||
for (MaterialInventoryDO materialInventoryDO : materialInventoryDOList) {
|
for (MaterialInventoryDO materialInventoryDO : materialInventoryDOList) {
|
||||||
@@ -178,7 +180,8 @@ public class MaterialInventoryImpl extends ServiceImpl<MaterialInventoryMapper,
|
|||||||
if (!CollectionUtils.isEmpty(materialBaseInfoList)) {
|
if (!CollectionUtils.isEmpty(materialBaseInfoList)) {
|
||||||
MaterialBaseInfoPO materialBaseInfoPO = materialBaseInfoList.get(0);
|
MaterialBaseInfoPO materialBaseInfoPO = materialBaseInfoList.get(0);
|
||||||
if (materialBaseInfoPO.getShipperId() != null) {
|
if (materialBaseInfoPO.getShipperId() != null) {
|
||||||
materialBaseInfoIdToShipperIdMap.put(materialBaseInfoId, materialBaseInfoPO.getShipperId());
|
// materialBaseInfoIdToShipperIdMap.put(materialBaseInfoId, materialBaseInfoPO.getShipperId());
|
||||||
|
materialBaseInfoIdToShipperIdMap.put(materialBaseInfoId, materialBaseInfoPO);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
@@ -191,8 +194,14 @@ public class MaterialInventoryImpl extends ServiceImpl<MaterialInventoryMapper,
|
|||||||
for (MaterialInventoryDO materialInventoryDO : materialInventoryDOList) {
|
for (MaterialInventoryDO materialInventoryDO : materialInventoryDOList) {
|
||||||
// 获取货主ID(优先使用materialInventoryDO中的,如果没有则从物料基础信息中获取)
|
// 获取货主ID(优先使用materialInventoryDO中的,如果没有则从物料基础信息中获取)
|
||||||
Long shipperId = materialInventoryDO.getShipperId();
|
Long shipperId = materialInventoryDO.getShipperId();
|
||||||
|
String shipperName = "";
|
||||||
|
String shipperCode = "";
|
||||||
if (shipperId == null && materialInventoryDO.getMaterialBaseInfoId() != null) {
|
if (shipperId == null && materialInventoryDO.getMaterialBaseInfoId() != null) {
|
||||||
shipperId = materialBaseInfoIdToShipperIdMap.get(materialInventoryDO.getMaterialBaseInfoId());
|
// shipperId = materialBaseInfoIdToShipperIdMap.get(materialInventoryDO.getMaterialBaseInfoId());
|
||||||
|
MaterialBaseInfoPO materialBaseInfoPO = materialBaseInfoIdToShipperIdMap.get(materialInventoryDO.getMaterialBaseInfoId());
|
||||||
|
shipperId = materialBaseInfoPO.getShipperId();
|
||||||
|
shipperName = materialBaseInfoPO.getShipperName();
|
||||||
|
shipperCode = materialBaseInfoPO.getShipperCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO 若数据量升级 后期优化
|
//TODO 若数据量升级 后期优化
|
||||||
@@ -201,8 +210,8 @@ public class MaterialInventoryImpl extends ServiceImpl<MaterialInventoryMapper,
|
|||||||
|
|
||||||
if (materialInventoryDO.getStorageLocationId() != null && materialInventoryDO.getMaterialBaseInfoId() != null) {
|
if (materialInventoryDO.getStorageLocationId() != null && materialInventoryDO.getMaterialBaseInfoId() != null) {
|
||||||
// 使用 LambdaQueryWrapper 构造查询条件
|
// 使用 LambdaQueryWrapper 构造查询条件
|
||||||
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<MaterialInventory> wrapper =
|
LambdaQueryWrapper<MaterialInventory> wrapper =
|
||||||
new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<MaterialInventory>()
|
new LambdaQueryWrapper<MaterialInventory>()
|
||||||
.eq(MaterialInventory::getStorageLocationId, materialInventoryDO.getStorageLocationId())
|
.eq(MaterialInventory::getStorageLocationId, materialInventoryDO.getStorageLocationId())
|
||||||
.eq(MaterialInventory::getMaterialBaseInfoId, materialInventoryDO.getMaterialBaseInfoId())
|
.eq(MaterialInventory::getMaterialBaseInfoId, materialInventoryDO.getMaterialBaseInfoId())
|
||||||
.eq(MaterialInventory::getDelFlag, 1);
|
.eq(MaterialInventory::getDelFlag, 1);
|
||||||
@@ -228,6 +237,12 @@ public class MaterialInventoryImpl extends ServiceImpl<MaterialInventoryMapper,
|
|||||||
BeanUtils.copyProperties(materialInventoryDO, materialInventory);
|
BeanUtils.copyProperties(materialInventoryDO, materialInventory);
|
||||||
// 确保把货主字段带到实体里
|
// 确保把货主字段带到实体里
|
||||||
materialInventory.setShipperId(shipperId);
|
materialInventory.setShipperId(shipperId);
|
||||||
|
if (StringUtils.isEmpty(materialInventory.getShipperName())){
|
||||||
|
materialInventory.setShipperName(shipperName);
|
||||||
|
}
|
||||||
|
if (StringUtils.isEmpty(materialInventory.getShipperCode())){
|
||||||
|
materialInventory.setShipperCode(shipperCode);
|
||||||
|
}
|
||||||
// 如果批次号、容器ID、物料状态等字段在唯一性约束中,应该保留;否则,使用第一个值
|
// 如果批次号、容器ID、物料状态等字段在唯一性约束中,应该保留;否则,使用第一个值
|
||||||
// 由于唯一性约束只包含storage_location_id和material_base_info_id,我们保留这些字段的值
|
// 由于唯一性约束只包含storage_location_id和material_base_info_id,我们保留这些字段的值
|
||||||
materialInventoryList.add(materialInventory);
|
materialInventoryList.add(materialInventory);
|
||||||
|
|||||||
+9
-1
@@ -419,8 +419,13 @@ public class ShiftManageDomainService {
|
|||||||
shiftMaterialDetailDO.setShiftNumber(shiftNumber);
|
shiftMaterialDetailDO.setShiftNumber(shiftNumber);
|
||||||
List<ShiftMaterialDetailPO> shiftMaterialDetailPOList = shiftMaterialDetailService.queryListChildren(shiftMaterialDetailDO);
|
List<ShiftMaterialDetailPO> shiftMaterialDetailPOList = shiftMaterialDetailService.queryListChildren(shiftMaterialDetailDO);
|
||||||
for (ShiftMaterialDetailPO shiftMaterialDetailPO : shiftMaterialDetailPOList){
|
for (ShiftMaterialDetailPO shiftMaterialDetailPO : shiftMaterialDetailPOList){
|
||||||
|
MaterialInventory materialInventoryOldDb = materialInventoryService.getById(shiftMaterialDetailPO.getMaterialInventoryId());
|
||||||
BigDecimal shiftQuantity = shiftMaterialDetailPO.getShiftQuantity();
|
BigDecimal shiftQuantity = shiftMaterialDetailPO.getShiftQuantity();
|
||||||
//构建新物料库存信息
|
//构建新物料库存信息
|
||||||
|
shiftMaterialDetailPO.setNetWeight(materialInventoryOldDb.getNetWeight());
|
||||||
|
shiftMaterialDetailPO.setGrossWeight(materialInventoryOldDb.getGrossWeight());
|
||||||
|
shiftMaterialDetailPO.setVolume(materialInventoryOldDb.getVolume());
|
||||||
|
shiftMaterialDetailPO.setArea(materialInventoryOldDb.getArea());
|
||||||
materialInventoryNowList.add(genMaterialInventory(shiftMaterialDetailPO));
|
materialInventoryNowList.add(genMaterialInventory(shiftMaterialDetailPO));
|
||||||
List<ShiftMaterialDetailPO> shiftMaterialDetailPOChildrenList = shiftMaterialDetailPO.getChildren();
|
List<ShiftMaterialDetailPO> shiftMaterialDetailPOChildrenList = shiftMaterialDetailPO.getChildren();
|
||||||
for (ShiftMaterialDetailPO shiftMaterialDetailPOChildren : shiftMaterialDetailPOChildrenList){
|
for (ShiftMaterialDetailPO shiftMaterialDetailPOChildren : shiftMaterialDetailPOChildrenList){
|
||||||
@@ -428,7 +433,6 @@ public class ShiftManageDomainService {
|
|||||||
//构建新物料库存信息
|
//构建新物料库存信息
|
||||||
materialInventoryNowList.add(genMaterialInventory(shiftMaterialDetailPOChildren));
|
materialInventoryNowList.add(genMaterialInventory(shiftMaterialDetailPOChildren));
|
||||||
};
|
};
|
||||||
MaterialInventory materialInventoryOldDb = materialInventoryService.getById(shiftMaterialDetailPO.getMaterialInventoryId());
|
|
||||||
if (materialInventoryOldDb.getInventoryQuantity().compareTo(shiftQuantity) < 0){
|
if (materialInventoryOldDb.getInventoryQuantity().compareTo(shiftQuantity) < 0){
|
||||||
throw new ServiceException("物料原库位下的物料库存不足,不能进行移位");
|
throw new ServiceException("物料原库位下的物料库存不足,不能进行移位");
|
||||||
}
|
}
|
||||||
@@ -525,6 +529,10 @@ public class ShiftManageDomainService {
|
|||||||
materialInventoryDONow.setContainerTypeName(shiftMaterialDetailPO.getContainerTypeName());
|
materialInventoryDONow.setContainerTypeName(shiftMaterialDetailPO.getContainerTypeName());
|
||||||
materialInventoryDONow.setInventoryQuantity(shiftMaterialDetailPO.getShiftQuantity());
|
materialInventoryDONow.setInventoryQuantity(shiftMaterialDetailPO.getShiftQuantity());
|
||||||
materialInventoryDONow.setAllocationQuantity(shiftMaterialDetailPO.getShiftQuantity());
|
materialInventoryDONow.setAllocationQuantity(shiftMaterialDetailPO.getShiftQuantity());
|
||||||
|
materialInventoryDONow.setNetWeight(shiftMaterialDetailPO.getNetWeight());
|
||||||
|
materialInventoryDONow.setGrossWeight(shiftMaterialDetailPO.getGrossWeight());
|
||||||
|
materialInventoryDONow.setVolume(shiftMaterialDetailPO.getVolume());
|
||||||
|
materialInventoryDONow.setArea(shiftMaterialDetailPO.getArea());
|
||||||
materialInventoryDONow.setOrganizationId(loginUser.getUserPo().getOrganizationId());
|
materialInventoryDONow.setOrganizationId(loginUser.getUserPo().getOrganizationId());
|
||||||
materialInventoryDONow.setOrganizationName(loginUser.getUserPo().getOrganizationName());
|
materialInventoryDONow.setOrganizationName(loginUser.getUserPo().getOrganizationName());
|
||||||
materialInventoryDONow.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
materialInventoryDONow.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
|
||||||
|
|||||||
Reference in New Issue
Block a user