From 8eba3203511d8edbc5ee04aa82eceeaa3e38f889 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期六, 07 九月 2024 14:34:28 +0800
Subject: [PATCH] #

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java |  126 +++++++++++++++++++++++++++++++++++++++--
 1 files changed, 119 insertions(+), 7 deletions(-)

diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java
index 86a640f..cde400b 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java
@@ -11,6 +11,7 @@
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
 
 import java.util.Date;
 import java.util.List;
@@ -52,6 +53,7 @@
                 //淇濆瓨浠诲姟鍘嗗彶妗�
                 TaskLog taskLog = new TaskLog();
                 taskLog.sync(task);
+                taskLog.setId(null);
                 if (!taskLogService.save(taskLog)) {
                     throw new CoolException("淇濆瓨浠诲姟鍘嗗彶妗eけ璐�");
                 }
@@ -63,12 +65,14 @@
 
                 //淇濆瓨浠诲姟鏄庣粏鍘嗗彶妗�
                 List<TaskDetl> taskDetls = taskDetlService.getTaskDetlByTaskId(task.getId());
-                if(taskDetls.isEmpty()) {
+                if (taskDetls.isEmpty()) {
                     throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦�");
                 }
                 for (TaskDetl taskDetl : taskDetls) {
                     TaskDetlLog taskDetlLog = new TaskDetlLog();
                     taskDetlLog.sync(taskDetl);
+                    taskDetlLog.setId(null);
+                    taskDetlLog.setTaskId(taskLog.getId());
                     if (!taskDetlLogService.save(taskDetlLog)) {
                         throw new CoolException("淇濆瓨浠诲姟鏄庣粏鍘嗗彶妗eけ璐�");
                     }
@@ -79,26 +83,32 @@
                         //鏄庣粏鎵╁睍瀛楁鏁版嵁淇濆瓨鑷冲巻鍙叉。
                         TaskDetlFieldLog taskDetlFieldLog = new TaskDetlFieldLog();
                         taskDetlFieldLog.sync(detlField);
+                        taskDetlFieldLog.setId(null);
+                        taskDetlFieldLog.setDetlId(taskDetlLog.getId());
                         if (!taskDetlFieldLogService.save(taskDetlFieldLog)) {
                             throw new CoolException("鏄庣粏鎵╁睍瀛楁杞巻鍙叉。妗堝け璐�");
                         }
 
                         //鍒犻櫎鏄庣粏鎵╁睍
                         boolean removeField = taskDetlFieldService.removeById(detlField.getId());
-                        if(!removeField){
+                        if (!removeField) {
                             throw new CoolException("鍒犻櫎鏄庣粏鎵╁睍澶辫触");
                         }
                     }
 
                     //鍒犻櫎鏄庣粏
                     boolean removeDetl = taskDetlService.removeById(taskDetl.getId());
-                    if(!removeDetl){
+                    if (!removeDetl) {
                         throw new CoolException("鏄庣粏鍒犻櫎澶辫触");
                     }
                 }
 
                 //鏇存柊璁㈠崟淇℃伅
                 for (TaskDetl taskDetl : taskDetls) {
+                    if (taskDetl.getDetlId() == null) {
+                        continue;
+                    }
+
                     OrderDetl orderDetl = orderDetlService.getById(taskDetl.getDetlId());
                     if (orderDetl == null) {
                         throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦�");
@@ -116,13 +126,13 @@
                     if (checkOrderComplete) {
                         //璁㈠崟宸茬粡瀹屾垚
                         Order order = orderService.getById(orderDetl.getOrderId());
-                        if(order == null) {
+                        if (order == null) {
                             throw new CoolException("璁㈠崟涓嶅瓨鍦�");
                         }
 
                         order.setOrderSettle(OrderSettleType.COMPLETE.val());
                         order.setUpdateTime(new Date());
-                        if (!orderService.save(order)) {
+                        if (!orderService.updateById(order)) {
                             throw new CoolException("璁㈠崟鏇存柊澶辫触");
                         }
                     }
@@ -133,7 +143,8 @@
 
         } catch (Exception e) {
             e.printStackTrace();
-        }finally {
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+        } finally {
             InterceptorIgnoreHelper.clearIgnoreStrategy();
         }
     }
@@ -143,10 +154,111 @@
     public void outExecute() {
         InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build());
         try {
+            //鑾峰彇鍏ュ簱瀹屾垚浠诲姟
+            List<Task> list = taskService.list(new LambdaQueryWrapper<Task>()
+                    .eq(Task::getTaskSts, 200)
+                    .in(Task::getTaskType, 101, 53, 57));
+            if (list.isEmpty()) {
+                return;
+            }
 
+            for (Task task : list) {
+                Long hostId = task.getHostId();
+
+                //淇濆瓨浠诲姟鍘嗗彶妗�
+                TaskLog taskLog = new TaskLog();
+                taskLog.sync(task);
+                taskLog.setId(null);
+                if (!taskLogService.save(taskLog)) {
+                    throw new CoolException("淇濆瓨浠诲姟鍘嗗彶妗eけ璐�");
+                }
+
+                //鍒犻櫎浠诲姟鍘嗗彶妗f
+                if (!taskService.removeById(task.getId())) {
+                    throw new CoolException("鍒犻櫎浠诲姟妗eけ璐�");
+                }
+
+                //淇濆瓨浠诲姟鏄庣粏鍘嗗彶妗�
+                List<TaskDetl> taskDetls = taskDetlService.getTaskDetlByTaskId(task.getId());
+                if (taskDetls.isEmpty()) {
+                    throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦�");
+                }
+                for (TaskDetl taskDetl : taskDetls) {
+                    TaskDetlLog taskDetlLog = new TaskDetlLog();
+                    taskDetlLog.sync(taskDetl);
+                    taskDetlLog.setId(null);
+                    taskDetlLog.setTaskId(taskLog.getId());
+                    if (!taskDetlLogService.save(taskDetlLog)) {
+                        throw new CoolException("淇濆瓨浠诲姟鏄庣粏鍘嗗彶妗eけ璐�");
+                    }
+
+                    //淇濆瓨鏄庣粏鎵╁睍瀛楁鍘嗗彶妗�
+                    List<TaskDetlField> detlFields = taskDetlFieldService.list(new LambdaQueryWrapper<TaskDetlField>().eq(TaskDetlField::getDetlId, taskDetl.getId()).eq(TaskDetlField::getHostId, hostId));
+                    for (TaskDetlField detlField : detlFields) {
+                        //鏄庣粏鎵╁睍瀛楁鏁版嵁淇濆瓨鑷冲巻鍙叉。
+                        TaskDetlFieldLog taskDetlFieldLog = new TaskDetlFieldLog();
+                        taskDetlFieldLog.sync(detlField);
+                        taskDetlFieldLog.setId(null);
+                        taskDetlFieldLog.setDetlId(taskDetlLog.getId());
+                        if (!taskDetlFieldLogService.save(taskDetlFieldLog)) {
+                            throw new CoolException("鏄庣粏鎵╁睍瀛楁杞巻鍙叉。妗堝け璐�");
+                        }
+
+                        //鍒犻櫎鏄庣粏鎵╁睍
+                        boolean removeField = taskDetlFieldService.removeById(detlField.getId());
+                        if (!removeField) {
+                            throw new CoolException("鍒犻櫎鏄庣粏鎵╁睍澶辫触");
+                        }
+                    }
+
+                    //鍒犻櫎鏄庣粏
+                    boolean removeDetl = taskDetlService.removeById(taskDetl.getId());
+                    if (!removeDetl) {
+                        throw new CoolException("鏄庣粏鍒犻櫎澶辫触");
+                    }
+                }
+
+                //鏇存柊璁㈠崟淇℃伅
+                for (TaskDetl taskDetl : taskDetls) {
+                    if (taskDetl.getDetlId() == null) {
+                        continue;
+                    }
+
+                    OrderDetl orderDetl = orderDetlService.getById(taskDetl.getDetlId());
+                    if (orderDetl == null) {
+                        throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦�");
+                    }
+
+                    orderDetl.setWorkQty(orderDetl.getWorkQty() - taskDetl.getAnfme());//宸ヤ綔涓暟閲忓噺灏�
+                    orderDetl.setQty(orderDetl.getQty() + taskDetl.getAnfme());//宸插畬鎴愭暟閲忓鍔�
+                    orderDetl.setUpdateTime(new Date());
+                    if (!orderDetlService.updateById(orderDetl)) {
+                        throw new CoolException("鏇存柊璁㈠崟鏄庣粏澶辫触");
+                    }
+
+                    //妫�娴嬭鍗曟槸鍚﹀畬鎴�
+                    boolean checkOrderComplete = orderService.checkOrderComplete(orderDetl.getOrderId());
+                    if (checkOrderComplete) {
+                        //璁㈠崟宸茬粡瀹屾垚
+                        Order order = orderService.getById(orderDetl.getOrderId());
+                        if (order == null) {
+                            throw new CoolException("璁㈠崟涓嶅瓨鍦�");
+                        }
+
+                        order.setOrderSettle(OrderSettleType.COMPLETE.val());
+                        order.setUpdateTime(new Date());
+                        if (!orderService.updateById(order)) {
+                            throw new CoolException("璁㈠崟鏇存柊澶辫触");
+                        }
+                    }
+                }
+
+
+            }
         } catch (Exception e) {
             e.printStackTrace();
-        }finally {
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+        } finally {
             InterceptorIgnoreHelper.clearIgnoreStrategy();
         }
     }

--
Gitblit v1.9.1