From d17c089f1d7ff3be848b05161917346e7f664a1d Mon Sep 17 00:00:00 2001
From: mrzhssss <pro6@qq.com>
Date: 星期二, 26 四月 2022 15:17:53 +0800
Subject: [PATCH] #

---
 src/main/java/zy/cloud/wms/manager/controller/OrderController.java |   94 +++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 86 insertions(+), 8 deletions(-)

diff --git a/src/main/java/zy/cloud/wms/manager/controller/OrderController.java b/src/main/java/zy/cloud/wms/manager/controller/OrderController.java
index 3806cfe..7670a29 100644
--- a/src/main/java/zy/cloud/wms/manager/controller/OrderController.java
+++ b/src/main/java/zy/cloud/wms/manager/controller/OrderController.java
@@ -18,14 +18,10 @@
 import zy.cloud.wms.common.utils.BarcodeUtils;
 import zy.cloud.wms.common.utils.QrCode;
 import zy.cloud.wms.common.web.BaseController;
-import zy.cloud.wms.manager.entity.Order;
-import zy.cloud.wms.manager.entity.OrderDetl;
-import zy.cloud.wms.manager.entity.Wave;
-import zy.cloud.wms.manager.entity.WaveDetl;
-import zy.cloud.wms.manager.service.OrderDetlService;
-import zy.cloud.wms.manager.service.OrderService;
-import zy.cloud.wms.manager.service.WaveDetlService;
-import zy.cloud.wms.manager.service.WaveService;
+import zy.cloud.wms.manager.entity.*;
+import zy.cloud.wms.manager.entity.dto.OrderDetlDTO;
+import zy.cloud.wms.manager.entity.param.StockOutParam;
+import zy.cloud.wms.manager.service.*;
 import zy.cloud.wms.manager.utils.AddZero;
 
 import javax.imageio.ImageIO;
@@ -46,6 +42,13 @@
     private WaveService waveService;
     @Autowired
     private WaveDetlService waveDetlService;
+    @Autowired
+    private PickoutService pickoutService;
+    @Autowired
+    private PickoutDetlService pickoutDetlService;
+    @Autowired
+    private LocDetlService locDetlService;
+
 
     @RequestMapping(value = "/order/{id}/auth")
     @ManagerAuth
@@ -357,4 +360,79 @@
         Page<OrderDetl> orderDetlPage = orderDetlService.selectPage(new Page<>(curr, limit),orderDetailWrapper);
         return R.ok(orderDetlPage);
     }
+
+
+    /**
+     * 寮�濮嬫挱绉�,鏇存柊璁㈠崟缁嗚妭,鍑忓皯搴撳瓨閲�
+     * @param orderDetls
+     * @return
+     */
+    @RequestMapping("/order/waveBack")
+    public R waveBack(@RequestBody OrderDetlDTO orderDetls){
+        /**
+         * 鎺х涓庡垵濮嬪寲
+         */
+        if (Cools.isEmpty(orderDetls.getOrderDetls())) {
+
+            throw new CoolException("鏈敹鍒版湁鏁堟挱绉嶄俊鎭�,璇疯仈绯荤鐞嗗憳");
+        }
+
+        /**
+         * 鏇存柊鍘熷嚭搴撳崟,鏍规嵁鎷h揣鍗曟潵鍑忓幓搴撳瓨
+         */
+        for (OrderDetl newOne : orderDetls.getOrderDetls()) {
+            Order order = orderService.selectOne(new EntityWrapper<Order>()
+                    .eq("id", newOne.getOrderId()));
+            Pickout pickout = pickoutService.selectOne(new EntityWrapper<Pickout>()
+                    .eq("wave_no", order.getWaveNo()));
+            OrderDetl oldOne = orderDetlService.selectOne(new EntityWrapper<OrderDetl>()
+                    .eq("id", newOne.getId()));
+            /**
+             * 璁$畻鍑哄樊鍊�,鍑忓幓搴撳瓨
+             */
+            double diffValue = newOne.getOutQty() - oldOne.getOutQty();
+            if (diffValue !=0) {
+                /**
+                 * 鑾峰彇鎷h揣鍗曞垎閰嶇殑搴撲綅
+                 */
+                List<PickoutDetl> pickoutDetls = pickoutDetlService.selectList(new EntityWrapper<PickoutDetl>()
+                        .eq("head_id", pickout.getId())
+                        .eq("matnr", newOne.getMatnr()));
+                /**
+                 * 閫氳繃鎷h揣鍗曞垎閰嶇殑搴撲綅,閬嶅巻搴撳瓨,
+                 */
+                for (PickoutDetl pickoutDetl : pickoutDetls) {
+                    if (diffValue == 0) break;
+                    LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>()
+                            .eq("node_id", pickoutDetl.getNodeId())
+                            .eq("matnr",newOne.getMatnr()));
+                    if (Cools.isEmpty(locDetl) || locDetl.getAnfme() == 0) {
+                        continue;
+                    }
+                    if (locDetl.getAnfme() > diffValue){
+                        locDetl.setAnfme(locDetl.getAnfme() - diffValue);
+                        locDetlService.update(locDetl, new EntityWrapper<LocDetl>()
+                                .eq("node_id",locDetl.getNodeId() )
+                                .eq("matnr",locDetl.getMatnr()));
+                        break;
+                    }
+                    if (locDetl.getAnfme() < diffValue){
+                        locDetl.setAnfme(0.0);
+                        diffValue = diffValue - locDetl.getAnfme();
+                        locDetlService.update(locDetl, new EntityWrapper<LocDetl>()
+                                .eq("node_id",locDetl.getNodeId() )
+                                .eq("matnr",locDetl.getMatnr()));
+                    }
+
+                }
+                orderDetlService.update(newOne, new EntityWrapper<OrderDetl>()
+                        .eq("id", newOne.getId() ));
+            }
+            Boolean result = orderDetlService.checkFinish(order.getId());
+            if (result) {
+                orderDetlService.finishOrder(order.getId());
+            }
+        }
+        return R.ok("鎾鎴愬姛");
+    }
 }

--
Gitblit v1.9.1