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