From 788b9bfcf3d4935a9e171488fb4e55482480472c Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期四, 01 八月 2024 13:27:29 +0800
Subject: [PATCH] #

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/TaskDetlLog.java             |    9 ++
 zy-asrs-admin/src/views/in/waitPakin/edit.vue                                      |    5 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java   |   24 +++++
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java             |    5 +
 zy-asrs-admin/src/components/taskLog/showTaskDetlLog/index.vue                     |    2 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/OrderDetlLog.java            |    9 ++
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/OrderDetlFieldLog.java       |    5 +
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskTimer.java                |    3 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/WaitPakinController.java |   55 ++++++++++++-
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/OrderLog.java                |    6 +
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/OrderTimer.java               |   96 ++++++++++++++++++++++++
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/TaskLog.java                 |    4 
 12 files changed, 207 insertions(+), 16 deletions(-)

diff --git a/zy-asrs-admin/src/components/taskLog/showTaskDetlLog/index.vue b/zy-asrs-admin/src/components/taskLog/showTaskDetlLog/index.vue
index f16dab9..2cfde6c 100644
--- a/zy-asrs-admin/src/components/taskLog/showTaskDetlLog/index.vue
+++ b/zy-asrs-admin/src/components/taskLog/showTaskDetlLog/index.vue
@@ -186,7 +186,7 @@
 
 <script>
 export default {
-    name: 'showOrderDetlLogComponent'
+    name: 'showTaskDetlLogComponent'
 }
 </script>
 
diff --git a/zy-asrs-admin/src/views/in/waitPakin/edit.vue b/zy-asrs-admin/src/views/in/waitPakin/edit.vue
index 9e1f324..3624dc9 100644
--- a/zy-asrs-admin/src/views/in/waitPakin/edit.vue
+++ b/zy-asrs-admin/src/views/in/waitPakin/edit.vue
@@ -98,10 +98,11 @@
     let result = await orderDetlQuery(id);
     let tmp = []
     result.data.forEach((item) => {
+        let count = item.anfme - item.qty - item.workQty;
         tmp.push({
             value: item.id,
-            label: item.mat$.matnr + '-' + item.anfme,
-            anfme: item.anfme
+            label: item.mat$.matnr + '-' + count,
+            anfme: count
         })
     })
     orderDetlQueryList.value = tmp;
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/WaitPakinController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/WaitPakinController.java
index 9126c72..de41adb 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/WaitPakinController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/WaitPakinController.java
@@ -5,23 +5,23 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zy.asrs.framework.common.Cools;
 import com.zy.asrs.framework.common.R;
+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 com.zy.asrs.wms.common.annotation.OperationLog;
 import com.zy.asrs.wms.common.domain.BaseParam;
 import com.zy.asrs.wms.common.domain.KeyValVo;
 import com.zy.asrs.wms.common.domain.PageParam;
-import com.zy.asrs.wms.asrs.entity.WaitPakin;
-import com.zy.asrs.wms.asrs.service.WaitPakinService;
 import com.zy.asrs.wms.system.controller.BaseController;
 import com.zy.asrs.wms.utils.ExcelUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @RestController
 @RequestMapping("/api")
@@ -29,6 +29,14 @@
 
     @Autowired
     private WaitPakinService waitPakinService;
+    @Autowired
+    private OrderService orderService;
+    @Autowired
+    private OrderDetlService orderDetlService;
+    @Autowired
+    private LocService locService;
+    @Autowired
+    private TaskService taskService;
 
     @PreAuthorize("hasAuthority('asrs:waitPakin:list')")
     @PostMapping("/waitPakin/page")
@@ -53,10 +61,45 @@
     @PreAuthorize("hasAuthority('asrs:waitPakin:save')")
     @OperationLog("娣诲姞缁勬墭閫氱煡妗�")
     @PostMapping("/waitPakin/save")
+    @Transactional
     public R save(@RequestBody WaitPakin waitPakin) {
+        if (waitPakin.getAnfme() <= 0) {
+            return R.error("缁勬墭鏁伴噺閿欒");
+        }
+
+        List<Loc> locList = locService.list(new LambdaQueryWrapper<Loc>().eq(Loc::getBarcode, waitPakin.getBarcode()));
+        if (!locList.isEmpty()) {
+            return R.error("鎵樼洏宸插湪搴�");
+        }
+
+        List<Task> taskList = taskService.list(new LambdaQueryWrapper<Task>().eq(Task::getBarcode, waitPakin.getBarcode()));
+        if (!taskList.isEmpty()) {
+            return R.error("鎵樼洏姝e湪鍏ュ簱涓�");
+        }
+
         if (!waitPakinService.save(waitPakin)) {
             return R.error("娣诲姞澶辫触");
         }
+
+        OrderDetl orderDetl = orderDetlService.getById(waitPakin.getDetlId());
+        if (orderDetl == null) {
+            throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦�");
+        }
+
+        //鑾峰彇璁㈠崟
+        Order order = orderService.getById(orderDetl.getOrderId());
+        if(order == null){
+            throw new CoolException("璁㈠崟涓嶅瓨鍦�");
+        }
+
+        //鏇存柊璁㈠崟鐘舵��
+        if (order.getOrderSettle().equals(OrderSettleType.INIT.val())) {
+            order.setOrderSettle(OrderSettleType.WAIT.val());
+            order.setUpdateTime(new Date());
+            if (!orderService.updateById(order)) {
+                throw new CoolException("璁㈠崟鏁版嵁鏇存柊澶辫触");
+            }
+        }
         return R.ok("娣诲姞鎴愬姛");
     }
 
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/OrderDetlFieldLog.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/OrderDetlFieldLog.java
index d7d275c..0889e97 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/OrderDetlFieldLog.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/OrderDetlFieldLog.java
@@ -4,6 +4,7 @@
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
+import com.zy.asrs.common.utils.Synchro;
 import com.zy.asrs.wms.asrs.service.MatFieldService;
 import com.zy.asrs.wms.asrs.service.OrderDetlLogService;
 import com.zy.asrs.wms.system.entity.Host;
@@ -230,5 +231,9 @@
         return null;
     }
 
+    public void sync(Object source) {
+        Synchro.Copy(source, this);
+    }
+
 
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/OrderDetlLog.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/OrderDetlLog.java
index f2c2426..fa530ce 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/OrderDetlLog.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/OrderDetlLog.java
@@ -189,6 +189,15 @@
         return null;
     }
 
+    public Mat getMat$(){
+        MatService service = SpringUtils.getBean(MatService.class);
+        Mat mat = service.getById(this.matId);
+        if (!Cools.isEmpty(mat)){
+            return mat;
+        }
+        return null;
+    }
+
     public String getHostId$(){
         HostService service = SpringUtils.getBean(HostService.class);
         Host host = service.getById(this.hostId);
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/OrderLog.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/OrderLog.java
index 309078c..7670e03 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/OrderLog.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/OrderLog.java
@@ -4,6 +4,7 @@
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
+import com.zy.asrs.common.utils.Synchro;
 import com.zy.asrs.wms.asrs.service.OrderSettleService;
 import com.zy.asrs.wms.asrs.service.OrderTypeService;
 import com.zy.asrs.wms.system.entity.Host;
@@ -37,7 +38,7 @@
      * ID
      */
     @ApiModelProperty(value= "ID")
-    @TableId(value = "id", type = IdType.AUTO)
+    @TableId(value = "id", type = IdType.INPUT)
     private Long id;
 
     /**
@@ -230,5 +231,8 @@
         return null;
     }
 
+    public void sync(Object source) {
+        Synchro.Copy(source, this);
+    }
 
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/TaskDetlLog.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/TaskDetlLog.java
index 7088727..71e1d66 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/TaskDetlLog.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/TaskDetlLog.java
@@ -237,6 +237,15 @@
         return null;
     }
 
+    public Mat getMat$(){
+        MatService service = SpringUtils.getBean(MatService.class);
+        Mat mat = service.getById(this.matId);
+        if (!Cools.isEmpty(mat)){
+            return mat;
+        }
+        return null;
+    }
+
     public String getHostId$(){
         HostService service = SpringUtils.getBean(HostService.class);
         Host host = service.getById(this.hostId);
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/TaskLog.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/TaskLog.java
index fc5c86e..0d7ed7c 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/TaskLog.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/TaskLog.java
@@ -192,7 +192,7 @@
         TaskStsService service = SpringUtils.getBean(TaskStsService.class);
         TaskSts taskSts = service.getById(this.taskSts);
         if (!Cools.isEmpty(taskSts)){
-            return String.valueOf(taskSts.getId());
+            return String.valueOf(taskSts.getTitle());
         }
         return null;
     }
@@ -201,7 +201,7 @@
         TaskTypeService service = SpringUtils.getBean(TaskTypeService.class);
         TaskType taskType = service.getById(this.taskType);
         if (!Cools.isEmpty(taskType)){
-            return String.valueOf(taskType.getId());
+            return String.valueOf(taskType.getTitle());
         }
         return null;
     }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java
index 6c7c7ce..5d793ba 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/WorkServiceImpl.java
@@ -4,6 +4,7 @@
 import com.zy.asrs.framework.exception.CoolException;
 import com.zy.asrs.wms.asrs.entity.*;
 import com.zy.asrs.wms.asrs.entity.enums.LocStsType;
+import com.zy.asrs.wms.asrs.entity.enums.OrderSettleType;
 import com.zy.asrs.wms.asrs.entity.param.GeneratePakInParam;
 import com.zy.asrs.wms.asrs.service.*;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -29,6 +30,8 @@
     private OrderDetlFieldService orderDetlFieldService;
     @Autowired
     private TaskDetlFieldService taskDetlFieldService;
+    @Autowired
+    private OrderService orderService;
     @Autowired
     private OrderDetlService orderDetlService;
     @Autowired
@@ -135,17 +138,32 @@
                 throw new CoolException("缁勬墭閫氱煡妗f洿鏂板け璐�");
             }
 
-            //鏇存柊璁㈠崟鏁版嵁
+            //鏇存柊璁㈠崟鏄庣粏鏁版嵁
             OrderDetl orderDetl = orderDetlService.getById(taskDetl.getDetlId());
             if(orderDetl == null){
-                throw new CoolException("璁㈠崟鏁版嵁寮傚父");
+                throw new CoolException("璁㈠崟鏄庣粏涓嶅瓨鍦�");
             }
 
             orderDetl.setWorkQty(orderDetl.getWorkQty() + taskDetl.getAnfme());
             orderDetl.setUpdateTime(new Date());
             boolean orderDetlUpdate = orderDetlService.updateById(orderDetl);
             if(!orderDetlUpdate){
-                throw new CoolException("璁㈠崟鏇存柊澶辫触");
+                throw new CoolException("璁㈠崟鏄庣粏鏇存柊澶辫触");
+            }
+
+            //鑾峰彇璁㈠崟
+            Order order = orderService.getById(taskDetl.getOrderId());
+            if(order == null){
+                throw new CoolException("璁㈠崟涓嶅瓨鍦�");
+            }
+
+            //鏇存柊璁㈠崟鐘舵��
+            if (order.getOrderSettle().equals(OrderSettleType.WAIT.val())) {
+                order.setOrderSettle(OrderSettleType.WORKING.val());
+                order.setUpdateTime(new Date());
+                if (!orderService.updateById(order)) {
+                    throw new CoolException("璁㈠崟鏁版嵁鏇存柊澶辫触");
+                }
             }
         }
 
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/OrderTimer.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/OrderTimer.java
new file mode 100644
index 0000000..8f40c34
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/OrderTimer.java
@@ -0,0 +1,96 @@
+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 org.springframework.transaction.interceptor.TransactionAspectSupport;
+
+import java.util.List;
+
+@Component
+public class OrderTimer {
+
+    @Autowired
+    private OrderService orderService;
+    @Autowired
+    private OrderDetlService orderDetlService;
+    @Autowired
+    private OrderDetlFieldService orderDetlFieldService;
+    @Autowired
+    private OrderLogService orderLogService;
+    @Autowired
+    private OrderDetlLogService orderDetlLogService;
+    @Autowired
+    private OrderDetlFieldLogService orderDetlFieldLogService;
+
+    @Scheduled(cron = "0/3 * * * * ? ")
+    @Transactional
+    public void orderToHistory() {
+        InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build());
+        try {
+            List<Order> list = orderService.list(new LambdaQueryWrapper<Order>().eq(Order::getOrderSettle, OrderSettleType.COMPLETE.val()));
+            if (list.isEmpty()) {
+                return;
+            }
+
+            for (Order order : list) {
+                //杞巻鍙叉。
+                OrderLog orderLog = new OrderLog();
+                orderLog.sync(order);
+                if (!orderLogService.save(orderLog)) {
+                    throw new CoolException("璁㈠崟杞巻鍙叉。澶辫触");
+                }
+
+                //璁㈠崟鏄庣粏杞巻鍙叉。
+                List<OrderDetl> orderDetls = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderId, order.getId()));
+                for (OrderDetl orderDetl : orderDetls) {
+                    OrderDetlLog orderDetlLog = new OrderDetlLog();
+                    orderDetlLog.sync(orderDetl);
+                    if(!orderDetlLogService.save(orderDetlLog)) {
+                        throw new CoolException("璁㈠崟鏄庣粏杞巻鍙叉。澶辫触");
+                    }
+
+                    //鏄庣粏鎵╁睍瀛楁杞巻鍙叉。
+                    List<OrderDetlField> orderDetlFields = orderDetlFieldService.list(new LambdaQueryWrapper<OrderDetlField>().eq(OrderDetlField::getDetlId, orderDetl.getId()));
+                    for (OrderDetlField orderDetlField : orderDetlFields) {
+                        OrderDetlFieldLog orderDetlFieldLog = new OrderDetlFieldLog();
+                        orderDetlFieldLog.sync(orderDetlField);
+                        if(!orderDetlFieldLogService.save(orderDetlFieldLog)) {
+                            throw new CoolException("鏄庣粏鎵╁睍瀛楁杞巻鍙叉。澶辫触");
+                        }
+
+                        //鍒犻櫎鏄庣粏鎵╁睍瀛楁
+                        if (!orderDetlFieldService.removeById(orderDetlField.getId())) {
+                            throw new CoolException("鍒犻櫎鏄庣粏鎵╁睍瀛楁澶辫触");
+                        }
+                    }
+
+                    //鍒犻櫎璁㈠崟鏄庣粏
+                    if (!orderDetlService.removeById(orderDetl.getId())) {
+                        throw new CoolException("鍒犻櫎璁㈠崟鏄庣粏澶辫触");
+                    }
+                }
+
+                //鍒犻櫎璁㈠崟
+                if (!orderService.removeById(order.getId())) {
+                    throw new CoolException("鍒犻櫎璁㈠崟澶辫触");
+                }
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+        }finally {
+            InterceptorIgnoreHelper.clearIgnoreStrategy();
+        }
+    }
+
+}
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..2ede7d5 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;
@@ -122,7 +123,7 @@
 
                         order.setOrderSettle(OrderSettleType.COMPLETE.val());
                         order.setUpdateTime(new Date());
-                        if (!orderService.save(order)) {
+                        if (!orderService.updateById(order)) {
                             throw new CoolException("璁㈠崟鏇存柊澶辫触");
                         }
                     }
@@ -133,6 +134,7 @@
 
         } catch (Exception e) {
             e.printStackTrace();
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
         }finally {
             InterceptorIgnoreHelper.clearIgnoreStrategy();
         }
@@ -146,6 +148,7 @@
 
         } catch (Exception e) {
             e.printStackTrace();
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
         }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 4c95b69..90bbd5a 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
@@ -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;
@@ -114,6 +115,7 @@
             }
         } catch (Exception e) {
             e.printStackTrace();
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
         }finally {
             InterceptorIgnoreHelper.clearIgnoreStrategy();
         }
@@ -127,6 +129,7 @@
 
         } catch (Exception e) {
             e.printStackTrace();
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
         }finally {
             InterceptorIgnoreHelper.clearIgnoreStrategy();
         }

--
Gitblit v1.9.1