From 25314b5ee613c48e7db31138d7fcb8abc4c536be Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期日, 14 一月 2024 20:15:05 +0800
Subject: [PATCH] # 功能完善

---
 src/main/java/com/zy/common/web/BaseController.java              |    3 
 src/main/java/com/zy/asrs/controller/DocTypeController.java      |    1 
 src/main/java/com/zy/asrs/mapper/PlaLogMapper.java               |   12 
 src/main/java/com/zy/common/entity/PlaExcel.java                 |   16 
 src/main/webapp/views/order/order.html                           |   52 +
 src/main/java/com/zy/asrs/service/OrderDetlService.java          |    2 
 src/main/webapp/static/js/pla/plaDetl.js                         |  222 ++++++-
 src/main/webapp/static/js/order/out.js                           |   35 
 src/main/java/com/zy/asrs/entity/param/OrderDomainParam.java     |   13 
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java    |   42 +
 src/main/java/com/zy/asrs/controller/OutController.java          |   68 --
 src/main/java/com/zy/asrs/service/MobileService.java             |    2 
 src/main/java/com/zy/asrs/controller/OrderController.java        |   29 
 src/main/java/com/zy/asrs/entity/PlaLog.java                     |  245 +++++++++
 src/main/java/com/zy/asrs/controller/PlaController.java          |  105 +++
 src/main/java/com/zy/asrs/service/PlaLogService.java             |    9 
 src/main/java/com/zy/asrs/task/OrderLogScheduler.java            |    3 
 src/main/java/com/zy/asrs/controller/MobileController.java       |   17 
 src/main/java/com/zy/asrs/controller/OrderDetlController.java    |   15 
 src/main/webapp/static/js/cool.js                                |   29 
 src/main/java/com/zy/asrs/entity/Pla.java                        |  124 +++
 src/main/java/com/zy/asrs/controller/LocOwnerController.java     |    1 
 src/main/webapp/views/pla/returned.html                          |    5 
 src/main/java/com/zy/asrs/entity/PlaQty.java                     |    6 
 src/main/java/com/zy/asrs/service/impl/PlaServiceImpl.java       |   20 
 src/main/webapp/views/pla/sellout.html                           |  175 ++++-
 src/main/java/com/zy/asrs/utils/PlaExcelListener.java            |   97 +++
 src/main/webapp/views/pla/plaDetl.html                           |  137 +++-
 src/main/java/com/zy/asrs/controller/NodeController.java         |   13 
 src/main/java/com/zy/asrs/controller/PlaQtyController.java       |    4 
 src/main/java/com/zy/asrs/entity/param/GlobleParameter.java      |    9 
 src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java |    5 
 src/main/webapp/static/js/order/order.js                         |   66 +-
 src/main/webapp/views/order/out.html                             |   16 
 src/main/java/com/zy/asrs/service/impl/PlaLogServiceImpl.java    |   12 
 src/main/webapp/static/js/pla/waitingPakin.js                    |    1 
 36 files changed, 1,253 insertions(+), 358 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/DocTypeController.java b/src/main/java/com/zy/asrs/controller/DocTypeController.java
index 72ce073..4641c70 100644
--- a/src/main/java/com/zy/asrs/controller/DocTypeController.java
+++ b/src/main/java/com/zy/asrs/controller/DocTypeController.java
@@ -112,6 +112,7 @@
             Map<String, Object> map = new HashMap<>();
             map.put("id", docType.getDocId());
             map.put("value", docType.getDocName());
+            map.put("type","docType");
             result.add(map);
         }
         return R.ok(result);
diff --git a/src/main/java/com/zy/asrs/controller/LocOwnerController.java b/src/main/java/com/zy/asrs/controller/LocOwnerController.java
index 27aad1e..f9e9513 100644
--- a/src/main/java/com/zy/asrs/controller/LocOwnerController.java
+++ b/src/main/java/com/zy/asrs/controller/LocOwnerController.java
@@ -123,6 +123,7 @@
             map.put("value", locOwner.getOwner());
             map.put("phone", locOwner.getPhone());
             map.put("addr", locOwner.getAddr());
+            map.put("type", "locOwner");
             result.add(map);
         }
         return R.ok(result);
diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index 0ec5bf0..c305d33 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -17,6 +17,7 @@
 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.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
@@ -427,7 +428,14 @@
         if(Cools.isEmpty(locNo) || Cools.isEmpty(batch) || Cools.isEmpty(packageNo)){
             return R.error("鏈夊弬鏁颁负绌猴紝鏃犳硶鍏ュ簱");
         }
-        mobileService.plaPakin(locNo,batch,packageNo);
+        //娴嬭瘯
+        if(true){
+            User user = new User();
+            user.setUsername("test");
+            mobileService.plaPakin(locNo,batch,packageNo,user);
+            return R.ok();
+        }
+        mobileService.plaPakin(locNo,batch,packageNo,getUser());
         return R.ok();
     }
 
@@ -468,4 +476,11 @@
         mobileService.plaPakout(locNo,batch,packageNo,orderNo,orderDetlId,wrkNo,anfme);
         return R.ok();
     }
+
+    public static void main(String[] args) {
+        String aa = "aabb";
+        String[] ccs = aa.split("cc");
+        System.out.println(ccs[0]);
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/controller/NodeController.java b/src/main/java/com/zy/asrs/controller/NodeController.java
index 1a3d6b3..15baa78 100644
--- a/src/main/java/com/zy/asrs/controller/NodeController.java
+++ b/src/main/java/com/zy/asrs/controller/NodeController.java
@@ -13,9 +13,8 @@
 import com.core.common.DateUtils;
 import com.core.common.R;
 import com.core.exception.CoolException;
-import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.Node;
 import com.zy.asrs.entity.param.InitPakoutParam;
-import com.zy.asrs.entity.param.LocMastInitParam;
 import com.zy.asrs.entity.param.NodeInitPatam;
 import com.zy.asrs.entity.param.PakinParam;
 import com.zy.asrs.entity.result.KeyValueVo;
@@ -24,7 +23,6 @@
 import com.zy.common.entity.NodeExcel;
 import com.zy.common.entity.NodeExcelListener;
 import com.zy.common.entity.Parameter;
-import com.zy.common.model.Shelves;
 import com.zy.common.utils.ListUtils;
 import com.zy.common.utils.NodeUtils;
 import com.zy.common.utils.TreeUtils;
@@ -38,8 +36,6 @@
 import java.io.IOException;
 import java.net.URLEncoder;
 import java.util.*;
-
-import static jdk.nashorn.api.scripting.ScriptUtils.convert;
 
 @RestController
 public class NodeController extends BaseController {
@@ -392,8 +388,11 @@
                         locNo = param.getName()+"-" +String.format("%02d", r) + String.format("%02d", b) + String.format("%02d", l);
                     }
 
-
-
+                    //瀹㈡埛瑕佹眰鏍煎紡浣岮-01-01-01
+                    StringBuilder sb = new StringBuilder(locNo);
+                    sb.insert(sb.length()-4,"-");
+                    sb.insert(sb.length()-2,"-");
+                    locNo = sb.toString();
 
                     if (locNo == null){
                         continue;
diff --git a/src/main/java/com/zy/asrs/controller/OrderController.java b/src/main/java/com/zy/asrs/controller/OrderController.java
index 0302aef..f47db1a 100644
--- a/src/main/java/com/zy/asrs/controller/OrderController.java
+++ b/src/main/java/com/zy/asrs/controller/OrderController.java
@@ -133,13 +133,13 @@
                 DateUtils.convert(now),    // 鍗曟嵁鏃ユ湡
                 param.getDocType(),    // 鍗曟嵁绫诲瀷
                 null,    // 椤圭洰缂栧彿
-                null,    //
+                param.getItemName(),    //
                 null,    // 璋冩嫧椤圭洰缂栧彿
                 null,    // 鍒濆绁ㄦ嵁鍙�
-                null,    // 绁ㄦ嵁鍙�
-                null,    // 瀹㈡埛缂栧彿
-                null,    // 瀹㈡埛
-                null,    // 鑱旂郴鏂瑰紡
+                param.getNumber(),    // 绁ㄦ嵁鍙�
+                param.getCstmr(),    // 瀹㈡埛缂栧彿
+                param.getCstmrName(),    // 瀹㈡埛
+                param.getTel(),    // 鑱旂郴鏂瑰紡
                 null,    // 鎿嶄綔浜哄憳
                 null,    // 鍚堣閲戦
                 null,    // 浼樻儬鐜�
@@ -209,9 +209,14 @@
         Date now = new Date();
         Long userId = getUserId();
         // 淇敼涓绘。
-        if (!param.getDocType().equals(order.getDocType())) {
+        if (!param.getDocType().equals(order.getDocType()) || param.getCstmrName() != order.getCstmrName() || !Cools.eq(param.getItemName(),order.getItemName())) {
             order.setDocType(param.getDocType());
             order.setUpdateBy(userId);
+            order.setCstmr(param.getCstmr());
+            order.setCstmrName(param.getCstmrName());
+            order.setTel(param.getTel());
+            order.setNumber(param.getNumber());
+            order.setItemName(param.getItemName());
             order.setUpdateTime(now);
             if (!orderService.updateById(order)) {
                 throw new CoolException("淇敼璁㈠崟绫诲瀷澶辫触");
@@ -227,8 +232,7 @@
         List<DetlDto> list = new ArrayList<>();
         for (OrderDetl orderDetl : param.getOrderDetlList()) {
             DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch());
-            //if (DetlDto.has(list, dto)) {
-            if(false){
+            if (DetlDto.has(list, dto)) {
                 OrderDetl item = orderDetlService.selectItem(order.getId(), orderDetl.getMatnr(), orderDetl.getBatch());
                 item.setAnfme(item.getAnfme() + orderDetl.getAnfme());
                 if (!orderDetlService.updateById(item)) {
@@ -343,13 +347,18 @@
     @ManagerAuth
     public R query(String condition) {
         EntityWrapper<Order> wrapper = new EntityWrapper<>();
-        wrapper.like("id", condition);
+        wrapper.like("order_no", condition);
         Page<Order> page = orderService.selectPage(new Page<>(0, 10), wrapper);
         List<Map<String, Object>> result = new ArrayList<>();
         for (Order order : page.getRecords()){
             Map<String, Object> map = new HashMap<>();
             map.put("id", order.getId());
             map.put("value", order.getOrderNo());
+            map.put("customer",order.getCstmrName());
+            map.put("phone",order.getTel());
+            map.put("addr",order.getNumber());
+            map.put("allocate",order.getItemName());
+            map.put("type","order");
             result.add(map);
         }
         return R.ok(result);
@@ -393,7 +402,7 @@
         List<OrderDetlVo> orderDetlVos=new ArrayList<>();
         OrderDetlVo orderDetlVo=new OrderDetlVo();
         for (OrderDetl o:
-             list) {
+                list) {
             orderDetlVo.setOrderNo(o.getOrderNo());
             orderDetlVo.setMatnr(o.getMatnr());
             orderDetlVo.setMaktx(o.getMaktx());
diff --git a/src/main/java/com/zy/asrs/controller/OrderDetlController.java b/src/main/java/com/zy/asrs/controller/OrderDetlController.java
index 59dfbe0..7417ecb 100644
--- a/src/main/java/com/zy/asrs/controller/OrderDetlController.java
+++ b/src/main/java/com/zy/asrs/controller/OrderDetlController.java
@@ -173,14 +173,25 @@
     @RequestMapping(value = "/orderDetlQuery/auth")
     @ManagerAuth
     public R query(String condition) {
+
+        if(condition.split(",").length < 2){
+            return R.ok();
+        }
+
+        String maktxCondition = condition.split(",")[0];
+        Long orderId = Long.parseLong(condition.split(",")[1]);
+
         EntityWrapper<OrderDetl> wrapper = new EntityWrapper<>();
-        wrapper.like("id", condition);
+        wrapper.eq("order_id",orderId);
+        wrapper.like("maktx", maktxCondition);
         Page<OrderDetl> page = orderDetlService.selectPage(new Page<>(0, 10), wrapper);
         List<Map<String, Object>> result = new ArrayList<>();
         for (OrderDetl orderDetl : page.getRecords()){
             Map<String, Object> map = new HashMap<>();
             map.put("id", orderDetl.getId());
-            map.put("value", orderDetl.getId());
+            map.put("value", orderDetl.getMaktx());
+            map.put("weight",orderDetl.getAnfme() - orderDetl.getWorkQty());
+            map.put("type","orderDetl");
             result.add(map);
         }
         return R.ok(result);
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index 02b14bc..934e4e8 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -11,15 +11,13 @@
 import com.zy.common.model.TaskDto;
 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.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.math.BigDecimal;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -47,10 +45,6 @@
     private ManPakOutService manPakOutService;
     @Autowired
     private ManLocDetlService manLocDetlService;
-    @Autowired
-    private PlaService plaService;
-    @Autowired
-    private PlaQtyService plaQtyService;
 
 
     @PostMapping("/out/pakout/orderDetlIds/auth")
@@ -74,15 +68,6 @@
             }
         }
 
-        List<PlaQty> plaQties = new ArrayList<>();
-
-        for (OrderDetl orderDetl : orderDetls) {
-            plaService.queryStock(orderDetl,plaQties);
-        }
-
-        return R.ok(plaQties);
-
-/*
         Set<String> exist = new HashSet<>();
 
         for (OrderDetl orderDetl : orderDetls) {
@@ -123,13 +108,12 @@
                 locDtos.add(locDto);
             }
         }
-        return R.ok().add(locDtos); */
+        return R.ok().add(locDtos);
     }
 
     @PostMapping("/out/pakout/auth")
     @ManagerAuth(memo = "璁㈠崟鍑哄簱")
     public synchronized R pakout(@RequestBody List<LocDto> locDtos) throws InterruptedException {
-
         int[][] is=new int[locDtos.size()][2];
         for (int i=0;i<locDtos.size();i++){
             LocDto locDto=locDtos.get(locDtos.size()-1-i);
@@ -184,31 +168,8 @@
 
     @PostMapping("/out/pakout2/auth")
     @ManagerAuth(memo = "鐢熸垚鎷h揣鍗�")
-    @Transactional
-    public synchronized R pakout2(@RequestBody List<PlaQty> plaQties) throws InterruptedException {
-
-        for (PlaQty plaQty : plaQties){
-            if(Cools.isEmpty(plaQty.getLocNo())){
-                continue;
-            }
-            //鎻掑叆涓�鏉la鐨勬嫞璐т俊鎭�
-            plaQtyService.insert(plaQty);
-            addPakOUT(plaQty);
-
-            Pla pla = plaService.selectByBatchAndPackageNo(plaQty.getBatch(), plaQty.getPackageNo());
-            //pla鏄庣粏涓慨鏀归攣瀹氬嚭搴撶殑閲嶉噺
-            pla.setQtyAnfme(pla.getQtyAnfme() + plaQty.getQtyAnfme());
-            plaService.updateById(pla);
-
-            OrderDetl orderDetl = orderDetlService.selectById(plaQty.getOrderDetlId());
-            orderDetl.setWorkQty(orderDetl.getWorkQty() + plaQty.getQtyAnfme());
-            orderDetlService.updateById(orderDetl);
-            orderService.updateSettle(plaQty.getOrderId(),2L,null);
-        }
-
-        return R.ok();
-
-    /*  int[][] is = new int[locDtos.size()][2];
+    public synchronized R pakout2(@RequestBody List<LocDto> locDtos) throws InterruptedException {
+        int[][] is = new int[locDtos.size()][2];
         List<String> matnrs=new ArrayList<>();
         for (int i = 0; i < locDtos.size(); i++) {
             LocDto locDto = locDtos.get(locDtos.size() - 1 - i);
@@ -300,25 +261,6 @@
                 addPakOUT(locDto,uuid).equals(R.ok());
             }
         }
-        return R.ok(); */
-    }
-
-    private R addPakOUT(PlaQty plaQty){
-        ManPakOut manPakOut=new ManPakOut();
-        manPakOut.setWrkNo(plaQty.getOrderNo()+"-"+System.currentTimeMillis());
-        manPakOut.setWrkSts((long)1);
-        manPakOut.setAnfme(plaQty.getQtyAnfme());
-        manPakOut.setLocNo(plaQty.getLocNo());
-        manPakOut.setBatch(plaQty.getBatch());
-        manPakOut.setBarcode(plaQty.getPackageNo());
-        manPakOut.setUuid(String.valueOf(System.currentTimeMillis()));
-        manPakOut.setCreateTime(new Date());
-        manPakOut.setUpdateTime(new Date());
-        manPakOut.setCount(0.0);
-        manPakOut.setDocNum(plaQty.getOrderNo());
-        manPakOut.setNodeId(plaQty.getOrderDetlId());
-        manPakOut.setStatus(0);
-        manPakOutService.insert(manPakOut);
         return R.ok();
     }
 
diff --git a/src/main/java/com/zy/asrs/controller/PlaController.java b/src/main/java/com/zy/asrs/controller/PlaController.java
index f8978f1..815f418 100644
--- a/src/main/java/com/zy/asrs/controller/PlaController.java
+++ b/src/main/java/com/zy/asrs/controller/PlaController.java
@@ -1,26 +1,30 @@
 package com.zy.asrs.controller;
 
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
 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.core.exception.CoolException;
-import com.zy.asrs.entity.ManPakOut;
-import com.zy.asrs.entity.Pla;
-import com.zy.asrs.entity.PlaQty;
-import com.zy.asrs.service.ManPakOutService;
-import com.zy.asrs.service.PlaQtyService;
-import com.zy.asrs.service.PlaService;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.service.*;
+import com.zy.asrs.utils.PlaExcelListener;
 import com.zy.asrs.utils.SaasUtils;
+import com.zy.common.entity.PlaExcel;
 import com.zy.common.web.BaseController;
+import lombok.Synchronized;
 import org.springframework.beans.BeanUtils;
 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 org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.net.URLEncoder;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -34,6 +38,12 @@
     private PlaQtyService plaQtyService;
     @Autowired
     private ManPakOutService manPakOutService;
+    @Autowired
+    private OrderService orderService;
+    @Autowired
+    private OrderDetlService orderDetlService;
+    @Autowired
+    private PlaLogService plaLogService;
 
     @RequestMapping(value = "/pla/list/auth")
     @ManagerAuth
@@ -44,6 +54,7 @@
         excludeTrash(param);
         EntityWrapper<Pla> wrapper = new EntityWrapper<>();
         convert(param, wrapper);
+        wrapper.orderBy("pakin_time",false);
         allLike(Pla.class, param.keySet(), wrapper, condition);
         return R.ok(plaService.selectPage(new Page<>(curr, limit), wrapper));
     }
@@ -63,6 +74,11 @@
     public R update(@RequestBody List<Pla> plas) {
         System.out.println(plas.toString());
         plas.forEach(pla -> {
+            Pla plaSave = plaService.selectById(pla.getId());
+            PlaLog plaLog = new PlaLog();
+            BeanUtils.copyProperties(plaSave,plaLog);
+            plaLog.setId(null);
+            plaLogService.insert(plaLog);
             plaService.updateById(pla);
         });
         return R.ok();
@@ -76,29 +92,52 @@
 
     @RequestMapping(value = "/pla/sellout/auth")
     @ManagerAuth
+    @Transactional
+    @Synchronized
     public R sellout(@RequestBody List<Pla> plas) {
 
-        plas.forEach(pla -> {
+        String orderNo = plas.get(0).getOrderNo();
+        String maktx = plas.get(0).getBrand();
+        Double allOrderWeight = 0.0;
+        Order order = orderService.selectByNo(orderNo);
+        OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMaktx(orderNo, maktx);
+
+        for (Pla pla : plas){
+
+            allOrderWeight += pla.getOrderWeight();
 
             if(pla.getWeightAnfme() - pla.getQtyAnfme() - pla.getOrderWeight() < 0){
-                throw new CoolException("璇ュ簱瀛樺墿浣欓噸閲忎笉瓒筹紝璇疯皟鏁村嚭搴撻噸閲�");
+                throw new CoolException("鎵瑰彿:" + pla.getBatch() +"锛屽寘鍙�:" + pla.getPackageNo() +" 鍓╀綑鍙嚭搴撻噸閲忎笉瓒筹紝璇疯皟鏁村嚭搴撻噸閲�");
             }
             pla.setQtyAnfme(pla.getQtyAnfme() + pla.getOrderWeight());
             pla.setHandlerBy(getUser().getUsername());
             pla.setStatus("寰呭嚭搴�");
             pla.setPakoutTime(pla.getPakoutTime().split("\\(")[0]);
+            //鐢熸垚姝ゆ浣滀笟淇℃伅
             PlaQty plaQty = new PlaQty();
             BeanUtils.copyProperties(pla,plaQty);
             plaQty.setCreateTime(new Date());
             plaQty.setId(null);
-
+            plaQty.setTransfer(order.getDocType$());
+            plaQty.setOrderDetlId(orderDetl.getId());
             plaService.updateById(pla);
             plaQtyService.insert(plaQty);
-
             //鐢熸垚鎷h揣鍗�
             addPakOUT(plaQty);
 
-        });
+        };
+
+        //淇敼鍗曟嵁淇℃伅
+        if(orderDetl.getAnfme()-orderDetl.getWorkQty()-allOrderWeight < 0){
+            throw new CoolException("璇ヨ鍗曞嚭搴撴暟閲忓ぇ浜庤鍗曞緟鍑烘暟閲忥紝璇烽噸鏂伴�夋嫨鍑哄簱鏁伴噺");
+        }
+        if(order.getStatus() < 2){
+            orderService.updateSettle(order.getId(),2L,getUserId());
+        }
+
+        orderDetl.setWorkQty(orderDetl.getWorkQty() + allOrderWeight);
+        orderDetlService.updateById(orderDetl);
+
 
         return R.ok();
     }
@@ -125,6 +164,36 @@
         return R.ok();
     }
 
+    /**
+     * excel瀵煎叆妯℃澘涓嬭浇
+     */
+    @RequestMapping(value = "/pla/excel/import/mould")
+    public void plaExcelImportMould(HttpServletResponse response) throws IOException {
+        List<PlaExcel> excels = new ArrayList<>();
+        response.setContentType("application/vnd.ms-excel");
+        response.setCharacterEncoding("utf-8");
+        String fileName = URLEncoder.encode("鑱氫钩閰窫xcel瀵煎叆妯℃澘", "UTF-8");
+        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+        EasyExcel.write(response.getOutputStream(), PlaExcel.class)
+                .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
+                .sheet("sheet1")
+                .doWrite(excels);
+    }
+
+    // excel瀵煎叆
+    @PostMapping(value = "/pla/excel/import/auth")
+    @ManagerAuth(memo = "pla妗f鏁版嵁瀵煎叆")
+    @Transactional
+    public R matExcelImport(MultipartFile file) throws IOException {
+        PlaExcelListener listener = new PlaExcelListener(getUserId());
+        try {
+            EasyExcel.read(file.getInputStream(), PlaExcel.class, listener).sheet().doRead();
+        }catch (Exception e){
+            throw new CoolException("瀵煎叆鐨勬暟鎹牸寮忛敊璇紝鍘熷洜锛�" + e.getMessage());
+        }
+        return R.ok("鎴愬姛鍚屾"+listener.getTotal()+"鏉la鐗╂枡鏁版嵁");
+    }
+
     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());
@@ -132,6 +201,10 @@
                 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().contains("Min")){
+                wrapper.ge(entry.getKey().substring(0,entry.getKey().length()-3),val);
+            }else if (entry.getKey().contains("Max")){
+                wrapper.le(entry.getKey().substring(0,entry.getKey().length()-3),val);
             } else {
                 wrapper.like(entry.getKey(), val);
             }
@@ -143,6 +216,7 @@
         manPakOut.setWrkNo(plaQty.getOrderNo()+"-"+System.currentTimeMillis());
         manPakOut.setWrkSts((long)1);
         manPakOut.setAnfme(plaQty.getOrderWeight());
+        manPakOut.setMaktx(plaQty.getBrand());
         manPakOut.setLocNo(plaQty.getLocNo());
         manPakOut.setBatch(plaQty.getBatch());
         manPakOut.setBarcode(plaQty.getPackageNo());
@@ -152,6 +226,7 @@
         manPakOut.setCount(0.0);
         manPakOut.setDocNum(plaQty.getOrderNo());
         manPakOut.setStatus(0);
+        manPakOut.setDocId(plaQty.getOrderDetlId());
         manPakOut.setNodeId(plaQty.getId());
         //manPakOut.setNodeId(plaQty.getOrderDetlId());
         manPakOutService.insert(manPakOut);
diff --git a/src/main/java/com/zy/asrs/controller/PlaQtyController.java b/src/main/java/com/zy/asrs/controller/PlaQtyController.java
index 3e2ef0b..dee0d6c 100644
--- a/src/main/java/com/zy/asrs/controller/PlaQtyController.java
+++ b/src/main/java/com/zy/asrs/controller/PlaQtyController.java
@@ -57,6 +57,9 @@
             if (Cools.isEmpty(manPakOut.getStatus()) || manPakOut.getStatus() != 1) {
                 return false;
             }
+            if(plaQty.getReturned() > 0){
+                return false;
+            }
 
             return true;
         }).collect(Collectors.toList());
@@ -86,6 +89,7 @@
             map.put("id", plaQty.getId());
             map.put("value", orderNo);
             map.put("customer", plaQty.getCustomer());
+            map.put("type","returned");
             result.add(map);
         }
         return R.ok(result);
diff --git a/src/main/java/com/zy/asrs/entity/Pla.java b/src/main/java/com/zy/asrs/entity/Pla.java
index e55fe3e..9b7a25b 100644
--- a/src/main/java/com/zy/asrs/entity/Pla.java
+++ b/src/main/java/com/zy/asrs/entity/Pla.java
@@ -1,13 +1,16 @@
 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 io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.springframework.format.annotation.DateTimeFormat;
 
+import java.text.SimpleDateFormat;
 import java.util.Date;
 
 @Data
@@ -19,111 +22,175 @@
 
     //鍏ュ簱鏃堕棿
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
-    @TableField("pakin_time")
-    private String pakinTime;
+    private Date pakinTime;
 
-    //鎵瑰彿
-    @TableField("batch")
-    private String batch;
+    //涓讳綋
+    @ExcelProperty(value = "涓讳綋")
+    @TableField("owner")
+    private String owner;
 
-    //鍖呰鍙�
-    @TableField("package_no")
-    private String packageNo;
+    //涓讳綋
+    @ExcelProperty(value = "鐗╄祫绫诲埆")
+    @TableField("type")
+    private String type;
 
-    //鐗屽彿
-    @TableField("brand")
-    private String brand;
-
-    //閲嶉噺
-    @TableField("weight")
-    private Double weight;
+    //鐢熶骇璁㈠崟缂栧彿
+    @ExcelProperty(value = "鐢熶骇璁㈠崟缂栧彿")
+    @TableField("pro_order_no")
+    private String proOrderNo;
 
     //杞﹂棿
+    @ExcelProperty(value = "鐢熶骇杞﹂棿")
     @TableField("workshop")
     private String workshop;
 
     //鐢熶骇绾�
+    @ExcelProperty(value = "鐢熶骇绾�")
     @TableField("line")
     private String line;
 
+    //鐢熶骇绾�
+    @ExcelProperty(value = "瀛樿揣缂栫爜")
+    @TableField("matnr")
+    private String matnr;
+
+    //鐗屽彿
+    @ExcelProperty(value = "鐗屽彿")
+    @TableField("brand")
+    private String brand;
+
+    //鎵瑰彿
+    @TableField("batch")
+    @ExcelProperty(value = "鎵瑰彿")
+    private String batch;
+
+    //鍖呰鍙�
+    @TableField("package_no")
+    @ExcelProperty(value = "鍖呰鍙�")
+    private String packageNo;
+
+    //鍖呰鍙�
+    @ExcelProperty(value = "鐢熶骇鏃ユ湡")
+    @TableField("pro_date")
+    private String proDate;
+
+    //閲嶉噺
+    @TableField("weight")
+    @ExcelProperty(value = "閲嶉噺")
+    private Double weight;
+
+    @ApiModelProperty(value= "鍗曚綅")
+    @ExcelProperty(value = "鍗曚綅")
+    @TableField("unit")
+    private String unit;
+
     //鍖呰绫诲瀷
     @TableField("package_type")
+    @ExcelProperty(value = "鍖呰绫诲瀷")
     private String packageType;
 
     //鎵樼洏绫诲瀷
     @TableField("zpallet_type")
+    @ExcelProperty(value = "鎵樼洏绫诲瀷")
     private String zpalletType;
 
     //缂犺啘
     @TableField("film_wrap")
+    @ExcelProperty(value = "缂犺啘")
     private String filmWrap;
 
     //鐔旀寚
     @TableField("finger_melting")
+    @ExcelProperty(value = "鐔旀寚")
     private Double fingerMelting;
+
+    //姘村垎
+    @TableField("water")
+    @ExcelProperty(value = "姘村垎")
+    private Double water;
 
     //鐔旂偣
     @TableField("fusing_point")
+    @ExcelProperty(value = "鐔旂偣")
     private Double fusingPoint;
 
     //鎸ュ彂浠�1
     @TableField("vadf1")
+    @ExcelProperty(value = "鎸ュ彂浠�1")
     private Double vadf1;
 
     //鎸ュ彂浠�2
     @TableField("vadf2")
+    @ExcelProperty(value = "鎸ュ彂浠�2")
     private Double vadf2;
 
     //榛勫害
     @TableField("yellowness")
+    @ExcelProperty(value = "榛勫害")
     private Double yellowness;
 
     //涓嶉�忔槑搴�
     @TableField("opacity")
+    @ExcelProperty(value = "涓嶉�忔槑搴�")
     private Double opacity;
-
-    //姘村垎
-    @TableField("water")
-    private Double water;
 
     //L鍊�
     @TableField("l")
+    @ExcelProperty(value = "l鍊�")
     private Double l;
 
     //a鍊�
     @TableField("a")
+    @ExcelProperty(value = "a鍊�")
     private Double a;
 
     //b鍊�
     @TableField("b")
+    @ExcelProperty(value = "b鍊�")
     private Double b;
 
     //濉厖
     @TableField("fill_in")
+    @ExcelProperty(value = "濉厖")
     private Double fillIn;
 
     //璐ㄩ噺鐘舵��
     @TableField("mass_state")
+    @ExcelProperty(value = "璐ㄩ噺鐘朵綋")
     private String massState;
 
     //璐ㄩ噺闂
     @TableField("problem")
+    @ExcelProperty(value = "澶囨敞")
     private String problem;
 
-    //浠撳簱
-    @TableField("stash")
-    private String stash;
+    //搴旂敤鏂瑰悜
+    @ExcelProperty(value = "搴旂敤鏂瑰悜")
+    @TableField("direction")
+    private String direction;
 
-    //搴撲綅
-    @TableField("loc_no")
-    private String locNo;
+    //瀛樻斁浣嶇疆
+    @ExcelProperty(value = "瀛樻斁浣嶇疆")
+    @TableField("position")
+    private String position;
 
     //鍓╀綑閲嶉噺
     @TableField("weight_anfme")
+    @ExcelProperty(value = "鍏ュ簱閲�")
     private Double weightAnfme = 0.0;
     //寰呭嚭搴撴暟閲�
     @TableField("qty_anfme")
     private Double qtyAnfme = 0.0;
+
+    //浠撳簱
+    @TableField("stash")
+    //@ExcelProperty(value = "浠撳簱")
+    private String stash;
+
+    //搴撲綅
+    @TableField("loc_no")
+    //@ExcelProperty(value = "搴撲綅")
+    private String locNo;
 
     //鐘舵��
     @TableField("status")
@@ -168,4 +235,11 @@
 
     @TableField("memo")
     private String memo;
+
+    public String getPakinTime$() {
+        if (Cools.isEmpty(this.pakinTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.pakinTime);
+    }
 }
diff --git a/src/main/java/com/zy/asrs/entity/PlaLog.java b/src/main/java/com/zy/asrs/entity/PlaLog.java
new file mode 100644
index 0000000..f9b42ef
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/PlaLog.java
@@ -0,0 +1,245 @@
+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 io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+@Data
+@TableName("asr_pla_detl_log")
+public class PlaLog {
+    @ApiModelProperty(value= "ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    //鍏ュ簱鏃堕棿
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date pakinTime;
+
+    //涓讳綋
+    @ExcelProperty(value = "涓讳綋")
+    @TableField("owner")
+    private String owner;
+
+    //涓讳綋
+    @ExcelProperty(value = "鐗╄祫绫诲埆")
+    @TableField("type")
+    private String type;
+
+    //鐢熶骇璁㈠崟缂栧彿
+    @ExcelProperty(value = "鐢熶骇璁㈠崟缂栧彿")
+    @TableField("pro_order_no")
+    private String proOrderNo;
+
+    //杞﹂棿
+    @ExcelProperty(value = "鐢熶骇杞﹂棿")
+    @TableField("workshop")
+    private String workshop;
+
+    //鐢熶骇绾�
+    @ExcelProperty(value = "鐢熶骇绾�")
+    @TableField("line")
+    private String line;
+
+    //鐢熶骇绾�
+    @ExcelProperty(value = "瀛樿揣缂栫爜")
+    @TableField("matnr")
+    private String matnr;
+
+    //鐗屽彿
+    @ExcelProperty(value = "鐗屽彿")
+    @TableField("brand")
+    private String brand;
+
+    //鎵瑰彿
+    @TableField("batch")
+    @ExcelProperty(value = "鎵瑰彿")
+    private String batch;
+
+    //鍖呰鍙�
+    @TableField("package_no")
+    @ExcelProperty(value = "鍖呰鍙�")
+    private String packageNo;
+
+    //鍖呰鍙�
+    @ExcelProperty(value = "鐢熶骇鏃ユ湡")
+    @TableField("pro_date")
+    private String proDate;
+
+    //閲嶉噺
+    @TableField("weight")
+    @ExcelProperty(value = "閲嶉噺")
+    private Double weight;
+
+    @ApiModelProperty(value= "鍗曚綅")
+    @ExcelProperty(value = "鍗曚綅")
+    @TableField("unit")
+    private String unit;
+
+    //鍖呰绫诲瀷
+    @TableField("package_type")
+    @ExcelProperty(value = "鍖呰绫诲瀷")
+    private String packageType;
+
+    //鎵樼洏绫诲瀷
+    @TableField("zpallet_type")
+    @ExcelProperty(value = "鎵樼洏绫诲瀷")
+    private String zpalletType;
+
+    //缂犺啘
+    @TableField("film_wrap")
+    @ExcelProperty(value = "缂犺啘")
+    private String filmWrap;
+
+    //鐔旀寚
+    @TableField("finger_melting")
+    @ExcelProperty(value = "鐔旀寚")
+    private Double fingerMelting;
+
+    //姘村垎
+    @TableField("water")
+    @ExcelProperty(value = "姘村垎")
+    private Double water;
+
+    //鐔旂偣
+    @TableField("fusing_point")
+    @ExcelProperty(value = "鐔旂偣")
+    private Double fusingPoint;
+
+    //鎸ュ彂浠�1
+    @TableField("vadf1")
+    @ExcelProperty(value = "鎸ュ彂浠�1")
+    private Double vadf1;
+
+    //鎸ュ彂浠�2
+    @TableField("vadf2")
+    @ExcelProperty(value = "鎸ュ彂浠�2")
+    private Double vadf2;
+
+    //榛勫害
+    @TableField("yellowness")
+    @ExcelProperty(value = "榛勫害")
+    private Double yellowness;
+
+    //涓嶉�忔槑搴�
+    @TableField("opacity")
+    @ExcelProperty(value = "涓嶉�忔槑搴�")
+    private Double opacity;
+
+    //L鍊�
+    @TableField("l")
+    @ExcelProperty(value = "l鍊�")
+    private Double l;
+
+    //a鍊�
+    @TableField("a")
+    @ExcelProperty(value = "a鍊�")
+    private Double a;
+
+    //b鍊�
+    @TableField("b")
+    @ExcelProperty(value = "b鍊�")
+    private Double b;
+
+    //濉厖
+    @TableField("fill_in")
+    @ExcelProperty(value = "濉厖")
+    private Double fillIn;
+
+    //璐ㄩ噺鐘舵��
+    @TableField("mass_state")
+    @ExcelProperty(value = "璐ㄩ噺鐘朵綋")
+    private String massState;
+
+    //璐ㄩ噺闂
+    @TableField("problem")
+    @ExcelProperty(value = "澶囨敞")
+    private String problem;
+
+    //搴旂敤鏂瑰悜
+    @ExcelProperty(value = "搴旂敤鏂瑰悜")
+    @TableField("direction")
+    private String direction;
+
+    //瀛樻斁浣嶇疆
+    @ExcelProperty(value = "瀛樻斁浣嶇疆")
+    @TableField("position")
+    private String position;
+
+    //鍓╀綑閲嶉噺
+    @TableField("weight_anfme")
+    @ExcelProperty(value = "鍏ュ簱閲�")
+    private Double weightAnfme = 0.0;
+    //寰呭嚭搴撴暟閲�
+    @TableField("qty_anfme")
+    private Double qtyAnfme = 0.0;
+
+    //浠撳簱
+    @TableField("stash")
+    //@ExcelProperty(value = "浠撳簱")
+    private String stash;
+
+    //搴撲綅
+    @TableField("loc_no")
+    //@ExcelProperty(value = "搴撲綅")
+    private String locNo;
+
+    //鐘舵��
+    @TableField("status")
+    private String status;
+
+    //姝ラ
+    @TableField("step")
+    private int step;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("modify_time")
+    private Date modifyTime;
+
+    @TableField("create_user")
+    private String createUser;
+
+    @TableField("modify_user")
+    private String modifyUser;
+
+    @TableField("order_no")
+    private String orderNo;
+
+    @TableField("pakout_time")
+    private String pakoutTime;
+
+    @TableField("order_weight")
+    private Double orderWeight;
+
+    @TableField("handler_by")
+    private String handlerBy;
+
+    @TableField("transfer")
+    private String transfer;
+
+    @TableField("customer")
+    private String customer;
+
+    @TableField("allocate")
+    private String allocate;
+
+    @TableField("memo")
+    private String memo;
+
+    public String getPakinTime$() {
+        if (Cools.isEmpty(this.pakinTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.pakinTime);
+    }
+}
diff --git a/src/main/java/com/zy/asrs/entity/PlaQty.java b/src/main/java/com/zy/asrs/entity/PlaQty.java
index 59e06cb..274bed0 100644
--- a/src/main/java/com/zy/asrs/entity/PlaQty.java
+++ b/src/main/java/com/zy/asrs/entity/PlaQty.java
@@ -22,6 +22,9 @@
     //鍖呰鍙�
     private String packageNo;
 
+    //鐗屽彿
+    private String brand;
+
     //鍗曟嵁鏄庣粏id
     private Long orderDetlId;
 
@@ -61,7 +64,8 @@
     @TableField("memo")
     private String memo;
 
-    private int returned;
+    //閫�鍥為噸閲�
+    private Double returned;
 
     public PlaQty(String batch, String packageNo, Long orderDetlId, Long orderId, String orderNo, Double qtyAnfme, String locNo, Date createTime) {
         this.batch = batch;
diff --git a/src/main/java/com/zy/asrs/entity/param/GlobleParameter.java b/src/main/java/com/zy/asrs/entity/param/GlobleParameter.java
new file mode 100644
index 0000000..dbf4d5f
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/GlobleParameter.java
@@ -0,0 +1,9 @@
+package com.zy.asrs.entity.param;
+
+public class GlobleParameter {
+    public static final String PLA_STATUS_0 = "寰呭叆搴�";
+    public static final String PLA_STATUS_1 = "宸插叆搴�";
+    public static final String PLA_STATUS_2 = "寰呭嚭搴�";
+    public static final String PLA_STATUS_3 = "閮ㄥ垎鍑哄簱";
+    public static final String PLA_STATUS_4 = "鍏ㄩ儴鍑哄簱";
+}
diff --git a/src/main/java/com/zy/asrs/entity/param/OrderDomainParam.java b/src/main/java/com/zy/asrs/entity/param/OrderDomainParam.java
index c095080..6e073a9 100644
--- a/src/main/java/com/zy/asrs/entity/param/OrderDomainParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/OrderDomainParam.java
@@ -17,6 +17,19 @@
 
     private String orderNo;
 
+    private Long cstmr;
+
+    private String cstmrName;
+
+    //瀹㈡埛鐢佃瘽
+    private String tel;
+
+    //璇ュ瓧娈典綔涓哄崟鎹殑瀹㈡埛鍦板潃鏄剧ず
+    private String number;
+
+    //璋冩嫧鍒�
+    private String itemName;
+
     private List<OrderDetl> orderDetlList;
 
 
diff --git a/src/main/java/com/zy/asrs/mapper/PlaLogMapper.java b/src/main/java/com/zy/asrs/mapper/PlaLogMapper.java
new file mode 100644
index 0000000..4a951c0
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/PlaLogMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.PlaLog;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface PlaLogMapper extends BaseMapper<PlaLog> {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index 408bed4..b9f0de4 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -54,7 +54,7 @@
 
     R manDetlOriginOut(JSONObject json, User user);
 
-    void plaPakin(String locNo, String batch, String packageNo);
+    void plaPakin(String locNo, String batch, String packageNo, User user);
 
     void plaPakout(String locNo, String batch, String packageNo, String orderNo, String orderDetlId, String wrkNo,Double anfme);
 }
diff --git a/src/main/java/com/zy/asrs/service/OrderDetlService.java b/src/main/java/com/zy/asrs/service/OrderDetlService.java
index 8eb61e2..cac22ca 100644
--- a/src/main/java/com/zy/asrs/service/OrderDetlService.java
+++ b/src/main/java/com/zy/asrs/service/OrderDetlService.java
@@ -41,4 +41,6 @@
     Boolean checkAllDetlFinish(String orderNo);
 
     Integer sameOrderComb(String orderNo, String matnr, String batch);
+
+    OrderDetl selectByOrderNoAndMaktx(String orderNo, String maktx);
 }
diff --git a/src/main/java/com/zy/asrs/service/PlaLogService.java b/src/main/java/com/zy/asrs/service/PlaLogService.java
new file mode 100644
index 0000000..bf1af74
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/PlaLogService.java
@@ -0,0 +1,9 @@
+package com.zy.asrs.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.PlaLog;
+
+public interface PlaLogService extends IService<PlaLog> {
+
+
+}
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 56ac370..6b9f66b 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -10,13 +10,11 @@
 import com.core.common.R;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
-import com.zy.asrs.entity.param.CombParam;
-import com.zy.asrs.entity.param.MobileAdjustNewParam;
-import com.zy.asrs.entity.param.MobileAdjustParam;
-import com.zy.asrs.entity.param.OffSaleParam;
+import com.zy.asrs.entity.param.*;
 import com.zy.asrs.mapper.ManLocDetlMapper;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.SaasUtils;
+import com.zy.asrs.utils.Utils;
 import com.zy.common.model.DetlDto;
 import com.zy.common.service.CommonService;
 import com.zy.common.utils.Synchro;
@@ -1207,18 +1205,29 @@
     }
 
     @Override
-    public void plaPakin(String locNo, String batch, String packageNo) {
+    public void plaPakin(String locNo, String batch, String packageNo,User user) {
         Pla pla = plaService.selectByBatchAndPackageNo(batch, packageNo);
-        if(!pla.getLocNo().equals(locNo)){
-            throw new CoolException("璇ョ墿鏂欏叆搴撶殑搴撲綅閿欒");
+        if(Cools.isEmpty(pla)){
+            throw new CoolException("绯荤粺鏈娴嬪埌璇ュ寘鐗╂枡淇℃伅锛岃閲嶆柊褰曞叆");
         }
-        if("宸插叆搴�".equals(pla.getStatus())){
+
+        if(Cools.eq(GlobleParameter.PLA_STATUS_1,pla.getStatus())){
             throw new CoolException("璇ョ墿鏂欏凡鍏ュ簱");
         }
-        pla.setStatus("宸插叆搴�");
+        pla.setStatus(GlobleParameter.PLA_STATUS_1);
         pla.setModifyTime(new Date());
+        pla.setPakinTime(new Date());
+
+        Node node = nodeService.selectByUuid(locNo);
+        if(Cools.isEmpty(node)){
+            throw new CoolException("搴撲綅淇℃伅涓嶆纭�");
+        }
+
+        pla.setStash(node.getParentName());
+        pla.setLocNo(node.getUuid());
+
         plaService.updateById(pla);
-        SaasUtils.insertLog(0,locNo,batch+","+packageNo,pla.getWeightAnfme(),null);
+        SaasUtils.insertLog(0,locNo,batch+","+packageNo,pla.getWeightAnfme(),user.getUsername());
     }
 
     @Override
@@ -1243,6 +1252,10 @@
             manPakOutService.updateById(manPakOut);
         }
 
+        //鏇存柊plaQty淇℃伅
+        plaQty.setPakoutTime(Utils.getDateStr(new Date()));
+        plaQtyService.updateById(plaQty);
+
         //鏇存柊pla鏄庣粏
         pla.setWeightAnfme(pla.getWeightAnfme() - anfme);
         pla.setQtyAnfme(pla.getQtyAnfme() - anfme);
@@ -1254,5 +1267,14 @@
         plaService.updateById(pla);
         SaasUtils.insertLog(1,locNo,batch+","+packageNo,anfme,null);
 
+        //鏇存柊璁㈠崟鏄庣粏
+        Order order = orderService.selectByNo(orderNo);
+        OrderDetl orderDetl = orderDetlService.selectById(plaQty.getOrderDetlId());
+
+        orderDetl.setQty(orderDetl.getQty() + anfme);
+        orderDetlService.updateById(orderDetl);
+
+        orderService.checkComplete(orderNo);
+
     }
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
index 2eeec3b..20541c1 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
@@ -110,4 +110,9 @@
         Integer sum = this.baseMapper.sameOrderComb(orderNo, matnr, batch);
         return  sum != null ? sum : 0;
     }
+
+    @Override
+    public OrderDetl selectByOrderNoAndMaktx(String orderNo, String maktx) {
+        return this.selectOne(new EntityWrapper<OrderDetl>().eq("order_no",orderNo).eq("maktx",maktx));
+    }
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/PlaLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/PlaLogServiceImpl.java
new file mode 100644
index 0000000..c52d40b
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/PlaLogServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.entity.PlaLog;
+import com.zy.asrs.mapper.PlaLogMapper;
+import com.zy.asrs.service.PlaLogService;
+import org.springframework.stereotype.Service;
+
+@Service("plaLogService")
+public class PlaLogServiceImpl extends ServiceImpl<PlaLogMapper, PlaLog> implements PlaLogService {
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/PlaServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/PlaServiceImpl.java
index 5843839..80f23d4 100644
--- a/src/main/java/com/zy/asrs/service/impl/PlaServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/PlaServiceImpl.java
@@ -7,9 +7,11 @@
 import com.zy.asrs.entity.OrderDetl;
 import com.zy.asrs.entity.Pla;
 import com.zy.asrs.entity.PlaQty;
+import com.zy.asrs.entity.param.GlobleParameter;
 import com.zy.asrs.mapper.PlaMapper;
 import com.zy.asrs.service.PlaQtyService;
 import com.zy.asrs.service.PlaService;
+import com.zy.asrs.utils.SaasUtils;
 import com.zy.asrs.utils.Utils;
 import com.zy.system.entity.User;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -40,7 +42,7 @@
         if(!Cools.isEmpty(orderDetl.getBrand())){
             wrapper.eq("package_no",orderDetl.getBrand());
         }
-        wrapper.eq("status","宸插叆搴�");
+        wrapper.eq("status", GlobleParameter.PLA_STATUS_1);
         wrapper.ge("finger_melting", orderDetl.getFingerMeltingMin()).le("finger_melting", orderDetl.getFingerMeltingMax());
         wrapper.ge("fusing_point", orderDetl.getFusingPointMin()).le("fusing_point", orderDetl.getFusingPointMax());
         wrapper.ge("yellowness", orderDetl.getYellownessMin()).le("yellowness", orderDetl.getYellownessMax());
@@ -91,7 +93,11 @@
     public void returned(List<PlaQty> plaQties, User user) {
         plaQties.forEach(plaQty -> {
             PlaQty plaQtyOut = plaQtyService.selectById(plaQty.getId());
-            plaQtyOut.setReturned(1);
+            if(Cools.isEmpty(plaQtyOut.getReturned())){
+                plaQtyOut.setReturned(plaQty.getOrderWeight());
+            }else {
+                plaQtyOut.setReturned(plaQty.getOrderWeight()+plaQtyOut.getReturned());
+            }
             plaQtyService.updateById(plaQtyOut);
 
             PlaQty plaQtyReturned = new PlaQty();
@@ -101,17 +107,23 @@
             plaQtyReturned.setLocNo(plaQtyOut.getLocNo());
             plaQtyReturned.setOrderNo(plaQtyOut.getOrderNo());
             plaQtyReturned.setPakoutTime(Utils.getDateStr(new Date()));
-            plaQtyReturned.setOrderWeight(0 - plaQtyOut.getOrderWeight());
+            plaQtyReturned.setOrderWeight(plaQty.getOrderWeight());
+            plaQtyReturned.setTransfer("閫�鍥炲叆搴�");
             plaQtyReturned.setHandlerBy(user.getUsername());
             plaQtyReturned.setCustomer(plaQtyOut.getCustomer());
             plaQtyReturned.setMemo(plaQty.getMemo());
             plaQtyService.insert(plaQtyReturned);
 
+            //鐩存帴鏇存柊pla鐨勫簱瀛�
             Pla pla = this.selectByBatchAndPackageNo(plaQty.getBatch(), plaQty.getPackageNo());
-            pla.setStatus("寰呭叆搴�");
+            //pla.setStatus(GlobleParameter.PLA_STATUS_0);
 
+            pla.setWeightAnfme(plaQty.getOrderWeight());
+            pla.setStatus(GlobleParameter.PLA_STATUS_1);
             this.updateById(pla);
 
+            SaasUtils.insertLog(0,pla.getLocNo(),pla.getBatch()+","+pla.getPackageNo(),plaQty.getOrderWeight(),user.getUsername());
+
         });
     }
 }
diff --git a/src/main/java/com/zy/asrs/task/OrderLogScheduler.java b/src/main/java/com/zy/asrs/task/OrderLogScheduler.java
index 163cf74..17d0517 100644
--- a/src/main/java/com/zy/asrs/task/OrderLogScheduler.java
+++ b/src/main/java/com/zy/asrs/task/OrderLogScheduler.java
@@ -7,7 +7,6 @@
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
-import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
@@ -23,7 +22,7 @@
     @Value("${erp.enable}")
     private boolean isERP;
 
-    @Scheduled(cron = "0/10 * * * * ? ")
+    //@Scheduled(cron = "0/10 * * * * ? ")
     private void execute(){
         List<Order> orders = orderService.selectToBeHistoryOrder(isERP);
         if (orders.isEmpty()) {
diff --git a/src/main/java/com/zy/asrs/utils/PlaExcelListener.java b/src/main/java/com/zy/asrs/utils/PlaExcelListener.java
new file mode 100644
index 0000000..b44a089
--- /dev/null
+++ b/src/main/java/com/zy/asrs/utils/PlaExcelListener.java
@@ -0,0 +1,97 @@
+package com.zy.asrs.utils;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.core.common.Cools;
+import com.core.common.SpringUtils;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.Pla;
+import com.zy.asrs.entity.param.GlobleParameter;
+import com.zy.asrs.service.PlaService;
+import com.zy.common.entity.MatExcel;
+import com.zy.common.entity.PlaExcel;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by vincent on 2019-11-25
+ */
+@Slf4j
+public class PlaExcelListener extends AnalysisEventListener<PlaExcel> {
+
+    private int total = 0;
+    private Long userId;
+
+    public PlaExcelListener() {
+    }
+
+    public PlaExcelListener(Long userId) {
+        this.userId = userId;
+    }
+
+    /**
+     * 姣忛殧5鏉″瓨鍌ㄦ暟鎹簱锛屽疄闄呬娇鐢ㄤ腑鍙互3000鏉★紝鐒跺悗娓呯悊list 锛屾柟渚垮唴瀛樺洖鏀�
+     */
+    private static final int BATCH_COUNT = 50;
+
+    private final List<MatExcel> list = new ArrayList<>();
+
+    /**
+     * 杩欓噷浼氫竴琛岃鐨勮繑鍥炲ご
+     */
+    @Override
+    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
+    }
+
+    /**
+     * 杩欎釜姣忎竴鏉℃暟鎹В鏋愰兘浼氭潵璋冪敤
+     */
+    @Override
+    public void invoke(PlaExcel excel, AnalysisContext ctx) {
+        PlaService plaService = SpringUtils.getBean(PlaService.class);
+        Date now = new Date();
+
+        // 鍟嗗搧
+        if(Cools.isEmpty(excel.getBatch()) || Cools.isEmpty(excel.getPackageNo())){
+            return;
+        }
+        Pla pla = plaService.selectByBatchAndPackageNo(excel.getBatch(),excel.getPackageNo());
+        if (pla == null) {
+            pla = excel;
+            pla.setStep(2);
+            pla.setCreateTime(new Date());
+            pla.setStatus(GlobleParameter.PLA_STATUS_0);
+            if (!plaService.insert(pla)) {
+                throw new CoolException("淇濆瓨鍟嗗搧淇℃伅澶辫触锛屽晢鍝佺紪鐮侊細" + excel.getMatnr());
+            }
+            total++;
+        }else if (pla.getStatus().equals(GlobleParameter.PLA_STATUS_0)){
+            excel.setId(pla.getId());
+            excel.setCreateTime(pla.getCreateTime());
+            excel.setModifyTime(pla.getModifyTime());
+            excel.setStep(2);
+            excel.setStatus(GlobleParameter.PLA_STATUS_0);
+            BeanUtils.copyProperties(excel,pla);
+            plaService.updateById(pla);
+            total++;
+        }
+    }
+
+    /**
+     * 鎵�鏈夋暟鎹В鏋愬畬鎴愪簡璋冪敤
+     * 閫傚悎浜嬪姟
+     */
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext ctx) {
+        log.info("鏂板{}鏉$墿鏂欎俊鎭紒", total);
+    }
+
+    public int getTotal() {
+        return total;
+    }
+}
diff --git a/src/main/java/com/zy/common/entity/PlaExcel.java b/src/main/java/com/zy/common/entity/PlaExcel.java
new file mode 100644
index 0000000..291d187
--- /dev/null
+++ b/src/main/java/com/zy/common/entity/PlaExcel.java
@@ -0,0 +1,16 @@
+package com.zy.common.entity;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.zy.asrs.entity.Pla;
+import lombok.Data;
+
+/**
+ * 0.A 1.B 2.C 3.D 4.E 5.F 6.G 7.H 8.I
+ * 9.J 10.K 11.L 12.M 13.N 14.O 15.P 16.Q 17.R 18.S
+ * 19.T 20.U 21.V 22.W 23.X 24.Y 25.Z
+ */
+@Data
+@ExcelIgnoreUnannotated
+public class PlaExcel extends Pla {
+
+}
diff --git a/src/main/java/com/zy/common/web/BaseController.java b/src/main/java/com/zy/common/web/BaseController.java
index 995c3d9..b4a2dd6 100644
--- a/src/main/java/com/zy/common/web/BaseController.java
+++ b/src/main/java/com/zy/common/web/BaseController.java
@@ -169,6 +169,9 @@
                 column = field.getName();
             }
             if (!set.contains(column)) {
+                if(Cools.eq(column,"pakinTime")){
+                    continue;
+                }
                 columns.add(column);
             }
         }
diff --git a/src/main/webapp/static/js/cool.js b/src/main/webapp/static/js/cool.js
index 511bbd9..e3ae972 100644
--- a/src/main/webapp/static/js/cool.js
+++ b/src/main/webapp/static/js/cool.js
@@ -40,6 +40,9 @@
     if(type){
         inputDomVal = inputDomVal + "," + type;
     }
+    if(getForeignKeyQuery(val) === 'orderDetlQuery'){
+        inputDomVal = inputDomVal + "," + $('#orderNo').val();
+    }
     //debugger;
     selectDom.length = 0;
     var defaultOption = new Option("鍙栨秷閫夋嫨", "");
@@ -61,6 +64,9 @@
                     option.addr = list[i].addr;
                     option.phone = list[i].phone;
                     option.customer = list[i].customer;
+                    option.allocate = list[i].allocate;
+                    option.weight =  list[i].weight;
+                    option.type = list[i].type;
                     selectDom.options[i+1] = option;
                 }
                 selectDom.style.display='block';
@@ -99,18 +105,23 @@
     } else {
         cacd.val(selectOptionDom.html());
         realDom.val(selectOptionDom.attr("title"));
-        if(selectOptionDom[0].phone){
-            $('#phone').val(selectOptionDom[0].phone);
+        if(selectOptionDom[0].type === "docType"){
+            $('#weight').val("");
+            $('#maktxV').val("");
         }
-        if(selectOptionDom[0].addr){
-            $('#addr').val(selectOptionDom[0].addr);
+        if(selectOptionDom[0].type === "order" || selectOptionDom[0].type === "locOwner"){
+            $('#allocate').val(selectOptionDom[0].allocate ? selectOptionDom[0].allocate : "");
+            $('#customer').val(selectOptionDom[0].customer ? selectOptionDom[0].customer : "");
+            $('#phone').val(selectOptionDom[0].phone ? selectOptionDom[0].phone : "");
+            $('#addr').val(selectOptionDom[0].addr ? selectOptionDom[0].addr : "");
         }
-        if(selectOptionDom[0].customer){
-            $('#customerR').val(selectOptionDom[0].customer);
+        if(selectOptionDom[0].type === "returned"){
+            $('#customer').val(selectOptionDom[0].customer ? selectOptionDom[0].customer : "");
             tableReload();
+        }
 
-        }else {
-            $('#customerR').val("");
+        if(selectOptionDom[0].type === "orderDetl"){
+            $('#weight').val(selectOptionDom[0].weight);
         }
     }
     inputDom.val("");
@@ -138,7 +149,7 @@
                 {field: 'id', title: 'id', hide:true},
                 {field: 'batch', title: '鎵瑰彿'},
                 {field: 'packageNo', title: '鍖呭彿'},
-                {field: 'orderWeight', title: '閲嶉噺'}
+                {field: 'orderWeight', title: '閲嶉噺',edit:true}
 
             ]],
             request: {
diff --git a/src/main/webapp/static/js/order/order.js b/src/main/webapp/static/js/order/order.js
index f6a94a8..5af334f 100644
--- a/src/main/webapp/static/js/order/order.js
+++ b/src/main/webapp/static/js/order/order.js
@@ -47,6 +47,8 @@
             {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: 'cstmrName', align: 'center',title: '瀹㈡埛鍚嶇О'},
+            {field: 'itemName', align: 'center',title: '璋冩嫧鍒�'},
             {field: 'memo', align: 'center',title: '澶囨敞', hide: true},
             {field: 'createBy$', align: 'center', title: '鎿嶄綔鍛�',  minWidth: 160, width: 160},
             {align: 'center', title: '鎿嶄綔', toolbar: '#operate', width: 260}
@@ -152,6 +154,8 @@
         var data = obj.data;
         var layEvent = obj.event;
 
+
+
         if (layEvent === 'edit') {
             showEditModel(data);
         } else if (layEvent === 'del') {
@@ -188,24 +192,22 @@
                         cellMinWidth: 100,
                         cols: [[
                             {type: 'numbers'},
-                            // {field: 'matnr', title: '鍟嗗搧缂栫爜', width: 160},
-                            // {field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 160},
-                            //
-                            // {field: 'batch', title: '鎵瑰彿'},
-                            {field: 'batch', title: '鎵规'},
-                            {field: 'brand', title: '鐗屽彿'},
-                            {field: 'fingerMeltingMin', title: '鏈�灏忕啍鎸�'},
-                            {field: 'fingerMeltingMax', title: '鏈�澶х啍鎸�'},
-                            {field: 'fusingPointMin', title: '鏈�灏忕啍鐐�'},
-                            {field: 'fusingPointMax', title: '鏈�澶х啍鐐�'},
-                            {field: 'yellownessMin', title: '鏈�灏忛粍搴�'},
-                            {field: 'yellownessMax', title: '鏈�澶ч粍搴�'},
-                            {field: 'opacityMin', title: '鏈�灏忎笉閫忔槑搴�'},
-                            {field: 'opacityMax', title: '鏈�澶т笉閫忔槑搴�'},
+                            {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: 'unit', title: '鍗曚綅'},
+                            // {
+                            //     field: 'createTime$', title: '鍒涘缓鏃堕棿', sort: true, templet: function (d) {
+                            //         return util.toDateString(d.createTime);
+                            //     },  width: 180
+                            // },
+                            // {field: 'inQty', title: '宸插叆搴撻噺'},
+                            // {field: 'color', title: '棰滆壊'},
+                            // {field: 'specs', title: '瑙勬牸'},
                         ]],
                         request: {
                             pageName: 'curr',
@@ -260,10 +262,6 @@
                     let nList = admin.util.deepClone(xxDataList);
                     console.log(nList);
                     for (let xi = 0; xi < nList.length; xi++) {
-                        if(!nList[xi].anfme){
-                            layer.msg('鏄庣粏鏁伴噺涓嶅悎娉�', {icon: 2});
-                            return false;
-                        }
                         if (nList[xi].anfme <= 0){
                             layer.msg('鏄庣粏鏁伴噺涓嶅悎娉�', {icon: 2});
                             return false;
@@ -286,6 +284,11 @@
                             orderId: Number(data.field.id),
                             docType: Number(data.field.docType),
                             orderNo: data.field.orderNo,
+                            cstmr: data.field.cstmr,
+                            cstmrName: data.field.cstmrName,
+                            tel: data.field.tel,
+                            number: data.field.number,
+                            itemName: data.field.itemName,
                             orderDetlList: nList
                         }),
                         contentType:'application/json;charset=UTF-8',
@@ -316,24 +319,14 @@
                     cellMinWidth: 100,
                     cols: [[
                         {type: 'numbers', title: '#'},
-                        // {field: 'matnr', title: '鍟嗗搧缂栫爜', width: 160},
-                        // {field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 200},
-                        // {field: 'specs', title: '瑙勬牸'},
+                        {field: 'matnr', title: '鍟嗗搧缂栫爜', width: 160},
+                        {field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 200},
+                        {field: 'specs', title: '瑙勬牸'},
                         {field: 'batch', title: '鎵规', edit: true},
-                        {field: 'brand', title: '鐗屽彿', edit: true},
-                        {field: 'fingerMeltingMin', title: '鏈�灏忕啍鎸�', edit: true},
-                        {field: 'fingerMeltingMax', title: '鏈�澶х啍鎸�', edit: true},
-                        {field: 'fusingPointMin', title: '鏈�灏忕啍鐐�', edit: true},
-                        {field: 'fusingPointMax', title: '鏈�澶х啍鐐�', edit: true},
-                        {field: 'yellownessMin', title: '鏈�灏忛粍搴�', edit: true},
-                        {field: 'yellownessMax', title: '鏈�澶ч粍搴�', edit: true},
-                        {field: 'opacityMin', title: '鏈�灏忎笉閫忔槑搴�', edit: true},
-                        {field: 'opacityMax', title: '鏈�澶т笉閫忔槑搴�', edit: true},
-
-                        {field: 'anfme', title: '閲嶉噺(淇敼)', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110},
+                        {field: 'anfme', title: '鏁伴噺(淇敼)', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110},
 
                         // {field: 'payment', title: '璐х墿鐘舵��',align: 'center', templet: '#payment'},
-                        {field: 'qty', title: '浣滀笟閲嶉噺',  minWidth: 100, width: 100},
+                        {field: 'qty', 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'}
@@ -435,7 +428,7 @@
                         }
                     }
                     data[obj.field] = obj.value;
-                   insTbSSXM.reloadData({data: xxDataList,scrollPos: true});
+                    insTbSSXM.reloadData({data: xxDataList,scrollPos: true});
                 });
 
                 $('#matAddBtnComment').click(function () {
@@ -444,9 +437,6 @@
 
                 // 鏄剧ず娣诲姞鏄庣粏琛ㄥ崟寮圭獥
                 function showEditModel2(exp) {
-                    xxDataList.push({});
-                    insTbSSXM.reload({data: xxDataList, page: {curr: 1}});
-                    return;
                     admin.open({
                         type: 1,
                         offset: '150px',
diff --git a/src/main/webapp/static/js/order/out.js b/src/main/webapp/static/js/order/out.js
index 6c3bd2e..21099b0 100644
--- a/src/main/webapp/static/js/order/out.js
+++ b/src/main/webapp/static/js/order/out.js
@@ -30,23 +30,15 @@
         height: 'full-120',
         where: {order_id: 9999999999},
         cols: [[
-            {type: 'checkbox'},
-            {type: 'numbers', title: '#'},
-            {field: 'orderNo', align: 'center',title: '鍗曟嵁缂栧彿', templet: '#orderNoTpl'},
-            {field: 'fingerMeltingMin', title: '鏈�灏忕啍鎸�'},
-            {field: 'fingerMeltingMax', title: '鏈�澶х啍鎸�'},
-            {field: 'fusingPointMin', title: '鏈�灏忕啍鐐�'},
-            {field: 'fusingPointMax', title: '鏈�澶х啍鐐�'},
-            {field: 'yellownessMin', title: '鏈�灏忛粍搴�'},
-            {field: 'yellownessMax', title: '鏈�澶ч粍搴�'},
-            {field: 'opacityMin', title: '鏈�灏忎笉閫忔槑搴�'},
-            {field: 'opacityMax', title: '鏈�澶т笉閫忔槑搴�'},
-            // ,{field: 'matnr', align: 'center',title: '鍟嗗搧缂栫爜', width: 160}
-            // ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О', width: 200}
+            {type: 'checkbox'}
+            ,{type: 'numbers', title: '#'}
+            ,{field: 'orderNo', align: 'center',title: '鍗曟嵁缂栧彿', templet: '#orderNoTpl', width: 160}
+            ,{field: 'matnr', align: 'center',title: '鍟嗗搧缂栫爜', width: 160}
+            ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О', width: 200}
             ,{field: 'anfme', align: 'center',title: '鎬绘暟閲�', style: 'font-weight: bold'}
             ,{field: 'enableQty', align: 'center',title: '寰呭嚭鏁伴噺', style: 'font-weight: bold'}
-            // ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: true}
-            // ,{field: 'barcode', align: 'center',title: '鍟嗗搧鏉$爜', hide: true}
+            ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: true}
+            ,{field: 'barcode', align: 'center',title: '鍟嗗搧鏉$爜', hide: true}
             ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width: 160}
         ]],
         request: {
@@ -152,16 +144,13 @@
                                 cols: [[
                                     // {type: 'checkbox', merge: ['orderNo']},
                                     {field: 'orderNo', title: '鍗曟嵁缂栧彿', merge: true, align: 'center'},
-                                    {field: 'batch', title: '鎵瑰彿', merge: true, align: 'center'},
-                                    {field: 'packageNo', title: '鍖呭彿', align: 'center'},
-                                    {field: 'orderDetlId', title: 'id', align: 'center',hide:true},
-                                    {field: 'qtyAnfme', title: '鍑哄簱鏁伴噺', align: 'center'},
-                                    {field: 'locNo', title: '搴撲綅鍙�', align: 'center',templet: '#locNoTpl'},
+                                    {field: 'title', title: '鍟嗗搧', merge: true, align: 'center', width: 350},
+                                    {field: 'hostId', title: 'id', align: 'center'},
                                     // { title: '鍓╀綑闇�姹傞噺', align: 'center' , width: 120, toolbar: '#checkNeedQty'},
                                     // {field: 'anfme', title: '瀹為檯鏁伴噺', align: 'center', width: 90, style: 'font-weight: bold'},
-                                    // { title: '鍑哄簱鏁伴噺', align: 'center',field: 'anfme', width: 90, style: 'font-weight: bold; color: red'},
-                                    // {field: 'locNo', title: '璐т綅', align: 'center', width: 100, templet: '#locNoTpl'},
-                                    // {field: 'staNos', align: 'center', title: '鍑哄簱绔�', merge: ['locNo'], templet: '#tbBasicTbStaNos'},
+                                    { title: '鍑哄簱鏁伴噺', align: 'center',field: 'anfme', width: 90, style: 'font-weight: bold; color: red'},
+                                    {field: 'locNo', title: '璐т綅', align: 'center', width: 100, templet: '#locNoTpl'},
+                                    {field: 'staNos', align: 'center', title: '鍑哄簱绔�', merge: ['locNo'], templet: '#tbBasicTbStaNos'},
                                     // {type: 'checkbox', merge: ['locNo']},
                                 ]],
                                 done: function (res) {
diff --git a/src/main/webapp/static/js/pla/plaDetl.js b/src/main/webapp/static/js/pla/plaDetl.js
index 1962af6..2bae082 100644
--- a/src/main/webapp/static/js/pla/plaDetl.js
+++ b/src/main/webapp/static/js/pla/plaDetl.js
@@ -6,65 +6,88 @@
 var data = [];
 var checkStatus = [];
 var dataCheck = [];
+var admin;
 function getCol() {
     var cols = [
         {field: 'id', title: 'id', align: 'center',hide:true}
         ,{type: 'checkbox'}
-        ,{field: 'pakinTime', title: '鍏ュ簱鏃堕棿', align: 'center'}
-        ,{field: 'batch', align: 'center',title: '鎵瑰彿'}
-        ,{field: 'packageNo', align: 'center',title: '鍖呭彿'}
-        ,{field: 'brand', align: 'center',title: '鐗屽彿'}
-        ,{field: 'weight', align: 'center',title: '閲嶉噺锛圞G锛�', hide:true}
-        ,{field: 'workshop', align: 'center',title: '鐢熶骇杞﹂棿', hide:true}
-        ,{field: 'line', align: 'center',title: '鐢熶骇绾�', hide:true}
-        ,{field: 'packageType', align: 'center',title: '鍖呰绫诲瀷'}
-        ,{field: 'zpalletType', align: 'center',title: '鎵樼洏绫诲瀷'}
-        ,{field: 'filmWrap', align: 'center',title: '缂犺啘', edit: true}
-        ,{field: 'fingerMelting', align: 'center',title: '鐔旀寚锛坓/10min锛�'}
-        ,{field: 'fusingPoint', align: 'center',title: '鐔旂偣锛堚剝锛�'}
-        ,{field: 'vadf1', align: 'center',title: '鎸ュ彂浠�1锛�%锛�', hide:true}
-        ,{field: 'vadf2', align: 'center',title: '鎸ュ彂浠�2锛�%锛�', hide:true}
-        ,{field: 'yellowness', align: 'center',title: '榛勫害',  hide:true}
-        ,{field: 'opacity', align: 'center',title: '涓嶉�忔槑搴︼紙0-100%锛�', hide:true}
-        ,{field: 'water', align: 'center',title: '姘村垎锛坧pm锛�', hide:true}
-        ,{field: 'l', align: 'center',title: 'l鍊�', edit: true, hide:true}
-        ,{field: 'a', align: 'center',title: 'a鍊�', edit: true, hide:true}
-        ,{field: 'b', align: 'center',title: 'b鍊�', edit: true, hide:true}
-        ,{field: 'fillIn', align: 'center',title: '濉厖(%)', edit: true}
-        ,{field: 'massState', align: 'center',title: '璐ㄩ噺鐘舵��', hide:true}
-        ,{field: 'problem', align: 'center',title: '璐ㄩ噺闂', hide:true}
-        ,{field: 'stash', align: 'center',title: '浠撳簱', edit:true}
-        ,{field: 'locNo', align: 'center',title: '搴撲綅', edit:true}
-        ,{field: 'weightAnfme', align: 'center',title: '鍓╀綑閲嶉噺锛圞G锛�', edit:true}
-        ,{field: 'status', align: 'center',title: '鐘舵��', edit:true}
-        ,{align: 'center', title: '鏄庣粏', toolbar: '#tbLook'}
-        ,{field: 'orderNo', align: 'center',title: '鍗曞彿', edit:true}
-        ,{field: 'pakoutTime', align: 'center',title: '鍑哄簱鏃堕棿', edit:true}
-        ,{field: 'orderWeight', align: 'center',title: '閲嶉噺', edit:true}
-        ,{field: 'handlerBy', align: 'center',title: '缁忓姙浜�', edit:true}
-        ,{field: 'transfer', align: 'center',title: '娴佽浆褰㈠紡', edit:true}
-        ,{field: 'customer', align: 'center',title: '瀹㈡埛鍚嶇О', edit:true}
-        ,{field: 'allocate', align: 'center',title: '璋冩嫧鍒�', edit:true}
-        ,{field: 'memo', align: 'center',title: '澶囨敞', edit:true}
+        ,{field: 'pakinTime$', title: '鍏ュ簱鏃堕棿', align: 'center'}
+        ,{field: 'owner', align: 'center',title: '涓讳綋',edit:true}
+        ,{field: 'type', align: 'center',title: '鐗╄祫绫诲埆',hide:true,edit:true}
+        ,{field: 'proOrderNo', align: 'center',title: '鍗曞彿',hide:true,edit:true}
+        ,{field: 'matnr', align: 'center',title: '瀛樿揣缂栫爜',hide:true,edit:true}
+        ,{field: 'batch', align: 'center',title: '鎵瑰彿',edit:true}
+        ,{field: 'packageNo', align: 'center',title: '鍖呭彿',edit:true}
+        ,{field: 'brand', align: 'center',title: '鐗屽彿',edit:true}
+        ,{field: 'weight', align: 'center',title: '閲嶉噺锛圞G锛�',edit:true}
+        ,{field: 'workshop', align: 'center',title: '鐢熶骇杞﹂棿',hide:true,edit:true}
+        ,{field: 'line', align: 'center',title: '鐢熶骇绾�',hide:true,edit:true}
+        ,{field: 'proDate', align: 'center',title: '鐢熶骇鏃ユ湡',edit:true}
+        ,{field: 'packageType', align: 'center',title: '鍖呰绫诲瀷',edit:true}
+        ,{field: 'zpalletType', align: 'center',title: '鎵樼洏绫诲瀷',edit:true}
+        ,{field: 'filmWrap', align: 'center',title: '缂犺啘',edit:true}
+        ,{field: 'fingerMelting', align: 'center',title: '鐔旀寚锛坓/10min锛�',edit:true}
+        ,{field: 'fusingPoint', align: 'center',title: '鐔旂偣锛堚剝锛�',edit:true}
+        ,{field: 'vadf1', align: 'center',title: '鎸ュ彂浠�1锛�%锛�', hide:true,edit:true}
+        ,{field: 'vadf2', align: 'center',title: '鎸ュ彂浠�2锛�%锛�', hide:true,edit:true}
+        ,{field: 'yellowness', align: 'center',title: '榛勫害',edit:true}
+        ,{field: 'opacity', align: 'center',title: '涓嶉�忔槑搴︼紙0-100%锛�',edit:true}
+        ,{field: 'water', align: 'center',title: '姘村垎锛坧pm锛�', hide:true,edit:true}
+        ,{field: 'l', align: 'center',title: 'l鍊�', hide:true,edit:true}
+        ,{field: 'a', align: 'center',title: 'a鍊�', hide:true,edit:true}
+        ,{field: 'b', align: 'center',title: 'b鍊�', hide:true,edit:true}
+        ,{field: 'fillIn', align: 'center',title: '濉厖(%)',hide:true,edit:true}
+        ,{field: 'massState', align: 'center',title: '璐ㄩ噺鐘舵��',edit:true}
+        ,{field: 'problem', align: 'center',title: '澶囨敞',edit:true}
+        ,{field: 'stash', align: 'center',title: '浠撳簱',edit:true}
+        ,{field: 'locNo', align: 'center',title: '搴撲綅',edit:true}
+        ,{field: 'weightAnfme', align: 'center',title: '鍓╀綑閲嶉噺锛圞G锛�',edit:true}
+        ,{field: 'qtyAnfme', align: 'center',title: '寰呭嚭搴撻噸閲忥紙KG锛�',hide:true}
+        ,{field: 'status', align: 'center',title: '鐘舵��', templet: setState ,edit:true}
+        ,{align: 'center', title: '娴佽浆鏄庣粏', toolbar: '#tbLook'}
+        ,{field: 'orderNo', align: 'center',title: '鍗曞彿', hide:true}
+        ,{field: 'pakoutTime', align: 'center',title: '鍑哄簱鏃堕棿', hide:true}
+        ,{field: 'orderWeight', align: 'center',title: '閲嶉噺', hide:true}
+        ,{field: 'handlerBy', align: 'center',title: '缁忓姙浜�', hide:true}
+        ,{field: 'transfer', align: 'center',title: '娴佽浆褰㈠紡', hide:true}
+        ,{field: 'customer', align: 'center',title: '瀹㈡埛鍚嶇О', hide:true}
+        ,{field: 'allocate', align: 'center',title: '璋冩嫧鍒�', hide:true}
+        ,{field: 'memo', align: 'center',title: '澶囨敞', hide:true}
     ];
     return cols;
 }
 
+function setState(data){
+    if(data.status === "寰呭叆搴�"){
+        return  "<span style='color: orange'>寰呭叆搴�</span>"
+    }else if(data.status === "宸插叆搴�"){
+        return  "<span style='color: blue'>宸插叆搴�</span>"
+    }else if(data.status === "寰呭嚭搴�"){
+        return  "<span style='color: red'>寰呭嚭搴�</span>"
+    }else if(data.status === "閮ㄥ垎鍑哄簱"){
+        return  "<span style='color: black'>閮ㄥ垎鍑哄簱</span>"
+    }else if(data.status === "鍏ㄩ儴鍑哄簱"){
+        return  "<span style='color: gray'>鍏ㄩ儴鍑哄簱</span>"
+    }
+}
+
 layui.config({
     base: baseUrl + "/static/layui/lay/modules/"
-}).use(['table','laydate', 'form', 'admin'], function() {
+}).extend({
+    dropdown: 'dropdown/dropdown',
+}).use(['table','laydate', 'form', 'admin', 'dropdown'], function() {
     var table = layui.table;
     var $ = layui.jquery;
     var layer = layui.layer;
     var layDate = layui.laydate;
     var form = layui.form;
-    var admin = layui.admin;
+    admin = layui.admin;
 
     // 鏁版嵁娓叉煋
     tableIns = table.render({
         elem: '#plaDetl',
         headers: {token: localStorage.getItem('token')},
-        url: baseUrl+'/pla/list/auth?step=3',
+        url: baseUrl+'/pla/list/auth?step=2',
         page: true,
         limit: 16,
         limits: [16, 30, 50, 100, 200, 500],
@@ -119,7 +142,7 @@
                 type: 1,
                 title: false,
                 area: '1200px',
-                offset: [top + 'px', (left - 530 + $a.outerWidth()) + 'px'],
+                offset: ['600px', (left - 1200 + $a.outerWidth()) + 'px'],
                 shade: .01,
                 shadeClose: true,
                 fixed: false,
@@ -168,6 +191,41 @@
                     });
                 }
             });
+
+        }
+    })
+
+    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+    table.on('toolbar(plaDetl)', function (obj) {
+        var checkStatus = table.checkStatus(obj.config.id)
+        switch(obj.event) {
+            case 'updateData':
+                var data = checkStatus.data;
+                if (data.length === 0){
+                    layer.msg('璇烽�夋嫨鏁版嵁');
+                } else {
+                    layer.confirm('纭畾淇敼'+(data.length===1?'姝�':data.length)+'鏉℃暟鎹悧', function(){
+                        $.ajax({
+                            url: baseUrl+"/pla/update/auth",
+                            headers: {'token': localStorage.getItem('token')},
+                            data: JSON.stringify(data),
+                            contentType:'application/json;charset=UTF-8',
+                            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;
 
         }
     })
@@ -259,7 +317,6 @@
                     layer.msg("鏈夋湭濉啓瀛楁");
                     return;
                 }
-                data[i].step = 3;
                 dataSave.push(data[i]);
             }else {
                 dataOld.push(data[i]);
@@ -371,13 +428,22 @@
 
     $(document).on('click','#sellout', function () {
 
-        let data = table.cache.plaDetl;
-        let dataSave = [];
-        let dataOld = [];
+        var data = table.cache.plaDetl;
+        var dataSave = [];
+        var dataOld = [];
+        var brand;
+
         for(var i=0; i<data.length; i++){
             if(data[i].LAY_CHECKED){
-                if(data[i].status === "寰呭叆搴�" || data[i].status === "鍏ㄩ儴鍑哄簱"){
-                    layer.msg("閫変腑鐨勬槑缁嗚繕鏈叆搴撴垨鑰呭凡鍏ㄩ儴鍑哄簱锛岃閲嶆柊閫夋嫨");
+                if(data[i].status === "寰呭叆搴�" || data[i].status === "鍏ㄩ儴鍑哄簱"|| data[i].weightAnfme <= data[i].qtyAnfme){
+                    layer.msg("閫変腑鐨勬槑缁嗚繕鏈叆搴撴垨鑰呭凡鍏ㄩ儴鍑哄簱鎴栬�呮病鏈夊墿浣欏彲鍑洪噸閲忥紝璇烽噸鏂伴�夋嫨");
+                    return;
+                }
+
+                brand = brand ? brand : data[i].brand;
+
+                if( brand != data[i].brand){
+                    layer.msg("閫変腑鐨勬槑缁嗕腑鍚湁澶氱鐗屽彿锛岃閲嶆柊閫夋嫨");
                     return;
                 }
                 dataSave.push(data[i]);
@@ -391,20 +457,16 @@
             layer.msg("鏈嬀閫夛紝璇峰厛鍕鹃�夐渶瑕佹洿鏀圭殑搴撳瓨");
             return;
         }
-        if(dataSave.length > 1){
-            layer.msg("璇峰嬀閫変竴鏉″簱瀛樻槑缁�");
-            return;
-        }
 
         layer.open({
             type: 2,
-            title: '鍗栧嚭',
+            title: '鍑哄簱',
             maxmin: true,
             area: ['800px', top.detailHeight],
             shadeClose: false,
             content: 'sellout.html',
             success: function(layero, index){
-                layer.getChildFrame('#data-detail-submit-edit', index).hide();
+                //layer.getChildFrame('#data-detail-submit-edit', index).hide();
                 top.convertDisabled(layer.getChildFrame('#data-detail :input', index), false);
                 layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
 
@@ -449,7 +511,7 @@
             shadeClose: false,
             content: 'pickup.html',
             success: function(layero, index){
-                layer.getChildFrame('#data-detail-submit-edit', index).hide();
+                //layer.getChildFrame('#data-detail-submit-edit', index).hide();
                 top.convertDisabled(layer.getChildFrame('#data-detail :input', index), false);
                 layer.iframeAuto(index);layer.style(index, {top: (($(window).height()-layer.getChildFrame('#data-detail', index).height())/3)+"px"});
 
@@ -483,4 +545,58 @@
     parent.layer.closeAll();
 });
 
+// excel瀵煎叆妯℃澘涓嬭浇
+function excelMouldDownload(){
+    layer.load(1, {shade: [0.1,'#fff']});
+    location.href = baseUrl + "/pla/excel/import/mould";
+    layer.closeAll('loading');
+}
+
+// excel瀵煎叆
+function importExcel() {
+    $("#importExcel").trigger("click");
+}
+function upload(obj){
+    if(!obj.files) {
+        return;
+    }
+    var file = obj.files[0];
+    admin.confirm('纭鍚屾 [' + file.name +'] 鏂囦欢鍚楋紵', function (index) {
+        layer.load(1, {shade: [0.1,'#fff']});
+        var url = baseUrl + "/pla/excel/import/auth";
+        var form = new FormData();
+        form.append("file", file);
+        xhr = new XMLHttpRequest();
+        xhr.open("post", url, true); //post鏂瑰紡锛寀rl涓烘湇鍔″櫒璇锋眰鍦板潃锛宼rue 璇ュ弬鏁拌瀹氳姹傛槸鍚﹀紓姝ュ鐞嗐��
+        xhr.setRequestHeader('token', localStorage.getItem('token'));
+        xhr.onload = uploadComplete; //璇锋眰瀹屾垚
+        xhr.onerror =  uploadFailed; //璇锋眰澶辫触
+        xhr.onloadend = function () { // // 涓婁紶瀹屾垚閲嶇疆鏂囦欢娴�
+            layer.closeAll('loading');
+            $("#importExcel").val("");
+        };
+        // xhr.upload.onprogress = progressFunction;//銆愪笂浼犺繘搴﹁皟鐢ㄦ柟娉曞疄鐜般��
+        xhr.upload.onloadstart = function(){//涓婁紶寮�濮嬫墽琛屾柟娉�
+            ot = new Date().getTime();   //璁剧疆涓婁紶寮�濮嬫椂闂�
+            oloaded = 0;//璁剧疆涓婁紶寮�濮嬫椂锛屼互涓婁紶鐨勬枃浠跺ぇ灏忎负0
+        };
+        xhr.send(form);
+    }, function(index){
+        $("#importExcel").val("");
+    });
+}
+function uploadComplete(evt) {
+    var res = JSON.parse(evt.target.responseText);
+    if(res.code === 200) {
+        layer.msg(res.msg, {icon: 1});
+        loadTree("");
+    } else {
+        layer.msg(res.msg, {icon: 2});
+    }
+}
+function uploadFailed(evt) {
+    var res = JSON.parse(evt.target.responseText);
+    layer.msg(res.msg, {icon: 2});
+}
+
 
diff --git a/src/main/webapp/static/js/pla/waitingPakin.js b/src/main/webapp/static/js/pla/waitingPakin.js
index 09674cd..7e172fa 100644
--- a/src/main/webapp/static/js/pla/waitingPakin.js
+++ b/src/main/webapp/static/js/pla/waitingPakin.js
@@ -143,7 +143,6 @@
                     layer.msg("鏈夋湭濉啓瀛楁");
                     return;
                 }
-                data[i].step = 3;
                 data[i].status = "寰呭叆搴�";
                 data[i].weightAnfme = data[i].weight;
                 dataSave.push(data[i]);
diff --git a/src/main/webapp/views/order/order.html b/src/main/webapp/views/order/order.html
index 54446b4..6777d35 100644
--- a/src/main/webapp/views/order/order.html
+++ b/src/main/webapp/views/order/order.html
@@ -8,7 +8,7 @@
     <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/cool.css" media="all">
     <!--    <link rel="stylesheet" href="../../static/css/common.css" media="all">-->
     <!--[if lt IE 9]>
     <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
@@ -89,16 +89,16 @@
 <script type="text/html" id="operate">
     <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="printExcel">瀵煎嚭Excel</a>
     {{# 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-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 == 2) { }}
     <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="complete">瀹岀粨</a>
     {{# } }}
 
-<!--    {{# if ((d.settle == 0 || d.settle == 1) && (d.docType == 1 || d.docType == 11 || d.docType == 14 || d.docType == 17 || d.docType == 18)) { }}-->
-<!--    <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="manPrint">鐢熸垚鎷h揣鍗�</a>-->
-<!--    {{# } }}-->
+    <!--    {{# if ((d.settle == 0 || d.settle == 1) && (d.docType == 1 || d.docType == 11 || d.docType == 14 || d.docType == 17 || d.docType == 18)) { }}-->
+    <!--    <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="manPrint">鐢熸垚鎷h揣鍗�</a>-->
+    <!--    {{# } }}-->
     <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="btnPrint">鎵撳嵃</a>
 </script>
 <!-- 琛ㄦ牸鎿嶄綔鍒� -->
@@ -149,7 +149,43 @@
             <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"-->
+                <!--                lay-verify="required"-->
+            </div>
+        </div>
+        <div class="layui-form-item" >
+            <label class="layui-form-label">瀹㈡埛鍚嶇О锛�</label>
+            <div class="layui-input-block cool-auto-complete">
+                <input id="customer" name="cstmr" class="layui-input" type="text" style="display: none" >
+                <input id="customerV" name="cstmrName" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" onfocus=this.blur()>
+                <div class="cool-auto-complete-window">
+                    <input class="cool-auto-complete-window-input" data-key="locOwnerQueryBylocOwner" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                    <select class="cool-auto-complete-window-select" data-key="locOwnerQueryBylocOwnerSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                    </select>
+                </div>
+            </div>
+        </div>
+        <div class="layui-form-item" >
+            <label class="layui-form-label">瀹㈡埛鐢佃瘽锛�</label>
+            <div class="layui-input-block">
+                <input id="phone" name="tel" class="layui-input" type="text" readonly="readonly">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">瀹㈡埛鍦板潃锛�</label>
+            <div class="layui-input-block">
+                <input id="addr" name="number" class="layui-input" type="text" readonly="readonly">
+            </div>
+        </div>
+        <div class="layui-form-item">
+            <label class="layui-form-label">璋冩嫧鍒般��锛�</label>
+            <div class="layui-input-block cool-auto-complete">
+                <input id="allocate" name="itemName" class="layui-input" type="text" style="display: none">
+                <input id="allocateV" name="itemName" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" onfocus=this.blur()>
+                <div class="cool-auto-complete-window">
+                    <input class="cool-auto-complete-window-input" data-key="configTypeQueryByAllocate" data-value="allocate" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                    <select class="cool-auto-complete-window-select" data-key="configTypeQueryByAllocateSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                    </select>
+                </div>
             </div>
         </div>
         <div class="layui-form-item" style="position: relative;">
@@ -178,7 +214,7 @@
     <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>
+            <label class="layui-form-label">鐗╂枡 - 澶氶��</label>
             <div class="layui-input-block">
                 <div id="mat" name="mat">
                 </div>
diff --git a/src/main/webapp/views/order/out.html b/src/main/webapp/views/order/out.html
index 3ee53da..fa3d1c1 100644
--- a/src/main/webapp/views/order/out.html
+++ b/src/main/webapp/views/order/out.html
@@ -175,13 +175,13 @@
 <script type="text/html" id="tbBasicTbStaNos">
     <div class="ew-select-fixed">
         {{#if (d.manu!='骞冲簱') {}}
-            <select class="order-sta-select" lay-filter="tbBasicTbStaNos">
-                {{#if (d.staNos!=null) {}}
-                {{# for(let i=0; i<d.staNos.length; i++) { }}
-                <option value="{{d.staNos[i]}}">{{d.staNos[i]}}</option>
-                {{# } }}
-                {{# } }}
-            </select>
+        <select class="order-sta-select" lay-filter="tbBasicTbStaNos">
+            {{#if (d.staNos!=null) {}}
+            {{# for(let i=0; i<d.staNos.length; i++) { }}
+            <option value="{{d.staNos[i]}}">{{d.staNos[i]}}</option>
+            {{# } }}
+            {{# } }}
+        </select>
         {{# } }}
     </div>
 </script>
@@ -196,7 +196,7 @@
 
 <script type="text/html" id="locNoTpl">
     <span name="locNo"
-          {{# if( d.locNo){ }}
+          {{# if( d.lack === false){ }}
           class="layui-badge layui-badge-green" >{{d.locNo}}</span>
     {{# } else { }}
     class="layui-badge layui-badge-red" >搴撳瓨涓嶈冻</span>
diff --git a/src/main/webapp/views/pla/plaDetl.html b/src/main/webapp/views/pla/plaDetl.html
index 98b7af6..4391965 100644
--- a/src/main/webapp/views/pla/plaDetl.html
+++ b/src/main/webapp/views/pla/plaDetl.html
@@ -9,7 +9,7 @@
     <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/common.css" media="all">
+
     <style>
         html {
             height: 100%;
@@ -27,7 +27,7 @@
         .layui-card-header {
             border-bottom: none;
         }
-        #search-box {
+        .search-box {
             padding: 30px 0 10px 0;
         }
         #search-box .layui-inline:first-child {
@@ -109,49 +109,120 @@
 
 <!-- 鍔熻兘鍖� -->
 <div class="function-area">
-    <button id="rework" style="alignment: right" class="function-btn">閲嶅仛</button>
+<!--    <button id="rework" style="alignment: right" class="function-btn">閲嶅仛</button>-->
     <button id="updateZpallet" style="alignment: right" class="function-btn1">鎹㈠寘瑁�/鎵樼洏/缂犺啘</button>  |
-    <button id="sellout" style="alignment: right" class="function-btn">鍗栧嚭</button>
-    <button id="pickup" style="alignment: right" class="function-btn">鍙栬揣</button>  |
+    <button id="sellout" style="alignment: right" class="function-btn">鍑哄簱</button>
+<!--    <button id="pickup" style="alignment: right" class="function-btn">鍙栬揣</button>  |-->
     <button id="returned" style="alignment: right" class="function-btn">閫�鍥�</button>
 </div>
 
 <!-- 鎼滅储鏍� -->
-<div id="search-box" class="layui-form layui-card-header">
-    <div class="layui-inline">
-        <div class="layui-input-inline">
-            <input class="layui-input" type="text" name="batch" placeholder="鎵瑰彿" autocomplete="off">
+<div id="search-box" >
+    <div class="layui-form layui-card-header">
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <input class="layui-input" type="text" name="batch" placeholder="鎵瑰彿" autocomplete="off">
+            </div>
         </div>
-    </div>
-    <div class="layui-inline">
-        <div class="layui-input-inline">
-            <input class="layui-input" type="text" name="package_no" placeholder="鍖呭彿" autocomplete="off">
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <input class="layui-input" type="text" name="package_no" placeholder="鍖呭彿" autocomplete="off">
+            </div>
         </div>
-    </div>
-    <div class="layui-inline">
-        <div class="layui-input-inline">
-            <input class="layui-input" type="text" name="brand" placeholder="鐗屽彿" autocomplete="off">
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <input class="layui-input" type="text" name="brand" placeholder="鐗屽彿" autocomplete="off">
+            </div>
         </div>
-    </div>
-    <!--    <div class="layui-inline">-->
-    <!--        <div class="layui-input-inline">-->
-    <!--            <input class="layui-input" type="text" name="row" placeholder="鎺掓暟" autocomplete="off">-->
-    <!--        </div>-->
-    <!--    </div>-->
-    <div class="layui-inline">
-        <div class="layui-input-inline">
-            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <input class="layui-input" type="text" name="status" placeholder="鐘舵��" autocomplete="off">
+            </div>
         </div>
-    </div>
+        <!--    <div class="layui-inline">-->
+        <!--        <div class="layui-input-inline">-->
+        <!--            <input class="layui-input" type="text" name="row" placeholder="鎺掓暟" autocomplete="off">-->
+        <!--        </div>-->
+        <!--    </div>-->
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
+            </div>
+        </div>
 
-    <!-- 寰呮坊鍔� -->
-    <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block">
-        <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>
-        <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button>
-        <!--        <button id="unreason" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="unreason">鏌ョ湅寮傚父鏁版嵁</button>-->
+        <!-- 寰呮坊鍔� -->
+        <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block">
+            <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>
+            <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button>
+            <!--        <button id="unreason" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="unreason">鏌ョ湅寮傚父鏁版嵁</button>-->
+        </div>
+    </div>
+    <div class="layui-form layui-card-header">
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <input class="layui-input" type="text" name="finger_meltingMin" placeholder="鏈�灏忕啍鎸�" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <input class="layui-input" type="text" name="finger_meltingMax" placeholder="鏈�澶х啍鎸�" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <input class="layui-input" type="text" name="fusing_pointMin" placeholder="鏈�灏忕啍鐐�" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <input class="layui-input" type="text" name="fusing_pointMax" placeholder="鏈�澶х啍鐐�" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <input class="layui-input" type="text" name="yellownessMin" placeholder="鏈�灏忛粍搴�" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <input class="layui-input" type="text" name="yellownessMax" placeholder="鏈�澶ч粍搴�" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <input class="layui-input" type="text" name="opacityMin" placeholder="鏈�灏忎笉閫忔槑搴�" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <input class="layui-input" type="text" name="opacityMax" placeholder="鏈�澶т笉閫忔槑搴�" autocomplete="off">
+            </div>
+        </div>
     </div>
 
 </div>
+<script type="text/html" id="toolbar">
+    <div class="layui-btn-container">
+        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData" style="display: none">鍒犻櫎</button>
+        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-update" lay-event="updateData" style="display: none">淇敼</button>
+        <!-- 鍟嗗搧/鐗╂枡 鏁版嵁涓績 -->
+        <div class="dropdown-menu" style="float: right">
+            <button class="layui-btn layui-btn-primary layui-border-black icon-btn layui-btn-sm">&nbsp;鏁版嵁鍚屾 <i class="layui-icon layui-icon-drop"></i></button>
+            <ul class="dropdown-menu-nav dark">
+                <div class="dropdown-anchor"></div>
+                <li class="title">1st menu</li>
+                <li><a onclick="excelMouldDownload()" style="font-size: 12px"><i class="layui-icon layui-icon-template-1"></i>妯℃澘涓嬭浇</a></li>
+                <li><a onclick="importExcel()" style="font-size: 12px"><i class="layui-icon layui-icon-upload"></i>瀵煎叆 Excel</a></li>
+                <li style="display: none"><input id="importExcel" type="file" onchange="upload(this)" ></li>
+                <hr>
+                <li class="title">2nd menu</li>
+                <li><a onclick="exportExcel()" style="font-size: 12px"><i class="layui-icon layui-icon-export"></i>瀵煎嚭 Excel</a></li>
+            </ul>
+        </div>
+        <!--        <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="operate">
@@ -164,7 +235,7 @@
 <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> 鏇村
+            <i class="layui-icon" style="font-size: 12px;">&#xe61a;</i> 鏌ョ湅鏄庣粏
         </a>
     </span>
 </script>
diff --git a/src/main/webapp/views/pla/returned.html b/src/main/webapp/views/pla/returned.html
index 3868a55..66967dc 100644
--- a/src/main/webapp/views/pla/returned.html
+++ b/src/main/webapp/views/pla/returned.html
@@ -28,9 +28,9 @@
             </div>
         </div>
         <div class="layui-inline"  style="width:83%; margin-bottom: 5px;">
-            <label class="layui-form-label"><span class="not-null">*</span>瀹㈡埛鍚嶇О锛�</label>
+            <label class="layui-form-label">瀹㈡埛鍚嶇О锛�</label>
             <div class="layui-input-inline">
-                <input id="customerR" class="layui-input" type="text" lay-verify="required" readonly="readonly">
+                <input id="customer" class="layui-input" type="text" readonly="readonly">
             </div>
         </div>
         <div class="layui-inline"  style="width:83%; margin-bottom: 5px;">
@@ -126,7 +126,6 @@
 
         // 鏁版嵁淇敼鍔ㄤ綔
         form.on('submit(save)', function () {
-            debugger
             let data = table.cache.formSSXMTable;
             let dataSave = [];
             for(var i in data){
diff --git a/src/main/webapp/views/pla/sellout.html b/src/main/webapp/views/pla/sellout.html
index 0341eea..72e7672 100644
--- a/src/main/webapp/views/pla/sellout.html
+++ b/src/main/webapp/views/pla/sellout.html
@@ -17,54 +17,65 @@
     <form id="detail" class="layui-form" style="text-align: center">
         <div class="layui-form layui-card-header">
             <div class="layui-inline"  style="width:83%;margin-top: 0px;margin-bottom: 5px;">
-                <label class="layui-form-label"><span class="not-null">*</span>璁㈠崟鍙枫��锛�</label>
-                <div class="layui-input-inline">
-                    <input id="orderNo" class="layui-input" type="text" lay-verify="required" >
-                </div>
-            </div>
-            <div class="layui-inline"  style="width:40%;margin-top: 0px;margin-bottom: 5px;">
-                <label class="layui-form-label"><span class="not-null">*</span>瀹㈡埛鍚嶇О锛�</label>
+                <label class="layui-form-label"><span class="not-null">*</span>璁㈠崟銆�鍙凤細</label>
                 <div class="layui-input-inline cool-auto-complete">
-                    <input id="customer" class="layui-input" type="text" style="display: none" lay-verify="required">
-                    <input id="customerV" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" onfocus=this.blur()>
+                    <input id="orderNo" class="layui-input" type="text" style="display: none" lay-verify="required">
+                    <input id="orderNoV" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" onfocus=this.blur()>
                     <div class="cool-auto-complete-window">
-                        <input class="cool-auto-complete-window-input" data-key="locOwnerQueryBylocOwner" onkeyup="autoLoad(this.getAttribute('data-key'))">
-                        <select class="cool-auto-complete-window-select" data-key="locOwnerQueryBylocOwnerSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                        <input class="cool-auto-complete-window-input" data-key="orderQueryByorderId" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                        <select class="cool-auto-complete-window-select" data-key="orderQueryByorderIdSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
                         </select>
                     </div>
                 </div>
             </div>
             <div class="layui-inline"  style="width:40%;margin-top: 0px;margin-bottom: 5px;">
-                <label class="layui-form-label"><span class="not-null">*</span>瀹㈡埛鐢佃瘽锛�</label>
+                <label class="layui-form-label"><span class="not-null">*</span>鐗屻��銆�鍙凤細</label>
+                <div class="layui-input-inline cool-auto-complete">
+                    <input id="maktx" class="layui-input" type="text" style="display: none" lay-verify="required">
+                    <input id="maktxV" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" onfocus=this.blur()>
+                    <div class="cool-auto-complete-window">
+                        <input class="cool-auto-complete-window-input" data-key="orderDetlQueryByMaktx" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                        <select class="cool-auto-complete-window-select" data-key="orderDetlQueryByMaktxSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                        </select>
+                    </div>
+                </div>
+            </div>
+            <div class="layui-inline"  style="width:40%; margin-bottom: 5px;">
+                <label class="layui-form-label"><span class="not-null">*</span>璁㈠崟閲嶉噺锛�</label>
                 <div class="layui-input-inline">
-                    <input id="phone" class="layui-input" type="text" lay-verify="required" readonly="readonly">
+                    <input id="weight" class="layui-input" type="text" lay-verify="required" readonly="readonly">
+                </div>
+            </div>
+            <div class="layui-inline"  style="width:40%;margin-top: 0px;margin-bottom: 5px;">
+                <label class="layui-form-label">瀹㈡埛鍚嶇О锛�</label>
+                <div class="layui-input-inline">
+                    <input id="customer" class="layui-input" type="text" readonly="readonly">
+                </div>
+            </div>
+            <div class="layui-inline"  style="width:40%;margin-top: 0px;margin-bottom: 5px;">
+                <label class="layui-form-label">瀹㈡埛鐢佃瘽锛�</label>
+                <div class="layui-input-inline">
+                    <input id="phone" class="layui-input" type="text" readonly="readonly">
                 </div>
             </div>
             <div class="layui-inline"  style="width:83%; margin-bottom: 5px;">
-                <label class="layui-form-label"><span class="not-null">*</span>瀹㈡埛鍦板潃锛�</label>
+                <label class="layui-form-label">瀹㈡埛鍦板潃锛�</label>
                 <div class="layui-input-inline">
-                    <input id="addr" class="layui-input" type="text" lay-verify="required" readonly="readonly">
+                    <input id="addr" class="layui-input" type="text" readonly="readonly">
                 </div>
             </div>
             <div class="layui-inline"  style="width:83%; margin-bottom: 5px;">
                 <label class="layui-form-label"><span class="not-null">*</span>鍙戣揣閲嶉噺锛�</label>
                 <div class="layui-input-inline">
-                    <input id="weight" class="layui-input" type="text" lay-verify="required" placeholder="KG">
+                    <input id="qtyWeight" class="layui-input" type="text" lay-verify="required" readonly="readonly">
                 </div>
             </div>
         </div>
-
         <div class="layui-form layui-card-header">
             <div class="layui-inline"  style="width:83%; margin-bottom: 5px;">
-                <label class="layui-form-label"><span class="not-null">*</span>璋冩嫧鍒般��锛�</label>
-                <div class="layui-input-inline cool-auto-complete">
-                    <input id="allocate" class="layui-input" type="text" style="display: none" lay-verify="required">
-                    <input id="allocateV" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" onfocus=this.blur()>
-                    <div class="cool-auto-complete-window">
-                        <input class="cool-auto-complete-window-input" data-key="configTypeQueryByAllocate" data-value="allocate" onkeyup="autoLoad(this.getAttribute('data-key'))">
-                        <select class="cool-auto-complete-window-select" data-key="configTypeQueryByAllocateSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
-                        </select>
-                    </div>
+                <label class="layui-form-label">璋冩嫧銆�鍒帮細</label>
+                <div class="layui-input-inline">
+                    <input id="allocate" class="layui-input" type="text" readonly="readonly">
                 </div>
             </div>
             <div class="layui-inline"  style="width:83%; margin-bottom: 5px;">
@@ -106,16 +117,43 @@
 <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/pla/plaDetl.js" charset="utf-8"></script>
+
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="editDialog">
+    <form id="editForm" lay-filter="editForm" class="layui-form" style="text-align: center">
+        <table class="layui-table" id="detailTable" lay-filter="detailTable"></table>
+        <div class="layui-btn-container layui-form-item">
+            <button class="layui-btn layui-btn-normal" type="button" lay-submit ew-event="closeDialog">鍙栨秷</button>
+            <button class="layui-btn layui-btn-normal" type="button" lay-submit lay-filter="detailEditSubmit" lay-submit>淇濆瓨</button>
+        </div>
+    </form>
+</script>
+
+
 </html>
 <script>
+
+    $('body').keydown(function () {
+        if (event.keyCode === 13) {
+            return;
+        }
+    });
+
     var checkData = [];
+    var detailData = [];
     var deliveryTime;
     function child(data){
         checkData = data;
+        var allWeight = 0;
+        for (var i in checkData){
+            allWeight += (checkData[i].weightAnfme - checkData[i].qtyAnfme)
+        }
+        $('#qtyWeight').val(allWeight);
         delivery();
 
     }
 
+    //鏄剧ず4澶╁唴棰勭害鍑哄簱鐨勬椂闂�
     function delivery(){
         $.ajax({
             url: baseUrl+"/plaQty/delivery/auth",
@@ -164,30 +202,66 @@
         var layer = layui.layer;
         var table = layui.table;
 
-        // 鏁版嵁淇敼鍔ㄤ綔
+        form.on('submit(edit)', function () {
+            var dataList = [];
+            for (var i in checkData){
+                var data = {
+                    "batch" : checkData[i].batch,
+                    "packageNo" : checkData[i].packageNo,
+                    "weight" : checkData[i].weightAnfme - checkData[i].qtyAnfme,
+                }
+                dataList.push(data);
+            }
+            if(detailData.length > 0){
+                dataList = detailData;
+            }
+            layer.open({
+                type: 1,
+                title: "鏁伴噺淇敼",
+                content: $('#editDialog').html(),
+                area: '700px',
+                success: function (layero, dIndex) {
+                    // 鏄庣粏琛ㄦ牸
+                    tableIns = table.render({
+                        elem: '#detailTable',
+                        data: dataList,
+                        limit: 100,
+                        even: true,
+                        cellMinWidth: 50,
+                        cols: [[
+                            {field: 'batch', title: '鎵瑰彿', width: 160},
+                            {field: 'packageNo', title: '鍖呭彿', width: 200},
+                            {field: 'weight', title: '鏁伴噺',edit: true},
+                        ]],
+                    });
+                }
+            })
+        })
+
+        // 鏁版嵁鎻愪氦鍔ㄤ綔
         form.on('submit(save)', function () {
 
-            for(var i in checkData){
-                checkData[i].packageType = $('#packageTypeV').val();
-                checkData[i].zpalletType = $('#zpalletTypeV').val();
-                checkData[i].filmWrap = $('#filmWrapV').val();
-                checkData[i].step = 3;
+            if($('#maktxV').val() != checkData[0].brand){
+                layer.msg("閫変腑鐨勫簱瀛樼墝鍙蜂笌璁㈠崟鐗屽彿涓嶄竴鑷达紝璇烽噸鏂伴�夋嫨璁㈠崟");
+                return;
             }
 
-            checkData[0].type = 'sellOut';
+            for (var i in checkData){
+                checkData[i].type = 'sellOut';
+                checkData[i].orderNo = $('#orderNoV').val();
+                checkData[i].customer = $('#customer').val();
+                checkData[i].phone = $('#phone').val();
+                checkData[i].addr = $('#addr').val();
+                checkData[i].orderWeight = detailData[i] ? detailData[i].weight : checkData[i].weightAnfme;
+                checkData[i].allocate = $('#allocate').val();
+                checkData[i].memo = $('#memo').val();
+                checkData[i].pakoutTime = deliveryTime;
+            }
 
-            checkData[0].orderNo = $('#orderNo').val();
-            checkData[0].customer = $('#customerV').val();
-            checkData[0].phone = $('#phone').val();
-            checkData[0].addr = $('#addr').val();
-            checkData[0].orderWeight = $('#weight').val();
-            checkData[0].allocate = $('#allocateV').val();
-            checkData[0].memo = $('#memo').val();
             if(!deliveryTime){
                 layer.msg("璇烽�夋嫨鍙戣揣鏃堕棿");
                 return;
             }
-            checkData[0].pakoutTime = deliveryTime;
 
             $.ajax({
                 url: baseUrl+"/pla/sellout/auth",
@@ -212,6 +286,25 @@
             })
         });
 
+        form.on('submit(detailEditSubmit)', function () {
+
+            detailData = table.cache.detailTable;
+            var allWeight = +0;
+            for (var i in checkData){
+                //妫�娴嬩慨鏀圭殑鏁伴噺鏄惁灏忎簬绛変簬鏈�澶у彲鍑哄簱鏁伴噺
+                if(detailData[i].weight <= checkData[i].weightAnfme - checkData[i].qtyAnfme){
+                    checkData[i].orderWeight = detailData[i].weight;
+                    allWeight = allWeight + Number(detailData[i].weight);
+                }else {
+                    layer.msg("鎵瑰彿锛�" + detailData[i].batch + "锛屽寘鍙凤細" + detailData[i].packageNo + "鍙嚭搴撻噸閲忓皬浜庝慨鏀瑰悗鐨勬暟閲忥紝璇烽噸鏂板~鍐�");
+                    return;
+                }
+            }
+            $('#qtyWeight').val(allWeight);
+            layer.closeAll();
+        })
+
+
         function tableReload(child) {
             var searchData = {};
             $.each($('#search-box [name]').serializeArray(), function() {

--
Gitblit v1.9.1