From 6212cfc3110f36f5acd7adffb2425efc16fec145 Mon Sep 17 00:00:00 2001 From: yiwenpeng <ywp303@163.com> Date: Mon, 9 Dec 2024 09:02:52 +0800 Subject: [PATCH] 二厂库位分配去除高度大于等于 --- src/main/java/com/huaheng/api/tv/controller/TvController.java | 2 +- src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java | 2 +- src/main/java/com/huaheng/mobile/receipt/MobileBatchReceiptController.java | 139 +------------------------------------------------------------------------------------------------------------------------------------------ src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderService.java | 2 ++ src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java | 142 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 147 insertions(+), 140 deletions(-) diff --git a/src/main/java/com/huaheng/api/tv/controller/TvController.java b/src/main/java/com/huaheng/api/tv/controller/TvController.java index 0e328be..753e516 100644 --- a/src/main/java/com/huaheng/api/tv/controller/TvController.java +++ b/src/main/java/com/huaheng/api/tv/controller/TvController.java @@ -489,7 +489,7 @@ public class TvController extends BaseController { @PostMapping("/combinationContainerAndTaskList") @ApiOperation("combinationContainerAndTaskList") @ResponseBody - @ApiLogger(apiName = "组盘待执行和任务待完成", from = "TV") + //@ApiLogger(apiName = "组盘待执行和任务待完成", from = "TV") public TVResult combinationContainerAndTaskList() { //组盘入库数量 int count1 = receiptContainerHeaderService.count(new LambdaQueryWrapper<ReceiptContainerHeader>().eq(ReceiptContainerHeader::getStatus, 0)); diff --git a/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java b/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java index 9cdcb2a..829fb85 100644 --- a/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java +++ b/src/main/java/com/huaheng/api/wcs/service/overrideHandle/OverrideHandleServiceImpl.java @@ -177,7 +177,7 @@ public class OverrideHandleServiceImpl implements OverrideHandleService { } newLocationCode = locationCode; - if (StringUtils.isEmpty(newLocationCode)) { + if (StringUtils.isEmpty(newLocationCode) || newLocationCode.length() > 10) { return AjaxResult.error("没有库位可以分配"); } locationService.updateStatus(newLocationCode, QuantityConstant.STATUS_LOCATION_LOCK, warehouseCode); diff --git a/src/main/java/com/huaheng/mobile/receipt/MobileBatchReceiptController.java b/src/main/java/com/huaheng/mobile/receipt/MobileBatchReceiptController.java index 0b4019b..7a406b6 100644 --- a/src/main/java/com/huaheng/mobile/receipt/MobileBatchReceiptController.java +++ b/src/main/java/com/huaheng/mobile/receipt/MobileBatchReceiptController.java @@ -101,8 +101,6 @@ public class MobileBatchReceiptController { @Resource private InventoryHeaderService inventoryHeaderService; - @Resource - private IApiLogService apiLogService; @PostMapping("/scanContainer") @ApiOperation("移动端入库扫描容器") @@ -544,7 +542,6 @@ public class MobileBatchReceiptController { @ApiOperation("PDA呼叫料盒") @ApiLogger(apiName = "PDA呼叫料盒", from = "PDA") @Log(title = "PDA呼叫料盒", action = BusinessType.OTHER) - @Transactional(rollbackFor = Exception.class) public AjaxResult callBox(@RequestBody @ApiParam(value = "物料号") Map<String, String> param) { String containerCode = param.get("containerCode"); String destinationLocation = param.get("destinationLocation"); @@ -554,143 +551,9 @@ public class MobileBatchReceiptController { if (StringUtils.isEmpty(destinationLocation) && StringUtils.isEmpty(containerCode)) { return AjaxResult.error("库位和容器不能都为空"); } - - InventoryHeader inventoryHeader = null; - //如果没传库位,根据容器查询库存拿到库位 - if (StringUtils.isEmpty(destinationLocation)) { - inventoryHeader = inventoryHeaderService.getOne(new LambdaQueryWrapper<InventoryHeader>().eq(InventoryHeader::getContainerCode, containerCode)); - if (inventoryHeader == null) { - return AjaxResult.error("没有这个库存,容器:", containerCode); - } - destinationLocation = inventoryHeader.getLocationCode(); - } - - //如果没传容器,根据库位查询库存拿到容器 - if (StringUtils.isEmpty(containerCode)) { - inventoryHeader = inventoryHeaderService.getOne(new LambdaQueryWrapper<InventoryHeader>().eq(InventoryHeader::getLocationCode, destinationLocation)); - if (inventoryHeader == null) { - return AjaxResult.error("没有这个库存,库位:", destinationLocation); - } - containerCode = inventoryHeader.getContainerCode(); - } - - if (StringUtils.isNotEmpty(containerCode) && StringUtils.isNotEmpty(destinationLocation)) { - inventoryHeader = inventoryHeaderService.getOne(new LambdaQueryWrapper<InventoryHeader>().eq(InventoryHeader::getContainerCode, containerCode)); - if (inventoryHeader == null) { - return AjaxResult.error("没有这个库存,库位:", destinationLocation); - } - } - - Location location = locationService.getOne(new LambdaQueryWrapper<Location>().eq(Location::getCode, destinationLocation)); - List<Container> list = containerService.list(new LambdaQueryWrapper<Container>().eq(Container::getCode, containerCode)); - if (list.isEmpty()) { - return AjaxResult.error("容器不存在"); - } - if (list.size() > 1) { - return AjaxResult.error("容器大于1"); - } - Container container = list.get(0); - - if (location == null) { - return AjaxResult.error("库位不存在"); - } - if (StringUtils.isEmpty(container.getLocationCode())) { - return AjaxResult.error("容器没有对应库位"); - } - if (StringUtils.isEmpty(location.getContainerCode())) { - return AjaxResult.error("库位没有对应容器"); - } - if (!container.getLocationCode().equals(destinationLocation)) { - return AjaxResult.error("库位不在容器[" + location.getContainerCode() + "]上"); - } - if (!location.getContainerCode().equals(containerCode)) { - return AjaxResult.error("容器不在库位[" + container.getLocationCode() + "]上"); - } - if (!QuantityConstant.STATUS_LOCATION_EMPTY.equals(location.getStatus())) { - return AjaxResult.error("目标库位非空闲"); - } - if (QuantityConstant.STATUS_LOCATION_LOCK.equals(container.getStatus())) { - return AjaxResult.error("容器是锁定状态"); - } - if (QuantityConstant.STATUS_CONTAINER_EMPTY.equals(container.getStatus())) { - return AjaxResult.error("容器是空托盘,不能做补充入库"); - } - - //判断托盘是否已经存在任务 - int taskCount = taskHeaderService.count(new LambdaQueryWrapper<TaskHeader>() - .ne(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_COMPLETED) - .eq(TaskHeader::getContainerCode, containerCode)); - if (taskCount > 0) { - return AjaxResult.error("容器已存在任务"); - } - - //判断托盘是否已经存在入库组盘 - int receiptContainerHeaderCount = receiptContainerHeaderService.count(new LambdaQueryWrapper<ReceiptContainerHeader>() - .ne(ReceiptContainerHeader::getStatus, QuantityConstant.SHIPMENT_CONTAINER_FINISHED) - .eq(ReceiptContainerHeader::getContainerCode, containerCode)); - if (receiptContainerHeaderCount > 0) { - return AjaxResult.error("该托盘已经用于入库组盘"); - } - - //判断托盘是否已经存在出库组盘 - int count = shipmentContainerHeaderService.count(new LambdaQueryWrapper<ShipmentContainerHeader>() - .ne(ShipmentContainerHeader::getStatus, QuantityConstant.SHIPMENT_CONTAINER_FINISHED) - .eq(ShipmentContainerHeader::getContainerCode, containerCode)); - if (count > 0) { - return AjaxResult.error("该托盘已经用于出库组盘"); - } - //自建库位不能呼叫料盒 - if (location.getSelfCreated()) { - return AjaxResult.error("自建库位不能呼叫料盒"); - } - //创建主任务 - TaskHeader taskHeader = new TaskHeader(); - taskHeader.setWarehouseCode(location.getWarehouseCode()); - taskHeader.setCompanyCode(companyCode);//货主 - if (type == QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT) {//补充入库 - taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT); - taskHeader.setTaskType(QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT); - } else if (type == QuantityConstant.TASK_TYPE_WHOLERECEIPT) {//整盘入库 - taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT); - taskHeader.setTaskType(QuantityConstant.TASK_TYPE_WHOLERECEIPT); - } else { - return AjaxResult.error("type不对:" + type); - } - if (inventoryHeader == null) { - return AjaxResult.error("库存不存在"); - } - taskHeader.setWarehouse(inventoryHeader.getWarehouse()); - taskHeader.setWarehouseName(inventoryHeader.getWarehouseName()); - taskHeader.setContainerCode(container.getCode()); - taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD); - taskHeader.setFromLocation(location.getCode()); -// taskHeader.setToLocation(location.getCode()); - taskHeader.setCreated(new Date()); - taskHeader.setCreatedBy(ShiroUtils.getName()); - taskHeader.setLastUpdatedBy(ShiroUtils.getName()); - taskHeader.setLastUpdated(new Date()); - if (taskHeaderService.save(taskHeader)) { - //锁定库位状态 - locationService.updateStatus(location.getCode(), QuantityConstant.STATUS_LOCATION_LOCK); - //containerService.updateStatus(container.getCode(), QuantityConstant.STATUS_LOCATION_LOCK, "CS0001"); - } else { - throw new ServiceException("补充入库主表生成失败!"); - } - - addApiLog("PDA呼叫料盒", taskHeader.getContainerCode() + "/" + taskHeader.getFromLocation()); - return AjaxResult.success(taskHeader.getId()); + return taskHeaderService.callBox(containerCode, destinationLocation, type, companyCode); } - public void addApiLog(String name, String requestBody) { - ApiLog apiLog = new ApiLog(); - apiLog.setApiName(name); - apiLog.setRequestBody(requestBody); - apiLog.setRequestTime(new Date()); - apiLog.setRequestFrom("MOM"); - apiLog.setResponseBy("WMS"); - apiLog.setResponseBody("成功"); - apiLogService.save(apiLog); - } @PostMapping("/searchReceipt") @ApiOperation("移动端查询入库单") diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderService.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderService.java index cfbb24a..332cf1c 100644 --- a/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderService.java +++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderService.java @@ -81,4 +81,6 @@ public interface TaskHeaderService extends IService<TaskHeader> { Integer getShipmentContainerTask(String roadway); List<TaskHeader> getTasksByIds(Integer[] taskIds); + + AjaxResult callBox(String containerCode, String destinationLocation, int type, String companyCode); } diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java index 9585532..3ada1d2 100644 --- a/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java +++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java @@ -32,6 +32,8 @@ import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail; import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService; import com.huaheng.pc.inventory.inventoryHeader.domain.InventoryHeader; import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService; +import com.huaheng.pc.monitor.apilog.domain.ApiLog; +import com.huaheng.pc.monitor.apilog.service.IApiLogService; import com.huaheng.pc.receipt.receiptContainerDetail.domain.ReceiptContainerDetail; import com.huaheng.pc.receipt.receiptContainerDetail.service.ReceiptContainerDetailService; import com.huaheng.pc.receipt.receiptContainerHeader.domain.ReceiptContainerHeader; @@ -60,6 +62,8 @@ import java.util.stream.Collectors; public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHeader> implements TaskHeaderService { @Resource + private IApiLogService apiLogService; + @Resource private ShipmentContainerHeaderService shipmentContainerHeaderService; @Resource private AddressService addressService; @@ -1006,4 +1010,142 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea public List<TaskHeader> getTasksByIds(Integer[] taskIds) { return this.list(new LambdaQueryWrapper<TaskHeader>().in(TaskHeader::getId, Arrays.asList(taskIds))); } + + @Override + @Transactional + public AjaxResult callBox(String containerCode, String destinationLocation, int type, String companyCode) { + InventoryHeader inventoryHeader = null; + //如果没传库位,根据容器查询库存拿到库位 + if (StringUtils.isEmpty(destinationLocation)) { + inventoryHeader = inventoryHeaderService.getOne(new LambdaQueryWrapper<InventoryHeader>().eq(InventoryHeader::getContainerCode, containerCode)); + if (inventoryHeader == null) { + return AjaxResult.error("没有这个库存,容器:", containerCode); + } + destinationLocation = inventoryHeader.getLocationCode(); + } + + //如果没传容器,根据库位查询库存拿到容器 + if (StringUtils.isEmpty(containerCode)) { + inventoryHeader = inventoryHeaderService.getOne(new LambdaQueryWrapper<InventoryHeader>().eq(InventoryHeader::getLocationCode, destinationLocation)); + if (inventoryHeader == null) { + return AjaxResult.error("没有这个库存,库位:", destinationLocation); + } + containerCode = inventoryHeader.getContainerCode(); + } + + if (StringUtils.isNotEmpty(containerCode) && StringUtils.isNotEmpty(destinationLocation)) { + inventoryHeader = inventoryHeaderService.getOne(new LambdaQueryWrapper<InventoryHeader>().eq(InventoryHeader::getContainerCode, containerCode)); + if (inventoryHeader == null) { + return AjaxResult.error("没有这个库存,库位:", destinationLocation); + } + } + + Location location = locationService.getOne(new LambdaQueryWrapper<Location>().eq(Location::getCode, destinationLocation)); + List<Container> list = containerService.list(new LambdaQueryWrapper<Container>().eq(Container::getCode, containerCode)); + if (list.isEmpty()) { + return AjaxResult.error("容器不存在"); + } + if (list.size() > 1) { + return AjaxResult.error("容器大于1"); + } + Container container = list.get(0); + + if (location == null) { + return AjaxResult.error("库位不存在"); + } + if (StringUtils.isEmpty(container.getLocationCode())) { + return AjaxResult.error("容器没有对应库位"); + } + if (StringUtils.isEmpty(location.getContainerCode())) { + return AjaxResult.error("库位没有对应容器"); + } + if (!container.getLocationCode().equals(destinationLocation)) { + return AjaxResult.error("库位不在容器[" + location.getContainerCode() + "]上"); + } + if (!location.getContainerCode().equals(containerCode)) { + return AjaxResult.error("容器不在库位[" + container.getLocationCode() + "]上"); + } + if (!QuantityConstant.STATUS_LOCATION_EMPTY.equals(location.getStatus())) { + return AjaxResult.error("目标库位非空闲"); + } + if (QuantityConstant.STATUS_LOCATION_LOCK.equals(container.getStatus())) { + return AjaxResult.error("容器是锁定状态"); + } + if (QuantityConstant.STATUS_CONTAINER_EMPTY.equals(container.getStatus())) { + return AjaxResult.error("容器是空托盘,不能做补充入库"); + } + + //判断托盘是否已经存在任务 + int taskCount = taskHeaderService.count(new LambdaQueryWrapper<TaskHeader>() + .ne(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_COMPLETED) + .eq(TaskHeader::getContainerCode, containerCode)); + if (taskCount > 0) { + return AjaxResult.error("容器已存在任务"); + } + + //判断托盘是否已经存在入库组盘 + int receiptContainerHeaderCount = receiptContainerHeaderService.count(new LambdaQueryWrapper<ReceiptContainerHeader>() + .ne(ReceiptContainerHeader::getStatus, QuantityConstant.SHIPMENT_CONTAINER_FINISHED) + .eq(ReceiptContainerHeader::getContainerCode, containerCode)); + if (receiptContainerHeaderCount > 0) { + return AjaxResult.error("该托盘已经用于入库组盘"); + } + + //判断托盘是否已经存在出库组盘 + int count = shipmentContainerHeaderService.count(new LambdaQueryWrapper<ShipmentContainerHeader>() + .ne(ShipmentContainerHeader::getStatus, QuantityConstant.SHIPMENT_CONTAINER_FINISHED) + .eq(ShipmentContainerHeader::getContainerCode, containerCode)); + if (count > 0) { + return AjaxResult.error("该托盘已经用于出库组盘"); + } + //自建库位不能呼叫料盒 + if (location.getSelfCreated()) { + return AjaxResult.error("自建库位不能呼叫料盒"); + } + //创建主任务 + TaskHeader taskHeader = new TaskHeader(); + taskHeader.setWarehouseCode(location.getWarehouseCode()); + taskHeader.setCompanyCode(companyCode);//货主 + if (type == QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT) {//补充入库 + taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT); + taskHeader.setTaskType(QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT); + } else if (type == QuantityConstant.TASK_TYPE_WHOLERECEIPT) {//整盘入库 + taskHeader.setInternalTaskType(QuantityConstant.TASK_INTENERTYPE_RECEIPT); + taskHeader.setTaskType(QuantityConstant.TASK_TYPE_WHOLERECEIPT); + } else { + return AjaxResult.error("type不对:" + type); + } + if (inventoryHeader == null) { + return AjaxResult.error("库存不存在"); + } + taskHeader.setWarehouse(inventoryHeader.getWarehouse()); + taskHeader.setWarehouseName(inventoryHeader.getWarehouseName()); + taskHeader.setContainerCode(container.getCode()); + taskHeader.setStatus(QuantityConstant.TASK_STATUS_BUILD); + taskHeader.setFromLocation(location.getCode()); + taskHeader.setCreated(new Date()); + taskHeader.setCreatedBy("PDA:" + ShiroUtils.getName()); + taskHeader.setLastUpdatedBy(ShiroUtils.getName()); + taskHeader.setLastUpdated(new Date()); + if (taskHeaderService.save(taskHeader)) { + //锁定库位状态 + locationService.updateStatus(location.getCode(), QuantityConstant.STATUS_LOCATION_LOCK); + } else { + throw new ServiceException("补充入库主表生成失败!"); + } + + addApiLog("PDA呼叫料盒", taskHeader.getContainerCode() + "/" + taskHeader.getFromLocation()); + return AjaxResult.success(taskHeader.getId()); + } + + public void addApiLog(String name, String requestBody) { + ApiLog apiLog = new ApiLog(); + apiLog.setApiName(name); + apiLog.setRequestBody(requestBody); + apiLog.setRequestTime(new Date()); + apiLog.setRequestFrom("MOM"); + apiLog.setResponseBy("WMS"); + apiLog.setResponseBody("成功"); + apiLogService.save(apiLog); + } } -- libgit2 0.22.2