From f5f205cec6a7852ca39f1b1f8d4e04af8b37d1d7 Mon Sep 17 00:00:00 2001
From: youjie <j.you@huahengweld.com>
Date: Tue, 23 Feb 2021 13:55:05 +0800
Subject: [PATCH] 限制移库任务只能在同巷道里进行

---
 src/main/java/com/huaheng/pc/task/taskHeader/service/TaskHeaderServiceImpl.java | 48 ++++++++++++++++++++++++++++++++++++------------
 src/main/java/com/huaheng/pc/task/taskHeader/service/TransferTaskService.java   |  3 +++
 src/main/resources/templates/monitor/locationstatus/locationstatus.html         |  4 ++--
 3 files changed, 41 insertions(+), 14 deletions(-)

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 510fd04..ed4f76e 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
@@ -178,9 +178,12 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
             taskDetail1.setCompanyCode(taskHeader.getCompanyCode());
             LambdaQueryWrapper<TaskDetail> td = Wrappers.lambdaQuery(taskDetail1);
             List<TaskDetail> taskDetailList = taskDetailService.list(td);
-            TaskDetail taskDetail = taskDetailList.get(0);
-            if (taskDetail == null) {
-                throw new ServiceException("任务明细条目错误");
+            TaskDetail taskDetail = null;
+            if(taskDetailList != null && taskDetailList.size() > 0) {
+                taskDetail = taskDetailList.get(0);
+                if (taskDetail == null) {
+                    throw new ServiceException("任务明细条目错误");
+                }
             }
             //删除子任务
             LambdaQueryWrapper<TaskDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
@@ -231,6 +234,20 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
                     //更新托盘、库位状态
                     locationService.updateStatus(taskHeader.getToLocation(), "empty");
                 }
+                LambdaQueryWrapper<InventoryHeader> inventoryHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
+                inventoryHeaderLambdaQueryWrapper.eq(InventoryHeader::getContainerCode, taskHeader.getContainerCode());
+                InventoryHeader inventoryHeader = inventoryHeaderService.getOne(inventoryHeaderLambdaQueryWrapper);
+                Container container = new Container();
+                container.setStatus("empty");
+                if(inventoryHeader != null) {
+                    if("some".equals(inventoryHeader.getContainerStatus())) {
+                        container.setStatus("some");
+                    }
+                }
+                container.setLocationCode(taskHeader.getFromLocation());
+                LambdaUpdateWrapper<Container> containerUpdateWrapper = Wrappers.lambdaUpdate();
+                containerUpdateWrapper.eq(Container::getCode, taskHeader.getContainerCode());
+                containerService.update(container, containerUpdateWrapper);
             }
             if (taskHeader.getInternalTaskType().equals(QuantityConstant.TASK_INTENERTYPE_WORK)) {
                 if (taskHeader.getFromLocation() != null) {
@@ -260,17 +277,24 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
                 if (StringUtils.isNotEmpty(taskHeader.getToLocation())) {
                     //更新托盘、库位状态
                     locationService.updateStatus(taskHeader.getToLocation(), "empty");
-                    if(taskHeader.getTaskType().equals(QuantityConstant.TASK_TYPE_SUPPLEMENTRECEIPT)) {
-                        LambdaQueryWrapper<ReceiptContainerHeader> lambda = Wrappers.lambdaQuery();
-                        lambda.eq(ReceiptContainerHeader::getContainerCode, taskHeader.getContainerCode())
-                                .ne(ReceiptContainerHeader::getStatus, QuantityConstant.RECEIPT_CONTAINER_FINISHED)
-                                .eq(ReceiptContainerHeader::getWarehouseCode, ShiroUtils.getWarehouseCode());
-                        ReceiptContainerHeader receiptContainerHeader = receiptContainerHeaderService.getOne(lambda);
-                        receiptContainerHeader.setToLocation("");
-                        receiptContainerHeaderService.update(receiptContainerHeader, lambda);
+                    LambdaQueryWrapper<ReceiptContainerHeader> lambda = Wrappers.lambdaQuery();
+                    lambda.eq(ReceiptContainerHeader::getContainerCode, taskHeader.getContainerCode())
+                            .ne(ReceiptContainerHeader::getStatus, QuantityConstant.RECEIPT_CONTAINER_FINISHED)
+                            .eq(ReceiptContainerHeader::getWarehouseCode, ShiroUtils.getWarehouseCode());
+                    ReceiptContainerHeader receiptContainerHeader = receiptContainerHeaderService.getOne(lambda);
+                    receiptContainerHeader.setToLocation("");
+                    receiptContainerHeaderService.update(receiptContainerHeader, lambda);
+                    LambdaQueryWrapper<ReceiptContainerDetail> receiptContainerDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
+                    receiptContainerDetailLambdaQueryWrapper.eq(ReceiptContainerDetail::getReceiptContainerId, receiptContainerHeader.getId());
+                    List<ReceiptContainerDetail> receiptContainerDetailList = receiptContainerDetailService.list(receiptContainerDetailLambdaQueryWrapper);
+                    for(ReceiptContainerDetail receiptContainerDetail : receiptContainerDetailList) {
+                        LambdaQueryWrapper<ReceiptContainerDetail> receiptContainerDetailLambdaQueryWrapper1 = Wrappers.lambdaQuery();
+                        receiptContainerDetailLambdaQueryWrapper1.eq(ReceiptContainerDetail::getId, receiptContainerDetail.getId());
+                        receiptContainerDetail.setLocationCode("");
+                        receiptContainerDetailService.update(receiptContainerDetail, receiptContainerDetailLambdaQueryWrapper1);
                     }
                 }
-                if (taskHeader.getFromLocation() != null) {
+                if (StringUtils.isNotEmpty(taskHeader.getFromLocation())) {
                     //更新托盘、库位状态
                     locationService.updateStatus(taskHeader.getFromLocation(), "empty");
                 }
diff --git a/src/main/java/com/huaheng/pc/task/taskHeader/service/TransferTaskService.java b/src/main/java/com/huaheng/pc/task/taskHeader/service/TransferTaskService.java
index 0e15b9f..8614e08 100644
--- a/src/main/java/com/huaheng/pc/task/taskHeader/service/TransferTaskService.java
+++ b/src/main/java/com/huaheng/pc/task/taskHeader/service/TransferTaskService.java
@@ -94,6 +94,9 @@ public class TransferTaskService {
         if (taskHeaderService.getUncompleteTaskInNear(desLocation) > 0) {
             return AjaxResult.error("目标库位:" + desLocationCode + "旁边存在任务,请完成任务以后再分配");
         }
+        if(!sourceLocation.getRoadway().equals(desLocation.getRoadway())) {
+            return AjaxResult.error("目标库位和源库位不在同一个巷道");
+        }
 
         if(sourceLocation.getRowFlag() == 1) {
             Location location1 = locationService.getNear(sourceLocation);  //内侧库位
diff --git a/src/main/resources/templates/monitor/locationstatus/locationstatus.html b/src/main/resources/templates/monitor/locationstatus/locationstatus.html
index 34e6664..ca28c38 100644
--- a/src/main/resources/templates/monitor/locationstatus/locationstatus.html
+++ b/src/main/resources/templates/monitor/locationstatus/locationstatus.html
@@ -52,7 +52,7 @@
                     <ul id="select_info">
                         <li>
                             <select id="locationType" name="locationType" style="width: 100px">
-                                <option value="L" selected>立库库位</option>
+                                <option value="A" selected>立库库位</option>
                                 <option value="Q">钱柜库位</option>
                                 <option value="PK">平面库位</option>
                             </select>
@@ -175,7 +175,7 @@
     var grid_num_11=0;
     var grid_num_12=0;
     $(function() {
-        resetAjax("L");
+        resetAjax("A");
 
         //库位类型和行列层选择
         $("#editable-select").change(function () {
--
libgit2 0.22.2