From edb4846f4d3cf72981f83983973ed0c6ae376d93 Mon Sep 17 00:00:00 2001 From: youjie <272855983@qq.com> Date: Fri, 24 Mar 2023 14:47:02 +0800 Subject: [PATCH] 1. 生成任务,库存容器锁定 --- huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/container/service/IContainerService.java | 2 +- huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/container/service/impl/ContainerServiceImpl.java | 7 ++++--- huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/location/service/ILocationService.java | 2 +- huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/location/service/impl/LocationServiceImpl.java | 6 +++--- huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/IInventoryHeaderService.java | 11 ++++++----- huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryHeaderServiceImpl.java | 40 +++++++++++++++++++++++++++++++--------- huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerHeaderServiceImpl.java | 11 ++++++++++- huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java | 16 +++++++--------- 8 files changed, 63 insertions(+), 32 deletions(-) diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/container/service/IContainerService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/container/service/IContainerService.java index 32f5837..7c6c222 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/container/service/IContainerService.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/container/service/IContainerService.java @@ -33,7 +33,7 @@ public interface IContainerService extends IService<Container> { /** * 判断系统是否已经有同样的库位号,如果有证明数据混乱了 */ - boolean havaLocationCodeByContainer(String locationCode, String warehouseCode); + boolean havaLocationCodeByContainer(String locationCode, String containerCode, String warehouseCode); List<Container> getContainerListByCodeList(List<String> containCodeList, String warehouseCode); } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/container/service/impl/ContainerServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/container/service/impl/ContainerServiceImpl.java index 7e14770..dc5c6a7 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/container/service/impl/ContainerServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/container/service/impl/ContainerServiceImpl.java @@ -100,7 +100,7 @@ public class ContainerServiceImpl extends ServiceImpl<ContainerMapper, Container } boolean success = false; if (StringUtils.isNotEmpty(locationCode)) { - success = havaLocationCodeByContainer(locationCode, warehouseCode); + success = havaLocationCodeByContainer(locationCode, containerCode, warehouseCode); if (success) { throw new JeecgBootException("容器表已经存在这个库位号,不能再写入"); } @@ -133,9 +133,10 @@ public class ContainerServiceImpl extends ServiceImpl<ContainerMapper, Container } @Override - public boolean havaLocationCodeByContainer(String locationCode, String warehouseCode) { + public boolean havaLocationCodeByContainer(String locationCode, String containerCode, String warehouseCode) { LambdaQueryWrapper<Container> containerLambdaQueryWrapper = Wrappers.lambdaQuery(); - containerLambdaQueryWrapper.eq(Container::getLocationCode, locationCode).eq(Container::getWarehouseCode, warehouseCode); + containerLambdaQueryWrapper.eq(Container::getLocationCode, locationCode).ne(Container::getCode, containerCode).eq(Container::getWarehouseCode, + warehouseCode); Container container = getOne(containerLambdaQueryWrapper); if (container == null) { return false; diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/location/service/ILocationService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/location/service/ILocationService.java index e7d5f56..44b67d4 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/location/service/ILocationService.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/location/service/ILocationService.java @@ -54,7 +54,7 @@ public interface ILocationService extends IService<Location> { /** * 判断系统是否已经有同样的托盘号,如果有证明数据混乱了 */ - boolean havaContainerCodeInLocation(String containerCode, String warehouseCode); + boolean havaContainerCodeInLocation(String containerCode, String locationCode, String warehouseCode); List<Location> getContainerInLocation(String containerCode, String containerStatus, String locationCode, String warehouseCode); diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/location/service/impl/LocationServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/location/service/impl/LocationServiceImpl.java index ea786fd..8a531ba 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/location/service/impl/LocationServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/config/location/service/impl/LocationServiceImpl.java @@ -114,7 +114,7 @@ public class LocationServiceImpl extends ServiceImpl<LocationMapper, Location> i boolean success = false; // 如果这个托盘号已经在库位表里,那么不能再写入 if (StringUtils.isNotEmpty(containerCode)) { - success = havaContainerCodeInLocation(containerCode, warehouseCode); + success = havaContainerCodeInLocation(containerCode, locationCode, warehouseCode); if (success) { throw new JeecgBootException("库位表已经存在这个容器号,不能再写入"); } @@ -359,9 +359,9 @@ public class LocationServiceImpl extends ServiceImpl<LocationMapper, Location> i } @Override - public boolean havaContainerCodeInLocation(String containerCode, String warehouseCode) { + public boolean havaContainerCodeInLocation(String containerCode, String locationCode, String warehouseCode) { LambdaQueryWrapper<Location> locationLambdaQueryWrapper = Wrappers.lambdaQuery(); - locationLambdaQueryWrapper.eq(Location::getContainerCode, containerCode).eq(Location::getWarehouseCode, warehouseCode); + locationLambdaQueryWrapper.eq(Location::getContainerCode, containerCode).ne(Location::getCode, locationCode).eq(Location::getWarehouseCode, warehouseCode); Location location = getOne(locationLambdaQueryWrapper); if (location == null) { return false; diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/IInventoryHeaderService.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/IInventoryHeaderService.java index 327390a..4982320 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/IInventoryHeaderService.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/IInventoryHeaderService.java @@ -1,12 +1,11 @@ package org.jeecg.modules.wms.inventory.inventoryHeader.service; -import com.alipay.api.domain.Inventory; -import com.baomidou.mybatisplus.extension.service.IService; -import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryHeader; -import org.springframework.beans.factory.annotation.Autowired; import java.io.Serializable; import java.util.Collection; -import java.util.List; + +import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryHeader; + +import com.baomidou.mybatisplus.extension.service.IService; /** * @Description: 库存表 @@ -27,4 +26,6 @@ public interface IInventoryHeaderService extends IService<InventoryHeader> { public void delBatchMain(Collection<? extends Serializable> idList); InventoryHeader getInventoryHeaderByContainerCode(String containerCode, String warehouseCode); + + boolean updateInventoryContainerStatusByContainerCode(String containerCode, String warehouseCode); } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryHeaderServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryHeaderServiceImpl.java index 26257ce..5cf7fa1 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryHeaderServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryHeaderServiceImpl.java @@ -1,20 +1,23 @@ package org.jeecg.modules.wms.inventory.inventoryHeader.service.impl; -import com.alipay.api.domain.Inventory; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import java.io.Serializable; +import java.util.Collection; + +import javax.annotation.Resource; + +import org.jeecg.modules.wms.config.container.entity.Container; +import org.jeecg.modules.wms.config.container.service.IContainerService; import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryHeader; import org.jeecg.modules.wms.inventory.inventoryHeader.mapper.InventoryDetailMapper; import org.jeecg.modules.wms.inventory.inventoryHeader.mapper.InventoryHeaderMapper; import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryHeaderService; -import org.springframework.stereotype.Service; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.io.Serializable; -import java.lang.ref.WeakReference; -import java.util.List; -import java.util.Collection; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; /** * @Description: 库存表 @@ -29,6 +32,10 @@ public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMappe private InventoryHeaderMapper inventoryHeaderMapper; @Autowired private InventoryDetailMapper inventoryDetailMapper; + @Resource + private IContainerService containerService; + @Resource + private IInventoryHeaderService inventoryHeaderService; @Override @Transactional @@ -54,4 +61,19 @@ public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMappe return inventoryHeader; } + @Override + public boolean updateInventoryContainerStatusByContainerCode(String containerCode, String warehouseCode) { + Container container = containerService.getContainerByCode(containerCode, warehouseCode); + if (container == null) { + return false; + } + InventoryHeader inventoryHeader = inventoryHeaderService.getInventoryHeaderByContainerCode(containerCode, warehouseCode); + if (inventoryHeader != null) { + inventoryHeader.setContainerStatus(container.getStatus()); + boolean success = inventoryHeaderService.updateById(inventoryHeader); + return success; + } + return false; + } + } diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerHeaderServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerHeaderServiceImpl.java index 35da4f7..9a3543a 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerHeaderServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/receipt/receiptContainerHeader/service/impl/ReceiptContainerHeaderServiceImpl.java @@ -9,10 +9,12 @@ import java.util.stream.Collectors; import javax.annotation.Resource; import org.jeecg.common.api.vo.Result; +import org.jeecg.common.exception.JeecgBootException; import org.jeecg.modules.wms.config.container.entity.Container; import org.jeecg.modules.wms.config.container.service.IContainerService; import org.jeecg.modules.wms.config.location.entity.Location; import org.jeecg.modules.wms.config.location.service.ILocationService; +import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryHeaderService; import org.jeecg.modules.wms.receipt.receiptContainerHeader.entity.ReceiptContainerDetail; import org.jeecg.modules.wms.receipt.receiptContainerHeader.entity.ReceiptContainerHeader; import org.jeecg.modules.wms.receipt.receiptContainerHeader.mapper.ReceiptContainerDetailMapper; @@ -33,7 +35,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.alibaba.fastjson.JSON; -import org.jeecg.common.exception.JeecgBootException; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -70,6 +71,8 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl<ReceiptContai private IReceiptDetailService receiptDetailService; @Resource private IReceiptHeaderService receiptHeaderService; + @Resource + private IInventoryHeaderService inventoryHeaderService; @Override @Transactional @@ -208,6 +211,12 @@ public class ReceiptContainerHeaderServiceImpl extends ServiceImpl<ReceiptContai if (!success) { throw new JeecgBootException("生成任务时,更新入库组盘头失败"); } + if (receiptContainerHeader.getTaskType() == QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT) { + success = inventoryHeaderService.updateInventoryContainerStatusByContainerCode(containerCode, warehouseCode); + if (!success) { + throw new JeecgBootException("生成任务时, 更新库存头失败"); + } + } success = receiptDetailService.updateBatchById(receiptDetailList); if (!success) { throw new JeecgBootException("更新入库单明细失败"); diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java index 6c5ff06..0e7560f 100644 --- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java +++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/shipment/shipmentCombination/service/impl/ShipmentCombinationServiceImpl.java @@ -15,7 +15,6 @@ import org.jeecg.modules.wms.config.material.entity.Material; import org.jeecg.modules.wms.config.material.service.IMaterialService; import org.jeecg.modules.wms.config.parameterConfiguration.service.IParameterConfigurationService; import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryDetail; -import org.jeecg.modules.wms.inventory.inventoryHeader.entity.InventoryHeader; import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryDetailService; import org.jeecg.modules.wms.inventory.inventoryHeader.service.IInventoryHeaderService; import org.jeecg.modules.wms.receipt.receiptContainerHeader.entity.ReceiptContainerHeader; @@ -41,6 +40,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.alibaba.fastjson.JSON; +import com.aliyun.oss.ServiceException; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -342,7 +342,9 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi if (shipmentContainerHeader != null) { if (taskType != shipmentContainerHeader.getTaskType()) { shipmentContainerHeader.setTaskType(taskType); - shipmentContainerHeaderService.updateById(shipmentContainerHeader); + if (!shipmentContainerHeaderService.updateById(shipmentContainerHeader)) { + throw new ServiceException("更新出库组盘头任务类型失败"); + } } } else { shipmentContainerHeader = new ShipmentContainerHeader(); @@ -560,13 +562,9 @@ public class ShipmentCombinationServiceImpl implements IShipmentCombinationServi if (!success) { throw new JeecgBootException("生成出库任务时, 更新出库组盘头失败"); } - InventoryHeader inventoryHeader = inventoryHeaderService.getInventoryHeaderByContainerCode(containerCode, warehouseCode); - if (inventoryHeader != null) { - inventoryHeader.setContainerStatus(container.getStatus()); - success = inventoryHeaderService.updateById(inventoryHeader); - if (!success) { - throw new JeecgBootException("生成出库任务时, 更新库存头失败"); - } + success = inventoryHeaderService.updateInventoryContainerStatusByContainerCode(containerCode, warehouseCode); + if (!success) { + throw new JeecgBootException("生成出库任务时, 更新库存头失败"); } LogRecordContext.putVariable("taskHeader", taskHeader);// 操作日志收集 LogRecordContext.putVariable("shipmentContainerDetailList", shipmentContainerDetailList);// 操作日志收集 -- libgit2 0.22.2