From b7708454cd284e64159eea04eb32b818f5d1a930 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期五, 30 五月 2025 09:37:55 +0800
Subject: [PATCH] 完成任务,判断浅库位是否完成,降低任务优先级

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java |   61 ++++++++++++++++++++++++++----
 1 files changed, 53 insertions(+), 8 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
index 9dca556..3f31a35 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/TaskServiceImpl.java
@@ -424,9 +424,57 @@
         if (Objects.isNull(tasks)) {
             throw new CoolException("浠诲姟宸插鎵ц鐘舵�佷笉鍙竴閿疆椤讹紒锛�");
         }
+        //鍒ゆ柇瀛愪换鍔★紝淇敼浠诲姟浼樺厛绾�
+        modiftyTaskSort(tasks);
 
-        if (!LocUtils.isShallowLoc(tasks.getOrgLoc())) {
-            String shallowLoc = LocUtils.getShallowLoc(tasks.getOrgLoc());
+        if (!taskService.updateById(tasks)) {
+            throw new CoolException("缃《澶辫触锛侊紒");
+        }
+        return null;
+    }
+
+    /**
+     * 鎵嬪姩瀹屾垚浠诲姟
+     * @param id
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Task operateComplete(Long id) {
+        List<Integer> longs = Arrays.asList(TaskStsType.GENERATE_IN.id, TaskStsType.GENERATE_OUT.id);
+        Task task = taskService.getOne(new LambdaQueryWrapper<Task>()
+                .eq(Task::getId, id)
+                .in(Task::getTaskStatus, longs));
+
+        if (Objects.isNull(task)) {
+            throw new CoolException("褰撳墠浠诲姟姝e湪鎵ц涓紝涓嶅彲鍙栨秷锛侊紒");
+        }
+
+        modiftyTaskSort(task);
+
+        task.setTaskStatus(task.getTaskType() < 100 ? TaskStsType.COMPLETE_IN.id : TaskStsType.COMPLETE_OUT.id);
+        if (!this.updateById(task)) {
+            throw new CoolException("瀹屾垚浠诲姟澶辫触");
+        }
+        return task;
+    }
+
+    /**
+     * 淇敼浠诲姟浼樺厛绾�
+     * @param task
+     */
+    private Task modiftyTaskSort(Task task) {
+        String curLoc;
+        if (task.getTaskType().equals(TaskType.TASK_TYPE_IN.type)) {
+            curLoc = task.getTargLoc();
+        } else {
+            curLoc = task.getOrgLoc();
+        }
+        if (!LocUtils.isShallowLoc(curLoc)) {
+            String shallowLoc = LocUtils.getShallowLoc(curLoc);
+            if (StringUtils.isNotBlank(shallowLoc)) {
+                throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛橈紒");
+            }
             Loc loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, shallowLoc));
             if (Objects.isNull(loc)) {
                 throw new CoolException("鏁版嵁閿欒锛屽簱浣嶄笉瀛樺湪锛侊紒");
@@ -437,18 +485,15 @@
                         .or()
                         .eq(Task::getTargLoc, loc.getCode()));
                 if (Objects.isNull(serviceOne)) {
-                    tasks.setSort(999);
+                    task.setSort(999);
                 } else {
                     int i = serviceOne.getSort() - 1;
-                    tasks.setSort(i);
+                    task.setSort(i);
                 }
             }
         }
 
-        if (!taskService.updateById(tasks)) {
-            throw new CoolException("缃《澶辫触锛侊紒");
-        }
-        return null;
+        return task;
     }
 
     @Transactional(rollbackFor = Exception.class)

--
Gitblit v1.9.1