From 192834a2160e2aa0f8a4bad9b13bdd535df57e9c Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期二, 26 九月 2023 20:14:30 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/tzskasrs' into tzskasrs

---
 src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java     |   26 
 src/main/webapp/static/js/agvPakStore/stockAdjust.js                  |   14 
 src/main/java/com/zy/asrs/service/impl/ManPakOutServiceImpl.java      |   21 
 src/main/webapp/views/mat/mat.html                                    |   55 
 src/main/webapp/views/picking/picking.html                            |  228 +++
 src/main/java/com/zy/asrs/controller/AgvWorkController.java           |    8 
 src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java     |   44 
 src/main/webapp/views/agvPakStore/stockAdjust.html                    |    2 
 src/main/java/com/zy/asrs/service/impl/ManLocDetTemplServiceImpl.java |   12 
 src/main/java/com/zy/asrs/controller/ManPakOutController.java         |  443 ++++++
 src/main/java/com/zy/asrs/service/AgvLocDetlService.java              |    5 
 src/main/java/com/zy/asrs/entity/param/NodePakoutParam.java           |   17 
 src/main/java/com/zy/asrs/utils/Utils.java                            |   16 
 src/main/webapp/static/js/order/out.js                                |    2 
 src/main/java/com/zy/asrs/service/ManPakOutService.java               |   11 
 src/main/java/com/zy/asrs/mapper/ManLocDetlTempMapper.java            |   12 
 src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java        |  139 ++
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java         |  138 +
 src/main/webapp/static/js/picking/pickingOrder.js                     |  497 +++++++
 src/main/java/com/zy/asrs/controller/OutController.java               |  122 +
 src/main/java/com/zy/asrs/service/AgvWorkService.java                 |    6 
 src/main/webapp/static/js/manLocDetl/manLocDetlTemp.js                |  550 ++++++++
 src/main/java/com/zy/asrs/service/MobileService.java                  |    3 
 src/main/webapp/views/manLocDetl/manLocDetlTemp.html                  |  111 +
 src/main/webapp/static/js/picking/picking.js                          |  362 +++++
 src/main/java/com/zy/asrs/controller/ManLocDetlController.java        |    1 
 src/main/java/com/zy/asrs/entity/ManLocDetlTemp.java                  |  346 +++++
 src/main/webapp/static/js/pakStore/stockAdjust.js                     |    3 
 src/main/webapp/views/agvPakStore/pakStore.html                       |    2 
 src/main/webapp/views/picking/pickingOrder.html                       |  157 ++
 src/main/java/com/zy/asrs/entity/ManPakOut.java                       |  280 ++++
 src/main/webapp/static/js/manLocDetl/manLocDetl.js                    |   40 
 src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java        |    3 
 src/main/java/com/zy/asrs/controller/ManLocDetlTempController.java    |  134 +
 src/main/java/com/zy/asrs/controller/MobileController.java            |   72 
 src/main/java/com/zy/common/model/LocDto.java                         |    2 
 src/main/resources/mapper/ManLocDetlMapper.xml                        |    1 
 src/main/webapp/views/manLocDetl/manLocDetl.html                      |   99 
 src/main/java/com/zy/asrs/controller/AgvLocMastController.java        |   11 
 src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java          |   17 
 src/main/java/com/zy/asrs/mapper/ManPakOutMapper.java                 |   21 
 src/main/webapp/static/js/order/order.js                              |   12 
 src/main/java/com/zy/asrs/service/ManLocDetlService.java              |    3 
 src/main/java/com/zy/asrs/service/ManLocDetlTempService.java          |    8 
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java           |    9 
 src/main/resources/application.yml                                    |    4 
 46 files changed, 3,864 insertions(+), 205 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/AgvLocMastController.java b/src/main/java/com/zy/asrs/controller/AgvLocMastController.java
index e287d77..28a5e7b 100644
--- a/src/main/java/com/zy/asrs/controller/AgvLocMastController.java
+++ b/src/main/java/com/zy/asrs/controller/AgvLocMastController.java
@@ -17,10 +17,7 @@
 import com.zy.common.web.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.Date;
 import java.util.List;
@@ -113,6 +110,12 @@
         return R.ok();
     }
 
+    @RequestMapping(value = "/locMast/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(agvLockMastService.selectById(String.valueOf(id)));
+    }
+
     private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
         for (Map.Entry<String, Object> entry : map.entrySet()){
             String val = String.valueOf(entry.getValue());
diff --git a/src/main/java/com/zy/asrs/controller/AgvWorkController.java b/src/main/java/com/zy/asrs/controller/AgvWorkController.java
index 67dcb26..0e7637e 100644
--- a/src/main/java/com/zy/asrs/controller/AgvWorkController.java
+++ b/src/main/java/com/zy/asrs/controller/AgvWorkController.java
@@ -4,9 +4,11 @@
 import com.core.annotations.ManagerAuth;
 import com.core.common.R;
 import com.zy.asrs.entity.AgvBasDevp;
+import com.zy.asrs.entity.param.LocDetlAdjustParam;
 import com.zy.asrs.service.AgvWorkService;
 import com.zy.common.web.BaseController;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
@@ -30,6 +32,12 @@
         workService.createWaitPainWrkMastStart(agvBasDevpList, getUserId());
         //return R.ok("浠诲姟鍙凤細" + startupDto.getWorkNo() + ";鐩爣搴撲綅锛�" + startupDto.getLocNo());
         return R.ok("鐢熸垚鍏ュ簱宸ヤ綔妗f垚鍔�");
+    }
 
+    @RequestMapping("/locDdetl/adjust/start")
+    @ManagerAuth(memo = "搴撳瓨璋冩暣")
+    public R locDetlAdjustStart(@RequestBody LocDetlAdjustParam param) {
+        workService.adjustLocDetl(param, getUserId());
+        return R.ok("搴撳瓨璋冩暣鎴愬姛");
     }
 }
diff --git a/src/main/java/com/zy/asrs/controller/ManLocDetlController.java b/src/main/java/com/zy/asrs/controller/ManLocDetlController.java
index 2c091db..85bc07c 100644
--- a/src/main/java/com/zy/asrs/controller/ManLocDetlController.java
+++ b/src/main/java/com/zy/asrs/controller/ManLocDetlController.java
@@ -54,6 +54,7 @@
                 param.remove("update_time");
             }
         }
+
         Page<ManLocDetl> page = manLocDetlService.getPage(toPage(curr, limit, param, ManLocDetl.class));
         return R.ok(page);
     }
diff --git a/src/main/java/com/zy/asrs/controller/ManLocDetlTempController.java b/src/main/java/com/zy/asrs/controller/ManLocDetlTempController.java
new file mode 100644
index 0000000..ed8d0eb
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/ManLocDetlTempController.java
@@ -0,0 +1,134 @@
+package com.zy.asrs.controller;
+
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.core.annotations.ManagerAuth;
+import com.core.common.DateUtils;
+import com.core.common.R;
+import com.zy.asrs.entity.ManLocDetlTemp;
+import com.zy.asrs.entity.param.LocDetlAdjustParam;
+import com.zy.asrs.service.ManLocDetlTempService;
+import com.zy.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/temp")
+public class ManLocDetlTempController extends BaseController {
+
+    @Autowired
+    private ManLocDetlTempService manLocDetlTempService;
+
+    @RequestMapping(value = "/manLocDetl/list/auth")
+    @ManagerAuth
+    public R list(@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){
+
+
+
+        EntityWrapper<ManLocDetlTemp> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+
+        Page<ManLocDetlTemp> page = manLocDetlTempService.selectPage(new Page<>(curr, limit), wrapper);
+        return R.ok(page);
+    }
+
+
+    @RequestMapping("/manLocDetl/list")
+    public R outList(@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){
+
+        //Page<ManLocDetlTemp> manLocDetlPage = toPage(curr, limit, param, ManLocDetlTemp.class);
+        //Page<ManLocDetlTemp> outPage = manLocDetlTempService.getOutPage(manLocDetlPage);
+//        Page<ManLocDetl> page = manLocDetlService.getPage(manLocDetlPage);
+        return R.ok();
+    }
+
+    @RequestMapping("/manLocDetl/adjust/start")
+    @ManagerAuth(memo = "搴撳瓨璋冩暣")
+    public R locDetlAdjustStart(@RequestBody LocDetlAdjustParam param) {
+        //manLocDetlTempService.adjustLocDetl(param, getUserId(),getUser());
+        return R.ok("搴撳瓨璋冩暣鎴愬姛");
+    }
+
+    @RequestMapping(value = "/manLocDetl/asrsAndSaas/list")
+    @ManagerAuth
+    public R list(@RequestParam(defaultValue = "1")Integer curr,
+                  @RequestParam(defaultValue = "10")Integer limit,
+                  @RequestParam(required = false)String orderByField,
+                  @RequestParam(required = false)String orderByType,
+                  @RequestParam(required = false)String condition,
+                  @RequestParam Map<String, Object> param){
+
+//        Page<ManLocDetl> manLocDetlPage = toPage(curr, limit, param, ManLocDetl.class);
+//        Page<ManLocDetl> all = manLocDetlService.selectAllPage(manLocDetlPage);
+//        return R.ok().add(all);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/manLocDetlTemp/export/auth")
+    @ManagerAuth(memo = "搴撲綅鏄庣粏瀵煎嚭")
+    public synchronized R export(@RequestBody JSONObject param){
+        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
+        EntityWrapper<ManLocDetlTemp> wrapper = new EntityWrapper<>();
+        Map<String, Object> map = excludeTrash(param.getJSONObject("locDetl"));
+        String row = "";
+        if (map.get("row") != null) {
+            String chooseRow = (String) map.get("row");
+            if (chooseRow.length() == 1) {
+                row = "0" + chooseRow;
+                map.remove("row");
+            }else {
+                row = chooseRow;
+                map.remove("row");
+            }
+        }
+        convert(map, wrapper);
+        if (!row.equals("")){
+            wrapper.and()
+                    .where("loc_no like '" +row +"%'");
+        }
+        List<ManLocDetlTemp> list = manLocDetlTempService.selectList(wrapper);
+        list.forEach(m -> {
+            m.setMatnr(m.getMatnr() + " ");
+        });
+
+        return R.ok(exportSupport(list, fields));
+    }
+
+
+    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
+        for (Map.Entry<String, Object> entry : map.entrySet()){
+            String val = String.valueOf(entry.getValue());
+            if (val.contains(RANGE_TIME_LINK)){
+                String[] dates = val.split(RANGE_TIME_LINK);
+                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
+                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
+            } else {
+                if (entry.getKey().equals("locNo")) {
+                    wrapper.eq("loc_no", String.valueOf(entry.getValue()));
+                } else {
+                    wrapper.like(entry.getKey(), String.valueOf(entry.getValue()));
+                }
+            }
+        }
+    }
+
+
+
+
+}
diff --git a/src/main/java/com/zy/asrs/controller/ManPakOutController.java b/src/main/java/com/zy/asrs/controller/ManPakOutController.java
new file mode 100644
index 0000000..27b0dca
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/ManPakOutController.java
@@ -0,0 +1,443 @@
+package com.zy.asrs.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.core.annotations.ManagerAuth;
+import com.core.common.*;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.OrderDomainParam;
+import com.zy.asrs.service.*;
+import com.zy.common.CodeRes;
+import com.zy.common.config.AdminInterceptor;
+import com.zy.common.utils.BarcodeUtils;
+import com.zy.common.utils.QrCode;
+import com.zy.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+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.Date;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+public class ManPakOutController extends BaseController {
+    @Autowired
+    private ManPakOutService manPakOutService;
+    @Autowired
+    private OrderDetlService orderDetlService;
+    @Autowired
+    private ManLocDetlService manLocDetlService;
+    @Autowired
+    private OrderService orderService;
+    @Autowired
+    private DocTypeService docTypeService;
+
+    @RequestMapping(value = "/ManPakOut/list/auth")
+    @ManagerAuth
+    public R list(@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){
+        EntityWrapper<ManPakOut> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} else {
+            wrapper.orderBy("create_time",false);
+        }
+        return R.ok(manPakOutService.selectPage(new Page<>(curr, limit), wrapper));
+    }
+
+    @RequestMapping(value = "/ManPakOut/detailed/auth")
+    //@ManagerAuth
+    public R detailed(@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){
+        EntityWrapper<ManPakOut> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} else {
+            wrapper.orderBy("create_time",true);
+        }
+        wrapper.isNotNull("name");
+
+        Page<ManPakOut> manPakOutPage = manPakOutService.selectPage(new Page<>(curr, limit), wrapper);
+        manPakOutPage.getRecords().forEach(manPakOut -> {
+            if(manPakOut.getStatus() == 1){
+
+            }
+        });
+        return R.ok(manPakOutPage);
+    }
+
+    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){
+        for (Map.Entry<String, Object> entry : map.entrySet()){
+            String val = String.valueOf(entry.getValue());
+            if (val.contains(RANGE_TIME_LINK)){
+                String[] dates = val.split(RANGE_TIME_LINK);
+                wrapper.ge(entry.getKey(), DateUtils.convert(dates[0]));
+                wrapper.le(entry.getKey(), DateUtils.convert(dates[1]));
+            } else {
+                wrapper.like(entry.getKey(), val);
+            }
+        }
+    }
+
+    @RequestMapping(value = "/ManPakOut/add/auth")
+    @ManagerAuth(memo = "鐢熸垚鎷h揣鍗�")
+    @Transactional
+    public R manPakOutAdd(@RequestBody OrderDomainParam param){
+        if (Cools.isEmpty(param)){
+            return R.error("鏁版嵁寮傚父");
+        }
+        if (!Cools.isEmpty(param.getOrderNo())){
+            Order order = orderService.selectOne(new EntityWrapper<Order>()
+                    .eq("order_no", param.getOrderNo())
+            );
+            if (Cools.isEmpty(order)){
+                return R.error("鍗曟嵁涓嶅瓨鍦�");
+            }
+            List<OrderDetl> orderDetls =orderDetlService.selectList(new EntityWrapper<OrderDetl>()
+                    .eq("order_no", param.getOrderNo())
+            );
+            if (Cools.isEmpty(orderDetls)){
+                return R.error("鍗曟嵁鏄庣粏涓虹┖");
+            }
+            for (OrderDetl orderDetl : orderDetls){
+                List<ManLocDetl> manLocDetls=null;
+                try{
+                    if (Cools.isEmpty(orderDetl.getBatch())){
+                        manLocDetls = manLocDetlService.selectList(new EntityWrapper<ManLocDetl>()
+                                .eq("matnr",orderDetl.getMatnr())
+                        );
+                    }else {
+                        manLocDetls = manLocDetlService.selectList(new EntityWrapper<ManLocDetl>()
+                                .eq("matnr",orderDetl.getMatnr())
+                                .eq("batch",orderDetl.getBatch())
+                        );
+                    }
+                }catch (Exception e){
+                    return R.error("娣诲姞鎷h揣鍗曞け璐�");
+                }
+
+                if (!Cools.isEmpty(manLocDetls)){
+                    for (ManLocDetl manLocDetl:manLocDetls){
+                        Double statusAnfme = 0.0;
+                        if (Cools.isEmpty(manLocDetl.getStatus())){
+                            manLocDetl.setStatus(1);
+                        }
+                        try{
+                            if (manLocDetl.getStatus$().equals("绂佺敤")){
+                                if (Cools.isEmpty(manLocDetl.getBatch())){
+                                    List<ManPakOut> manPakOuts = manPakOutService.selectList(new EntityWrapper<ManPakOut>()
+                                            .eq("loc_no", manLocDetl.getLocNo())
+                                            .eq("matnr", manLocDetl.getMatnr())
+                                            .eq("status",0)
+                                    );
+                                    if (!Cools.isEmpty(manPakOuts)){
+                                        for (ManPakOut manPakOut:manPakOuts){
+                                            statusAnfme=statusAnfme+manPakOut.getAnfme();
+                                        }
+                                    }
+                                }else {
+                                    List<ManPakOut> manPakOuts = manPakOutService.selectList(new EntityWrapper<ManPakOut>()
+                                            .eq("loc_no", manLocDetl.getLocNo())
+                                            .eq("matnr", manLocDetl.getMatnr())
+                                            .eq("batch",manLocDetl.getBatch())
+                                            .eq("status",0)
+                                    );
+                                    if (!Cools.isEmpty(manPakOuts)){
+                                        for (ManPakOut manPakOut:manPakOuts){
+                                            statusAnfme=statusAnfme+manPakOut.getAnfme();
+                                        }
+                                    }
+                                }
+                            }
+                        }catch (Exception e){
+                            return R.error("鏌ヨ搴撳瓨绂佺敤鏁伴噺澶辫触");
+                        }
+                        Wrapper<ManLocDetl> wrapper = new EntityWrapper<ManLocDetl>()
+                                .eq("loc_no", manLocDetl.getLocNo())
+                                .eq("matnr", manLocDetl.getMatnr());
+                        if (orderDetl.getAnfme() > manLocDetl.getAnfme()-statusAnfme){
+                            if (addPakOUT(manLocDetl,param.getOrderNo()).equals(R.ok())){
+                                manLocDetl.setStatus(0);
+                                try{
+                                    if (Cools.isEmpty(manLocDetl.getBatch())){
+                                        manLocDetlService.update(manLocDetl,wrapper.eq("modi_time",manLocDetl.getModiTime()));
+                                    }else {
+                                        manLocDetlService.update(manLocDetl,wrapper.eq("batch",manLocDetl.getBatch()));
+                                    }
+                                }catch (Exception e){
+                                    return R.error("鏇存柊搴撳瓨澶辫触");
+                                }
+                                orderDetl.setAnfme(orderDetl.getAnfme()-manLocDetl.getAnfme());
+                            }else {
+                                return R.error("娣诲姞鎷h揣鍗曞け璐�");
+                            }
+                        }else if (orderDetl.getAnfme()-manLocDetl.getAnfme()-statusAnfme==0){
+                            if (addPakOUT(manLocDetl,param.getOrderNo()).equals(R.ok())){
+                                manLocDetl.setStatus(0);
+                                try{
+                                    if (Cools.isEmpty(manLocDetl.getBatch())){
+                                        manLocDetlService.update(manLocDetl,wrapper.eq("modi_time",manLocDetl.getModiTime()));
+                                    }else {
+                                        manLocDetlService.update(manLocDetl,wrapper.eq("batch",manLocDetl.getBatch()));
+                                    }
+                                }catch (Exception e){
+                                    return R.error("鏇存柊搴撳瓨澶辫触");
+                                }
+                                orderDetl.setAnfme(orderDetl.getAnfme()-manLocDetl.getAnfme());
+                            }else {
+                                return R.error("娣诲姞鎷h揣鍗曞け璐�");
+                            }
+                        }else if (orderDetl.getAnfme()<manLocDetl.getAnfme()-statusAnfme){
+                            Double a=manLocDetl.getAnfme();
+                            manLocDetl.setAnfme(orderDetl.getAnfme());
+                            if (addPakOUT(manLocDetl,param.getOrderNo()).equals(R.ok())){
+                                orderDetl.setAnfme(orderDetl.getAnfme()-manLocDetl.getAnfme());
+                                manLocDetl.setStatus(0);
+                                manLocDetl.setAnfme(a);
+                                try{
+                                    if (Cools.isEmpty(manLocDetl.getBatch())){
+                                        manLocDetlService.update(manLocDetl,wrapper.eq("modi_time",manLocDetl.getModiTime()));
+                                    }else {
+                                        manLocDetlService.update(manLocDetl,wrapper.eq("batch",manLocDetl.getBatch()));
+                                    }
+                                }catch (Exception e){
+                                    return R.error("鏇存柊搴撳瓨澶辫触");
+                                }
+
+                            }else {
+                                return R.error("娣诲姞鎷h揣鍗曞け璐�");
+                            }
+                        }else {
+                            return R.error("绯荤粺鍑洪敊,璇疯仈绯荤鐞嗗憳");
+                        }
+                        if (orderDetl.getAnfme()==0){
+                            break;
+                        }
+                    }
+                    if (orderDetl.getAnfme()!=0){
+                        ManLocDetl manLocDetl=new ManLocDetl();
+                        manLocDetl.setAnfme(0.0);
+                        manLocDetl.setMatnr(orderDetl.getMatnr());
+                        manLocDetl.setMaktx(orderDetl.getMaktx());
+                        manLocDetl.setMemo(orderDetl.getMemo()+"搴撳瓨涓嶈冻");
+                        if (addPakOUT(manLocDetl,param.getOrderNo()).equals(R.ok())){
+                            continue;
+                        }else {
+                            return R.error("娣诲姞鎷h揣鍗曞け璐�");
+                        }
+                    }
+                }else {
+                    ManLocDetl manLocDetl=new ManLocDetl();
+                    manLocDetl.setAnfme(0.0);
+                    manLocDetl.setMatnr(orderDetl.getMatnr());
+                    manLocDetl.setMaktx(orderDetl.getMaktx());
+                    manLocDetl.setMemo(orderDetl.getMemo()+"鏃犲簱瀛�");
+                    if (addPakOUT(manLocDetl,param.getOrderNo()).equals(R.ok())){
+                        continue;
+                    }else {
+                        return R.error("娣诲姞鎷h揣鍗曞け璐�");
+                    }
+                }
+
+
+            }
+            orderService.updateSettle(order.getId(),(long)2,null);
+        }else {
+            return R.error("鍗曟嵁缂栧彿寮傚父");
+        }
+        return R.ok("鎷h揣鍗曟坊鍔犳垚鍔�");
+    }
+    private R addPakOUT(ManLocDetl manLocDetl,String OrderNo){
+        ManPakOut manPakOut=new ManPakOut();
+        manPakOut.setWrkNo(OrderNo+"-"+System.currentTimeMillis());
+        manPakOut.setWrkSts((long)1);
+        manPakOut.setAnfme(manLocDetl.getAnfme());
+        manPakOut.setLocNo(manLocDetl.getLocNo());
+        manPakOut.setNodeId(manLocDetl.getNodeId());
+        manPakOut.setMatnr(manLocDetl.getMatnr());
+        manPakOut.setMaktx(manLocDetl.getMaktx());
+        manPakOut.setSpecs(manLocDetl.getSpecs());
+        manPakOut.setUnit(manLocDetl.getUnit());
+        manPakOut.setBarcode(manLocDetl.getBarcode());
+        manPakOut.setDocNum(OrderNo);
+        manPakOut.setStatus(0);
+        manPakOut.setCreateTime(new Date());
+        if (!Cools.isEmpty(manLocDetl.getBatch())){
+            manPakOut.setBatch(manLocDetl.getBatch());
+            manPakOut.setUpdateTime(new Date());
+        }else {
+            manPakOut.setUpdateTime(manLocDetl.getModiTime());//鐢ㄤ簬璇嗗埆璐х墿
+        }
+
+        manPakOut.setMemo(manLocDetl.getMemo());
+        if (Cools.isEmpty(manPakOutService.selectOne(new EntityWrapper<ManPakOut>().eq("doc_num",OrderNo)))){
+            manPakOut.setName(manLocDetl.getMaktx());
+        }
+        try{
+            if (!manPakOutService.insert(manPakOut)){
+                return R.error("娣诲姞鎷h揣鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
+            }
+        }catch (Exception e){
+            return R.error("娣诲姞鎷h揣鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
+        }
+        return R.ok();
+
+    }
+
+    @RequestMapping("/manPakOut/finish")
+    public R finish(@RequestBody ManPakOut manPakOut){
+        Wrapper<ManLocDetl> wrapper = new EntityWrapper<ManLocDetl>()
+                .eq("loc_no", manPakOut.getLocNo())
+                .eq("matnr", manPakOut.getMatnr());
+        try{
+            if (Cools.isEmpty(manPakOut.getBatch())){
+                List<ManLocDetl> manLocDetls = manLocDetlService.selectList(wrapper);
+                Double anfme=manPakOut.getAnfme();
+                for (ManLocDetl manLocDetl:manLocDetls){
+                    if (anfme<manLocDetl.getAnfme()){
+                        manLocDetl.setAnfme(manLocDetl.getAnfme()-anfme);
+                        manLocDetlService.update(manLocDetl,wrapper.eq("batch",manLocDetl.getBatch()));
+                        anfme=0.0;
+                    }else if (anfme>=manLocDetl.getAnfme()){
+                        manLocDetlService.delete(wrapper.eq("batch",manLocDetl.getBatch()));
+                        anfme=anfme-manLocDetl.getAnfme();
+                    }
+                    if (anfme==0.0){
+                        break;
+                    }
+                }
+            }else {
+                ManLocDetl manLocDetl = manLocDetlService.selectOne(wrapper.eq("batch", manPakOut.getBatch()));
+                if (manPakOut.getAnfme()<manLocDetl.getAnfme()){
+                    manLocDetl.setAnfme(manLocDetl.getAnfme()-manPakOut.getAnfme());
+                    manLocDetlService.update(manLocDetl,wrapper.eq("batch",manLocDetl.getBatch()));
+                }else if (manPakOut.getAnfme()-manLocDetl.getAnfme()==0){
+                    manLocDetlService.delete(wrapper.eq("batch",manLocDetl.getBatch()));
+                }
+            }
+        }catch (Exception e){
+            return R.error("鏇存柊搴撳瓨鏁伴噺澶辫触");
+        }
+
+
+        ManPakOut out = Cools.isEmpty(manPakOut.getBatch())? manPakOutService.selectOne(new EntityWrapper<ManPakOut>()
+                .eq("wrk_no", manPakOut.getWrkNo())
+                .eq("matnr", manPakOut.getMatnr()))
+                :manPakOutService.selectOne(new EntityWrapper<ManPakOut>()
+                .eq("wrk_no", manPakOut.getWrkNo())
+                .eq("matnr", manPakOut.getMatnr())
+                .eq("batch",manPakOut.getBatch()));
+        out.setWrkSts(manPakOut.getWrkSts());
+        out.setZpallet(manPakOut.getZpallet());
+        out.setAnfme(manPakOut.getAnfme());
+        out.setNodeId(manPakOut.getNodeId());
+        out.setLocNo(manPakOut.getLocNo());
+        out.setMatnr(manPakOut.getMatnr());
+        out.setMaktx(manPakOut.getMaktx());
+        out.setBatch(manPakOut.getBatch());
+        out.setStatus(manPakOut.getStatus());
+        boolean update =Cools.isEmpty(manPakOut.getBatch())? manPakOutService.update(out, new EntityWrapper<ManPakOut>()
+                .eq("wrk_no", manPakOut.getWrkNo())
+                .eq("matnr", manPakOut.getMatnr()))
+                :manPakOutService.update(out, new EntityWrapper<ManPakOut>()
+                .eq("wrk_no", manPakOut.getWrkNo())
+                .eq("matnr", manPakOut.getMatnr())
+                .eq("batch",manPakOut.getBatch()));
+        try {
+            Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", manPakOut.getDocNum()));
+            List<ManPakOut> pakOuts = manPakOutService.selectList(new EntityWrapper<ManPakOut>().eq("doc_num", order.getOrderNo()));
+            if (Cools.isEmpty(pakOuts)){
+                return R.error("鏌ヨ鎷h揣鍗曟槑缁嗗け璐�");
+            }else {
+                Long settle = order.getSettle();
+                for (ManPakOut pakOut:pakOuts){
+                    if (pakOut.getStatus()==0 || pakOut.getStatus()==8){
+                        order.setSettle(settle);
+                        break;
+                    }else {
+                        order.setSettle(4L);
+                    }
+                }
+            }
+            orderService.updateSettle(order.getId(),order.getSettle(),(long)9527);
+        }catch (Exception e){
+            return R.error("鏇存柊璁㈠崟鐘舵�佸け璐�");
+        }
+        return update? R.ok("鏇存柊鎴愬姛") : R.error("鏇存柊澶辫触");
+    }
+
+    @RequestMapping("/manPakOut/notIssued")
+    public R notIssued(){
+        List<Order> orders = orderService.selectList(new EntityWrapper<Order>().eq("settle", 1L).or().eq("settle", 2L));
+        List<Order> orders1=new ArrayList<Order>();
+        try {
+            for (Order order:orders){
+                DocType docType = docTypeService.selectById(order.getDocType());
+                if (docType.getPakout()==1){
+                    orders1.add(order);
+                }
+            }
+        }catch (Exception e){
+            return R.error("鑾峰彇璁㈠崟鐘舵�佸け璐�");
+        }
+        return R.ok(orders1);
+    }
+
+    public static void main(String[] args) {
+        ManPakOutService bean = SpringUtils.getBean(ManPakOutService.class);
+        ManPakOut out = bean.selectOne(null);
+        System.out.println("JSON.toJSONString(out) = " + JSON.toJSONString(out));
+    }
+
+    @RequestMapping(value = "/ManPakOut/print/auth")
+    @ManagerAuth(memo = "璁㈠崟缂栫爜鎵撳嵃")
+    public R manPakOutPrint(@RequestParam(value = "param[]") String[] param) {
+        if(Cools.isEmpty(param)) {
+            return R.parse(CodeRes.EMPTY);
+        }
+        List<ManPakOut> res = new ArrayList<>();
+        for (String orderNo : param){
+            res = manPakOutService.selectList(new EntityWrapper<ManPakOut>().eq("doc_num", orderNo));
+        }
+        return R.ok().add(res);
+    }
+    @RequestMapping(value = "/ManPakOut/code/auth")
+//    @ManagerAuth(memo = "鐗╂枡缂栫爜鏉″舰鐮佽幏鍙�(type:1(鏉″舰鐮�);2(浜岀淮鐮�)")
+    public R manPakOutCodeBarcode(@RequestParam(defaultValue = "2") Integer type
+            , @RequestParam String param
+            , HttpServletResponse response) throws Exception {
+        AdminInterceptor.cors(response);
+        if (Cools.isEmpty(param)){
+            return R.parse(BaseRes.EMPTY);
+        }
+        BufferedImage img;
+        if (type == 1) {
+            img = BarcodeUtils.encode(param);
+        } else {
+            img = QrCode.createImg(param);
+        }
+        if (!ImageIO.write(img, "jpg", response.getOutputStream())) {
+            throw new IOException("Could not write an image of format jpg");
+        }
+        response.getOutputStream().flush();
+        response.getOutputStream().close();
+        return R.ok();
+    }
+}
diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index 1d05c39..bae8839 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -8,10 +8,13 @@
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.CombParam;
 import com.zy.asrs.entity.param.MobileAdjustParam;
+import com.zy.asrs.entity.param.NodePakoutParam;
 import com.zy.asrs.entity.result.MobileAdjustResult;
 import com.zy.asrs.service.*;
 import com.zy.common.model.WrkDto;
 import com.zy.common.web.BaseController;
+import com.zy.system.entity.User;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -48,7 +51,11 @@
     @Autowired
     private PackService packService;
     @Autowired
-    private ManLocDetlService manLocDetlService;
+    private ManLocDetlTempService manLocDetlTempService;
+    @Autowired
+    private MatService matService;
+    @Autowired
+    private WaitPakinService waitPakinService;
 
     // 缁勬墭 ----------------------------------------------------------------------------------------------------
 
@@ -90,8 +97,8 @@
                         combMat.setAnfme(orderDetl.getAnfme()-orderDetl.getQty());
                         combMat.setMaktx(orderDetl.getMaktx());
                         combMat.setSpecs(orderDetl.getSpecs());
-                        combMat.setCsocode(orderDetl.getColor());
-                        combMat.setIsoseq(orderDetl.getOrigin());
+                        combMat.setCsocode(orderDetl.getThreeCode());
+                        combMat.setIsoseq(orderDetl.getDeadTime());
                         combMats.add(combMat);
                     }
                     combParam.setCombMats(combMats);
@@ -327,25 +334,74 @@
      */
     @RequestMapping("/node/recommend/loc")
     @ManagerAuth(memo = "搴撲綅鎺ㄨ崘")
-    public R recommendNodeLoc(){
+    public R recommendNodeLoc(@RequestBody HashMap<String,String> param){
 
+        String zpallet = param.get("zpallet");
 
-        return R.ok();
+        return R.ok("DT-C-010202").add(waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet",zpallet)));
     }
+
 
     /*
     骞冲簱 璁㈠崟涓婃灦
      */
     @RequestMapping("/node/puttway")
-    @ManagerAuth(memo = "璁㈠崟涓婃灦")
+    //@ManagerAuth(memo = "璁㈠崟涓婃灦")
     public R putway(@RequestBody HashMap<String,String> params){
         String zpallet = params.get("zpallet");
         String locNo = params.get("locNo");
 
-        mobileService.nodePutway(zpallet,locNo,getUser());
+        mobileService.nodePutway(zpallet,locNo,new User());
+
+        return R.ok("璁㈠崟涓婃灦鎴愬姛");
+    }
+
+    /*
+    骞冲簱 璁㈠崟涓嬫灦
+     */
+    @RequestMapping("/node/pakout")
+    public R nodePakout(@RequestBody NodePakoutParam param){
 
 
-        return R.ok();
+        mobileService.nodePakout(param,new User());
+
+        return R.ok("璁㈠崟涓嬫灦鎴愬姛");
+    }
+
+    /*
+    骞冲簱涓存椂涓婃灦
+     */
+    @RequestMapping("/node/putway1")
+    public R putway1(@RequestBody CombParam combParam){
+        Date now = new Date();
+        List<CombParam.CombMat> combMats = combParam.getCombMats();
+        combMats.forEach(combMat -> {
+            if(Cools.isEmpty(combMat.getBatch())){
+                combMat.setBatch("-1");
+            }
+            ManLocDetlTemp manLocDetlTemp = manLocDetlTempService.selectOne(new EntityWrapper<ManLocDetlTemp>()
+                    .eq("matnr", combMat.getMatnr())
+                    .eq("batch",combMat.getBatch()));
+            if(Cools.isEmpty(manLocDetlTemp)){
+                manLocDetlTemp = new ManLocDetlTemp();
+                Mat mat = matService.selectByMatnr(combMat.getMatnr());
+                BeanUtils.copyProperties(mat,manLocDetlTemp);
+                manLocDetlTemp.setLocNo("A-010101");
+                manLocDetlTemp.setAnfme(combMat.getAnfme());
+                manLocDetlTemp.setBatch(combMat.getBatch());
+                manLocDetlTemp.setCreateTime(now);
+                manLocDetlTemp.setModiTime(now);
+                manLocDetlTempService.insert(manLocDetlTemp);
+            }else {
+                manLocDetlTemp.setAnfme(manLocDetlTemp.getAnfme()+combMat.getAnfme());
+                manLocDetlTempService.update(manLocDetlTemp,new EntityWrapper<ManLocDetlTemp>()
+                        .eq("matnr", combMat.getMatnr())
+                        .eq("batch",combMat.getBatch()));
+            }
+
+        });
+
+        return R.ok("涓婃灦鎴愬姛");
     }
 
 
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index efaaee0..f851843 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -17,9 +17,7 @@
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -51,6 +49,10 @@
     private AgvBasDevpService agvBasDevpService;
     @Autowired
     private AgvWorkService agvWorkService;
+    @Autowired
+    private ManLocDetlService manLocDetlService;
+    @Autowired
+    private ManPakOutService manPakOutService;
 
     @Autowired
     private AgvLocDetlService agvLocDetlService;
@@ -75,6 +77,9 @@
             double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty()).orElse(0.0D);
             if (issued <= 0.0D) { continue; }
 
+            //浠庡钩搴撳鎵�
+            issued = manLocDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
+
             //鍏堟壘AGV鐨勫簱瀛橈紝濡傛灉杩斿洖鐨刬ssued澶т簬0锛屽垯鍘诲洓椤瑰簱鎵�
             issued = agvLocDetlService.queryStockAndSetLocDto(orderDetl.getMatnr(),orderDetl.getBatch(),orderDetl.getOrderNo(),locDtoList,issued,orderDetl.getThreeCode(),orderDetl.getDeadTime());
 
@@ -89,44 +94,6 @@
         }
         return R.ok().add(locDtoList);
 
-        /*
-        if (Cools.isEmpty(ids)) {
-            return R.parse(BaseRes.PARAM);
-        }
-        List<OrderDetl> orderDetls = orderDetlService.selectBatchIds(ids);
-        List<LocDto> locDtos = new ArrayList<>();
-
-        Set<String> exist = new HashSet<>();
-
-        for (OrderDetl orderDetl : orderDetls) {
-            double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty()).orElse(0.0D);
-            if (issued <= 0.0D) { continue; }
-            List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), null, exist);
-            for (LocDetl locDetl : locDetls) {
-                if (issued > 0) {
-//                    LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(),
-//                            issued >= locDetl.getAnfme() ? locDetl.getAnfme() : issued);
-                    LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(),
-                            locDetl.getAnfme());
-//                    int ioType = (issued >= locDetl.getAnfme() && locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("loc_no", locDto.getLocNo())) == 1) ? 101 : 103;
-                    int ioType = 101;
-                    List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), ioType);
-                    locDto.setStaNos(staNos);
-                    locDtos.add(locDto);
-                    exist.add(locDetl.getLocNo());
-                    // 鍓╀綑寰呭嚭鏁伴噺閫掑噺
-                    issued = issued - locDetl.getAnfme();
-                } else {
-                    break;
-                }
-            }
-            if (issued > 0) {
-                LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued);
-                locDto.setLack(Boolean.TRUE);
-                locDtos.add(locDto);
-            }
-        }
-        return R.ok().add(locDtos); */
     }
 
     @PostMapping("/out/pakout/auth")
@@ -350,6 +317,10 @@
             if (locDto.isLack()) { continue; }
             //AGV搴�
             if(!Cools.isEmpty(locDto.getAgvStaNos())){
+                //骞冲簱
+                if("鏃犻渶绔欑偣".equals(locDto.getAgvStaNo())){
+                    generateManPakout(locDto);
+                }
                 generateTaskDtoForAgv(locDto,agvTaskDtos);
 
                 //鍥涢」搴�
@@ -406,6 +377,75 @@
     }
 
     /*
+    鐢熸垚骞冲簱鎷h揣鍗�
+     */
+    private void generateManPakout(LocDto locDto){
+        ManLocDetl manLocDetl = manLocDetlService.selectItem(locDto.getLocNo(), locDto.getMatnr(), locDto.getBatch());
+        if (!Cools.isEmpty(manLocDetl) && !(locDto.getAnfme()>manLocDetl.getAnfme())) {
+            manLocDetl.setStatus(0);
+            manLocDetlService.update(manLocDetl, new EntityWrapper<ManLocDetl>().eq("loc_no", manLocDetl.getLocNo()).eq("matnr",manLocDetl.getMatnr()));
+            if (addPakOUT(locDto).equals(R.ok())) {
+                Order order = orderService.selectByNo(locDto.getOrderNo());
+                if (Cools.isEmpty(order)){
+                    throw new CoolException("鏌ヨ璁㈠崟澶辫触锛岃鑱旂郴绠$悊鍛�"+locDto.getOrderNo());
+                }
+                if (order.getSettle()==1){
+                    if (!orderService.updateSettle(order.getId(),2L,null)){
+                        throw new CoolException("淇敼璁㈠崟鐘舵�佸け璐ワ紝璇疯仈绯荤鐞嗗憳"+locDto.getOrderNo());
+                    }
+                }
+                OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", locDto.getOrderNo()).eq("matnr", locDto.getMatnr()));
+                if (Cools.isEmpty(orderDetl)){
+                    throw new CoolException("鏌ヨ璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"+locDto.getOrderNo()+locDto.getMatnr());
+                }
+                orderDetl.setQty(orderDetl.getQty() + locDto.getAnfme());
+                if (!orderDetlService.update(orderDetl,new EntityWrapper<OrderDetl>().eq("order_no", locDto.getOrderNo()).eq("matnr", locDto.getMatnr()))){
+                    throw new CoolException("淇敼璁㈠崟鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�"+locDto.getOrderNo()+locDto.getMatnr());
+                }
+            }
+        }else {
+            throw new CoolException("搴撳瓨涓嶈冻");
+        }
+    }
+
+    private R addPakOUT(LocDto locDto){
+        ManPakOut manPakOut=new ManPakOut();
+        manPakOut.setWrkNo(locDto.getOrderNo()+"-"+System.currentTimeMillis());
+        manPakOut.setWrkSts((long)1);
+        manPakOut.setAnfme(locDto.getAnfme());
+        manPakOut.setLocNo(locDto.getLocNo());
+        manPakOut.setMatnr(locDto.getMatnr());
+        manPakOut.setMaktx(locDto.getMaktx());
+        manPakOut.setDocNum(locDto.getOrderNo());
+        manPakOut.setCount(0.0);
+        manPakOut.setStatus(0);
+        manPakOut.setCreateTime(new Date());
+        manPakOut.setBatch(locDto.getBatch());
+        manPakOut.setUpdateTime(new Date());
+        manPakOut.setUuid(UUID.randomUUID().toString());
+
+        manPakOut.setContainerCode(locDto.getContainerCode());
+        manPakOut.setCsocode(locDto.getCsocode());
+        manPakOut.setIsoseq(locDto.getIsoseq());
+
+        ManPakOut manPakOutExist = manPakOutService.selectOne(new EntityWrapper<ManPakOut>().eq("doc_num", locDto.getOrderNo()));
+        if (Cools.isEmpty(manPakOutExist)){
+            manPakOut.setName(locDto.getMaktx());
+        }else{
+            manPakOut.setUuid(manPakOutExist.getUuid());
+        }
+        try{
+            if (!manPakOutService.insert(manPakOut)){
+                return R.error("娣诲姞鎷h揣鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
+            }
+        }catch (Exception e){
+            return R.error("娣诲姞鎷h揣鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
+        }
+        return R.ok();
+
+    }
+
+    /*
     璁㈠崟棰勬牎楠�  ===>> 1.璁㈠崟鐘舵�侊紱 2.璁㈠崟甯﹀嚭鏁伴噺
      */
     private List<OrderDto> orderPreVerification(List<LocDto> locDtos){
diff --git a/src/main/java/com/zy/asrs/entity/ManLocDetlTemp.java b/src/main/java/com/zy/asrs/entity/ManLocDetlTemp.java
new file mode 100644
index 0000000..6a99e9e
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/ManLocDetlTemp.java
@@ -0,0 +1,346 @@
+package com.zy.asrs.entity;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.core.common.Cools;
+import com.core.common.SpringUtils;
+import com.zy.system.entity.Host;
+import com.zy.system.entity.User;
+import com.zy.system.service.HostService;
+import com.zy.system.service.UserService;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Data
+@TableName("man_loc_detl_temp")
+public class ManLocDetlTemp implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 鎵�灞為」鐩�
+     */
+    @ApiModelProperty(value= "鎵�灞為」鐩�")
+    @TableField("host_id")
+    private Long hostId;
+
+    /**
+     * 璐т綅缂栧彿
+     */
+    @ApiModelProperty(value= "璐т綅缂栧彿")
+    @TableField("loc_no")
+    private String locNo;
+
+    /**
+     * 鎵�灞炶揣浣�
+     */
+    @ApiModelProperty(value= "鎵�灞炶揣浣�")
+    @TableField("node_id")
+    private Long nodeId;
+
+    /**
+     * 鎵樼洏鐮�
+     */
+    @ApiModelProperty(value= "鎵樼洏鐮�")
+    private String zpallet;
+
+    /**
+     * 搴撳瓨浣欓噺
+     */
+    @ApiModelProperty(value= "搴撳瓨浣欓噺")
+    @ExcelProperty(value = "搴撳瓨鎬婚噺")
+    private Double anfme;
+
+    /**
+     * 鍟嗗搧缂栧彿
+     */
+    @ApiModelProperty(value= "鍟嗗搧缂栧彿")
+    @TableId(value = "matnr", type = IdType.INPUT)
+    @ExcelProperty(value = "鍟嗗搧缂栧彿")
+    private String matnr;
+
+    /**
+     * 鍟嗗搧鍚嶇О
+     */
+    @ApiModelProperty(value= "鍟嗗搧鍚嶇О")
+    @ExcelProperty(value = "鍟嗗搧鍚嶇О")
+    private String maktx;
+
+    /**
+     * 鍚嶇О
+     */
+    @ApiModelProperty(value= "鍚嶇О")
+    private String name;
+
+    /**
+     * 瑙勬牸
+     */
+    @ApiModelProperty(value= "瑙勬牸")
+    @ExcelProperty(value = "瑙勬牸")
+    private String specs;
+
+    /**
+     * 鍨嬪彿
+     */
+    @ApiModelProperty(value= "鍨嬪彿")
+    private String model;
+
+    /**
+     * 鎵瑰彿
+     */
+    @ApiModelProperty(value= "鎵瑰彿")
+    @TableId(value = "batch", type = IdType.INPUT)
+    private String batch;
+
+    /**
+     * 鍗曚綅
+     */
+    @ApiModelProperty(value= "鍗曚綅")
+    @ExcelProperty(value = "鍗曚綅")
+    private String unit;
+
+    /**
+     * SKC
+     */
+    @ApiModelProperty(value= "SKC")
+    @ExcelProperty(value = "SKC")
+    private String barcode;
+
+    /**
+     * 鍗曟嵁绫诲瀷
+     */
+    @ApiModelProperty(value= "鍗曟嵁绫诲瀷")
+    @TableField("doc_id")
+    private Long docId;
+
+    /**
+     * 鍗曟嵁缂栧彿
+     */
+    @ApiModelProperty(value= "鍗曟嵁缂栧彿")
+    @TableField("doc_num")
+    private String docNum;
+
+    /**
+     * 瀹㈡埛鍚嶇О
+     */
+    @ApiModelProperty(value= "瀹㈡埛鍚嶇О")
+    @TableField("cust_name")
+    private String custName;
+
+    /**
+     * 鍝侀」鏁�
+     */
+    @ApiModelProperty(value= "鍝侀」鏁�")
+    @TableField("item_num")
+    private Integer itemNum;
+
+    /**
+     * 鏁伴噺
+     */
+    @ApiModelProperty(value= "鏁伴噺")
+    private Integer count;
+
+
+    /**
+     * 鍗曚环
+     */
+    @ApiModelProperty(value= "鍗曚环")
+    private Double price;
+
+    /**
+     * 閲嶉噺
+     */
+    @ApiModelProperty(value= "閲嶉噺")
+    private Double weight;
+
+    /**
+     * 鐘舵�� 1: 姝e父  0: 绂佺敤
+     */
+    @ApiModelProperty(value= "鐘舵�� 1: 姝e父  0: 绂佺敤  ")
+    private Integer status;
+
+    /**
+     * 娣诲姞浜哄憳
+     */
+    @ApiModelProperty(value= "娣诲姞浜哄憳")
+    @TableField("create_by")
+    private Long createBy;
+
+    /**
+     * 娣诲姞鏃堕棿
+     */
+    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @ApiModelProperty(value= "淇敼浜哄憳")
+    @TableField("update_by")
+    private Long updateBy;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @TableField("modi_time")
+    private Date modiTime;
+
+    /**
+     * 澶囨敞
+     */
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    /**
+     * 鎷ユ湁鑰�
+     */
+    @ApiModelProperty(value= "鎷ユ湁鑰� 1: 鏉板厠   ")
+    private Integer owner;
+
+    /**
+     * 璐х墿褰㈡��:0锛氫唬閲囥��1锛氫粨鍌�
+     */
+    @ApiModelProperty(value= "璐х墿褰㈡��:0锛氫唬閲囥��1锛氫粨鍌�")
+    private Integer payment;
+
+    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @TableField("real_anfme")
+    private Date realAnfme;
+
+    @ApiModelProperty(value= "璁㈠崟鍙�")
+    @TableField("order_no")
+    private String orderNo;
+
+    @TableField("container_code")
+    private String containerCode;
+
+    private String csocode;
+
+    private String isoseq;
+
+//    LocDetl locDetl = new LocDetl(
+//            null,    // 璐т綅缂栧彿[闈炵┖]
+//            null,    // 鎵�灞炶揣浣�
+//            null,    // 鎵樼洏鐮�
+//            null,    // 搴撳瓨浣欓噺[闈炵┖]
+//            null,    // 鍟嗗搧缂栧彿[闈炵┖]
+//            null,    // 鍟嗗搧鍚嶇О
+//            null,    // 鍚嶇О
+//            null,    // 瑙勬牸
+//            null,    // 鍨嬪彿
+//            null,    // 鎵瑰彿
+//            null,    // 鍗曚綅
+//            null,    // SKC
+//            null,    // 鍗曟嵁绫诲瀷
+//            null,    // 鍗曟嵁缂栧彿
+//            null,    // 瀹㈡埛鍚嶇О
+//            null,    // 鍝侀」鏁�
+//            null,    // 鏁伴噺
+//            null,    // 閲嶉噺
+//            null,    // 鐘舵��
+//            null,    // 娣诲姞浜哄憳
+//            null,    // 娣诲姞鏃堕棿
+//            null,    // 淇敼浜哄憳
+//            null,    // 淇敼鏃堕棿
+//            null    // 澶囨敞
+//    );
+
+//    public String getOwner$(){
+//        LocOwnerService service = SpringUtils.getBean(LocOwnerService.class);
+//        LocOwner locOwner = service.selectById(this.owner);
+//        if (!Cools.isEmpty(locOwner)){
+//            return String.valueOf(locOwner.getOwner());
+//        }
+//        return null;
+//    }
+
+    public String getPayment$(){
+        if (null == this.payment){ return null; }
+        switch (this.payment){
+            case 1:
+                return "浠撳偍";
+            case 0:
+                return "浠i噰";
+            default:
+                return String.valueOf(this.payment);
+        }
+    }
+
+    public String getHostId$(){
+        HostService service = SpringUtils.getBean(HostService.class);
+        Host host = service.selectById(this.hostId);
+        if (!Cools.isEmpty(host)){
+            return String.valueOf(host.getName());
+        }
+        return null;
+    }
+
+    public Long getNodeId() {
+        return nodeId;
+    }
+
+//    public String getNodeId$(){
+//        NodeService service = SpringUtils.getBean(NodeService.class);
+//        Node node = service.selectById(this.nodeId);
+//        if (!Cools.isEmpty(node)){
+//            return String.valueOf(node.getName());
+//        }
+//        return null;
+//    }
+
+    public String getStatus$(){
+        if (null == this.status){ return null; }
+        switch (this.status){
+            case 1:
+                return "姝e父";
+            case 0:
+                return "绂佺敤";
+            default:
+                return String.valueOf(this.status);
+        }
+    }
+
+    public String getCreateBy$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.createBy);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        return null;
+    }
+
+    public String getCreateTime$(){
+        if (Cools.isEmpty(this.createTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+    }
+
+    public String getUpdateBy$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.selectById(this.updateBy);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        return null;
+    }
+
+    public String getModiTime$(){
+        if (Cools.isEmpty(this.modiTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
+    }
+
+
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/ManPakOut.java b/src/main/java/com/zy/asrs/entity/ManPakOut.java
new file mode 100644
index 0000000..7afe93d
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/ManPakOut.java
@@ -0,0 +1,280 @@
+package com.zy.asrs.entity;
+
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.annotations.TableId;
+import com.baomidou.mybatisplus.annotations.TableName;
+import com.baomidou.mybatisplus.enums.IdType;
+import com.core.common.Cools;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Data
+@TableName("man_pakout")
+public class ManPakOut {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 浠诲姟鍙�
+     */
+    @ApiModelProperty(value= "浠诲姟鍙�")
+    @TableId(value = "wrk_no", type = IdType.INPUT)
+    @TableField("wrk_no")
+    private String wrkNo;
+
+    /**
+     * 宸ヤ綔鐘舵��
+     */
+    @ApiModelProperty(value= "宸ヤ綔鐘舵��")
+    @TableField("wrk_sts")
+    private Long wrkSts;
+
+    /**
+     * 鎵樼洏鍙�
+     */
+    @ApiModelProperty(value= "鎵樼洏鍙�")
+    private String zpallet;
+
+    /**
+     * 鍑哄簱鏁伴噺
+     */
+    @ApiModelProperty(value= "鍑哄簱鏁伴噺")
+    private Double anfme;
+
+    /**
+     * 鍏宠仈璐т綅
+     */
+    @ApiModelProperty(value= "鍏宠仈璐т綅")
+    @TableField("node_id")
+    private Long nodeId;
+
+    /**
+     * 璐т綅
+     */
+    @ApiModelProperty(value= "璐т綅")
+    @TableField("loc_no")
+    private String locNo;
+
+    /**
+     * 鍟嗗搧缂栫爜
+     */
+    @ApiModelProperty(value= "鍟嗗搧缂栫爜")
+    private String matnr;
+
+    /**
+     * 鍟嗗搧鍚嶇О
+     */
+    @ApiModelProperty(value= "鍟嗗搧鍚嶇О")
+    private String maktx;
+
+    /**
+     * 鍚嶇О
+     */
+    @ApiModelProperty(value= "鍚嶇О")
+    private String name;
+
+    /**
+     * 瑙勬牸
+     */
+    @ApiModelProperty(value= "瑙勬牸")
+    private String specs;
+
+    /**
+     * 鍨嬪彿
+     */
+    @ApiModelProperty(value= "鍨嬪彿")
+    private String model;
+
+    /**
+     * 鎵瑰彿
+     */
+    @ApiModelProperty(value= "鎵瑰彿")
+    private String batch;
+
+    /**
+     * 鍗曚綅
+     */
+    @ApiModelProperty(value= "鍗曚綅")
+    private String unit;
+
+    /**
+     * 璐х墿鏉$爜
+     */
+    @ApiModelProperty(value= "璐х墿鏉$爜")
+    private String barcode;
+
+    /**
+     * 鍗曟嵁绫诲瀷
+     */
+    @ApiModelProperty(value= "鍗曟嵁绫诲瀷")
+    @TableField("doc_id")
+    private Long docId;
+
+    /**
+     * 鍗曟嵁缂栧彿
+     */
+    @ApiModelProperty(value= "鍗曟嵁缂栧彿")
+    @TableField("doc_num")
+    private String docNum;
+
+    /**
+     * 瀹㈡埛鍚嶇О
+     */
+    @ApiModelProperty(value= "瀹㈡埛鍚嶇О")
+    @TableField("cust_name")
+    private String custName;
+
+    /**
+     * 鍝侀」鏁�
+     */
+    @ApiModelProperty(value= "鍝侀」鏁�")
+    @TableField("item_num")
+    private Integer itemNum;
+
+    /**
+     * 鏁伴噺
+     */
+    @ApiModelProperty(value= "鏁伴噺")
+    private Double count;
+
+    /**
+     * 閲嶉噺
+     */
+    @ApiModelProperty(value= "閲嶉噺")
+    private Double weight;
+
+    /**
+     * 鐘舵�� 1: 姝e父  0: 绂佺敤
+     */
+    @ApiModelProperty(value= "鐘舵�� 1: 姝e父  0: 绂佺敤  ")
+    private Integer status;
+
+    /**
+     * 娣诲姞浜哄憳
+     */
+    @ApiModelProperty(value= "娣诲姞浜哄憳")
+    @TableField("create_by")
+    private Long createBy;
+
+    /**
+     * 娣诲姞鏃堕棿
+     */
+    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @TableField("create_time")
+    private Date createTime;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @ApiModelProperty(value= "淇敼浜哄憳")
+    @TableField("update_by")
+    private Long updateBy;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @TableField("update_time")
+    private Date updateTime;
+
+    /**
+     * 澶囨敞
+     */
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    /**
+     * 鎷ユ湁鑰�
+     */
+    @ApiModelProperty(value= "鎷ユ湁鑰� 1: 鏉板厠   ")
+    private Integer owner;
+
+    /**
+     * 璐х墿褰㈡��:0锛氫唬閲囥��1锛氫粨鍌�
+     */
+    @ApiModelProperty(value= "璐х墿褰㈡��:0锛氫唬閲囥��1锛氫粨鍌�")
+    private Integer payment;
+
+    /**
+     * uuid鏃堕棿鎴�
+     */
+    @ApiModelProperty(value= "uuid")
+    @TableId(value = "uuid", type = IdType.ID_WORKER_STR)
+    @TableField("uuid")
+    private String uuid;
+
+    //鏂欑鐮�
+    private String containerCode;
+    //閿�鍞鍗曞彿
+    private String csocode;
+    //閿�鍞鍗曡鍙�
+    private String isoseq;
+
+//    public String getOwner$(){
+//        LocOwnerService service = SpringUtils.getBean(LocOwnerService.class);
+//        LocOwner locOwner = service.selectById(this.owner);
+//        if (!Cools.isEmpty(locOwner)){
+//            return String.valueOf(locOwner.getOwner());
+//        }
+//        return null;
+//    }
+
+    public String getPayment$(){
+        if (null == this.payment){ return null; }
+        switch (this.payment){
+            case 1:
+                return "宸插嚭搴�";
+            case 0:
+                return "鏈嚭搴�";
+            case 8:
+                return "鏈畬鍏ㄥ嚭搴�";
+            case 9:
+                return "鍏ㄩ儴瀹屾垚鍑哄簱";
+            default:
+                return String.valueOf(this.payment);
+        }
+//        switch (this.payment){
+//            case 1:
+//                return "浠撳偍";
+//            case 0:
+//                return "浠i噰";
+//            default:
+//                return String.valueOf(this.payment);
+//        }
+    }
+
+    public String getStatus$(){
+        if (null == this.status){ return null; }
+        switch (this.status){
+            case 1:
+                return "宸插嚭搴�";
+            case 0:
+                return "鏈嚭搴�";
+            case 8:
+                return "鏈畬鍏ㄥ嚭搴�";
+            case 9:
+                return "鍏ㄩ儴瀹屾垚鍑哄簱";
+            default:
+                return String.valueOf(this.status);
+        }
+    }
+
+    public String getCreateTime$(){
+        if (Cools.isEmpty(this.createTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+    }
+
+    public String getUpdateTime$(){
+        if (Cools.isEmpty(this.updateTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+    }
+
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/param/NodePakoutParam.java b/src/main/java/com/zy/asrs/entity/param/NodePakoutParam.java
new file mode 100644
index 0000000..d1facae
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/NodePakoutParam.java
@@ -0,0 +1,17 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+@Data
+public class NodePakoutParam {
+    private String orderNo;
+    private String containerCode;
+    private Double anfme;
+    private String locNo;
+    private String matnr;
+    //閿�鍞鍗曞彿
+    private String csocode;
+    //閿�鍞鍗曡鍙�
+    private String isoseq;
+    private String wrkNo;
+}
diff --git a/src/main/java/com/zy/asrs/mapper/ManLocDetlTempMapper.java b/src/main/java/com/zy/asrs/mapper/ManLocDetlTempMapper.java
new file mode 100644
index 0000000..96b05de
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/ManLocDetlTempMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.ManLocDetlTemp;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface ManLocDetlTempMapper extends BaseMapper<ManLocDetlTemp> {
+
+}
diff --git a/src/main/java/com/zy/asrs/mapper/ManPakOutMapper.java b/src/main/java/com/zy/asrs/mapper/ManPakOutMapper.java
new file mode 100644
index 0000000..2a7f7f4
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/ManPakOutMapper.java
@@ -0,0 +1,21 @@
+package com.zy.asrs.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.ManPakOut;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
+import org.apache.ibatis.annotations.Update;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface ManPakOutMapper extends BaseMapper<ManPakOut> {
+
+    @Update("UPDATE man_pakout SET payment = ${status} WHERE doc_num = '${orderNo}' AND name IS NOT NULL")
+    void updateAllStatus(@Param("orderNo")String orderNo, @Param("status")int status);
+
+    @Select("SELECT * FROM man_pakout WHERE doc_num = '${orderNo}' AND name IS NOT NULL")
+    ManPakOut selectByOrderWithName(@Param("orderNo")String orderNo);
+
+}
diff --git a/src/main/java/com/zy/asrs/service/AgvLocDetlService.java b/src/main/java/com/zy/asrs/service/AgvLocDetlService.java
index 301da48..6c7550f 100644
--- a/src/main/java/com/zy/asrs/service/AgvLocDetlService.java
+++ b/src/main/java/com/zy/asrs/service/AgvLocDetlService.java
@@ -23,4 +23,9 @@
 
     List<AgvLocDetl> searchByLike(String orderNo, String matnr, String maktx, String specs, String locNo);
 
+    /**
+     * 淇敼搴撳瓨鏄庣粏鏁伴噺锛屽鏋滄暟閲忎负0锛屽垯鍒犻櫎璁板綍
+     */
+    boolean updateAnfme(Double anfme, String locNo, String matnr, String batch);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/AgvWorkService.java b/src/main/java/com/zy/asrs/service/AgvWorkService.java
index 3379e72..cdc2396 100644
--- a/src/main/java/com/zy/asrs/service/AgvWorkService.java
+++ b/src/main/java/com/zy/asrs/service/AgvWorkService.java
@@ -3,6 +3,7 @@
 import com.zy.asrs.entity.AgvBasDevp;
 import com.zy.asrs.entity.AgvWrkMast;
 import com.zy.asrs.entity.param.EmptyPlateOutParam;
+import com.zy.asrs.entity.param.LocDetlAdjustParam;
 import com.zy.asrs.entity.param.StockOutParam;
 import com.zy.common.model.StartupDto;
 import com.zy.common.model.TaskDto;
@@ -43,4 +44,9 @@
 
     void emptyPlateOut(EmptyPlateOutParam param, Long userId);
 
+    /**
+     * 搴撳瓨鏄庣粏璋冩暣
+     */
+    void adjustLocDetl(LocDetlAdjustParam param, Long userId);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/ManLocDetlService.java b/src/main/java/com/zy/asrs/service/ManLocDetlService.java
index 2cbf39f..ba601f3 100644
--- a/src/main/java/com/zy/asrs/service/ManLocDetlService.java
+++ b/src/main/java/com/zy/asrs/service/ManLocDetlService.java
@@ -5,6 +5,7 @@
 import com.zy.asrs.entity.ManLocDetl;
 import com.zy.asrs.entity.param.LocDetlAdjustParam;
 import com.zy.asrs.entity.result.StockVo;
+import com.zy.common.model.LocDto;
 import com.zy.system.entity.User;
 
 import java.util.List;
@@ -69,4 +70,6 @@
 
     int increase(Double anfme,String locNo, String matnr,String batch,Double weight);
 
+    double queryStockAndSetLocDto(String matnr, String batch, String orderNo, List<LocDto> locDtoList, double issued, String csocode, String isoseq);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/ManLocDetlTempService.java b/src/main/java/com/zy/asrs/service/ManLocDetlTempService.java
new file mode 100644
index 0000000..4cbfb60
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/ManLocDetlTempService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.ManLocDetlTemp;
+
+public interface ManLocDetlTempService extends IService<ManLocDetlTemp> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/ManPakOutService.java b/src/main/java/com/zy/asrs/service/ManPakOutService.java
new file mode 100644
index 0000000..cfbfcc6
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/ManPakOutService.java
@@ -0,0 +1,11 @@
+package com.zy.asrs.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.ManPakOut;
+
+public interface ManPakOutService extends IService<ManPakOut> {
+    void updateAllStatus(String orderNo,int status);
+
+    ManPakOut selectByOrderWithName(String orderNo);
+
+}
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index a5e1182..72e8cd3 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -2,6 +2,7 @@
 
 import com.zy.asrs.entity.param.CombParam;
 import com.zy.asrs.entity.param.MobileAdjustParam;
+import com.zy.asrs.entity.param.NodePakoutParam;
 import com.zy.system.entity.User;
 
 public interface MobileService {
@@ -19,4 +20,6 @@
     void packComb(CombParam param, Long userId);
 
     void nodePutway(String zpallet, String locNo, User user);
+
+    void nodePakout(NodePakoutParam param, User user);
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java
index c55a5d6..bf76e41 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvLocDetlServiceImpl.java
@@ -52,17 +52,6 @@
         wapperSetCondition(wrapper,"three_code",csocode);
         wapperSetCondition(wrapper,"dead_time",isoseq);
 
-//        if(Cools.isEmpty(batch)){
-//            wrapper.isNull("batch");
-//        }else {
-//            wrapper.eq("batch",batch);
-//        }
-//        if(!Cools.isEmpty(csocode)){
-//            wrapper.eq("three_code",csocode);
-//        }
-//        if(Cools.isEmpty(isoseq)){
-//            wrapper.eq("dead_time",isoseq);
-//        }
         List<AgvLocDetl> agvLocDetls = this.selectList(wrapper);
 
         for (AgvLocDetl agvLocDetl: agvLocDetls) {
@@ -78,7 +67,9 @@
                 //int ioType = anfme > issued ? 101 : 103;
                 anfme = anfme > issued ? issued : anfme;
                 LocDto locDto = new LocDto(agvLocDetl.getLocNo(), agvLocDetl.getMatnr(), agvLocDetl.getMaktx(), agvLocDetl.getBatch(), orderNo, anfme);
-
+                locDto.setCsocode(csocode);
+                locDto.setIsoseq(isoseq);
+                locDto.setContainerCode(agvLocDetl.getZpallet());
                 //褰撳墠搴撲綅鎵�澶勬ゼ灞�
                 int floor = Integer.parseInt(agvLocDetl.getLocNo().split("@")[1]);
                 locDto.setAgvStaNos(queryAgvStaNosByFloor(floor));
@@ -139,6 +130,17 @@
         return this.selectList(wrapper);
     }
 
+    public boolean updateAnfme(Double anfme, String locNo, String matnr, String batch) {
+        if (anfme <= 0) {
+            return this.delete(new EntityWrapper<AgvLocDetl>().eq("matnr", matnr).eq("loc_no", locNo));
+        } else {
+            AgvLocDetl agvLocDetl = this.selectOne(new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo).eq("matnr", matnr));
+            agvLocDetl.setAnfme(anfme);
+            return this.update(agvLocDetl,new EntityWrapper<AgvLocDetl>().eq("loc_no", locNo).eq("matnr", matnr));
+            //return baseMapper.updateAnfme(anfme, locNo, matnr, batch) > 0;
+        }
+    }
+
     private List<String> queryAgvStaNosByFloor(int floor){
         List<String> agvStaNos = new ArrayList<>();
         if(floor == 1){
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
index 75991c2..e7b35ac 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -6,6 +6,7 @@
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.EmptyPlateOutParam;
+import com.zy.asrs.entity.param.LocDetlAdjustParam;
 import com.zy.asrs.entity.param.StockOutParam;
 import com.zy.asrs.service.*;
 import com.zy.common.model.LocDto;
@@ -21,7 +22,9 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
+import java.util.Iterator;
 import java.util.List;
+import java.util.UUID;
 
 /**
  * Created by vincent on 2020/6/11
@@ -55,6 +58,8 @@
     private OrderService orderService;
     @Autowired
     private OrderDetlService orderDetlService;
+    @Autowired
+    private AdjDetlService adjDetlService;
 
 
     /*
@@ -296,6 +301,140 @@
         });
     }
 
+    @Transactional
+    public void adjustLocDetl(LocDetlAdjustParam param, Long userId) {
+        param.integrate();
+        AgvLocMast locMast = agvLocMastService.selectById(param.getLocNo());
+        if (Cools.isEmpty(locMast)) {
+            throw new CoolException("搴撲綅涓嶅瓨鍦�");
+        }
+        if (!(locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D") || locMast.getLocSts().equals("O"))) {
+            throw new CoolException("褰撳墠搴撲綅涓嶅彲璋冩暣锛佸簱浣嶇姸鎬侊細" + locMast.getLocSts$());
+        }
+
+        Date now = new Date();
+        List<AgvLocDetl> locDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", param.getLocNo()));
+
+        List<LocDetlAdjustParam.LocDetlAdjust> list = param.getList();
+
+        // 淇敼鏁伴噺
+        Iterator<AgvLocDetl> iterator = locDetls.iterator();
+        while (iterator.hasNext()) {
+            AgvLocDetl locDetl = iterator.next();
+
+            Iterator<LocDetlAdjustParam.LocDetlAdjust> iterator1 = list.iterator();
+            while (iterator1.hasNext()) {
+                LocDetlAdjustParam.LocDetlAdjust adjust = iterator1.next();
+                if (adjust.getCount() == 0) { continue; }
+                if (locDetl.getMatnr().equals(adjust.getMatnr()) && Cools.eq(locDetl.getBatch(), adjust.getBatch())) {
+                    if (!locDetl.getAnfme().equals(adjust.getCount())) {
+                        // todo 鐩樼偣璁板綍
+                        // 淇敼搴撳瓨
+                        if (!agvLocDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) {
+                            throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佷慨鏀规暟閲忓け璐�");
+                        }
+                        // 淇濆瓨璋冩暣璁板綍
+                        AdjDetl adjDetl = new AdjDetl();
+                        adjDetl.setLocNo(locDetl.getLocNo());
+                        adjDetl.setMatnr(locDetl.getMatnr());
+                        adjDetl.setBatch(locDetl.getBatch());
+                        adjDetl.setOriQty(locDetl.getAnfme());
+                        adjDetl.setAdjQty(adjust.getCount());
+                        adjDetl.setModiTime(now);
+                        adjDetl.setModiUser(userId);
+                        adjDetl.setAppeTime(now);
+                        adjDetl.setAppeUser(userId);
+
+                        UUID uuid = UUID.randomUUID();
+                        adjDetl.setOrderNo(uuid.toString());
+                        adjDetl.setCsocode(locDetl.getThreeCode());
+                        adjDetl.setIsoseq(locDetl.getDeadTime());
+
+                        adjDetlService.save(adjDetl, userId);
+                    }
+                    iterator.remove();
+                    iterator1.remove();
+                }
+            }
+        }
+
+        // 鍒犻櫎搴撳瓨
+        for (AgvLocDetl locDetl : locDetls) {
+            // todo 鐩樼偣璁板綍
+            if (!agvLocDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) {
+                throw new CoolException("鍒犻櫎" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�");
+            }
+            // 淇濆瓨璋冩暣璁板綍
+            AdjDetl adjDetl = new AdjDetl();
+            adjDetl.setLocNo(locDetl.getLocNo());
+            adjDetl.setMatnr(locDetl.getMatnr());
+            adjDetl.setBatch(locDetl.getBatch());
+            adjDetl.setOriQty(locDetl.getAnfme());
+            adjDetl.setAdjQty(0.0D);
+            adjDetl.setModiTime(now);
+            adjDetl.setModiUser(userId);
+            adjDetl.setAppeTime(now);
+            adjDetl.setAppeUser(userId);
+
+            adjDetlService.save(adjDetl, userId);
+        }
+
+        // 娣诲姞搴撳瓨
+        for (LocDetlAdjustParam.LocDetlAdjust adjust : list) {
+            if (adjust.getCount() == 0.0D) { continue; }
+            Mat mat = matService.selectByMatnr(adjust.getMatnr());
+            AgvLocDetl locDetl = new AgvLocDetl();
+            locDetl.sync(mat);
+            locDetl.setBatch(adjust.getBatch());
+            locDetl.setLocNo(locMast.getLocNo());
+            locDetl.setAnfme(adjust.getCount()); // 鏁伴噺
+            locDetl.setModiUser(userId); // 鎿嶄綔浜哄憳淇℃伅
+            locDetl.setModiTime(now);
+            locDetl.setAppeUser(userId);
+            locDetl.setAppeTime(now);
+            locDetl.setThreeCode(adjust.getThreeCode());
+            locDetl.setDeadTime(adjust.getDeadTime());
+            if (!agvLocDetlService.insert(locDetl)) {
+                throw new CoolException("娣诲姞" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�");
+            }
+            // 淇濆瓨璋冩暣璁板綍
+            AdjDetl adjDetl = new AdjDetl();
+            adjDetl.setLocNo(locMast.getLocNo());
+            adjDetl.setMatnr(adjust.getMatnr());
+            adjDetl.setBatch(adjust.getBatch());
+            adjDetl.setOriQty(0.0D);
+            adjDetl.setAdjQty(adjust.getCount());
+            adjDetl.setModiTime(now);
+            adjDetl.setModiUser(userId);
+            adjDetl.setAppeTime(now);
+            adjDetl.setAppeUser(userId);
+
+            UUID uuid = UUID.randomUUID();
+            adjDetl.setOrderNo(uuid.toString());
+            adjDetl.setCsocode(locDetl.getThreeCode());
+            adjDetl.setIsoseq(locDetl.getDeadTime());
+
+            adjDetlService.save(adjDetl, userId);
+        }
+        // 淇敼搴撲綅鐘舵��
+        int count = agvLocDetlService.selectCount(new EntityWrapper<AgvLocDetl>().eq("loc_no", locMast.getLocNo()));
+        if (locMast.getLocSts().equals("F")) {
+            if (count == 0) {
+                locMast.setLocSts("D");
+            }
+        }
+        if (locMast.getLocSts().equals("D") || locMast.getLocSts().equals("O")) {
+            if (count > 0) {
+                locMast.setLocSts("F");
+            }
+        }
+        locMast.setModiUser(userId);
+        locMast.setModiTime(new Date());
+        if (!agvLocMastService.updateById(locMast)) {
+            throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�");
+        }
+    }
+
     /*
     鏇存柊鐩爣搴撲綅淇℃伅
      */
diff --git a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
index 8ceecf8..a6f231a 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
@@ -125,6 +125,9 @@
                 LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderNo, anfme);
                 List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), ioType);
                 locDto.setStaNos(staNos);
+                locDto.setCsocode(csocode);
+                locDto.setIsoseq(isoseq);
+                locDto.setContainerCode(locDetl.getSuppCode());
                 locDtoList.add(locDto);
                 // 鍓╀綑寰呭嚭鏁伴噺閫掑噺
                 issued = issued - locDetl.getAnfme();
diff --git a/src/main/java/com/zy/asrs/service/impl/ManLocDetTemplServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/ManLocDetTemplServiceImpl.java
new file mode 100644
index 0000000..e54e13d
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/ManLocDetTemplServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.entity.ManLocDetlTemp;
+import com.zy.asrs.mapper.ManLocDetlTempMapper;
+import com.zy.asrs.service.ManLocDetlTempService;
+import org.springframework.stereotype.Service;
+
+@Service("manLocDetlTempService")
+public class ManLocDetTemplServiceImpl extends ServiceImpl<ManLocDetlTempMapper, ManLocDetlTemp> implements ManLocDetlTempService {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java
index c9af0a1..01ada7a 100644
--- a/src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/ManLocDetlServiceImpl.java
@@ -1,8 +1,10 @@
 package com.zy.asrs.service.impl;
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.core.common.Cools;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.ManLocDetl;
 import com.zy.asrs.entity.Mat;
@@ -15,15 +17,13 @@
 import com.zy.asrs.service.NodeService;
 import com.zy.asrs.service.WaitPakinService;
 import com.zy.asrs.utils.SaasUtils;
+import com.zy.common.model.LocDto;
 import com.zy.system.entity.User;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 
 @Service("manLocDetlService")
 public class ManLocDetlServiceImpl extends ServiceImpl<ManLocDetlMapper, ManLocDetl> implements ManLocDetlService {
@@ -200,4 +200,40 @@
         return baseMapper.increase(anfme,locNo,matnr,batch,weight);
     }
 
+    public double queryStockAndSetLocDto(String matnr, String batch, String orderNo, List<LocDto> locDtoList, double issued, String csocode, String isoseq) {
+        Wrapper<ManLocDetl> wrapper = new EntityWrapper<ManLocDetl>().eq("matnr", matnr).orderBy("modi_time");
+        wrapper.eq("status",1);
+        wapperSetCondition(wrapper,"batch",batch);
+        wapperSetCondition(wrapper,"csocode",csocode);
+        wapperSetCondition(wrapper,"isoseq",isoseq);
+
+        List<ManLocDetl> manLocDetls = this.selectList(wrapper);
+        for (ManLocDetl manLocDetl : manLocDetls){
+            if(issued > 0) {
+                double anfme = manLocDetl.getAnfme();
+                anfme = anfme > issued ? issued : anfme;
+                LocDto locDto = new LocDto(manLocDetl.getLocNo(), manLocDetl.getMatnr(), manLocDetl.getMaktx(), manLocDetl.getBatch(), orderNo, anfme);
+                locDto.setCsocode(csocode);
+                locDto.setIsoseq(isoseq);
+                locDto.setContainerCode(manLocDetl.getContainerCode());
+                List<String> stationList = new ArrayList<>();
+                stationList.add("鏃犻渶绔欑偣");
+                locDto.setAgvStaNos(stationList);
+
+                locDtoList.add(locDto);
+                issued -= anfme;
+            }
+        }
+
+        return issued;
+    }
+
+    private void wapperSetCondition(Wrapper wrapper,String column, String condition){
+        if(Cools.isEmpty(condition)){
+            wrapper.isNull(column);
+        }else {
+            wrapper.eq(column,condition);
+        }
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/ManPakOutServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/ManPakOutServiceImpl.java
new file mode 100644
index 0000000..d0cfc70
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/ManPakOutServiceImpl.java
@@ -0,0 +1,21 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.entity.ManPakOut;
+import com.zy.asrs.mapper.ManPakOutMapper;
+import com.zy.asrs.service.ManPakOutService;
+import org.springframework.stereotype.Service;
+
+@Service("manPakOutService")
+public class ManPakOutServiceImpl extends ServiceImpl<ManPakOutMapper, ManPakOut> implements ManPakOutService {
+
+
+    public void updateAllStatus(String orderNo, int status) {
+        this.baseMapper.updateAllStatus(orderNo,status);
+    }
+
+    @Override
+    public ManPakOut selectByOrderWithName(String orderNo) {
+        return this.baseMapper.selectByOrderWithName(orderNo);
+    }
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index fd8233c..bb12713 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -3,20 +3,20 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.common.BaseRes;
-import com.core.common.Cools;
-import com.core.common.DateUtils;
-import com.core.common.SnowflakeIdWorker;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.core.common.*;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.CombParam;
 import com.zy.asrs.entity.param.MobileAdjustParam;
+import com.zy.asrs.entity.param.NodePakoutParam;
 import com.zy.asrs.entity.param.OpenOrderPakinParam;
 import com.zy.asrs.service.*;
 import com.zy.asrs.task.core.ReturnT;
 import com.zy.asrs.task.handler.WorkLogHandler;
 import com.zy.asrs.utils.MatUtils;
 import com.zy.asrs.utils.SaasUtils;
+import com.zy.asrs.utils.Utils;
 import com.zy.common.constant.MesConstant;
 import com.zy.common.entity.Parameter;
 import com.zy.common.model.DetlDto;
@@ -70,6 +70,10 @@
     private ManLocDetlService manLocDetlService;
     @Autowired
     private WaitPakinLogService waitPakinLogService;
+    @Autowired
+    private NodeService nodeService;
+    @Autowired
+    private ManPakOutService manPakOutService;
 
     @Override
     @Transactional
@@ -446,14 +450,18 @@
 
         //澧炲姞骞冲簱搴撳瓨
         List<WaitPakin> waitPakinList = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", zpallet));
-        waitPakinList.forEach(waitPakin -> {
 
+        if(Cools.isEmpty(waitPakinList)){
+            throw new CoolException("璇ユ墭鐩樼爜鏈粍鎵�");
+        }
+
+        waitPakinList.forEach(waitPakin -> {
             //鏂欐兂鐮�
             String containerCode = waitPakin.getSuppCode();
             //濡傛灉褰撳墠鏂欐兂鐮佸凡瀛樺湪锛屽垯淇敼璇ユ枡鎯崇殑鐗╂枡鏁伴噺
             ManLocDetl manLocDetl = manLocDetlService.selectOne(new EntityWrapper<ManLocDetl>().eq("container_code", containerCode));
             if(Cools.isEmpty(manLocDetl)){
-                saveManlocDetl(manLocDetl,waitPakin,now,locNo);
+                saveManlocDetl(waitPakin,now,locNo);
             }else{
                 if(Cools.eq(manLocDetl.getMatnr(),waitPakin.getMatnr())
                         && Cools.eq(manLocDetl.getCsocode(),waitPakin.getThreeCode())
@@ -463,7 +471,7 @@
                             .eq("loc_no",manLocDetl.getLocNo())
                             .eq("container_code",manLocDetl.getContainerCode()));
                 }else{
-                    saveManlocDetl(manLocDetl,waitPakin,now,locNo);
+                    saveManlocDetl(waitPakin,now,locNo);
                 }
             }
             //鐢熸垚骞冲簱鍏ュ嚭搴撴棩蹇�
@@ -475,18 +483,130 @@
         //鍒犻櫎鍏ュ簱閫氱煡妗�
         waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet", zpallet));
 
+        orderService.checkComplete(waitPakinList.get(0).getOrderNo());
+
+
     }
 
-    private void saveManlocDetl(ManLocDetl manLocDetl, WaitPakin waitPakin, Date now, String locNo){
-        manLocDetl = new ManLocDetl();
+    @Transactional
+    public void nodePakout(NodePakoutParam param, User user) {
+        Node node = nodeService.selectOne(new EntityWrapper<Node>().eq("name", param.getLocNo()));
+        Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", param.getOrderNo()));
+        if (Cools.isEmpty(node, order)) {
+            throw new CoolException("鍙傛暟涓虹┖");
+        }
+        //鏌ヨ褰撳墠鐗╂枡鐨勮鍗曡鎯�
+        Wrapper<OrderDetl> orderDetlWrapper = new EntityWrapper<OrderDetl>().eq("order_no", param.getOrderNo()).eq(false, "status", 1);
+        Utils.wapperSetCondition(orderDetlWrapper,"three_code",param.getCsocode());
+        Utils.wapperSetCondition(orderDetlWrapper,"dead_time",param.getIsoseq());
+        Utils.wapperSetCondition(orderDetlWrapper,"matnr",param.getMatnr());
+
+        //Utils.confirmOnlyMat(orderDetlWrapper,param.getMatnr(),param.getCsocode(),param.getIsoseq());
+        OrderDetl orderDetl = orderDetlService.selectOne(orderDetlWrapper);
+        //鏌ヨ褰撳墠鎷h揣鍗曚俊鎭�
+        Wrapper<ManPakOut> manPakOutWrapper = new EntityWrapper<ManPakOut>().eq("wrk_no", param.getWrkNo());
+        ManPakOut manPakOut = manPakOutService.selectOne(manPakOutWrapper);
+        if(Cools.isEmpty(manPakOut) || manPakOut.getStatus() == 1){
+            throw new CoolException("褰撳墠鎷h揣鐮佸凡缁忓畬鎴愭嫞璐�");
+        }
+        //鏌ヨ搴撳瓨淇℃伅
+        Wrapper<ManLocDetl> manLocDetlWrapper = new EntityWrapper<ManLocDetl>().eq("loc_no", param.getLocNo());
+        Utils.confirmOnlyMat(manLocDetlWrapper,param.getMatnr(),param.getCsocode(),param.getIsoseq());
+        ManLocDetl manLocDetl = manLocDetlService.selectOne(manLocDetlWrapper);
+
+        //鏍规嵁瀹為檯鍑哄簱鏁伴噺鎵e噺搴撳瓨
+        if(Double.doubleToLongBits(param.getAnfme()) != Double.doubleToLongBits(manPakOut.getAnfme())){
+            if(param.getAnfme() > manLocDetl.getAnfme() || (param.getAnfme() - manPakOut.getAnfme()) > (orderDetl.getAnfme() - orderDetl.getQty())){
+                throw new CoolException("鍑哄簱鏁伴噺涓嶅緱澶т簬璁㈠崟鏁伴噺鎴栬�呭簱瀛樻暟閲�");
+            }
+            //鏍规嵁瀹為檯鍑哄簱鏁伴噺鍥炲啓鎷h揣鍗�
+            manPakOut.setCount(param.getAnfme());
+            if(manPakOut.getCount() < manPakOut.getAnfme()){
+                manPakOut.setStatus(8);
+            }
+            //鏍规嵁瀹為檯鍑哄簱鏁伴噺鍥炲啓璁㈠崟璇︽儏
+            orderDetl.setQty(orderDetl.getQty() - (param.getAnfme()-manPakOut.getAnfme()));
+            orderDetlService.update(orderDetl,orderDetlWrapper);
+
+        }else {
+            manPakOut.setCount(param.getAnfme());
+            manPakOut.setStatus(1);
+        }
+
+        manPakOutService.update(manPakOut,manPakOutWrapper);
+        //妫�鏌ヨ璁㈠崟涓嬬殑鎷h揣鍗曟槸鍚﹀凡缁忓叏閮ㄥ嚭搴�
+        int status = checkManPakoutByOrder(param.getOrderNo());
+        manPakOutService.updateAllStatus(param.getOrderNo(),status);
+
+
+        //淇敼搴撳瓨
+        manLocDetl.setAnfme(manLocDetl.getAnfme()-manPakOut.getCount());
+        if (manLocDetl.getAnfme() == 0 ){
+            manLocDetlService.delete(manLocDetlWrapper);
+        }else{
+            manLocDetl.setStatus(1);
+            manLocDetlService.update(manLocDetl,manLocDetlWrapper);
+        }
+        SaasUtils.insertLog(1,manLocDetl.getLocNo(),manLocDetl.getMatnr(), manLocDetl.getAnfme(),user.getUsername());
+        manLocDetl.setStatus(1);
+        manLocDetlService.update(manLocDetl,manLocDetlWrapper);
+
+        //妫�娴嬭鍗曟槸鍚﹀畬鎴�
+        orderService.checkComplete(param.getOrderNo());
+
+
+
+    }
+
+    private void saveManlocDetl(WaitPakin waitPakin, Date now, String locNo){
+
+        Node node = nodeService.selectOne(new EntityWrapper<Node>()
+                .eq("name", locNo));
+
+        ManLocDetl manLocDetl = new ManLocDetl();
         BeanUtils.copyProperties(waitPakin,manLocDetl);
+        manLocDetl.setNodeId(node.getId());
         manLocDetl.setContainerCode(waitPakin.getSuppCode());
         manLocDetl.setCsocode(waitPakin.getThreeCode());
         manLocDetl.setIsoseq(waitPakin.getDeadTime());
         manLocDetl.setCreateTime(now);
         manLocDetl.setModiTime(now);
         manLocDetl.setLocNo(locNo);
+        manLocDetl.setStatus(1);
         manLocDetlService.insert(manLocDetl);
     }
 
+    private int checkManPakoutByOrder(String orderNo){
+        int status = 0;
+        List<ManPakOut> manPakOutList = manPakOutService.selectList(new EntityWrapper<ManPakOut>().eq("doc_num", orderNo));
+
+        for(int i=0; i<manPakOutList.size(); i++){
+            if(i == 0){
+                status = manPakOutList.get(i).getStatus();
+            }else {
+                if(manPakOutList.get(i).getStatus() != status){
+                    status = 8;
+                }
+            }
+        }
+
+        return status;
+
+
+
+    }
+
+    public static void main(String[] args) {
+        ManPakOut m = new ManPakOut();
+        m.setAnfme(1.0);
+        NodePakoutParam n = new NodePakoutParam();
+        n.setAnfme(1.0);
+
+        double a = 1.0;
+        double b = 1.0;
+        System.out.println(m.getAnfme() == n.getAnfme());
+        System.out.println(a == b);
+        System.out.println(Double.doubleToLongBits(m.getAnfme()) == Double.doubleToLongBits(n.getAnfme()));
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index cbb903c..9a03e7f 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -800,13 +800,16 @@
         //od.setAnfme(toString(odParam.get("iQuantity")));
         //琛屽彿
         //od.setBrand(odParam.get("irowno").toString());
-        od.setBrand(toString(odParam.get("irowno")));
+        //od.setBrand(toString(odParam.get("irowno")));
+        od.setManu(toString(odParam.get("irowno")));
         //閿�鍞鍗曞彿
         //od.setColor(odParam.get("csocode").toString());
-        od.setColor(toString(odParam.get("csocode")));
+        //od.setColor(toString(odParam.get("csocode")));
+        od.setThreeCode(toString(odParam.get("csocode")));
         //閿�鍞鍗曡鍙�
         //od.setOrigin(odParam.get("isoseq").toString());
-        od.setOrigin(toString(odParam.get("isoseq")));
+        //od.setOrigin(toString(odParam.get("isoseq")));
+        od.setDeadTime(toString(odParam.get("isoseq")));
 
         od.setStatus(1);
         od.setQty(0.0D);
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
index 4c492ce..0f56ff6 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderServiceImpl.java
@@ -51,6 +51,10 @@
     private ErpService erpService;
     @Autowired
     private ApiLogService apiLogService;
+    @Autowired
+    private WaitPakinService waitPakinService;
+    @Autowired
+    private ManPakOutService manPakOutService;
 
     @Value("${u8.url}")
     private String url;
@@ -96,9 +100,15 @@
             }
         }
         // 濡傛灉 浣滀笟鏁伴噺绛変簬鍗曟嵁鎬绘暟閲� && 宸ヤ綔鏄庣粏妗d腑鏃犺鍗曟嵁鐨勬暟鎹� && AGV宸ヤ綔鏄庣粏妗d腑鏃犺鍗曟嵁鐨勬暟鎹�
-        if (complete
-                && wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().like("order_no", orderNo)) < 1
-                && agvWrkDetlService.selectCount(new EntityWrapper<AgvWrkDetl>().like("order_no",orderNo)) < 1) {
+        boolean wrkDeltExist = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("order_no", orderNo)) < 1;
+        boolean agvWrkDetlExist = agvWrkDetlService.selectCount(new EntityWrapper<AgvWrkDetl>().eq("order_no",orderNo)) < 1;
+        boolean waitPakinExist = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("order_no",orderNo)) < 1;
+
+        ManPakOut manPakOut = manPakOutService.selectByOrderWithName(orderNo);
+
+        boolean manPakoutExist = Cools.isEmpty(manPakOut) || manPakOut.getPayment() == 1;
+        if (complete && wrkDeltExist && agvWrkDetlExist && waitPakinExist && manPakoutExist) {
+
             // 鍑哄簱璁㈠崟閲嶆柊鏁寸悊鏄庣粏
 //            DocType docType = docTypeService.selectById(order.getDocType());
 //            if (null != docType && docType.getPakout() == 1) {
@@ -123,7 +133,6 @@
 //                    }
 //                }
 //            }
-
             if (!this.updateSettle(order.getId(), 4L, null)) {
                 throw new CoolException("淇敼璁㈠崟銆恛rderNo = " + order.getOrderNo() + "銆戠姸鎬佷负宸插畬鎴愬け璐�");
             }
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 536e36d..fb9d3a1 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -1,6 +1,7 @@
 package com.zy.asrs.utils;
 
 import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.core.common.Arith;
 import com.core.common.Cools;
 import com.zy.common.properties.SlaveProperties;
@@ -8,7 +9,6 @@
 
 import java.text.DecimalFormat;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
@@ -385,4 +385,18 @@
         return null;
     }
 
+    public static void wapperSetCondition(Wrapper wrapper, String column, String condition){
+        if(Cools.isEmpty(condition)){
+            wrapper.isNull(column);
+        }else {
+            wrapper.eq(column,condition);
+        }
+    }
+
+    public static void confirmOnlyMat(Wrapper wrapper, String matnr, String csocode, String isoseq){
+        wapperSetCondition(wrapper,"matnr",matnr);
+        wapperSetCondition(wrapper,"csocode",csocode);
+        wapperSetCondition(wrapper,"isoseq",isoseq);
+    }
+
 }
diff --git a/src/main/java/com/zy/common/model/LocDto.java b/src/main/java/com/zy/common/model/LocDto.java
index 7a341df..5159b73 100644
--- a/src/main/java/com/zy/common/model/LocDto.java
+++ b/src/main/java/com/zy/common/model/LocDto.java
@@ -41,7 +41,7 @@
     //閿�鍞鍗曡鍙�
     private String isoseq;
 
-    //鏂欐兂鐮�
+    //鏂欑鐮�
     private String containerCode;
 
     public LocDto() {
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 264e07c..d84dd0c 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -10,8 +10,8 @@
     enabled: false
   datasource:
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-    url: jdbc:sqlserver://192.168.4.15:1433;databasename=tzskasrs
-    #url: jdbc:sqlserver://localhost:1433;databasename=tzskasrs
+    #url: jdbc:sqlserver://192.168.4.15:1433;databasename=tzskasrs
+    url: jdbc:sqlserver://localhost:1433;databasename=tzskasrs
     username: sa
     password: sa@123
   mvc:
diff --git a/src/main/resources/mapper/ManLocDetlMapper.xml b/src/main/resources/mapper/ManLocDetlMapper.xml
index 395c9db..76e1bff 100644
--- a/src/main/resources/mapper/ManLocDetlMapper.xml
+++ b/src/main/resources/mapper/ManLocDetlMapper.xml
@@ -34,6 +34,7 @@
         <result column="payment" property="payment" />
         <result column="real_anfme" property="realAnfme" />
         <result column="order_no" property="orderNo" />
+        <result column="container_code" property="containerCode" />
     </resultMap>
 
     <sql id="locDetlCondition">
diff --git a/src/main/webapp/static/js/agvPakStore/stockAdjust.js b/src/main/webapp/static/js/agvPakStore/stockAdjust.js
index 52d8db1..db7ed09 100644
--- a/src/main/webapp/static/js/agvPakStore/stockAdjust.js
+++ b/src/main/webapp/static/js/agvPakStore/stockAdjust.js
@@ -7,10 +7,16 @@
     var cols = [
         {fixed: 'left', field: 'count', title: '瀹為檯鏁伴噺', align: 'center', edit:'text', width: 120,  style:'color: blue;font-weight: bold'}
         ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
-        ,{field: 'batch', align: 'center',title: '搴忓垪鐮侊紙缂栬緫锛�', edit: true, style: 'font-weight:bold'}
+        ,{field: 'batch', align: 'center',title: '搴忓垪鐮�', edit: true, style: 'font-weight:bold'}
+        ,{field: 'threeCode', align: 'center',title: '閿�鍞鍗曞彿', edit: true, style: 'font-weight:bold'}
+        ,{field: 'deadTime', align: 'center',title: '閿�鍞鍗曡鍙�', edit: true, style: 'font-weight:bold'}
+        ,{field: 'suppCode', align: 'center',title: '鏂欑鐮�', edit: false, style: 'font-weight:bold'}
     ];
+    arrRemove(detlCols, "field", "zpallet");
     arrRemove(detlCols, "field", "anfme");
     arrRemove(detlCols, "field", "batch");
+    arrRemove(detlCols, "field", "threeCode");
+    arrRemove(detlCols, "field", "deadTime");
     cols.push.apply(cols, detlCols);
     cols.push({fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:80})
     return cols;
@@ -87,7 +93,7 @@
                 }
                 layer.confirm('纭畾璋冩暣'+currLocNo+'搴撲綅鐨勬槑缁嗗悧锛�', {shadeClose: true}, function(){
                     $.ajax({
-                        url: baseUrl+"/locDdetl/adjust/start",
+                        url: baseUrl+"/agv/locDdetl/adjust/start",
                         headers: {'token': localStorage.getItem('token')},
                         data: JSON.stringify({
                             locNo: currLocNo,
@@ -141,7 +147,7 @@
     });
 
     function init(locNo) {
-        http.post(baseUrl + "/locDetl/list/auth", {locNo: locNo,limit: 1000}, function (res) {
+        http.post(baseUrl + "/agv/locDetl/list/auth", {locNo: locNo,limit: 1000}, function (res) {
             matCodeData = [];
             matCodeData = res.data.records;
             for (var i = 0; i<matCodeData.length; i++) {
@@ -167,7 +173,7 @@
     // 搴撲綅鎻愮ず妗�
     function locTips(retrieve, locNo) {
         if (retrieve) {
-            http.post(baseUrl+"/locMast/"+locNo+"/auth", null, function (res) {
+            http.post(baseUrl+"/agv/locMast/"+locNo+"/auth", null, function (res) {
                 let data = res.data;
                 if (data != null) {
                     $(".retrieve").show();
diff --git a/src/main/webapp/static/js/manLocDetl/manLocDetl.js b/src/main/webapp/static/js/manLocDetl/manLocDetl.js
index e1d3c38..3ebc57b 100644
--- a/src/main/webapp/static/js/manLocDetl/manLocDetl.js
+++ b/src/main/webapp/static/js/manLocDetl/manLocDetl.js
@@ -2,13 +2,14 @@
 function getCol() {
     var cols = [
         {field: 'locNo', align: 'center',title: '搴撲綅鍙�'}
-        ,{field: 'suppCode', align: 'center',title: '鏂欐兂鐮�', sort:true}
+        ,{field: 'containerCode', align: 'center',title: '鏂欐兂鐮�', sort:true}
         ,{field: 'matnr', align: 'center',title: '瀛樿揣缂栫爜', sort:true}
         ,{field: 'maktx', align: 'center',title: '瀛樿揣鍚嶇О', sort:true}
         ,{field: 'docNum', align: 'center',title: '鍗曟嵁缂栧彿', hide: true}
         ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
-        ,{field: 'threeCode', align: 'center',title: '閿�鍞鍗曞彿'}
-        ,{field: 'dead_time', align: 'center',title: '閿�鍞鍗曡鍙�'}
+        ,{field: 'csocode', align: 'center',title: '閿�鍞鍗曞彿'}
+        ,{field: 'isoseq', align: 'center',title: '閿�鍞鍗曡鍙�'}
+        ,{field: 'zpallet', align: 'center',title: '鎵樼洏鐮�', hide: false}
         ,{field: 'specs', align: 'center',title: '瑙勬牸鍨嬪彿', hide: false}
         ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿', hide: false}
         ,{field: 'brand', align: 'center',title: '瀛樿揣鍒嗙被缂栫爜', hide: true}
@@ -20,39 +21,6 @@
         ,{field: 'supp', align: 'center',title: '寤烘。浜�', hide: true}
         ,{field: 'dInvCreateDatetime', align: 'center',title: '寤烘。鏃ユ湡', hide: true}
 
-        // ,{field: 'specs', align: 'center',title: '瑙勬牸'}
-        // ,{field: 'weight', align: 'center',title: '搴撲綅鎬婚噸閲�', hide: false}
-        //
-        // ,{field: 'batch', align: 'center',title: '鎵瑰彿', width: 300, sort:true, hide: true}
-        // ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
-        // ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜'}
-        // ,{field: 'model', align: 'center',title: '浠g爜', hide: true}
-        // ,{field: 'color', align: 'center',title: '棰滆壊', hide: true}
-        // ,{field: 'brand', align: 'center',title: '鍝佺墝', hide: true}
-        // ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: true}
-        // ,{field: 'price', align: 'center',title: '鍗曚环', hide: true}
-        // ,{field: 'sku', align: 'center',title: 'sku', hide: true}
-        // ,{field: 'units', align: 'center',title: '鍗曚綅閲�', hide: true}
-        // ,{field: 'barcode', align: 'center',title: '鏉$爜', hide: true}
-        // ,{field: 'origin', align: 'center',title: '浜у湴', hide: true}
-        // ,{field: 'manu', align: 'center',title: '鍘傚', hide: true}
-        // ,{field: 'manuDate', align: 'center',title: '鐢熶骇鏃ユ湡', hide: true}
-        // ,{field: 'itemNum', align: 'center',title: '鍝侀」鏁�', hide: true}
-        // ,{field: 'safeQty', align: 'center',title: '瀹夊叏搴撳瓨閲�', hide: true}
-        // ,{field: 'length', align: 'center',title: '鍗曠姣涢噸', hide: true}
-        // ,{field: 'volume', align: 'center',title: '鍗曠浣撶Н', hide: true}
-        // ,{field: 'threeCode', align: 'center',title: '绠卞瓙灏哄', hide: true}
-        // ,{field: 'supp', align: 'center',title: '渚涘簲鍟�', hide: true}
-        // ,{field: 'suppCode', align: 'center',title: '渚涘簲鍟嗙紪鐮�', hide: true}
-        // ,{field: 'beBatch$', align: 'center',title: '鏄惁鎵规', hide: true}
-        // ,{field: 'deadTime', align: 'center',title: '淇濊川鏈�', hide: true}
-        // ,{field: 'deadWarn', align: 'center',title: '棰勮澶╂暟', hide: true}
-        // ,{field: 'source$', align: 'center',title: '鍒惰喘', hide: true}
-        // ,{field: 'check$', align: 'center',title: '瑕佹眰妫�楠�', hide: true}
-        // ,{field: 'danger$', align: 'center',title: '鍗遍櫓鍝�', hide: true}
-        // ,{field: 'owner$', align: 'center',title: '璐т富', hide: false}
-        // ,{field: 'status$', align: 'center',title: '鏄庣粏閿�', hide: false}
-        // ,{field: 'payment$', align: 'center',title: '璐х墿褰㈡��', hide: false}
 
     ];
 
diff --git a/src/main/webapp/static/js/manLocDetl/manLocDetlTemp.js b/src/main/webapp/static/js/manLocDetl/manLocDetlTemp.js
new file mode 100644
index 0000000..3d2f0bf
--- /dev/null
+++ b/src/main/webapp/static/js/manLocDetl/manLocDetlTemp.js
@@ -0,0 +1,550 @@
+var pageCurr;
+function getCol() {
+    var cols = [
+        {field: 'locNo', align: 'center',title: '搴撲綅鍙�'}
+        //,{field: 'containerCode', align: 'center',title: '鏂欑鐮�', sort:true}
+        ,{field: 'matnr', align: 'center',title: '瀛樿揣缂栫爜', sort:true}
+        ,{field: 'maktx', align: 'center',title: '瀛樿揣鍚嶇О', sort:true}
+        //,{field: 'docNum', align: 'center',title: '鍗曟嵁缂栧彿', hide: true}
+        ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
+        // ,{field: 'csocode', align: 'center',title: '閿�鍞鍗曞彿'}
+        // ,{field: 'isoseq', align: 'center',title: '閿�鍞鍗曡鍙�'}
+        //,{field: 'zpallet', align: 'center',title: '鎵樼洏鐮�', hide: false}
+        ,{field: 'batch', align: 'center',title: '杞︽', hide: false}
+        ,{field: 'specs', align: 'center',title: '瑙勬牸鍨嬪彿', hide: false}
+        ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿', hide: false}
+        ,{field: 'brand', align: 'center',title: '瀛樿揣鍒嗙被缂栫爜', hide: true}
+        ,{field: 'color', align: 'center',title: '瀛樿揣鍒嗙被鍚嶇О', hide: true}
+        ,{field: 'unit', align: 'center',title: '璁¢噺鍗曚綅', hide: true}
+        ,{field: 'price', align: 'center',title: '杩涢」绋�', hide: true}
+        ,{field: 'units', align: 'center',title: '閿�椤圭◣', hide: true}
+        ,{field: 'dsDate', align: 'center',title: '鍚敤鏃ユ湡', hide: true}
+        ,{field: 'supp', align: 'center',title: '寤烘。浜�', hide: true}
+        ,{field: 'dInvCreateDatetime', align: 'center',title: '寤烘。鏃ユ湡', hide: true}
+    ];
+
+    // cols.push.apply(cols, detlCols);
+    cols.push({field: 'modiUser$', align: 'center',title: '淇敼浜哄憳',hide: true}
+        ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿'}
+    )
+    return cols;
+}
+
+layui.use(['table','laydate', 'form'], function(){
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+
+    // 鏁版嵁娓叉煋
+    tableIns = table.render({
+        elem: '#locDetl',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/temp/manLocDetl/list/auth',
+        page: true,
+        limit: 16,
+        limits: [16, 30, 50, 100, 200, 500],
+        even: true,
+        toolbar: '#toolbar',
+        cellMinWidth: 50,
+        cols: [getCol()],
+        request: {
+            pageName: 'curr',
+            pageSize: 'limit'
+        },
+        parseData: function (res) {
+            console.log(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();
+            form.on('checkbox(tableCheckbox)', function (data) {
+                var _index = $(data.elem).attr('table-index')||0;
+                if(data.elem.checked){
+                    res.data[_index][data.value] = 'Y';
+                }else{
+                    res.data[_index][data.value] = 'N';
+                }
+            });
+        }
+    });
+
+    // 鐩戝惉鎺掑簭浜嬩欢
+    table.on('sort(locDetl)', 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
+            },
+            done: function (res, curr, count) {
+                if (res.code === 403) {
+                    top.location.href = baseUrl+"/";
+                }
+                pageCurr=curr;
+                limit();
+            }
+        });
+    });
+
+    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+    table.on('toolbar(locDetl)', function (obj) {
+        var checkStatus = table.checkStatus(obj.config.id);
+        switch(obj.event) {
+            case 'addData':
+                layer.open({
+                    type: 2,
+                    title: '鏂板',
+                    maxmin: true,
+                    area: [top.detailWidth, top.detailHeight],
+                    shadeClose: false,
+                    content: 'locDetl_detail.html',
+                    success: function(layero, index){
+                        layer.getChildFrame('#data-detail-submit-edit', index).hide();
+                        clearFormVal(layer.getChildFrame('#detail', index));
+                        layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+                    }
+                });
+                break;
+            case 'refreshData':
+                tableIns.reload({
+                    page: {
+                        curr: pageCurr
+                    }
+                });
+                limit();
+                break;
+            case 'deleteData':
+                var data = checkStatus.data;
+                if (data.length === 0){
+                    layer.msg('璇烽�夋嫨鏁版嵁');
+                } else {
+                    layer.confirm('纭畾鍒犻櫎'+(data.length===1?'姝�':data.length)+'鏉℃暟鎹悧', function(){
+                        $.ajax({
+                            url: baseUrl+"/locDetl/delete/auth",
+                            headers: {'token': localStorage.getItem('token')},
+                            data: {param: JSON.stringify(data)},
+                            method: 'POST',
+                            traditional:true,
+                            success: function (res) {
+                                if (res.code === 200){
+                                    layer.closeAll();
+                                    tableReload(false);
+                                } else if (res.code === 403){
+                                    top.location.href = baseUrl+"/";
+                                } else {
+                                    layer.msg(res.msg)
+                                }
+                            }
+                        })
+                    });
+                }
+                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 = {
+                        'locDetl': exportData,
+                        'fields': fields
+                    };
+                    var loadIndex = layer.msg('姝e湪瀵煎嚭...', {icon: 16, shade: 0.01, time: false});
+                    $.ajax({
+                        url: baseUrl+"/temp/manLocDetlTemp/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.close(loadIndex);
+                            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)
+                            }
+                        }
+                    });
+                });
+                break;
+        }
+    });
+
+    // 鐩戝惉琛屽伐鍏蜂簨浠�
+    table.on('tool(locDetl)', function(obj){
+        var data = obj.data;
+        switch (obj.event) {
+            // 璇︽儏
+            case 'detail':
+                layer.open({
+                    type: 2,
+                    title: '璇︽儏',
+                    maxmin: true,
+                    area: [top.detailWidth, top.detailHeight],
+                    shadeClose: false,
+                    content: 'locDetl_detail.html',
+                    success: function(layero, index){
+                        setFormVal(layer.getChildFrame('#detail', index), data, true);
+                        top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
+                        layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
+                        layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+                        layero.find('iframe')[0].contentWindow.layui.form.render('select');
+                        layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+                    }
+                });
+                break;
+            // 缂栬緫
+            case 'edit':
+                layer.open({
+                    type: 2,
+                    title: '淇敼',
+                    maxmin: true,
+                    area: [top.detailWidth, top.detailHeight],
+                    shadeClose: false,
+                    content: 'locDetl_detail.html',
+                    success: function(layero, index){
+                        layer.getChildFrame('#data-detail-submit-save', index).hide();
+                        setFormVal(layer.getChildFrame('#detail', index), data, false);
+                        top.convertDisabled(layer.getChildFrame('#data-detail :input', index), false);
+                        top.convertDisabled(layer.getChildFrame('#locNo,#matnr', index), true);
+                        layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+                        layero.find('iframe')[0].contentWindow.layui.form.render('select');
+                        layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+                    }
+                });
+                break;
+            case 'locNo':
+                var param = top.reObject(data).locNo;
+                if (param === undefined) {
+                    layer.msg("鏃犳暟鎹�");
+                } else {
+                    layer.open({
+                        type: 2,
+                        title: '搴撲綅鍙疯鎯�',
+                        maxmin: true,
+                        area: [top.detailWidth, top.detailHeight],
+                        shadeClose: false,
+                        content: '../locMast/locMast_detail.html',
+                        success: function(layero, index){
+                            $.ajax({
+                                url: baseUrl+"/locMast/"+ param +"/auth",
+                                headers: {'token': localStorage.getItem('token')},
+                                method: 'GET',
+                                success: function (res) {
+                                    if (res.code === 200){
+                                        setFormVal(layer.getChildFrame('#detail', index), res.data, true);
+                                        top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
+                                        layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
+                                        layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+                                        layero.find('iframe')[0].contentWindow.layui.form.render('select');
+                                        layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+                                    } else if (res.code === 403){
+                                        parent.location.href = "/";
+                                    }else {
+                                        layer.msg(res.msg)
+                                    }
+                                }
+                            })
+                        }
+                    });
+                }
+                break;
+            case 'modiUser':
+                var param = top.reObject(data).modiUser;
+                if (param === undefined) {
+                    layer.msg("鏃犳暟鎹�");
+                } else {
+                    layer.open({
+                        type: 2,
+                        title: '淇敼浜哄憳璇︽儏',
+                        maxmin: true,
+                        area: [top.detailWidth, top.detailHeight],
+                        shadeClose: false,
+                        content: '../user/user_detail.html',
+                        success: function(layero, index){
+                            $.ajax({
+                                url: baseUrl+"/user/"+ param +"/auth",
+                                headers: {'token': localStorage.getItem('token')},
+                                method: 'GET',
+                                success: function (res) {
+                                    if (res.code === 200){
+                                        setFormVal(layer.getChildFrame('#detail', index), res.data, true);
+                                        top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
+                                        layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
+                                        layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+                                        layero.find('iframe')[0].contentWindow.layui.form.render('select');
+                                        layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+                                    } else if (res.code === 403){
+                                        parent.location.href = "/";
+                                    }else {
+                                        layer.msg(res.msg)
+                                    }
+                                }
+                            })
+                        }
+                    });
+                }
+                break;
+            case 'appeUser':
+                var param = top.reObject(data).appeUser;
+                if (param === undefined) {
+                    layer.msg("鏃犳暟鎹�");
+                } else {
+                    layer.open({
+                        type: 2,
+                        title: '鍒涘缓鑰呰鎯�',
+                        maxmin: true,
+                        area: [top.detailWidth, top.detailHeight],
+                        shadeClose: false,
+                        content: '../user/user_detail.html',
+                        success: function(layero, index){
+                            $.ajax({
+                                url: baseUrl+"/user/"+ param +"/auth",
+                                headers: {'token': localStorage.getItem('token')},
+                                method: 'GET',
+                                success: function (res) {
+                                    if (res.code === 200){
+                                        setFormVal(layer.getChildFrame('#detail', index), res.data, true);
+                                        top.convertDisabled(layer.getChildFrame('#data-detail :input', index), true);
+                                        layer.getChildFrame('#data-detail-submit-save,#data-detail-submit-edit,#prompt', index).hide();
+                                        layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
+                                        layero.find('iframe')[0].contentWindow.layui.form.render('select');
+                                        layero.find('iframe')[0].contentWindow.layui.form.render('checkbox');
+                                    } else if (res.code === 403){
+                                        parent.location.href = "/";
+                                    }else {
+                                        layer.msg(res.msg)
+                                    }
+                                }
+                            })
+                        }
+                    });
+                }
+                break;
+
+        }
+    });
+
+    // 鏁版嵁淇濆瓨鍔ㄤ綔
+    form.on('submit(save)', function () {
+        if (banMsg != null){
+            layer.msg(banMsg);
+            return;
+        }
+        method("add");
+    });
+
+    // 鏁版嵁淇敼鍔ㄤ綔
+    form.on('submit(edit)', function () {
+        method("update")
+    });
+
+    function method(name){
+
+        var index = layer.load(1, {
+            shade: [0.5,'#000'] //0.1閫忔槑搴︾殑鑳屾櫙
+        });
+        var data = {
+//            id: $('#id').val(),
+            locNo: $('#locNo').val(),
+            matnr: $('#matnr').val(),
+            lgnum: $('#lgnum').val(),
+            tbnum: $('#tbnum').val(),
+            tbpos: $('#tbpos').val(),
+            zmatid: $('#zmatid').val(),
+            maktx: $('#maktx').val(),
+            werks: $('#werks').val(),
+            anfme: $('#anfme').val(),
+            altme: $('#altme').val(),
+            zpallet: $('#zpallet').val(),
+            bname: $('#bname').val(),
+            memo: $('#memo').val(),
+            modiUser: $('#modiUser').val(),
+            modiTime: top.strToDate($('#modiTime\\$').val()),
+            appeUser: $('#appeUser').val(),
+            appeTime: top.strToDate($('#appeTime\\$').val()),
+
+        };
+        $.ajax({
+            url: baseUrl+"/locDetl/"+name+"/auth",
+            headers: {'token': localStorage.getItem('token')},
+            data: top.reObject(data),
+            method: 'POST',
+            success: function (res) {
+                if (res.code === 200){
+                    parent.layer.closeAll();
+                    parent.$(".layui-laypage-btn")[0].click();
+                    $("#data-detail :input").each(function () {
+                        $(this).val("");
+                    });
+                } else if (res.code === 403){
+                    top.location.href = baseUrl+"/";
+                }else {
+                    layer.msg(res.msg)
+                }
+                layer.close(index);
+            }
+        })
+    }
+
+    // 澶嶉�夋浜嬩欢
+    form.on('checkbox(detailCheckbox)', function (data) {
+        var el = data.elem;
+        if (el.checked) {
+            $(el).val('Y');
+        } else {
+            $(el).val('N');
+        }
+    });
+
+    // 鎼滅储鏍忔悳绱簨浠�
+    form.on('submit(search)', function (data) {
+        pageCurr = 1;
+        tableReload(false);
+    });
+
+
+    // 鎼滅储鏍忛噸缃簨浠�
+    form.on('submit(reset)', function (data) {
+        pageCurr = 1;
+        clearFormVal($('#search-box'));
+        tableReload(false);
+    });
+
+    // 鏃堕棿閫夋嫨鍣�
+    layDate.render({
+        elem: '#modiTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '#appeTime\\$',
+        type: 'datetime'
+    });
+    layDate.render({
+        elem: '.layui-laydate-range'
+        ,type: 'datetime'
+        ,range: true
+    });
+
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(document).on('click','#data-detail-close', function () {
+    parent.layer.closeAll();
+});
+
+function tableReload(child) {
+    var searchData = {
+    };
+    $.each($('#search-box [name]').serializeArray(), function() {
+        searchData[this.name] = this.value;
+    });
+    (child ? parent.tableIns : tableIns).reload({
+        where: searchData,
+        page: {
+            curr: pageCurr
+        },
+        done: function (res, curr, count) {
+            if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            }
+            pageCurr=curr;
+            if (res.data.length === 0 && count !== 0) {
+                tableIns.reload({
+                    where: searchData,
+                    page: {
+                        curr: pageCurr-1
+                    }
+                });
+                pageCurr -= 1;
+            }
+            limit(child);
+        }
+    });
+}
+
+function setFormVal(el, data, showImg) {
+    for (var val in data) {
+        var find = el.find(":input[id='" + val + "']");
+        if (find[0]!=null){
+            if (find[0].type === 'checkbox'){
+                if (data[val]==='Y'){
+                    find.attr("checked","checked");
+                    find.val('Y');
+                } else {
+                    find.remove("checked");
+                    find.val('N');
+                }
+                continue;
+            }
+        }
+        find.val(data[val]);
+        if (showImg){
+            var next = find.next();
+            if (next.get(0)){
+                if (next.get(0).localName === "img") {
+                    find.hide();
+                    next.attr("src", data[val]);
+                    next.show();
+                }
+            }
+        }
+    }
+}
+
+function clearFormVal(el) {
+    $(':input', el)
+        .val('')
+        .removeAttr('checked')
+        .removeAttr('selected');
+}
+
+function detailScreen(index) {
+    var detail = layer.getChildFrame('#data-detail', index);
+    var height = detail.height()+60;
+    if (height > ($(window).height()*0.9)) {
+        height = ($(window).height()*0.8);
+    }
+    layer.style(index, {
+//        top: (($(window).height()-height)/3)+"px",
+        height: height+'px'
+    });
+}
+
+$('body').keydown(function () {
+    if (event.keyCode === 13) {
+        $("#search").click();
+    }
+});
diff --git a/src/main/webapp/static/js/order/order.js b/src/main/webapp/static/js/order/order.js
index 88dd47d..f61c83d 100644
--- a/src/main/webapp/static/js/order/order.js
+++ b/src/main/webapp/static/js/order/order.js
@@ -155,9 +155,9 @@
                             // {field: 'color', title: '棰滆壊'},
                             {field: 'specs', title: '瑙勬牸鍨嬪彿'},
                             {field: 'unit', title: '璁¢噺鍗曚綅'},
-                            {field: 'brand', title: '琛屽彿'},
-                            {field: 'color', title: '閿�鍞鍗曞彿'},
-                            {field: 'origin', title: '閿�鍞鍗曡鍙�'},
+                            {field: 'manu', title: '琛屽彿'},
+                            {field: 'threeCode', title: '閿�鍞鍗曞彿'},
+                            {field: 'deadTime', title: '閿�鍞鍗曡鍙�'},
                             {field: 'itemNum', title: '琛屽敮涓�鏍囪瘑'}
                         ]],
                         request: {
@@ -252,11 +252,13 @@
                     cellMinWidth: 100,
                     cols: [[
                         {type: 'numbers', title: '#'},
-                        {field: 'matnr', title: '鐗╂枡鍙�', width: 160},
-                        {field: 'maktx', title: '鐗╂枡鍚嶇О', width: 200},
+                        {field: 'matnr', title: '瀛樿揣缂栫爜', width: 160},
+                        {field: 'maktx', title: '瀛樿揣鍚嶇О', width: 200},
                         {field: 'batch', title: '搴忓垪鐮�', edit: true},
                         {field: 'specs', title: '瑙勬牸'},
                         {field: 'anfme', title: '鏁伴噺(淇敼)', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110},
+                        {field: 'threeCode', title: '閿�鍞鍗曞彿(淇敼)', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110},
+                        {field: 'deadTime', title: '閿�鍞鍗曡鍙�(淇敼)', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110},
                         // {field: 'inQty', title: '宸插叆搴撻噺',  minWidth: 100, width: 100},
                         // {field: 'unit', title: '鍗曚綅', width: 80},
                         {field: 'memo', title: '澶囨敞' , edit: true},
diff --git a/src/main/webapp/static/js/order/out.js b/src/main/webapp/static/js/order/out.js
index bfe89c1..ac322ac 100644
--- a/src/main/webapp/static/js/order/out.js
+++ b/src/main/webapp/static/js/order/out.js
@@ -39,6 +39,8 @@
             // ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
             // ,{field: 'qty', align: 'center',title: '浣滀笟鏁伴噺', style: 'font-weight: bold'}
             ,{field: 'enableQty', align: 'center',title: '寰呭嚭鏁伴噺', style: 'font-weight: bold'}
+            ,{field: 'color', align: 'center',title: '閿�鍞鍗曞彿'}
+            ,{field: 'origin', align: 'center',title: '閿�鍞鍗曡鍙�'}
             // ,{field: 'name', align: 'center',title: '鍚嶇О'}
             // ,{field: 'model', align: 'center',title: '閫氱敤鍨嬪彿'}
             ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: true}
diff --git a/src/main/webapp/static/js/pakStore/stockAdjust.js b/src/main/webapp/static/js/pakStore/stockAdjust.js
index f6be988..d51a7b8 100644
--- a/src/main/webapp/static/js/pakStore/stockAdjust.js
+++ b/src/main/webapp/static/js/pakStore/stockAdjust.js
@@ -10,12 +10,13 @@
         ,{field: 'batch', align: 'center',title: '搴忓垪鐮�', edit: true, style: 'font-weight:bold'}
         ,{field: 'threeCode', align: 'center',title: '閿�鍞鍗曞彿', edit: true, style: 'font-weight:bold'}
         ,{field: 'deadTime', align: 'center',title: '閿�鍞鍗曡鍙�', edit: true, style: 'font-weight:bold'}
+        ,{field: 'suppCode', align: 'center',title: '鏂欑鐮�', edit: false, style: 'font-weight:bold'}
     ];
     arrRemove(detlCols, "field", "zpallet");
     arrRemove(detlCols, "field", "anfme");
     arrRemove(detlCols, "field", "batch");
     arrRemove(detlCols, "field", "threeCode");
-    arrRemove(detlCols, "field", "dead_time");
+    arrRemove(detlCols, "field", "deadTime");
     cols.push.apply(cols, detlCols);
     cols.push({fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:80})
     return cols;
diff --git a/src/main/webapp/static/js/picking/picking.js b/src/main/webapp/static/js/picking/picking.js
new file mode 100644
index 0000000..f3cb76c
--- /dev/null
+++ b/src/main/webapp/static/js/picking/picking.js
@@ -0,0 +1,362 @@
+var pageCurr;
+var printMatCodeNos = [];
+var ordernoo = "123";
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"
+}).use(['table','laydate', 'form', 'admin', 'layer'], function(){
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+    var admin = layui.admin;
+
+    // 鏁版嵁娓叉煋
+    tableIns = table.render({
+        elem: '#saasLog',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/ManPakOut/detailed/auth',
+        page: true,
+        limit: 15,
+        limits: [15, 30, 50, 100, 200, 500],
+        // toolbar: '#toolbar',
+        cellMinWidth: 50,
+        height: 'full-120',
+        cols: [[
+            // {type: 'checkbox'}
+            {type: 'numbers'}
+            ,{field: 'wrkNo', align: 'center',title: 'id', hide:true}
+            ,{field: 'docNum',title: '鎷h揣鍗曞彿' }
+            ,{align: 'center', title: '浜岀淮鐮�', toolbar: '#operate', width: 200 , hide:true}
+            ,{align: 'center', title: '鏄庣粏', toolbar: '#tbLook', minWidth: 160, width: 160}
+            ,{field: 'payment$', align: 'center',title: '鐘舵��'}
+            // ,{field: 'owner$', align: 'center',title: '璐т富'}
+            // ,{field: 'payment$', align: 'center',title: '璐х墿褰㈡��'}
+            // ,{field: 'custName', align: 'center',title: '瀹㈡埛鍚嶇О', width: 160}
+            ,{field: 'createTime$', align: 'center',title: '鎿嶄綔鏃堕棿'}
+            ,{align: 'center', title: '鎿嶄綔', toolbar: '#operate'}
+
+        ]],
+        request: {
+            pageName: 'curr',
+            pageSize: 'limit'
+        },
+        parseData: function (res) {
+            console.log(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();
+
+            var index = -1;
+            $("[data-field='status$']").children().each(function () {
+                index++;
+                if ($(this).text() === '鏈嚭搴�') {
+                    $('tr').eq(index).css("color", 'red');
+                }
+            });
+        }
+    });
+
+    // 鐩戝惉鎺掑簭浜嬩欢
+    table.on('sort(saasLog)', 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('tool(saasLog)', function(obj){
+        var data = obj.data;
+        switch (obj.event) {
+            case "btnPrint":
+                btnPrint(data.wrkNo, data.docNum, 4);
+                break;
+            case "wrkTrace":
+                btnPrint(data.wrkNo, data.docNum, 4);
+                break;
+            case "btnPrint2":
+                btnPrint2(data.wrkNo, data.docNum, 4);
+                break;
+            case "look":
+                var $a = $(obj.tr).find('a[lay-event="look"]');
+                var offset = $a.offset();
+                var top = offset.top;
+                var left = offset.left;
+                layer.open({
+                    type: 1,
+                    title: false,
+                    area: '1200px',
+                    offset: [top + 'px', (left - 450 + $a.outerWidth()) + 'px'],
+                    shade: .01,
+                    shadeClose: true,
+                    fixed: false,
+                    content: '<table id="lookSSXMTable" lay-filter="lookSSXMTable"></table>',
+                    success: function (layero) {
+                        table.render({
+                            id:'lookSSXMTable',
+                            elem: '#lookSSXMTable',
+                            headers: {token: localStorage.getItem('token')},
+                            url: baseUrl+'/ManPakOut/list/auth',
+                            where: {
+                                doc_num: data.docNum,
+                                uuid: data.uuid
+                            },
+                            page: true,
+                            cellMinWidth: 100,
+                            cols: [[
+                                {type: 'numbers'}
+                                ,{field: 'id', align: 'center',title: 'id', hide:true}
+                                ,{field: 'docNum', align: 'center',title: '鎷h揣鍗曞彿'}
+                                //,{field: 'uuid', align: 'center',title: 'uuid'}
+                                ,{field: 'locNo', align: 'center',title: '搴撲綅'}
+                                ,{field: 'matnr', align: 'center',title: '瀛樿揣缂栫爜'}
+                                ,{field: 'maktx', align: 'center',title: '瀛樿揣鍚嶇О'}
+                                ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
+                                ,{field: 'containerCode', align: 'center',title: '鏂欑鐮�'}
+                                ,{field: 'csocode', align: 'center',title: '閿�鍞鍗曞彿'}
+                                ,{field: 'isoseq', align: 'center',title: '閿�鍞鍗曡鍙�'}
+                                //,{field: 'owner$', align: 'center',title: '璐т富'}
+                                //,{field: 'payment$', align: 'center',title: '璐х墿褰㈡��'}
+                                //,{field: 'owner', align: 'center',title: '璐т富', hide:true}
+                                //,{field: 'payment', align: 'center',title: '璐х墿褰㈡��', hide:true}
+                                ,{field: 'createTime$', align: 'center',title: '鎿嶄綔鏃堕棿'}
+                                ,{field: 'count', align: 'center',title: '瀹屾垚鏁�'}
+                                ,{field: 'status$', align: 'center',title: '鐘舵��'}
+                                ,{field: 'memo', align: 'center',title: '澶囨敞'}
+                                ,{field: 'createBy', align: 'center',title: '', 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) {
+
+                                $(layero).find('.layui-table-view').css('margin', '0');
+
+                                var index = 1;
+                                $("[data-field='status$']").children().each(function () {
+                                    index++;
+                                    if ($(this).text() === '鏈嚭搴�') {
+                                        $('tr').eq(index).css("color", 'red');
+                                    }
+                                });
+
+
+                            },
+                            size: ''
+                        });
+                    }
+                });
+        }
+    });
+
+    // 鎼滅储
+    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(data) {
+        setTimeout(function () {
+            layDate.render({
+                elem: '#ioTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['ioTime\\$']:null
+            });
+
+        }, 300);
+    }
+    layDateRender();
+
+    // 鎵撳嵃
+    function btnPrint(orderId, orderNo, settle) {
+        printMatCodeNos.push(orderNo)
+        var templateNo = 3;
+        $.ajax({
+             url: baseUrl+"/pakOut/print/auth",
+           // url: baseUrl+"/pakOut/show",
+            headers: {'token': localStorage.getItem('token')},
+             data: {param: printMatCodeNos},
+            method: 'POST',
+            async: false,
+            success: function (res) {
+                if (res.code === 200){
+                    layer.closeAll();
+                    for (let i=0;i<res.data.length;i++){
+                        var templateDom = $("#templatePreview"+templateNo);
+                        var className = templateDom.attr("class");
+                        if (className === 'template-barcode') {
+                            res.data[i]["barcodeUrl"]=baseUrl+"/mac/code/auth?type=1&param="+res.data[i].docNum;
+                        } else {
+                            res.data[i]["barcodeUrl"]=baseUrl+"/mac/code/auth?type=2&param="+res.data[i].docNum;
+                        }
+                    }
+
+
+                    var tpl = templateDom.html();
+                    var template = Handlebars.compile(tpl);
+                    var html = template(res);
+                    var box = $("#box");
+                    box.html(html);
+                    box.show();
+                    var imgUrl;
+                    // console.log(res.data[0]);
+                    for (let i=0;i<res.data.length;i++){
+                        if (res.data[i].docNum === orderNo){
+                            imgUrl = res.data[i]["barcodeUrl"];
+                        }
+
+                    }
+
+                    var img = '<img className="template-code template-qrcode" src='+imgUrl+' height="80%">'
+                    layer.open({
+                        type: 1,
+                        title: "鎷h揣鍗�",
+                        area: '150px',
+                        content: img
+                    })
+
+                    // box.print({mediaPrint:true});
+                    // box.hide();
+
+                } else if (res.code === 403){
+                    top.location.href = baseUrl+"/";
+                }else {
+                    layer.msg(res.msg)
+                }
+            }
+        })
+    }
+
+         function btnPrint2(orderId, orderNo, settle) {
+            console.log(orderId);
+            console.log(orderNo);
+            console.log(settle);
+            printMatCodeNos.push(orderNo);
+            var templateNo = 4;
+            $.ajax({
+                url: baseUrl + "/ManPakOut/print/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {param: printMatCodeNos},
+                method: 'POST',
+                async: false,
+                success: function (res) {
+                    if (res.code === 200) {
+                        layer.closeAll();
+                         var json = res;
+
+                        json.docNum = orderNo;
+                        console.log("json"+json);
+                        let sum = 0;
+
+                        for (let i = 0; i < res.data.length; i++){
+                            sum += res.data[i].anfme;
+                            console.log("sum:"+res.data.anfme);
+
+                        }
+                        json.anfmeSum = sum;
+                        var barcodeUrl = baseUrl + "/ManPakOut/code/auth?type=1&param=" + res.data[0].docNum;
+                        console.log("barcodeUrl:"+barcodeUrl);
+                        json.barcodeUrl = barcodeUrl;
+                        for (let i = 0; i < json.data.length; i++) {
+                            var templateDom = $("#templatePreview" + templateNo);
+                            var className = templateDom.attr("class");
+
+                            if (className === 'template-barcode') {
+                                json.data[i]["barcodeUrl"] = baseUrl + "/ManPakOut/code/auth?type=2&param=" + (json.data[i].docNum+";"
+                                    +json.data[i].matnr+";"
+                                    +json.data[i].maktx+";"
+                                    +json.data[i].anfme+";"
+                                    +json.data[i].locNo+";"
+                                    +json.data[i].containerCode+";"
+                                    +json.data[i].csocode+";"
+                                    +json.data[i].isoseq+";"
+                                    +json.data[i].wrkNo+";");
+                            } else {
+                                json.data[i]["barcodeUrl"] = baseUrl + "/ManPakOut/code/auth?type=2&param=" + (json.data[i].docNum+";"
+                                    +json.data[i].matnr+";"
+                                    +json.data[i].maktx+";"
+                                    +json.data[i].anfme+";"
+                                    +json.data[i].locNo+";"
+                                    +json.data[i].containerCode+";"
+                                    +json.data[i].csocode+";"
+                                    +json.data[i].isoseq+";"
+                                    +json.data[i].wrkNo+";");
+                            }
+                        }
+                        var tpl = templateDom.html();
+                        var template = Handlebars.compile(tpl);
+                        var html = template(json);
+                        var box = $("#box");
+                        box.html(html);
+                        box.show();
+                        box.print({mediaPrint: true});
+                        box.hide();
+                    } else if (json.code === 403) {
+                        top.location.href = baseUrl + "/";
+                    } else {
+                        layer.msg(json.msg)
+                    }
+                }
+            })
+        }
+
+
+
+
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(document).on('click','#data-detail-close', function () {
+    parent.layer.closeAll();
+});
+
+function tableReload(child) {
+    var searchData = {};
+    $.each($('#search-box [name]').serializeArray(), function() {
+        searchData[this.name] = this.value;
+    });
+    tableIns.reload({
+        where: searchData,
+        page: {curr: pageCurr}
+     });
+}
diff --git a/src/main/webapp/static/js/picking/pickingOrder.js b/src/main/webapp/static/js/picking/pickingOrder.js
new file mode 100644
index 0000000..df11673
--- /dev/null
+++ b/src/main/webapp/static/js/picking/pickingOrder.js
@@ -0,0 +1,497 @@
+var pageCurr;
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"
+}).use(['layer','table','laydate', 'form', 'admin', 'xmSelect'], 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 xmSelect = layui.xmSelect;
+
+    // 鏁版嵁娓叉煋
+    tableIns = table.render({
+        elem: '#saasLog',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/order/picking/head/page/auth',
+        page: true,
+        limit: 15,
+        limits: [15, 30, 50, 100, 200, 500],
+        // toolbar: '#toolbar',
+        cellMinWidth: 50,
+        height: 'full-120',
+        cols: [[
+            {type: 'numbers'},
+            {field: 'orderNo', title: '鍗曟嵁缂栧彿'},
+            {field: 'docType$', align: 'center', title: '绫诲瀷',  minWidth: 160, width: 160},
+            {align: 'center', title: '鏄庣粏', toolbar: '#tbLook', minWidth: 160, width: 160},
+            {field: 'createTime$', title: '鍒涘缓鏃堕棿', minWidth: 200, width: 200},
+            {field: 'settle$', align: 'center', title: '鐘舵��', templet: '#settleTpl',  minWidth: 160, width: 160},
+            {field: 'memo', align: 'center',title: '澶囨敞', hide: true},
+            {align: 'center', title: '鎿嶄綔', toolbar: '#operate', width: 380}
+        ]],
+        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();
+        }
+    });
+
+    // 鐩戝惉鎺掑簭浜嬩欢
+    table.on('sort(saasLog)', 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('tool(saasLog)', function(obj){
+        var data = obj.data;
+        switch (obj.event) {
+            case "edit":
+                console.log("淇敼");
+                showEditModel(data);
+                break;
+            case "del":
+                console.log("鍒犻櫎");
+                doDel(data.id);
+                break;
+            case "complete":
+                console.log("瀹岀粨");
+                break;
+            case "btnPrint":
+                console.log("鎵撳嵃");
+                break;
+            case "manPrint":
+                addPakOut(data.orderNo);
+                break;
+            case "look":
+                var $a = $(obj.tr).find('a[lay-event="look"]');
+                var offset = $a.offset();
+                var top = offset.top;
+                var left = offset.left;
+                layer.open({
+                    type: 1,
+                    title: false,
+                    area: '820px',
+                    offset: [top + 'px', (left - 530 + $a.outerWidth()) + 'px'],
+                    shade: .01,
+                    shadeClose: true,
+                    fixed: false,
+                    content: '<table id="lookSSXMTable" lay-filter="lookSSXMTable"></table>',
+                    success: function (layero) {
+                        table.render({
+                            elem: '#lookSSXMTable',
+                            headers: {token: localStorage.getItem('token')},
+                            url: baseUrl+'/orderDetl/list/auth',
+                            where: {
+                                order_id: data.id
+                            },
+                            page: true,
+                            cellMinWidth: 100,
+                            cols: [[
+                                {type: 'numbers'},
+                                {field: 'matnr', title: '鍟嗗搧缂栫爜', width: 160},
+                                {field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 160},
+                                {field: 'batch', title: '鎵瑰彿'},
+                                {field: 'anfme', title: '鏁伴噺'},
+                                // {field: 'workQty', title: '浣滀笟鏁伴噺'},
+                                {field: 'qty', title: '瀹屾垚鏁伴噺', style: 'font-weight: bold'},
+                                {field: 'specs', title: '瑙勬牸'}
+                            ]],
+                            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 () {
+                                $(layero).find('.layui-table-view').css('margin', '0');
+                            },
+                            size: ''
+                        });
+                    }
+                });
+                break;
+        }
+    });
+
+    // 鎼滅储
+    form.on('submit(search)', function (data) {
+        pageCurr = 1;
+        tableReload(false);
+    });
+
+    // 閲嶇疆
+    form.on('submit(reset)', function (data) {
+        pageCurr = 1;
+        clearFormVal($('#search-box'));
+        tableReload(false);
+    });
+
+    // 娣诲姞
+    $("#orderAddBtn").click(function () {
+        showEditModel();
+    });
+
+    // 鏃堕棿閫夋嫨鍣�
+    function layDateRender(data) {
+        setTimeout(function () {
+            layDate.render({
+                elem: '#ioTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['ioTime\\$']:null
+            });
+
+        }, 300);
+    }
+    layDateRender();
+
+    // 鐢熸垚鎷h揣鍗�
+    function addPakOut(expTpe) {
+        $.ajax({
+            url: baseUrl+"/ManPakOut/add/auth",
+            headers: {'token': localStorage.getItem('token')},
+            data: JSON.stringify({
+                docType: Number(20),
+                orderNo: expTpe,
+            }),
+            contentType:'application/json;charset=UTF-8',
+            method: 'POST',
+            success: function (res) {
+                if (res.code === 200){
+                    layer.msg("鐢熸垚鎷h揣鍗曪細ok");
+                } else if (res.code === 403){
+                    layer.msg("鐢熸垚鎷h揣鍗曪細403");
+                }else {
+                    layer.msg("鐢熸垚鎷h揣鍗曪細???");
+                }
+
+            }
+        })
+    }
+    // 鍒犻櫎鍗曟嵁
+    function doDel(orderId) {
+        console.log(orderId)
+        layer.confirm('纭畾瑕佸垹闄ゅ悧锛�', {
+            shade: .1,
+            skin: 'layui-layer-admin'
+        }, function (i) {
+            layer.close(i);
+            layer.load(2);
+            $.ajax({
+                url: baseUrl+"/order/delete/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {
+                    orderId: orderId
+                },
+                method: 'POST',
+                success: function (res) {
+                    layer.closeAll('loading');
+                    if (res.code === 200){
+                        layer.msg(res.msg, {icon: 1});
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    }else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+        });
+    }
+
+
+    // 鏄剧ず琛ㄥ崟寮圭獥
+    function showEditModel(expTpe) {
+        admin.open({
+            type: 1,
+            title: (expTpe ? '淇敼' : '娣诲姞') + '鍗曟嵁',
+            content: $('#editDialog').html(),
+            area: '1300px',
+            success: function (layero, dIndex) {
+                $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                var isExpAdd = !expTpe;
+                // 鍥炴樉鏁版嵁
+                form.val('editForm', expTpe);
+                if (expTpe) {
+                    $('#orderNo').attr("disabled", "disabled");
+                }
+                // 琛ㄥ崟鎻愪氦浜嬩欢
+                form.on('submit(orderEditSubmit)', function (data) {
+                    // 缁勮鏁版嵁
+                    if (xxDataList.length <= 0) {
+                        layer.tips('璇锋坊鍔犲崟鎹槑缁�', '#matAddBtnComment', {tips: [1, '#ff4c4c']});
+                        return false;
+                    }
+                    let nList = admin.util.deepClone(xxDataList);
+                    for (let xi = 0; xi < nList.length; xi++) {
+                        if (nList[xi].anfme <= 0){
+                            layer.msg('鏄庣粏淇敼鏁伴噺涓嶅悎娉�', {icon: 2});
+                            return false;
+                        }
+                        if (nList[xi].anfme < nList[xi].workQty){
+                            layer.msg('鏁伴噺涓嶈兘灏忎簬宸蹭綔涓氭暟閲�', {icon: 2});
+                            return false;
+                        }
+                    }
+                    layer.load(2);
+                    $.ajax({
+                        url: baseUrl+"/order/form/" + (isExpAdd?"add":"modify") + "/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: JSON.stringify({
+                            orderId: Number(data.field.id),
+                            docType: Number(20),
+                            orderNo: data.field.orderNo,
+                            orderDetlList: nList
+                        }),
+                        contentType:'application/json;charset=UTF-8',
+                        method: 'POST',
+                        success: function (res) {
+                            layer.closeAll('loading');
+                            if (res.code === 200){
+                                layer.close(dIndex);
+                                $(".layui-laypage-btn")[0].click();
+                                layer.msg(res.msg, {icon: 1});
+                            } else if (res.code === 403){
+                                top.location.href = baseUrl+"/";
+                            }else {
+                                layer.msg(res.msg, {icon: 2});
+                            }
+                        }
+                    })
+                    return false;
+                });
+                // 鏄庣粏琛ㄦ牸
+                var xxDataList = [];
+                var tbOptions = {
+                    elem: '#formSSXMTable',
+                    headers: {token: localStorage.getItem('token')},
+                    data: xxDataList,
+                    page: true,
+                    height: '350px;',
+                    cellMinWidth: 100,
+                    cols: [[
+                        {type: 'numbers', title: '#'},
+                        {field: 'matnr', title: '鍟嗗搧缂栫爜', width: 160},
+                        {field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 200},
+                        {field: 'batch', title: '鎵瑰彿', edit: true},
+                        {field: 'specs', title: '瑙勬牸'},
+                        {field: 'anfme', title: '鏁伴噺(淇敼)', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110},
+                        {field: 'workQty', title: '浣滀笟鏁伴噺',  minWidth: 100, width: 100},
+                        {field: 'owner$', title: '璐т富',  minWidth: 100, width: 100},
+                        {field: 'payment$', title: '璐х墿褰㈡��',  minWidth: 100, width: 100},
+                        // {field: 'unit', title: '鍗曚綅', width: 80},
+                        {field: 'memo', title: '澶囨敞' , edit: true},
+                        {align: 'center', title: '鎿嶄綔', toolbar: '#formSSXMTableBar', minWidth: 80, width: 80, fixed: 'right'}
+                    ]],
+                    done: function (res) {
+                        $(layero).find('.layui-table-view').css('margin', '0');
+                    },
+                    size: ''
+                };
+                if (!isExpAdd) {
+                    $.ajax({
+                        url: baseUrl+"/order/detl/all/auth?orderId=" + expTpe.id,
+                        headers: {'token': localStorage.getItem('token')},
+                        method: 'GET',
+                        async: false,
+                        success: function (res) {
+                            if (res.code === 200){
+                                xxDataList = res.data;
+                                tbOptions.data = xxDataList;
+                            } else if (res.code === 403){
+                                top.location.href = baseUrl+"/";
+                            }else {
+                                layer.msg(res.msg, {icon: 2})
+                            }
+                        }
+                    })
+                }
+                var insTbSSXM = table.render(tbOptions);
+                // 宸ュ叿鏉$偣鍑讳簨浠�
+                table.on('tool(formSSXMTable)', function (obj) {
+                    var data = obj.data;
+                    var layEvent = obj.event;
+                    if (layEvent === 'edit') {
+                        showEditModel2(data);
+                    } else if (layEvent === 'del') {
+                        if(data.workQty > 0){
+                            layer.msg("宸插瓨鍦ㄤ綔涓氭暟閲忥紝涓嶈兘鍒犻櫎", {icon: 2});
+                            return;
+                        }
+                        layer.confirm('纭畾瑕佸垹闄ゅ悧锛�', {
+                            shade: .1,
+                            skin: 'layui-layer-admin'
+                        }, function (i) {
+                            layer.close(i);
+                            for (var j = 0; j < xxDataList.length; j++) {
+                                if (xxDataList[j].matnr === data.matnr && xxDataList[j].batch === data.batch) {
+                                    xxDataList.splice(j, 1);
+                                    break;
+                                }
+                            }
+                            insTbSSXM.reload({data: xxDataList, page: {curr: 1}});
+                        });
+                    }
+                });
+                // 鏄庣粏鏁版嵁淇敼
+                table.on('edit(formSSXMTable)', function (obj) {
+                    let index = obj.tr.attr("data-index");
+                    let data = xxDataList[index];
+                    if (obj.field === 'anfme'){
+                        let vle = Number(obj.value);
+                        if (isNaN(vle)) {
+                            layer.msg("璇疯緭鍏ユ暟瀛�", {icon: 2});
+                            return false;
+                        } else {
+                            if (vle <= 0) {
+                                layer.msg("鏁伴噺蹇呴』澶т簬闆�", {icon: 2});
+                                // data[obj.field] = 0;
+                                // insTbSSXM.reload({data: xxDataList});
+                                return false;
+                            }
+                            if(obj.value < data.workQty){
+                                layer.msg("杈撳叆鏁伴噺涓嶈兘灏忎簬浣滀笟涓暟閲�", {icon: 2});
+                                // data[obj.field] = 0;
+                                // insTbSSXM.reload({data: xxDataList});
+                                return false;
+                            }
+                        }
+                    }
+                    data[obj.field] = obj.value;
+                    insTbSSXM.reload({data: xxDataList});
+                });
+
+                $('#matAddBtnComment').click(function () {
+                    showEditModel2();
+                });
+
+                // 鏄剧ず娣诲姞鏄庣粏琛ㄥ崟寮圭獥
+                function showEditModel2(exp) {
+                    admin.open({
+                        type: 1,
+                        offset: '150px',
+                        area: '680px',
+                        title: (exp ? '淇敼' : '娣诲姞') + '鏄庣粏',
+                        content: $('#matEditDialog').html(),
+                        success: function (layero, dIndex) {
+                            // 鍥炴樉鏁版嵁
+                            form.val('matEditForm', exp);
+                            // 琛ㄥ崟鎻愪氦浜嬩欢
+                            form.on('submit(matEditSubmit)', function (data) {
+                                let selectList = matXmSelect.getValue();
+                                for (let i = 0; i<selectList.length; i++) {
+                                    let item = selectList[i];
+                                    // 鏌ヨ鐗╂枡璇︽儏
+                                    $.ajax({
+                                        url: baseUrl+"/mat/covert/"+item.value+"/auth",
+                                        headers: {'token': localStorage.getItem('token')},
+                                        method: 'GET',
+                                        async: false,
+                                        success: function (res) {
+                                            if (res.code === 200){
+                                                xxDataList.push(res.data);
+                                                insTbSSXM.reload({data: xxDataList, page: {curr: 1}});
+                                            } else if (res.code === 403){
+                                                top.location.href = baseUrl+"/";
+                                            }else {
+                                                layer.msg(res.msg, {icon: 2})
+                                            }
+                                        }
+                                    })
+                                }
+                                layer.close(dIndex);
+                                return false;
+                            });
+                            // 娓叉煋鐗╂枡閫夋嫨
+                            var matXmSelect = xmSelect.render({
+                                el: '#mat',
+                                style: {
+                                    width: '340px',
+                                },
+                                autoRow: true,
+                                toolbar: { show: true },
+                                filterable: true,
+                                remoteSearch: true,
+                                remoteMethod: function(val, cb, show){
+                                    $.ajax({
+                                        url: baseUrl+"/mat/all/get/kv",
+                                        headers: {'token': localStorage.getItem('token')},
+                                        data: {
+                                            condition: val
+                                        },
+                                        method: 'POST',
+                                        success: function (res) {
+                                            if (res.code === 200){
+                                                cb(res.data)
+                                            } else {
+                                                cb([]);
+                                                layer.msg(res.msg, {icon: 2});
+                                            }
+                                        }
+                                    });
+                                }
+                            })
+                            // 寮圭獥涓嶅嚭鐜版粴鍔ㄦ潯
+                            $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                            layui.form.render('select');
+                        }
+                    });
+                }
+
+            }
+        });
+    }
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(document).on('click','#data-detail-close', function () {
+    parent.layer.closeAll();
+});
+
+function tableReload(child) {
+    var searchData = {};
+    $.each($('#search-box [name]').serializeArray(), function() {
+        searchData[this.name] = this.value;
+    });
+    tableIns.reload({
+        where: searchData,
+        page: {curr: pageCurr}
+    });
+}
+
+
diff --git a/src/main/webapp/views/agvPakStore/pakStore.html b/src/main/webapp/views/agvPakStore/pakStore.html
index 820bbee..87bb1d1 100644
--- a/src/main/webapp/views/agvPakStore/pakStore.html
+++ b/src/main/webapp/views/agvPakStore/pakStore.html
@@ -121,7 +121,7 @@
 <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
 <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
 <script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
-<script type="text/javascript" src="../../static/js/pakStore/pakStore.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/agvPakStore/pakStore.js" charset="utf-8"></script>
 
 <script type="text/template" id="putSiteSelectTemplate">
     {{#each data}}
diff --git a/src/main/webapp/views/agvPakStore/stockAdjust.html b/src/main/webapp/views/agvPakStore/stockAdjust.html
index bd758e9..a955381 100644
--- a/src/main/webapp/views/agvPakStore/stockAdjust.html
+++ b/src/main/webapp/views/agvPakStore/stockAdjust.html
@@ -126,7 +126,7 @@
 <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
 <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
 <script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
-<script type="text/javascript" src="../../static/js/pakStore/stockAdjust.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/agvPakStore/stockAdjust.js" charset="utf-8"></script>
 
 </body>
 </html>
diff --git a/src/main/webapp/views/manLocDetl/manLocDetl.html b/src/main/webapp/views/manLocDetl/manLocDetl.html
index 60039c9..7da6e76 100644
--- a/src/main/webapp/views/manLocDetl/manLocDetl.html
+++ b/src/main/webapp/views/manLocDetl/manLocDetl.html
@@ -40,73 +40,48 @@
 </head>
 <body>
 
-<div class="layui-fluid">
-    <!-- 宸� -->
-    <div class="layui-row layui-col-space15">
-        <div class="layui-col-md3">
-            <div class="layui-card">
-                <div class="layui-card-body" style="padding: 10px;">
-                    <!-- 鏍戝伐鍏锋爮 -->
-                    <div class="layui-form toolbar" id="organizationTreeBar">
-                        <div class="layui-inline" style="max-width: 200px;">
-                            <input id="condition" onkeyup="findData(this)" type="text" class="layui-input" placeholder="璇疯緭鍏ュ叧閿瓧" autocomplete="off">
-                        </div>
-                        <div class="layui-inline">
-                            <button class="layui-btn icon-btn  layui-btn-sm" id="treeReset" style="padding: 0 10px;">
-                                <i class="layui-icon layui-icon-close"></i>
-                            </button>
-                        </div>
+<!-- 鍙� -->
+    <div class="layui-card">
+        <div class="layui-card-body" style="padding: 10px;">
+            <!-- 琛ㄦ牸宸ュ叿鏍�2 -->
+            <div id="search-box" class="layui-form toolbar"  style="padding-top: 5px">
+                <div class="layui-inline">
+                    <label class="layui-form-label" style="padding: 8px 15px 8px 15px">璐т綅:</label>
+                    <div class="layui-input-inline">
+                        <input name="loc_no" style="width: 120px" class="layui-input" placeholder="杈撳叆璐т綅"/>
                     </div>
-                    <!-- 鏍� -->
-                    <div class="layui-form toolbar" id="organizationTree"></div>
+                </div>
+                <div class="layui-inline">
+                    <label class="layui-form-label" style="padding: 8px 15px 8px 15px">鍟嗗搧缂栧彿:</label>
+                    <div class="layui-input-inline">
+                        <input name="matnr" style="width: 120px" class="layui-input" placeholder="杈撳叆鍟嗗搧缂栧彿"/>
+                    </div>
+                </div>
+                <div class="layui-inline">
+                    <label class="layui-form-label" style="padding: 8px 15px 8px 15px">鍟嗗搧鍚嶇О:</label>
+                    <div class="layui-input-inline">
+                        <input name="maktx" style="width: 120px" class="layui-input" placeholder="杈撳叆鍟嗗搧鍚嶇О"/>
+                    </div>
+                </div>
+                <div class="layui-inline">
+                    <label class="layui-form-label" style="padding: 8px 15px 8px 15px">鎵樼洏鐮�:</label>
+                    <div class="layui-input-inline">
+                        <input name="zpallet" style="width: 120px" class="layui-input" placeholder="杈撳叆鎵樼洏鐮�"/>
+                    </div>
+                </div>
+                <div class="layui-inline">&emsp;
+                    <button class="layui-btn icon-btn" lay-filter="search" 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>
-        </div>
-        <!-- 鍙� -->
-        <div class="layui-col-md9">
-            <div class="layui-card">
-                <div class="layui-card-body" style="padding: 10px;">
-                    <!-- 琛ㄦ牸宸ュ叿鏍�2 -->
-                    <div id="search-box" class="layui-form toolbar"  style="padding-top: 5px">
-                        <div class="layui-inline">
-                            <label class="layui-form-label" style="padding: 8px 15px 8px 15px">璐т綅:</label>
-                            <div class="layui-input-inline">
-                                <input name="loc_no" style="width: 120px" class="layui-input" placeholder="杈撳叆璐т綅"/>
-                            </div>
-                        </div>
-                        <div class="layui-inline">
-                            <label class="layui-form-label" style="padding: 8px 15px 8px 15px">鍟嗗搧缂栧彿:</label>
-                            <div class="layui-input-inline">
-                                <input name="matnr" style="width: 120px" class="layui-input" placeholder="杈撳叆鍟嗗搧缂栧彿"/>
-                            </div>
-                        </div>
-                        <div class="layui-inline">
-                            <label class="layui-form-label" style="padding: 8px 15px 8px 15px">鍟嗗搧鍚嶇О:</label>
-                            <div class="layui-input-inline">
-                                <input name="maktx" style="width: 120px" class="layui-input" placeholder="杈撳叆鍟嗗搧鍚嶇О"/>
-                            </div>
-                        </div>
-                        <div class="layui-inline">
-                            <label class="layui-form-label" style="padding: 8px 15px 8px 15px">鎵樼洏鐮�:</label>
-                            <div class="layui-input-inline">
-                                <input name="zpallet" style="width: 120px" class="layui-input" placeholder="杈撳叆鎵樼洏鐮�"/>
-                            </div>
-                        </div>
-                        <div class="layui-inline">&emsp;
-                            <button class="layui-btn icon-btn" lay-filter="search" 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>
-                    <table class="layui-hide" id="locDetl" lay-filter="locDetl"></table>
-                </div>
-            </div>
+            <table class="layui-hide" id="locDetl" lay-filter="locDetl"></table>
         </div>
     </div>
-</div>
+
 
 <script type="text/html" id="toolbar">
     <div class="layui-btn-container">
diff --git a/src/main/webapp/views/manLocDetl/manLocDetlTemp.html b/src/main/webapp/views/manLocDetl/manLocDetlTemp.html
new file mode 100644
index 0000000..894fe53
--- /dev/null
+++ b/src/main/webapp/views/manLocDetl/manLocDetlTemp.html
@@ -0,0 +1,111 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <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/tree.css" media="all">
+    <style>
+        body {
+            color: #595959;
+            background-color: #f5f7f9;
+        }
+        .layui-fluid {
+            padding: 15px;
+        }
+        .layui-form.layui-border-box.layui-table-view {
+            /*margin: 15px 0 35px 0;*/
+            width: 100%;
+            border-width: 1px;
+        }
+        .layui-form.layui-border-box.layui-table-view {
+            height: calc(100vh - 160px);
+        }
+        .layui-form.layui-border-box.layui-table-view {
+            margin: 0;
+        }
+        #search-box {
+            padding: 30px 30px 10px 0px;
+            margin-left: 0px;
+        }
+        .layui-form.layui-border-box.layui-table-view {
+            height: 100%;
+        }
+    </style>
+</head>
+<body>
+
+<!-- 鍙� -->
+<div class="layui-card">
+    <div class="layui-card-body" style="padding: 10px;">
+        <!-- 琛ㄦ牸宸ュ叿鏍�2 -->
+        <div id="search-box" class="layui-form toolbar"  style="padding-top: 5px">
+            <div class="layui-inline">
+                <label class="layui-form-label" style="padding: 8px 15px 8px 15px">瀛樿揣缂栫爜:</label>
+                <div class="layui-input-inline">
+                    <input name="matnr" style="width: 120px" class="layui-input" placeholder="杈撳叆瀛樿揣缂栫爜"/>
+                </div>
+            </div>
+            <div class="layui-inline">
+                <label class="layui-form-label" style="padding: 8px 15px 8px 15px">瀛樿揣鍚嶇О:</label>
+                <div class="layui-input-inline">
+                    <input name="maktx" style="width: 120px" class="layui-input" placeholder="杈撳叆瀛樿揣鍚嶇О"/>
+                </div>
+            </div>
+            <div class="layui-inline">
+                <label class="layui-form-label" style="padding: 8px 15px 8px 15px">杞︽:</label>
+                <div class="layui-input-inline">
+                    <input name="batch" style="width: 120px" class="layui-input" placeholder="杈撳叆杞︽鍙�"/>
+                </div>
+            </div>
+            <!-- 鏃ユ湡鑼冨洿 -->
+            <div class="layui-inline" style="width: 300px">
+                <div class="layui-input-inline">
+                    <input class="layui-input layui-laydate-range" name="modi_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
+                </div>
+            </div>
+            <div class="layui-inline">&emsp;
+                <button class="layui-btn icon-btn" lay-filter="search" 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>
+        <table class="layui-hide" id="locDetl" lay-filter="locDetl"></table>
+    </div>
+</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 layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>-->
+        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right;margin-right: -10px">瀵煎嚭</button>
+    </div>
+</script>
+<script type="text/html" id="locNoTpl">
+    <span name="locNo" class="layui-badge layui-badge-gray">{{d.locNo}}</span>
+</script>
+<script type="text/html" id="operate">
+    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="detail">璇︽儏</a>
+    <!--    <a class="layui-btn layui-btn-xs btn-edit" lay-event="edit">缂栬緫</a>-->
+</script>
+
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/manLocDetl/manLocDetlTemp.js" charset="utf-8"></script>
+<!--<script type="text/javascript" src="../../static/js/tagTree.js" charset="utf-8"></script>-->
+<script type="text/javascript" src="../../static/js/nodeTree.js" charset="utf-8"></script>
+
+</body>
+</html>
+
diff --git a/src/main/webapp/views/mat/mat.html b/src/main/webapp/views/mat/mat.html
index 7103755..f5fba90 100644
--- a/src/main/webapp/views/mat/mat.html
+++ b/src/main/webapp/views/mat/mat.html
@@ -192,9 +192,9 @@
                 </div>
 
                 <div class="layui-form-item">
-                    <label class="layui-form-label layui-form-required">鍟嗗搧鍚嶇О</label>
+                    <label class="layui-form-label layui-form-required">瀛樿揣鍚嶇О</label>
                     <div class="layui-input-block">
-                        <input name="maktx" placeholder="璇疯緭鍏ュ晢鍝佸悕绉�" class="layui-input" lay-vertype="tips" lay-verify="required" required="">
+                        <input name="maktx" placeholder="璇疯緭鍏ュ瓨璐у悕绉�" class="layui-input" lay-vertype="tips" lay-verify="required" required="">
                     </div>
                 </div>
                 <div class="layui-form-item">
@@ -207,6 +207,24 @@
                     <label class="layui-form-label">搴撻緞涓婇檺(澶�)</label>
                     <div class="layui-input-block">
                         <input name="storeMaxDate" placeholder="搴撻緞涓婇檺(澶�)" type="number" class="layui-input">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">瀛樿揣鍒嗙被缂栫爜</label>
+                    <div class="layui-input-block">
+                        <input name="brand" placeholder="璇疯緭鍏ュ瓨璐у垎绫荤紪鐮�" class="layui-input">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">璁¢噺鍗曚綅</label>
+                    <div class="layui-input-block">
+                        <input name="unit" placeholder="璇疯緭鍏ヨ閲忓崟浣�" class="layui-input">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">杩涢」绋�</label>
+                    <div class="layui-input-block">
+                        <input name="price" placeholder="璇疯緭鍏ヨ繘椤圭◣" class="layui-input">
                     </div>
                 </div>
                 <div class="layui-form-item">
@@ -223,16 +241,16 @@
 
             <div class="layui-col-md6">
                 <div class="layui-form-item">
-                    <label class="layui-form-label layui-form-required">鍟嗗搧缂栧彿</label>
+                    <label class="layui-form-label layui-form-required">瀛樿揣缂栫爜</label>
                     <div class="layui-input-block">
-                        <input id="matnr" name="matnr" placeholder="璇疯緭鍏ュ晢鍝佺紪鍙�" class="layui-input" lay-vertype="tips" lay-verify="required" required="">
+                        <input id="matnr" name="matnr" placeholder="璇疯緭鍏ュ瓨璐х紪鐮�" class="layui-input" lay-vertype="tips" lay-verify="required" required="">
                     </div>
                 </div>
 
                 <div class="layui-form-item">
-                    <label class="layui-form-label">瑙勬牸</label>
+                    <label class="layui-form-label">瑙勬牸鍨嬪彿</label>
                     <div class="layui-input-block">
-                        <input name="specs" placeholder="璇疯緭鍏ヨ鏍�" class="layui-input">
+                        <input name="specs" placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" class="layui-input">
                     </div>
                 </div>
 
@@ -242,7 +260,32 @@
                         <input name="storeMin" placeholder="搴撳瓨涓嬮檺" type="number" class="layui-input">
                     </div>
                 </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">閫氱敤鍨嬪彿</label>
+                    <div class="layui-input-block">
+                        <input name="model" placeholder="璇疯緭鍏ュ娉�" class="layui-input">
+                    </div>
+                </div>
 
+                <div class="layui-form-item">
+                    <label class="layui-form-label">瀛樿揣鍒嗙被鍚嶇О</label>
+                    <div class="layui-input-block">
+                        <input name="color" placeholder="璇疯緭鍏ュ娉�" class="layui-input">
+                    </div>
+                </div>
+
+                <div class="layui-form-item">
+                    <label class="layui-form-label">閿�椤圭◣</label>
+                    <div class="layui-input-block">
+                        <input name="units" placeholder="璇疯緭鍏ラ攢椤圭◣" class="layui-input">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">寤烘。浜�</label>
+                    <div class="layui-input-block">
+                        <input name="supp" placeholder="璇疯緭鍏ュ缓妗d汉" class="layui-input">
+                    </div>
+                </div>
 
                 <div class="layui-form-item">
                     <label class="layui-form-label">澶囨敞</label>
diff --git a/src/main/webapp/views/picking/picking.html b/src/main/webapp/views/picking/picking.html
new file mode 100644
index 0000000..73450c5
--- /dev/null
+++ b/src/main/webapp/views/picking/picking.html
@@ -0,0 +1,228 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
+    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+    <style>
+        .contain td {
+            border: 1px solid #000;
+            /*font-family: 榛戜綋;*/
+            /*font-weight: bold;*/
+            /*color: #000000;*/
+        }
+    </style>
+</head>
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
+<script type="text/javascript" src="../../static/js/jquery/jQuery.print.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/picking/picking.js" charset="utf-8"></script>
+<body>
+
+<div class="layui-fluid">
+    <div class="layui-card">
+        <div class="layui-card-body">
+            <div class="layui-form toolbar" id="search-box">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <label class="layui-form-label">鎷h揣鍗曞彿:</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="doc_num" placeholder="鎷h揣鍗曞彿" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">&emsp;
+                        <button class="layui-btn icon-btn" lay-filter="search" 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>
+            </div>
+            <table class="layui-hide" id="saasLog" lay-filter="saasLog"></table>
+        </div>
+    </div>
+</div>
+
+
+</body>
+<!-- 琛ㄦ牸鎿嶄綔鍒� -->
+<script type="text/html" id="tbLook">
+    <span class="layui-text">
+        <a href="javascript:;" lay-event="look">
+            <i class="layui-icon" style="font-size: 12px;">&#xe61a;</i> 鏌ョ湅鍗曟嵁鏄庣粏
+        </a>
+    </span>
+</script>
+<!-- 琛ㄦ牸鎿嶄綔鍒� -->
+<script type="text/html" id="operate">
+    {{# if (d.settle == 0 || d.settle == 1) { }}
+    <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-delete" lay-event="del">鍒犻櫎</a>
+    {{# } }}
+    {{# if ((d.settle == 0 || d.settle == 1) && (d.docType == 21 || d.docType == 11 || d.docType == 12)) { }}
+    {{# } }}
+    {{# if (d.settle == 2) { }}
+    <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="complete">瀹岀粨</a>
+    {{# } }}
+    <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="btnPrint2">鎵撳嵃</a>
+ <!--   <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="btnPrint"><img src="../../static/image/nav/fn_3.png" alt="浜岀淮鐮�"></a>
+-->
+</script>
+
+<script type="text/html" id="orderNoTpl">
+    {{d.docNum}}
+<!--    {{# if(d.settle > 1 && d.settle !== 3){ }}-->
+
+<!--    {{# } }}-->
+    <i class="layui-icon layui-icon-about wrk-trace" lay-tips="鏌ョ湅浜岀淮鐮�" lay-direction="2" lay-offset="-10px,0px" lay-event="wrkTrace"></i>
+</script>
+<!-- 鎵撳嵃鎿嶄綔寮圭獥 -->
+<div id="printDataDiv" style="display: none;padding: 20px">
+    <div class="layui-form" style="text-align: center">
+        <hr>
+        <!--鍗曢�夋-->
+        <div class="layui-form-item" style="display: inline-block; margin-bottom: 10px">
+            <input type="radio" name="selectTemplate" value="3" title="妯℃澘涓�" lay-filter="selectTemplateRadio" checked="">
+        </div>
+        <fieldset class="layui-elem-field site-demo-button" style="margin-top: 30px;text-align: left;">
+            <legend>鎵撳嵃棰勮</legend>
+            <div id="template-container" style="margin: 20px;text-align: center">
+                <!-- 棰勮鍥� 3 -->
+                <div id="template-preview-3" class="template-preview" style="display: inline-block">
+                    <table class="contain" width="280" style="overflow: hidden;font-size: xx-small;table-layout: fixed;">
+                    </table>
+                </div>
+            </div>
+        </fieldset>
+    </div>
+</div>
+<div id="box" style="display: block"></div>
+
+<script type="text/template" id="docTypeTpl">
+    <option value="">閫夋嫨绫诲瀷</option>
+    {{#each records}}
+    <option value="{{docId}}">{{docName}}</option>
+    {{/each}}
+</script>
+<!-- 鍒濆鍖栨墦鍗版ā鏉跨殑鏉″舰鐮� -->
+<script type="text/javascript">
+    $('.template-qrcode').attr("src", baseUrl+"/ManPakOut/code/auth?type=2&param=123");
+</script>
+<!-- 妯℃澘寮曟搸 -->
+<!-- 妯℃澘3 -->
+<script type="text/template" id="templatePreview3" class="template-qrcode">
+    {{#each data}}
+    <table class="contain" width="280" style="overflow: hidden;font-size: xx-small;table-layout: fixed;">
+        <thead></thead>
+        <tbody>
+        <img class="template-code template-qrcode" src="{{this.barcodeUrl}}" height="80%">
+<!--        <img class="template-code template-qrcode" src="{{res.data}}" height="80%">-->
+        </tbody>
+    </table>
+    {{/each}}
+</script>
+
+<div id="qrcode" style="display: none;padding: 20px">
+    {{#each result}}
+    <table class="contain" width="280" style="overflow: hidden;font-size: xx-small;table-layout: fixed;">
+        <thead></thead>
+        <tbody>
+        <img class="template-code template-qrcode" src="{{this.barcodeUrl}}" height="80%">
+        <!--        <img class="template-code template-qrcode" src="{{res.data}}" height="80%">-->
+        </tbody>
+    </table>
+    {{/each}}
+</div>
+
+
+<!-- 妯℃澘寮曟搸 -->
+<!-- 妯℃澘4 -->
+<script type="text/template" id="templatePreview4" class="template-qrcode">
+
+    <div style="width: 100%;border-bottom: #0C0C0C solid 2px;margin-bottom: 20px;">
+        <div style="height: 60px;text-align: center;line-height: 60px;font-size: 30px;">鎷h揣鍗�</div>
+        <div style="height: 90px;text-align: center;line-height: 90px;">
+            <img class="template-code template-qrcode" src="{{barcodeUrl}}" width="300">
+        </div>
+        <div style="height: 50px;text-align: center;font-size: 25px;">{{docNum}}</div>
+        <div style="height: 40px;text-align: left;line-height: 40px;font-size: 20px;">鍑哄簱鍗曞彿锛歿{docNum}}</div>
+        <div style="height: 40px;text-align: left;line-height: 40px;font-size: 20px;">鎬绘暟閲忥細{{anfmeSum}}</div>
+    </div>
+    {{#each data}}
+    <table width="100%" style="border:0;border-bottom:#0C0C0C solid 2px; margin-bottom:20px;padding:0;overflow: hidden;font-size: xx-small;table-layout: fixed;">
+        <tr style="height: 25px;font-size: 15px;">
+            <td align="left" scope="col" colspan="1" style="width: 100px;">
+                鏂欏彿:
+            </td>
+            <td>
+                {{this.matnr}}
+            </td>
+            <td align="left" scope="col" colspan="1" rowspan="4">
+                <img class="template-code template-qrcode" src="{{this.barcodeUrl}}" width="100px">
+            </td>
+        </tr>
+        <tr style="height: 25px;font-size: 15px;">
+            <td align="left" scope="col" colspan="1" style="width: 100px;">
+                鍟嗗搧鍚�:
+            </td>
+            <td>
+                {{this.maktx}}
+            </td>
+        </tr>
+        <tr style="height: 25px; font-size: 15px;">
+        <td align="left" scope="col" colspan="1" style="width: 100px;">
+            鎷h揣鏁伴噺:
+        </td>
+        <td>
+            {{this.anfme}}
+        </td>
+        </tr>
+        <tr style="height: 30px; font-size: 15px;">
+            <td align="left" scope="col" colspan="1" style="width: 100px;">
+                搴撲綅:
+            </td>
+            <td align="left" scope="col" colspan="1">
+                {{this.locNo}}
+            </td>
+        </tr>
+        <tr style="height: 30px; font-size: 15px;">
+            <td align="left" scope="col" colspan="1" style="width: 100px;">
+                鏂欑鐮�:
+            </td>
+            <td align="left" scope="col" colspan="1">
+                {{this.containerCode}}
+            </td>
+        </tr>
+        <tr style="height: 30px; font-size: 15px;">
+            <td align="left" scope="col" colspan="1" style="width: 100px;">
+                閿�鍞鍗曞彿:
+            </td>
+            <td align="left" scope="col" colspan="1">
+                {{this.csocode}}
+            </td>
+        </tr>
+        <tr style="height: 30px; font-size: 15px;">
+            <td align="left" scope="col" colspan="1" style="width: 100px;">
+                閿�鍞鍗曡鍙�:
+            </td>
+            <td align="left" scope="col" colspan="1">
+                {{this.isoseq}}
+            </td>
+        </tr>
+    </table>
+    {{/each}}
+</script>
+
+
+</html>
+
diff --git a/src/main/webapp/views/picking/pickingOrder.html b/src/main/webapp/views/picking/pickingOrder.html
new file mode 100644
index 0000000..c467b21
--- /dev/null
+++ b/src/main/webapp/views/picking/pickingOrder.html
@@ -0,0 +1,157 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
+    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+    <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+<!--    <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>-->
+<!--    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>-->
+    <style>
+        .wrk-trace {
+            color: green;
+            cursor: pointer;
+            margin-left: 6px;
+            font-size: 18px;
+        }
+    </style>
+</head>
+<body>
+
+<div class="layui-fluid">
+    <div class="layui-card">
+        <div class="layui-card-body">
+            <div class="layui-form toolbar" id="search-box">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <label class="layui-form-label">鍗曟嵁缂栧彿:</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="order_no" placeholder="鍗曟嵁缂栧彿" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">&emsp;
+                        <button class="layui-btn icon-btn" lay-filter="search" 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>
+                        <button id="orderAddBtn" class="layui-btn icon-btn btn-add"><i class="layui-icon">&#xe654;</i>娣诲姞
+                        </button>
+                    </div>
+                </div>
+            </div>
+            <table class="layui-hide" id="saasLog" lay-filter="saasLog"></table>
+        </div>
+    </div>
+</div>
+
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
+<script type="text/javascript" src="../../static/js/jquery/jQuery.print.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/echarts/echarts.min.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/picking/pickingOrder.js" charset="utf-8"></script>
+</body>
+<!-- 琛ㄦ牸鎿嶄綔鍒� -->
+<script type="text/html" id="tbLook">
+    <span class="layui-text">
+        <a href="javascript:;" lay-event="look">
+            <i class="layui-icon" style="font-size: 12px;">&#xe61a;</i> 鏌ョ湅鍗曟嵁鏄庣粏
+        </a>
+    </span>
+</script>
+
+<script type="text/html" id="settleTpl">
+    <span name="settle"
+          {{# if( d.settle === 1){ }}
+          class="layui-badge layui-badge-red"
+          {{# }else if(d.settle === 2){ }}
+          class="layui-badge layui-badge-green"
+          {{# }else if(d.settle === 3){ }}
+          class="layui-badge layui-badge-gray"
+          {{# }else if(d.settle === 4){ }}
+          class="layui-badge layui-badge-blue"
+          {{# }else if(d.settle === 5){ }}
+          class="layui-badge layui-badge-gray"
+          {{# }else if(d.settle === 6){ }}
+          class="layui-badge layui-badge-gray"
+          {{# } }}
+    >{{d.settle$}}</span>
+</script>
+
+
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="editDialog">
+    <form id="editForm" lay-filter="editForm" class="layui-form model-form">
+        <input name="id" type="hidden"/>
+        <div class="layui-form-item">
+            <label class="layui-form-label">鍗曟嵁绫诲瀷锛�</label>
+            <div class="layui-input-block cool-auto-complete">
+                <input class="layui-input" name="docType" style="display: none" value="骞冲簱鎷h揣鍗�">
+                <input id="docType$" name="docType$" value="骞冲簱鎷h揣鍗�" class="layui-input cool-auto-complete-div" onclick="autoShow(20)" placeholder="骞冲簱鎷h揣鍗�" onfocus=this.blur() lay-verType="tips" lay-verify="required">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">鍗曟嵁缂栧彿锛�</label>
+            <div class="layui-input-block">
+                <input id="orderNo" name="orderNo" placeholder="杈撳叆鍗曟嵁缂栧彿" type="text" class="layui-input" maxlength="20" lay-verType="tips" />
+                <!--                lay-verify="required"-->
+            </div>
+        </div>
+        <div class="layui-form-item" style="position: relative;">
+            <label class="layui-form-label">鍗曟嵁鏄庣粏锛�</label>
+            <div class="layui-input-block">
+                <table id="formSSXMTable" lay-filter="formSSXMTable"></table>
+            </div>
+            <button class="layui-btn layui-btn-sm icon-btn" id="matAddBtnComment"
+                    style="position: absolute; left: 20px;top: 60px;padding: 0 5px;" type="button">
+                <i class="layui-icon">&#xe654;</i>娣诲姞鏄庣粏
+            </button>
+        </div>
+        <div class="layui-form-item text-right">
+            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+            <button class="layui-btn" lay-filter="orderEditSubmit" lay-submit>淇濆瓨</button>
+        </div>
+    </form>
+</script>
+<!-- 琛ㄦ牸鎿嶄綔鍒� -->
+<script type="text/html" id="operate">
+    {{# if (d.settle == 0 || d.settle == 1) { }}
+    <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-delete" lay-event="del">鍒犻櫎</a>
+    <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="manPrint">鐢熸垚鎷h揣鍗�</a>
+    {{# } }}
+    {{# if (d.settle == 2) { }}
+<!--    <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="complete">瀹岀粨</a>-->
+    {{# } }}
+<!--    <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="btnPrint">鎵撳嵃</a>-->
+
+</script>
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="matEditDialog">
+    <form id="matEditForm" lay-filter="matEditForm" class="layui-form model-form">
+        <input name="experimentId" type="hidden"/>
+        <div class="layui-form-item" style="float: left">
+            <label class="layui-form-label">鐗╂枡 - 澶氶��</label>
+            <div class="layui-input-block">
+                <div id="mat" name="mat">
+                </div>
+            </div>
+        </div>
+        <div class="layui-form-item text-right" style="display: inline-block; margin-left: 35px">
+            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+            <button class="layui-btn" lay-filter="matEditSubmit" lay-submit>淇濆瓨</button>
+        </div>
+    </form>
+</script>
+</html>
+

--
Gitblit v1.9.1