From fd5b35e658ac8cd3d9658c5cc5e1219c9d13915c Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期四, 01 八月 2024 12:36:05 +0800
Subject: [PATCH] #

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/enums/OrderSettleType.java  |   41 ++++++++++
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java            |  154 ++++++++++++++++++++++++++++++++++++++
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/OrderService.java          |    2 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java               |   11 ++
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/OrderServiceImpl.java |   22 +++++
 5 files changed, 228 insertions(+), 2 deletions(-)

diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/enums/OrderSettleType.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/enums/OrderSettleType.java
new file mode 100644
index 0000000..3efe1c5
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/enums/OrderSettleType.java
@@ -0,0 +1,41 @@
+package com.zy.asrs.wms.asrs.entity.enums;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zy.asrs.framework.common.SpringUtils;
+import com.zy.asrs.framework.exception.CoolException;
+import com.zy.asrs.wms.asrs.entity.LocSts;
+import com.zy.asrs.wms.asrs.entity.OrderSettle;
+import com.zy.asrs.wms.asrs.service.LocStsService;
+import com.zy.asrs.wms.asrs.service.OrderSettleService;
+
+public enum OrderSettleType {
+
+    INIT(0, "鍒濆鍖�"),
+    WAIT(1, "寰呭鐞�"),
+    WORKING(2, "浣滀笟涓�"),
+    CANCEL(3, "宸插彇娑�"),
+    COMPLETE(4, "宸插畬鎴�"),
+    WAIT_CANCEL(5, "鍑嗗鍙栨秷"),
+    REPORT_COMPLETE(6, "涓婃姤瀹屾垚"),
+    ;
+
+
+    public Integer id;
+    public String desc;
+
+    OrderSettleType(Integer id, String desc) {
+        this.id = id;
+        this.desc = desc;
+    }
+
+    public long val() {
+        OrderSettleService service = SpringUtils.getBean(OrderSettleService.class);
+        OrderSettle orderSettle = service.getOne(new LambdaQueryWrapper<OrderSettle>().eq(OrderSettle::getSettle, id));
+        if (orderSettle == null) {
+            throw new CoolException("LocStsType Error!");
+        }
+        return orderSettle.getId();
+    }
+
+
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/OrderService.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/OrderService.java
index 2f3b321..5ef9147 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/OrderService.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/OrderService.java
@@ -13,4 +13,6 @@
 
     boolean deleteOrder(Long orderId);
 
+    boolean checkOrderComplete(Long orderId);//妫�娴嬭鍗曟槸鍚﹀畬鎴�
+
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/OrderServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/OrderServiceImpl.java
index 4839986..cd2d84d 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/OrderServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/OrderServiceImpl.java
@@ -204,4 +204,26 @@
         }
         return true;
     }
+
+    @Override
+    public boolean checkOrderComplete(Long orderId) {
+        Order order = this.getById(orderId);
+        if (order == null) {
+            return false;
+        }
+
+        boolean complete = true;
+        List<OrderDetl> orderDetls = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderId, orderId));
+        if(orderDetls.isEmpty()) {
+            complete = false;
+        }
+
+        for (OrderDetl orderDetl : orderDetls) {
+            if (!orderDetl.getAnfme().equals(orderDetl.getQty())) {
+                complete = false;
+            }
+        }
+
+        return complete;
+    }
 }
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
new file mode 100644
index 0000000..86a640f
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java
@@ -0,0 +1,154 @@
+package com.zy.asrs.wms.asrs.timer;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.plugins.IgnoreStrategy;
+import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper;
+import com.zy.asrs.framework.exception.CoolException;
+import com.zy.asrs.wms.asrs.entity.*;
+import com.zy.asrs.wms.asrs.entity.enums.OrderSettleType;
+import com.zy.asrs.wms.asrs.service.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
+
+@Component
+public class TaskLogTimer {
+
+    @Autowired
+    private TaskService taskService;
+    @Autowired
+    private TaskDetlService taskDetlService;
+    @Autowired
+    private TaskDetlFieldService taskDetlFieldService;
+    @Autowired
+    private TaskLogService taskLogService;
+    @Autowired
+    private TaskDetlLogService taskDetlLogService;
+    @Autowired
+    private TaskDetlFieldLogService taskDetlFieldLogService;
+    @Autowired
+    private OrderService orderService;
+    @Autowired
+    private OrderDetlService orderDetlService;
+
+    @Scheduled(cron = "0/3 * * * * ? ")
+    @Transactional
+    public void inExecute() {
+        InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build());
+        try {
+            //鑾峰彇鍏ュ簱瀹屾垚浠诲姟
+            List<Task> list = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getTaskSts, 100));
+            if (list.isEmpty()) {
+                return;
+            }
+
+            for (Task task : list) {
+                Long hostId = task.getHostId();
+
+                //淇濆瓨浠诲姟鍘嗗彶妗�
+                TaskLog taskLog = new TaskLog();
+                taskLog.sync(task);
+                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);
+                    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);
+                        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) {
+                    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.save(order)) {
+                            throw new CoolException("璁㈠崟鏇存柊澶辫触");
+                        }
+                    }
+                }
+
+
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }finally {
+            InterceptorIgnoreHelper.clearIgnoreStrategy();
+        }
+    }
+
+    @Scheduled(cron = "0/3 * * * * ? ")
+    @Transactional
+    public void outExecute() {
+        InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build());
+        try {
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }finally {
+            InterceptorIgnoreHelper.clearIgnoreStrategy();
+        }
+    }
+
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java
index 770ff8c..4c95b69 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java
@@ -68,7 +68,7 @@
 
                         List<TaskDetl> taskDetls = taskDetlService.getTaskDetlByTaskId(task.getId());
                         if(taskDetls.isEmpty()) {
-                            throw new CoolException("搴撳瓨鏄庣粏涓嶅瓨鍦�");
+                            throw new CoolException("浠诲姟鏄庣粏涓嶅瓨鍦�");
                         }
 
                         //娣诲姞搴撳瓨鏄庣粏
@@ -113,7 +113,7 @@
                 }
             }
         } catch (Exception e) {
-
+            e.printStackTrace();
         }finally {
             InterceptorIgnoreHelper.clearIgnoreStrategy();
         }
@@ -122,7 +122,14 @@
     @Scheduled(cron = "0/3 * * * * ? ")
     @Transactional
     public void outExecute() {
+        InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build());
+        try {
 
+        } catch (Exception e) {
+            e.printStackTrace();
+        }finally {
+            InterceptorIgnoreHelper.clearIgnoreStrategy();
+        }
     }
 
 }

--
Gitblit v1.9.1