From ef72e4cffa64267ea19c72b08cce1d4e6c03bc88 Mon Sep 17 00:00:00 2001
From: youjie <272855983@qq.com>
Date: Tue, 27 Feb 2024 08:41:23 +0800
Subject: [PATCH] 叠盘完成任务,清空库存数据

---
 ant-design-vue-jeecg/src/views/system/task/ShipmentTaskHeaderList.vue                                                       |  2 +-
 huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/IInventoryHeaderService.java         |  2 ++
 huaheng-wms-core/src/main/java/org/jeecg/modules/wms/inventory/inventoryHeader/service/impl/InventoryHeaderServiceImpl.java | 24 ++++++++++++++++++++++++
 huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java                | 37 ++++++++++++++++++++-----------------
 4 files changed, 47 insertions(+), 18 deletions(-)

diff --git a/ant-design-vue-jeecg/src/views/system/task/ShipmentTaskHeaderList.vue b/ant-design-vue-jeecg/src/views/system/task/ShipmentTaskHeaderList.vue
index c0f2d83..77c99b6 100644
--- a/ant-design-vue-jeecg/src/views/system/task/ShipmentTaskHeaderList.vue
+++ b/ant-design-vue-jeecg/src/views/system/task/ShipmentTaskHeaderList.vue
@@ -173,7 +173,7 @@
              <a-divider type="vertical"/>
           </a-popconfirm>
 
-          <a-popconfirm v-if="record.status < 100 && record.taskType != 600 " v-has="'taskHeader:switchTask'" title="确定切换任务吗?" @confirm="() => switchTask(record)">
+          <a-popconfirm v-if="record.status <= 10 && record.taskType != 600 " v-has="'taskHeader:switchTask'" title="确定切换任务吗?" @confirm="() => switchTask(record)">
             <a-button type="danger">切换任务</a-button>
           </a-popconfirm>
         </span>
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 aaf210f..1eb1a4a 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
@@ -53,4 +53,6 @@ public interface IInventoryHeaderService extends IService<InventoryHeader> {
     boolean updateInventory(String containerCode, String locationCode, String warehouseCode);
 
     Result qualityInventoryDetail(List<InventoryDetail> inventoryDetailList, String warehouseCode);
+
+    Result clearInentory(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 dbce079..55f9c05 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
@@ -541,4 +541,28 @@ public class InventoryHeaderServiceImpl extends ServiceImpl<InventoryHeaderMappe
         return Result.ok("生成质检任务成功");
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Result clearInentory(String containerCode, String warehouseCode) {
+        InventoryHeader inventoryHeader = inventoryHeaderService.getInventoryHeaderByContainerCode(containerCode, warehouseCode);
+        if (inventoryHeader == null) {
+            return Result.error("清空库存失败,没有找到库存头");
+        }
+        List<InventoryDetail> inventoryDetailList = inventoryDetailService.getInventoryDetailListByInventoryHeaderId(inventoryHeader.getId());
+        if (inventoryDetailList.size() == 0) {
+            return Result.error("清空库存失败,没有找到库存详情");
+        }
+        List<Integer> inventoryDetailIds = inventoryDetailList.stream().map(InventoryDetail::getId).collect(Collectors.toList());
+        if (!inventoryDetailService.removeByIds(inventoryDetailIds)) {
+            throw new JeecgBootException("清空库存失败,删除库存详情失败");
+        }
+        if (!inventoryHeaderService.removeById(inventoryHeader.getId())) {
+            throw new JeecgBootException("清空库存失败,删除库存头失败");
+        }
+        if (!containerService.updateFillStatus(containerCode, QuantityConstant.STATUS_CONTAINER_FILL_EMPTY, warehouseCode)) {
+            throw new JeecgBootException("清空库存失败,更新托盘状态失败");
+        }
+        return Result.ok("清空库存成功");
+    }
+
 }
diff --git a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java
index 78eaeb9..03df444 100644
--- a/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java
+++ b/huaheng-wms-core/src/main/java/org/jeecg/modules/wms/task/taskHeader/service/impl/TaskHeaderServiceImpl.java
@@ -1061,23 +1061,6 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
             case QuantityConstant.TASK_TYPE_WHOLESHIPMENT:
             case QuantityConstant.TASK_TYPE_SORTINGSHIPMENT:
                 result = taskHeaderService.completeShipmentTask(taskHeader);
-                if (foldFlag) {
-                    String fromLocationCode = taskHeader.getFromLocationCode();
-                    String toLocationCode = taskHeader.getToLocationCode();
-                    String containerCode = taskHeader.getContainerCode();
-                    String warehouseCode = taskHeader.getWarehouseCode();
-                    if (!containerService.updateLocationCode(containerCode, QuantityConstant.EMPTY_STRING, warehouseCode)) {
-                        throw new JeecgBootException("完成任务," + containerCode + " 叠盘清空容器数据失败");
-                    }
-                    if (!locationService.updateContainerCode(fromLocationCode, QuantityConstant.EMPTY_STRING, warehouseCode)) {
-                        throw new JeecgBootException("完成任务," + containerCode + " 叠盘清空起始库位失败");
-                    }
-                    if (StringUtils.isNotEmpty(toLocationCode)) {
-                        if (!locationService.updateContainerCode(toLocationCode, QuantityConstant.EMPTY_STRING, warehouseCode)) {
-                            throw new JeecgBootException("完成任务," + containerCode + " 叠盘清空目标库位失败");
-                        }
-                    }
-                }
                 break;
             case QuantityConstant.TASK_TYPE_CYCLECOUNT:
                 result = taskHeaderService.completeCycleCountTask(taskHeader);
@@ -1109,6 +1092,26 @@ public class TaskHeaderServiceImpl extends ServiceImpl<TaskHeaderMapper, TaskHea
             default:
                 throw new JeecgBootException("完成任务," + "不支持的任务类型" + taskType);
         }
+        if (foldFlag) {
+            String fromLocationCode = taskHeader.getFromLocationCode();
+            String toLocationCode = taskHeader.getToLocationCode();
+            String containerCode = taskHeader.getContainerCode();
+            String warehouseCode = taskHeader.getWarehouseCode();
+            if (!containerService.updateLocationCode(containerCode, QuantityConstant.EMPTY_STRING, warehouseCode)) {
+                throw new JeecgBootException("完成任务," + containerCode + " 叠盘清空容器数据失败");
+            }
+            if (StringUtils.isNotEmpty(fromLocationCode)) {
+                if (!locationService.updateContainerCode(fromLocationCode, QuantityConstant.EMPTY_STRING, warehouseCode)) {
+                    throw new JeecgBootException("完成任务," + containerCode + " 叠盘清空起始库位失败");
+                }
+            }
+            if (StringUtils.isNotEmpty(toLocationCode)) {
+                if (!locationService.updateContainerCode(toLocationCode, QuantityConstant.EMPTY_STRING, warehouseCode)) {
+                    throw new JeecgBootException("完成任务," + containerCode + " 叠盘清空目标库位失败");
+                }
+            }
+            inventoryHeaderService.clearInentory(containerCode, warehouseCode);
+        }
         return result;
     }
 
--
libgit2 0.22.2