From d2adac4e369165ec523c23e7ffd19fc5775d43b5 Mon Sep 17 00:00:00 2001
From: mrzhssss <pro6@qq.com>
Date: 星期一, 11 四月 2022 08:14:14 +0800
Subject: [PATCH] Changes

---
 src/main/java/zy/cloud/wms/manager/controller/OrderController.java |  205 +++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 191 insertions(+), 14 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 51f26e5..3806cfe 100644
--- a/src/main/java/zy/cloud/wms/manager/controller/OrderController.java
+++ b/src/main/java/zy/cloud/wms/manager/controller/OrderController.java
@@ -19,22 +19,33 @@
 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.utils.AddZero;
 
 import javax.imageio.ImageIO;
 import javax.servlet.http.HttpServletResponse;
 import java.awt.image.BufferedImage;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 @RestController
 public class OrderController extends BaseController {
 
     @Autowired
     private OrderService orderService;
+    @Autowired
+    private OrderDetlService orderDetlService;
+    @Autowired
+    private WaveService waveService;
+    @Autowired
+    private WaveDetlService waveDetlService;
 
     @RequestMapping(value = "/order/{id}/auth")
     @ManagerAuth
@@ -53,11 +64,15 @@
         excludeTrash(param);
         convert(param, wrapper);
         hostEq(wrapper);
-        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
-        else {
-            wrapper.orderBy("update_time", false);
+        if (!Cools.isEmpty(orderByField)){
+            wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));
         }
-        return R.ok(orderService.selectPage(new Page<>(curr, limit), wrapper));
+        else {
+            wrapper.orderBy("create_time",false);
+        }
+
+        Page<Order> orderPage = orderService.selectPage(new Page<>(curr, limit), wrapper);
+        return R.ok(orderPage);
     }
 
     private void convert(Map<String, Object> map, EntityWrapper wrapper){
@@ -107,13 +122,20 @@
     @ManagerAuth
     @Transactional
     public R deleteBatch(@RequestParam(value = "ids[]") Long[] ids){
-        if (Cools.isEmpty((Object) ids)){
-            return R.error();
-        }
-        for (Long id : ids){
-            if (!orderService.deleteById(id)) {
-                throw new CoolException("鏈嶅姟鍣ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
+        /***
+         * 鎺х
+         */
+        for (Long id : ids) {
+            Order target = orderService.selectOne(new EntityWrapper<Order>()
+                    .eq("id", id));
+            if (target.getSettle() == 0 || target.getSettle() == 1) {
+                orderService.deleteById(id);
+                orderDetlService.delete(new EntityWrapper<OrderDetl>()
+                        .eq("order_id",id));
+            }else {
+                throw new CoolException("浠呭厑璁稿垹闄�'鍒濆鍖�','寰呭鐞�'鐘舵�佺殑璁㈠崟");
             }
+
         }
         return R.ok();
     }
@@ -180,4 +202,159 @@
         return R.ok();
     }
 
+    /**
+     * 鐢熸垚娉㈡
+     */
+    @RequestMapping("/orders/wave/auth")
+    @ManagerAuth
+    @Transactional
+    public R createWave(@RequestBody List<Order> orders){
+        /**
+         * 鎺х涓庡垵濮嬪寲
+         */
+        Integer seqNo = 1;
+        for (Order order : orders) {
+            if (order.getSettle() != 1L) {
+                return R.error("浠呮敮鎸�'寰呭鐞�'鐘舵�佺敓鎴愭尝娆�");
+            }
+        }
+
+        /**
+         * 鐢熸垚娉㈡琛ㄥご
+         */
+        Wave wave = new Wave();
+        wave.setHostId(getHostId());
+        String s = UUID.randomUUID().toString().replace("-","");
+        wave.setUuid(s);
+        String waveNo = "WAVE-" + new SimpleDateFormat("yyyyMMdd").format(new Date())+"-";
+        String currNum = waveService.getCurrNum(waveNo);
+        if (!Cools.isEmpty(currNum)) {
+            String[] split = currNum.split("-");
+            if (split.length < 3){
+                wave.setWaveNo(waveNo + "0001");
+            } else {
+                Integer newNum = Integer.parseInt(split[2]) + 1;
+                String format = AddZero.addZeroForNum(newNum + "", 4);
+                wave.setWaveNo(waveNo + format);
+            }
+        }else {
+            wave.setWaveNo(waveNo + "0001");
+        }
+
+        wave.setOrdersQty(orders.size());
+        wave.setStatus((short) 0);
+        wave.setCreateBy(getUserId());
+        wave.setUpdateBy(getUserId());
+        waveService.insert(wave);
+
+        /**
+         * 鐢熸垚娉㈡鏄庣粏
+         */
+        List<OrderDetl> allOrderDetls = orderDetlService.selectBatchByOrderNo(orders);
+        for (OrderDetl allOrderDetl : allOrderDetls) {
+            WaveDetl checkWaveDetl = waveDetlService.selectOne(new EntityWrapper<WaveDetl>()
+                    .eq("wave_id",wave.getId())
+                    .eq("matnr", allOrderDetl.getMatnr())
+                    .eq("batch", allOrderDetl.getBatch()));
+            if (Cools.isEmpty(checkWaveDetl)) {
+                WaveDetl waveDetl = new WaveDetl();
+                waveDetl.setHostId(getHostId());
+                waveDetl.setWaveId(wave.getId());
+                waveDetl.setWaveNo(wave.getWaveNo());
+                waveDetl.setSeqNo(seqNo);
+                seqNo++;
+                waveDetl.setOrderQty(1);
+                waveDetl.setOrderNos(allOrderDetl.getOrderNo());
+                waveDetl.setAnfme(allOrderDetl.getAnfme());
+                waveDetl.setMatnr(allOrderDetl.getMatnr());
+                waveDetl.setMaktx(allOrderDetl.getMaktx());
+                waveDetl.setSpecs(allOrderDetl.getSpecs());
+                waveDetl.setModel(allOrderDetl.getModel());
+                waveDetl.setUnit(allOrderDetl.getUnit());
+                waveDetl.setStatus(0);
+                waveDetl.setBatch(allOrderDetl.getBatch());
+                waveDetl.setCreateBy(getUserId());
+                waveDetl.setUpdateBy(getUserId());
+                waveDetlService.insert(waveDetl);
+            }else {
+                checkWaveDetl.setOrderQty(checkWaveDetl.getOrderQty()+1);
+                checkWaveDetl.setOrderNos(checkWaveDetl.getOrderNos() + "," +allOrderDetl.getOrderNo());
+                checkWaveDetl.setAnfme(checkWaveDetl.getAnfme() + allOrderDetl.getAnfme());
+                waveDetlService.update(checkWaveDetl,new EntityWrapper<WaveDetl>()
+                        .eq("id",checkWaveDetl.getId()));
+            }
+        }
+
+        /**
+         * 鎺х,鍑鸿繃BUG,鍙敓鎴愯〃澶�,涓嶇敓鎴愯〃韬�
+         */
+        if (Cools.isEmpty(allOrderDetls)) {
+            waveService.delete(new EntityWrapper<Wave>()
+                    .eq("id",wave.getId()));
+            throw new CoolException("鎵句笉鍒板嚭搴撳崟缁嗚妭,璇疯仈绯荤鐞嗗憳");
+        }
+        /**
+         * 鍙嶅啓鍑哄簱鍗曡〃澶�
+         */
+        for (Order order : orders) {
+            order.setWaveNo(wave.getWaveNo());
+            order.setSettle(11L);
+            orderService.update(order,new EntityWrapper<Order>()
+                    .eq("id",order.getId()));
+        }
+        return R.ok("宸茬敓鎴愭尝娆�");
+    }
+
+    /**
+     * 閫氳繃鎵瑰彿璁㈠崟涓寘鍚殑鍑哄簱鍗�
+     */
+
+    @RequestMapping("/order/orderByWave/auth")
+    @ManagerAuth
+    public R getOrderDetailByWave(@RequestParam(defaultValue = "1")Integer curr,
+                                  @RequestParam(defaultValue = "10")Integer limit,
+                                  @RequestParam(required = false)String orderByField,
+                                  @RequestParam(required = false)String orderByType,
+                                  @RequestParam Map<String, Object> param,
+                                  String research){
+        EntityWrapper<Wave> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+        hostEq(wrapper);
+        wrapper.orderBy("create_time",false);
+        List<Wave> waves = waveService.selectList(wrapper);
+        if (Cools.isEmpty(waves)) {
+            throw new CoolException("鎵句笉鍒拌娉㈡");
+        }
+
+        HashSet<String> allOrders = new HashSet<>();
+        for (Wave wave : waves) {
+            List<WaveDetl> waveDetls = waveDetlService.selectList(new EntityWrapper<WaveDetl>()
+                    .eq("wave_id", wave.getId()));
+            for (WaveDetl waveDetl : waveDetls) {
+                String[] split = waveDetl.getOrderNos().split(",");
+                for (String s : split) {
+                    allOrders.add(s);
+                }
+            }
+        }
+        ArrayList<String> allOrdersList = new ArrayList<>(allOrders);
+        EntityWrapper<OrderDetl> orderDetailWrapper = new EntityWrapper<>();
+        for (int i = 0; i < allOrdersList.size(); i++) {
+            String s = allOrdersList.get(i);
+            if (i == 0){
+                orderDetailWrapper
+                        .eq("order_no",s);
+            }else {
+                orderDetailWrapper
+                        .or()
+                        .eq("order_no",s);
+            }
+        }
+        if (!Cools.isEmpty(research)) {
+            orderDetailWrapper.eq("order_no",research);
+        }
+        Page<OrderDetl> orderDetlPage = orderDetlService.selectPage(new Page<>(curr, limit),orderDetailWrapper);
+        return R.ok(orderDetlPage);
+    }
 }

--
Gitblit v1.9.1