From 46607139e955ca266e24bd8561bca1f93a650178 Mon Sep 17 00:00:00 2001
From: wang..123 <brook_w@163.com>
Date: 星期二, 22 三月 2022 18:23:39 +0800
Subject: [PATCH] Merge branch 'master' of http://47.97.1.152:5880/r/wms_saas

---
 src/main/resources/mapper/OrderMapper.xml                               |   18 
 src/main/webapp/views/pickout/pickout.html                              |  158 ++++++
 src/main/java/zy/cloud/wms/manager/entity/Pickout.java                  |   24 +
 src/main/webapp/static/js/wave/wave.js                                  |   79 +++
 src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java    |  205 +++++++-
 src/main/java/zy/cloud/wms/manager/entity/PickoutDetl.java              |   20 
 src/main/java/zy/cloud/wms/manager/service/WorkService.java             |    3 
 src/main/java/zy/cloud/wms/manager/service/impl/PakoutServiceImpl.java  |    3 
 src/main/resources/mapper/PickoutDetlMapper.xml                         |    1 
 src/main/java/zy/cloud/wms/manager/controller/PickoutController.java    |    9 
 src/main/java/zy/cloud/wms/common/service/MainService.java              |  252 ++++++++++
 src/main/java/zy/cloud/wms/manager/controller/WaveController.java       |   17 
 src/main/java/zy/cloud/wms/manager/service/impl/PickoutServiceImpl.java |    4 
 src/main/java/zy/cloud/wms/manager/controller/PakoutController.java     |   19 
 src/main/java/zy/cloud/wms/manager/entity/StoPreTab.java                |    2 
 src/main/java/zy/cloud/wms/common/model/PickOutDto.java                 |   20 
 src/main/java/zy/cloud/wms/manager/service/WaveService.java             |    6 
 src/main/java/zy/cloud/wms/manager/service/impl/OrderServiceImpl.java   |    5 
 src/main/java/zy/cloud/wms/manager/controller/OrderController.java      |   18 
 src/main/java/zy/cloud/wms/manager/service/PickoutService.java          |    1 
 src/main/java/zy/cloud/wms/manager/service/impl/WaveServiceImpl.java    |   71 ++
 src/main/java/zy/cloud/wms/manager/service/OrderService.java            |    2 
 src/main/java/zy/cloud/wms/manager/mapper/PickoutMapper.java            |    2 
 src/main/java/zy/cloud/wms/common/model/MatnrDto.java                   |    1 
 src/main/webapp/static/js/ioWorks/matQuery.js                           |    2 
 src/main/resources/mapper/PickoutMapper.xml                             |    6 
 src/main/java/zy/cloud/wms/manager/controller/WorkController.java       |   12 
 src/main/webapp/static/js/order/order.js                                |    1 
 src/main/webapp/views/wave/wave.html                                    |    7 
 src/main/java/zy/cloud/wms/manager/mapper/OrderMapper.java              |    3 
 src/main/webapp/static/js/pickout/pickout.js                            |  373 +++++++++-------
 src/main/java/zy/cloud/wms/common/model/WaveStoDto.java                 |   33 +
 32 files changed, 1,105 insertions(+), 272 deletions(-)

diff --git a/src/main/java/zy/cloud/wms/common/model/MatnrDto.java b/src/main/java/zy/cloud/wms/common/model/MatnrDto.java
index 1612c11..190c95e 100644
--- a/src/main/java/zy/cloud/wms/common/model/MatnrDto.java
+++ b/src/main/java/zy/cloud/wms/common/model/MatnrDto.java
@@ -14,4 +14,5 @@
 
     private  String batch;
 
+
 }
diff --git a/src/main/java/zy/cloud/wms/common/model/PickOutDto.java b/src/main/java/zy/cloud/wms/common/model/PickOutDto.java
new file mode 100644
index 0000000..072aee3
--- /dev/null
+++ b/src/main/java/zy/cloud/wms/common/model/PickOutDto.java
@@ -0,0 +1,20 @@
+package zy.cloud.wms.common.model;
+
+import lombok.Data;
+
+@Data
+public class PickOutDto {
+    private Integer anfme;
+    private String locNo;
+    private String maktx;
+    private String matnr;
+    private Integer nodeId;
+    private Boolean prior;
+    private Integer reduce;
+    private Integer remQty;
+    private String title;
+    private Integer total;
+    private Integer type;
+    private String waveId;
+
+}
diff --git a/src/main/java/zy/cloud/wms/common/model/WaveStoDto.java b/src/main/java/zy/cloud/wms/common/model/WaveStoDto.java
new file mode 100644
index 0000000..8a49715
--- /dev/null
+++ b/src/main/java/zy/cloud/wms/common/model/WaveStoDto.java
@@ -0,0 +1,33 @@
+package zy.cloud.wms.common.model;
+
+import lombok.Data;
+import zy.cloud.wms.manager.entity.OrderDetl;
+import zy.cloud.wms.manager.entity.WaveDetl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Data
+public class WaveStoDto {
+
+    private String orderNo;
+
+    private List<MatnrDto> dtos;
+
+    public WaveStoDto() {
+    }
+
+    public WaveStoDto create(String id, List<WaveDetl> orderDetls){
+        this.setOrderNo(id);
+        List<MatnrDto> matnrDtos = new ArrayList<>();
+        for (WaveDetl waveDetl : orderDetls) {
+            MatnrDto matnrDto = new MatnrDto();
+            matnrDto.setMatnr(waveDetl.getMatnr());
+            matnrDto.setCount(waveDetl.getAnfme());
+            matnrDto.setBatch(waveDetl.getBatch());
+            matnrDtos.add(matnrDto);
+        }
+        this.setDtos(matnrDtos);
+        return this;
+    }
+}
diff --git a/src/main/java/zy/cloud/wms/common/service/MainService.java b/src/main/java/zy/cloud/wms/common/service/MainService.java
index 165c823..ec44a62 100644
--- a/src/main/java/zy/cloud/wms/common/service/MainService.java
+++ b/src/main/java/zy/cloud/wms/common/service/MainService.java
@@ -10,6 +10,7 @@
 import zy.cloud.wms.common.model.MatnrDto;
 import zy.cloud.wms.common.model.OrderStoDto;
 import zy.cloud.wms.common.model.ReceiveStoDto;
+import zy.cloud.wms.common.model.WaveStoDto;
 import zy.cloud.wms.common.utils.VersionUtils;
 import zy.cloud.wms.manager.entity.*;
 import zy.cloud.wms.manager.service.*;
@@ -37,6 +38,10 @@
     private ReceiveService receiveService;
     @Autowired
     private ReceiveDetlService receiveDetlService;
+    @Autowired
+    private PickoutService pickoutService;
+    @Autowired
+    private PickoutDetlService pickoutDetlService;
 
     @Transactional
     public List<StoPreTab> stockOutPreview(OrderStoDto orderStoDto, Long hostId) {
@@ -186,7 +191,79 @@
         });
         return res;
     }
+    public List<StoPreTab> orderOutPreview(OrderStoDto orderStoDto, Long hostId){
+        if (Cools.isEmpty(orderStoDto) || Cools.isEmpty(orderStoDto.getDtos())) {
+            throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�");
+        }
+        List<StoPreTab> res = new ArrayList<>();
+        // 妫�鏌ュ簱瀛樻槸鍚﹁冻澶�
+//        locDetlService.checkLocDetlCount(orderStoDto.getDtos());
 
+        for (MatnrDto matnrDto : orderStoDto.getDtos()) {
+            // 鍒ゆ柇鐗╂枡鏄惁瀛樺湪
+            Mat mat = matService.selectByMatnr(hostId, matnrDto.getMatnr());
+            if (null == mat) {
+                throw new CoolException(matnrDto.getMatnr() + "鐗╂枡灏氭湭鏇存柊銆�" + orderStoDto.getOrderNo() +"鍗曟嵁鍥犳涓柇锛�");
+            }
+
+            Double sumAnfme = Optional.ofNullable(locDetlService.selectCountByMatnr(mat.getMatnr(), hostId)).orElse(0.0D);
+            double lack = 0.0D;
+            // 缂鸿揣
+            if (sumAnfme < matnrDto.getCount()) {
+                lack = matnrDto.getCount() - sumAnfme;
+                // 瑙嗗浘瀵硅薄
+                StoPreTab tab = new StoPreTab();
+                tab.setTitle(mat.getMaktx() + "锛�" + mat.getMatnr() + "锛�");
+                tab.setMatnr(mat.getMatnr());
+                tab.setMaktx(mat.getMaktx());
+                tab.setAnfme(matnrDto.getCount());
+                tab.setLocNo("缂鸿揣");
+                tab.setTotal(lack);
+                tab.setReduce(lack);
+                tab.setRemQty(0.0D);
+                tab.setPrior(false);
+                tab.setPrior$("脳");
+                tab.setType(0);
+                res.add(tab);
+            }
+
+            // 鏌ヨ瀛樻湁褰撳墠鐗╂枡鐨勮揣浣�
+            List<LocDetl> locDetls = locDetlService.findOfSort(hostId, mat.getMatnr());
+            double issued = Optional.of(matnrDto.getCount() - lack).orElse(0.0D) ;
+            double anfme = issued;
+            for (LocDetl locDetl : locDetls) {
+                if (issued > 0) {
+                    // 瑙嗗浘瀵硅薄
+                    StoPreTab tab = new StoPreTab();
+                    tab.setTitle(mat.getMaktx() + "锛�" + mat.getMatnr() + "锛�");
+                    tab.setMatnr(mat.getMatnr());
+                    tab.setMaktx(mat.getMaktx());
+                    tab.setAnfme(matnrDto.getCount());
+
+                    tab.setLocNo(locDetl.getLocNo());
+                    tab.setNodeId(locDetl.getNodeId());
+                    tab.setTotal(locDetl.getAnfme());
+                    tab.setReduce(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued);
+                    tab.setRemQty(tab.getTotal() - tab.getReduce());
+                    tab.setPrior(locDetlService.isPrior(locDetl.getNodeId(), mat.getMatnr()));
+                    tab.setPrior$(tab.getPrior()?"鉁�":"脳");
+                    tab.setType(1);
+                    res.add(tab);
+                    // 鍓╀綑寰呭嚭鏁伴噺閫掑噺
+                    issued = issued - locDetl.getAnfme();
+                }
+            }
+
+        }
+        res.sort(new Comparator<StoPreTab>() {
+            @Override
+            public int compare(StoPreTab o1, StoPreTab o2) {
+//                return o1.getMatnr().length() - o2.getMatnr().length();
+                return (int) (o1.getAnfme() - o2.getAnfme());
+            }
+        });
+        return res;
+    }
     @Transactional
     public void stockOutProcess(OrderStoDto orderStoDto, Long hostId) {
         if (Cools.isEmpty(orderStoDto) || Cools.isEmpty(orderStoDto.getDtos())) {
@@ -316,6 +393,8 @@
         }
     }
 
+
+
     public static void main(String[] args) {
 
         for (int i = 2; i < 51; i++) {
@@ -329,4 +408,177 @@
                     "GO");
         }
     }
+
+
+    public void orderStockOutProcess(OrderStoDto orderStoDto, Long hostId, Long userId) {
+        if (Cools.isEmpty(orderStoDto) || Cools.isEmpty(orderStoDto.getDtos())) {
+            return;
+        }
+
+//        Receive receive = receiveService.selectByOrderNo(receiveStoDto.getOrderNo(), hostId);
+        Order order = orderService.selectByOrderNo(orderStoDto.getOrderNo(), hostId);
+        if (order == null) {
+            throw new CoolException(orderStoDto.getOrderNo() + "鍗曟嵁涓嶅瓨鍦�");
+        }
+        Date now = new Date();
+        // 妫�鏌ュ簱瀛樻槸鍚﹁冻澶�
+        locDetlService.checkLocDetlCount(orderStoDto.getDtos(), hostId);
+
+        for (MatnrDto matnrDto : orderStoDto.getDtos()) {
+            // 鍒ゆ柇鐗╂枡鏄惁瀛樺湪
+            Mat mat = matService.selectByMatnr(hostId, matnrDto.getMatnr());
+            if (null == mat) {
+                throw new CoolException(matnrDto.getMatnr() + "鐗╂枡灏氭湭鏇存柊銆�" + matnrDto.getCount() +"鍗曟嵁鍥犳涓柇锛�");
+            }
+            // 鏌ヨ瀛樻湁褰撳墠鐗╂枡鐨勮揣浣�
+            List<LocDetl> locDetls = locDetlService.findOfSort(hostId, mat.getMatnr());
+            double issued = Optional.ofNullable(matnrDto.getCount()).orElse(0.0D);
+            Pickout pickout = new Pickout();
+            pickout.setHostId(hostId);
+            pickout.setUserId(userId);
+            pickout.setWrkNo(String.valueOf(snowflakeIdWorker.nextId()));
+            pickout.setWrkSts(1L);
+            pickout.setOrderQty(1);
+            pickout.setOrderNos(orderStoDto.getOrderNo());
+            pickout.setCreateBy(userId.intValue());
+            pickout.setUpdateBy(userId.intValue());
+            pickoutService.insert(pickout);
+            for (LocDetl locDetl : locDetls) {
+
+                if (issued > 0) {
+                    PickoutDetl pickoutDetl = new PickoutDetl();
+                    pickoutDetl.setHeadId(pickout.getId());
+                    pickoutDetl.setNodeId(locDetl.getNodeId());
+                    pickoutDetl.setNodeName(locDetl.getLocNo());
+                    pickoutDetl.setAnfme(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued);
+                    pickoutDetl.setMatnr(locDetl.getMatnr());
+                    pickoutDetl.setMaktx(locDetl.getMaktx());
+                    pickoutDetl.setName(locDetl.getName());
+                    pickoutDetl.setSpecs(locDetl.getSpecs());
+                    pickoutDetl.setModel(locDetl.getModel());
+                    pickoutDetl.setBatch(locDetl.getBatch());
+                    pickoutDetl.setUnit(locDetl.getUnit());
+                    pickoutDetl.setBarcode(locDetl.getBarcode());
+                    pickoutDetl.setPrice(locDetl.getPrice());
+                    pickoutDetl.setWeight(locDetl.getWeight());
+                    pickoutDetl.setStatus(1);
+                    pickoutDetl.setCreateBy(userId.intValue());
+                    pickoutDetl.setUpdateBy(userId.intValue());
+
+//                    // 淇濆瓨鍑哄簱閫氱煡鍗�
+//                    Pakout pakout = new Pakout();
+//                    pakout.setHostId(hostId);
+//                    pakout.setWrkSts(1L);
+//                    pakout.setAnfme(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued);
+//                    pakout.setZpallet(locDetl.getZpallet());
+//                    pakout.setLocNo(locDetl.getLocNo());
+//                    pakout.setNodeId(locDetl.getNodeId());
+//                    pakout.setWrkNo(String.valueOf(snowflakeIdWorker.nextId()));
+//                    VersionUtils.setPakout(pakout, mat);
+//                    pakout.setDocId(receive.getDocType()); // 鍗曟嵁绫诲瀷
+//                    pakout.setDocNum(receive.getOrderNo());    // 鍗曟嵁缂栧彿
+//                    pakout.setCreateTime(now);
+//                    pakout.setUpdateTime(now);
+//                    pakout.setStatus(1);
+                    if (!pickoutDetlService.insert(pickoutDetl)) {
+                        throw new CoolException("淇濆瓨鍑哄簱閫氱煡鍗曞け璐�");
+                    }
+                    if (issued>=locDetl.getAnfme()) {
+//                        // 鍒犻櫎搴撳瓨鏄庣粏
+//                        if (!locDetlService.removeStock(locDetl.getNodeId(), mat.getMatnr())) {
+//                            throw new CoolException("鍒犻櫎搴撳瓨鏄庣粏澶辫触");
+//                        }
+                    } else {
+//                        // 淇敼搴撳瓨鏄庣粏鏁伴噺
+//                        if (!locDetlService.reduceStock(locDetl.getNodeId(), mat.getMatnr(), issued)) {
+//                            throw new CoolException("淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触");
+//                        }
+                    }
+                    // 鍓╀綑寰呭嚭鏁伴噺閫掑噺
+                    issued = issued - locDetl.getAnfme();
+                }
+            }
+            // 淇敼鍗曟嵁鐘舵��
+            if (!orderService.updateSettle(orderStoDto.getOrderNo(), 2L, hostId)) {
+                throw new CoolException("淇敼鍗曟嵁鐘舵�佸け璐�");
+            }
+        }
+    }
+
+    public Object waveOutPreview(WaveStoDto waveStoDto, Long hostId) {
+        if (Cools.isEmpty(waveStoDto) || Cools.isEmpty(waveStoDto.getDtos())) {
+            throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�");
+        }
+        List<StoPreTab> res = new ArrayList<>();
+        // 妫�鏌ュ簱瀛樻槸鍚﹁冻澶�
+//        locDetlService.checkLocDetlCount(orderStoDto.getDtos());
+
+        for (MatnrDto matnrDto : waveStoDto.getDtos()) {
+            // 鍒ゆ柇鐗╂枡鏄惁瀛樺湪
+            Mat mat = matService.selectByMatnr(hostId, matnrDto.getMatnr());
+            if (null == mat) {
+                throw new CoolException(matnrDto.getMatnr() + "鐗╂枡灏氭湭鏇存柊銆�" + waveStoDto.getOrderNo() +"鍗曟嵁鍥犳涓柇锛�");
+            }
+
+            Double sumAnfme = Optional.ofNullable(locDetlService.selectCountByMatnr(mat.getMatnr(), hostId)).orElse(0.0D);
+            double lack = 0.0D;
+            // 缂鸿揣
+            if (sumAnfme < matnrDto.getCount()) {
+                lack = matnrDto.getCount() - sumAnfme;
+                // 瑙嗗浘瀵硅薄
+                StoPreTab tab = new StoPreTab();
+                tab.setTitle(mat.getMaktx() + "锛�" + mat.getMatnr() + "锛�");
+                tab.setMatnr(mat.getMatnr());
+                tab.setMaktx(mat.getMaktx());
+                tab.setAnfme(matnrDto.getCount());
+                tab.setLocNo("缂鸿揣");
+                tab.setTotal(lack);
+                tab.setReduce(lack);
+                tab.setRemQty(0.0D);
+                tab.setPrior(false);
+                tab.setPrior$("脳");
+                tab.setType(0);
+                tab.setWaveId(waveStoDto.getOrderNo());
+                res.add(tab);
+            }
+
+            // 鏌ヨ瀛樻湁褰撳墠鐗╂枡鐨勮揣浣�
+            List<LocDetl> locDetls = locDetlService.findOfSort(hostId, mat.getMatnr());
+            double issued = Optional.of(matnrDto.getCount() - lack).orElse(0.0D) ;
+            double anfme = issued;
+            for (LocDetl locDetl : locDetls) {
+                if (issued > 0) {
+                    // 瑙嗗浘瀵硅薄
+                    StoPreTab tab = new StoPreTab();
+                    tab.setTitle(mat.getMaktx() + "锛�" + mat.getMatnr() + "锛�");
+                    tab.setMatnr(mat.getMatnr());
+                    tab.setMaktx(mat.getMaktx());
+                    tab.setAnfme(matnrDto.getCount());
+
+                    tab.setLocNo(locDetl.getLocNo());
+                    tab.setNodeId(locDetl.getNodeId());
+                    tab.setTotal(locDetl.getAnfme());
+                    tab.setReduce(issued>=locDetl.getAnfme()?locDetl.getAnfme():issued);
+                    tab.setRemQty(tab.getTotal() - tab.getReduce());
+                    tab.setPrior(locDetlService.isPrior(locDetl.getNodeId(), mat.getMatnr()));
+                    tab.setPrior$(tab.getPrior()?"鉁�":"脳");
+                    tab.setType(1);
+                    tab.setWaveId(waveStoDto.getOrderNo());
+                    res.add(tab);
+                    // 鍓╀綑寰呭嚭鏁伴噺閫掑噺
+                    issued = issued - locDetl.getAnfme();
+                }
+            }
+
+        }
+        res.sort(new Comparator<StoPreTab>() {
+            @Override
+            public int compare(StoPreTab o1, StoPreTab o2) {
+//                return o1.getMatnr().length() - o2.getMatnr().length();
+                return (int) (o1.getAnfme() - o2.getAnfme());
+            }
+        });
+        return res;
+
+    }
 }
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 b4cc123..1934bb6 100644
--- a/src/main/java/zy/cloud/wms/manager/controller/OrderController.java
+++ b/src/main/java/zy/cloud/wms/manager/controller/OrderController.java
@@ -123,18 +123,14 @@
         for (Long id : ids) {
             Order target = orderService.selectOne(new EntityWrapper<Order>()
                     .eq("id", id));
-            if (target.getSettle() != 0 || target.getSettle() != 1) {
+            if (target.getSettle() == 0 || target.getSettle() == 1) {
+                orderService.deleteById(id);
+                orderDetlService.delete(new EntityWrapper<OrderDetl>()
+                        .eq("order_id",id));
+            }else {
                 throw new CoolException("浠呭厑璁稿垹闄�'鍒濆鍖�','寰呭鐞�'鐘舵�佺殑璁㈠崟");
             }
 
-        }
-        if (Cools.isEmpty((Object) ids)){
-            return R.error();
-        }
-        for (Long id : ids){
-            if (!orderService.deleteById(id)) {
-                throw new CoolException("鏈嶅姟鍣ㄩ敊璇紝璇疯仈绯荤鐞嗗憳");
-            }
         }
         return R.ok();
     }
@@ -212,8 +208,8 @@
          */
         Integer seqNo = 1;
         for (Order order : orders) {
-            if (order.getSettle() != 2L) {
-                return R.error("浠呮敮鎸�'鏈嫞璐�'鐘舵�佺敓鎴愭尝娆�");
+            if (order.getSettle() != 1L) {
+                return R.error("浠呮敮鎸�'寰呭鐞�'鐘舵�佺敓鎴愭尝娆�");
             }
         }
 
diff --git a/src/main/java/zy/cloud/wms/manager/controller/PakoutController.java b/src/main/java/zy/cloud/wms/manager/controller/PakoutController.java
index 7b09490..73b9f80 100644
--- a/src/main/java/zy/cloud/wms/manager/controller/PakoutController.java
+++ b/src/main/java/zy/cloud/wms/manager/controller/PakoutController.java
@@ -13,7 +13,9 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import zy.cloud.wms.common.web.BaseController;
+import zy.cloud.wms.manager.entity.Order;
 import zy.cloud.wms.manager.entity.Pakout;
+import zy.cloud.wms.manager.service.OrderService;
 import zy.cloud.wms.manager.service.PakoutService;
 
 import java.util.ArrayList;
@@ -26,6 +28,8 @@
 
     @Autowired
     private PakoutService pakoutService;
+    @Autowired
+    private OrderService orderService;
 
     @RequestMapping(value = "/pakout/{id}/auth")
     @ManagerAuth
@@ -139,13 +143,18 @@
     @RequestMapping(value = "/pakout/print/auth")
     @ManagerAuth
     public R print(@RequestParam String docNumber) {
-        List<Pakout> pakouts = pakoutService.selectList(new EntityWrapper<Pakout>().eq("doc_num", docNumber).eq("host_id", getHostId()));
-        if (!Cools.isEmpty(pakouts)) {
-            if (pakouts.get(0).getWrkSts() == 1) {
-                pakoutService.stockOutPrint(null, docNumber, getUserId(), getHostId());
+        Order order_no = orderService.selectOne(new EntityWrapper<Order>()
+                .eq("order_no", docNumber));
+        if (!Cools.isEmpty(order_no)) {
+            if (order_no.getSettle() == 2) {
+                order_no.setSettle(7L);
+                orderService.update(order_no,new EntityWrapper<Order>()
+                        .eq("order_no",docNumber));
+                return R.ok();
             }
+
         }
-        return R.ok();
+        return R.error();
     }
 
 }
diff --git a/src/main/java/zy/cloud/wms/manager/controller/PickoutController.java b/src/main/java/zy/cloud/wms/manager/controller/PickoutController.java
index 3878bea..2ab4c98 100644
--- a/src/main/java/zy/cloud/wms/manager/controller/PickoutController.java
+++ b/src/main/java/zy/cloud/wms/manager/controller/PickoutController.java
@@ -7,6 +7,8 @@
 import com.baomidou.mybatisplus.plugins.Page;
 import com.core.common.DateUtils;
 import zy.cloud.wms.manager.entity.Pickout;
+import zy.cloud.wms.manager.entity.PickoutDetl;
+import zy.cloud.wms.manager.service.PickoutDetlService;
 import zy.cloud.wms.manager.service.PickoutService;
 import com.core.annotations.ManagerAuth;
 import com.core.common.BaseRes;
@@ -23,6 +25,8 @@
 
     @Autowired
     private PickoutService pickoutService;
+    @Autowired
+    private PickoutDetlService pickoutDetlService;
 
     @RequestMapping(value = "/pickout/{id}/auth")
     @ManagerAuth
@@ -78,7 +82,12 @@
     @ManagerAuth
     public R delete(@RequestParam(value="ids[]") Long[] ids){
          for (Long id : ids){
+             Pickout picout = pickoutService.selectOne(new EntityWrapper<Pickout>()
+                     .eq("id", id));
+             pickoutDetlService.delete(new EntityWrapper<PickoutDetl>()
+                    .eq("head_id",id));
             pickoutService.deleteById(id);
+            pickoutService.updateWaveStatus(picout.getWaveNo());
         }
         return R.ok();
     }
diff --git a/src/main/java/zy/cloud/wms/manager/controller/WaveController.java b/src/main/java/zy/cloud/wms/manager/controller/WaveController.java
index 2f34179..f8aa130 100644
--- a/src/main/java/zy/cloud/wms/manager/controller/WaveController.java
+++ b/src/main/java/zy/cloud/wms/manager/controller/WaveController.java
@@ -6,8 +6,10 @@
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.core.common.DateUtils;
+import zy.cloud.wms.common.model.PickOutDto;
 import zy.cloud.wms.manager.entity.Wave;
 import zy.cloud.wms.manager.entity.WaveDetl;
+import zy.cloud.wms.manager.entity.param.StockOutParam;
 import zy.cloud.wms.manager.service.OrderService;
 import zy.cloud.wms.manager.service.WaveDetlService;
 import zy.cloud.wms.manager.service.WaveService;
@@ -18,8 +20,10 @@
 import zy.cloud.wms.common.web.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import zy.cloud.wms.manager.service.WorkService;
 
 import java.util.*;
+
 
 @RestController
 public class WaveController extends BaseController {
@@ -30,6 +34,8 @@
     private WaveDetlService waveDetlService;
     @Autowired
     private OrderService orderService;
+    @Autowired
+    private WorkService workService;
 
     @RequestMapping(value = "/wave/{id}/auth")
     @ManagerAuth
@@ -157,9 +163,14 @@
 
     @RequestMapping("/wave/createOut")
     @ManagerAuth
-    public R createWaveOut(@RequestBody Wave wave){
-        waveService.createOut(wave,getUserId(),getHostId());
-        return R.ok();
+    public R createWaveOut(@RequestBody List<PickOutDto> pickOutDtosk){
+        return waveService.createOut(pickOutDtosk,getUserId(),getHostId());
+    }
+
+    @RequestMapping("/wave/preview")
+    @ManagerAuth
+    public R createWavePreview(@RequestBody StockOutParam stockOutParam){
+        return workService.wavePreview(stockOutParam, getUserId(), getHostId());
     }
 
 }
diff --git a/src/main/java/zy/cloud/wms/manager/controller/WorkController.java b/src/main/java/zy/cloud/wms/manager/controller/WorkController.java
index 42162dc..38f9604 100644
--- a/src/main/java/zy/cloud/wms/manager/controller/WorkController.java
+++ b/src/main/java/zy/cloud/wms/manager/controller/WorkController.java
@@ -79,9 +79,7 @@
     @RequestMapping("/stock/out/print")
     @ManagerAuth(memo = "鎷h揣鍗曟墦鍗�")
     public R stockOutPrint(@RequestBody StockOutParam stockOutParam) {
-
-
-        return workService.stockInPrint(stockOutParam, getUserId(), getHostId());
+        return workService.stockOutPrint(stockOutParam, getUserId(), getHostId());
     }
 
     @RequestMapping("/stock/allot")
@@ -180,6 +178,7 @@
         return workService.initOrder(param, getUserId(), getHostId());
     }
 
+
     @RequestMapping("/stock/transfer")
     @ManagerAuth(memo = "搴撳瓨璋冩嫧")
     public R stockTransfer(@RequestBody AsrsTransferParam number) {
@@ -228,6 +227,13 @@
                 eq("host_id", getHostId()).orderBy("create_time", false).eq("doc_class",docClass));
         return R.ok().add(docTypes);
     }
+    @RequestMapping("docType/out/get")
+    @ManagerAuth
+    public R getDocOutTypeData(Integer docClass){
+        List<DocType> docTypes = docTypeService.selectList(new EntityWrapper<DocType>().eq("status", 1).
+                eq("host_id", getHostId()).orderBy("create_time", false).eq("doc_class",docClass));
+        return R.ok().add(docTypes);
+    }
 
     // 鑾峰彇鎵�鏈夊鎴�
     @RequestMapping("/cstmr/all/get")
diff --git a/src/main/java/zy/cloud/wms/manager/entity/Pickout.java b/src/main/java/zy/cloud/wms/manager/entity/Pickout.java
index a5ec084..804a8f3 100644
--- a/src/main/java/zy/cloud/wms/manager/entity/Pickout.java
+++ b/src/main/java/zy/cloud/wms/manager/entity/Pickout.java
@@ -92,6 +92,15 @@
     @ApiModelProperty(value= "")
     private String memo;
 
+    @TableField("order_qty")
+    private Integer orderQty;
+
+    @TableField("order_nos")
+    private String orderNos;
+
+    @TableField("wave_no")
+    private String waveNo;
+
     public Pickout() {}
 
 
@@ -108,6 +117,21 @@
 //            null    // 
 //    );
 
+    public String getWrkSts$(){
+        if (this.wrkSts == 1) {
+            return "鏈墦鍗�";
+        }
+        if (this.wrkSts == 2) {
+            return "鏈嫞璐�";
+        }
+        if (this.wrkSts == 3) {
+            return "寮�濮嬫嫞璐�";
+        }
+        if (this.wrkSts == 4) {
+            return "鎷h揣瀹屾垚";
+        }
+        return "";
+    }
     public Long getId() {
         return id;
     }
diff --git a/src/main/java/zy/cloud/wms/manager/entity/PickoutDetl.java b/src/main/java/zy/cloud/wms/manager/entity/PickoutDetl.java
index 8939674..79d3e56 100644
--- a/src/main/java/zy/cloud/wms/manager/entity/PickoutDetl.java
+++ b/src/main/java/zy/cloud/wms/manager/entity/PickoutDetl.java
@@ -69,7 +69,7 @@
      * 搴撲綅ID
      */
     @ApiModelProperty(value= "搴撲綅ID")
-    @TableField("node_id")
+    @TableField("nodeId")
     private Long nodeId;
 
     /**
@@ -217,13 +217,16 @@
     @ApiModelProperty(value= "淇敼浜哄憳ID")
     @TableField("update_by")
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    private Date updateBy;
+    private Integer updateBy;
 
     /**
      * 澶囨敞
      */
     @ApiModelProperty(value= "澶囨敞")
     private String memo;
+
+    @TableField("wrk_no")
+    private String wrkNo;
 
     public PickoutDetl() {}
 
@@ -471,20 +474,9 @@
         this.updateTime = updateTime;
     }
 
-    public Date getUpdateBy() {
-        return updateBy;
-    }
 
-    public String getUpdateBy$(){
-        if (Cools.isEmpty(this.updateBy)){
-            return "";
-        }
-        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateBy);
-    }
 
-    public void setUpdateBy(Date updateBy) {
-        this.updateBy = updateBy;
-    }
+
 
     public String getMemo() {
         return memo;
diff --git a/src/main/java/zy/cloud/wms/manager/entity/StoPreTab.java b/src/main/java/zy/cloud/wms/manager/entity/StoPreTab.java
index e32e995..3bd238a 100644
--- a/src/main/java/zy/cloud/wms/manager/entity/StoPreTab.java
+++ b/src/main/java/zy/cloud/wms/manager/entity/StoPreTab.java
@@ -32,4 +32,6 @@
 
     private Integer type;
 
+    private String waveId;
+
 }
diff --git a/src/main/java/zy/cloud/wms/manager/mapper/OrderMapper.java b/src/main/java/zy/cloud/wms/manager/mapper/OrderMapper.java
index 095c175..42447b1 100644
--- a/src/main/java/zy/cloud/wms/manager/mapper/OrderMapper.java
+++ b/src/main/java/zy/cloud/wms/manager/mapper/OrderMapper.java
@@ -22,4 +22,7 @@
     void updateStatus(@Param("orderNo") String order);
 
     void changeSettleTo12(@Param("orderNo") String orderIds);
+
+    void updateWrkSts(@Param("wrkNo") String wrkNo, @Param("docNum") String docNum, @Param("wrkSts") Integer wrkSts, @Param("userId") Long userId, @Param("hostId")
+                      Long hostId);
 }
diff --git a/src/main/java/zy/cloud/wms/manager/mapper/PickoutMapper.java b/src/main/java/zy/cloud/wms/manager/mapper/PickoutMapper.java
index 071d83a..5d23ced 100644
--- a/src/main/java/zy/cloud/wms/manager/mapper/PickoutMapper.java
+++ b/src/main/java/zy/cloud/wms/manager/mapper/PickoutMapper.java
@@ -1,5 +1,6 @@
 package zy.cloud.wms.manager.mapper;
 
+import org.apache.ibatis.annotations.Param;
 import zy.cloud.wms.manager.entity.Pickout;
 import com.baomidou.mybatisplus.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
@@ -9,4 +10,5 @@
 @Repository
 public interface PickoutMapper extends BaseMapper<Pickout> {
 
+    void updateWaveStatus(@Param("waveNo") String waveNo);
 }
diff --git a/src/main/java/zy/cloud/wms/manager/service/OrderService.java b/src/main/java/zy/cloud/wms/manager/service/OrderService.java
index 92af9fd..b2bf5f4 100644
--- a/src/main/java/zy/cloud/wms/manager/service/OrderService.java
+++ b/src/main/java/zy/cloud/wms/manager/service/OrderService.java
@@ -23,4 +23,6 @@
     void updateStatus(String order);
 
     void changeSettleTo12(String orderIds);
+
+    void stockOutPrint(String wrkNo, String docNumber, Long userId, Long hostId);
 }
diff --git a/src/main/java/zy/cloud/wms/manager/service/PickoutService.java b/src/main/java/zy/cloud/wms/manager/service/PickoutService.java
index 8191757..c5269bb 100644
--- a/src/main/java/zy/cloud/wms/manager/service/PickoutService.java
+++ b/src/main/java/zy/cloud/wms/manager/service/PickoutService.java
@@ -5,4 +5,5 @@
 
 public interface PickoutService extends IService<Pickout> {
 
+    void updateWaveStatus(String waveNo);
 }
diff --git a/src/main/java/zy/cloud/wms/manager/service/WaveService.java b/src/main/java/zy/cloud/wms/manager/service/WaveService.java
index 9030a70..cd4839b 100644
--- a/src/main/java/zy/cloud/wms/manager/service/WaveService.java
+++ b/src/main/java/zy/cloud/wms/manager/service/WaveService.java
@@ -1,9 +1,13 @@
 package zy.cloud.wms.manager.service;
 
+import com.core.common.R;
+import zy.cloud.wms.common.model.PickOutDto;
 import zy.cloud.wms.manager.entity.Wave;
 import com.baomidou.mybatisplus.service.IService;
 
+import java.util.List;
+
 public interface WaveService extends IService<Wave> {
 
-    void createOut(Wave wave, Long userId, Long hostId);
+    R createOut(List<PickOutDto> pickOutDtosk, Long userId, Long hostId);
 }
diff --git a/src/main/java/zy/cloud/wms/manager/service/WorkService.java b/src/main/java/zy/cloud/wms/manager/service/WorkService.java
index 4a9138c..8c0691c 100644
--- a/src/main/java/zy/cloud/wms/manager/service/WorkService.java
+++ b/src/main/java/zy/cloud/wms/manager/service/WorkService.java
@@ -41,4 +41,7 @@
 
     R stockCheckAuditing(Long checkId, Long userId, Long hostId);
 
+    R initOutOrder(InitOrderParam param, Long userId, Long hostId);
+
+    R wavePreview(StockOutParam stockOutParam, Long userId, Long hostId);
 }
diff --git a/src/main/java/zy/cloud/wms/manager/service/impl/OrderServiceImpl.java b/src/main/java/zy/cloud/wms/manager/service/impl/OrderServiceImpl.java
index 39ffe94..b87ace1 100644
--- a/src/main/java/zy/cloud/wms/manager/service/impl/OrderServiceImpl.java
+++ b/src/main/java/zy/cloud/wms/manager/service/impl/OrderServiceImpl.java
@@ -62,5 +62,10 @@
         this.baseMapper.changeSettleTo12(orderIds);
     }
 
+    @Override
+    public void stockOutPrint(String wrkNo, String docNumber, Long userId, Long hostId) {
+        this.baseMapper.updateWrkSts(wrkNo, docNumber, 7, userId, hostId);
+    }
+
 
 }
diff --git a/src/main/java/zy/cloud/wms/manager/service/impl/PakoutServiceImpl.java b/src/main/java/zy/cloud/wms/manager/service/impl/PakoutServiceImpl.java
index 245e5e3..32712df 100644
--- a/src/main/java/zy/cloud/wms/manager/service/impl/PakoutServiceImpl.java
+++ b/src/main/java/zy/cloud/wms/manager/service/impl/PakoutServiceImpl.java
@@ -11,7 +11,8 @@
 
     @Override
     public Boolean stockOutPrint(String wrkNo, String docNum, Long userId, Long hostId) {
-        return this.baseMapper.updateWrkSts(wrkNo, docNum, 2, userId, hostId)>0;
+        boolean b = this.baseMapper.updateWrkSts(wrkNo, docNum, 7, userId, hostId) > 0;
+        return b;
     }
 
     @Override
diff --git a/src/main/java/zy/cloud/wms/manager/service/impl/PickoutServiceImpl.java b/src/main/java/zy/cloud/wms/manager/service/impl/PickoutServiceImpl.java
index 2394c74..c0d5357 100644
--- a/src/main/java/zy/cloud/wms/manager/service/impl/PickoutServiceImpl.java
+++ b/src/main/java/zy/cloud/wms/manager/service/impl/PickoutServiceImpl.java
@@ -9,4 +9,8 @@
 @Service("pickoutService")
 public class PickoutServiceImpl extends ServiceImpl<PickoutMapper, Pickout> implements PickoutService {
 
+    @Override
+    public void updateWaveStatus(String waveNo) {
+        this.baseMapper.updateWaveStatus(waveNo);
+    }
 }
diff --git a/src/main/java/zy/cloud/wms/manager/service/impl/WaveServiceImpl.java b/src/main/java/zy/cloud/wms/manager/service/impl/WaveServiceImpl.java
index 841a1cb..4360bf9 100644
--- a/src/main/java/zy/cloud/wms/manager/service/impl/WaveServiceImpl.java
+++ b/src/main/java/zy/cloud/wms/manager/service/impl/WaveServiceImpl.java
@@ -2,18 +2,19 @@
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
+import com.core.common.R;
 import com.core.exception.CoolException;
 import org.springframework.beans.factory.annotation.Autowired;
-import zy.cloud.wms.manager.entity.WaveDetl;
+import zy.cloud.wms.common.model.PickOutDto;
+import zy.cloud.wms.manager.entity.*;
 import zy.cloud.wms.manager.mapper.WaveMapper;
-import zy.cloud.wms.manager.entity.Wave;
-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.service.*;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
 
@@ -25,23 +26,72 @@
     private OrderService orderService;
     @Autowired
     private WaveService waveService;
+    @Autowired
+    private PickoutService pickoutService;
+    @Autowired
+    private PickoutDetlService pickoutDetlService;
+    @Autowired
+    private MatService matService;
 
     /**
      * 閫氳繃娉㈡鐢熸垚鎷h揣鍗�
-     * @param wave
+     * @param
      * @param userId
      * @param hostId
      */
     @Override
-    public void createOut(Wave wave, Long userId, Long hostId) {
+    public R createOut(List<PickOutDto> pickOutDtosk, Long userId, Long hostId) {
         HashSet<String> orderIds = new HashSet<>();
         /**
          * 鎺х
          */
+        if (Cools.isEmpty(pickOutDtosk)) {
+            throw new CoolException("鏁版嵁浼犺緭閿欒,璇疯仈绯荤鐞嗗憳");
+        }
+        Wave wave = waveService.selectOne(new EntityWrapper<Wave>()
+                .eq("id", pickOutDtosk.get(0).getWaveId()));
         List<WaveDetl> waveDetls = waveDetlService.selectList(new EntityWrapper<WaveDetl>()
                 .eq("wave_id", wave.getId()));
-        if (Cools.isEmpty(waveDetls)) {
-            throw new CoolException("鎵句笉鍒拌娉㈡鍗曠殑璇︽儏,璇疯仈绯荤鐞嗗憳");
+
+        /**
+         * 鐢熸垚鎷h揣鍗�
+         */
+        Pickout pickout = new Pickout();
+        pickout.setHostId(hostId);
+        pickout.setUserId(userId);
+        pickout.setWrkNo("PO-"+new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()));
+        pickout.setWrkSts(1L);
+        pickout.setCreateBy(userId.intValue());
+        pickout.setUpdateBy(userId.intValue());
+        pickout.setOrderQty(wave.getOrdersQty());
+        pickout.setWaveNo(wave.getWaveNo());
+        pickoutService.insert(pickout);
+        for (PickOutDto pickOutDto : pickOutDtosk) {
+            Mat mat = matService.selectByMatnr(hostId, pickOutDto.getMatnr());
+            if (Cools.isEmpty(mat)) {
+                pickoutService.delete(new EntityWrapper<Pickout>()
+                        .eq("id",pickout.getId()));
+                throw new CoolException("鏌ヨ涓嶅埌璇ョ墿鏂欐槑缁�");
+
+            }
+            PickoutDetl pickoutDetl = new PickoutDetl();
+            pickoutDetl.setHeadId(pickout.getId());
+            pickoutDetl.setNodeId(pickOutDto.getNodeId().longValue());
+            pickoutDetl.setNodeName(pickOutDto.getLocNo());
+            pickoutDetl.setAnfme(pickOutDto.getAnfme().doubleValue());
+            pickoutDetl.setMatnr(pickOutDto.getMatnr());
+            pickoutDetl.setMaktx(mat.getMaktx());
+            pickoutDetl.setName(mat.getName());
+            pickoutDetl.setSpecs(mat.getSpecs());
+            pickoutDetl.setModel(mat.getModel());
+            pickoutDetl.setUnit(mat.getUnit());
+            pickoutDetl.setPrice(mat.getPrice());
+            pickoutDetl.setWeight(mat.getWeight());
+            pickoutDetl.setStatus(1);
+            pickoutDetl.setCreateBy(userId.intValue());
+            pickoutDetl.setUpdateBy(userId.intValue());
+            pickoutDetl.setWrkNo(pickout.getWrkNo());
+            pickoutDetlService.insert(pickoutDetl);
         }
 
         /**
@@ -63,5 +113,8 @@
         wave.setStatus((short) 1);
         waveService.update(wave,new EntityWrapper<Wave>()
                 .eq("id",wave.getId()));
+
+
+        return R.ok();
     }
 }
diff --git a/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java b/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
index 47c3b4e..467d357 100644
--- a/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
+++ b/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
@@ -14,6 +14,7 @@
 import zy.cloud.wms.common.model.MatnrDto;
 import zy.cloud.wms.common.model.OrderStoDto;
 import zy.cloud.wms.common.model.ReceiveStoDto;
+import zy.cloud.wms.common.model.WaveStoDto;
 import zy.cloud.wms.common.service.MainService;
 import zy.cloud.wms.common.utils.VersionUtils;
 import zy.cloud.wms.manager.entity.*;
@@ -62,6 +63,10 @@
     private ReceiveDetlService receiveDetlService;
     @Autowired
     ReceiveLogService receiveLogService;
+    @Autowired
+    private WaveService waveService;
+    @Autowired
+    private WaveDetlService waveDetlService;
 
 
     @Override
@@ -295,12 +300,12 @@
 
     @Override
     public R stockOutPreview(StockOutParam param, Long userId, Long hostId) {
-        Wrapper<Receive> wrapper = new EntityWrapper<Receive>()
+        Wrapper<Order> wrapper = new EntityWrapper<Order>()
                 .eq("order_no", param.getOrderNo());
         if (hostId != null) {
             wrapper.eq("host_id", hostId);
         }
-        Receive order_no = receiveService.selectOne(wrapper);
+        Order order_no = orderService.selectOne(wrapper);
 
         if (order_no.getSettle() != 1){
             return R.error("姝ゅ崟鎹棤娉曠敓鎴愭嫞璐у崟");
@@ -309,8 +314,8 @@
 //        if (order.getSettle() != 1) {
 //            return R.error("姝ゅ崟鎹棤娉曠敓鎴愭嫞璐у崟");
 //        }
-        List<ReceiveDetl> receiveDetls = receiveDetlService.selectByOrderNo(order_no.getOrderNo(), hostId);
-        if (Cools.isEmpty(receiveDetls)) {
+        List<OrderDetl> orderDetls = orderDetlService.selectByOrderNo(order_no.getOrderNo(), hostId);
+        if (Cools.isEmpty(orderDetls)) {
             return R.error("姝ゅ崟鎹凡澶辨晥锛岃鑱旂郴绠$悊鍛�");
         }
 //        List<OrderDetl> orderDetls = orderDetlService.selectByOrderNo(order.getOrderNo(), hostId);
@@ -318,27 +323,27 @@
 //            return R.error("姝ゅ崟鎹凡澶辨晥锛岃鑱旂郴绠$悊鍛�");
 //        }
 
-        ReceiveStoDto receiveStoDto = new ReceiveStoDto().create(order_no.getOrderNo(), receiveDetls);
+        OrderStoDto orderStoDto = new OrderStoDto().create(order_no.getOrderNo(), orderDetls);
 //        OrderStoDto dto = new OrderStoDto().create(order.getOrderNo(), orderDetls);
-        return R.ok().add(mainService.receiveStockOutPreview(receiveStoDto, hostId));
+        return R.ok().add(mainService.orderOutPreview(orderStoDto, hostId));
     }
 
     @Override
     public R stockOutCreate(StockOutParam param, Long userId, Long hostId) {
-        Receive receive = receiveService.selectByOrderNo(param.getOrderNo(), hostId);
-//        Order order = orderService.selectByOrderNo(param.getOrderNo(), hostId);
-        if (receive.getSettle() != 1) {
+//        Receive receive = receiveService.selectByOrderNo(param.getOrderNo(), hostId);
+        Order order = orderService.selectByOrderNo(param.getOrderNo(), hostId);
+        if (order.getSettle() != 1) {
             return R.error("姝ゅ崟鎹棤娉曠敓鎴愭嫞璐у崟");
         }
-        List<ReceiveDetl> receiveDetls = receiveDetlService.selectByOrderNo(param.getOrderNo(), hostId);
+        List<OrderDetl> orderDetls = orderDetlService.selectByOrderNo(param.getOrderNo(), hostId);
 //        List<OrderDetl> orderDetls = orderDetlService.selectByOrderNo(param.getOrderNo(), hostId);
-        if (Cools.isEmpty(receiveDetls)) {
+        if (Cools.isEmpty(orderDetls)) {
             return R.error("姝ゅ崟鎹凡澶辨晥锛岃鑱旂郴绠$悊鍛�");
         }
-        ReceiveStoDto receiveStoDto = new ReceiveStoDto().create(receive.getOrderNo(), receiveDetls);
+        OrderStoDto orderStoDto = new OrderStoDto().create(order.getOrderNo(), orderDetls);
 //        OrderStoDto dto = new OrderStoDto().create(receive.getOrderNo(), receiveDetls);
         // 寮�濮嬫暣鐞嗗嚭搴撴暟鎹�
-        mainService.receiveStockOutProcess(receiveStoDto,hostId);
+        mainService.orderStockOutProcess(orderStoDto,hostId,userId);
         return R.ok("鐢熸垚鎷h揣鍗曟垚鍔�");
     }
 
@@ -691,9 +696,9 @@
         order1.setOrderNo(param.getOrderNo());
         order1.setOrderTime(param.getOrderTime());
         order1.setDocType(param.getDocType());
-        order1.setItemId(item.getId());
+        order1.setItemId(item == null? null : item.getId());
         order1.setItemName(param.getItem());
-        order1.setCstmr(cstmr.getId());
+        order1.setCstmr(cstmr == null? null : cstmr.getId());
         order1.setCstmrName(param.getCstmr());
         order1.setSettle(1L);
         order1.setStatus(1);
@@ -773,28 +778,28 @@
                 log.error("{}鍟嗗搧涓嶅瓨鍦ㄣ��", dto.getMatnr());
                 continue;
             }
-            ReceiveDetl receiveDetl = new ReceiveDetl();
-            receiveDetl.setHostId(hostId);
-            receiveDetl.setOrderId(order1.getId());
-            receiveDetl.setAnfme(dto.getCount());
-            receiveDetl.setCreateTime(now);
-            receiveDetl.setCreateBy(userId);
-            receiveDetl.setUpdateBy(userId);
-            receiveDetl.setUpdateTime(now);
-            receiveDetl.setStatus(1);
-            receiveDetl.setMatnr(mat.getMatnr());
-            receiveDetl.setMaktx(mat.getMaktx());
-            receiveDetl.setName(mat.getName());
-            receiveDetl.setSpecs(mat.getSpecs());
-            receiveDetl.setModel(mat.getModel());
-            receiveDetl.setBatch(mat.getBatch());
-            receiveDetl.setUnit(mat.getUnit());
-            receiveDetl.setBarcode(mat.getBarcode());
-            receiveDetl.setItemNum(mat.getItemNum());
-            receiveDetl.setCount(Double.valueOf(mat.getCount()));
-            receiveDetl.setUnitPrice(mat.getPrice());
-            receiveDetl.setWeight(mat.getWeight());
-            if (!receiveDetlService.insert(receiveDetl)) {
+            OrderDetl orderDetl = new OrderDetl();
+            orderDetl.setHostId(hostId);
+            orderDetl.setOrderId(order1.getId());
+            orderDetl.setAnfme(dto.getCount());
+            orderDetl.setCreateTime(now);
+            orderDetl.setCreateBy(userId);
+            orderDetl.setUpdateBy(userId);
+            orderDetl.setUpdateTime(now);
+            orderDetl.setStatus(1);
+            orderDetl.setMatnr(mat.getMatnr());
+            orderDetl.setMaktx(mat.getMaktx());
+            orderDetl.setName(mat.getName());
+            orderDetl.setSpecs(mat.getSpecs());
+            orderDetl.setModel(mat.getModel());
+            orderDetl.setBatch(mat.getBatch());
+            orderDetl.setUnit(mat.getUnit());
+            orderDetl.setBarcode(mat.getBarcode());
+            orderDetl.setItemNum(mat.getItemNum());
+            orderDetl.setCount(mat.getCount() == null ? 0 : mat.getCount());
+            orderDetl.setUnitPrice(mat.getPrice());
+            orderDetl.setWeight(mat.getWeight());
+            if (!orderDetlService.insert(orderDetl)) {
                 throw new CoolException("淇濆瓨璁㈠崟鏄庣粏澶辫触");
             }
         }
@@ -1000,4 +1005,130 @@
         return R.ok();
     }
 
+    @Override
+//    @Transactional
+    public R initOutOrder(InitOrderParam param, Long userId, Long hostId) {
+        Order order_no = orderService.selectOne(new EntityWrapper<Order>()
+                .eq("order_no", param.getOrderNo()));
+//        Order order = orderService.selectByOrderNo(param.getOrderNo(), hostId);
+        if (order_no != null) {
+            return R.error("鎶辨瓑鍗曞彿宸插瓨鍦紝璇蜂慨鏀瑰崟鍙�");
+        }
+        Date now = new Date();
+        Item item = itemService.selectByName(param.getItem());
+        Cstmr cstmr = cstmrService.selectByName(param.getCstmr());
+
+        // 鏂板璁㈠崟琛ㄥご
+        order_no = new Order();
+        order_no.setHostId(hostId);
+        order_no.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
+        order_no.setOrderNo(param.getOrderNo());
+        order_no.setOrderTime(param.getOrderTime());
+        order_no.setDocType(param.getDocType());
+        order_no.setItemId(item==null?null:item.getId());
+        order_no.setItemName(param.getItem());
+        order_no.setCstmr(cstmr==null?null:cstmr.getId());
+        order_no.setCstmrName(param.getCstmr());
+        order_no.setSettle(1L);
+        order_no.setStatus(1);
+        order_no.setCreateTime(now);
+        order_no.setCreateBy(userId);
+        order_no.setUpdateTime(now);
+        order_no.setUpdateBy(userId);
+
+//        if (!orderService.insert(order)) {
+//            throw new CoolException("淇濆瓨璁㈠崟琛ㄥご澶辫触锛�");
+//        }
+        if (!orderService.insert(order_no)) {
+            throw new CoolException("淇濆瓨璁㈠崟琛ㄥご澶辫触锛�");
+        }
+
+//        // 閬嶅巻鍟嗗搧鏁伴噺骞朵繚瀛�
+//        for (MatnrDto dto : param.getList()){
+//            Mat mat = matService.selectByMatnr(hostId, dto.getMatnr());
+//            if (mat == null) {
+//                log.error("{}鍟嗗搧涓嶅瓨鍦ㄣ��", dto.getMatnr());
+//                continue;
+//            }
+//            OrderDetl orderDetl = new OrderDetl();
+//            orderDetl.setHostId(hostId);
+//            orderDetl.setOrderId(order.getId());  // 璁㈠崟鍐呯爜
+//            orderDetl.setAnfme(dto.getCount());         // 鏁伴噺
+//            orderDetl.setCreateBy(userId);
+//            orderDetl.setCreateTime(now);
+//            orderDetl.setUpdateBy(userId);
+//            orderDetl.setUpdateTime(now);
+//            orderDetl.setStatus(1);
+//            VersionUtils.setOrderDetl(orderDetl, mat);
+//            if (!orderDetlService.insert(orderDetl)) {
+//                throw new CoolException("淇濆瓨璁㈠崟鏄庣粏澶辫触");
+//            }
+//        }
+        // 閬嶅巻鍟嗗搧鏁伴噺骞朵繚瀛�
+        for (MatnrDto dto : param.getList()){
+            Mat mat = matService.selectByMatnr(hostId, dto.getMatnr());
+            if (mat == null) {
+                log.error("{}鍟嗗搧涓嶅瓨鍦ㄣ��", dto.getMatnr());
+                continue;
+            }
+            OrderDetl orderDtel = new OrderDetl();
+            orderDtel.setHostId(hostId);
+            orderDtel.setOrderId(order_no.getId());
+            orderDtel.setAnfme(dto.getCount());
+            orderDtel.setCreateTime(now);
+            orderDtel.setCreateBy(userId);
+            orderDtel.setUpdateBy(userId);
+            orderDtel.setUpdateTime(now);
+            orderDtel.setStatus(1);
+            orderDtel.setMatnr(mat.getMatnr());
+            orderDtel.setMaktx(mat.getMaktx());
+            orderDtel.setName(mat.getName());
+            orderDtel.setSpecs(mat.getSpecs());
+            orderDtel.setModel(mat.getModel());
+            orderDtel.setBatch(mat.getBatch());
+            orderDtel.setUnit(mat.getUnit());
+            orderDtel.setBarcode(mat.getBarcode());
+            orderDtel.setItemNum(mat.getItemNum());
+            orderDtel.setCount(mat.getCount() == null ? 0 : mat.getCount());
+            orderDtel.setUnitPrice(mat.getPrice());
+            orderDtel.setWeight(mat.getWeight());
+            if (!orderDetlService.insert(orderDtel)) {
+                throw new CoolException("淇濆瓨璁㈠崟鏄庣粏澶辫触");
+            }
+        }
+        return R.ok("鍒涘缓璁㈠崟鎴愬姛");
+    }
+
+    @Override
+    public R wavePreview(StockOutParam stockOutParam, Long userId, Long hostId) {
+        Wrapper<Wave> wrapper = new EntityWrapper<Wave>()
+                .eq("id", stockOutParam.getOrderNo());
+
+        if (hostId != null) {
+            wrapper.eq("host_id", hostId);
+        }
+        Wave wave = waveService.selectOne(wrapper);
+
+        if (wave.getStatus() != 0){
+            return R.error("姝ゅ崟鎹棤娉曠敓鎴愭嫞璐у崟");
+        }
+//        Order order = orderService.selectByOrderNo(param.getOrderNo(), hostId);
+//        if (order.getSettle() != 1) {
+//            return R.error("姝ゅ崟鎹棤娉曠敓鎴愭嫞璐у崟");
+//        }
+        List<WaveDetl> waveDetls = waveDetlService.selectList(new EntityWrapper<WaveDetl>()
+                .eq("wave_id", stockOutParam.getOrderNo()));
+        if (Cools.isEmpty(waveDetls)) {
+            return R.error("姝ゅ崟鎹凡澶辨晥锛岃鑱旂郴绠$悊鍛�");
+        }
+//        List<OrderDetl> orderDetls = orderDetlService.selectByOrderNo(order.getOrderNo(), hostId);
+//        if (Cools.isEmpty(orderDetls)) {
+//            return R.error("姝ゅ崟鎹凡澶辨晥锛岃鑱旂郴绠$悊鍛�");
+//        }
+
+        WaveStoDto waveStoDto = new WaveStoDto().create(stockOutParam.getOrderNo(),waveDetls);
+//        OrderStoDto dto = new OrderStoDto().create(order.getOrderNo(), orderDetls);
+        return R.ok().add(mainService.waveOutPreview(waveStoDto, hostId));
+    }
+
 }
diff --git a/src/main/resources/mapper/OrderMapper.xml b/src/main/resources/mapper/OrderMapper.xml
index e714517..66538f8 100644
--- a/src/main/resources/mapper/OrderMapper.xml
+++ b/src/main/resources/mapper/OrderMapper.xml
@@ -44,7 +44,7 @@
     </resultMap>
 
     <update id="updateSettle">
-        update man_receive set settle = #{settle} where 1=1 and order_no = #{orderNo} and host_id = #{hostId}
+        update man_order set settle = #{settle} where 1=1 and order_no = #{orderNo} and host_id = #{hostId}
     </update>
     <update id="updateStatus">
         UPDATE man_order set settle = 2, wave_no = null WHERE order_no = #{orderNo}
@@ -52,6 +52,22 @@
     <update id="changeSettleTo12">
         UPDATE man_order set settle = 12 Where 1 = 1 and order_no = #{orderNo}
     </update>
+    <update id="updateWrkSts">
+        update man_order
+        set wrk_sts = #{wrkSts}
+        , update_by = #{userId}
+        , update_time = getdate()
+        where 1=1
+        <if test="hostId != null and hostId != ''">
+            and host_id = #{hostId}
+        </if>
+        <if test="wrkNo != null and wrkNo != ''">
+            and wrk_no = #{wrkNo}
+        </if>
+        <if test="docNum != null and docNum != ''">
+            and order_no = #{docNum}
+        </if>
+    </update>
 
     <select id="getPage" resultMap="BaseResultMap">
         select * from
diff --git a/src/main/resources/mapper/PickoutDetlMapper.xml b/src/main/resources/mapper/PickoutDetlMapper.xml
index e5a3f3a..aa837e3 100644
--- a/src/main/resources/mapper/PickoutDetlMapper.xml
+++ b/src/main/resources/mapper/PickoutDetlMapper.xml
@@ -30,6 +30,7 @@
         <result column="update_time" property="updateTime" />
         <result column="update_by" property="updateBy" />
         <result column="memo" property="memo" />
+        <result column="wrk_no" property="wrkNo" />
 
     </resultMap>
 
diff --git a/src/main/resources/mapper/PickoutMapper.xml b/src/main/resources/mapper/PickoutMapper.xml
index b0765dd..4961e3f 100644
--- a/src/main/resources/mapper/PickoutMapper.xml
+++ b/src/main/resources/mapper/PickoutMapper.xml
@@ -15,7 +15,13 @@
         <result column="update_time" property="updateTime" />
         <result column="update_by" property="updateBy" />
         <result column="memo" property="memo" />
+        <result column="order_qty" property="orderQty" />
+        <result column="order_nos" property="orderNos" />
+        <result column="wave_no" property="waveNo" />
 
     </resultMap>
+    <update id="updateWaveStatus">
+        update man_wave set status = 0 where wave_no = #{waveNo}
+    </update>
 
 </mapper>
diff --git a/src/main/webapp/static/js/ioWorks/matQuery.js b/src/main/webapp/static/js/ioWorks/matQuery.js
index adeb494..d82f429 100644
--- a/src/main/webapp/static/js/ioWorks/matQuery.js
+++ b/src/main/webapp/static/js/ioWorks/matQuery.js
@@ -74,7 +74,7 @@
                     // 鍗曟嵁绫诲瀷
                     var docTypeData;
                     $.ajax({
-                        url: baseUrl+"/work/docType/all/get",
+                        url: baseUrl+"/work/docType/out/get",
                         headers: {'token': localStorage.getItem('token')},
                         data:{docClass: 2},
                         method: 'POST',
diff --git a/src/main/webapp/static/js/order/order.js b/src/main/webapp/static/js/order/order.js
index e473fef..76d7a3b 100644
--- a/src/main/webapp/static/js/order/order.js
+++ b/src/main/webapp/static/js/order/order.js
@@ -53,6 +53,7 @@
         }
     });
 
+
     /* 琛ㄦ牸鎼滅储 */
     form.on('submit(docTypeTableSearch)', function (data) {
         insTb.reload({where: {doc_name: data.field.docName,doc_class:2}});
diff --git a/src/main/webapp/static/js/pickout/pickout.js b/src/main/webapp/static/js/pickout/pickout.js
index 6503c88..316ce54 100644
--- a/src/main/webapp/static/js/pickout/pickout.js
+++ b/src/main/webapp/static/js/pickout/pickout.js
@@ -9,134 +9,56 @@
     var form = layui.form;
     var admin = layui.admin;
 
-    // 鏁版嵁娓叉煋
-    tableIns = table.render({
-        elem: '#pickout',
-        headers: {token: localStorage.getItem('token')},
-        url: baseUrl+'/pickout/list/auth',
-        page: true,
-        limit: 16,
-        limits: [16, 30, 50, 100, 200, 500],
-        toolbar: '#toolbar',
-        cellMinWidth: 50,
-        cols: [[
-            {type: 'checkbox'}
-            ,{field: 'id', align: 'center',title: '鍞竴ID'}
-            ,{field: 'hostId', align: 'center',title: '鍟嗘埛ID'}
-            ,{field: 'userId', align: 'center',title: '鐢ㄦ埛ID'}
-            ,{field: 'wrkNo', align: 'center',title: '宸ヤ綔鍙�'}
-            ,{field: 'wrkSts', align: 'center',title: '宸ヤ綔鐘舵��'}
-            ,{field: 'zpallet', align: 'center',title: '鏉″舰鐮�'}
-            ,{field: 'createTime$', align: 'center',title: ''}
-            ,{field: 'createBy', align: 'center',title: ''}
-            ,{field: 'updateTime$', align: 'center',title: ''}
-            ,{field: 'updateBy', align: 'center',title: ''}
-            ,{field: 'memo', align: 'center',title: ''}
 
-            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:150}
-        ]],
+    /****************************************** 宸﹁竟琛� *************************************************/
+    var leftTB = table.render({
+        elem: '#leftTable',
+        url: baseUrl + '/pickout/list/auth',
+        height: 'full-100',
+        headers: {token: localStorage.getItem('token')},
         request: {
             pageName: 'curr',
             pageSize: 'limit'
         },
-        parseData: function (res) {
-            return {
-                'code': res.code,
-                'msg': res.msg,
-                'count': res.data.total,
-                'data': res.data.records
-            }
+        parseData: function (res){
+          return{
+              'code': res.code,
+              'msg': res.msg,
+              'count': res.data.total,
+              'data': res.data.records
+          }
         },
         response: {
             statusCode: 200
         },
-        done: function(res, curr, count) {
-            if (res.code === 403) {
-                top.location.href = baseUrl+"/";
-            }
-            pageCurr=curr;
-            limit();
+        defaultToolbar: [],
+        cols:[[
+            // {type: 'checkbox'}
+            {field: 'wrkNo', align: 'center',title: '浠诲姟鍙�',width: 180}
+            ,{field: 'id', align: 'center',title: '鍞竴ID',hide: true}
+            ,{field: 'hostId', align: 'center',title: '鍟嗘埛ID', hide: true}
+            ,{field: 'userId', align: 'center',title: '鐢ㄦ埛ID', hide: true}
+
+            ,{field: 'wrkSts$', align: 'center',title: '宸ヤ綔鐘舵��' ,templet: '#wrkStsTpl' , width: 100}
+            ,{field: 'zpallet', align: 'center',title: '鏉″舰鐮�' , hide:true}
+            ,{field: 'createTime$', align: 'center',title: '', hide:true}
+            ,{field: 'createBy', align: 'center',title: '', hide:true}
+            ,{field: 'updateTime$', align: 'center',title: '', hide:true}
+            ,{field: 'updateBy', align: 'center',title: '', hide:true}
+            ,{field: 'memo', align: 'center',title: '', hide:true}
+
+            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate'}
+        ]],
+        done: function (res,curr,count){
+            $('#dictTable+.layui-table-view .layui-table-body tbody>tr:first').trigger('click');
         }
     });
-
-    // 鐩戝惉鎺掑簭浜嬩欢
-    table.on('sort(pickout)', function (obj) {
-        var searchData = {};
-        $.each($('#search-box [name]').serializeArray(), function() {
-            searchData[this.name] = this.value;
-        });
-        searchData['orderByField'] = obj.field;
-        searchData['orderByType'] = obj.type;
-        tableIns.reload({
-            where: searchData,
-            page: {curr: 1}
-        });
-    });
-
-    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
-    table.on('toolbar(pickout)', function (obj) {
-        var checkStatus = table.checkStatus(obj.config.id).data;
-        switch(obj.event) {
-            case 'addData':
-                showEditModel();
-                break;
-            case 'deleteData':
-               if (checkStatus.length === 0) {
-                   layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
-                   return;
-               }
-               var ids = checkStatus.map(function (d) {
-                   return d.id;
-               });
-               del(ids);
-               break;
-            case 'exportData':
-                layer.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
-                    var titles=[];
-                    var fields=[];
-                    obj.config.cols[0].map(function (col) {
-                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
-                            titles.push(col.title);
-                            fields.push(col.field);
-                        }
-                    });
-                    var exportData = {};
-                    $.each($('#search-box [name]').serializeArray(), function() {
-                        exportData[this.name] = this.value;
-                    });
-                    var param = {
-                        'pickout': exportData,
-                        'fields': fields
-                    };
-                    $.ajax({
-                        url: baseUrl+"/pickout/export/auth",
-                        headers: {'token': localStorage.getItem('token')},
-                        data: JSON.stringify(param),
-                        dataType:'json',
-                        contentType:'application/json;charset=UTF-8',
-                        method: 'POST',
-                        success: function (res) {
-                            layer.closeAll();
-                            if (res.code === 200) {
-                                table.exportFile(titles,res.data,'xls');
-                            } else if (res.code === 403) {
-                                top.location.href = baseUrl+"/";
-                            } else {
-                                layer.msg(res.msg, {icon: 2})
-                            }
-                        }
-                    });
-                });
-                break;
-        }
-    });
-
     // 鐩戝惉琛屽伐鍏蜂簨浠�
-    table.on('tool(pickout)', function(obj){
+    table.on('tool(leftTable)', function(obj){
         var data = obj.data;
         switch (obj.event) {
-            case 'edit':
-                showEditModel(data);
+            case 'complete':
+                complete(data);
                 break;
             case "del":
                 var ids = [data.id];
@@ -144,48 +66,17 @@
                 break;
         }
     });
-
-    /* 寮圭獥 - 鏂板銆佷慨鏀� */
-    function showEditModel(mData) {
-        admin.open({
-            type: 1,
-            area: '600px',
-            title: (mData ? '淇敼' : '娣诲姞') + '璁㈠崟鐘舵��',
-            content: $('#editDialog').html(),
-            success: function (layero, dIndex) {
-                layDateRender();
-                form.val('detail', mData);
-                form.on('submit(editSubmit)', function (data) {
-                    var loadIndex = layer.load(2);
-                    $.ajax({
-                        url: baseUrl+"/pickout/"+(mData?'update':'add')+"/auth",
-                        headers: {'token': localStorage.getItem('token')},
-                        data: data.field,
-                        method: 'POST',
-                        success: function (res) {
-                            layer.close(loadIndex);
-                            if (res.code === 200){
-                                layer.close(dIndex);
-                                layer.msg(res.msg, {icon: 1});
-                                tableReload();
-                            } else if (res.code === 403){
-                                top.location.href = baseUrl+"/";
-                            }else {
-                                layer.msg(res.msg, {icon: 2});
-                            }
-                        }
-                    })
-                    return false;
-                });
-                $(layero).children('.layui-layer-content').css('overflow', 'visible');
-                layui.form.render('select');
-            }
-        });
-    }
+    /* 鐩戝惉琛屽崟鍑讳簨浠� */
+    var selObj;
+    table.on('row(leftTable)', function (obj) {
+        selObj = obj;
+        obj.tr.addClass('layui-table-click').siblings().removeClass('layui-table-click');
+        tableIns.reload({where: {head_id: obj.data.id}, page: {curr: 1}});
+    });
 
     /* 鍒犻櫎 */
     function del(ids) {
-        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
+        layer.confirm('纭畾瑕佹挙閿�閫変腑鏁版嵁鍚楋紵', {
             skin: 'layui-layer-admin',
             shade: .1
         }, function (i) {
@@ -210,20 +101,176 @@
             })
         });
     }
+    form.on('submit(leftResearch)', function (data) {
 
-    // 鎼滅储
-    form.on('submit(search)', function (data) {
-        pageCurr = 1;
-        tableReload(false);
+        leftTB.reload({where: {wrk_no: data.field.docName}});
+        return false;
     });
 
-    // 閲嶇疆
-    form.on('submit(reset)', function (data) {
-        pageCurr = 1;
-        clearFormVal($('#search-box'));
-        tableReload(false);
-    });
 
+
+    /****************************************** 鍙宠竟琛� *************************************************/
+    // 鏁版嵁娓叉煋
+    tableIns = table.render({
+        elem: '#pickout',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/pickoutDetl/list/auth',
+        page: true,
+        limit: 16,
+        limits: [16, 30, 50, 100, 200, 500],
+        toolbar: '#toolbar',
+        cellMinWidth: 50,
+        cols: [[
+            // {type: 'checkbox'}
+            {field: 'id', align: 'center',title: '鍞竴ID', hide:true}
+            ,{field: 'headId', align: 'center',title: '琛ㄥごID', hide:true}
+            ,{field: 'nodeId', align: 'center',title: '搴撲綅ID', hide:true}
+            ,{field: 'nodeName', align: 'center',title: '搴撲綅鍚嶇О'}
+            ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
+            ,{field: 'matnr', align: 'center',title: '鍟嗗搧缂栫爜'}
+            ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О'}
+            ,{field: 'name', align: 'center',title: '鍚嶇О', hide:true}
+            ,{field: 'specs', align: 'center',title: '瑙勬牸', hide:true}
+            ,{field: 'model', align: 'center',title: '鍨嬪彿', hide:true}
+            ,{field: 'batch', align: 'center',title: '鎵瑰彿', hide:true}
+            ,{field: 'unit', align: 'center',title: '鍗曚綅', hide:true}
+            ,{field: 'barcode', align: 'center',title: '鎵樼洏鐮�', hide:true}
+            ,{field: 'docType', align: 'center',title: '鍗曟嵁绫诲瀷', hide:true}
+            ,{field: 'docId', align: 'center',title: '鍗曟嵁缂栧彿', hide:true}
+            ,{field: 'price', align: 'center',title: '浠锋牸', hide:true}
+            ,{field: 'weight', align: 'center',title: '閲嶉噺', hide:true}
+            ,{field: 'status', align: 'center',title: '鐘舵��' , hide:true}
+            ,{field: 'pickStaff', align: 'center',title: '鎷h揣鍛業D'}
+            ,{field: 'pickStart$', align: 'center',title: '鎷h揣寮�濮嬫椂闂�'}
+            ,{field: 'pickEnd$', align: 'center',title: '鎷h揣缁撴潫鏃堕棿'}
+            ,{field: 'createTime$', align: 'center',title: '鍒涘缓鏃堕棿', hide:true}
+            ,{field: 'createBy', align: 'center',title: '鍒涘缓浜哄憳ID', hide:true}
+            ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿', hide:true}
+            ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳ID', hide:true}
+            ,{field: 'memo', align: 'center',title: '澶囨敞', hide:true}
+
+            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:150, hide:true}
+        ]],
+        request: {
+            pageName: 'curr',
+            pageSize: 'limit'
+        },
+        parseData: function (res) {
+            return {
+                'code': res.code,
+                'msg': res.msg,
+                'count': res.data.total,
+                'data': res.data.records
+            }
+        },
+        response: {
+            statusCode: 200
+        },
+        done: function(res, curr, count) {
+            if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            }
+            pageCurr=curr;
+            limit();
+        }
+    });
+    /* 琛ㄦ牸2鎼滅储 */
+    form.on('submit(rightSearch)', function (data) {
+
+        tableIns.reload({where: data.field , page: {curr: 1}});
+        return false;
+    });
+    // // 鐩戝惉鎺掑簭浜嬩欢
+    // table.on('sort(pickout)', function (obj) {
+    //     var searchData = {};
+    //     $.each($('#search-box [name]').serializeArray(), function() {
+    //         searchData[this.name] = this.value;
+    //     });
+    //     searchData['orderByField'] = obj.field;
+    //     searchData['orderByType'] = obj.type;
+    //     tableIns.reload({
+    //         where: searchData,
+    //         page: {curr: 1}
+    //     });
+    // });
+    //
+    // // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+    // table.on('toolbar(pickout)', function (obj) {
+    //     var checkStatus = table.checkStatus(obj.config.id).data;
+    //     switch(obj.event) {
+    //         case 'addData':
+    //             showEditModel();
+    //             break;
+    //         case 'deleteData':
+    //            if (checkStatus.length === 0) {
+    //                layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
+    //                return;
+    //            }
+    //            var ids = checkStatus.map(function (d) {
+    //                return d.id;
+    //            });
+    //            del(ids);
+    //            break;
+    //         case 'exportData':
+    //             layer.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
+    //                 var titles=[];
+    //                 var fields=[];
+    //                 obj.config.cols[0].map(function (col) {
+    //                     if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
+    //                         titles.push(col.title);
+    //                         fields.push(col.field);
+    //                     }
+    //                 });
+    //                 var exportData = {};
+    //                 $.each($('#search-box [name]').serializeArray(), function() {
+    //                     exportData[this.name] = this.value;
+    //                 });
+    //                 var param = {
+    //                     'pickout': exportData,
+    //                     'fields': fields
+    //                 };
+    //                 $.ajax({
+    //                     url: baseUrl+"/pickout/export/auth",
+    //                     headers: {'token': localStorage.getItem('token')},
+    //                     data: JSON.stringify(param),
+    //                     dataType:'json',
+    //                     contentType:'application/json;charset=UTF-8',
+    //                     method: 'POST',
+    //                     success: function (res) {
+    //                         layer.closeAll();
+    //                         if (res.code === 200) {
+    //                             table.exportFile(titles,res.data,'xls');
+    //                         } else if (res.code === 403) {
+    //                             top.location.href = baseUrl+"/";
+    //                         } else {
+    //                             layer.msg(res.msg, {icon: 2})
+    //                         }
+    //                     }
+    //                 });
+    //             });
+    //             break;
+    //     }
+    // });
+    // /* 琛ㄦ牸鎼滅储 */
+    // form.on('submit(leftResearch)', function (data) {
+    //     insTb.reload({where: {doc_name: data.field.docName,doc_class:2}});
+    //     return false;
+    // });
+    //
+    //
+    // // 鎼滅储
+    // form.on('submit(search)', function (data) {
+    //     pageCurr = 1;
+    //     tableReload(false);
+    // });
+    //
+    // // 閲嶇疆
+    // form.on('submit(reset)', function (data) {
+    //     pageCurr = 1;
+    //     clearFormVal($('#search-box'));
+    //     tableReload(false);
+    // });
+    //
     // 鏃堕棿閫夋嫨鍣�
     function layDateRender() {
             layDate.render({
diff --git a/src/main/webapp/static/js/wave/wave.js b/src/main/webapp/static/js/wave/wave.js
index 776afdc..1209730 100644
--- a/src/main/webapp/static/js/wave/wave.js
+++ b/src/main/webapp/static/js/wave/wave.js
@@ -1,13 +1,14 @@
 var pageCurr;
 layui.config({
     base: baseUrl + "/static/layui/lay/modules/"
-}).use(['table','laydate', 'form', 'admin'], function(){
+}).use(['table','laydate', 'form', 'admin','tableMerge'], function(){
     var table = layui.table;
     var $ = layui.jquery;
     var layer = layui.layer;
     var layDate = layui.laydate;
     var form = layui.form;
     var admin = layui.admin;
+    var tableMerge = layui.tableMerge;
 
     // 鏁版嵁娓叉煋
     tableIns = table.render({
@@ -128,8 +129,79 @@
         }
     });
 
-    function createWaveOut(mData) {
-        layer.confirm('纭畾鐢熸垚璇ユ尝娆$殑鎷h揣鍗曪紵', {
+    function createWaveOut(data) {
+        console.log(data)
+        var loadIndex = layer.load(2);
+        $.ajax({
+            url: baseUrl + "/wave/preview",
+            headers: {'token': localStorage.getItem('token')},
+            contentType: 'application/json;charset=UTF-8',
+            data: JSON.stringify({
+                orderNo: data.id
+            }),
+            method: 'POST',
+            success: function (res) {
+                layer.close(loadIndex);
+                if (res.code === 200){
+                    layer.open({
+                        type: 1
+                        ,title: false
+                        ,closeBtn: false
+                        ,offset: '100px'
+                        ,area: '1000px'
+                        ,shade: 0.5
+                        ,shadeClose: true
+                        ,btn: ['绔嬪嵆鐢熸垚', '绋嶅悗澶勭悊']
+                        ,btnAlign: 'c'
+                        ,moveType: 1 //鎷栨嫿妯″紡锛�0鎴栬��1
+                        ,content: $('#stoukOutPreview')
+                        ,success: function(layero, index){
+                            table.render({
+                                elem: '#stoPreTab',
+                                data: res.data,
+                                page: true,
+                                cellMinWidth: 100,
+                                height: 432,
+                                cols: [[
+                                    {field: 'title', title: '鍟嗗搧', merge: true, align: 'center'},
+                                    {field: 'anfme', title: '鎬绘暟閲�', merge: ['title'], align: 'center', style: 'font-weight: bold', width: 90},
+                                    {field: 'type', title: '浠撳簱', merge: true, align: 'center', templet: '#typeTpl', width: 90},
+                                    {field: 'locNo', title: '璐т綅', align: 'center'},
+                                    {field: 'prior$', title: '鎺ㄨ崘璐т綅', align: 'center', width: 100},
+                                    {field: 'reduce', title: '鏁伴噺', align: 'center', width: 90, style: 'font-weight: bold'},
+                                    // {field: 'remQty', title: '浣欓噺', align: 'center', width: 80},
+                                    {field: 'total', title: '鎬婚噺', align: 'center', width: 90},
+                                ]],
+                                done: function () {
+                                    tableMerge.render(this);
+                                    $('.layui-table-body.layui-table-main').css("overflow", "auto")
+                                }
+                            });
+
+                        }
+                        ,yes: function(index, layero){
+                            //鎸夐挳銆愰┈涓婃嫞璐с�戠殑鍥炶皟
+                            stockOut(res.data,data);
+                        }
+                        ,btn2: function(index, layero){
+                            //鎸夐挳銆愮◢鍚庡鐞嗐�戠殑鍥炶皟
+                            //return false 寮�鍚浠g爜鍙姝㈢偣鍑昏鎸夐挳鍏抽棴
+                        }
+                    });
+                } else if (res.code === 403){
+                    top.location.href = baseUrl+"/";
+                } else {
+                    layer.msg(res.msg, {icon: 2})
+                }
+            }
+        })
+
+
+    }
+    function stockOut(mData, data){
+
+        console.log(mData);
+        layer.confirm('纭畾鐢熸垚璇ユ尝娆$殑鎷h揣鍗曪紵(涓嶅彲閫�)', {
             skin: 'layui-layer-admin',
             shade: .1
         }, function (i) {
@@ -154,7 +226,6 @@
                 }
             })
         });
-
     }
     // 鐩戝惉琛屽伐鍏蜂簨浠�
     table.on('tool(wave)', function(obj){
diff --git a/src/main/webapp/views/pickout/pickout.html b/src/main/webapp/views/pickout/pickout.html
index 263db8c..5ffc23f 100644
--- a/src/main/webapp/views/pickout/pickout.html
+++ b/src/main/webapp/views/pickout/pickout.html
@@ -10,38 +10,158 @@
     <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
     <link rel="stylesheet" href="../../static/css/cool.css" media="all">
     <link rel="stylesheet" href="../../static/css/common.css" media="all">
+    <style>
+        body {
+            color: #595959;
+            background-color: #f5f7f9;
+        }
+
+        /* 宸﹁〃 */
+        #leftTable + .layui-table-view .layui-table-tool-temp {
+            padding-right: 0;
+        }
+
+        #leftTable + .layui-table-view .layui-table-body tbody > tr td {
+            cursor: pointer;
+        }
+
+        #leftTable + .layui-table-view .layui-table-body tbody > tr.layui-table-click {
+            background-color: #fff3e0;
+        }
+
+        #leftTable + .layui-table-view .layui-table-body tbody > tr.layui-table-click td:last-child > div:before {
+            position: absolute;
+            right: 6px;
+            content: "\e602";
+            font-size: 12px;
+            font-style: normal;
+            font-family: layui-icon,serif !important;
+            -webkit-font-smoothing: antialiased;
+            -moz-osx-font-smoothing: grayscale;
+        }
+
+        #left-table .layui-table-grid-down {
+            display: none;
+        }
+
+
+        .layui-form.layui-border-box.layui-table-view {
+            border-width: 1px;
+        }
+        #left-table .layui-table thead th {
+            /* font-weight: bold; */
+            text-align: left;
+        }
+    </style>
 </head>
 <body>
-
-<!-- 鎼滅储鏍� -->
-<div id="search-box" class="layui-form layui-card-header">
-    <div class="layui-inline">
-        <div class="layui-input-inline">
-            <input class="layui-input" type="text" name="id" placeholder="缂栧彿" autocomplete="off">
+<!-- 姝f枃寮�濮� -->
+<div class="layui-fluid" style="padding-bottom: 0;">
+    <div class="layui-row layui-col-space15">
+        <div class="layui-col-md3" id="left-table">
+            <div class="layui-card">
+                <div class="layui-card-body" style="padding: 10px;">
+                    <!-- 琛ㄦ牸宸ュ叿鏍�1 -->
+                    <form class="layui-form toolbar">
+                        <div class="layui-form-item">
+                            <div class="layui-inline" style="max-width: 140px;">
+                                <input name="docName" class="layui-input" placeholder="璇疯緭鍏ヤ换鍔″彿"/>
+                            </div>
+                            <div class="layui-inline">
+                                <button class="layui-btn icon-btn" lay-filter="leftResearch" lay-submit>
+                                    <i class="layui-icon">&#xe615;</i>鎼滅储
+                                </button>
+                            </div>
+                        </div>
+                    </form>
+                    <!-- 鏁版嵁琛ㄦ牸1 -->
+                    <table id="leftTable" lay-filter="leftTable"></table>
+                </div>
+            </div>
+        </div>
+        <div class="layui-col-md9">
+            <div class="layui-card">
+                <div class="layui-card-body" style="padding: 10px;">
+                    <!-- 琛ㄦ牸宸ュ叿鏍�2 -->
+                    <form class="layui-form toolbar">
+                        <div class="layui-form-item">
+                            <div class="layui-inline">
+                                <label class="layui-form-label">鍟嗗搧缂栫爜:</label>
+                                <div class="layui-input-inline">
+                                    <input name="matnr" class="layui-input"type="text"  placeholder="缂栫爜" autocomplete="off"/>
+                                </div>
+                            </div>
+                            <div class="layui-inline">&emsp;
+                                <button class="layui-btn icon-btn" lay-filter="rightSearch" lay-submit>
+                                    <i class="layui-icon">&#xe615;</i>鎼滅储
+                                </button>
+                                <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
+                                    <i class="layui-icon">&#xe666;</i>閲嶇疆
+                                </button>
+                            </div>
+                        </div>
+                    </form>
+                    <!-- 鏁版嵁琛ㄦ牸2 -->
+                    <table id="pickout" lay-filter="pickout"></table>
+                </div>
+            </div>
         </div>
     </div>
-    <!-- 寰呮坊鍔� -->
-    <div id="data-search-btn" class="layui-btn-container layui-form-item">
-        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>
-        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button>
-    </div>
 </div>
 
-<!-- 琛ㄦ牸 -->
-<div class="layui-form">
-    <table class="layui-hide" id="pickout" lay-filter="pickout"></table>
-</div>
+<!--&lt;!&ndash; 鎼滅储鏍� &ndash;&gt;-->
+<!--<div id="search-box" class="layui-form layui-card-header">-->
+<!--    <div class="layui-inline">-->
+<!--        <div class="layui-input-inline">-->
+<!--            <input class="layui-input" type="text" name="id" placeholder="缂栧彿" autocomplete="off">-->
+<!--        </div>-->
+<!--    </div>-->
+<!--    &lt;!&ndash; 寰呮坊鍔� &ndash;&gt;-->
+<!--    <div id="data-search-btn" class="layui-btn-container layui-form-item">-->
+<!--        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>-->
+<!--        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button>-->
+<!--    </div>-->
+<!--</div>-->
+
+<!--&lt;!&ndash; 琛ㄦ牸 &ndash;&gt;-->
+<!--<div class="layui-form">-->
+<!--    <table class="layui-hide" id="pickout" lay-filter="pickout"></table>-->
+<!--</div>-->
 <script type="text/html" id="toolbar">
     <div class="layui-btn-container">
-        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
-        <button class="layui-btn layui-btn-sm" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
+<!--        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>-->
+<!--        <button class="layui-btn layui-btn-sm" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>-->
         <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData">瀵煎嚭</button>
     </div>
 </script>
 
 <script type="text/html" id="operate">
-    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
-    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
+    {{#if (d.wrkSts == 3){ }}
+    <a class="layui-btn layui-btn-xs btn-complete" lay-event="complete">瀹屾垚</a>
+    {{# } }}
+    {{#if (d.wrkSts == 1||d.wrkSts == 2){ }}
+    <a class="layui-btn layui-btn-xs layui-btn-normal" lay-event="printOrder">鎵撳嵃鎷h揣鍗�</a>
+    {{# } }}
+
+
+
+<!--    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">璇︽儏</a>-->
+    {{#if (d.wrkSts == 1||d.wrkSts == 2){ }}
+    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鎾ら攢</a>
+    {{# } }}
+<!--    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>-->
+
+</script>
+<script type="text/html" id="wrkStsTpl">
+    <span name="wrkSts"
+          {{# if( d.wrkSts === 1){ }}
+          class="layui-badge layui-badge-blue"
+          {{# } else if(d.wrkSts === 2){ }}
+          class="layui-badge layui-badge-red"
+          {{# } else if(d.wrkSts === 3){ }}
+          class="layui-badge layui-badge-green"
+          {{# } }}
+    >{{d.wrkSts$}}</span>
 </script>
 
 <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
diff --git a/src/main/webapp/views/wave/wave.html b/src/main/webapp/views/wave/wave.html
index c59091c..e05449a 100644
--- a/src/main/webapp/views/wave/wave.html
+++ b/src/main/webapp/views/wave/wave.html
@@ -31,6 +31,13 @@
 <div class="layui-form">
     <table class="layui-hide" id="wave" lay-filter="wave"></table>
 </div>
+<div id="stoukOutPreview" style="display: none">
+    <div  style="padding: 25px; line-height: 22px; background-color: #393D49; color: #fff; font-weight: 300;">
+        <span style="font-size: large; font-weight: bold">鎷h揣鍗曢瑙�</span>
+    </div>
+    <table id="stoPreTab" lay-filter="stoPreTab"></table>
+</div>
+
 <script type="text/html" id="toolbar">
     <div class="layui-btn-container">
 <!--        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData" >鏂板</button>-->

--
Gitblit v1.9.1