From 79e603ec5550093b6401c781c3f0cde45b12396c Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期四, 28 十二月 2023 08:43:52 +0800
Subject: [PATCH] #

---
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/ItemController.java                     |  106 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OrderController.java                    |  351 ++
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/OrderMapper.java                  |   15 
 zy-asrs-common/src/main/java/order.sql                                                       |   18 
 zy-asrs-common/src/main/java/orderDetl.sql                                                   |   18 
 zy-asrs-common/src/main/resources/mapper/wms/OrderMapper.xml                                 |   17 
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/ItemServiceImpl.java        |   12 
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/OrderSettle.java                  |  149 +
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OrderSettleController.java              |  106 
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/controller/StaDescController.java        |  106 
 zy-asrs-common/src/main/resources/mapper/wms/StaDescMapper.xml                               |   17 
 zy-asrs-common/src/main/resources/mapper/sys/UserMapper.xml                                  |    5 
 zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/DetlDto.java                      |   98 
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/OrderSettleMapper.java            |   12 
 zy-asrs-common/src/main/resources/mapper/wms/OrderDetlMapper.xml                             |   48 
 zy-asrs-wms/src/main/webapp/views/orderSettle/orderSettle.html                               |   95 
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/StaDescMapper.java                |   17 
 zy-asrs-wms/src/main/webapp/static/js/orderSettle/orderSettle.js                             |  256 +
 zy-asrs-common/src/main/java/com/zy/asrs/common/domain/param/OrderDomainParam.java           |   23 
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/OrderDetlMapper.java              |   22 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OrderDetlController.java                |  123 
 zy-asrs-common/src/main/java/cstmr.sql                                                       |   18 
 zy-asrs-common/src/main/resources/mapper/wms/LocDetlMapper.xml                               |   81 
 zy-asrs-wms/src/main/webapp/static/js/orderTable.js                                          |  173 +
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/LocDetlMapper.java                |    8 
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/OrderDetlServiceImpl.java   |   27 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/MatController.java                      |   16 
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/WrkDetlMapper.java                |    4 
 zy-asrs-common/src/main/resources/mapper/wms/OrderSettleMapper.xml                           |    5 
 zy-asrs-common/src/main/resources/mapper/wms/BasDevpMapper.xml                               |    4 
 zy-asrs-wms/src/main/webapp/static/js/staDesc/staDesc.js                                     |  443 +++
 zy-asrs-wms/src/main/webapp/views/order/out.html                                             |  314 ++
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/ItemMapper.java                   |   12 
 zy-asrs-wms/src/main/webapp/views/order/order.html                                           |  311 ++
 zy-asrs-wms/src/main/webapp/static/js/order/out.js                                           |  372 ++
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/StaDescService.java              |   12 
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/Item.java                         |  251 +
 zy-asrs-wms/src/main/webapp/static/js/order/order.js                                         |  585 ++++
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/LocDetlService.java              |    4 
 zy-asrs-common/src/main/resources/mapper/wms/WrkDetlMapper.xml                               |   15 
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/StaDesc.java                      |  217 +
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WrkDetlServiceImpl.java     |    7 
 zy-asrs-wms/src/main/webapp/views/staDesc/staDesc.html                                       |  189 +
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/CstmrController.java                    |  106 
 zy-asrs-wms/src/main/webapp/views/cstmr/cstmr.html                                           |  175 +
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/OrderDetlService.java            |   15 
 zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/LocDto.java                       |   70 
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/OrderDetl.java                    |  485 +++
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/DocTypeController.java                  |    4 
 zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OutController.java                      |   85 
 zy-asrs-wms/src/main/webapp/static/js/orderDetl/orderDetl.js                                 |  415 +++
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WrkDetlService.java              |    4 
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/CstmrMapper.java                  |   12 
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocDetlServiceImpl.java     |   15 
 zy-asrs-common/src/main/resources/mapper/wms/ItemMapper.xml                                  |    5 
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/Cstmr.java                        |  198 +
 zy-asrs-wms/src/main/webapp/views/orderDetl/orderDetl.html                                   |  366 ++
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/OrderSettleServiceImpl.java |   12 
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/CstmrService.java                |    8 
 zy-asrs-common/src/main/resources/mapper/wms/CstmrMapper.xml                                 |    5 
 zy-asrs-wms/src/main/webapp/static/js/item/item.js                                           |  373 ++
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/OrderSettleService.java          |    8 
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/Order.java                        |  473 +++
 zy-asrs-common/src/main/java/orderSettle.sql                                                 |   18 
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/CstmrServiceImpl.java       |   12 
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/ItemService.java                 |    8 
 zy-asrs-wms/src/main/webapp/static/js/cstmr/cstmr.js                                         |  359 ++
 zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/QueryStockPreDo.java              |   19 
 zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/WrkTraceVo.java                   |   32 
 zy-asrs-wms/src/main/webapp/views/item/item.html                                             |  199 +
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/StaDescServiceImpl.java     |   19 
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/OrderService.java                |   12 
 zy-asrs-common/src/main/java/item.sql                                                        |   18 
 zy-asrs-common/src/main/java/staDesc.sql                                                     |   18 
 zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/OrderServiceImpl.java       |   30 
 75 files changed, 8,253 insertions(+), 7 deletions(-)

diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/DetlDto.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/DetlDto.java
new file mode 100644
index 0000000..d852ca0
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/DetlDto.java
@@ -0,0 +1,98 @@
+package com.zy.asrs.common.domain.dto;
+
+import com.zy.asrs.common.wms.entity.OrderDetl;
+import com.zy.asrs.framework.common.Cools;
+import lombok.Data;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * Created by vincent on 2022/3/25
+ */
+@Data
+public class DetlDto {
+
+    private String orderNo;
+
+    private String matnr;
+
+    private String batch;
+
+    private Double anfme;
+
+    private String posnr;
+
+    private String memo;
+
+    public DetlDto() {
+    }
+
+    public DetlDto(String matnr, Double anfme) {
+        this.matnr = matnr;
+        this.anfme = anfme;
+    }
+
+    public DetlDto(String matnr, String batch) {
+        this.matnr = matnr;
+        this.batch = batch;
+    }
+
+    public DetlDto(String matnr, String batch, Double anfme) {
+        this.matnr = matnr;
+        this.batch = batch;
+        this.anfme = anfme;
+    }
+
+    public DetlDto(String orderNo, String matnr, String batch, Double anfme) {
+        this.orderNo = orderNo;
+        this.matnr = matnr;
+        this.batch = batch;
+        this.anfme = anfme;
+    }
+    public DetlDto(String matnr, String batch, Double anfme , String memo) {
+        this.memo= memo;
+        this.matnr = matnr;
+        this.batch = batch;
+        this.anfme = anfme;
+    }
+
+    public static boolean hasList(Set<DetlDto> detlDtos, OrderDetl orderDetl) {
+        for (DetlDto dto : detlDtos) {
+            if (Cools.isEmpty(dto.getBatch()) && Cools.isEmpty(orderDetl.getBatch())) {
+                if (dto.getMatnr().equals(orderDetl.getMatnr())) {
+                    return true;
+                }
+            } else {
+                if (!Cools.isEmpty(dto.getBatch()) && !Cools.isEmpty(orderDetl.getBatch())) {
+                    if (dto.getMatnr().equals(orderDetl.getMatnr()) && dto.getBatch().equals(orderDetl.getBatch())) {
+                        return true;
+                    }
+                }
+            }
+        }
+        return false;
+    }
+
+    public static boolean has(List<DetlDto> detlDtos, DetlDto detlDto) {
+        for (DetlDto dto : detlDtos) {
+            if (dto.getMatnr().equals(detlDto.getMatnr()) && Cools.eq(dto.getBatch(), detlDto.getBatch())) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    public static DetlDto find(List<DetlDto> detlDtos, String matnr, String batch) {
+        if (Cools.isEmpty(matnr)) {
+            return null;
+        }
+        for (DetlDto detlDto : detlDtos) {
+            if (matnr.equals(detlDto.getMatnr()) && Cools.eq(batch, detlDto.getBatch())) {
+                return detlDto;
+            }
+        }
+        return null;
+    }
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/LocDto.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/LocDto.java
new file mode 100644
index 0000000..100df12
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/LocDto.java
@@ -0,0 +1,70 @@
+package com.zy.asrs.common.domain.dto;
+
+import com.zy.asrs.framework.common.Cools;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Created by vincent on 2022/3/28
+ */
+@Data
+public class LocDto {
+
+    private String locNo;
+
+    private String matnr;
+
+    private String maktx;
+
+    private String batch;
+
+    private String orderNo;
+
+    private Double anfme;
+
+    private boolean lack = false;
+
+    private List<Integer> staNos;
+
+    private Integer staNo;
+
+    public LocDto() {
+    }
+
+    public LocDto(String locNo, String matnr, String batch, Double anfme) {
+        this.locNo = locNo;
+        this.matnr = matnr;
+        this.batch = batch;
+        this.anfme = anfme;
+    }
+
+    public LocDto(String locNo, String matnr, String batch, String orderNo, Double anfme) {
+        this.locNo = locNo;
+        this.matnr = matnr;
+        this.batch = batch;
+        this.orderNo = orderNo;
+        this.anfme = anfme;
+    }
+
+    public LocDto(String locNo, String matnr, String maktx, String batch, String orderNo, Double anfme) {
+        this.locNo = locNo;
+        this.matnr = matnr;
+        this.maktx = maktx;
+        this.batch = batch;
+        this.orderNo = orderNo;
+        this.anfme = anfme;
+    }
+
+    public String getTitle() {
+        return this.matnr + "锛�" + this.maktx + "锛�";
+    }
+
+    public void setStaNos(List<Integer> staNos) {
+        this.staNos = staNos;
+        if (!Cools.isEmpty(staNos)) {
+            this.staNo = staNos.get(0);
+        }
+    }
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/QueryStockPreDo.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/QueryStockPreDo.java
new file mode 100644
index 0000000..6641201
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/QueryStockPreDo.java
@@ -0,0 +1,19 @@
+package com.zy.asrs.common.domain.dto;
+
+import lombok.Data;
+
+/**
+ * Created by vincent on 2022/8/18
+ */
+@Data
+public class QueryStockPreDo {
+
+    private Integer no;
+
+    private Integer bay;
+
+    private Double count;
+
+    private String orderBy;
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/WrkTraceVo.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/WrkTraceVo.java
new file mode 100644
index 0000000..de68dd0
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/WrkTraceVo.java
@@ -0,0 +1,32 @@
+package com.zy.asrs.common.domain.dto;
+
+import com.zy.asrs.common.wms.entity.WrkDetl;
+import com.zy.asrs.common.wms.entity.WrkMast;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by vincent on 2022/7/22
+ */
+@Data
+public class WrkTraceVo {
+
+    private Integer wrkNo;
+
+    private String ioTimeStr;
+
+    private WrkMast wrkMast;
+
+    private List<WrkDetl> wrkDetls = new ArrayList<>();
+
+    private List<DetlDto> detlDtos = new ArrayList<>();
+
+    public WrkTraceVo(Integer wrkNo, String ioTimeStr, WrkMast wrkMast, WrkDetl wrkDetl) {
+        this.wrkNo = wrkNo;
+        this.ioTimeStr = ioTimeStr;
+        this.wrkMast = wrkMast;
+        this.wrkDetls.add(wrkDetl);
+    }
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/param/OrderDomainParam.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/param/OrderDomainParam.java
new file mode 100644
index 0000000..562c27e
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/param/OrderDomainParam.java
@@ -0,0 +1,23 @@
+package com.zy.asrs.common.domain.param;
+
+import com.zy.asrs.common.wms.entity.OrderDetl;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Created by vincent on 2022/3/24
+ */
+@Data
+public class OrderDomainParam {
+
+    private Long orderId;
+
+    private Long docType;
+
+    private String orderNo;
+
+    private List<OrderDetl> orderDetlList;
+
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/controller/StaDescController.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/controller/StaDescController.java
new file mode 100644
index 0000000..5794b9b
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/controller/StaDescController.java
@@ -0,0 +1,106 @@
+package com.zy.asrs.common.wms.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zy.asrs.common.wms.entity.StaDesc;
+import com.zy.asrs.common.wms.service.StaDescService;
+import com.zy.asrs.framework.annotations.ManagerAuth;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.R;
+import com.zy.asrs.framework.domain.KeyValueVo;
+import com.zy.asrs.framework.common.DateUtils;
+import com.zy.asrs.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+
+@RestController
+public class StaDescController extends BaseController {
+
+    @Autowired
+    private StaDescService staDescService;
+
+    @RequestMapping(value = "/staDesc/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(staDescService.getById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/staDesc/page/auth")
+    @ManagerAuth
+    public R page(@RequestParam(defaultValue = "1") Integer curr,
+                  @RequestParam(defaultValue = "10") Integer limit,
+                  @RequestParam(required = false) String condition,
+                  @RequestParam(required = false) String timeRange,
+                  @RequestParam Map<String, Object> param) {
+        LambdaQueryWrapper<StaDesc> wrapper = new LambdaQueryWrapper<>();
+        if (!Cools.isEmpty(condition)) {
+            wrapper.like(StaDesc::getTypeId, condition);
+        }
+        if (!Cools.isEmpty(timeRange)) {
+            String[] range = timeRange.split(RANGE_TIME_LINK);
+            wrapper.ge(StaDesc::getAppeTime, DateUtils.convert(range[0]));
+            wrapper.le(StaDesc::getAppeTime, DateUtils.convert(range[1]));
+        }
+        return R.ok(staDescService.page(new Page<>(curr, limit), wrapper));
+    }
+
+
+    @RequestMapping(value = "/staDesc/add/auth")
+    @ManagerAuth
+    public R add(StaDesc staDesc) {
+        staDescService.save(staDesc);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/staDesc/update/auth")
+	@ManagerAuth
+    public R update(StaDesc staDesc){
+        if (Cools.isEmpty(staDesc) || null==staDesc.getTypeId()){
+            return R.error();
+        }
+        staDescService.updateById(staDesc);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/staDesc/delete/auth")
+    @ManagerAuth
+    public R delete(@RequestParam(value="ids[]") Long[] ids){
+         for (Long id : ids){
+            staDescService.removeById(id);
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/staDescQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        LambdaQueryWrapper<StaDesc> wrapper = new LambdaQueryWrapper<>();
+        wrapper.like(StaDesc::getTypeId, condition);
+        Page<StaDesc> page = staDescService.page(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (StaDesc staDesc : page.getRecords()){
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", staDesc.getTypeId());
+            map.put("value", staDesc.getTypeId());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping("/staDesc/all/get/kv")
+    @ManagerAuth
+    public R getDataKV(@RequestParam(required = false) String condition) {
+        List<KeyValueVo> vos = new ArrayList<>();
+        LambdaQueryWrapper<StaDesc> wrapper = new LambdaQueryWrapper<>();
+        if (!Cools.isEmpty(condition)) {
+            wrapper.like(StaDesc::getTypeId, condition);
+        }
+        staDescService.page(new Page<>(1, 30), wrapper).getRecords().forEach(item -> vos.add(new KeyValueVo(String.valueOf(item.getTypeId()), item.getTypeId())));
+        return R.ok().add(vos);
+    }
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/Cstmr.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/Cstmr.java
new file mode 100644
index 0000000..1c3a180
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/Cstmr.java
@@ -0,0 +1,198 @@
+package com.zy.asrs.common.wms.entity;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.SpringUtils;
+import com.zy.asrs.common.sys.entity.User;
+import com.zy.asrs.common.sys.entity.Host;
+import com.zy.asrs.common.sys.service.UserService;
+import com.zy.asrs.common.sys.service.HostService;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@TableName("wms_cstmr")
+public class Cstmr implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ApiModelProperty(value= "ID")
+    private Long id;
+
+    /**
+     * 瀹㈡埛缂栧彿
+     */
+    @ApiModelProperty(value= "瀹㈡埛缂栧彿")
+    private String uuid;
+
+    /**
+     * 瀹㈡埛鍚嶇О
+     */
+    @ApiModelProperty(value= "瀹㈡埛鍚嶇О")
+    private String name;
+
+    /**
+     * 鑱旂郴浜�
+     */
+    @ApiModelProperty(value= "鑱旂郴浜�")
+    private String contacts;
+
+    /**
+     * 鑱旂郴鐢佃瘽
+     */
+    @ApiModelProperty(value= "鑱旂郴鐢佃瘽")
+    private String tel;
+
+    /**
+     * 鑱旂郴鍦板潃
+     */
+    @ApiModelProperty(value= "鑱旂郴鍦板潃")
+    private String addr;
+
+    /**
+     * 鐘舵�� 1: 姝e父  2: 绂佺敤  
+     */
+    @ApiModelProperty(value= "鐘舵�� 1: 姝e父  2: 绂佺敤  ")
+    private Integer status;
+
+    /**
+     * 娣诲姞浜哄憳
+     */
+    @ApiModelProperty(value= "娣诲姞浜哄憳")
+    private Long createBy;
+
+    /**
+     * 娣诲姞鏃堕棿
+     */
+    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @ApiModelProperty(value= "淇敼浜哄憳")
+    private Long updateBy;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    /**
+     * 澶囨敞
+     */
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    /**
+     * 鎺堟潈鍟嗘埛
+     */
+    @ApiModelProperty(value= "鎺堟潈鍟嗘埛")
+    private Long hostId;
+
+    public Cstmr() {}
+
+    public Cstmr(String uuid,String name,String contacts,String tel,String addr,Integer status,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo,Long hostId) {
+        this.uuid = uuid;
+        this.name = name;
+        this.contacts = contacts;
+        this.tel = tel;
+        this.addr = addr;
+        this.status = status;
+        this.createBy = createBy;
+        this.createTime = createTime;
+        this.updateBy = updateBy;
+        this.updateTime = updateTime;
+        this.memo = memo;
+        this.hostId = hostId;
+    }
+
+//    Cstmr cstmr = new Cstmr(
+//            null,    // 瀹㈡埛缂栧彿[闈炵┖]
+//            null,    // 瀹㈡埛鍚嶇О
+//            null,    // 鑱旂郴浜�
+//            null,    // 鑱旂郴鐢佃瘽
+//            null,    // 鑱旂郴鍦板潃
+//            null,    // 鐘舵��
+//            null,    // 娣诲姞浜哄憳
+//            null,    // 娣诲姞鏃堕棿
+//            null,    // 淇敼浜哄憳
+//            null,    // 淇敼鏃堕棿
+//            null,    // 澶囨敞
+//            null    // 鎺堟潈鍟嗘埛
+//    );
+
+    public String getStatus$(){
+        if (null == this.status){ return null; }
+        switch (this.status){
+            case 1:
+                return "姝e父";
+            case 2:
+                return "绂佺敤";
+            default:
+                return String.valueOf(this.status);
+        }
+    }
+
+    public String getCreateBy$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.getById(this.createBy);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        return null;
+    }
+
+    public String getCreateTime$(){
+        if (Cools.isEmpty(this.createTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+    }
+
+    public String getUpdateBy$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.getById(this.updateBy);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        return null;
+    }
+
+    public String getUpdateTime$(){
+        if (Cools.isEmpty(this.updateTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+    }
+
+    public String getHostId$(){
+        HostService service = SpringUtils.getBean(HostService.class);
+        Host host = service.getById(this.hostId);
+        if (!Cools.isEmpty(host)){
+            return String.valueOf(host.getName());
+        }
+        return null;
+    }
+
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/Item.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/Item.java
new file mode 100644
index 0000000..68ecb7f
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/Item.java
@@ -0,0 +1,251 @@
+package com.zy.asrs.common.wms.entity;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.SpringUtils;
+import com.zy.asrs.common.sys.entity.User;
+import com.zy.asrs.common.sys.entity.Host;
+import com.zy.asrs.common.sys.service.UserService;
+import com.zy.asrs.common.sys.service.HostService;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@TableName("wms_item")
+public class Item implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ApiModelProperty(value= "ID")
+    private Long id;
+
+    /**
+     * 椤圭洰缂栧彿
+     */
+    @ApiModelProperty(value= "椤圭洰缂栧彿")
+    @TableId(value = "uuid", type = IdType.INPUT)
+    private String uuid;
+
+    /**
+     * 椤圭洰鍚嶇О
+     */
+    @ApiModelProperty(value= "椤圭洰鍚嶇О")
+    private String name;
+
+    /**
+     * 鍐呴儴缂栧彿
+     */
+    @ApiModelProperty(value= "鍐呴儴缂栧彿")
+    private String inUuid;
+
+    /**
+     * 瀹㈡埛缂栧彿
+     */
+    @ApiModelProperty(value= "瀹㈡埛缂栧彿")
+    private String cstmrUuid;
+
+    /**
+     * 瀹㈡埛
+     */
+    @ApiModelProperty(value= "瀹㈡埛")
+    private String cstmr;
+
+    /**
+     * 椤圭洰鎴愬憳
+     */
+    @ApiModelProperty(value= "椤圭洰鎴愬憳")
+    private String member;
+
+    /**
+     * 椤圭洰缁忕悊
+     */
+    @ApiModelProperty(value= "椤圭洰缁忕悊")
+    private String leader;
+
+    /**
+     * 寮�濮嬫椂闂�
+     */
+    @ApiModelProperty(value= "寮�濮嬫椂闂�")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date startTime;
+
+    /**
+     * 缁撴潫鏃堕棿
+     */
+    @ApiModelProperty(value= "缁撴潫鏃堕棿")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date endTime;
+
+    /**
+     * 鐘舵�� 1: 姝e父  0: 绂佺敤  
+     */
+    @ApiModelProperty(value= "鐘舵�� 1: 姝e父  0: 绂佺敤  ")
+    private Integer status;
+
+    /**
+     * 娣诲姞浜哄憳
+     */
+    @ApiModelProperty(value= "娣诲姞浜哄憳")
+    private Long createBy;
+
+    /**
+     * 娣诲姞鏃堕棿
+     */
+    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @ApiModelProperty(value= "淇敼浜哄憳")
+    private Long updateBy;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    /**
+     * 澶囨敞
+     */
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    /**
+     * 鎺堟潈鍟嗘埛
+     */
+    @ApiModelProperty(value= "鎺堟潈鍟嗘埛")
+    private Long hostId;
+
+    public Item() {}
+
+    public Item(String uuid,String name,String inUuid,String cstmrUuid,String cstmr,String member,String leader,Date startTime,Date endTime,Integer status,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo,Long hostId) {
+        this.uuid = uuid;
+        this.name = name;
+        this.inUuid = inUuid;
+        this.cstmrUuid = cstmrUuid;
+        this.cstmr = cstmr;
+        this.member = member;
+        this.leader = leader;
+        this.startTime = startTime;
+        this.endTime = endTime;
+        this.status = status;
+        this.createBy = createBy;
+        this.createTime = createTime;
+        this.updateBy = updateBy;
+        this.updateTime = updateTime;
+        this.memo = memo;
+        this.hostId = hostId;
+    }
+
+//    Item item = new Item(
+//            null,    // 椤圭洰缂栧彿[闈炵┖]
+//            null,    // 椤圭洰鍚嶇О
+//            null,    // 鍐呴儴缂栧彿
+//            null,    // 瀹㈡埛缂栧彿
+//            null,    // 瀹㈡埛
+//            null,    // 椤圭洰鎴愬憳
+//            null,    // 椤圭洰缁忕悊
+//            null,    // 寮�濮嬫椂闂�
+//            null,    // 缁撴潫鏃堕棿
+//            null,    // 鐘舵��
+//            null,    // 娣诲姞浜哄憳
+//            null,    // 娣诲姞鏃堕棿
+//            null,    // 淇敼浜哄憳
+//            null,    // 淇敼鏃堕棿
+//            null,    // 澶囨敞
+//            null    // 鎺堟潈鍟嗘埛
+//    );
+
+    public String getStartTime$(){
+        if (Cools.isEmpty(this.startTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.startTime);
+    }
+
+    public String getEndTime$(){
+        if (Cools.isEmpty(this.endTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.endTime);
+    }
+
+    public String getStatus$(){
+        if (null == this.status){ return null; }
+        switch (this.status){
+            case 1:
+                return "姝e父";
+            case 0:
+                return "绂佺敤";
+            default:
+                return String.valueOf(this.status);
+        }
+    }
+
+    public String getCreateBy$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.getById(this.createBy);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        return null;
+    }
+
+    public String getCreateTime$(){
+        if (Cools.isEmpty(this.createTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+    }
+
+    public String getUpdateBy$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.getById(this.updateBy);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        return null;
+    }
+
+    public String getUpdateTime$(){
+        if (Cools.isEmpty(this.updateTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+    }
+
+    public String getHostId$(){
+        HostService service = SpringUtils.getBean(HostService.class);
+        Host host = service.getById(this.hostId);
+        if (!Cools.isEmpty(host)){
+            return String.valueOf(host.getName());
+        }
+        return null;
+    }
+
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/Order.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/Order.java
new file mode 100644
index 0000000..64e74b7
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/Order.java
@@ -0,0 +1,473 @@
+package com.zy.asrs.common.wms.entity;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import com.zy.asrs.common.wms.service.CstmrService;
+import com.zy.asrs.common.wms.service.DocTypeService;
+import com.zy.asrs.common.wms.service.ItemService;
+import com.zy.asrs.common.wms.service.OrderSettleService;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.SpringUtils;
+import com.zy.asrs.common.sys.entity.User;
+import com.zy.asrs.common.sys.entity.Host;
+import com.zy.asrs.common.sys.service.UserService;
+import com.zy.asrs.common.sys.service.HostService;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@TableName("wms_order")
+public class Order implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ApiModelProperty(value= "ID")
+    private Long id;
+
+    /**
+     * 缂栧彿
+     */
+    @ApiModelProperty(value= "缂栧彿")
+    private String uuid;
+
+    /**
+     * 璁㈠崟缂栧彿
+     */
+    @ApiModelProperty(value= "璁㈠崟缂栧彿")
+    private String orderNo;
+
+    /**
+     * 鍗曟嵁鏃ユ湡
+     */
+    @ApiModelProperty(value= "鍗曟嵁鏃ユ湡")
+    private String orderTime;
+
+    /**
+     * 鍗曟嵁绫诲瀷
+     */
+    @ApiModelProperty(value= "鍗曟嵁绫诲瀷")
+    private Long docType;
+
+    /**
+     * 椤圭洰缂栧彿
+     */
+    @ApiModelProperty(value= "椤圭洰缂栧彿")
+    private Long itemId;
+
+    @ApiModelProperty(value= "")
+    private String itemName;
+
+    /**
+     * 璋冩嫧椤圭洰缂栧彿
+     */
+    @ApiModelProperty(value= "璋冩嫧椤圭洰缂栧彿")
+    private Long allotItemId;
+
+    /**
+     * 鍒濆绁ㄦ嵁鍙�
+     */
+    @ApiModelProperty(value= "鍒濆绁ㄦ嵁鍙�")
+    private String defNumber;
+
+    /**
+     * 绁ㄦ嵁鍙�
+     */
+    @ApiModelProperty(value= "绁ㄦ嵁鍙�")
+    private String number;
+
+    /**
+     * 瀹㈡埛缂栧彿
+     */
+    @ApiModelProperty(value= "瀹㈡埛缂栧彿")
+    private Long cstmr;
+
+    /**
+     * 瀹㈡埛
+     */
+    @ApiModelProperty(value= "瀹㈡埛")
+    private String cstmrName;
+
+    /**
+     * 鑱旂郴鏂瑰紡
+     */
+    @ApiModelProperty(value= "鑱旂郴鏂瑰紡")
+    private String tel;
+
+    /**
+     * 鎿嶄綔浜哄憳
+     */
+    @ApiModelProperty(value= "鎿嶄綔浜哄憳")
+    private String operMemb;
+
+    /**
+     * 鍚堣閲戦
+     */
+    @ApiModelProperty(value= "鍚堣閲戦")
+    private Double totalFee;
+
+    /**
+     * 浼樻儬鐜�
+     */
+    @ApiModelProperty(value= "浼樻儬鐜�")
+    private Double discount;
+
+    /**
+     * 浼樻儬閲戦
+     */
+    @ApiModelProperty(value= "浼樻儬閲戦")
+    private Double discountFee;
+
+    /**
+     * 閿�鍞垨閲囪喘璐圭敤鍚堣
+     */
+    @ApiModelProperty(value= "閿�鍞垨閲囪喘璐圭敤鍚堣")
+    private Double otherFee;
+
+    /**
+     * 瀹炰粯閲戦
+     */
+    @ApiModelProperty(value= "瀹炰粯閲戦")
+    private Double actFee;
+
+    /**
+     * 浠樻绫诲瀷 1: 鐜伴噾  2: 璁拌处  
+     */
+    @ApiModelProperty(value= "浠樻绫诲瀷 1: 鐜伴噾  2: 璁拌处  ")
+    private Integer payType;
+
+    /**
+     * 涓氬姟鍛�
+     */
+    @ApiModelProperty(value= "涓氬姟鍛�")
+    private String salesman;
+
+    /**
+     * 缁撶畻澶╂暟
+     */
+    @ApiModelProperty(value= "缁撶畻澶╂暟")
+    private Integer accountDay;
+
+    /**
+     * 閭垂鏀粯绫诲瀷 1: 鍦ㄧ嚎鏀粯  2: 璐у埌浠樻  
+     */
+    @ApiModelProperty(value= "閭垂鏀粯绫诲瀷 1: 鍦ㄧ嚎鏀粯  2: 璐у埌浠樻  ")
+    private Integer postFeeType;
+
+    /**
+     * 閭垂
+     */
+    @ApiModelProperty(value= "閭垂")
+    private Double postFee;
+
+    /**
+     * 浠樻鏃堕棿
+     */
+    @ApiModelProperty(value= "浠樻鏃堕棿")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date payTime;
+
+    /**
+     * 鍙戣揣鏃堕棿
+     */
+    @ApiModelProperty(value= "鍙戣揣鏃堕棿")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date sendTime;
+
+    /**
+     * 鐗╂祦鍚嶇О
+     */
+    @ApiModelProperty(value= "鐗╂祦鍚嶇О")
+    private String shipName;
+
+    /**
+     * 鐗╂祦鍗曞彿
+     */
+    @ApiModelProperty(value= "鐗╂祦鍗曞彿")
+    private String shipCode;
+
+    /**
+     * 璁㈠崟鐘舵��
+     */
+    @ApiModelProperty(value= "璁㈠崟鐘舵��")
+    private Long settle;
+
+    /**
+     * 鐘舵�� 1: 姝e父  0: 绂佺敤  
+     */
+    @ApiModelProperty(value= "鐘舵�� 1: 姝e父  0: 绂佺敤  ")
+    private Integer status;
+
+    /**
+     * 娣诲姞浜哄憳
+     */
+    @ApiModelProperty(value= "娣诲姞浜哄憳")
+    private Long createBy;
+
+    /**
+     * 娣诲姞鏃堕棿
+     */
+    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @ApiModelProperty(value= "淇敼浜哄憳")
+    private Long updateBy;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    /**
+     * 澶囨敞
+     */
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    /**
+     * 鎺堟潈鍟嗘埛
+     */
+    @ApiModelProperty(value= "鎺堟潈鍟嗘埛")
+    private Long hostId;
+
+    public Order() {}
+
+    public Order(String uuid,String orderNo,String orderTime,Long docType,Long itemId,String itemName,Long allotItemId,String defNumber,String number,Long cstmr,String cstmrName,String tel,String operMemb,Double totalFee,Double discount,Double discountFee,Double otherFee,Double actFee,Integer payType,String salesman,Integer accountDay,Integer postFeeType,Double postFee,Date payTime,Date sendTime,String shipName,String shipCode,Long settle,Integer status,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo,Long hostId) {
+        this.uuid = uuid;
+        this.orderNo = orderNo;
+        this.orderTime = orderTime;
+        this.docType = docType;
+        this.itemId = itemId;
+        this.itemName = itemName;
+        this.allotItemId = allotItemId;
+        this.defNumber = defNumber;
+        this.number = number;
+        this.cstmr = cstmr;
+        this.cstmrName = cstmrName;
+        this.tel = tel;
+        this.operMemb = operMemb;
+        this.totalFee = totalFee;
+        this.discount = discount;
+        this.discountFee = discountFee;
+        this.otherFee = otherFee;
+        this.actFee = actFee;
+        this.payType = payType;
+        this.salesman = salesman;
+        this.accountDay = accountDay;
+        this.postFeeType = postFeeType;
+        this.postFee = postFee;
+        this.payTime = payTime;
+        this.sendTime = sendTime;
+        this.shipName = shipName;
+        this.shipCode = shipCode;
+        this.settle = settle;
+        this.status = status;
+        this.createBy = createBy;
+        this.createTime = createTime;
+        this.updateBy = updateBy;
+        this.updateTime = updateTime;
+        this.memo = memo;
+        this.hostId = hostId;
+    }
+
+//    Order order = new Order(
+//            null,    // 缂栧彿[闈炵┖]
+//            null,    // 璁㈠崟缂栧彿
+//            null,    // 鍗曟嵁鏃ユ湡
+//            null,    // 鍗曟嵁绫诲瀷
+//            null,    // 椤圭洰缂栧彿
+//            null,    // 
+//            null,    // 璋冩嫧椤圭洰缂栧彿
+//            null,    // 鍒濆绁ㄦ嵁鍙�
+//            null,    // 绁ㄦ嵁鍙�
+//            null,    // 瀹㈡埛缂栧彿
+//            null,    // 瀹㈡埛
+//            null,    // 鑱旂郴鏂瑰紡
+//            null,    // 鎿嶄綔浜哄憳
+//            null,    // 鍚堣閲戦
+//            null,    // 浼樻儬鐜�
+//            null,    // 浼樻儬閲戦
+//            null,    // 閿�鍞垨閲囪喘璐圭敤鍚堣
+//            null,    // 瀹炰粯閲戦
+//            null,    // 浠樻绫诲瀷
+//            null,    // 涓氬姟鍛�
+//            null,    // 缁撶畻澶╂暟
+//            null,    // 閭垂鏀粯绫诲瀷
+//            null,    // 閭垂
+//            null,    // 浠樻鏃堕棿
+//            null,    // 鍙戣揣鏃堕棿
+//            null,    // 鐗╂祦鍚嶇О
+//            null,    // 鐗╂祦鍗曞彿
+//            null,    // 璁㈠崟鐘舵��
+//            null,    // 鐘舵��
+//            null,    // 娣诲姞浜哄憳
+//            null,    // 娣诲姞鏃堕棿
+//            null,    // 淇敼浜哄憳
+//            null,    // 淇敼鏃堕棿
+//            null,    // 澶囨敞
+//            null    // 鎺堟潈鍟嗘埛
+//    );
+
+    public String getDocType$(){
+        DocTypeService service = SpringUtils.getBean(DocTypeService.class);
+        DocType docType = service.getById(this.docType);
+        if (!Cools.isEmpty(docType)){
+            return String.valueOf(docType.getDocName());
+        }
+        return null;
+    }
+
+    public String getItemId$(){
+        ItemService service = SpringUtils.getBean(ItemService.class);
+        Item item = service.getById(this.itemId);
+        if (!Cools.isEmpty(item)){
+            return String.valueOf(item.getId());
+        }
+        return null;
+    }
+
+    public String getAllotItemId$(){
+        ItemService service = SpringUtils.getBean(ItemService.class);
+        Item item = service.getById(this.allotItemId);
+        if (!Cools.isEmpty(item)){
+            return String.valueOf(item.getId());
+        }
+        return null;
+    }
+
+    public String getCstmr$(){
+        CstmrService service = SpringUtils.getBean(CstmrService.class);
+        Cstmr cstmr = service.getById(this.cstmr);
+        if (!Cools.isEmpty(cstmr)){
+            return String.valueOf(cstmr.getId());
+        }
+        return null;
+    }
+
+    public String getPayType$(){
+        if (null == this.payType){ return null; }
+        switch (this.payType){
+            case 1:
+                return "鐜伴噾";
+            case 2:
+                return "璁拌处";
+            default:
+                return String.valueOf(this.payType);
+        }
+    }
+
+    public String getPostFeeType$(){
+        if (null == this.postFeeType){ return null; }
+        switch (this.postFeeType){
+            case 1:
+                return "鍦ㄧ嚎鏀粯";
+            case 2:
+                return "璐у埌浠樻";
+            default:
+                return String.valueOf(this.postFeeType);
+        }
+    }
+
+    public String getPayTime$(){
+        if (Cools.isEmpty(this.payTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.payTime);
+    }
+
+    public String getSendTime$(){
+        if (Cools.isEmpty(this.sendTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.sendTime);
+    }
+
+    public String getSettle$(){
+        OrderSettleService service = SpringUtils.getBean(OrderSettleService.class);
+        OrderSettle orderSettle = service.getById(this.settle);
+        if (!Cools.isEmpty(orderSettle)){
+            return String.valueOf(orderSettle.getSettleName());
+        }
+        return null;
+    }
+
+    public String getStatus$(){
+        if (null == this.status){ return null; }
+        switch (this.status){
+            case 1:
+                return "姝e父";
+            case 0:
+                return "绂佺敤";
+            default:
+                return String.valueOf(this.status);
+        }
+    }
+
+    public String getCreateBy$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.getById(this.createBy);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        return null;
+    }
+
+    public String getCreateTime$(){
+        if (Cools.isEmpty(this.createTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+    }
+
+    public String getUpdateBy$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.getById(this.updateBy);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        return null;
+    }
+
+    public String getUpdateTime$(){
+        if (Cools.isEmpty(this.updateTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+    }
+
+    public String getHostId$(){
+        HostService service = SpringUtils.getBean(HostService.class);
+        Host host = service.getById(this.hostId);
+        if (!Cools.isEmpty(host)){
+            return String.valueOf(host.getName());
+        }
+        return null;
+    }
+
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/OrderDetl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/OrderDetl.java
new file mode 100644
index 0000000..9cc0db0
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/OrderDetl.java
@@ -0,0 +1,485 @@
+package com.zy.asrs.common.wms.entity;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import com.zy.asrs.common.utils.Synchro;
+import com.zy.asrs.common.wms.service.OrderService;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.SpringUtils;
+import com.zy.asrs.common.sys.entity.User;
+import com.zy.asrs.common.sys.entity.Host;
+import com.zy.asrs.common.sys.service.UserService;
+import com.zy.asrs.common.sys.service.HostService;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@TableName("wms_order_detl")
+public class OrderDetl implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * ID
+     */
+    @ApiModelProperty(value= "ID")
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 璁㈠崟鍐呯爜
+     */
+    @ApiModelProperty(value= "璁㈠崟鍐呯爜")
+    private Long orderId;
+
+    /**
+     * 鍗曟嵁缂栧彿
+     */
+    @ApiModelProperty(value= "鍗曟嵁缂栧彿")
+    private String orderNo;
+
+    /**
+     * 鏁伴噺
+     */
+    @ApiModelProperty(value= "鏁伴噺")
+    private Double anfme;
+
+    @ApiModelProperty(value= "")
+    private Double qty;
+
+    /**
+     * 鍟嗗搧缂栫爜
+     */
+    @ApiModelProperty(value= "鍟嗗搧缂栫爜")
+    private String matnr;
+
+    /**
+     * 鍟嗗搧鍚嶇О
+     */
+    @ApiModelProperty(value= "鍟嗗搧鍚嶇О")
+    private String maktx;
+
+    /**
+     * 鎵瑰彿
+     */
+    @ApiModelProperty(value= "鎵瑰彿")
+    private String batch;
+
+    /**
+     * 瑙勬牸
+     */
+    @ApiModelProperty(value= "瑙勬牸")
+    private String specs;
+
+    /**
+     * 鍨嬪彿
+     */
+    @ApiModelProperty(value= "鍨嬪彿")
+    private String model;
+
+    /**
+     * 棰滆壊
+     */
+    @ApiModelProperty(value= "棰滆壊")
+    private String color;
+
+    /**
+     * 鍝佺墝
+     */
+    @ApiModelProperty(value= "鍝佺墝")
+    private String brand;
+
+    /**
+     * 鍗曚綅
+     */
+    @ApiModelProperty(value= "鍗曚綅")
+    private String unit;
+
+    /**
+     * 鍗曚环
+     */
+    @ApiModelProperty(value= "鍗曚环")
+    private Double price;
+
+    /**
+     * sku
+     */
+    @ApiModelProperty(value= "sku")
+    private String sku;
+
+    /**
+     * 鍗曚綅閲�
+     */
+    @ApiModelProperty(value= "鍗曚綅閲�")
+    private Double units;
+
+    /**
+     * 鏉$爜
+     */
+    @ApiModelProperty(value= "鏉$爜")
+    private String barcode;
+
+    /**
+     * 浜у湴
+     */
+    @ApiModelProperty(value= "浜у湴")
+    private String origin;
+
+    /**
+     * 鍘傚
+     */
+    @ApiModelProperty(value= "鍘傚")
+    private String manu;
+
+    /**
+     * 鐢熶骇鏃ユ湡
+     */
+    @ApiModelProperty(value= "鐢熶骇鏃ユ湡")
+    private String manuDate;
+
+    /**
+     * 鍝侀」鏁�
+     */
+    @ApiModelProperty(value= "鍝侀」鏁�")
+    private String itemNum;
+
+    /**
+     * 瀹夊叏搴撳瓨閲�
+     */
+    @ApiModelProperty(value= "瀹夊叏搴撳瓨閲�")
+    private Double safeQty;
+
+    /**
+     * 閲嶉噺
+     */
+    @ApiModelProperty(value= "閲嶉噺")
+    private Double weight;
+
+    /**
+     * 闀垮害
+     */
+    @ApiModelProperty(value= "闀垮害")
+    private Double length;
+
+    /**
+     * 浣撶Н
+     */
+    @ApiModelProperty(value= "浣撶Н")
+    private Double volume;
+
+    /**
+     * 涓夋柟缂栫爜
+     */
+    @ApiModelProperty(value= "涓夋柟缂栫爜")
+    private String threeCode;
+
+    /**
+     * 渚涘簲鍟�
+     */
+    @ApiModelProperty(value= "渚涘簲鍟�")
+    private String supp;
+
+    /**
+     * 渚涘簲鍟嗙紪鐮�
+     */
+    @ApiModelProperty(value= "渚涘簲鍟嗙紪鐮�")
+    private String suppCode;
+
+    /**
+     * 鏄惁鎵规 1: 鏄�  0: 鍚�  
+     */
+    @ApiModelProperty(value= "鏄惁鎵规 1: 鏄�  0: 鍚�  ")
+    private Integer beBatch;
+
+    /**
+     * 淇濊川鏈�
+     */
+    @ApiModelProperty(value= "淇濊川鏈�")
+    private String deadTime;
+
+    /**
+     * 棰勮澶╂暟
+     */
+    @ApiModelProperty(value= "棰勮澶╂暟")
+    private Integer deadWarn;
+
+    /**
+     * 鍒惰喘 1: 鍒堕��  2: 閲囪喘  3: 澶栧崗  
+     */
+    @ApiModelProperty(value= "鍒惰喘 1: 鍒堕��  2: 閲囪喘  3: 澶栧崗  ")
+    private Integer source;
+
+    /**
+     * 瑕佹眰妫�楠� 1: 鏄�  0: 鍚�  
+     */
+    @ApiModelProperty(value= "瑕佹眰妫�楠� 1: 鏄�  0: 鍚�  ")
+    private Integer inspect;
+
+    /**
+     * 鍗遍櫓鍝� 1: 鏄�  0: 鍚�  
+     */
+    @ApiModelProperty(value= "鍗遍櫓鍝� 1: 鏄�  0: 鍚�  ")
+    private Integer danger;
+
+    /**
+     * 鐘舵�� 1: 姝e父  0: 绂佺敤  
+     */
+    @ApiModelProperty(value= "鐘舵�� 1: 姝e父  0: 绂佺敤  ")
+    private Integer status;
+
+    /**
+     * 娣诲姞浜哄憳
+     */
+    @ApiModelProperty(value= "娣诲姞浜哄憳")
+    private Long createBy;
+
+    /**
+     * 娣诲姞鏃堕棿
+     */
+    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @ApiModelProperty(value= "淇敼浜哄憳")
+    private Long updateBy;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    /**
+     * 澶囨敞
+     */
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    /**
+     * 鎺堟潈鍟嗘埛
+     */
+    @ApiModelProperty(value= "鎺堟潈鍟嗘埛")
+    private Long hostId;
+
+    public OrderDetl() {}
+
+    public OrderDetl(Long orderId,String orderNo,Double anfme,Double qty,String matnr,String maktx,String batch,String specs,String model,String color,String brand,String unit,Double price,String sku,Double units,String barcode,String origin,String manu,String manuDate,String itemNum,Double safeQty,Double weight,Double length,Double volume,String threeCode,String supp,String suppCode,Integer beBatch,String deadTime,Integer deadWarn,Integer source,Integer inspect,Integer danger,Integer status,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo,Long hostId) {
+        this.orderId = orderId;
+        this.orderNo = orderNo;
+        this.anfme = anfme;
+        this.qty = qty;
+        this.matnr = matnr;
+        this.maktx = maktx;
+        this.batch = batch;
+        this.specs = specs;
+        this.model = model;
+        this.color = color;
+        this.brand = brand;
+        this.unit = unit;
+        this.price = price;
+        this.sku = sku;
+        this.units = units;
+        this.barcode = barcode;
+        this.origin = origin;
+        this.manu = manu;
+        this.manuDate = manuDate;
+        this.itemNum = itemNum;
+        this.safeQty = safeQty;
+        this.weight = weight;
+        this.length = length;
+        this.volume = volume;
+        this.threeCode = threeCode;
+        this.supp = supp;
+        this.suppCode = suppCode;
+        this.beBatch = beBatch;
+        this.deadTime = deadTime;
+        this.deadWarn = deadWarn;
+        this.source = source;
+        this.inspect = inspect;
+        this.danger = danger;
+        this.status = status;
+        this.createBy = createBy;
+        this.createTime = createTime;
+        this.updateBy = updateBy;
+        this.updateTime = updateTime;
+        this.memo = memo;
+        this.hostId = hostId;
+    }
+
+//    OrderDetl orderDetl = new OrderDetl(
+//            null,    // 璁㈠崟鍐呯爜
+//            null,    // 鍗曟嵁缂栧彿
+//            null,    // 鏁伴噺
+//            null,    // 
+//            null,    // 鍟嗗搧缂栫爜
+//            null,    // 鍟嗗搧鍚嶇О
+//            null,    // 鎵瑰彿
+//            null,    // 瑙勬牸
+//            null,    // 鍨嬪彿
+//            null,    // 棰滆壊
+//            null,    // 鍝佺墝
+//            null,    // 鍗曚綅
+//            null,    // 鍗曚环
+//            null,    // sku
+//            null,    // 鍗曚綅閲�
+//            null,    // 鏉$爜
+//            null,    // 浜у湴
+//            null,    // 鍘傚
+//            null,    // 鐢熶骇鏃ユ湡
+//            null,    // 鍝侀」鏁�
+//            null,    // 瀹夊叏搴撳瓨閲�
+//            null,    // 閲嶉噺
+//            null,    // 闀垮害
+//            null,    // 浣撶Н
+//            null,    // 涓夋柟缂栫爜
+//            null,    // 渚涘簲鍟�
+//            null,    // 渚涘簲鍟嗙紪鐮�
+//            null,    // 鏄惁鎵规
+//            null,    // 淇濊川鏈�
+//            null,    // 棰勮澶╂暟
+//            null,    // 鍒惰喘
+//            null,    // 瑕佹眰妫�楠�
+//            null,    // 鍗遍櫓鍝�
+//            null,    // 鐘舵��
+//            null,    // 娣诲姞浜哄憳
+//            null,    // 娣诲姞鏃堕棿
+//            null,    // 淇敼浜哄憳
+//            null,    // 淇敼鏃堕棿
+//            null,    // 澶囨敞
+//            null    // 鎺堟潈鍟嗘埛
+//    );
+
+    public String getOrderId$(){
+        OrderService service = SpringUtils.getBean(OrderService.class);
+        Order order = service.getById(this.orderId);
+        if (!Cools.isEmpty(order)){
+            return String.valueOf(order.getId());
+        }
+        return null;
+    }
+
+    public String getBeBatch$(){
+        if (null == this.beBatch){ return null; }
+        switch (this.beBatch){
+            case 1:
+                return "鏄�";
+            case 0:
+                return "鍚�";
+            default:
+                return String.valueOf(this.beBatch);
+        }
+    }
+
+    public String getSource$(){
+        if (null == this.source){ return null; }
+        switch (this.source){
+            case 1:
+                return "鍒堕��";
+            case 2:
+                return "閲囪喘";
+            case 3:
+                return "澶栧崗";
+            default:
+                return String.valueOf(this.source);
+        }
+    }
+
+    public String getInspect$(){
+        if (null == this.inspect){ return null; }
+        switch (this.inspect){
+            case 1:
+                return "鏄�";
+            case 0:
+                return "鍚�";
+            default:
+                return String.valueOf(this.inspect);
+        }
+    }
+
+    public String getDanger$(){
+        if (null == this.danger){ return null; }
+        switch (this.danger){
+            case 1:
+                return "鏄�";
+            case 0:
+                return "鍚�";
+            default:
+                return String.valueOf(this.danger);
+        }
+    }
+
+    public String getStatus$(){
+        if (null == this.status){ return null; }
+        switch (this.status){
+            case 1:
+                return "姝e父";
+            case 0:
+                return "绂佺敤";
+            default:
+                return String.valueOf(this.status);
+        }
+    }
+
+    public String getCreateBy$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.getById(this.createBy);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        return null;
+    }
+
+    public String getCreateTime$(){
+        if (Cools.isEmpty(this.createTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+    }
+
+    public String getUpdateBy$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.getById(this.updateBy);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        return null;
+    }
+
+    public String getUpdateTime$(){
+        if (Cools.isEmpty(this.updateTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+    }
+
+    public String getHostId$(){
+        HostService service = SpringUtils.getBean(HostService.class);
+        Host host = service.getById(this.hostId);
+        if (!Cools.isEmpty(host)){
+            return String.valueOf(host.getName());
+        }
+        return null;
+    }
+
+    public void sync(Object source) {
+        Synchro.Copy(source, this);
+    }
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/OrderSettle.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/OrderSettle.java
new file mode 100644
index 0000000..b0b8fc6
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/OrderSettle.java
@@ -0,0 +1,149 @@
+package com.zy.asrs.common.wms.entity;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.SpringUtils;
+import com.zy.asrs.common.sys.entity.User;
+import com.zy.asrs.common.sys.entity.Host;
+import com.zy.asrs.common.sys.service.UserService;
+import com.zy.asrs.common.sys.service.HostService;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@TableName("wms_order_settle")
+public class OrderSettle implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 璁㈠崟鐘舵��
+     */
+    @ApiModelProperty(value= "璁㈠崟鐘舵��")
+    @TableId(value = "order_settle", type = IdType.INPUT)
+    private Long orderSettle;
+
+    /**
+     * 鐘舵�佹弿杩�
+     */
+    @ApiModelProperty(value= "鐘舵�佹弿杩�")
+    private String settleName;
+
+    /**
+     * 娣诲姞浜哄憳
+     */
+    @ApiModelProperty(value= "娣诲姞浜哄憳")
+    private Long createBy;
+
+    /**
+     * 娣诲姞鏃堕棿
+     */
+    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @ApiModelProperty(value= "淇敼浜哄憳")
+    private Long updateBy;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date updateTime;
+
+    /**
+     * 澶囨敞
+     */
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    /**
+     * 鎺堟潈鍟嗘埛
+     */
+    @ApiModelProperty(value= "鎺堟潈鍟嗘埛")
+    private Long hostId;
+
+    public OrderSettle() {}
+
+    public OrderSettle(Long orderSettle,String settleName,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo,Long hostId) {
+        this.orderSettle = orderSettle;
+        this.settleName = settleName;
+        this.createBy = createBy;
+        this.createTime = createTime;
+        this.updateBy = updateBy;
+        this.updateTime = updateTime;
+        this.memo = memo;
+        this.hostId = hostId;
+    }
+
+//    OrderSettle orderSettle = new OrderSettle(
+//            null,    // 璁㈠崟鐘舵�乕闈炵┖]
+//            null,    // 鐘舵�佹弿杩�
+//            null,    // 娣诲姞浜哄憳
+//            null,    // 娣诲姞鏃堕棿
+//            null,    // 淇敼浜哄憳
+//            null,    // 淇敼鏃堕棿
+//            null,    // 澶囨敞
+//            null    // 鎺堟潈鍟嗘埛
+//    );
+
+    public String getCreateBy$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.getById(this.createBy);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        return null;
+    }
+
+    public String getCreateTime$(){
+        if (Cools.isEmpty(this.createTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
+    }
+
+    public String getUpdateBy$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.getById(this.updateBy);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        return null;
+    }
+
+    public String getUpdateTime$(){
+        if (Cools.isEmpty(this.updateTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
+    }
+
+    public String getHostId$(){
+        HostService service = SpringUtils.getBean(HostService.class);
+        Host host = service.getById(this.hostId);
+        if (!Cools.isEmpty(host)){
+            return String.valueOf(host.getName());
+        }
+        return null;
+    }
+
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/StaDesc.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/StaDesc.java
new file mode 100644
index 0000000..2bb6971
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/StaDesc.java
@@ -0,0 +1,217 @@
+package com.zy.asrs.common.wms.entity;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.zy.asrs.common.wms.service.BasDevpService;
+import com.zy.asrs.common.wms.service.BasWrkIotypeService;
+import org.springframework.format.annotation.DateTimeFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.SpringUtils;
+import com.zy.asrs.common.sys.entity.User;
+import com.zy.asrs.common.sys.entity.Host;
+import com.zy.asrs.common.sys.service.UserService;
+import com.zy.asrs.common.sys.service.HostService;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@TableName("wms_sta_desc")
+public class StaDesc implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 璺緞ID
+     */
+    @ApiModelProperty(value= "璺緞ID")
+    @TableId(value = "type_id", type = IdType.AUTO)
+    private Long typeId;
+
+    /**
+     * 鍏ュ嚭搴撶被鍨�
+     */
+    @ApiModelProperty(value= "鍏ュ嚭搴撶被鍨�")
+    @TableField("type_no")
+    private Integer typeNo;
+
+    /**
+     * 浣滀笟绫诲瀷
+     */
+    @ApiModelProperty(value= "浣滀笟绫诲瀷")
+    private String typeDesc;
+
+    /**
+     * 浣滀笟绔欑偣
+     */
+    @ApiModelProperty(value= "浣滀笟绔欑偣")
+    @TableField("stn_no")
+    private Integer stnNo;
+
+    /**
+     * 绔欑偣鍚嶇О
+     */
+    @ApiModelProperty(value= "绔欑偣鍚嶇О")
+    private String stnDesc;
+
+    /**
+     * 鍫嗗灈鏈哄彿
+     */
+    @ApiModelProperty(value= "鍫嗗灈鏈哄彿")
+    @TableField("crn_no")
+    private Integer crnNo;
+
+    /**
+     * 鍫嗗灈鏈虹珯鐐�
+     */
+    @ApiModelProperty(value= "鍫嗗灈鏈虹珯鐐�")
+    private Integer crnStn;
+
+    /**
+     * 澶囨敞
+     */
+    @ApiModelProperty(value= "澶囨敞")
+    private String memo;
+
+    /**
+     * 淇敼浜哄憳
+     */
+    @ApiModelProperty(value= "淇敼浜哄憳")
+    private Long modiUser;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @ApiModelProperty(value= "淇敼鏃堕棿")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date modiTime;
+
+    /**
+     * 鍒涘缓鑰�
+     */
+    @ApiModelProperty(value= "鍒涘缓鑰�")
+    private Long appeUser;
+
+    /**
+     * 娣诲姞鏃堕棿
+     */
+    @ApiModelProperty(value= "娣诲姞鏃堕棿")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    private Date appeTime;
+
+    /**
+     * 鎺堟潈鍟嗘埛
+     */
+    @ApiModelProperty(value= "鎺堟潈鍟嗘埛")
+    private Long hostId;
+
+    public StaDesc() {}
+
+    public StaDesc(Integer typeNo,String typeDesc,Integer stnNo,String stnDesc,Integer crnNo,Integer crnStn,String memo,Long modiUser,Date modiTime,Long appeUser,Date appeTime,Long hostId) {
+        this.typeNo = typeNo;
+        this.typeDesc = typeDesc;
+        this.stnNo = stnNo;
+        this.stnDesc = stnDesc;
+        this.crnNo = crnNo;
+        this.crnStn = crnStn;
+        this.memo = memo;
+        this.modiUser = modiUser;
+        this.modiTime = modiTime;
+        this.appeUser = appeUser;
+        this.appeTime = appeTime;
+        this.hostId = hostId;
+    }
+
+//    StaDesc staDesc = new StaDesc(
+//            null,    // 鍏ュ嚭搴撶被鍨媅闈炵┖]
+//            null,    // 浣滀笟绫诲瀷
+//            null,    // 浣滀笟绔欑偣[闈炵┖]
+//            null,    // 绔欑偣鍚嶇О
+//            null,    // 鍫嗗灈鏈哄彿[闈炵┖]
+//            null,    // 鍫嗗灈鏈虹珯鐐�
+//            null,    // 澶囨敞
+//            null,    // 淇敼浜哄憳
+//            null,    // 淇敼鏃堕棿
+//            null,    // 鍒涘缓鑰�
+//            null,    // 娣诲姞鏃堕棿
+//            null    // 鎺堟潈鍟嗘埛
+//    );
+
+    public String getTypeNo$(){
+        BasWrkIotypeService service = SpringUtils.getBean(BasWrkIotypeService.class);
+        BasWrkIotype basWrkIotype = service.getById(this.typeNo);
+        if (!Cools.isEmpty(basWrkIotype)){
+            return String.valueOf(basWrkIotype.getIoDesc());
+        }
+        return null;
+    }
+
+    public String getStnNo$(){
+        BasDevpService service = SpringUtils.getBean(BasDevpService.class);
+        BasDevp basDevp = service.getById(this.stnNo);
+        if (!Cools.isEmpty(basDevp)){
+            return String.valueOf(basDevp.getDevNo());
+        }
+        return null;
+    }
+
+    public String getCrnStn$(){
+        BasDevpService service = SpringUtils.getBean(BasDevpService.class);
+        BasDevp basDevp = service.getById(this.crnStn);
+        if (!Cools.isEmpty(basDevp)){
+            return String.valueOf(basDevp.getDevNo());
+        }
+        return null;
+    }
+
+    public String getModiUser$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.getById(this.modiUser);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        return null;
+    }
+
+    public String getModiTime$(){
+        if (Cools.isEmpty(this.modiTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime);
+    }
+
+    public String getAppeUser$(){
+        UserService service = SpringUtils.getBean(UserService.class);
+        User user = service.getById(this.appeUser);
+        if (!Cools.isEmpty(user)){
+            return String.valueOf(user.getNickname());
+        }
+        return null;
+    }
+
+    public String getAppeTime$(){
+        if (Cools.isEmpty(this.appeTime)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
+    }
+
+    public String getHostId$(){
+        HostService service = SpringUtils.getBean(HostService.class);
+        Host host = service.getById(this.hostId);
+        if (!Cools.isEmpty(host)){
+            return String.valueOf(host.getName());
+        }
+        return null;
+    }
+
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/CstmrMapper.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/CstmrMapper.java
new file mode 100644
index 0000000..35b739e
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/CstmrMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.common.wms.mapper;
+
+import com.zy.asrs.common.wms.entity.Cstmr;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface CstmrMapper extends BaseMapper<Cstmr> {
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/ItemMapper.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/ItemMapper.java
new file mode 100644
index 0000000..86284f1
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/ItemMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.common.wms.mapper;
+
+import com.zy.asrs.common.wms.entity.Item;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface ItemMapper extends BaseMapper<Item> {
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/LocDetlMapper.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/LocDetlMapper.java
index d7235f1..74fabc6 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/LocDetlMapper.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/LocDetlMapper.java
@@ -1,12 +1,16 @@
 package com.zy.asrs.common.wms.mapper;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.zy.asrs.common.domain.dto.QueryStockPreDo;
 import com.zy.asrs.common.wms.entity.LocDetl;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 @Mapper
 @Repository
@@ -16,4 +20,8 @@
 
     Integer sum();
 
+    List<LocDetl> queryStock(@Param("matnr")String matnr, @Param("no") Integer no, @Param("orderBy") String orderBy, @Param("bay") Integer bay);
+
+    List<QueryStockPreDo> queryStockPre(@Param("matnr")String matnr);
+
 }
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/OrderDetlMapper.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/OrderDetlMapper.java
new file mode 100644
index 0000000..4055af6
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/OrderDetlMapper.java
@@ -0,0 +1,22 @@
+package com.zy.asrs.common.wms.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zy.asrs.common.wms.entity.OrderDetl;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+@Repository
+public interface OrderDetlMapper extends BaseMapper<OrderDetl> {
+
+    OrderDetl selectItem(@Param("orderId") Long orderId, @Param("matnr") String matnr, @Param("batch") String batch);
+
+    IPage<OrderDetl> getPakoutPage(Page<OrderDetl> page ,Map<String, Object> map);
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/OrderMapper.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/OrderMapper.java
new file mode 100644
index 0000000..4c5ed3a
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/OrderMapper.java
@@ -0,0 +1,15 @@
+package com.zy.asrs.common.wms.mapper;
+
+import com.zy.asrs.common.wms.entity.Order;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface OrderMapper extends BaseMapper<Order> {
+
+    void updateOrder1(Long orderId,@Param("userId")Long userId);
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/OrderSettleMapper.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/OrderSettleMapper.java
new file mode 100644
index 0000000..600ec9d
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/OrderSettleMapper.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.common.wms.mapper;
+
+import com.zy.asrs.common.wms.entity.OrderSettle;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface OrderSettleMapper extends BaseMapper<OrderSettle> {
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/StaDescMapper.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/StaDescMapper.java
new file mode 100644
index 0000000..8d89985
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/StaDescMapper.java
@@ -0,0 +1,17 @@
+package com.zy.asrs.common.wms.mapper;
+
+import com.zy.asrs.common.wms.entity.StaDesc;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Mapper
+@Repository
+public interface StaDescMapper extends BaseMapper<StaDesc> {
+
+    List<Integer> queryOutStaNosByLocNo(@Param("locNo") String locNo, @Param("typeNo") Integer typeNo);
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/WrkDetlMapper.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/WrkDetlMapper.java
index 67d7291..f2f80a7 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/WrkDetlMapper.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/WrkDetlMapper.java
@@ -5,8 +5,12 @@
 import org.apache.ibatis.annotations.Mapper;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+
 @Mapper
 @Repository
 public interface WrkDetlMapper extends BaseMapper<WrkDetl> {
 
+    List<WrkDetl> selectAndLogByOrderNoGroupByMatnrOfSum(String orderNo);
+
 }
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/CstmrService.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/CstmrService.java
new file mode 100644
index 0000000..c724ab9
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/CstmrService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.common.wms.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zy.asrs.common.wms.entity.Cstmr;
+
+public interface CstmrService extends IService<Cstmr> {
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/ItemService.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/ItemService.java
new file mode 100644
index 0000000..f561067
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/ItemService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.common.wms.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zy.asrs.common.wms.entity.Item;
+
+public interface ItemService extends IService<Item> {
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/LocDetlService.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/LocDetlService.java
index d063f02..4c332d2 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/LocDetlService.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/LocDetlService.java
@@ -4,7 +4,9 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zy.asrs.common.wms.entity.LocDetl;
 
+import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 public interface LocDetlService extends IService<LocDetl> {
 
@@ -12,4 +14,6 @@
 
     Integer sum();
 
+    List<LocDetl> queryStock(String matnr, String batch, String lgort, Set<String> locNos);
+
 }
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/OrderDetlService.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/OrderDetlService.java
new file mode 100644
index 0000000..c31cf43
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/OrderDetlService.java
@@ -0,0 +1,15 @@
+package com.zy.asrs.common.wms.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zy.asrs.common.wms.entity.OrderDetl;
+
+import java.util.Map;
+
+public interface OrderDetlService extends IService<OrderDetl> {
+
+    OrderDetl selectItem(Long orderId, String matnr, String batch);
+
+    IPage<OrderDetl> getPakoutPage(Integer curr, Integer limit, Map<String, Object> map);
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/OrderService.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/OrderService.java
new file mode 100644
index 0000000..7af4d98
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/OrderService.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.common.wms.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zy.asrs.common.wms.entity.Order;
+
+public interface OrderService extends IService<Order> {
+
+    void updateOrder1(Long orderId,Long userId);
+
+    Order selectByNo(String orderNo);
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/OrderSettleService.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/OrderSettleService.java
new file mode 100644
index 0000000..1b12c28
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/OrderSettleService.java
@@ -0,0 +1,8 @@
+package com.zy.asrs.common.wms.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zy.asrs.common.wms.entity.OrderSettle;
+
+public interface OrderSettleService extends IService<OrderSettle> {
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/StaDescService.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/StaDescService.java
new file mode 100644
index 0000000..b8c36e4
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/StaDescService.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.common.wms.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.zy.asrs.common.wms.entity.StaDesc;
+
+import java.util.List;
+
+public interface StaDescService extends IService<StaDesc> {
+
+    List<Integer> queryOutStaNosByLocNo(String locNo, Integer typeNo);
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WrkDetlService.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WrkDetlService.java
index 21ff17d..12e8827 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WrkDetlService.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WrkDetlService.java
@@ -3,6 +3,10 @@
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.zy.asrs.common.wms.entity.WrkDetl;
 
+import java.util.List;
+
 public interface WrkDetlService extends IService<WrkDetl> {
 
+    List<WrkDetl> selectAndLogByOrderNoGroupByMatnrOfSum(String orderNo);
+
 }
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/CstmrServiceImpl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/CstmrServiceImpl.java
new file mode 100644
index 0000000..769f80b
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/CstmrServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.common.wms.service.impl;
+
+import com.zy.asrs.common.wms.mapper.CstmrMapper;
+import com.zy.asrs.common.wms.entity.Cstmr;
+import com.zy.asrs.common.wms.service.CstmrService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("cstmrService")
+public class CstmrServiceImpl extends ServiceImpl<CstmrMapper, Cstmr> implements CstmrService {
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/ItemServiceImpl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/ItemServiceImpl.java
new file mode 100644
index 0000000..2cae7da
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/ItemServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.common.wms.service.impl;
+
+import com.zy.asrs.common.wms.mapper.ItemMapper;
+import com.zy.asrs.common.wms.entity.Item;
+import com.zy.asrs.common.wms.service.ItemService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("itemService")
+public class ItemServiceImpl extends ServiceImpl<ItemMapper, Item> implements ItemService {
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocDetlServiceImpl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocDetlServiceImpl.java
index 9c48722..2cdd85f 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocDetlServiceImpl.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/LocDetlServiceImpl.java
@@ -2,13 +2,17 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zy.asrs.common.domain.dto.QueryStockPreDo;
 import com.zy.asrs.common.wms.mapper.LocDetlMapper;
 import com.zy.asrs.common.wms.entity.LocDetl;
 import com.zy.asrs.common.wms.service.LocDetlService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 @Service("locDetlService")
 public class LocDetlServiceImpl extends ServiceImpl<LocDetlMapper, LocDetl> implements LocDetlService {
@@ -27,4 +31,15 @@
     public Integer sum() {
         return this.baseMapper.sum();
     }
+
+    @Override
+    public List<LocDetl> queryStock(String matnr, String batch, String orderNo, Set<String> locNos) {
+        List<LocDetl> result = new ArrayList<>();
+        List<QueryStockPreDo> preDos = this.baseMapper.queryStockPre(matnr);
+        for (QueryStockPreDo preDo : preDos) {
+            List<LocDetl> locDetls = this.baseMapper.queryStock(matnr, preDo.getNo(), preDo.getOrderBy(), preDo.getBay());
+            result.addAll(locDetls);
+        }
+        return result;
+    }
 }
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/OrderDetlServiceImpl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/OrderDetlServiceImpl.java
new file mode 100644
index 0000000..c2eb6ec
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/OrderDetlServiceImpl.java
@@ -0,0 +1,27 @@
+package com.zy.asrs.common.wms.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zy.asrs.common.wms.mapper.OrderDetlMapper;
+import com.zy.asrs.common.wms.entity.OrderDetl;
+import com.zy.asrs.common.wms.service.OrderDetlService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+@Service("orderDetlService")
+public class OrderDetlServiceImpl extends ServiceImpl<OrderDetlMapper, OrderDetl> implements OrderDetlService {
+
+    @Override
+    public OrderDetl selectItem(Long orderId, String matnr, String batch) {
+        return this.baseMapper.selectItem(orderId, matnr, batch);
+    }
+
+    @Override
+    public IPage<OrderDetl> getPakoutPage(Integer curr, Integer limit, Map<String, Object> map) {
+        Page<OrderDetl> page = new Page<>(curr, limit);
+        return this.baseMapper.getPakoutPage(page, map);
+    }
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/OrderServiceImpl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/OrderServiceImpl.java
new file mode 100644
index 0000000..c74c4b1
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/OrderServiceImpl.java
@@ -0,0 +1,30 @@
+package com.zy.asrs.common.wms.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zy.asrs.common.wms.mapper.OrderMapper;
+import com.zy.asrs.common.wms.entity.Order;
+import com.zy.asrs.common.wms.service.OrderService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zy.asrs.framework.common.Cools;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service("orderService")
+public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
+
+    @Override
+    public void updateOrder1(Long orderId,Long userId) {
+        this.baseMapper.updateOrder1(orderId, userId);
+    }
+
+    @Override
+    public Order selectByNo(String orderNo) {
+        List<Order> orderList = this.list(new LambdaQueryWrapper<Order>().eq(Order::getOrderNo, orderNo));
+        if (Cools.isEmpty(orderList)) {
+            return null;
+        }
+        return orderList.get(0);
+    }
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/OrderSettleServiceImpl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/OrderSettleServiceImpl.java
new file mode 100644
index 0000000..f5c5734
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/OrderSettleServiceImpl.java
@@ -0,0 +1,12 @@
+package com.zy.asrs.common.wms.service.impl;
+
+import com.zy.asrs.common.wms.mapper.OrderSettleMapper;
+import com.zy.asrs.common.wms.entity.OrderSettle;
+import com.zy.asrs.common.wms.service.OrderSettleService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+@Service("orderSettleService")
+public class OrderSettleServiceImpl extends ServiceImpl<OrderSettleMapper, OrderSettle> implements OrderSettleService {
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/StaDescServiceImpl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/StaDescServiceImpl.java
new file mode 100644
index 0000000..cf956b3
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/StaDescServiceImpl.java
@@ -0,0 +1,19 @@
+package com.zy.asrs.common.wms.service.impl;
+
+import com.zy.asrs.common.wms.mapper.StaDescMapper;
+import com.zy.asrs.common.wms.entity.StaDesc;
+import com.zy.asrs.common.wms.service.StaDescService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service("staDescService")
+public class StaDescServiceImpl extends ServiceImpl<StaDescMapper, StaDesc> implements StaDescService {
+
+    @Override
+    public List<Integer> queryOutStaNosByLocNo(String locNo, Integer typeNo) {
+        return this.baseMapper.queryOutStaNosByLocNo(locNo, typeNo);
+    }
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WrkDetlServiceImpl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WrkDetlServiceImpl.java
index a22edbf..bb83fb3 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WrkDetlServiceImpl.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WrkDetlServiceImpl.java
@@ -6,7 +6,14 @@
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 @Service("wrkDetlService")
 public class WrkDetlServiceImpl extends ServiceImpl<WrkDetlMapper, WrkDetl> implements WrkDetlService {
 
+    @Override
+    public List<WrkDetl> selectAndLogByOrderNoGroupByMatnrOfSum(String orderNo) {
+        return this.baseMapper.selectAndLogByOrderNoGroupByMatnrOfSum(orderNo);
+    }
+
 }
diff --git a/zy-asrs-common/src/main/java/cstmr.sql b/zy-asrs-common/src/main/java/cstmr.sql
new file mode 100644
index 0000000..61386ec
--- /dev/null
+++ b/zy-asrs-common/src/main/java/cstmr.sql
@@ -0,0 +1,18 @@
+-- save cstmr record
+-- mysql
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'cstmr/cstmr.html', 'cstmr绠$悊', null , '2', null , '1');
+
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'cstmr#view', '鏌ヨ', '', '3', '0', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'cstmr#btn-add', '鏂板', '', '3', '1', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'cstmr#btn-edit', '缂栬緫', '', '3', '2', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'cstmr#btn-delete', '鍒犻櫎', '', '3', '3', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'cstmr#btn-export', '瀵煎嚭', '', '3', '4', '1');
+
+-- sqlserver
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'cstmr/cstmr.html', N'cstmr绠$悊', null, '2', null, '1');
+
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'cstmr#view', N'鏌ヨ', '', '3', '0', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'cstmr#btn-add', N'鏂板', '', '3', '1', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'cstmr#btn-edit', N'缂栬緫', '', '3', '2', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'cstmr#btn-delete', N'鍒犻櫎', '', '3', '3', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'cstmr#btn-export', N'瀵煎嚭', '', '3', '4', '1');
diff --git a/zy-asrs-common/src/main/java/item.sql b/zy-asrs-common/src/main/java/item.sql
new file mode 100644
index 0000000..4028a37
--- /dev/null
+++ b/zy-asrs-common/src/main/java/item.sql
@@ -0,0 +1,18 @@
+-- save item record
+-- mysql
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'item/item.html', 'item绠$悊', null , '2', null , '1');
+
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'item#view', '鏌ヨ', '', '3', '0', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'item#btn-add', '鏂板', '', '3', '1', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'item#btn-edit', '缂栬緫', '', '3', '2', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'item#btn-delete', '鍒犻櫎', '', '3', '3', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'item#btn-export', '瀵煎嚭', '', '3', '4', '1');
+
+-- sqlserver
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'item/item.html', N'item绠$悊', null, '2', null, '1');
+
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'item#view', N'鏌ヨ', '', '3', '0', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'item#btn-add', N'鏂板', '', '3', '1', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'item#btn-edit', N'缂栬緫', '', '3', '2', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'item#btn-delete', N'鍒犻櫎', '', '3', '3', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'item#btn-export', N'瀵煎嚭', '', '3', '4', '1');
diff --git a/zy-asrs-common/src/main/java/order.sql b/zy-asrs-common/src/main/java/order.sql
new file mode 100644
index 0000000..a510361
--- /dev/null
+++ b/zy-asrs-common/src/main/java/order.sql
@@ -0,0 +1,18 @@
+-- save order record
+-- mysql
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'order/order.html', 'order绠$悊', null , '2', null , '1');
+
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'order#view', '鏌ヨ', '', '3', '0', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'order#btn-add', '鏂板', '', '3', '1', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'order#btn-edit', '缂栬緫', '', '3', '2', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'order#btn-delete', '鍒犻櫎', '', '3', '3', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'order#btn-export', '瀵煎嚭', '', '3', '4', '1');
+
+-- sqlserver
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'order/order.html', N'order绠$悊', null, '2', null, '1');
+
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'order#view', N'鏌ヨ', '', '3', '0', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'order#btn-add', N'鏂板', '', '3', '1', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'order#btn-edit', N'缂栬緫', '', '3', '2', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'order#btn-delete', N'鍒犻櫎', '', '3', '3', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'order#btn-export', N'瀵煎嚭', '', '3', '4', '1');
diff --git a/zy-asrs-common/src/main/java/orderDetl.sql b/zy-asrs-common/src/main/java/orderDetl.sql
new file mode 100644
index 0000000..db54a6d
--- /dev/null
+++ b/zy-asrs-common/src/main/java/orderDetl.sql
@@ -0,0 +1,18 @@
+-- save orderDetl record
+-- mysql
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'orderDetl/orderDetl.html', 'orderDetl绠$悊', null , '2', null , '1');
+
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'orderDetl#view', '鏌ヨ', '', '3', '0', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'orderDetl#btn-add', '鏂板', '', '3', '1', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'orderDetl#btn-edit', '缂栬緫', '', '3', '2', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'orderDetl#btn-delete', '鍒犻櫎', '', '3', '3', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'orderDetl#btn-export', '瀵煎嚭', '', '3', '4', '1');
+
+-- sqlserver
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderDetl/orderDetl.html', N'orderDetl绠$悊', null, '2', null, '1');
+
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderDetl#view', N'鏌ヨ', '', '3', '0', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderDetl#btn-add', N'鏂板', '', '3', '1', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderDetl#btn-edit', N'缂栬緫', '', '3', '2', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderDetl#btn-delete', N'鍒犻櫎', '', '3', '3', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderDetl#btn-export', N'瀵煎嚭', '', '3', '4', '1');
diff --git a/zy-asrs-common/src/main/java/orderSettle.sql b/zy-asrs-common/src/main/java/orderSettle.sql
new file mode 100644
index 0000000..53d3104
--- /dev/null
+++ b/zy-asrs-common/src/main/java/orderSettle.sql
@@ -0,0 +1,18 @@
+-- save orderSettle record
+-- mysql
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'orderSettle/orderSettle.html', 'orderSettle绠$悊', null , '2', null , '1');
+
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'orderSettle#view', '鏌ヨ', '', '3', '0', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'orderSettle#btn-add', '鏂板', '', '3', '1', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'orderSettle#btn-edit', '缂栬緫', '', '3', '2', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'orderSettle#btn-delete', '鍒犻櫎', '', '3', '3', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'orderSettle#btn-export', '瀵煎嚭', '', '3', '4', '1');
+
+-- sqlserver
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderSettle/orderSettle.html', N'orderSettle绠$悊', null, '2', null, '1');
+
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderSettle#view', N'鏌ヨ', '', '3', '0', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderSettle#btn-add', N'鏂板', '', '3', '1', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderSettle#btn-edit', N'缂栬緫', '', '3', '2', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderSettle#btn-delete', N'鍒犻櫎', '', '3', '3', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'orderSettle#btn-export', N'瀵煎嚭', '', '3', '4', '1');
diff --git a/zy-asrs-common/src/main/java/staDesc.sql b/zy-asrs-common/src/main/java/staDesc.sql
new file mode 100644
index 0000000..384223c
--- /dev/null
+++ b/zy-asrs-common/src/main/java/staDesc.sql
@@ -0,0 +1,18 @@
+-- save staDesc record
+-- mysql
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'staDesc/staDesc.html', 'staDesc绠$悊', null , '2', null , '1');
+
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'staDesc#view', '鏌ヨ', '', '3', '0', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'staDesc#btn-add', '鏂板', '', '3', '1', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'staDesc#btn-edit', '缂栬緫', '', '3', '2', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'staDesc#btn-delete', '鍒犻櫎', '', '3', '3', '1');
+insert into `sys_resource` ( `code`, `name`, `resource_id`, `level`, `sort`, `status`) values ( 'staDesc#btn-export', '瀵煎嚭', '', '3', '4', '1');
+
+-- sqlserver
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'staDesc/staDesc.html', N'staDesc绠$悊', null, '2', null, '1');
+
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'staDesc#view', N'鏌ヨ', '', '3', '0', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'staDesc#btn-add', N'鏂板', '', '3', '1', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'staDesc#btn-edit', N'缂栬緫', '', '3', '2', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'staDesc#btn-delete', N'鍒犻櫎', '', '3', '3', '1');
+insert [dbo].[sys_resource] ( [code], [name], [resource_id], [level], [sort], [status]) values ( N'staDesc#btn-export', N'瀵煎嚭', '', '3', '4', '1');
diff --git a/zy-asrs-common/src/main/resources/mapper/sys/UserMapper.xml b/zy-asrs-common/src/main/resources/mapper/sys/UserMapper.xml
new file mode 100644
index 0000000..c3e4a25
--- /dev/null
+++ b/zy-asrs-common/src/main/resources/mapper/sys/UserMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.common.sys.mapper.UserMapper">
+
+</mapper>
diff --git a/zy-asrs-common/src/main/resources/mapper/wms/BasDevpMapper.xml b/zy-asrs-common/src/main/resources/mapper/wms/BasDevpMapper.xml
index cc21558..31d7dfc 100644
--- a/zy-asrs-common/src/main/resources/mapper/wms/BasDevpMapper.xml
+++ b/zy-asrs-common/src/main/resources/mapper/wms/BasDevpMapper.xml
@@ -6,7 +6,7 @@
         select
         wbd.dev_no
         from wms_bas_devp wbd
-        left join asr_sta_desc asd on wbd.dev_no = asd.stn_no
+        left join wms_sta_desc asd on wbd.dev_no = asd.stn_no
         where 1=1
         and asd.type_no = #{typeNo}
         and wbd.host_id = #{hostId}
@@ -18,7 +18,7 @@
         select
         wbd.dev_no
         from wms_bas_devp wbd
-        left join asr_sta_desc asd on wbd.dev_no = asd.stn_no
+        left join wms_sta_desc asd on wbd.dev_no = asd.stn_no
         where 1=1
         and asd.type_no = #{typeNo}
         and wbd.host_id = #{hostId}
diff --git a/zy-asrs-common/src/main/resources/mapper/wms/CstmrMapper.xml b/zy-asrs-common/src/main/resources/mapper/wms/CstmrMapper.xml
new file mode 100644
index 0000000..1134c42
--- /dev/null
+++ b/zy-asrs-common/src/main/resources/mapper/wms/CstmrMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.common.wms.mapper.CstmrMapper">
+
+</mapper>
diff --git a/zy-asrs-common/src/main/resources/mapper/wms/ItemMapper.xml b/zy-asrs-common/src/main/resources/mapper/wms/ItemMapper.xml
new file mode 100644
index 0000000..c1457fa
--- /dev/null
+++ b/zy-asrs-common/src/main/resources/mapper/wms/ItemMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.common.wms.mapper.ItemMapper">
+
+</mapper>
diff --git a/zy-asrs-common/src/main/resources/mapper/wms/LocDetlMapper.xml b/zy-asrs-common/src/main/resources/mapper/wms/LocDetlMapper.xml
index a137f77..a485195 100644
--- a/zy-asrs-common/src/main/resources/mapper/wms/LocDetlMapper.xml
+++ b/zy-asrs-common/src/main/resources/mapper/wms/LocDetlMapper.xml
@@ -34,14 +34,91 @@
         select
         a.matnr
         , sum(a.anfme) as anfme
-        from asr_loc_detl a
+        from wms_loc_detl a
         where 1=1
         <include refid="stockOutCondition"></include>
         group by a.matnr
     </select>
 
     <select id="sum" resultType="java.lang.Integer">
-        SELECT SUM(anfme) FROM asr_loc_detl
+        SELECT SUM(anfme) FROM wms_loc_detl
+    </select>
+
+    <select id="queryStock" resultType="com.zy.asrs.common.wms.entity.LocDetl">
+        select
+        a.*
+        from wms_loc_detl a
+        left join wms_loc_mast b on a.loc_no = b.loc_no
+        where 1=1
+        <if test="no!=null and no == 1">
+            and b.row1 >= 31
+            and b.row1 &lt;= 32
+        </if>
+        <if test="no!=null and no == 2">
+            and b.row1 >= 2
+            and b.row1 &lt;= 17
+        </if>
+        <if test="no!=null and no == 3">
+            and b.row1 >= 18
+            and b.row1 &lt;= 30
+        </if>
+        and a.matnr = #{matnr}
+        and b.bay1 = #{bay}
+        and b.loc_sts = 'F'
+        order by b.row1
+        <if test="orderBy != null and orderBy != '' and orderBy == 'false'">
+            desc
+        </if>
+    </select>
+
+    <select id="queryStockPre" resultType="com.zy.asrs.common.domain.dto.QueryStockPreDo">
+        select
+            *
+        from
+            (
+                select
+                    no = 1,
+                    orderBy = 'true',
+                    b.bay1 as bay,
+                    sum(anfme) as count
+                from wms_loc_detl a
+                    left join wms_loc_mast b on a.loc_no = b.loc_no
+                where 1=1
+                  and b.loc_sts = 'F'
+                  and a.matnr = #{matnr}
+                  and b.row1 >= 31
+                  and b.row1 &lt;= 32
+                group by b.bay1
+                union
+                select
+                    no = 2,
+                    orderBy = 'true',
+                    b.bay1 as bay,
+                    sum(anfme) as count
+                from wms_loc_detl a
+                    left join wms_loc_mast b on a.loc_no = b.loc_no
+                where 1=1
+                  and b.loc_sts = 'F'
+                  and a.matnr = #{matnr}
+                  and b.row1 >= 2
+                  and b.row1 &lt;= 17
+                group by b.bay1
+                union
+                select
+                    no = 3,
+                    orderBy = 'false',
+                    b.bay1 as bay,
+                    sum(anfme) as count
+                from wms_loc_detl a
+                    left join wms_loc_mast b on a.loc_no = b.loc_no
+                where 1=1
+                  and b.loc_sts = 'F'
+                  and a.matnr = #{matnr}
+                  and b.row1 >= 18
+                  and b.row1 &lt;= 30
+                group by b.bay1
+            ) a
+        order by no, count desc
     </select>
 
 </mapper>
diff --git a/zy-asrs-common/src/main/resources/mapper/wms/OrderDetlMapper.xml b/zy-asrs-common/src/main/resources/mapper/wms/OrderDetlMapper.xml
new file mode 100644
index 0000000..21c299c
--- /dev/null
+++ b/zy-asrs-common/src/main/resources/mapper/wms/OrderDetlMapper.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.common.wms.mapper.OrderDetlMapper">
+
+    <sql id="pakOutPageCondition">
+        <if test="map.order_id!=null and map.order_id!='' ">
+            and mod.order_id = #{map.order_id}
+        </if>
+        <if test="map.matnr!=null and map.matnr!='' ">
+            and mod.matnr = #{map.matnr}
+        </if>
+        <if test="map.maktx!=null and map.maktx!='' ">
+            and mod.maktx = #{map.maktx}
+        </if>
+        <if test="map.batch!=null and map.batch!='' ">
+            and mod.batch = #{map.batch}
+        </if>
+    </sql>
+
+    <select id="selectItem" resultType="com.zy.asrs.common.wms.entity.OrderDetl">
+        select * from wms_order_detl
+        where 1=1
+        and order_id = #{orderId}
+        and matnr = #{matnr}
+        <choose>
+            <when test="batch != null and batch != ''">
+                and batch = #{batch}
+            </when>
+            <otherwise>
+                and (batch IS NULL OR batch = '')
+            </otherwise>
+        </choose>
+    </select>
+
+    <select id="getPakoutPage" resultType="com.zy.asrs.common.wms.entity.OrderDetl">
+        select
+        mod.*
+        from wms_order_detl mod
+        inner join wms_order mo on mod.order_id = mo.id
+        inner join wms_doc_type mdt on mo.doc_type = mdt.doc_id
+        where 1=1
+        and mo.settle &lt;= 2
+        and mo.status = 1
+        and mdt.pakout = 1
+        <include refid="pakOutPageCondition"></include>
+    </select>
+
+</mapper>
diff --git a/zy-asrs-common/src/main/resources/mapper/wms/OrderMapper.xml b/zy-asrs-common/src/main/resources/mapper/wms/OrderMapper.xml
new file mode 100644
index 0000000..497be26
--- /dev/null
+++ b/zy-asrs-common/src/main/resources/mapper/wms/OrderMapper.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.common.wms.mapper.OrderMapper">
+
+    <update id="updateOrder1">
+        update wms_order
+        set settle = 6
+        ,update_time = getdate()
+        ,memo = '鍒犻櫎鎸夐挳鎵嬪姩杞崲'
+        <if test="userId != null">
+            ,update_by = #{userId}
+        </if>
+        where 1=1
+        and id = #{orderId}
+    </update>
+
+</mapper>
diff --git a/zy-asrs-common/src/main/resources/mapper/wms/OrderSettleMapper.xml b/zy-asrs-common/src/main/resources/mapper/wms/OrderSettleMapper.xml
new file mode 100644
index 0000000..ba191ff
--- /dev/null
+++ b/zy-asrs-common/src/main/resources/mapper/wms/OrderSettleMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.common.wms.mapper.OrderSettleMapper">
+
+</mapper>
diff --git a/zy-asrs-common/src/main/resources/mapper/wms/StaDescMapper.xml b/zy-asrs-common/src/main/resources/mapper/wms/StaDescMapper.xml
new file mode 100644
index 0000000..125d6e7
--- /dev/null
+++ b/zy-asrs-common/src/main/resources/mapper/wms/StaDescMapper.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.common.wms.mapper.StaDescMapper">
+
+    <select id="queryOutStaNosByLocNo" resultType="integer">
+        select
+        distinct asd.stn_no
+        from wms_sta_desc asd
+        left join wms_loc_mast alm on asd.crn_no = alm.crn_no
+        where 1=1
+        and alm.loc_no = #{locNo}
+        <if test="typeNo != null and typeNo !=''">
+            and asd.type_no = #{typeNo}
+        </if>
+    </select>
+
+</mapper>
diff --git a/zy-asrs-common/src/main/resources/mapper/wms/WrkDetlMapper.xml b/zy-asrs-common/src/main/resources/mapper/wms/WrkDetlMapper.xml
index 4a1b937..7815a46 100644
--- a/zy-asrs-common/src/main/resources/mapper/wms/WrkDetlMapper.xml
+++ b/zy-asrs-common/src/main/resources/mapper/wms/WrkDetlMapper.xml
@@ -2,4 +2,19 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zy.asrs.common.wms.mapper.WrkDetlMapper">
 
+    <select id="selectAndLogByOrderNoGroupByMatnrOfSum" resultType="com.zy.asrs.common.wms.entity.WrkDetl">
+        select awd.wrk_no, awd.io_time, awd.matnr, sum(awd.anfme) as anfme
+        from wms_wrk_detl awd
+                 left join wms_wrk_mast awm on awd.wrk_no = awm.wrk_no and awd.io_time = awm.io_time
+        where order_no = #{orderNo}
+        group by awd.wrk_no, awd.io_time, awd.matnr
+        union
+        select distinct awdl.wrk_no, awdl.io_time, awdl.matnr, sum(awdl.anfme) as anfme
+        from wms_wrk_detl_log awdl
+                 left join wms_wrk_mast_log awml on awdl.wrk_no = awml.wrk_no and awdl.io_time = awml.io_time
+        where awdl.order_no = #{orderNo}
+          and (awml.manu_type is null or awml.manu_type != '鎵嬪姩鍙栨秷')
+        group by awdl.wrk_no, awdl.io_time, awdl.matnr
+    </select>
+
 </mapper>
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/CstmrController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/CstmrController.java
new file mode 100644
index 0000000..bc1abc2
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/CstmrController.java
@@ -0,0 +1,106 @@
+package com.zy.asrs.wms.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zy.asrs.common.wms.entity.Cstmr;
+import com.zy.asrs.common.wms.service.CstmrService;
+import com.zy.asrs.framework.annotations.ManagerAuth;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.R;
+import com.zy.asrs.framework.domain.KeyValueVo;
+import com.zy.asrs.framework.common.DateUtils;
+import com.zy.asrs.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+
+@RestController
+public class CstmrController extends BaseController {
+
+    @Autowired
+    private CstmrService cstmrService;
+
+    @RequestMapping(value = "/cstmr/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(cstmrService.getById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/cstmr/page/auth")
+    @ManagerAuth
+    public R page(@RequestParam(defaultValue = "1") Integer curr,
+                  @RequestParam(defaultValue = "10") Integer limit,
+                  @RequestParam(required = false) String condition,
+                  @RequestParam(required = false) String timeRange,
+                  @RequestParam Map<String, Object> param) {
+        LambdaQueryWrapper<Cstmr> wrapper = new LambdaQueryWrapper<>();
+        if (!Cools.isEmpty(condition)) {
+            wrapper.like(Cstmr::getId, condition);
+        }
+        if (!Cools.isEmpty(timeRange)) {
+            String[] range = timeRange.split(RANGE_TIME_LINK);
+            wrapper.ge(Cstmr::getCreateTime, DateUtils.convert(range[0]));
+            wrapper.le(Cstmr::getCreateTime, DateUtils.convert(range[1]));
+        }
+        return R.ok(cstmrService.page(new Page<>(curr, limit), wrapper));
+    }
+
+
+    @RequestMapping(value = "/cstmr/add/auth")
+    @ManagerAuth
+    public R add(Cstmr cstmr) {
+        cstmrService.save(cstmr);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/cstmr/update/auth")
+	@ManagerAuth
+    public R update(Cstmr cstmr){
+        if (Cools.isEmpty(cstmr) || null==cstmr.getId()){
+            return R.error();
+        }
+        cstmrService.updateById(cstmr);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/cstmr/delete/auth")
+    @ManagerAuth
+    public R delete(@RequestParam(value="ids[]") Long[] ids){
+         for (Long id : ids){
+            cstmrService.removeById(id);
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/cstmrQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        LambdaQueryWrapper<Cstmr> wrapper = new LambdaQueryWrapper<>();
+        wrapper.like(Cstmr::getId, condition);
+        Page<Cstmr> page = cstmrService.page(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (Cstmr cstmr : page.getRecords()){
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", cstmr.getId());
+            map.put("value", cstmr.getId());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping("/cstmr/all/get/kv")
+    @ManagerAuth
+    public R getDataKV(@RequestParam(required = false) String condition) {
+        List<KeyValueVo> vos = new ArrayList<>();
+        LambdaQueryWrapper<Cstmr> wrapper = new LambdaQueryWrapper<>();
+        if (!Cools.isEmpty(condition)) {
+            wrapper.like(Cstmr::getId, condition);
+        }
+        cstmrService.page(new Page<>(1, 30), wrapper).getRecords().forEach(item -> vos.add(new KeyValueVo(String.valueOf(item.getId()), item.getId())));
+        return R.ok().add(vos);
+    }
+
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/DocTypeController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/DocTypeController.java
index 26128ad..b3a12fe 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/DocTypeController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/DocTypeController.java
@@ -25,8 +25,8 @@
 
     @RequestMapping(value = "/docType/{id}/auth")
     @ManagerAuth
-    public R get(@PathVariable("id") String id) {
-        return R.ok(docTypeService.getById(String.valueOf(id)));
+    public R get(@PathVariable("id") Long id) {
+        return R.ok(docTypeService.getById(id));
     }
 
     @RequestMapping(value = "/docType/page/auth")
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/ItemController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/ItemController.java
new file mode 100644
index 0000000..e52edc4
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/ItemController.java
@@ -0,0 +1,106 @@
+package com.zy.asrs.wms.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zy.asrs.common.wms.entity.Item;
+import com.zy.asrs.common.wms.service.ItemService;
+import com.zy.asrs.framework.annotations.ManagerAuth;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.R;
+import com.zy.asrs.framework.domain.KeyValueVo;
+import com.zy.asrs.framework.common.DateUtils;
+import com.zy.asrs.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+
+@RestController
+public class ItemController extends BaseController {
+
+    @Autowired
+    private ItemService itemService;
+
+    @RequestMapping(value = "/item/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(itemService.getById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/item/page/auth")
+    @ManagerAuth
+    public R page(@RequestParam(defaultValue = "1") Integer curr,
+                  @RequestParam(defaultValue = "10") Integer limit,
+                  @RequestParam(required = false) String condition,
+                  @RequestParam(required = false) String timeRange,
+                  @RequestParam Map<String, Object> param) {
+        LambdaQueryWrapper<Item> wrapper = new LambdaQueryWrapper<>();
+        if (!Cools.isEmpty(condition)) {
+            wrapper.like(Item::getId, condition);
+        }
+        if (!Cools.isEmpty(timeRange)) {
+            String[] range = timeRange.split(RANGE_TIME_LINK);
+            wrapper.ge(Item::getCreateTime, DateUtils.convert(range[0]));
+            wrapper.le(Item::getCreateTime, DateUtils.convert(range[1]));
+        }
+        return R.ok(itemService.page(new Page<>(curr, limit), wrapper));
+    }
+
+
+    @RequestMapping(value = "/item/add/auth")
+    @ManagerAuth
+    public R add(Item item) {
+        itemService.save(item);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/item/update/auth")
+	@ManagerAuth
+    public R update(Item item){
+        if (Cools.isEmpty(item) || null==item.getId()){
+            return R.error();
+        }
+        itemService.updateById(item);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/item/delete/auth")
+    @ManagerAuth
+    public R delete(@RequestParam(value="ids[]") Long[] ids){
+         for (Long id : ids){
+            itemService.removeById(id);
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/itemQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        LambdaQueryWrapper<Item> wrapper = new LambdaQueryWrapper<>();
+        wrapper.like(Item::getId, condition);
+        Page<Item> page = itemService.page(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (Item item : page.getRecords()){
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", item.getId());
+            map.put("value", item.getId());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping("/item/all/get/kv")
+    @ManagerAuth
+    public R getDataKV(@RequestParam(required = false) String condition) {
+        List<KeyValueVo> vos = new ArrayList<>();
+        LambdaQueryWrapper<Item> wrapper = new LambdaQueryWrapper<>();
+        if (!Cools.isEmpty(condition)) {
+            wrapper.like(Item::getId, condition);
+        }
+        itemService.page(new Page<>(1, 30), wrapper).getRecords().forEach(item -> vos.add(new KeyValueVo(String.valueOf(item.getId()), item.getId())));
+        return R.ok().add(vos);
+    }
+
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/MatController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/MatController.java
index 3b95db1..98cec1f 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/MatController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/MatController.java
@@ -5,6 +5,7 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.zy.asrs.common.utils.TreeUtils;
 import com.zy.asrs.common.wms.entity.Mat;
+import com.zy.asrs.common.wms.entity.OrderDetl;
 import com.zy.asrs.common.wms.service.MatService;
 import com.zy.asrs.framework.annotations.ManagerAuth;
 import com.zy.asrs.framework.common.Cools;
@@ -125,8 +126,21 @@
         if (!Cools.isEmpty(condition)) {
             wrapper.like(Mat::getId, condition);
         }
-        matService.page(new Page<>(1, 30), wrapper).getRecords().forEach(item -> vos.add(new KeyValueVo(String.valueOf(item.getId()), item.getId())));
+        matService.page(new Page<>(1, 30), wrapper).getRecords().forEach(item -> vos.add(new KeyValueVo(item.getMatnr(), item.getId())));
         return R.ok().add(vos);
     }
 
+    @RequestMapping(value = "/mat/covert/{id}/auth")
+    @ManagerAuth
+    public R covert(@PathVariable("id") String id) {
+        Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getId, id).eq(Mat::getHostId, getHostId()));
+        if (mat == null) {
+            return R.ok();
+        }
+        OrderDetl orderDetl = new OrderDetl();
+        orderDetl.sync(mat);
+        orderDetl.setAnfme(0.0D);
+        return R.ok().add(orderDetl);
+    }
+
 }
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OrderController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OrderController.java
new file mode 100644
index 0000000..b76dc30
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OrderController.java
@@ -0,0 +1,351 @@
+package com.zy.asrs.wms.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zy.asrs.common.domain.dto.DetlDto;
+import com.zy.asrs.common.domain.dto.WrkTraceVo;
+import com.zy.asrs.common.domain.param.OrderDomainParam;
+import com.zy.asrs.common.wms.entity.*;
+import com.zy.asrs.common.wms.service.*;
+import com.zy.asrs.framework.annotations.ManagerAuth;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.R;
+import com.zy.asrs.framework.common.SnowflakeIdWorker;
+import com.zy.asrs.framework.domain.KeyValueVo;
+import com.zy.asrs.framework.common.DateUtils;
+import com.zy.asrs.common.web.BaseController;
+import com.zy.asrs.framework.exception.CoolException;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+
+@RestController
+public class OrderController extends BaseController {
+
+    @Autowired
+    private OrderService orderService;
+    @Autowired
+    private OrderDetlService orderDetlService;
+    @Autowired
+    private LocDetlService locDetlService;
+    @Autowired
+    private WrkDetlService wrkDetlService;
+    @Autowired
+    private WrkMastService wrkMastService;
+    @Autowired
+    private WrkMastLogService wrkMastLogService;
+    @Autowired
+    private JdbcTemplate jdbcTemplate;
+    @Autowired
+    private SnowflakeIdWorker snowflakeIdWorker;
+    @Autowired
+    private DocTypeService docTypeService;
+
+    @RequestMapping(value = "/order/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(orderService.getById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/order/page/auth")
+    @ManagerAuth
+    public R page(@RequestParam(defaultValue = "1") Integer curr,
+                  @RequestParam(defaultValue = "10") Integer limit,
+                  @RequestParam(required = false) String condition,
+                  @RequestParam(required = false) String timeRange,
+                  @RequestParam Map<String, Object> param) {
+        LambdaQueryWrapper<Order> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(Order::getHostId, getHostId());
+        if (!Cools.isEmpty(condition)) {
+            wrapper.like(Order::getId, condition);
+        }
+        if (!Cools.isEmpty(timeRange)) {
+            String[] range = timeRange.split(RANGE_TIME_LINK);
+            wrapper.ge(Order::getCreateTime, DateUtils.convert(range[0]));
+            wrapper.le(Order::getCreateTime, DateUtils.convert(range[1]));
+        }
+        return R.ok(orderService.page(new Page<>(curr, limit), wrapper));
+    }
+
+    @RequestMapping(value = "/order/head/page/auth")
+    @ManagerAuth
+    public R head(@RequestParam(defaultValue = "1")Integer curr,
+                  @RequestParam(defaultValue = "10")Integer limit,
+                  @RequestParam(required = false)String orderByField,
+                  @RequestParam(required = false)String orderByType,
+                  @RequestParam Map<String, Object> param){
+        LambdaQueryWrapper<Order> wrapper = new LambdaQueryWrapper<>();
+        excludeTrash(param);
+        wrapper.eq(Order::getStatus, 1);
+        wrapper.eq(Order::getHostId, getHostId());
+        if (!Cools.isEmpty(param.get("order_no"))) {
+            wrapper.eq(Order::getOrderNo, param.get("order_no"));
+        }
+        if (!Cools.isEmpty(param.get("create_time"))) {
+            String[] range = param.get("create_time").toString().split(RANGE_TIME_LINK);
+            wrapper.ge(Order::getCreateTime, DateUtils.convert(range[0]));
+            wrapper.le(Order::getCreateTime, DateUtils.convert(range[1]));
+        }
+        if (!Cools.isEmpty(param.get("doc_type"))) {
+            wrapper.eq(Order::getDocType, param.get("doc_type"));
+        }
+        if (!Cools.isEmpty(param.get("settle"))) {
+            wrapper.eq(Order::getSettle, param.get("settle"));
+        }
+        return R.ok(orderService.page(new Page<>(curr, limit), wrapper));
+    }
+
+    @RequestMapping(value = "/order/detl/all/auth")
+    @ManagerAuth
+    public R head(@RequestParam Long orderId){
+        return R.ok().add(orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderId, orderId).eq(OrderDetl::getHostId, getHostId())));
+    }
+
+    @RequestMapping(value = "/order/add/auth")
+    @ManagerAuth
+    public R add(Order order) {
+        order.setHostId(getHostId());
+        orderService.save(order);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/order/update/auth")
+	@ManagerAuth
+    public R update(Order order){
+        if (Cools.isEmpty(order) || null==order.getId()){
+            return R.error();
+        }
+        orderService.updateById(order);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/order/delete/auth")
+    @ManagerAuth(memo = "鎵嬪姩鍒犻櫎璁㈠崟")
+    @Transactional
+    public R delete(@RequestParam Long orderId){
+        if (!orderService.removeById(orderId)) {
+            throw new CoolException("鍒犻櫎鍗曟嵁澶辫触");
+        }
+        if (!orderDetlService.remove(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderId, orderId))) {
+            throw new CoolException("鍒犻櫎鍗曟嵁鏄庣粏澶辫触");
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/orderQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        LambdaQueryWrapper<Order> wrapper = new LambdaQueryWrapper<>();
+        wrapper.like(Order::getId, condition);
+        wrapper.eq(Order::getHostId, getHostId());
+        Page<Order> page = orderService.page(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.getId());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping("/order/all/get/kv")
+    @ManagerAuth
+    public R getDataKV(@RequestParam(required = false) String condition) {
+        List<KeyValueVo> vos = new ArrayList<>();
+        LambdaQueryWrapper<Order> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(Order::getHostId, getHostId());
+        if (!Cools.isEmpty(condition)) {
+            wrapper.like(Order::getId, condition);
+        }
+        orderService.page(new Page<>(1, 30), wrapper).getRecords().forEach(item -> vos.add(new KeyValueVo(String.valueOf(item.getId()), item.getId())));
+        return R.ok().add(vos);
+    }
+
+    @PostMapping(value = "/order/wrk/trace/auth")
+    @ManagerAuth
+    public R orderWrkTrace(@RequestParam("orderId") Long orderId) {
+        Long hostId = getHostId();
+        Order order = orderService.getOne(new LambdaQueryWrapper<Order>().eq(Order::getId, orderId).eq(Order::getHostId, hostId));
+        if (null == order) {
+            return R.error("鍗曟嵁涓嶅瓨鍦�");
+        }
+        // 鏁伴噺缁熻
+        List<OrderDetl> orderDetls = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderId, orderId).eq(OrderDetl::getHostId, hostId));
+        double totalQty = 0;
+        double wrkQty = 0;
+        double lackQty = 0;
+        for (OrderDetl orderDetl : orderDetls) {
+            totalQty = totalQty + orderDetl.getAnfme();
+            wrkQty = wrkQty + orderDetl.getQty();
+            double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty()).orElse(0.0D);
+            if (issued > 0.0) {
+                List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getOrigin(), null);
+                for (LocDetl locDetl : locDetls) {
+                    if (issued > 0) {
+                        issued = issued - locDetl.getAnfme();
+                    } else {
+                        break;
+                    }
+                }
+            }
+            if (issued > 0.0) {
+                lackQty = lackQty + issued;
+            }
+        }
+        // 浠诲姟杩芥函
+        List<WrkTraceVo> wrkTraceVos = new ArrayList<>();
+        List<WrkDetl> wrkDetls = wrkDetlService.selectAndLogByOrderNoGroupByMatnrOfSum(order.getOrderNo());
+        for (WrkDetl wrkDetl : wrkDetls) {
+            WrkMast wrkMast = wrkMastService.getOne(new LambdaQueryWrapper<WrkMast>().eq(WrkMast::getWrkNo, wrkDetl.getWrkNo()).eq(WrkMast::getIoTime, wrkDetl.getIoTime()));
+            if (wrkMast == null) {
+                WrkMastLog wrkMastLog = wrkMastLogService.getOne(new LambdaQueryWrapper<WrkMastLog>().eq(WrkMastLog::getWrkNo, wrkDetl.getWrkNo()).eq(WrkMastLog::getIoTime, wrkDetl.getIoTime()));
+                if (wrkMastLog != null) {
+                    wrkMast = new WrkMast();
+                    BeanUtils.copyProperties(wrkMastLog, wrkMast);
+                } else {
+                    continue;
+                }
+            }
+            boolean exist = false;
+            for (WrkTraceVo vo : wrkTraceVos) {
+                if (vo.getWrkNo().equals(wrkMast.getWrkNo()) && vo.getIoTimeStr().equals(DateUtils.convert(wrkMast.getIoTime()))) {
+                    vo.getWrkDetls().add(wrkDetl);
+                    exist = true;
+                }
+            }
+            if (!exist) {
+                WrkTraceVo vo = new WrkTraceVo(wrkMast.getWrkNo(), DateUtils.convert(wrkMast.getIoTime()), wrkMast, wrkDetl);
+                wrkTraceVos.add(vo);
+            }
+        }
+        if (!Cools.isEmpty(wrkTraceVos) && wrkTraceVos.size() > 1) {
+            wrkTraceVos.sort((o1, o2) -> (int) (o2.getWrkMast().getIoTime().getTime() - o1.getWrkMast().getIoTime().getTime()));
+        }
+        return R.ok().add(Cools
+                .add("list", wrkTraceVos)
+                .add("orderNo", order.getOrderNo())
+                .add("totalQty", totalQty)
+                .add("wrkQty", wrkQty)
+                .add("lackQty", lackQty)
+        );
+    }
+
+    @RequestMapping(value = "/order/form/add/auth")
+    @ManagerAuth(memo = "鎵嬪姩娣诲姞璁㈠崟")
+    @Transactional
+    public R formAdd(@RequestBody OrderDomainParam param){
+        Order order = orderService.selectByNo(param.getOrderNo());
+        if (order != null) {
+            return R.error("鍗曟嵁缂栧彿宸插瓨鍦�");
+        }
+        // 鍒ゆ柇閲嶅璁㈠崟鍙�
+        Integer orderCount = Optional.ofNullable(jdbcTemplate.queryForObject("select count(1) from man_order where order_no = '" + param.getOrderNo() + "'", Integer.class)).orElse(0);
+        Integer orderLogCount = Optional.ofNullable(jdbcTemplate.queryForObject("select count(1) from man_order_log where order_no = '" + param.getOrderNo() + "'", Integer.class)).orElse(0);
+        if (orderCount > 0 || orderLogCount > 0) {
+            return R.error("鍗曟嵁缂栧彿宸插瓨鍦�");
+        }
+        Date now = new Date();
+        order = new Order(
+                String.valueOf(snowflakeIdWorker.nextId()),    // 缂栧彿[闈炵┖]
+                param.getOrderNo(),    // 璁㈠崟缂栧彿
+                DateUtils.convert(now),    // 鍗曟嵁鏃ユ湡
+                param.getDocType(),    // 鍗曟嵁绫诲瀷
+                null,    // 椤圭洰缂栧彿
+                null,    //
+                null,    // 璋冩嫧椤圭洰缂栧彿
+                null,    // 鍒濆绁ㄦ嵁鍙�
+                null,    // 绁ㄦ嵁鍙�
+                null,    // 瀹㈡埛缂栧彿
+                null,    // 瀹㈡埛
+                null,    // 鑱旂郴鏂瑰紡
+                null,    // 鎿嶄綔浜哄憳
+                null,    // 鍚堣閲戦
+                null,    // 浼樻儬鐜�
+                null,    // 浼樻儬閲戦
+                null,    // 閿�鍞垨閲囪喘璐圭敤鍚堣
+                null,    // 瀹炰粯閲戦
+                null,    // 浠樻绫诲瀷
+                null,    // 涓氬姟鍛�
+                null,    // 缁撶畻澶╂暟
+                null,    // 閭垂鏀粯绫诲瀷
+                null,    // 閭垂
+                null,    // 浠樻鏃堕棿
+                null,    // 鍙戣揣鏃堕棿
+                null,    // 鐗╂祦鍚嶇О
+                null,    // 鐗╂祦鍗曞彿
+                1L,    // 璁㈠崟鐘舵��
+                1,    // 鐘舵��
+                getUserId(),    // 娣诲姞浜哄憳
+                now,    // 娣诲姞鏃堕棿
+                getUserId(),    // 淇敼浜哄憳
+                now,    // 淇敼鏃堕棿
+                null,    // 澶囨敞
+                getHostId()
+        );
+        if (!orderService.save(order)) {
+            throw new CoolException("淇濆瓨璁㈠崟涓绘。澶辫触");
+        }
+        List<DetlDto> list = new ArrayList<>();
+        for (OrderDetl orderDetl : param.getOrderDetlList()) {
+            DetlDto dto = new DetlDto(orderDetl.getMatnr(), orderDetl.getBatch());
+            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)) {
+                    throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�");
+                }
+            } else {
+                list.add(dto);
+                orderDetl.setOrderId(order.getId());
+                orderDetl.setOrderNo(order.getOrderNo());
+                orderDetl.setCreateBy(getUserId());
+                orderDetl.setCreateTime(now);
+                orderDetl.setUpdateBy(getUserId());
+                orderDetl.setUpdateTime(now);
+                orderDetl.setStatus(1);
+                orderDetl.setQty(0.0D);
+                if (!orderDetlService.save(orderDetl)) {
+                    throw new CoolException("淇濆瓨璁㈠崟鏄庣粏妗eけ璐�");
+                }
+            }
+        }
+        return R.ok("璁㈠崟娣诲姞鎴愬姛");
+    }
+
+    @RequestMapping(value = "/order/nav/list/auth")
+    @ManagerAuth
+    public R navList(@RequestParam(required = false) String orderNo){
+        LambdaQueryWrapper<Order> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(Order::getHostId, getHostId());
+        if (!Cools.isEmpty(orderNo)) {
+            wrapper.like(Order::getOrderNo, orderNo);
+        }
+        wrapper.le(Order::getSettle, 2).eq(Order::getStatus, 1);
+        wrapper.orderByDesc(Order::getCreateTime);
+        List<Order> orders = orderService.list(wrapper);
+        // 淇濈暀鍑哄簱鍗�
+        if (!Cools.isEmpty(orders)) {
+            Iterator<Order> iterator = orders.iterator();
+            while (iterator.hasNext()) {
+                Order order = iterator.next();
+                if (order.getDocType() != null) {
+                    DocType docType = docTypeService.getById(order.getDocType());
+                    if (docType != null) {
+                        if (docType.getPakout() == 0) {
+                            iterator.remove();
+                        }
+                    }
+                }
+            }
+        }
+        return R.ok().add(orders);
+    }
+
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OrderDetlController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OrderDetlController.java
new file mode 100644
index 0000000..4d3e4e0
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OrderDetlController.java
@@ -0,0 +1,123 @@
+package com.zy.asrs.wms.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zy.asrs.common.wms.entity.OrderDetl;
+import com.zy.asrs.common.wms.service.OrderDetlService;
+import com.zy.asrs.framework.annotations.ManagerAuth;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.R;
+import com.zy.asrs.framework.domain.KeyValueVo;
+import com.zy.asrs.framework.common.DateUtils;
+import com.zy.asrs.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+
+@RestController
+public class OrderDetlController extends BaseController {
+
+    @Autowired
+    private OrderDetlService orderDetlService;
+
+    @RequestMapping(value = "/orderDetl/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(orderDetlService.getById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/orderDetl/page/auth")
+    @ManagerAuth
+    public R page(@RequestParam(defaultValue = "1") Integer curr,
+                  @RequestParam(defaultValue = "10") Integer limit,
+                  @RequestParam(required = false) String condition,
+                  @RequestParam(required = false) String timeRange,
+                  @RequestParam Map<String, Object> param) {
+        LambdaQueryWrapper<OrderDetl> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(OrderDetl::getHostId, getHostId());
+        if (!Cools.isEmpty(condition)) {
+            wrapper.like(OrderDetl::getId, condition);
+        }
+        if (!Cools.isEmpty(timeRange)) {
+            String[] range = timeRange.split(RANGE_TIME_LINK);
+            wrapper.ge(OrderDetl::getCreateTime, DateUtils.convert(range[0]));
+            wrapper.le(OrderDetl::getCreateTime, DateUtils.convert(range[1]));
+        }
+        if (!Cools.isEmpty(param.get("order_id"))) {
+            wrapper.eq(OrderDetl::getOrderId, param.get("order_id"));
+        }
+        return R.ok(orderDetlService.page(new Page<>(curr, limit), wrapper));
+    }
+
+
+    @RequestMapping(value = "/orderDetl/add/auth")
+    @ManagerAuth
+    public R add(OrderDetl orderDetl) {
+        orderDetl.setHostId(getHostId());
+        orderDetlService.save(orderDetl);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/orderDetl/update/auth")
+	@ManagerAuth
+    public R update(OrderDetl orderDetl){
+        if (Cools.isEmpty(orderDetl) || null==orderDetl.getId()){
+            return R.error();
+        }
+        orderDetlService.updateById(orderDetl);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/orderDetl/delete/auth")
+    @ManagerAuth
+    public R delete(@RequestParam(value="ids[]") Long[] ids){
+         for (Long id : ids){
+            orderDetlService.removeById(id);
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/orderDetlQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        LambdaQueryWrapper<OrderDetl> wrapper = new LambdaQueryWrapper<>();
+        wrapper.like(OrderDetl::getId, condition);
+        wrapper.eq(OrderDetl::getHostId, getHostId());
+        Page<OrderDetl> page = orderDetlService.page(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());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping("/orderDetl/all/get/kv")
+    @ManagerAuth
+    public R getDataKV(@RequestParam(required = false) String condition) {
+        List<KeyValueVo> vos = new ArrayList<>();
+        LambdaQueryWrapper<OrderDetl> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(OrderDetl::getHostId, getHostId());
+        if (!Cools.isEmpty(condition)) {
+            wrapper.like(OrderDetl::getId, condition);
+        }
+        orderDetlService.page(new Page<>(1, 30), wrapper).getRecords().forEach(item -> vos.add(new KeyValueVo(String.valueOf(item.getId()), item.getId())));
+        return R.ok().add(vos);
+    }
+
+    @RequestMapping(value = "/orderDetl/pakout/list/auth")
+    @ManagerAuth
+    public R pakoutList(@RequestParam(defaultValue = "1")Integer curr,
+                        @RequestParam(defaultValue = "10")Integer limit,
+                        @RequestParam Map<String, Object> param){
+        IPage<OrderDetl> pakoutPage = orderDetlService.getPakoutPage(curr, limit, param);
+        return R.ok(pakoutPage);
+    }
+
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OrderSettleController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OrderSettleController.java
new file mode 100644
index 0000000..03331f8
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OrderSettleController.java
@@ -0,0 +1,106 @@
+package com.zy.asrs.wms.controller;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.zy.asrs.common.wms.entity.OrderSettle;
+import com.zy.asrs.common.wms.service.OrderSettleService;
+import com.zy.asrs.framework.annotations.ManagerAuth;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.R;
+import com.zy.asrs.framework.domain.KeyValueVo;
+import com.zy.asrs.framework.common.DateUtils;
+import com.zy.asrs.common.web.BaseController;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+
+@RestController
+public class OrderSettleController extends BaseController {
+
+    @Autowired
+    private OrderSettleService orderSettleService;
+
+    @RequestMapping(value = "/orderSettle/{id}/auth")
+    @ManagerAuth
+    public R get(@PathVariable("id") String id) {
+        return R.ok(orderSettleService.getById(String.valueOf(id)));
+    }
+
+    @RequestMapping(value = "/orderSettle/page/auth")
+    @ManagerAuth
+    public R page(@RequestParam(defaultValue = "1") Integer curr,
+                  @RequestParam(defaultValue = "10") Integer limit,
+                  @RequestParam(required = false) String condition,
+                  @RequestParam(required = false) String timeRange,
+                  @RequestParam Map<String, Object> param) {
+        LambdaQueryWrapper<OrderSettle> wrapper = new LambdaQueryWrapper<>();
+        if (!Cools.isEmpty(condition)) {
+            wrapper.like(OrderSettle::getSettleName, condition);
+        }
+        if (!Cools.isEmpty(timeRange)) {
+            String[] range = timeRange.split(RANGE_TIME_LINK);
+            wrapper.ge(OrderSettle::getCreateTime, DateUtils.convert(range[0]));
+            wrapper.le(OrderSettle::getCreateTime, DateUtils.convert(range[1]));
+        }
+        return R.ok(orderSettleService.page(new Page<>(curr, limit), wrapper));
+    }
+
+
+    @RequestMapping(value = "/orderSettle/add/auth")
+    @ManagerAuth
+    public R add(OrderSettle orderSettle) {
+        orderSettleService.save(orderSettle);
+        return R.ok();
+    }
+
+	@RequestMapping(value = "/orderSettle/update/auth")
+	@ManagerAuth
+    public R update(OrderSettle orderSettle){
+        if (Cools.isEmpty(orderSettle) || null==orderSettle.getOrderSettle()){
+            return R.error();
+        }
+        orderSettleService.updateById(orderSettle);
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/orderSettle/delete/auth")
+    @ManagerAuth
+    public R delete(@RequestParam(value="ids[]") Long[] ids){
+         for (Long id : ids){
+            orderSettleService.removeById(id);
+        }
+        return R.ok();
+    }
+
+    @RequestMapping(value = "/orderSettleQuery/auth")
+    @ManagerAuth
+    public R query(String condition) {
+        LambdaQueryWrapper<OrderSettle> wrapper = new LambdaQueryWrapper<>();
+        wrapper.like(OrderSettle::getSettleName, condition);
+        Page<OrderSettle> page = orderSettleService.page(new Page<>(0, 10), wrapper);
+        List<Map<String, Object>> result = new ArrayList<>();
+        for (OrderSettle orderSettle : page.getRecords()){
+            Map<String, Object> map = new HashMap<>();
+            map.put("id", orderSettle.getOrderSettle());
+            map.put("value", orderSettle.getSettleName());
+            result.add(map);
+        }
+        return R.ok(result);
+    }
+
+    @RequestMapping("/orderSettle/all/get/kv")
+    @ManagerAuth
+    public R getDataKV(@RequestParam(required = false) String condition) {
+        List<KeyValueVo> vos = new ArrayList<>();
+        LambdaQueryWrapper<OrderSettle> wrapper = new LambdaQueryWrapper<>();
+        if (!Cools.isEmpty(condition)) {
+            wrapper.like(OrderSettle::getSettleName, condition);
+        }
+        orderSettleService.page(new Page<>(1, 30), wrapper).getRecords().forEach(item -> vos.add(new KeyValueVo(String.valueOf(item.getSettleName()), item.getOrderSettle())));
+        return R.ok().add(vos);
+    }
+
+}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OutController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OutController.java
new file mode 100644
index 0000000..32ef0d3
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/OutController.java
@@ -0,0 +1,85 @@
+package com.zy.asrs.wms.controller;
+
+import com.zy.asrs.common.domain.dto.LocDto;
+import com.zy.asrs.common.web.BaseController;
+import com.zy.asrs.common.wms.entity.LocDetl;
+import com.zy.asrs.common.wms.entity.OrderDetl;
+import com.zy.asrs.common.wms.service.*;
+import com.zy.asrs.framework.annotations.ManagerAuth;
+import com.zy.asrs.framework.common.BaseRes;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.R;
+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.*;
+import java.util.stream.Collectors;
+
+/**
+ * Created by vincent on 2022/3/26
+ */
+
+@RestController
+public class OutController extends BaseController {
+
+    @Autowired
+    private OrderService orderService;
+    @Autowired
+    private OrderDetlService orderDetlService;
+    @Autowired
+    private StaDescService staDescService;
+    @Autowired
+    private LocDetlService locDetlService;
+    @Autowired
+    private LocMastService locMastService;
+    @Autowired
+    private WorkService workService;
+    @Autowired
+    private BasDevpService basDevpService;
+
+    @PostMapping("/out/pakout/preview/auth")
+    @ManagerAuth
+    public R pakoutPreview(@RequestBody List<Long> ids) {
+        if (Cools.isEmpty(ids)) {
+            return R.parse(BaseRes.PARAM);
+        }
+        List<OrderDetl> orderDetls = orderDetlService.listByIds(ids);
+        List<LocDto> locDtos = new ArrayList<>();
+
+        Set<String> exist = new HashSet<>();
+
+        for (OrderDetl orderDetl : orderDetls) {
+            double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getQty()).orElse(0.0D);
+            if (issued <= 0.0D) { continue; }
+            List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), orderDetl.getOrigin(), exist);
+            for (LocDetl locDetl : locDetls) {
+                if (!Cools.isEmpty(locDetl.getMemo())){
+                    continue;
+                }
+                if (issued > 0) {
+                    LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(),
+                            issued >= locDetl.getAnfme() ? locDetl.getAnfme() : issued);
+                    List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), issued >= locDetl.getAnfme() ? 101 : 103);
+                    locDto.setStaNos(staNos);
+                    locDtos.add(locDto);
+                    exist.add(locDetl.getLocNo());
+                    // 鍓╀綑寰呭嚭鏁伴噺閫掑噺
+                    issued = issued - locDetl.getAnfme();
+                } else {
+                    break;
+                }
+            }
+            if (issued > 0) {
+                LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued);
+                locDto.setLack(Boolean.TRUE);
+                locDtos.add(locDto);
+            }
+        }
+        return R.ok().add(locDtos);
+    }
+
+}
diff --git a/zy-asrs-wms/src/main/webapp/static/js/cstmr/cstmr.js b/zy-asrs-wms/src/main/webapp/static/js/cstmr/cstmr.js
new file mode 100644
index 0000000..70bbed5
--- /dev/null
+++ b/zy-asrs-wms/src/main/webapp/static/js/cstmr/cstmr.js
@@ -0,0 +1,359 @@
+var pageCurr;
+var pageCount = 0;
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"
+}).use(['table','laydate', 'form', 'admin', 'xmSelect'], function(){
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+    var admin = layui.admin;
+    var xmSelect = layui.xmSelect;
+
+    // 鏁版嵁娓叉煋
+    tableIns = table.render({
+        elem: '#cstmr',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/cstmr/page/auth',
+        page: true,
+        limit: 15,
+        limits: [15, 30, 50, 100, 200, 500],
+        toolbar: '#toolbar',
+        cellMinWidth: 50,
+        height: 'full-120',
+        cols: [[
+            {type: 'checkbox'}
+            ,{field: 'id', align: 'center',title: 'ID'}
+            ,{field: 'uuid', align: 'center',title: '瀹㈡埛缂栧彿'}
+            ,{field: 'name', align: 'center',title: '瀹㈡埛鍚嶇О'}
+            ,{field: 'contacts', align: 'center',title: '鑱旂郴浜�'}
+            ,{field: 'tel', align: 'center',title: '鑱旂郴鐢佃瘽'}
+            ,{field: 'addr', align: 'center',title: '鑱旂郴鍦板潃'}
+            ,{field: 'status$', align: 'center',title: '鐘舵��'}
+            ,{field: 'createBy$', align: 'center',title: '娣诲姞浜哄憳'}
+            ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿'}
+            ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳'}
+            ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
+            ,{field: 'memo', align: 'center',title: '澶囨敞'}
+            ,{field: 'hostId$', align: 'center',title: '鎺堟潈鍟嗘埛'}
+
+            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
+        ]],
+        request: {
+            pageName: 'curr',
+            pageSize: 'limit'
+        },
+        parseData: function (res) {
+            return {
+                'code': res.code,
+                'msg': res.msg,
+                'count': res.data.total,
+                'data': res.data.records
+            }
+        },
+        response: {
+            statusCode: 200
+        },
+        done: function(res, curr, count) {
+            if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            }
+            pageCurr=curr;pageCount=count;
+            limit();
+        }
+    });
+
+    // 鐩戝惉鎺掑簭浜嬩欢
+    table.on('sort(cstmr)', function (obj) {
+        var searchData = {};
+        $.each($('#search-box [name]').serializeArray(), function() {
+            searchData[this.name] = this.value;
+        });
+        searchData['orderByField'] = obj.field;
+        searchData['orderByType'] = obj.type;
+        tableIns.reload({
+            where: searchData,
+            page: {curr: 1}
+        });
+    });
+
+    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+    table.on('toolbar(cstmr)', function (obj) {
+        var checkStatus = table.checkStatus(obj.config.id).data;
+        switch(obj.event) {
+            case 'addData':
+                showEditModel();
+                break;
+            case 'deleteData':
+               if (checkStatus.length === 0) {
+                   layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
+                   return;
+               }
+               del(checkStatus.map(function (d) {
+                   return d.id;
+               }));
+               break;
+            case 'exportData':
+                admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
+                    var titles=[];
+                    var fields=[];
+                    obj.config.cols[0].map(function (col) {
+                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
+                            titles.push(col.title);
+                            fields.push(col.field);
+                        }
+                    });
+                    var exportData = {};
+                    $.each($('#search-box [name]').serializeArray(), function() {
+                        exportData[this.name] = this.value;
+                    });
+                    var param = {
+                        'cstmr': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/cstmr/export/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: JSON.stringify(param),
+                        dataType:'json',
+                        contentType:'application/json;charset=UTF-8',
+                        method: 'POST',
+                        success: function (res) {
+                            layer.closeAll();
+                            if (res.code === 200) {
+                                table.exportFile(titles,res.data,'xls');
+                            } else if (res.code === 403) {
+                                top.location.href = baseUrl+"/";
+                            } else {
+                                layer.msg(res.msg, {icon: 2})
+                            }
+                        }
+                    });
+                });
+                break;
+        }
+    });
+
+    // 鐩戝惉琛屽伐鍏蜂簨浠�
+    table.on('tool(cstmr)', function(obj){
+        var data = obj.data;
+        switch (obj.event) {
+            case 'edit':
+                showEditModel(data);
+                break;
+            case "del":
+                del([data.id]);
+                break;
+        }
+    });
+
+    /* 寮圭獥 - 鏂板銆佷慨鏀� */
+    function showEditModel(mData) {
+        admin.open({
+            type: 1,
+            area: '600px',
+            title: (mData ? '淇敼' : '娣诲姞') + '',
+            content: $('#editDialog').html(),
+            success: function (layero, dIndex) {
+                form.val('detail', mData);
+                layDateRender(mData);
+                form.on('submit(editSubmit)', function (data) {
+                    var loadIndex = layer.load(2);
+                    $.ajax({
+                        url: baseUrl+"/cstmr/"+(mData?'update':'add')+"/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: data.field,
+                        method: 'POST',
+                        success: function (res) {
+                            layer.close(loadIndex);
+                            if (res.code === 200){
+                                layer.close(dIndex);
+                                layer.msg(res.msg, {icon: 1});
+                                tableReload();
+                            } else if (res.code === 403){
+                                top.location.href = baseUrl+"/";
+                            }else {
+                                layer.msg(res.msg, {icon: 2});
+                            }
+                        }
+                    })
+                    return false;
+                });
+                $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                layui.form.render('select');
+            }
+        });
+    }
+
+    /* 鍒犻櫎 */
+    function del(ids) {
+        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
+            skin: 'layui-layer-admin',
+            shade: .1
+        }, function (i) {
+            layer.close(i);
+            var loadIndex = layer.load(2);
+            $.ajax({
+                url: baseUrl+"/cstmr/delete/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {ids: ids},
+                method: 'POST',
+                success: function (res) {
+                    layer.close(loadIndex);
+                    if (res.code === 200){
+                        layer.msg(res.msg, {icon: 1});
+                        tableReload();
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    } else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+        });
+    }
+
+    // 鎼滅储
+    form.on('submit(search)', function (data) {
+        pageCurr = 1;
+        tableReload(true);
+    });
+
+    // 閲嶇疆
+    form.on('submit(reset)', function (data) {
+        pageCurr = 1;
+        clearFormVal($('#search-box'));
+        tableReload(true);
+    });
+
+    // 鏃堕棿閫夋嫨鍣�
+    function layDateRender(data) {
+        setTimeout(function () {
+            layDate.render({
+                elem: '.layui-laydate-range'
+                ,type: 'datetime'
+                ,range: true
+            });
+            layDate.render({
+                elem: '#createTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['createTime$']:null
+            });
+            layDate.render({
+                elem: '#updateTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['updateTime$']:null
+            });
+
+        }, 100);
+    }
+    layDateRender();
+
+    window.loadUserSel = function () {
+        return xmSelect.render({
+            el: '#userXmlSel',
+            autoRow: true,
+            filterable: true,
+            remoteSearch: true,
+            radio: true,
+            remoteMethod: function (val, cb, show) {
+                $.ajax({
+                    url: baseUrl + "/user/all/get/kv",
+                    headers: {'token': localStorage.getItem('token')},
+                    data: {
+                        condition: val
+                    },
+                    method: 'POST',
+                    success: function (res) {
+                        if (res.code === 200) {
+                            cb(res.data)
+                        } else {
+                            cb([]);
+                            layer.msg(res.msg, {icon: 2});
+                        }
+                    }
+                });
+            }
+        });
+    }
+
+    window.loadUserSel = function () {
+        return xmSelect.render({
+            el: '#userXmlSel',
+            autoRow: true,
+            filterable: true,
+            remoteSearch: true,
+            radio: true,
+            remoteMethod: function (val, cb, show) {
+                $.ajax({
+                    url: baseUrl + "/user/all/get/kv",
+                    headers: {'token': localStorage.getItem('token')},
+                    data: {
+                        condition: val
+                    },
+                    method: 'POST',
+                    success: function (res) {
+                        if (res.code === 200) {
+                            cb(res.data)
+                        } else {
+                            cb([]);
+                            layer.msg(res.msg, {icon: 2});
+                        }
+                    }
+                });
+            }
+        });
+    }
+
+    window.loadHostSel = function () {
+        return xmSelect.render({
+            el: '#hostXmlSel',
+            autoRow: true,
+            filterable: true,
+            remoteSearch: true,
+            radio: true,
+            remoteMethod: function (val, cb, show) {
+                $.ajax({
+                    url: baseUrl + "/host/all/get/kv",
+                    headers: {'token': localStorage.getItem('token')},
+                    data: {
+                        condition: val
+                    },
+                    method: 'POST',
+                    success: function (res) {
+                        if (res.code === 200) {
+                            cb(res.data)
+                        } else {
+                            cb([]);
+                            layer.msg(res.msg, {icon: 2});
+                        }
+                    }
+                });
+            }
+        });
+    }
+
+
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(document).on('click','#data-detail-close', function () {
+    parent.layer.closeAll();
+});
+
+function tableReload(search) {
+    if (pageCount === 0 || search) {
+        let searchData = {};
+        $.each($('#search-box [name]').serializeArray(), function() {
+            searchData[this.name] = this.value;
+        });
+        tableIns.reload({
+            where: searchData,
+            page: {curr: pageCurr}
+        });
+    } else {
+        $(".layui-laypage-btn")[0].click();
+    }
+}
diff --git a/zy-asrs-wms/src/main/webapp/static/js/item/item.js b/zy-asrs-wms/src/main/webapp/static/js/item/item.js
new file mode 100644
index 0000000..cfa30b5
--- /dev/null
+++ b/zy-asrs-wms/src/main/webapp/static/js/item/item.js
@@ -0,0 +1,373 @@
+var pageCurr;
+var pageCount = 0;
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"
+}).use(['table','laydate', 'form', 'admin', 'xmSelect'], function(){
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+    var admin = layui.admin;
+    var xmSelect = layui.xmSelect;
+
+    // 鏁版嵁娓叉煋
+    tableIns = table.render({
+        elem: '#item',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/item/page/auth',
+        page: true,
+        limit: 15,
+        limits: [15, 30, 50, 100, 200, 500],
+        toolbar: '#toolbar',
+        cellMinWidth: 50,
+        height: 'full-120',
+        cols: [[
+            {type: 'checkbox'}
+            ,{field: 'id', align: 'center',title: 'ID'}
+            ,{field: 'uuid', align: 'center',title: '椤圭洰缂栧彿'}
+            ,{field: 'name', align: 'center',title: '椤圭洰鍚嶇О'}
+            ,{field: 'inUuid', align: 'center',title: '鍐呴儴缂栧彿'}
+            ,{field: 'cstmrUuid', align: 'center',title: '瀹㈡埛缂栧彿'}
+            ,{field: 'cstmr', align: 'center',title: '瀹㈡埛'}
+            ,{field: 'member', align: 'center',title: '椤圭洰鎴愬憳'}
+            ,{field: 'leader', align: 'center',title: '椤圭洰缁忕悊'}
+            ,{field: 'startTime$', align: 'center',title: '寮�濮嬫椂闂�'}
+            ,{field: 'endTime$', align: 'center',title: '缁撴潫鏃堕棿'}
+            ,{field: 'status$', align: 'center',title: '鐘舵��'}
+            ,{field: 'createBy$', align: 'center',title: '娣诲姞浜哄憳'}
+            ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿'}
+            ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳'}
+            ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
+            ,{field: 'memo', align: 'center',title: '澶囨敞'}
+            ,{field: 'hostId$', align: 'center',title: '鎺堟潈鍟嗘埛'}
+
+            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
+        ]],
+        request: {
+            pageName: 'curr',
+            pageSize: 'limit'
+        },
+        parseData: function (res) {
+            return {
+                'code': res.code,
+                'msg': res.msg,
+                'count': res.data.total,
+                'data': res.data.records
+            }
+        },
+        response: {
+            statusCode: 200
+        },
+        done: function(res, curr, count) {
+            if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            }
+            pageCurr=curr;pageCount=count;
+            limit();
+        }
+    });
+
+    // 鐩戝惉鎺掑簭浜嬩欢
+    table.on('sort(item)', function (obj) {
+        var searchData = {};
+        $.each($('#search-box [name]').serializeArray(), function() {
+            searchData[this.name] = this.value;
+        });
+        searchData['orderByField'] = obj.field;
+        searchData['orderByType'] = obj.type;
+        tableIns.reload({
+            where: searchData,
+            page: {curr: 1}
+        });
+    });
+
+    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+    table.on('toolbar(item)', function (obj) {
+        var checkStatus = table.checkStatus(obj.config.id).data;
+        switch(obj.event) {
+            case 'addData':
+                showEditModel();
+                break;
+            case 'deleteData':
+               if (checkStatus.length === 0) {
+                   layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
+                   return;
+               }
+               del(checkStatus.map(function (d) {
+                   return d.id;
+               }));
+               break;
+            case 'exportData':
+                admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
+                    var titles=[];
+                    var fields=[];
+                    obj.config.cols[0].map(function (col) {
+                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
+                            titles.push(col.title);
+                            fields.push(col.field);
+                        }
+                    });
+                    var exportData = {};
+                    $.each($('#search-box [name]').serializeArray(), function() {
+                        exportData[this.name] = this.value;
+                    });
+                    var param = {
+                        'item': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/item/export/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: JSON.stringify(param),
+                        dataType:'json',
+                        contentType:'application/json;charset=UTF-8',
+                        method: 'POST',
+                        success: function (res) {
+                            layer.closeAll();
+                            if (res.code === 200) {
+                                table.exportFile(titles,res.data,'xls');
+                            } else if (res.code === 403) {
+                                top.location.href = baseUrl+"/";
+                            } else {
+                                layer.msg(res.msg, {icon: 2})
+                            }
+                        }
+                    });
+                });
+                break;
+        }
+    });
+
+    // 鐩戝惉琛屽伐鍏蜂簨浠�
+    table.on('tool(item)', function(obj){
+        var data = obj.data;
+        switch (obj.event) {
+            case 'edit':
+                showEditModel(data);
+                break;
+            case "del":
+                del([data.id]);
+                break;
+        }
+    });
+
+    /* 寮圭獥 - 鏂板銆佷慨鏀� */
+    function showEditModel(mData) {
+        admin.open({
+            type: 1,
+            area: '600px',
+            title: (mData ? '淇敼' : '娣诲姞') + '',
+            content: $('#editDialog').html(),
+            success: function (layero, dIndex) {
+                form.val('detail', mData);
+                layDateRender(mData);
+                form.on('submit(editSubmit)', function (data) {
+                    var loadIndex = layer.load(2);
+                    $.ajax({
+                        url: baseUrl+"/item/"+(mData?'update':'add')+"/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: data.field,
+                        method: 'POST',
+                        success: function (res) {
+                            layer.close(loadIndex);
+                            if (res.code === 200){
+                                layer.close(dIndex);
+                                layer.msg(res.msg, {icon: 1});
+                                tableReload();
+                            } else if (res.code === 403){
+                                top.location.href = baseUrl+"/";
+                            }else {
+                                layer.msg(res.msg, {icon: 2});
+                            }
+                        }
+                    })
+                    return false;
+                });
+                $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                layui.form.render('select');
+            }
+        });
+    }
+
+    /* 鍒犻櫎 */
+    function del(ids) {
+        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
+            skin: 'layui-layer-admin',
+            shade: .1
+        }, function (i) {
+            layer.close(i);
+            var loadIndex = layer.load(2);
+            $.ajax({
+                url: baseUrl+"/item/delete/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {ids: ids},
+                method: 'POST',
+                success: function (res) {
+                    layer.close(loadIndex);
+                    if (res.code === 200){
+                        layer.msg(res.msg, {icon: 1});
+                        tableReload();
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    } else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+        });
+    }
+
+    // 鎼滅储
+    form.on('submit(search)', function (data) {
+        pageCurr = 1;
+        tableReload(true);
+    });
+
+    // 閲嶇疆
+    form.on('submit(reset)', function (data) {
+        pageCurr = 1;
+        clearFormVal($('#search-box'));
+        tableReload(true);
+    });
+
+    // 鏃堕棿閫夋嫨鍣�
+    function layDateRender(data) {
+        setTimeout(function () {
+            layDate.render({
+                elem: '.layui-laydate-range'
+                ,type: 'datetime'
+                ,range: true
+            });
+            layDate.render({
+                elem: '#startTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['startTime$']:null
+            });
+            layDate.render({
+                elem: '#endTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['endTime$']:null
+            });
+            layDate.render({
+                elem: '#createTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['createTime$']:null
+            });
+            layDate.render({
+                elem: '#updateTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['updateTime$']:null
+            });
+
+        }, 100);
+    }
+    layDateRender();
+
+    window.loadUserSel = function () {
+        return xmSelect.render({
+            el: '#userXmlSel',
+            autoRow: true,
+            filterable: true,
+            remoteSearch: true,
+            radio: true,
+            remoteMethod: function (val, cb, show) {
+                $.ajax({
+                    url: baseUrl + "/user/all/get/kv",
+                    headers: {'token': localStorage.getItem('token')},
+                    data: {
+                        condition: val
+                    },
+                    method: 'POST',
+                    success: function (res) {
+                        if (res.code === 200) {
+                            cb(res.data)
+                        } else {
+                            cb([]);
+                            layer.msg(res.msg, {icon: 2});
+                        }
+                    }
+                });
+            }
+        });
+    }
+
+    window.loadUserSel = function () {
+        return xmSelect.render({
+            el: '#userXmlSel',
+            autoRow: true,
+            filterable: true,
+            remoteSearch: true,
+            radio: true,
+            remoteMethod: function (val, cb, show) {
+                $.ajax({
+                    url: baseUrl + "/user/all/get/kv",
+                    headers: {'token': localStorage.getItem('token')},
+                    data: {
+                        condition: val
+                    },
+                    method: 'POST',
+                    success: function (res) {
+                        if (res.code === 200) {
+                            cb(res.data)
+                        } else {
+                            cb([]);
+                            layer.msg(res.msg, {icon: 2});
+                        }
+                    }
+                });
+            }
+        });
+    }
+
+    window.loadHostSel = function () {
+        return xmSelect.render({
+            el: '#hostXmlSel',
+            autoRow: true,
+            filterable: true,
+            remoteSearch: true,
+            radio: true,
+            remoteMethod: function (val, cb, show) {
+                $.ajax({
+                    url: baseUrl + "/host/all/get/kv",
+                    headers: {'token': localStorage.getItem('token')},
+                    data: {
+                        condition: val
+                    },
+                    method: 'POST',
+                    success: function (res) {
+                        if (res.code === 200) {
+                            cb(res.data)
+                        } else {
+                            cb([]);
+                            layer.msg(res.msg, {icon: 2});
+                        }
+                    }
+                });
+            }
+        });
+    }
+
+
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(document).on('click','#data-detail-close', function () {
+    parent.layer.closeAll();
+});
+
+function tableReload(search) {
+    if (pageCount === 0 || search) {
+        let searchData = {};
+        $.each($('#search-box [name]').serializeArray(), function() {
+            searchData[this.name] = this.value;
+        });
+        tableIns.reload({
+            where: searchData,
+            page: {curr: pageCurr}
+        });
+    } else {
+        $(".layui-laypage-btn")[0].click();
+    }
+}
diff --git a/zy-asrs-wms/src/main/webapp/static/js/order/order.js b/zy-asrs-wms/src/main/webapp/static/js/order/order.js
new file mode 100644
index 0000000..ae2c137
--- /dev/null
+++ b/zy-asrs-wms/src/main/webapp/static/js/order/order.js
@@ -0,0 +1,585 @@
+var insTbCount = 0;
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"
+}).use(['layer', 'form', 'table', 'util', 'admin', 'xmSelect', 'laydate'], function () {
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var form = layui.form;
+    var table = layui.table;
+    var util = layui.util;
+    var admin = layui.admin;
+    var xmSelect = layui.xmSelect;
+    var layDate = layui.laydate;
+    var laytpl = layui.laytpl;
+
+    // 娓叉煋鎼滅储妯℃澘
+    $.ajax({
+        url: baseUrl+"/docType/page/auth",
+        headers: {'token': localStorage.getItem('token')},
+        data: {
+            limit: 9999
+        },
+        method: 'POST',
+        success: function (res) {
+            if (res.code === 200){
+                let template = Handlebars.compile($('#docTypeTpl').html());
+                $('#docType-query').html(template(res.data));
+                layui.form.render('select');
+            } else if (res.code === 403){
+                top.location.href = baseUrl+"/";
+            } else {
+                layer.msg(res.msg, {icon: 2})
+            }
+        }
+    })
+
+    // 娓叉煋琛ㄦ牸
+    var insTb = table.render({
+        elem: '#order',
+        url: baseUrl+'/order/head/page/auth',
+        headers: {token: localStorage.getItem('token')},
+        page: true,
+        cellMinWidth: 100,
+        limit: 16,
+        limits: [16, 30, 50, 100, 200, 500],
+        cols: [[
+            {type: 'numbers'},
+            {field: 'orderNo', title: '鍗曟嵁缂栧彿', templet: '#orderNoTpl'},
+            {field: 'docType$', align: 'center', title: '绫诲瀷',  minWidth: 160, width: 160},
+            {align: 'center', title: '鏄庣粏', toolbar: '#tbLook', minWidth: 160, width: 160},
+            {field: 'createTime$', title: '鍒涘缓鏃堕棿', minWidth: 200, width: 200},
+            {field: 'settle$', align: 'center', title: '鐘舵��', templet: '#settleTpl',  minWidth: 160, width: 160},
+            {field: 'memo', align: 'center',title: '澶囨敞', hide: true},
+            {align: 'center', title: '鎿嶄綔', toolbar: '#operate', width: 280}
+        ]],
+        request: {
+            pageName: 'curr',
+            pageSize: 'limit'
+        },
+        parseData: function (res) {
+            return {
+                'code': res.code,
+                'msg': res.msg,
+                'count': res.data.total,
+                'data': res.data.records
+            }
+        },
+        response: {
+            statusCode: 200
+        },
+        done: function (res, curr, count) {
+            limit();
+            if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            }
+            insTbCount = count;
+        }
+    });
+
+    // 鎼滅储
+    form.on('submit(tbSearch)', function (data) {
+        insTb.reload({where: data.field, page: {curr: 1}});
+    });
+
+    // 娣诲姞
+    $("#orderAddBtn").click(function () {
+        showEditModel();
+    });
+
+    // 宸ュ叿鏉$偣鍑讳簨浠�
+    table.on('tool(order)', function (obj) {
+        var data = obj.data;
+        var layEvent = obj.event;
+
+        if (layEvent === 'edit') {
+            showEditModel(data);
+        } else if (layEvent === 'wrkTrace') {
+            showWrkTrace(data.id);
+        } else if (layEvent === 'del') {
+            doDel(data.id);
+        } else if (layEvent === 'complete') {
+            doModify(data.id, 4);
+        } else if (layEvent === 'cancel') {
+            layer.confirm('纭畾鍙栧綋鍓嶅崟鎹瓑寰呮墽琛岀殑浣滀笟鍚楋紵', {
+                shade: .1,
+                skin: 'layui-layer-admin'
+            }, function (i) {
+                layer.close(i);
+                layer.load(2);
+                $.ajax({
+                    url: baseUrl+"/order/cancel/wrk/auth",
+                    headers: {'token': localStorage.getItem('token')},
+                    method: 'POST',
+                    data: {
+                        orderId: data.id
+                    },
+                    success: function (res) {
+                        layer.closeAll('loading');
+                        if (res.code === 200){
+                            layer.msg(res.msg, {icon: 1});
+                            insTb.reload({page: {curr: 1}});
+                        } else if (res.code === 403){
+                            top.location.href = baseUrl+"/";
+                        }else {
+                            layer.msg(res.msg, {icon: 2})
+                        }
+                    }
+                })
+            });
+        }  else if (layEvent === 'look') {
+            var $a = $(obj.tr).find('a[lay-event="look"]');
+            var offset = $a.offset();
+            var top = offset.top;
+            var left = offset.left;
+            layer.open({
+                type: 1,
+                title: false,
+                area: '820px',
+                offset: [top + 'px', (left - 530 + $a.outerWidth()) + 'px'],
+                shade: .01,
+                shadeClose: true,
+                fixed: false,
+                content: '<table id="lookSSXMTable" lay-filter="lookSSXMTable"></table>',
+                success: function (layero) {
+                    table.render({
+                        elem: '#lookSSXMTable',
+                        headers: {token: localStorage.getItem('token')},
+                        url: baseUrl+'/orderDetl/page/auth',
+                        where: {
+                            order_id: data.id
+                        },
+                        page: true,
+                        cellMinWidth: 100,
+                        cols: [[
+                            {type: 'numbers'},
+                            {field: 'matnr', title: '鍟嗗搧缂栫爜', width: 160},
+                            {field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 160},
+                            {field: 'batch', title: '搴忓垪鐮�'},
+                            {field: 'anfme', title: '鏁伴噺'},
+                            {field: '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: 'origin', title: '浠撳簱鍙�'}
+                        ]],
+                        request: {
+                            pageName: 'curr',
+                            pageSize: 'limit'
+                        },
+                        parseData: function (res) {
+                            return {
+                                'code': res.code,
+                                'msg': res.msg,
+                                'count': res.data.total,
+                                'data': res.data.records
+                            }
+                        },
+                        response: {
+                            statusCode: 200
+                        },
+                        done: function () {
+                            $(layero).find('.layui-table-view').css('margin', '0');
+                        },
+                        size: ''
+                    });
+                }
+            });
+        } else if (layEvent === 'editEnd') {
+            layer.confirm('纭畾灏嗗綋鍓嶅崟鎹浆鍏ュ巻鍙叉。妗堝悧锛�', {
+                shade: .1,
+                skin: 'layui-layer-admin'
+            }, function (i) {
+                layer.close(i);
+                layer.load(2);
+                $.ajax({
+                    url: baseUrl+"/order/editEnd/wrk/auth",
+                    headers: {'token': localStorage.getItem('token')},
+                    method: 'POST',
+                    data: {
+                        orderId: data.id
+                    },
+                    success: function (res) {
+                        layer.closeAll('loading');
+                        if (res.code === 200){
+                            layer.msg(res.msg, {icon: 1});
+                            insTb.reload({page: {curr: 1}});
+                        } else if (res.code === 403){
+                            top.location.href = baseUrl+"/";
+                        }else {
+                            layer.msg(res.msg, {icon: 2})
+                        }
+                    }
+                })
+            });
+        }
+    });
+
+    // 鏄剧ず琛ㄥ崟寮圭獥
+    function showEditModel(expTpe) {
+        admin.open({
+            type: 1,
+            title: (expTpe ? '淇敼' : '娣诲姞') + '鍗曟嵁',
+            content: $('#editDialog').html(),
+            area: '1300px',
+            success: function (layero, dIndex) {
+                $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                var isExpAdd = !expTpe;
+                // 鍥炴樉鏁版嵁
+                form.val('editForm', expTpe);
+                if (expTpe) {
+                    $('#orderNo').attr("disabled", "disabled");
+                }
+                // 琛ㄥ崟鎻愪氦浜嬩欢
+                form.on('submit(orderEditSubmit)', function (data) {
+                    // 缁勮鏁版嵁
+                    if (xxDataList.length <= 0) {
+                        layer.tips('璇锋坊鍔犲崟鎹槑缁�', '#matAddBtnComment', {tips: [1, '#ff4c4c']});
+                        return false;
+                    }
+                    let nList = admin.util.deepClone(xxDataList);
+                    for (let xi = 0; xi < nList.length; xi++) {
+                        if (nList[xi].anfme <= 0){
+                            layer.msg('鏄庣粏淇敼鏁伴噺涓嶅悎娉�', {icon: 2});
+                            return false;
+                        }
+                    }
+                    layer.load(2);
+                    $.ajax({
+                        url: baseUrl+"/order/form/" + (isExpAdd?"add":"modify") + "/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: JSON.stringify({
+                            orderId: Number(data.field.id),
+                            docType: Number(data.field.docType),
+                            orderNo: data.field.orderNo,
+                            orderDetlList: nList
+                        }),
+                        contentType:'application/json;charset=UTF-8',
+                        method: 'POST',
+                        success: function (res) {
+                            layer.closeAll('loading');
+                            if (res.code === 200){
+                                layer.close(dIndex);
+                                $(".layui-laypage-btn")[0].click();
+                                layer.msg(res.msg, {icon: 1});
+                            } else if (res.code === 403){
+                                top.location.href = baseUrl+"/";
+                            }else {
+                                layer.msg(res.msg, {icon: 2});
+                            }
+                        }
+                    })
+                    return false;
+                });
+                // 鏄庣粏琛ㄦ牸
+                var xxDataList = [];
+                var tbOptions = {
+                    elem: '#formSSXMTable',
+                    headers: {token: localStorage.getItem('token')},
+                    data: xxDataList,
+                    page: true,
+                    height: '350px;',
+                    cellMinWidth: 100,
+                    cols: [[
+                        {type: 'numbers', title: '#'},
+                        {field: 'matnr', title: '鍟嗗搧缂栫爜', width: 160},
+                        {field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 200},
+                        {field: 'batch', title: '搴忓垪鐮�', edit: true},
+                        {field: 'specs', title: '瑙勬牸'},
+                        {field: 'anfme', title: '鏁伴噺(淇敼)', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110},
+                        // {field: 'inQty', title: '宸插叆搴撻噺',  minWidth: 100, width: 100},
+                        // {field: 'unit', title: '鍗曚綅', width: 80},
+                        {field: 'origin', title: '浠撳簱鍙�' , edit: true},
+                        {field: 'memo', title: '澶囨敞' , edit: true},
+                        {align: 'center', title: '鎿嶄綔', toolbar: '#formSSXMTableBar', minWidth: 80, width: 80, fixed: 'right'}
+                    ]],
+                    done: function (res) {
+                        $(layero).find('.layui-table-view').css('margin', '0');
+                    },
+                    size: ''
+                };
+                if (!isExpAdd) {
+                    $.ajax({
+                        url: baseUrl+"/order/detl/all/auth?orderId=" + expTpe.id,
+                        headers: {'token': localStorage.getItem('token')},
+                        method: 'GET',
+                        async: false,
+                        success: function (res) {
+                            if (res.code === 200){
+                                xxDataList = res.data;
+                                tbOptions.data = xxDataList;
+                            } else if (res.code === 403){
+                                top.location.href = baseUrl+"/";
+                            }else {
+                                layer.msg(res.msg, {icon: 2})
+                            }
+                        }
+                    })
+                }
+                var insTbSSXM = table.render(tbOptions);
+                // 宸ュ叿鏉$偣鍑讳簨浠�
+                table.on('tool(formSSXMTable)', function (obj) {
+                    var data = obj.data;
+                    var layEvent = obj.event;
+                    if (layEvent === 'edit') {
+                        showEditModel2(data);
+                    } else if (layEvent === 'del') {
+                        layer.confirm('纭畾瑕佸垹闄ゅ悧锛�', {
+                            shade: .1,
+                            skin: 'layui-layer-admin'
+                        }, function (i) {
+                            layer.close(i);
+                            for (var j = 0; j < xxDataList.length; j++) {
+                                if (xxDataList[j].matnr === data.matnr && xxDataList[j].batch === data.batch) {
+                                    xxDataList.splice(j, 1);
+                                    break;
+                                }
+                            }
+                            insTbSSXM.reload({data: xxDataList, page: {curr: 1}});
+                        });
+                    }
+                });
+                // 鏄庣粏鏁版嵁淇敼
+                table.on('edit(formSSXMTable)', function (obj) {
+                    let index = obj.tr.attr("data-index");
+                    let data = xxDataList[index];
+                    if (obj.field === 'anfme'){
+                        let vle = Number(obj.value);
+                        if (isNaN(vle)) {
+                            layer.msg("璇疯緭鍏ユ暟瀛�", {icon: 2});
+                            return false;
+                        } else {
+                            if (vle <= 0) {
+                                layer.msg("鏁伴噺蹇呴』澶т簬闆�", {icon: 2});
+                                return false;
+                            }
+                        }
+                    }
+                    data[obj.field] = obj.value;
+                    insTbSSXM.reload({data: xxDataList});
+                });
+
+                $('#matAddBtnComment').click(function () {
+                    showEditModel2();
+                });
+
+                // 鏄剧ず娣诲姞鏄庣粏琛ㄥ崟寮圭獥
+                function showEditModel2(exp) {
+                    admin.open({
+                        type: 1,
+                        offset: '150px',
+                        area: '680px',
+                        title: (exp ? '淇敼' : '娣诲姞') + '鏄庣粏',
+                        content: $('#matEditDialog').html(),
+                        success: function (layero, dIndex) {
+                            // 鍥炴樉鏁版嵁
+                            form.val('matEditForm', exp);
+                            // 琛ㄥ崟鎻愪氦浜嬩欢
+                            form.on('submit(matEditSubmit)', function (data) {
+                                let selectList = matXmSelect.getValue();
+                                for (let i = 0; i<selectList.length; i++) {
+                                    let item = selectList[i];
+                                    // 鏌ヨ鐗╂枡璇︽儏
+                                    $.ajax({
+                                        url: baseUrl+"/mat/covert/"+item.value+"/auth",
+                                        headers: {'token': localStorage.getItem('token')},
+                                        method: 'GET',
+                                        async: false,
+                                        success: function (res) {
+                                            if (res.code === 200){
+                                                xxDataList.push(res.data);
+                                                insTbSSXM.reload({data: xxDataList, page: {curr: 1}});
+                                            } else if (res.code === 403){
+                                                top.location.href = baseUrl+"/";
+                                            }else {
+                                                layer.msg(res.msg, {icon: 2})
+                                            }
+                                        }
+                                    })
+                                }
+                                layer.close(dIndex);
+                                return false;
+                            });
+                            // 娓叉煋鐗╂枡閫夋嫨
+                            var matXmSelect = xmSelect.render({
+                                el: '#mat',
+                                style: {
+                                    width: '340px',
+                                },
+                                autoRow: true,
+                                toolbar: { show: true },
+                                filterable: true,
+                                remoteSearch: true,
+                                remoteMethod: function(val, cb, show){
+                                    $.ajax({
+                                        url: baseUrl+"/mat/all/get/kv",
+                                        headers: {'token': localStorage.getItem('token')},
+                                        data: {
+                                            condition: val
+                                        },
+                                        method: 'POST',
+                                        success: function (res) {
+                                            if (res.code === 200){
+                                                cb(res.data)
+                                            } else {
+                                                cb([]);
+                                                layer.msg(res.msg, {icon: 2});
+                                            }
+                                        }
+                                    });
+                                }
+                            })
+                            // 寮圭獥涓嶅嚭鐜版粴鍔ㄦ潯
+                            $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                            layui.form.render('select');
+                        }
+                    });
+                }
+
+            }
+        });
+    }
+
+    // 鍒犻櫎鍗曟嵁
+    function doDel(orderId) {
+        layer.confirm('纭畾瑕佸垹闄ゅ悧锛�', {
+            shade: .1,
+            skin: 'layui-layer-admin'
+        }, function (i) {
+            layer.close(i);
+            layer.load(2);
+            $.ajax({
+                url: baseUrl+"/order/delete/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {
+                    orderId: orderId
+                },
+                method: 'POST',
+                success: function (res) {
+                    layer.closeAll('loading');
+                    if (res.code === 200){
+                        if (insTbCount === 0) {
+                            insTb.reload({page: {curr: 1}});
+                        } else {
+                            $(".layui-laypage-btn")[0].click();
+                        }
+                        layer.msg(res.msg, {icon: 1});
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    }else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+        });
+    }
+
+
+    // 淇敼璁㈠崟鐘舵��
+    function doModify(orderId, settle) {
+        layer.confirm('纭畾瑕佹墜鍔ㄥ畬缁撳悧锛�', {
+            shade: .1,
+            skin: 'layui-layer-admin'
+        }, function (i) {
+            layer.close(i);
+            layer.load(2);
+            $.ajax({
+                url: baseUrl+"/order/update/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {
+                    id: orderId,
+                    settle: settle
+                },
+                method: 'POST',
+                success: function (res) {
+                    layer.closeAll('loading');
+                    if (res.code === 200){
+                        if (insTbCount === 0) {
+                            insTb.reload({page: {curr: 1}});
+                        } else {
+                            $(".layui-laypage-btn")[0].click();
+                        }
+                        layer.msg(res.msg, {icon: 1});
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    }else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+        });
+    }
+
+    // 浠诲姟杩芥函
+    function showWrkTrace(orderId) {
+        let loadIndex = layer.msg('璇锋眰涓�...', {icon: 16, shade: 0.01, time: false});
+        $.ajax({
+            url: baseUrl+"/order/wrk/trace/auth",
+            headers: {'token': localStorage.getItem('token')},
+            data: {
+                orderId: orderId
+            },
+            method: 'POST',
+            success: function (res) {
+                layer.close(loadIndex);
+                if (res.code === 200){
+                    laytpl(wrkTraceDialog.innerHTML).render(res.data, function (html) {
+                        admin.open({
+                            type: 1,
+                            title: '浠诲姟杩芥函',
+                            area: ['800px', '450px'],
+                            shadeClose: true,
+                            content: html,
+                            success: function (layero, dIndex) {
+                                $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                                /** 缁熻鍥捐〃 */
+                                var traceCharts = echarts.init(document.getElementById('wrkTraceCharts'));
+                                var traceOptions = {
+                                    title: {
+                                        text: '浣滀笟/鎬婚噺', x: 'center', y: '38%',
+                                        textStyle: {fontSize: 18, color: '#262626', fontWeight: 'normal'},
+                                        subtextStyle: {fontSize: 36, color: '#10B4E8'},
+                                        itemGap: 20
+                                    },
+                                    color: ['#10B4E8', '#E0E0E0', '#FF0000'],
+                                    tooltip: {trigger: 'item'},
+                                    series: [{name: '鏁伴噺', type: 'pie', radius: ['75%', '80%'], label: {normal: {show: false}}}]
+                                };
+                                traceCharts.setOption(traceOptions);
+                                // 璧嬪��
+                                traceCharts.setOption({
+                                    title: {
+                                        subtext: res.data.wrkQty+"/"+res.data.totalQty
+                                    },
+                                    series: [
+                                        {
+                                            data: [
+                                                {name: '宸蹭綔涓�', value: res.data.wrkQty},
+                                                {name: '鏈綔涓�', value: res.data.totalQty-res.data.wrkQty-res.data.lackQty},
+                                                {name: '搴撳瓨涓嶈冻', value: res.data.lackQty},
+                                            ]
+                                        }
+                                    ]
+                                });
+                            }
+                        });
+                    });
+                } else if (res.code === 403){
+                    top.location.href = baseUrl+"/";
+                }else {
+                    layer.msg(res.msg, {icon: 2});
+                }
+            }
+        })
+    }
+
+    layDate.render({
+        elem: '.layui-laydate-range'
+        ,type: 'datetime'
+        ,range: true
+    });
+});
diff --git a/zy-asrs-wms/src/main/webapp/static/js/order/out.js b/zy-asrs-wms/src/main/webapp/static/js/order/out.js
new file mode 100644
index 0000000..c43ffea
--- /dev/null
+++ b/zy-asrs-wms/src/main/webapp/static/js/order/out.js
@@ -0,0 +1,372 @@
+var pageCurr;
+var insTb2;
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"
+}).extend({
+    notice: 'notice/notice',
+}).use(['table','laydate', 'form', 'util', 'admin', 'notice', 'treeTable', 'xmSelect', 'tableMerge', 'tableX'], function(){
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+    var admin = layui.admin;
+    var util = layui.util;
+    var notice = layui.notice;
+    var treeTable = layui.treeTable;
+    var xmSelect = layui.xmSelect;
+    var tableMerge = layui.tableMerge;
+    var tableX = layui.tableX;
+
+    insTb2 = table.render({
+        elem: '#orderDetlTable',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/orderDetl/pakout/list/auth',
+        page: true,
+        limit: 15,
+        limits: [15, 30, 50, 100, 200, 500],
+        toolbar: '#orderDetToolbar',
+        height: 'full-120',
+        where: {order_id: 9999999999},
+        cols: [[
+            {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: 'batch', align: 'center',title: '搴忓垪鐮�'}
+            ,{field: 'origin', align: 'center',title: '浠撳簱鍙�'}
+            // ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
+            // ,{field: 'qty', align: 'center',title: '浣滀笟鏁伴噺', style: 'font-weight: bold'}
+            ,{field: 'enableQty', align: 'center',title: '寰呭嚭鏁伴噺', style: 'font-weight: bold'}
+            // ,{field: 'name', align: 'center',title: '鍚嶇О'}
+            // ,{field: 'model', align: 'center',title: '鍨嬪彿'}
+            ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: true}
+            ,{field: 'barcode', align: 'center',title: '鍟嗗搧鏉$爜', hide: true}
+            // ,{field: 'supplier', align: 'center',title: '渚涘簲鍟�'}
+            // ,{field: 'unitPrice', align: 'center',title: '鍗曚环'}
+            // ,{field: 'itemNum', align: 'center',title: '鍝侀」鏁�'}
+            // ,{field: 'count', align: 'center',title: '鏁伴噺'}
+            // ,{field: 'weight', align: 'center',title: '閲嶉噺'}
+            // ,{field: 'status$', align: 'center',title: '鐘舵��'}
+            // ,{field: 'createBy$', align: 'center',title: '娣诲姞浜哄憳'}
+            // ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿'}
+            // ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳'}
+            // ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
+            // ,{field: 'memo', align: 'center',title: '澶囨敞'}
+            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width: 160}
+        ]],
+        request: {
+            pageName: 'curr',
+            pageSize: 'limit'
+        },
+        parseData: function (res) {
+            return {
+                'code': res.code,
+                'msg': res.msg,
+                'count': res.data.total,
+                'data': res.data.records
+            }
+        },
+        response: {
+            statusCode: 200
+        },
+        done: function(res, curr, count) {
+            if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            }
+            pageCurr=curr;
+            limit();
+        }
+    });
+
+    /* 琛ㄦ牸2鎼滅储 */
+    form.on('submit(sensorTbSearch)', function (data) {
+        insTb2.reload({where: data.field, page: {curr: 1}});
+        return false;
+    });
+
+    /* 琛ㄦ牸2澶村伐鍏锋爮鐐瑰嚮浜嬩欢 */
+    table.on('toolbar(orderDetlTable)', function (obj) {
+
+        var checkStatus = table.checkStatus(obj.config.id).data;
+        if (obj.event === 'pakoutPreview') { // 娣诲姞
+            if (checkStatus.length === 0) {
+                layer.msg('璇烽�夋嫨鑷冲皯涓�鏉″嚭搴撴槑缁�', {icon: 2});
+                return;
+            }
+            pakoutPreview(checkStatus.map(function (d) {
+                return d.id;
+            }));
+        } else if (obj.event === 'del') { // 鍒犻櫎
+            var checkRows = table.checkStatus('sensorTable');
+            if (checkRows.data.length === 0) {
+                layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
+                return;
+            }
+            var ids = checkRows.data.map(function (d) {
+                return d.id;
+            });
+            doDelSensor({ids: ids});
+        }
+    });
+
+    /* 琛ㄦ牸2宸ュ叿鏉$偣鍑讳簨浠� */
+    table.on('tool(orderDetlTable)', function (obj) {
+        var data = obj.data;
+        switch (obj.event) {
+            // 鍑哄簱
+            case 'pakoutPreview':
+                pakoutPreview([data.id])
+                break;
+        }
+    });
+
+    function pakoutPreview(ids) {
+        let loadIndex = layer.load(2);
+        $.ajax({
+            url: baseUrl + "/out/pakout/preview/auth",
+            headers: {'token': localStorage.getItem('token')},
+            contentType: 'application/json;charset=UTF-8',
+            data: JSON.stringify(ids),
+            method: 'POST',
+            success: function (res) {
+                layer.close(loadIndex);
+                var tableCache;
+                if (res.code === 200){
+                    layer.open({
+                        type: 1
+                        ,title: false
+                        ,closeBtn: false
+                        ,offset: '50px'
+                        ,area: ['1200px', '700px']
+                        ,shade: 0.5
+                        ,shadeClose: false
+                        ,btn: ['绔嬪嵆鍑哄簱', '绋嶅悗澶勭悊']
+                        ,btnAlign: 'c'
+                        ,moveType: 1 //鎷栨嫿妯″紡锛�0鎴栬��1
+                        ,content: $('#pakoutPreviewBox').html()
+                        ,success: function(layero, index){
+                            stoPreTabIdx = table.render({
+                                elem: '#stoPreTab',
+                                data: res.data,
+                                height: 520,
+                                page: false,
+                                limit: Number.MAX_VALUE,
+                                cellMinWidth: 100,
+                                cols: [[
+                                    // {type: 'checkbox', merge: ['orderNo']},
+                                    {field: 'orderNo', title: '鍗曟嵁缂栧彿', merge: true, align: 'center'},
+                                    {field: 'title', title: '鍟嗗搧', merge: true, align: 'center', width: 350},
+                                    {field: 'batch', title: '搴忓垪鐮�', align: 'center'},
+                                    {field: 'anfme', title: '鏁伴噺', align: 'center', width: 90, style: 'font-weight: bold'},
+                                    {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) {
+                                    tableMerge.render(this);
+                                    $('.layui-table-body.layui-table-main').css("overflow", "auto");
+                                    tableCache = tableData = table.cache.stoPreTab;
+                                }
+                            });
+                            // 淇敼鍑哄簱绔�
+                            form.on('select(tbBasicTbStaNos)', function (obj) {
+                                let index  = obj.othis.parents('tr').attr("data-index");
+                                let data = tableCache[index];
+                                for (let i = 0; i<tableCache.length; i++) {
+                                    if (tableCache[i].locNo === data.locNo) {
+                                        tableCache[i]['staNo'] = Number(obj.elem.value);
+                                    }
+                                }
+                                obj.othis.children().find("input").css("color", "blue");
+                                return false;
+                            });
+                            // 鎵归噺淇敼鍑哄簱绔�
+                            form.on('submit(batchModifySta)', function () {
+                                modifySta();
+                            });
+                            // 鎵归噺淇敼鍑哄簱绔� - 绔欑偣閫夋嫨
+                            function modifySta() {
+                                // 鍑哄簱绔欏彇浜ら泦
+                                let staBatchSelectVal = [];
+                                for(let i = 0; i<tableCache.length; i++) {
+                                    let staNos = tableCache[i].staNos;
+                                    if (staNos !== null) {
+                                        if (staBatchSelectVal.length === 0) {
+                                            staBatchSelectVal = staNos;
+                                        } else {
+                                            staBatchSelectVal = staBatchSelectVal.filter(val =>
+                                                {
+                                                    return new Set(staNos).has(val)
+                                                }
+                                            )
+                                        }
+                                    }
+                                }
+                                if (staBatchSelectVal.length === 0) {
+                                    layer.msg("鍑哄簱绔欐病鏈変氦闆嗭紝鏃犳硶鎵归噺淇敼", {icon: 2});
+                                    return;
+                                }
+                                admin.open({
+                                    type: 1,
+                                    area: '300px',
+                                    offset: 'auto',
+                                    title: '璇烽�夋嫨绔欑偣',
+                                    content: $('#staBatchSelectDialog').html(),
+                                    success: function (layero, ddIndex) {
+                                        // 娓叉煋涓嬫媺妗�
+                                        let template = Handlebars.compile($('#batchStaSelectTpl').html());
+                                        $('#batchSelectStaBox').html(template({list: staBatchSelectVal}));
+                                        // 纭
+                                        form.on('submit(staBatchSelectConfirm)', function (obj) {
+                                            let loadIdx = layer.load(2);
+                                            let batchSta = Number(obj.field.batchSta);
+                                            let arr = [];
+                                            for (let i = 0; i<tableCache.length; i++) {
+                                                tableCache[i]['staNo'] = batchSta;
+                                                arr.push(i);
+                                            }
+                                            stoPreTabIdx.reload({data: tableCache});
+                                            arr.forEach(item => {
+                                                $('div[lay-id=stoPreTab] tr[data-index="' + item + '"] .order-sta-select').val(batchSta);
+                                            });
+                                            layui.form.render('select');
+                                            arr.forEach(item => {
+                                                $('div[lay-id=stoPreTab] tr[data-index="' + item + '"] .layui-select-title').find("input").css("color", "blue");
+                                            });
+                                            layer.close(loadIdx); layer.close(ddIndex);
+                                            return false;
+                                        });
+                                        // 寮圭獥涓嶅嚭鐜版粴鍔ㄦ潯
+                                        $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                                        layui.form.render('select');
+                                    },
+                                })
+                            }
+
+                        }
+                        ,yes: function(index, layero){
+                            //鎸夐挳銆愮珛鍗冲嚭搴撱�戠殑鍥炶皟
+                            pakout(tableCache, index);
+                        }
+                        ,btn2: function(index, layero){
+                            //鎸夐挳銆愮◢鍚庡鐞嗐�戠殑鍥炶皟
+                            layer.close(index)
+                            //return false 寮�鍚浠g爜鍙姝㈢偣鍑昏鎸夐挳鍏抽棴
+                        }
+                    });
+                } else if (res.code === 403){
+                    top.location.href = baseUrl+"/";
+                } else {
+                    layer.msg(res.msg, {icon: 2})
+                }
+            }
+        })
+    }
+
+    function pakout(tableCache, layerIndex) {
+        // let loadIndex = layer.load(2);
+        notice.msg('姝e湪鐢熸垚鍑哄簱浠诲姟......', {icon: 4});
+        $.ajax({
+            url: baseUrl + "/out/pakout/auth",
+            headers: {'token': localStorage.getItem('token')},
+            contentType: 'application/json;charset=UTF-8',
+            data: JSON.stringify(tableCache),
+            method: 'POST',
+            success: function (res) {
+                notice.destroy();
+                if (res.code === 200) {
+                    layer.close(layerIndex);
+                    layer.msg(res.msg, {icon: 1});
+                    insTb.reload({where: null});
+                    insTb2.reload({where: null, page: {curr: 1}});
+                } else if (res.code === 403) {
+                    top.location.href = baseUrl + "/";
+                } else {
+                    layer.msg(res.msg, {icon: 2})
+                }
+            }
+        });
+    }
+
+
+
+    /* 鍒犻櫎璁㈠崟 */
+    function doDelSensor(obj) {
+        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
+            skin: 'layui-layer-admin',
+            shade: .1
+        }, function (i) {
+            layer.close(i);
+            var loadIndex = layer.load(2);
+            $.ajax({
+                url: baseUrl+"/sensor/delete/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {ids: obj.ids},
+                method: 'POST',
+                success: function (res) {
+                    layer.close(loadIndex);
+                    if (res.code === 200){
+                        layer.msg(res.msg, {icon: 1});
+                        $(".layui-laypage-btn")[0].click();
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    }else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+
+        });
+    }
+
+    // 淇敼鐘舵��
+    form.on('switch(statusSwitch)', function (obj) {
+        var index  = obj.othis.parents('tr').attr("data-index");
+        var data = tableData[index];
+        data[this.name] = obj.elem.checked?1:0;
+        http.post(baseUrl+"/sensor/edit/auth", {id: data.id, status: data[this.name]}, function (res) {
+            layer.msg(res.msg, {icon: 1});
+        })
+    })
+
+    window.pakoutPreview = pakoutPreview;
+
+});
+
+function tableReload(child) {
+    var searchData = {};
+    $.each($('#search-box [name]').serializeArray(), function() {
+        searchData[this.name] = this.value;
+    });
+    (child ? parent.tableIns : tableIns).reload({
+        where: searchData,
+        page: {
+            curr: pageCurr
+        }
+    });
+}
+
+/**
+ * 涓�閿嚭搴�
+ */
+function autoOut(orderId) {
+    let loadIndex = layer.msg('璇锋眰涓�...', {icon: 16, shade: 0.01, time: false});
+    $.ajax({
+        url: baseUrl + "/out/pakout/orderDetlIds/auth",
+        headers: {'token': localStorage.getItem('token')},
+        data: { orderId : orderId },
+        method: 'POST',
+        success: function (res) {
+            layer.close(loadIndex);
+            if (res.code === 200){
+                pakoutPreview(res.data);
+            } else if (res.code === 403){
+                top.location.href = baseUrl+"/";
+            } else {
+                layer.msg(res.msg, {icon: 2});
+            }
+        }
+    })
+}
diff --git a/zy-asrs-wms/src/main/webapp/static/js/orderDetl/orderDetl.js b/zy-asrs-wms/src/main/webapp/static/js/orderDetl/orderDetl.js
new file mode 100644
index 0000000..305a5f4
--- /dev/null
+++ b/zy-asrs-wms/src/main/webapp/static/js/orderDetl/orderDetl.js
@@ -0,0 +1,415 @@
+var pageCurr;
+var pageCount = 0;
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"
+}).use(['table','laydate', 'form', 'admin', 'xmSelect'], function(){
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+    var admin = layui.admin;
+    var xmSelect = layui.xmSelect;
+
+    // 鏁版嵁娓叉煋
+    tableIns = table.render({
+        elem: '#orderDetl',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/orderDetl/page/auth',
+        page: true,
+        limit: 15,
+        limits: [15, 30, 50, 100, 200, 500],
+        toolbar: '#toolbar',
+        cellMinWidth: 50,
+        height: 'full-120',
+        cols: [[
+            {type: 'checkbox'}
+            ,{field: 'id', align: 'center',title: 'ID'}
+            ,{field: 'orderId$', align: 'center',title: '璁㈠崟鍐呯爜'}
+            ,{field: 'orderNo', align: 'center',title: '鍗曟嵁缂栧彿'}
+            ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
+            ,{field: 'qty', align: 'center',title: ''}
+            ,{field: 'matnr', align: 'center',title: '鍟嗗搧缂栫爜'}
+            ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О'}
+            ,{field: 'batch', align: 'center',title: '鎵瑰彿'}
+            ,{field: 'specs', align: 'center',title: '瑙勬牸'}
+            ,{field: 'model', align: 'center',title: '鍨嬪彿'}
+            ,{field: 'color', align: 'center',title: '棰滆壊'}
+            ,{field: 'brand', align: 'center',title: '鍝佺墝'}
+            ,{field: 'unit', align: 'center',title: '鍗曚綅'}
+            ,{field: 'price', align: 'center',title: '鍗曚环'}
+            ,{field: 'sku', align: 'center',title: 'sku'}
+            ,{field: 'units', align: 'center',title: '鍗曚綅閲�'}
+            ,{field: 'barcode', align: 'center',title: '鏉$爜'}
+            ,{field: 'origin', align: 'center',title: '浜у湴'}
+            ,{field: 'manu', align: 'center',title: '鍘傚'}
+            ,{field: 'manuDate', align: 'center',title: '鐢熶骇鏃ユ湡'}
+            ,{field: 'itemNum', align: 'center',title: '鍝侀」鏁�'}
+            ,{field: 'safeQty', align: 'center',title: '瀹夊叏搴撳瓨閲�'}
+            ,{field: 'weight', align: 'center',title: '閲嶉噺'}
+            ,{field: 'length', align: 'center',title: '闀垮害'}
+            ,{field: 'volume', align: 'center',title: '浣撶Н'}
+            ,{field: 'threeCode', align: 'center',title: '涓夋柟缂栫爜'}
+            ,{field: 'supp', align: 'center',title: '渚涘簲鍟�'}
+            ,{field: 'suppCode', align: 'center',title: '渚涘簲鍟嗙紪鐮�'}
+            ,{field: 'beBatch$', align: 'center',title: '鏄惁鎵规'}
+            ,{field: 'deadTime', align: 'center',title: '淇濊川鏈�'}
+            ,{field: 'deadWarn', align: 'center',title: '棰勮澶╂暟'}
+            ,{field: 'source$', align: 'center',title: '鍒惰喘'}
+            ,{field: 'inspect$', align: 'center',title: '瑕佹眰妫�楠�'}
+            ,{field: 'danger$', align: 'center',title: '鍗遍櫓鍝�'}
+            ,{field: 'status$', align: 'center',title: '鐘舵��'}
+            ,{field: 'createBy$', align: 'center',title: '娣诲姞浜哄憳'}
+            ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿'}
+            ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳'}
+            ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
+            ,{field: 'memo', align: 'center',title: '澶囨敞'}
+            ,{field: 'hostId$', align: 'center',title: '鎺堟潈鍟嗘埛'}
+
+            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
+        ]],
+        request: {
+            pageName: 'curr',
+            pageSize: 'limit'
+        },
+        parseData: function (res) {
+            return {
+                'code': res.code,
+                'msg': res.msg,
+                'count': res.data.total,
+                'data': res.data.records
+            }
+        },
+        response: {
+            statusCode: 200
+        },
+        done: function(res, curr, count) {
+            if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            }
+            pageCurr=curr;pageCount=count;
+            limit();
+        }
+    });
+
+    // 鐩戝惉鎺掑簭浜嬩欢
+    table.on('sort(orderDetl)', function (obj) {
+        var searchData = {};
+        $.each($('#search-box [name]').serializeArray(), function() {
+            searchData[this.name] = this.value;
+        });
+        searchData['orderByField'] = obj.field;
+        searchData['orderByType'] = obj.type;
+        tableIns.reload({
+            where: searchData,
+            page: {curr: 1}
+        });
+    });
+
+    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+    table.on('toolbar(orderDetl)', function (obj) {
+        var checkStatus = table.checkStatus(obj.config.id).data;
+        switch(obj.event) {
+            case 'addData':
+                showEditModel();
+                break;
+            case 'deleteData':
+               if (checkStatus.length === 0) {
+                   layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
+                   return;
+               }
+               del(checkStatus.map(function (d) {
+                   return d.id;
+               }));
+               break;
+            case 'exportData':
+                admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
+                    var titles=[];
+                    var fields=[];
+                    obj.config.cols[0].map(function (col) {
+                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
+                            titles.push(col.title);
+                            fields.push(col.field);
+                        }
+                    });
+                    var exportData = {};
+                    $.each($('#search-box [name]').serializeArray(), function() {
+                        exportData[this.name] = this.value;
+                    });
+                    var param = {
+                        'orderDetl': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/orderDetl/export/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: JSON.stringify(param),
+                        dataType:'json',
+                        contentType:'application/json;charset=UTF-8',
+                        method: 'POST',
+                        success: function (res) {
+                            layer.closeAll();
+                            if (res.code === 200) {
+                                table.exportFile(titles,res.data,'xls');
+                            } else if (res.code === 403) {
+                                top.location.href = baseUrl+"/";
+                            } else {
+                                layer.msg(res.msg, {icon: 2})
+                            }
+                        }
+                    });
+                });
+                break;
+        }
+    });
+
+    // 鐩戝惉琛屽伐鍏蜂簨浠�
+    table.on('tool(orderDetl)', function(obj){
+        var data = obj.data;
+        switch (obj.event) {
+            case 'edit':
+                showEditModel(data);
+                break;
+            case "del":
+                del([data.id]);
+                break;
+        }
+    });
+
+    /* 寮圭獥 - 鏂板銆佷慨鏀� */
+    function showEditModel(mData) {
+        admin.open({
+            type: 1,
+            area: '600px',
+            title: (mData ? '淇敼' : '娣诲姞') + '',
+            content: $('#editDialog').html(),
+            success: function (layero, dIndex) {
+                form.val('detail', mData);
+                layDateRender(mData);
+                form.on('submit(editSubmit)', function (data) {
+                    var loadIndex = layer.load(2);
+                    $.ajax({
+                        url: baseUrl+"/orderDetl/"+(mData?'update':'add')+"/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: data.field,
+                        method: 'POST',
+                        success: function (res) {
+                            layer.close(loadIndex);
+                            if (res.code === 200){
+                                layer.close(dIndex);
+                                layer.msg(res.msg, {icon: 1});
+                                tableReload();
+                            } else if (res.code === 403){
+                                top.location.href = baseUrl+"/";
+                            }else {
+                                layer.msg(res.msg, {icon: 2});
+                            }
+                        }
+                    })
+                    return false;
+                });
+                $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                layui.form.render('select');
+            }
+        });
+    }
+
+    /* 鍒犻櫎 */
+    function del(ids) {
+        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
+            skin: 'layui-layer-admin',
+            shade: .1
+        }, function (i) {
+            layer.close(i);
+            var loadIndex = layer.load(2);
+            $.ajax({
+                url: baseUrl+"/orderDetl/delete/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {ids: ids},
+                method: 'POST',
+                success: function (res) {
+                    layer.close(loadIndex);
+                    if (res.code === 200){
+                        layer.msg(res.msg, {icon: 1});
+                        tableReload();
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    } else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+        });
+    }
+
+    // 鎼滅储
+    form.on('submit(search)', function (data) {
+        pageCurr = 1;
+        tableReload(true);
+    });
+
+    // 閲嶇疆
+    form.on('submit(reset)', function (data) {
+        pageCurr = 1;
+        clearFormVal($('#search-box'));
+        tableReload(true);
+    });
+
+    // 鏃堕棿閫夋嫨鍣�
+    function layDateRender(data) {
+        setTimeout(function () {
+            layDate.render({
+                elem: '.layui-laydate-range'
+                ,type: 'datetime'
+                ,range: true
+            });
+            layDate.render({
+                elem: '#createTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['createTime$']:null
+            });
+            layDate.render({
+                elem: '#updateTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['updateTime$']:null
+            });
+
+        }, 100);
+    }
+    layDateRender();
+
+    window.loadOrderSel = function () {
+        return xmSelect.render({
+            el: '#orderXmlSel',
+            autoRow: true,
+            filterable: true,
+            remoteSearch: true,
+            radio: true,
+            remoteMethod: function (val, cb, show) {
+                $.ajax({
+                    url: baseUrl + "/order/all/get/kv",
+                    headers: {'token': localStorage.getItem('token')},
+                    data: {
+                        condition: val
+                    },
+                    method: 'POST',
+                    success: function (res) {
+                        if (res.code === 200) {
+                            cb(res.data)
+                        } else {
+                            cb([]);
+                            layer.msg(res.msg, {icon: 2});
+                        }
+                    }
+                });
+            }
+        });
+    }
+
+    window.loadUserSel = function () {
+        return xmSelect.render({
+            el: '#userXmlSel',
+            autoRow: true,
+            filterable: true,
+            remoteSearch: true,
+            radio: true,
+            remoteMethod: function (val, cb, show) {
+                $.ajax({
+                    url: baseUrl + "/user/all/get/kv",
+                    headers: {'token': localStorage.getItem('token')},
+                    data: {
+                        condition: val
+                    },
+                    method: 'POST',
+                    success: function (res) {
+                        if (res.code === 200) {
+                            cb(res.data)
+                        } else {
+                            cb([]);
+                            layer.msg(res.msg, {icon: 2});
+                        }
+                    }
+                });
+            }
+        });
+    }
+
+    window.loadUserSel = function () {
+        return xmSelect.render({
+            el: '#userXmlSel',
+            autoRow: true,
+            filterable: true,
+            remoteSearch: true,
+            radio: true,
+            remoteMethod: function (val, cb, show) {
+                $.ajax({
+                    url: baseUrl + "/user/all/get/kv",
+                    headers: {'token': localStorage.getItem('token')},
+                    data: {
+                        condition: val
+                    },
+                    method: 'POST',
+                    success: function (res) {
+                        if (res.code === 200) {
+                            cb(res.data)
+                        } else {
+                            cb([]);
+                            layer.msg(res.msg, {icon: 2});
+                        }
+                    }
+                });
+            }
+        });
+    }
+
+    window.loadHostSel = function () {
+        return xmSelect.render({
+            el: '#hostXmlSel',
+            autoRow: true,
+            filterable: true,
+            remoteSearch: true,
+            radio: true,
+            remoteMethod: function (val, cb, show) {
+                $.ajax({
+                    url: baseUrl + "/host/all/get/kv",
+                    headers: {'token': localStorage.getItem('token')},
+                    data: {
+                        condition: val
+                    },
+                    method: 'POST',
+                    success: function (res) {
+                        if (res.code === 200) {
+                            cb(res.data)
+                        } else {
+                            cb([]);
+                            layer.msg(res.msg, {icon: 2});
+                        }
+                    }
+                });
+            }
+        });
+    }
+
+
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(document).on('click','#data-detail-close', function () {
+    parent.layer.closeAll();
+});
+
+function tableReload(search) {
+    if (pageCount === 0 || search) {
+        let searchData = {};
+        $.each($('#search-box [name]').serializeArray(), function() {
+            searchData[this.name] = this.value;
+        });
+        tableIns.reload({
+            where: searchData,
+            page: {curr: pageCurr}
+        });
+    } else {
+        $(".layui-laypage-btn")[0].click();
+    }
+}
diff --git a/zy-asrs-wms/src/main/webapp/static/js/orderSettle/orderSettle.js b/zy-asrs-wms/src/main/webapp/static/js/orderSettle/orderSettle.js
new file mode 100644
index 0000000..14763fb
--- /dev/null
+++ b/zy-asrs-wms/src/main/webapp/static/js/orderSettle/orderSettle.js
@@ -0,0 +1,256 @@
+var pageCurr;
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"
+}).use(['table','laydate', 'form', 'admin'], function(){
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+    var admin = layui.admin;
+
+    // 鏁版嵁娓叉煋
+    tableIns = table.render({
+        elem: '#orderSettle',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/orderSettle/page/auth',
+        page: true,
+        limit: 15,
+        limits: [15, 30, 50, 100, 200, 500],
+        toolbar: '#toolbar',
+        cellMinWidth: 50,
+        height: 'full-120',
+        cols: [[
+            {type: 'checkbox'}
+            ,{field: 'orderSettle', align: 'center',title: '璁㈠崟鐘舵��'}
+            ,{field: 'settleName', align: 'center',title: '鐘舵�佹弿杩�'}
+            // ,{field: 'createBy$', align: 'center',title: '娣诲姞浜哄憳'}
+            // ,{field: 'createTime$', align: 'center',title: '娣诲姞鏃堕棿'}
+            ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳'}
+            ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
+            ,{field: 'memo', align: 'center',title: '澶囨敞'}
+
+            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
+        ]],
+        request: {
+            pageName: 'curr',
+            pageSize: 'limit'
+        },
+        parseData: function (res) {
+            return {
+                'code': res.code,
+                'msg': res.msg,
+                'count': res.data.total,
+                'data': res.data.records
+            }
+        },
+        response: {
+            statusCode: 200
+        },
+        done: function(res, curr, count) {
+            if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            }
+            pageCurr=curr;
+            limit();
+        }
+    });
+
+    // 鐩戝惉鎺掑簭浜嬩欢
+    table.on('sort(orderSettle)', function (obj) {
+        var searchData = {};
+        $.each($('#search-box [name]').serializeArray(), function() {
+            searchData[this.name] = this.value;
+        });
+        searchData['orderByField'] = obj.field;
+        searchData['orderByType'] = obj.type;
+        tableIns.reload({
+            where: searchData,
+            page: {curr: 1}
+        });
+    });
+
+    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+    table.on('toolbar(orderSettle)', function (obj) {
+        var checkStatus = table.checkStatus(obj.config.id).data;
+        switch(obj.event) {
+            case 'addData':
+                showEditModel();
+                break;
+            case 'deleteData':
+                if (checkStatus.length === 0) {
+                    layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
+                    return;
+                }
+                del(checkStatus.map(function (d) {
+                    return d.orderSettle;
+                }));
+                break;
+            case 'exportData':
+                admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
+                    var titles=[];
+                    var fields=[];
+                    obj.config.cols[0].map(function (col) {
+                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
+                            titles.push(col.title);
+                            fields.push(col.field);
+                        }
+                    });
+                    var exportData = {};
+                    $.each($('#search-box [name]').serializeArray(), function() {
+                        exportData[this.name] = this.value;
+                    });
+                    var param = {
+                        'orderSettle': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/orderSettle/export/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: JSON.stringify(param),
+                        dataType:'json',
+                        contentType:'application/json;charset=UTF-8',
+                        method: 'POST',
+                        success: function (res) {
+                            layer.closeAll();
+                            if (res.code === 200) {
+                                table.exportFile(titles,res.data,'xls');
+                            } else if (res.code === 403) {
+                                top.location.href = baseUrl+"/";
+                            } else {
+                                layer.msg(res.msg, {icon: 2})
+                            }
+                        }
+                    });
+                });
+                break;
+        }
+    });
+
+    // 鐩戝惉琛屽伐鍏蜂簨浠�
+    table.on('tool(orderSettle)', function(obj){
+        var data = obj.data;
+        switch (obj.event) {
+            case 'edit':
+                showEditModel(data);
+                break;
+            case "del":
+                del([data.orderSettle]);
+                break;
+        }
+    });
+
+    /* 寮圭獥 - 鏂板銆佷慨鏀� */
+    function showEditModel(mData) {
+        admin.open({
+            type: 1,
+            area: '600px',
+            title: (mData ? '淇敼' : '娣诲姞') + '璁㈠崟鐘舵��',
+            content: $('#editDialog').html(),
+            success: function (layero, dIndex) {
+                layDateRender(mData);
+                form.val('detail', mData);
+                form.on('submit(editSubmit)', function (data) {
+                    var loadIndex = layer.load(2);
+                    $.ajax({
+                        url: baseUrl+"/orderSettle/"+(mData?'update':'add')+"/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: data.field,
+                        method: 'POST',
+                        success: function (res) {
+                            layer.close(loadIndex);
+                            if (res.code === 200){
+                                layer.close(dIndex);
+                                layer.msg(res.msg, {icon: 1});
+                                tableReload();
+                            } else if (res.code === 403){
+                                top.location.href = baseUrl+"/";
+                            }else {
+                                layer.msg(res.msg, {icon: 2});
+                            }
+                        }
+                    })
+                    return false;
+                });
+                $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                layui.form.render('select');
+            }
+        });
+    }
+
+    /* 鍒犻櫎 */
+    function del(ids) {
+        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
+            skin: 'layui-layer-admin',
+            shade: .1
+        }, function (i) {
+            layer.close(i);
+            var loadIndex = layer.load(2);
+            $.ajax({
+                url: baseUrl+"/orderSettle/delete/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {ids: ids},
+                method: 'POST',
+                success: function (res) {
+                    layer.close(loadIndex);
+                    if (res.code === 200){
+                        layer.msg(res.msg, {icon: 1});
+                        tableReload();
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    } else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+        });
+    }
+
+    // 鎼滅储
+    form.on('submit(search)', function (data) {
+        pageCurr = 1;
+        tableReload(false);
+    });
+
+    // 閲嶇疆
+    form.on('submit(reset)', function (data) {
+        pageCurr = 1;
+        clearFormVal($('#search-box'));
+        tableReload(false);
+    });
+
+    // 鏃堕棿閫夋嫨鍣�
+    function layDateRender(data) {
+        setTimeout(function () {
+            layDate.render({
+                elem: '#createTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['createTime\\$']:null
+            });
+            layDate.render({
+                elem: '#updateTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['updateTime\\$']:null
+            });
+
+        }, 300);
+    }
+    layDateRender();
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(document).on('click','#data-detail-close', function () {
+    parent.layer.closeAll();
+});
+
+function tableReload(child) {
+    var searchData = {};
+    $.each($('#search-box [name]').serializeArray(), function() {
+        searchData[this.name] = this.value;
+    });
+    tableIns.reload({
+        where: searchData,
+        page: {curr: pageCurr}
+    });
+}
diff --git a/zy-asrs-wms/src/main/webapp/static/js/orderTable.js b/zy-asrs-wms/src/main/webapp/static/js/orderTable.js
new file mode 100644
index 0000000..8d65b03
--- /dev/null
+++ b/zy-asrs-wms/src/main/webapp/static/js/orderTable.js
@@ -0,0 +1,173 @@
+var insTb;
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"  // 閰嶇疆妯″潡鎵�鍦ㄧ殑鐩綍
+}).use(['table','laydate', 'form',  'admin', 'tableX'], function() {
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+    var admin = layui.admin;
+    var tableX = layui.tableX;
+
+    /****************************************** 宸﹁竟琛� *************************************************/
+
+    insTb = table.render({
+        elem: '#originTable',
+        url: baseUrl + '/order/nav/list/auth',
+        height: 'full-120',
+        headers: {token: localStorage.getItem('token')},
+        request: {
+            pageName: 'curr',
+            pageSize: 'limit'
+        },
+        page: false,
+        parseData: function (res) {
+            return {
+                'code': res.code,
+                'msg': res.msg,
+                'data': res.data
+            }
+        },
+        response: {
+            statusCode: 200
+        },
+        // toolbar: ['<p>',
+        //     '<button lay-event="add" class="layui-btn layui-btn-sm icon-btn"><i class="layui-icon">&#xe654;</i>娣诲姞</button>&nbsp;',
+        //     '<button lay-event="edit" class="layui-btn layui-btn-sm layui-btn-warm icon-btn"><i class="layui-icon">&#xe642;</i>淇敼</button>&nbsp;',
+        //     '<button lay-event="del" class="layui-btn layui-btn-sm layui-btn-danger icon-btn"><i class="layui-icon">&#xe640;</i>鍒犻櫎</button>',
+        //     '</p>'].join(''),
+        defaultToolbar: [],
+        cols: [[
+            // {type: 'numbers', title: '#'},
+            {field: 'orderTime', title: '鏃ユ湡'},
+            {field: 'orderNo', title: '鍗曟嵁缂栧彿', align: 'center'}
+        ]],
+        done: function (res, curr, count) {
+            $('#dictTable+.layui-table-view .layui-table-body tbody>tr:first').trigger('click');
+
+            // 缁戝畾榧犳爣鍙抽敭
+            tableX.bindCtxMenu('originTable', function (d) {
+                return [
+                    {
+                        icon: 'layui-icon layui-icon-ok',
+                        name: '涓�閿嚭搴�',
+                        click: function (d) {
+                            autoOut(d.id);
+                        }
+                    }
+                ]
+
+            })
+
+        }
+    });
+
+    /* 琛ㄦ牸鎼滅储 */
+    form.on('submit(originTableSearch)', function (data) {
+        insTb.reload({where: data.field});
+        return false;
+    });
+
+    /* 琛ㄦ牸閲嶇疆 */
+    form.on('submit(originTbReset)', function (data) {
+        insTb.reload({where: null});
+        insTb2.reload({where: null, page: {curr: 1}});
+        return false;
+    });
+
+    /* 琛ㄦ牸澶村伐鍏锋爮鐐瑰嚮浜嬩欢 */
+    table.on('toolbar(originTable)', function (obj) {
+        if (obj.event === 'add') { // 娣诲姞
+            showEdit();
+        } else if (obj.event === 'edit') { // 淇敼
+            if (selObj == null) {
+                return;
+            }
+            showEdit(selObj.data);
+        } else if (obj.event === 'del') { // 鍒犻櫎
+            if (selObj == null) {
+                return;
+            }
+            doDel(selObj);
+        }
+    });
+
+
+    /* 鐩戝惉琛屽崟鍑讳簨浠� */
+    var selObj;
+    table.on('row(originTable)', function (obj) {
+
+        selObj = obj;
+        obj.tr.addClass('layui-table-click').siblings().removeClass('layui-table-click');
+        insTb2.reload({where: {order_id: obj.data.id}, page: {curr: 1}});
+    });
+
+    /* 鏄剧ず琛ㄥ崟寮圭獥 */
+    function showEdit(mData) {
+        admin.open({
+            type: 1,
+            title: (mData ? '淇敼' : '娣诲姞') + '椤圭洰',
+            content: $('#hostEditDialog').html(),
+            success: function (layero, dIndex) {
+                // 鍥炴樉琛ㄥ崟鏁版嵁
+                form.val('hostEditForm', mData);
+                // 琛ㄥ崟鎻愪氦浜嬩欢
+                form.on('submit(hostEditSubmit)', function (data) {
+                    var loadIndex = layer.load(2);
+                    $.ajax({
+                        url: baseUrl+"/host/"+(mData?'update':'add')+"/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: data.field,
+                        method: 'POST',
+                        success: function (res) {
+                            layer.close(loadIndex);
+                            selObj = null;
+                            if (res.code === 200){
+                                layer.close(dIndex);
+                                layer.msg(res.msg, {icon: 1});
+                                insTb.reload();
+                            } else if (res.code === 403){
+                                top.location.href = baseUrl+"/";
+                            } else {
+                                layer.msg(res.msg, {icon: 2});
+                            }
+                        }
+                    })
+                    return false;
+                });
+            }
+        });
+    }
+
+    /* 鍒犻櫎 */
+    function doDel(obj) {
+        layer.confirm('纭畾瑕佸垹闄ゆ鍗曟嵁绫诲瀷鍚楋紵', {
+            skin: 'layui-layer-admin',
+            shade: .1
+        }, function (i) {
+            layer.close(i);
+            var loadIndex = layer.load(2);
+            $.ajax({
+                url: baseUrl+"/host/delete/one/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {param: JSON.stringify(obj.data)},
+                method: 'POST',
+                success: function (res) {
+                    selObj = null;
+                    layer.close(loadIndex);
+                    if (res.code === 200){
+                        layer.closeAll();
+                        insTb.reload();
+                        $('#dictTable+.layui-table-view .layui-table-body tbody>tr:first').trigger('click');
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    } else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+        });
+    }
+
+})
diff --git a/zy-asrs-wms/src/main/webapp/static/js/staDesc/staDesc.js b/zy-asrs-wms/src/main/webapp/static/js/staDesc/staDesc.js
new file mode 100644
index 0000000..74c9006
--- /dev/null
+++ b/zy-asrs-wms/src/main/webapp/static/js/staDesc/staDesc.js
@@ -0,0 +1,443 @@
+var pageCurr;
+var pageCount = 0;
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"
+}).use(['table','laydate', 'form', 'admin', 'xmSelect'], function(){
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+    var admin = layui.admin;
+    var xmSelect = layui.xmSelect;
+
+    // 鏁版嵁娓叉煋
+    tableIns = table.render({
+        elem: '#staDesc',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/staDesc/page/auth',
+        page: true,
+        limit: 15,
+        limits: [15, 30, 50, 100, 200, 500],
+        toolbar: '#toolbar',
+        cellMinWidth: 50,
+        height: 'full-120',
+        cols: [[
+            {type: 'checkbox'}
+            ,{field: 'typeId', align: 'center',title: '璺緞ID'}
+            ,{field: 'typeNo$', align: 'center',title: '鍏ュ嚭搴撶被鍨�'}
+            ,{field: 'typeDesc', align: 'center',title: '浣滀笟绫诲瀷'}
+            ,{field: 'stnNo$', align: 'center',title: '浣滀笟绔欑偣'}
+            ,{field: 'stnDesc', align: 'center',title: '绔欑偣鍚嶇О'}
+            ,{field: 'crnNo', align: 'center',title: '鍫嗗灈鏈哄彿'}
+            ,{field: 'crnStn$', align: 'center',title: '鍫嗗灈鏈虹珯鐐�'}
+            ,{field: 'memo', align: 'center',title: '澶囨敞'}
+            ,{field: 'modiUser$', align: 'center',title: '淇敼浜哄憳'}
+            ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿'}
+            ,{field: 'appeUser$', align: 'center',title: '鍒涘缓鑰�'}
+            ,{field: 'appeTime$', align: 'center',title: '娣诲姞鏃堕棿'}
+            ,{field: 'hostId$', align: 'center',title: '鎺堟潈鍟嗘埛'}
+
+            ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
+        ]],
+        request: {
+            pageName: 'curr',
+            pageSize: 'limit'
+        },
+        parseData: function (res) {
+            return {
+                'code': res.code,
+                'msg': res.msg,
+                'count': res.data.total,
+                'data': res.data.records
+            }
+        },
+        response: {
+            statusCode: 200
+        },
+        done: function(res, curr, count) {
+            if (res.code === 403) {
+                top.location.href = baseUrl+"/";
+            }
+            pageCurr=curr;pageCount=count;
+            limit();
+        }
+    });
+
+    // 鐩戝惉鎺掑簭浜嬩欢
+    table.on('sort(staDesc)', function (obj) {
+        var searchData = {};
+        $.each($('#search-box [name]').serializeArray(), function() {
+            searchData[this.name] = this.value;
+        });
+        searchData['orderByField'] = obj.field;
+        searchData['orderByType'] = obj.type;
+        tableIns.reload({
+            where: searchData,
+            page: {curr: 1}
+        });
+    });
+
+    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+    table.on('toolbar(staDesc)', function (obj) {
+        var checkStatus = table.checkStatus(obj.config.id).data;
+        switch(obj.event) {
+            case 'addData':
+                showEditModel();
+                break;
+            case 'deleteData':
+               if (checkStatus.length === 0) {
+                   layer.msg('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁', {icon: 2});
+                   return;
+               }
+               del(checkStatus.map(function (d) {
+                   return d.typeId;
+               }));
+               break;
+            case 'exportData':
+                admin.confirm('纭畾瀵煎嚭Excel鍚�', {shadeClose: true}, function(){
+                    var titles=[];
+                    var fields=[];
+                    obj.config.cols[0].map(function (col) {
+                        if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
+                            titles.push(col.title);
+                            fields.push(col.field);
+                        }
+                    });
+                    var exportData = {};
+                    $.each($('#search-box [name]').serializeArray(), function() {
+                        exportData[this.name] = this.value;
+                    });
+                    var param = {
+                        'staDesc': exportData,
+                        'fields': fields
+                    };
+                    $.ajax({
+                        url: baseUrl+"/staDesc/export/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: JSON.stringify(param),
+                        dataType:'json',
+                        contentType:'application/json;charset=UTF-8',
+                        method: 'POST',
+                        success: function (res) {
+                            layer.closeAll();
+                            if (res.code === 200) {
+                                table.exportFile(titles,res.data,'xls');
+                            } else if (res.code === 403) {
+                                top.location.href = baseUrl+"/";
+                            } else {
+                                layer.msg(res.msg, {icon: 2})
+                            }
+                        }
+                    });
+                });
+                break;
+        }
+    });
+
+    // 鐩戝惉琛屽伐鍏蜂簨浠�
+    table.on('tool(staDesc)', function(obj){
+        var data = obj.data;
+        switch (obj.event) {
+            case 'edit':
+                showEditModel(data);
+                break;
+            case "del":
+                del([data.typeId]);
+                break;
+        }
+    });
+
+    /* 寮圭獥 - 鏂板銆佷慨鏀� */
+    function showEditModel(mData) {
+        admin.open({
+            type: 1,
+            area: '600px',
+            title: (mData ? '淇敼' : '娣诲姞') + '',
+            content: $('#editDialog').html(),
+            success: function (layero, dIndex) {
+                form.val('detail', mData);
+                layDateRender(mData);
+                form.on('submit(editSubmit)', function (data) {
+                    var loadIndex = layer.load(2);
+                    $.ajax({
+                        url: baseUrl+"/staDesc/"+(mData?'update':'add')+"/auth",
+                        headers: {'token': localStorage.getItem('token')},
+                        data: data.field,
+                        method: 'POST',
+                        success: function (res) {
+                            layer.close(loadIndex);
+                            if (res.code === 200){
+                                layer.close(dIndex);
+                                layer.msg(res.msg, {icon: 1});
+                                tableReload();
+                            } else if (res.code === 403){
+                                top.location.href = baseUrl+"/";
+                            }else {
+                                layer.msg(res.msg, {icon: 2});
+                            }
+                        }
+                    })
+                    return false;
+                });
+                $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                layui.form.render('select');
+            }
+        });
+    }
+
+    /* 鍒犻櫎 */
+    function del(ids) {
+        layer.confirm('纭畾瑕佸垹闄ら�変腑鏁版嵁鍚楋紵', {
+            skin: 'layui-layer-admin',
+            shade: .1
+        }, function (i) {
+            layer.close(i);
+            var loadIndex = layer.load(2);
+            $.ajax({
+                url: baseUrl+"/staDesc/delete/auth",
+                headers: {'token': localStorage.getItem('token')},
+                data: {ids: ids},
+                method: 'POST',
+                success: function (res) {
+                    layer.close(loadIndex);
+                    if (res.code === 200){
+                        layer.msg(res.msg, {icon: 1});
+                        tableReload();
+                    } else if (res.code === 403){
+                        top.location.href = baseUrl+"/";
+                    } else {
+                        layer.msg(res.msg, {icon: 2});
+                    }
+                }
+            })
+        });
+    }
+
+    // 鎼滅储
+    form.on('submit(search)', function (data) {
+        pageCurr = 1;
+        tableReload(true);
+    });
+
+    // 閲嶇疆
+    form.on('submit(reset)', function (data) {
+        pageCurr = 1;
+        clearFormVal($('#search-box'));
+        tableReload(true);
+    });
+
+    // 鏃堕棿閫夋嫨鍣�
+    function layDateRender(data) {
+        setTimeout(function () {
+            layDate.render({
+                elem: '.layui-laydate-range'
+                ,type: 'datetime'
+                ,range: true
+            });
+            layDate.render({
+                elem: '#modiTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['modiTime$']:null
+            });
+            layDate.render({
+                elem: '#appeTime\\$',
+                type: 'datetime',
+                value: data!==undefined?data['appeTime$']:null
+            });
+
+        }, 100);
+    }
+    layDateRender();
+
+    window.loadBasWrkIotypeSel = function () {
+        return xmSelect.render({
+            el: '#basWrkIotypeXmlSel',
+            autoRow: true,
+            filterable: true,
+            remoteSearch: true,
+            radio: true,
+            remoteMethod: function (val, cb, show) {
+                $.ajax({
+                    url: baseUrl + "/basWrkIotype/all/get/kv",
+                    headers: {'token': localStorage.getItem('token')},
+                    data: {
+                        condition: val
+                    },
+                    method: 'POST',
+                    success: function (res) {
+                        if (res.code === 200) {
+                            cb(res.data)
+                        } else {
+                            cb([]);
+                            layer.msg(res.msg, {icon: 2});
+                        }
+                    }
+                });
+            }
+        });
+    }
+
+    window.loadBasDevpSel = function () {
+        return xmSelect.render({
+            el: '#basDevpXmlSel',
+            autoRow: true,
+            filterable: true,
+            remoteSearch: true,
+            radio: true,
+            remoteMethod: function (val, cb, show) {
+                $.ajax({
+                    url: baseUrl + "/basDevp/all/get/kv",
+                    headers: {'token': localStorage.getItem('token')},
+                    data: {
+                        condition: val
+                    },
+                    method: 'POST',
+                    success: function (res) {
+                        if (res.code === 200) {
+                            cb(res.data)
+                        } else {
+                            cb([]);
+                            layer.msg(res.msg, {icon: 2});
+                        }
+                    }
+                });
+            }
+        });
+    }
+
+    window.loadBasDevpSel = function () {
+        return xmSelect.render({
+            el: '#basDevpXmlSel',
+            autoRow: true,
+            filterable: true,
+            remoteSearch: true,
+            radio: true,
+            remoteMethod: function (val, cb, show) {
+                $.ajax({
+                    url: baseUrl + "/basDevp/all/get/kv",
+                    headers: {'token': localStorage.getItem('token')},
+                    data: {
+                        condition: val
+                    },
+                    method: 'POST',
+                    success: function (res) {
+                        if (res.code === 200) {
+                            cb(res.data)
+                        } else {
+                            cb([]);
+                            layer.msg(res.msg, {icon: 2});
+                        }
+                    }
+                });
+            }
+        });
+    }
+
+    window.loadUserSel = function () {
+        return xmSelect.render({
+            el: '#userXmlSel',
+            autoRow: true,
+            filterable: true,
+            remoteSearch: true,
+            radio: true,
+            remoteMethod: function (val, cb, show) {
+                $.ajax({
+                    url: baseUrl + "/user/all/get/kv",
+                    headers: {'token': localStorage.getItem('token')},
+                    data: {
+                        condition: val
+                    },
+                    method: 'POST',
+                    success: function (res) {
+                        if (res.code === 200) {
+                            cb(res.data)
+                        } else {
+                            cb([]);
+                            layer.msg(res.msg, {icon: 2});
+                        }
+                    }
+                });
+            }
+        });
+    }
+
+    window.loadUserSel = function () {
+        return xmSelect.render({
+            el: '#userXmlSel',
+            autoRow: true,
+            filterable: true,
+            remoteSearch: true,
+            radio: true,
+            remoteMethod: function (val, cb, show) {
+                $.ajax({
+                    url: baseUrl + "/user/all/get/kv",
+                    headers: {'token': localStorage.getItem('token')},
+                    data: {
+                        condition: val
+                    },
+                    method: 'POST',
+                    success: function (res) {
+                        if (res.code === 200) {
+                            cb(res.data)
+                        } else {
+                            cb([]);
+                            layer.msg(res.msg, {icon: 2});
+                        }
+                    }
+                });
+            }
+        });
+    }
+
+    window.loadHostSel = function () {
+        return xmSelect.render({
+            el: '#hostXmlSel',
+            autoRow: true,
+            filterable: true,
+            remoteSearch: true,
+            radio: true,
+            remoteMethod: function (val, cb, show) {
+                $.ajax({
+                    url: baseUrl + "/host/all/get/kv",
+                    headers: {'token': localStorage.getItem('token')},
+                    data: {
+                        condition: val
+                    },
+                    method: 'POST',
+                    success: function (res) {
+                        if (res.code === 200) {
+                            cb(res.data)
+                        } else {
+                            cb([]);
+                            layer.msg(res.msg, {icon: 2});
+                        }
+                    }
+                });
+            }
+        });
+    }
+
+
+
+});
+
+// 鍏抽棴鍔ㄤ綔
+$(document).on('click','#data-detail-close', function () {
+    parent.layer.closeAll();
+});
+
+function tableReload(search) {
+    if (pageCount === 0 || search) {
+        let searchData = {};
+        $.each($('#search-box [name]').serializeArray(), function() {
+            searchData[this.name] = this.value;
+        });
+        tableIns.reload({
+            where: searchData,
+            page: {curr: pageCurr}
+        });
+    } else {
+        $(".layui-laypage-btn")[0].click();
+    }
+}
diff --git a/zy-asrs-wms/src/main/webapp/views/cstmr/cstmr.html b/zy-asrs-wms/src/main/webapp/views/cstmr/cstmr.html
new file mode 100644
index 0000000..9f482a9
--- /dev/null
+++ b/zy-asrs-wms/src/main/webapp/views/cstmr/cstmr.html
@@ -0,0 +1,175 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
+    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+</head>
+<body>
+
+<div class="layui-fluid">
+    <div class="layui-card">
+        <div class="layui-card-body">
+            <div class="layui-form toolbar" id="search-box">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline" style="width: 300px">
+                        <div class="layui-input-inline">
+                            <input class="layui-input layui-laydate-range" name="timeRange" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
+                        </div>
+                    </div>
+                    <div class="layui-inline">&emsp;
+                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
+                            <i class="layui-icon">&#xe615;</i>鎼滅储
+                        </button>
+                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
+                            <i class="layui-icon">&#xe666;</i>閲嶇疆
+                        </button>
+                    </div>
+                </div>
+            </div>
+            <table class="layui-hide" id="cstmr" lay-filter="cstmr"></table>
+        </div>
+    </div>
+</div>
+
+<script type="text/html" id="toolbar">
+    <div class="layui-btn-container">
+        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
+        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
+        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
+    </div>
+</script>
+
+<script type="text/html" id="operate">
+    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
+    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
+</script>
+
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cstmr/cstmr.js" charset="utf-8"></script>
+</body>
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="editDialog">
+    <div id="detail" lay-filter="detail" class="layui-form admin-form model-form">
+        <input name="id" type="hidden">
+        <div class="layui-row">
+            <div class="layui-col-md12">
+                <div class="layui-form-item">
+                    <label class="layui-form-label layui-form-required">瀹㈡埛缂栧彿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="uuid" placeholder="璇疯緭鍏ュ鎴风紪鍙�" lay-vertype="tips" lay-verify="required">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">瀹㈡埛鍚嶇О: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="name" placeholder="璇疯緭鍏ュ鎴峰悕绉�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鑱旂郴浜�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="contacts" placeholder="璇疯緭鍏ヨ仈绯讳汉">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鑱旂郴鐢佃瘽: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="tel" placeholder="璇疯緭鍏ヨ仈绯荤數璇�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鑱旂郴鍦板潃: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="addr" placeholder="璇疯緭鍏ヨ仈绯诲湴鍧�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鐘舵��: </label>
+                    <div class="layui-input-block">
+                        <select name="status">
+                            <option value="">璇烽�夋嫨鐘舵��</option>
+                            <option value="1">姝e父</option>
+                            <option value="2">绂佺敤</option>
+                        </select>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">娣诲姞浜哄憳: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="createBy" placeholder="璇疯緭鍏ユ坊鍔犱汉鍛�" style="display: none">
+                        <input id="createBy$" name="createBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ユ坊鍔犱汉鍛�" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="userQueryBycreateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="userQueryBycreateBySelect" 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 class="layui-input" name="createTime" id="createTime$" placeholder="璇疯緭鍏ユ坊鍔犳椂闂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">淇敼浜哄憳: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="updateBy" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" style="display: none">
+                        <input id="updateBy$" name="updateBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="userQueryByupdateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="userQueryByupdateBySelect" 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 class="layui-input" name="updateTime" id="updateTime$" placeholder="璇疯緭鍏ヤ慨鏀规椂闂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">澶囨敞: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="memo" placeholder="璇疯緭鍏ュ娉�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鎺堟潈鍟嗘埛: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="hostId" placeholder="璇疯緭鍏ユ巿鏉冨晢鎴�" style="display: none">
+                        <input id="hostId$" name="hostId$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ユ巿鏉冨晢鎴�" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="hostQueryByhostId" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="hostQueryByhostIdSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                            </select>
+                        </div>
+                    </div>
+                </div>
+
+             </div>
+        </div>
+        <hr class="layui-bg-gray">
+        <div class="layui-form-item text-right">
+            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
+            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+        </div>
+    </div>
+</script>
+</html>
+
diff --git a/zy-asrs-wms/src/main/webapp/views/item/item.html b/zy-asrs-wms/src/main/webapp/views/item/item.html
new file mode 100644
index 0000000..2bf0b18
--- /dev/null
+++ b/zy-asrs-wms/src/main/webapp/views/item/item.html
@@ -0,0 +1,199 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
+    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+</head>
+<body>
+
+<div class="layui-fluid">
+    <div class="layui-card">
+        <div class="layui-card-body">
+            <div class="layui-form toolbar" id="search-box">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline" style="width: 300px">
+                        <div class="layui-input-inline">
+                            <input class="layui-input layui-laydate-range" name="timeRange" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
+                        </div>
+                    </div>
+                    <div class="layui-inline">&emsp;
+                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
+                            <i class="layui-icon">&#xe615;</i>鎼滅储
+                        </button>
+                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
+                            <i class="layui-icon">&#xe666;</i>閲嶇疆
+                        </button>
+                    </div>
+                </div>
+            </div>
+            <table class="layui-hide" id="item" lay-filter="item"></table>
+        </div>
+    </div>
+</div>
+
+<script type="text/html" id="toolbar">
+    <div class="layui-btn-container">
+        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
+        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
+        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
+    </div>
+</script>
+
+<script type="text/html" id="operate">
+    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
+    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
+</script>
+
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/item/item.js" charset="utf-8"></script>
+</body>
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="editDialog">
+    <div id="detail" lay-filter="detail" class="layui-form admin-form model-form">
+        <input name="id" type="hidden">
+        <div class="layui-row">
+            <div class="layui-col-md12">
+                <div class="layui-form-item">
+                    <label class="layui-form-label layui-form-required">椤圭洰缂栧彿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="uuid" placeholder="璇疯緭鍏ラ」鐩紪鍙�" lay-vertype="tips" lay-verify="required">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">椤圭洰鍚嶇О: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="name" placeholder="璇疯緭鍏ラ」鐩悕绉�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍐呴儴缂栧彿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="inUuid" placeholder="璇疯緭鍏ュ唴閮ㄧ紪鍙�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">瀹㈡埛缂栧彿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="cstmrUuid" placeholder="璇疯緭鍏ュ鎴风紪鍙�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">瀹㈡埛: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="cstmr" placeholder="璇疯緭鍏ュ鎴�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">椤圭洰鎴愬憳: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="member" placeholder="璇疯緭鍏ラ」鐩垚鍛�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">椤圭洰缁忕悊: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="leader" placeholder="璇疯緭鍏ラ」鐩粡鐞�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">寮�濮嬫椂闂�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="startTime" id="startTime$" placeholder="璇疯緭鍏ュ紑濮嬫椂闂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">缁撴潫鏃堕棿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="endTime" id="endTime$" placeholder="璇疯緭鍏ョ粨鏉熸椂闂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鐘舵��: </label>
+                    <div class="layui-input-block">
+                        <select name="status">
+                            <option value="">璇烽�夋嫨鐘舵��</option>
+                            <option value="1">姝e父</option>
+                            <option value="0">绂佺敤</option>
+                        </select>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">娣诲姞浜哄憳: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="createBy" placeholder="璇疯緭鍏ユ坊鍔犱汉鍛�" style="display: none">
+                        <input id="createBy$" name="createBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ユ坊鍔犱汉鍛�" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="userQueryBycreateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="userQueryBycreateBySelect" 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 class="layui-input" name="createTime" id="createTime$" placeholder="璇疯緭鍏ユ坊鍔犳椂闂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">淇敼浜哄憳: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="updateBy" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" style="display: none">
+                        <input id="updateBy$" name="updateBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="userQueryByupdateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="userQueryByupdateBySelect" 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 class="layui-input" name="updateTime" id="updateTime$" placeholder="璇疯緭鍏ヤ慨鏀规椂闂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">澶囨敞: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="memo" placeholder="璇疯緭鍏ュ娉�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鎺堟潈鍟嗘埛: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="hostId" placeholder="璇疯緭鍏ユ巿鏉冨晢鎴�" style="display: none">
+                        <input id="hostId$" name="hostId$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ユ巿鏉冨晢鎴�" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="hostQueryByhostId" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="hostQueryByhostIdSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                            </select>
+                        </div>
+                    </div>
+                </div>
+
+             </div>
+        </div>
+        <hr class="layui-bg-gray">
+        <div class="layui-form-item text-right">
+            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
+            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+        </div>
+    </div>
+</script>
+</html>
+
diff --git a/zy-asrs-wms/src/main/webapp/views/order/order.html b/zy-asrs-wms/src/main/webapp/views/order/order.html
new file mode 100644
index 0000000..ac90e29
--- /dev/null
+++ b/zy-asrs-wms/src/main/webapp/views/order/order.html
@@ -0,0 +1,311 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
+    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+    <!--    <link rel="stylesheet" href="../../static/css/common.css" media="all">-->
+    <!--[if lt IE 9]>
+    <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
+    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+    <![endif]-->
+    <style>
+        .wrk-trace {
+            color: green;
+            cursor: pointer;
+            margin-left: 6px;
+            font-size: 18px;
+        }
+
+        .layui-timeline:first-child .layui-timeline-item {
+            margin-top: 30px;
+        }
+
+        .btn-add {
+            display: none;
+        }
+        .btn-edit {
+            display: none;
+        }
+        .btn-complete {
+            display: none;
+        }
+        .btn-delete {
+            display: none;
+        }
+    </style>
+</head>
+<body>
+
+<!-- 姝f枃寮�濮� -->
+<div class="layui-fluid">
+    <div class="layui-card">
+        <div class="layui-card-body">
+            <!-- 琛ㄦ牸椤堕儴宸ュ叿鏍� -->
+            <div class="layui-form toolbar">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <div class="layui-input-inline mr0">
+                            <input name="order_no" class="layui-input" type="text" placeholder="杈撳叆鍗曟嵁缂栧彿"/>
+                        </div>
+                    </div>
+                    <div class="layui-inline" style="width: 300px">
+                        <div class="layui-input-inline">
+                            <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <div class="layui-input-inline">
+                            <select name="doc_type" id="docType-query">
+                            </select>
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <div class="layui-input-inline">
+                            <select name="settle">
+                                <option value="">閫夋嫨鐘舵��</option>
+                                <option value="1">寰呭鐞�</option>
+                                <option value="2">浣滀笟涓�</option>
+                                <option value="4">宸插畬鎴�</option>
+                                <option value="6">涓婃姤瀹屾垚</option>
+                            </select>
+                        </div>
+                    </div>
+                    <div class="layui-inline">
+                        <button class="layui-btn icon-btn" lay-filter="tbSearch" lay-submit>
+                            <i class="layui-icon">&#xe615;</i>鎼滅储
+                        </button>
+                        <button id="orderAddBtn" class="layui-btn icon-btn btn-add"><i class="layui-icon">&#xe654;</i>娣诲姞
+                        </button>
+                    </div>
+                </div>
+            </div>
+            <table id="order" lay-filter="order"></table>
+        </div>
+    </div>
+    <div class="layui-card">
+        <div class="layui-card-body">
+            鍏ュ簱閫氱煡鍗曪細鐢盓RP鎻愪緵鍗曟嵁缂栧彿銆佺被鍨嬨�佸崟鎹椂闂村強鐗╂枡鏄庣粏锛岀敓鎴愬叆搴撲綔涓氬崟锛屼负缁存姢绯荤粺楂樺彲鐢紝鐢ㄦ埛鍙嚜琛屾坊鍔犲叆搴撻�氱煡鍗曟暟鎹紝瀹屾垚鐙珛鐨勫叆搴撲綔涓氥��
+            <span class="text-danger">鎵嬪姩娣诲姞鏃讹紝璇锋鏌ュ崟鎹紪鍙锋槸鍚﹀湪ERP绯荤粺涓凡瀛樺湪锛岄伩鍏嶅彂鐢熸暟鎹敊璇棶棰樸��</span>
+        </div>
+    </div>
+</div>
+<!-- 琛ㄦ牸鎿嶄綔鍒� -->
+<script type="text/html" id="operate">
+    {{# if (d.settle == 1 || d.settle == 2) { }}
+    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
+    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="editEnd">杞巻鍙叉。妗�</a>
+    {{# if (d.settle == 2) { }}
+    <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="complete">瀹岀粨</a>
+    <a class="layui-btn layui-btn-primary layui-border-green layui-btn-xs" lay-event="cancel"><i class="layui-icon">&#xe639;;</i> 鍙栨秷浠诲姟</a>
+    {{# } }}
+    {{# } }}
+    <a class="layui-btn layui-btn-danger layui-btn-xs btn-delete" lay-event="del">鍒犻櫎</a>
+
+</script>
+<!-- 琛ㄦ牸鎿嶄綔鍒� -->
+<script type="text/html" id="tbLook">
+    <span class="layui-text">
+        <a href="javascript:;" lay-event="look">
+            <i class="layui-icon" style="font-size: 12px;">&#xe61a;</i> 鏌ョ湅鍗曟嵁鏄庣粏
+        </a>
+    </span>
+</script>
+
+<script type="text/html" id="orderNoTpl">
+    {{d.orderNo}}
+    {{# if(d.settle > 1 && d.settle !== 3){ }}
+
+    {{# } }}
+    <i class="layui-icon layui-icon-about wrk-trace" lay-tips="鏌ョ湅浠诲姟杩芥函" lay-direction="2" lay-offset="-10px,0px" lay-event="wrkTrace"></i>
+</script>
+
+<script type="text/html" id="settleTpl">
+    <span name="settle"
+          {{# if( d.settle === 1){ }}
+          class="layui-badge layui-badge-red"
+          {{# }else if(d.settle === 2){ }}
+          class="layui-badge layui-badge-green"
+          {{# }else if(d.settle === 3){ }}
+          class="layui-badge layui-badge-gray"
+          {{# }else if(d.settle === 4){ }}
+          class="layui-badge layui-badge-blue"
+          {{# }else if(d.settle === 5){ }}
+          class="layui-badge layui-badge-gray"
+          {{# }else if(d.settle === 6){ }}
+          class="layui-badge layui-badge-gray"
+          {{# } }}
+    >{{d.settle$}}</span>
+</script>
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="editDialog">
+    <form id="editForm" lay-filter="editForm" class="layui-form model-form">
+        <input name="id" type="hidden"/>
+        <div class="layui-form-item">
+            <label class="layui-form-label">鍗曟嵁绫诲瀷锛�</label>
+            <div class="layui-input-block cool-auto-complete">
+                <input class="layui-input" name="docType" placeholder="璇疯緭鍏ュ崟鎹被鍨�" style="display: none">
+                <input id="docType$" name="docType$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ュ崟鎹被鍨�" onfocus=this.blur() lay-verType="tips" lay-verify="required">
+                <div class="cool-auto-complete-window">
+                    <input class="cool-auto-complete-window-input" data-key="docTypeQueryBydocType" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                    <select class="cool-auto-complete-window-select" data-key="docTypeQueryBydocTypeSelect" 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="orderNo" name="orderNo" placeholder="杈撳叆鍗曟嵁缂栧彿" type="text" class="layui-input" maxlength="20" lay-verType="tips" lay-verify="required"/>
+            </div>
+        </div>
+        <div class="layui-form-item" style="position: relative;">
+            <label class="layui-form-label">鍗曟嵁鏄庣粏锛�</label>
+            <div class="layui-input-block">
+                <table id="formSSXMTable" lay-filter="formSSXMTable"></table>
+            </div>
+            <button class="layui-btn layui-btn-sm icon-btn" id="matAddBtnComment" style="position: absolute; left: 20px;top: 60px;padding: 0 5px;" type="button">
+                <i class="layui-icon">&#xe654;</i>娣诲姞鏄庣粏
+            </button>
+        </div>
+        <div class="layui-form-item text-right">
+            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+            <button class="layui-btn" lay-filter="orderEditSubmit" lay-submit>淇濆瓨</button>
+        </div>
+    </form>
+</script>
+<!-- 琛ㄦ牸鎿嶄綔鍒� -->
+<script type="text/html" id="formSSXMTableBar">
+    <!--    <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">淇敼</a>-->
+    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">鍒犻櫎</a>
+</script>
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="matEditDialog">
+    <form id="matEditForm" lay-filter="matEditForm" class="layui-form model-form">
+        <input name="experimentId" type="hidden"/>
+        <div class="layui-form-item" style="float: left">
+            <label class="layui-form-label">鐗╂枡 - 澶氶��</label>
+            <div class="layui-input-block">
+                <div id="mat" name="mat">
+                </div>
+            </div>
+        </div>
+        <div class="layui-form-item text-right" style="display: inline-block; margin-left: 35px">
+            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+            <button class="layui-btn" lay-filter="matEditSubmit" lay-submit>淇濆瓨</button>
+        </div>
+    </form>
+</script>
+
+<!-- 璁㈠崟浠诲姟杩芥函 -->
+<script id="wrkTraceDialog" type="text/html" style="position: relative">
+    <div style="position: absolute; top: 0; left: 0;">
+        <div class="layui-card" style="overflow: hidden;">
+            <div class="layui-card-header" style="text-align: center;width: 80%;font-weight: inherit;font-size: 18px">{{ d.orderNo }}</div>
+            <div class="layui-card-body">
+                <div id="wrkTraceCharts" style="height: 300px;width: 400px;transform: translateX(-10%);"></div>
+            </div>
+        </div>
+    </div>
+    <div class="layui-row" >
+        <div class="layui-col-md5">
+            <h1 style="opacity: 0;">Hello World</h1>
+        </div>
+        <div  class="layui-col-md7" style="">
+            {{#  if(d.list.length > 0){ }}
+            <ul class="layui-timeline" style="height: 400px; overflow: scroll;">
+                {{#  layui.each(d.list, function(index, item){ }}
+                <li class="layui-timeline-item">
+                    <i class="layui-icon layui-timeline-axis">&#xe63f;</i>
+                    <div class="layui-timeline-content layui-text">
+                        <div class="layui-timeline-title">
+                            <h3 class="inline-block">
+                                {{ item.wrkNo }}&nbsp;
+
+                                {{#  if(item.wrkMast.ioType < 100){ }}
+                                <span class="layui-badge layui-bg-blue" style="line-height: 20px;">
+                                 {{ item.wrkMast.ioType$ }}&nbsp;
+                                </span>
+                                {{#  } }}
+
+                                {{#  if(item.wrkMast.ioType > 100){ }}
+                                <span class="layui-badge layui-bg-orange" style="line-height: 20px;">
+                                  {{ item.wrkMast.ioType$ }}&nbsp;
+                                </span>
+                                {{#  } }}
+
+
+                                {{#  if(item.wrkMast.wrkSts < 14){ }}
+                                <span class="layui-badge layui-bg-red" style="line-height: 20px;">
+                                    {{ item.wrkMast.wrkSts$ }}&nbsp;
+                                </span>
+                                {{#  } }}
+
+                                {{#  if(item.wrkMast.wrkSts >= 14){ }}
+                                <span class="layui-badge layui-bg-green" style="line-height: 20px;">
+                                    {{ item.wrkMast.wrkSts$ }}&nbsp;
+                                </span>
+                                {{#  } }}
+
+                            </h3>&emsp;
+                            {{ item.wrkMast.ioTime$ }}
+                        </div>
+
+                        <table class="layui-table" lay-skin="nob" style="width: 80%">
+                            <thead>
+                            <tr style="background: none">
+                                <td>No.</td>
+                                <td>鍟嗗搧缂栧彿</td>
+                                <td>鏁伴噺</td>
+                            </tr>
+                            </thead>
+                            <tbody>
+                            {{#  layui.each(item.wrkDetls, function(idx, wrkDetl){ }}
+                            <tr>
+                                <td><span class="layui-badge layui-bg-cyan">{{ idx+1 }}</span></td>
+                                <td>{{ wrkDetl.matnr }}</td>
+                                <td style="font-weight: bold">{{ wrkDetl.anfme }}</td>
+                            </tr>
+                            {{#  }); }}
+                            </tbody>
+                        </table>
+
+                        <hr class="layui-border-cyan" style="width: 90%; opacity: .6;">
+                    </div>
+                </li>
+                {{#  }); }}
+            </ul>
+            {{#  } else { }}
+            <div style="height: 350px;display: flex;justify-content: center;align-items: center;">
+                <h2 style="font-weight: bold;letter-spacing: 2px">鏆傛棤浠诲姟</h2>
+            </div>
+            {{#  } }}
+        </div>
+    </div>
+
+
+</script>
+
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/echarts/echarts.min.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/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/order/order.js" charset="utf-8"></script>
+
+<script type="text/template" id="docTypeTpl">
+    <option value="">閫夋嫨绫诲瀷</option>
+    {{#each records}}
+    <option value="{{docId}}">{{docName}}</option>
+    {{/each}}
+</script>
+</body>
+
+</html>
+
diff --git a/zy-asrs-wms/src/main/webapp/views/order/out.html b/zy-asrs-wms/src/main/webapp/views/order/out.html
new file mode 100644
index 0000000..ecbbb04
--- /dev/null
+++ b/zy-asrs-wms/src/main/webapp/views/order/out.html
@@ -0,0 +1,314 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
+    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+    <link rel="stylesheet" href="../../static/css/originTable.css" media="all">
+    <style>
+        body {
+            color: #595959;
+            background-color: #f5f7f9;
+        }
+
+        .admin-form {
+            padding: 25px 30px 0 0 !important;
+            margin: 0 !important;
+        }
+
+        .layui-table-view .layui-table-cell .layui-select-title .layui-input {
+            height: 28px;
+            line-height: 28px;
+        }
+
+        .layui-table-view [lay-size="lg"] .layui-table-cell .layui-select-title .layui-input {
+            height: 40px;
+            line-height: 40px;
+        }
+
+        .layui-table-view [lay-size="lg"] .layui-table-cell .layui-select-title .layui-input {
+            height: 40px;
+            line-height: 40px;
+        }
+
+        .layui-table-view [lay-size="sm"] .layui-table-cell .layui-select-title .layui-input {
+            height: 20px;
+            line-height: 20px;
+        }
+
+        .layui-table-view [lay-size="sm"] .layui-table-cell .layui-btn-xs {
+            height: 18px;
+            line-height: 18px;
+        }
+
+        /* 鏉冮檺鎺у埗 */
+        #btn-pakoutPreview {
+            display: none;
+        }
+        /*#btn-delete {*/
+        /*    display: none;*/
+        /*}*/
+        /*.btn-edit {*/
+        /*    display: none;*/
+        /*}*/
+        /*.btn-more {*/
+        /*    display: none;*/
+        /*}*/
+    </style>
+</head>
+<body>
+<!-- 姝f枃寮�濮� -->
+<div class="layui-fluid" style="padding-bottom: 0;">
+    <div class="layui-row layui-col-space15">
+        <!-- 宸� -->
+        <div class="layui-col-md3" id="left-table">
+            <div class="layui-card">
+                <div class="layui-card-body" style="padding: 10px;">
+                    <form class="layui-form toolbar">
+                        <div class="layui-form-item">
+                            <div class="layui-inline" style="max-width: 300px;">
+                                <input name="orderNo" class="layui-input" placeholder="杈撳叆鍗曟嵁缂栧彿" autocomplete="off"/>
+                            </div>
+                            <div class="layui-inline">
+                                <button class="layui-btn icon-btn" lay-filter="originTableSearch" lay-submit>
+                                    <i class="layui-icon">&#xe615;</i>鎼滅储
+                                </button>
+                                <button class="layui-btn icon-btn" lay-filter="originTbReset" lay-submit>
+                                    <i class="layui-icon">&#xe666;</i>閲嶇疆
+                                </button>
+                            </div>
+                        </div>
+                    </form>
+                    <table id="originTable" lay-filter="originTable"></table>
+                </div>
+            </div>
+        </div>
+        <!-- 鍙� -->
+        <div class="layui-col-md9">
+            <div class="layui-card">
+                <div class="layui-card-body" style="padding: 10px;">
+                    <form class="layui-form toolbar">
+                        <div class="layui-form-item">
+                            <div class="layui-inline">
+                                <label class="layui-form-label">鍟嗗搧缂栫爜:</label>
+                                <div class="layui-input-inline">
+                                    <input name="matnr" class="layui-input" placeholder="鍟嗗搧缂栫爜"/>
+                                </div>
+                            </div>
+                            <div class="layui-inline">
+                                <label class="layui-form-label">鍟嗗搧鍚嶇О:</label>
+                                <div class="layui-input-inline">
+                                    <input name="maktx" class="layui-input" placeholder="鍟嗗搧鍚嶇О"/>
+                                </div>
+                            </div>
+                            <div class="layui-inline">
+                                <label class="layui-form-label">搴忓垪鐮�:</label>
+                                <div class="layui-input-inline">
+                                    <input name="batch" class="layui-input" placeholder="搴忓垪鐮�"/>
+                                </div>
+                            </div>
+<!--                            <div class="layui-inline">-->
+<!--                                <label class="layui-form-label">鐘舵��:</label>-->
+<!--                                <div class="layui-input-inline">-->
+<!--                                    <select name="isOnline">-->
+<!--                                        <option value="1">鍏呯數涓�</option>-->
+<!--                                        <option value="1">鍏呯數涓�</option>-->
+<!--                                        <option value="0">涓嶅湪鍏呯數</option>-->
+<!--                                    </select>-->
+<!--                                </div>-->
+<!--                            </div>-->
+                            <div class="layui-inline">&emsp;
+                                <button class="layui-btn icon-btn" lay-filter="sensorTbSearch" lay-submit>
+                                    <i class="layui-icon">&#xe615;</i>鎼滅储
+                                </button>
+                            </div>
+                        </div>
+                    </form>
+                    <table id="orderDetlTable" lay-filter="orderDetlTable"></table>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+<!-- 澶村伐鍏锋爮 -->
+<script type="text/html" id="orderDetToolbar">
+
+<!--    <div class="layui-btn-container">-->
+<!--        <div class="layui-col-md3">-->
+<!--            <select id="staNoSelect" lay-verify="required">-->
+<!--                <option value="">璇烽�夋嫨绔欑偣</option>-->
+<!--            </select>-->
+<!--        </div>-->
+<!--    </div>-->
+    <button class="layui-btn layui-btn-sm layui-btn-danger btn-pakoutPreview" id="btn-pakoutPreview" lay-event="pakoutPreview">鎵归噺鍑哄簱</button>
+
+</script>
+
+<!-- 琛屽伐鍏锋爮 -->
+<script type="text/html" id="operate">
+    {{#if (d.anfme > d.qty){ }}
+        <a class="layui-btn layui-btn-xs layui-btn-danger btn-pakoutPreview" lay-event="pakoutPreview"><i class="layui-icon layui-icon-prev-circle"></i>鍑哄簱</a>
+    {{# } }}
+</script>
+
+<!-- 鍑哄簱棰勮 -->
+<script type="text/html" id="pakoutPreviewBox" style="display: none">
+    <div style="padding: 25px; line-height: 22px; background-color: #393D49; color: #fff; font-weight: 300;">
+        <span style="font-size: large; font-weight: bold">鍑哄簱棰勮</span>
+    </div>
+    <div class="layui-card">
+        <div class="layui-card-body" style="padding: 10px">
+            <table id="stoPreTab" lay-filter="stoPreTab"></table>
+        </div>
+        <button class="layui-btn layui-btn-primary layui-border-black layui-btn-sm" lay-filter="batchModifySta" lay-submit style="display: block;float: right;margin-right: 1rem">
+            鎵归噺淇敼
+        </button>
+    </div>
+</script>
+
+<script type="text/html" id="tbBasicTbStaNos">
+    <div class="ew-select-fixed">
+        <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>
+
+<script type="text/html" id="staBatchSelectDialog">
+    <form class="layui-form" style="padding: 25px 50px 30px 50px;text-align: center">
+        <select id="batchSelectStaBox" name="batchSta" lay-vertype="tips" lay-verify="required" required="">
+        </select>
+        <button style="margin-top: 30px" class="layui-btn" lay-filter="staBatchSelectConfirm" lay-submit="">纭畾</button>
+    </form>
+</script>
+
+<script type="text/html" id="locNoTpl">
+    <span name="locNo"
+    {{# if( d.lack === false){ }}
+    class="layui-badge layui-badge-green" >{{d.locNo}}</span>
+        {{# } else { }}
+        class="layui-badge layui-badge-red" >搴撳瓨涓嶈冻</span>
+    {{# } }}
+</script>
+
+<!-- 琛屾牱寮� -->
+<script type="text/html" id="orderNoTpl">
+    <span name="orderNo" class="layui-badge layui-badge-gray">{{d.orderNo}}</span>
+</script>
+<script type="text/html" id="statusTpl">
+    <input type="checkbox" name="status" value="{{d.status}}" lay-skin="switch" lay-text="姝e父|绂佺敤" lay-filter="statusSwitch" {{ d.status === 1 ? 'checked' : '' }}>
+</script>
+
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="editDialog">
+    <form id="detail" lay-filter="detail" class="layui-form admin-form">
+        <input name="id" type="hidden">
+        <input name="status" type="hidden">
+        <div class="layui-row">
+
+            <div class="layui-col-md4">
+                <div class="layui-form-item">
+                    <label class="layui-form-label layui-form-required">璁惧缂栧彿</label>
+                    <div class="layui-input-block">
+                        <input name="uuid" placeholder="璇疯緭鍏ヨ澶囩紪鍙�" class="layui-input" lay-vertype="tips" lay-verify="required" required="">
+                    </div>
+                </div>
+            </div>
+            <div class="layui-col-md4">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">璁惧绫诲瀷锛�</label>
+                    <div class="layui-input-block">
+                        <div id="modelSel" class="ew-xmselect-tree"></div>
+                    </div>
+                </div>
+            </div>
+            <div class="layui-col-md4">
+                <div class="layui-form-item">
+                    <label class="layui-form-label layui-form-required">鎵�灞為」鐩�: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input name="hostId" class="layui-input" style="display: none">
+                        <input id="hostId$" name="hostId$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇烽�夋嫨鎵�灞為」鐩�" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="hostQueryByhostId" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="hostQueryByhostIdSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                            </select>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="layui-col-md12">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">璇︾粏鍦板潃</label>
+                    <div class="layui-input-block">
+                        <input name="addr" placeholder="璇疯緭鍏ヨ缁嗗湴鍧�" class="layui-input">
+                    </div>
+                </div>
+            </div>
+            <hr class="layui-bg-gray">
+            <div class="layui-col-md12" style="text-align: center">
+                <iframe id="mapIframe" src="map.html" scrolling="no" frameborder="0"
+                        style="display: inline-block; width: 90%;height: 400px;margin: auto">
+                </iframe>
+            </div>
+
+        </div>
+        <hr class="layui-bg-gray">
+        <div class="layui-form-item text-right">
+            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
+            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+        </div>
+    </form>
+</script>
+
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/tools/md5.js"></script>
+<script type="text/javascript" src="../../static/js/orderTable.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/order/out.js" charset="utf-8"></script>
+<!--<script type="text/template" id="takeSiteSelectTemplate">-->
+<!--    {{#each data}}-->
+<!--    <option value="{{siteId}}">{{desc}}</option>-->
+<!--    {{/each}}-->
+<!--</script>-->
+<!-- 椤圭洰缂栬緫绐楀彛 -->
+<script type="text/html" id="hostEditDialog">
+    <form id="hostEditForm" lay-filter="hostEditForm" class="layui-form model-form">
+        <input name="id" type="hidden"/>
+        <div class="layui-form-item">
+            <label class="layui-form-label layui-form-required">椤圭洰鍚嶇О:</label>
+            <div class="layui-input-block">
+                <input name="name" placeholder="璇疯緭鍏ョ被鍨嬪悕绉�" class="layui-input"
+                       lay-verType="tips" lay-verify="required" required/>
+            </div>
+        </div>
+        <div class="layui-form-item text-right">
+            <button class="layui-btn" lay-filter="hostEditSubmit" lay-submit>淇濆瓨</button>
+            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+        </div>
+    </form>
+</script>
+
+</body>
+
+<script type="text/template" id="batchStaSelectTpl">
+    <option value="">閫夋嫨鍑哄簱绔�</option>
+    {{#each list}}
+    <option value="{{this}}">{{this}}</option>
+    {{/each}}
+</script>
+
+</html>
+
diff --git a/zy-asrs-wms/src/main/webapp/views/orderDetl/orderDetl.html b/zy-asrs-wms/src/main/webapp/views/orderDetl/orderDetl.html
new file mode 100644
index 0000000..1ea98e6
--- /dev/null
+++ b/zy-asrs-wms/src/main/webapp/views/orderDetl/orderDetl.html
@@ -0,0 +1,366 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
+    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+</head>
+<body>
+
+<div class="layui-fluid">
+    <div class="layui-card">
+        <div class="layui-card-body">
+            <div class="layui-form toolbar" id="search-box">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline" style="width: 300px">
+                        <div class="layui-input-inline">
+                            <input class="layui-input layui-laydate-range" name="timeRange" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
+                        </div>
+                    </div>
+                    <div class="layui-inline">&emsp;
+                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
+                            <i class="layui-icon">&#xe615;</i>鎼滅储
+                        </button>
+                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
+                            <i class="layui-icon">&#xe666;</i>閲嶇疆
+                        </button>
+                    </div>
+                </div>
+            </div>
+            <table class="layui-hide" id="orderDetl" lay-filter="orderDetl"></table>
+        </div>
+    </div>
+</div>
+
+<script type="text/html" id="toolbar">
+    <div class="layui-btn-container">
+        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
+        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
+        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
+    </div>
+</script>
+
+<script type="text/html" id="operate">
+    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
+    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
+</script>
+
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/orderDetl/orderDetl.js" charset="utf-8"></script>
+</body>
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="editDialog">
+    <div id="detail" lay-filter="detail" class="layui-form admin-form model-form">
+        <input name="id" type="hidden">
+        <div class="layui-row">
+            <div class="layui-col-md12">
+                <div class="layui-form-item">
+                    <label class="layui-form-label">璁㈠崟鍐呯爜: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="orderId" placeholder="璇疯緭鍏ヨ鍗曞唴鐮�" style="display: none">
+                        <input id="orderId$" name="orderId$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ヨ鍗曞唴鐮�" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <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-form-item">
+                    <label class="layui-form-label">鍗曟嵁缂栧彿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="orderNo" placeholder="璇疯緭鍏ュ崟鎹紪鍙�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鏁伴噺: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="anfme" placeholder="璇疯緭鍏ユ暟閲�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="qty" placeholder="璇疯緭鍏�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍟嗗搧缂栫爜: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="matnr" placeholder="璇疯緭鍏ュ晢鍝佺紪鐮�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍟嗗搧鍚嶇О: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="maktx" placeholder="璇疯緭鍏ュ晢鍝佸悕绉�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鎵瑰彿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="batch" placeholder="璇疯緭鍏ユ壒鍙�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">瑙勬牸: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="specs" placeholder="璇疯緭鍏ヨ鏍�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍨嬪彿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="model" placeholder="璇疯緭鍏ュ瀷鍙�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">棰滆壊: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="color" placeholder="璇疯緭鍏ラ鑹�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍝佺墝: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="brand" placeholder="璇疯緭鍏ュ搧鐗�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍗曚綅: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="unit" placeholder="璇疯緭鍏ュ崟浣�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍗曚环: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="price" placeholder="璇疯緭鍏ュ崟浠�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">sku: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="sku" placeholder="璇疯緭鍏ku">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍗曚綅閲�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="units" placeholder="璇疯緭鍏ュ崟浣嶉噺">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鏉$爜: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="barcode" placeholder="璇疯緭鍏ユ潯鐮�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">浜у湴: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="origin" placeholder="璇疯緭鍏ヤ骇鍦�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍘傚: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="manu" placeholder="璇疯緭鍏ュ巶瀹�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鐢熶骇鏃ユ湡: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="manuDate" placeholder="璇疯緭鍏ョ敓浜ф棩鏈�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍝侀」鏁�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="itemNum" placeholder="璇疯緭鍏ュ搧椤规暟">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">瀹夊叏搴撳瓨閲�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="safeQty" placeholder="璇疯緭鍏ュ畨鍏ㄥ簱瀛橀噺">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">閲嶉噺: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="weight" placeholder="璇疯緭鍏ラ噸閲�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">闀垮害: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="length" placeholder="璇疯緭鍏ラ暱搴�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">浣撶Н: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="volume" placeholder="璇疯緭鍏ヤ綋绉�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">涓夋柟缂栫爜: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="threeCode" placeholder="璇疯緭鍏ヤ笁鏂圭紪鐮�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">渚涘簲鍟�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="supp" placeholder="璇疯緭鍏ヤ緵搴斿晢">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">渚涘簲鍟嗙紪鐮�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="suppCode" placeholder="璇疯緭鍏ヤ緵搴斿晢缂栫爜">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鏄惁鎵规: </label>
+                    <div class="layui-input-block">
+                        <select name="beBatch">
+                            <option value="">璇烽�夋嫨鏄惁鎵规</option>
+                            <option value="1">鏄�</option>
+                            <option value="0">鍚�</option>
+                        </select>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">淇濊川鏈�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="deadTime" placeholder="璇疯緭鍏ヤ繚璐ㄦ湡">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">棰勮澶╂暟: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="deadWarn" placeholder="璇疯緭鍏ラ璀﹀ぉ鏁�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍒惰喘: </label>
+                    <div class="layui-input-block">
+                        <select name="source">
+                            <option value="">璇烽�夋嫨鍒惰喘</option>
+                            <option value="1">鍒堕��</option>
+                            <option value="2">閲囪喘</option>
+                            <option value="3">澶栧崗</option>
+                        </select>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">瑕佹眰妫�楠�: </label>
+                    <div class="layui-input-block">
+                        <select name="inspect">
+                            <option value="">璇烽�夋嫨瑕佹眰妫�楠�</option>
+                            <option value="1">鏄�</option>
+                            <option value="0">鍚�</option>
+                        </select>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍗遍櫓鍝�: </label>
+                    <div class="layui-input-block">
+                        <select name="danger">
+                            <option value="">璇烽�夋嫨鍗遍櫓鍝�</option>
+                            <option value="1">鏄�</option>
+                            <option value="0">鍚�</option>
+                        </select>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鐘舵��: </label>
+                    <div class="layui-input-block">
+                        <select name="status">
+                            <option value="">璇烽�夋嫨鐘舵��</option>
+                            <option value="1">姝e父</option>
+                            <option value="0">绂佺敤</option>
+                        </select>
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">娣诲姞浜哄憳: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="createBy" placeholder="璇疯緭鍏ユ坊鍔犱汉鍛�" style="display: none">
+                        <input id="createBy$" name="createBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ユ坊鍔犱汉鍛�" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="userQueryBycreateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="userQueryBycreateBySelect" 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 class="layui-input" name="createTime" id="createTime$" placeholder="璇疯緭鍏ユ坊鍔犳椂闂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">淇敼浜哄憳: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="updateBy" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" style="display: none">
+                        <input id="updateBy$" name="updateBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="userQueryByupdateBy" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="userQueryByupdateBySelect" 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 class="layui-input" name="updateTime" id="updateTime$" placeholder="璇疯緭鍏ヤ慨鏀规椂闂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">澶囨敞: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="memo" placeholder="璇疯緭鍏ュ娉�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鎺堟潈鍟嗘埛: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="hostId" placeholder="璇疯緭鍏ユ巿鏉冨晢鎴�" style="display: none">
+                        <input id="hostId$" name="hostId$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ユ巿鏉冨晢鎴�" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="hostQueryByhostId" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="hostQueryByhostIdSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                            </select>
+                        </div>
+                    </div>
+                </div>
+
+             </div>
+        </div>
+        <hr class="layui-bg-gray">
+        <div class="layui-form-item text-right">
+            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
+            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+        </div>
+    </div>
+</script>
+</html>
+
diff --git a/zy-asrs-wms/src/main/webapp/views/orderSettle/orderSettle.html b/zy-asrs-wms/src/main/webapp/views/orderSettle/orderSettle.html
new file mode 100644
index 0000000..eed321c
--- /dev/null
+++ b/zy-asrs-wms/src/main/webapp/views/orderSettle/orderSettle.html
@@ -0,0 +1,95 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
+    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+</head>
+<body>
+
+<div class="layui-fluid">
+    <div class="layui-card">
+        <div class="layui-card-body">
+            <div class="layui-form toolbar" id="search-box">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <label class="layui-form-label">鐘舵�佹弿杩�:</label>
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="order_name" placeholder="鐘舵�佹弿杩�" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline">&emsp;
+                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
+                            <i class="layui-icon">&#xe615;</i>鎼滅储
+                        </button>
+                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
+                            <i class="layui-icon">&#xe666;</i>閲嶇疆
+                        </button>
+                    </div>
+                </div>
+            </div>
+            <table class="layui-hide" id="orderSettle" lay-filter="orderSettle"></table>
+        </div>
+    </div>
+</div>
+
+<script type="text/html" id="toolbar">
+    <div class="layui-btn-container">
+        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
+        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
+        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
+    </div>
+</script>
+
+<script type="text/html" id="operate">
+    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
+    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
+</script>
+
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/orderSettle/orderSettle.js" charset="utf-8"></script>
+</body>
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="editDialog">
+    <form id="detail" lay-filter="detail" class="layui-form admin-form model-form">
+        <input name="id" type="hidden">
+        <div class="layui-row">
+            <div class="layui-col-md12">
+                <div class="layui-form-item">
+                    <label class="layui-form-label layui-form-required">璁㈠崟鐘舵��: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="orderSettle" placeholder="璇疯緭鍏ヨ鍗曠姸鎬�" lay-vertype="tips" lay-verify="required">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鐘舵�佹弿杩�: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="settleName" placeholder="璇疯緭鍏ョ姸鎬佹弿杩�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">澶囨敞: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="memo" placeholder="璇疯緭鍏ュ娉�">
+                    </div>
+                </div>
+
+            </div>
+        </div>
+        <hr class="layui-bg-gray">
+        <div class="layui-form-item text-right">
+            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
+            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+        </div>
+    </form>
+</script>
+</html>
+
diff --git a/zy-asrs-wms/src/main/webapp/views/staDesc/staDesc.html b/zy-asrs-wms/src/main/webapp/views/staDesc/staDesc.html
new file mode 100644
index 0000000..664f790
--- /dev/null
+++ b/zy-asrs-wms/src/main/webapp/views/staDesc/staDesc.html
@@ -0,0 +1,189 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title></title>
+    <meta name="renderer" content="webkit">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+    <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+    <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all">
+    <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+</head>
+<body>
+
+<div class="layui-fluid">
+    <div class="layui-card">
+        <div class="layui-card-body">
+            <div class="layui-form toolbar" id="search-box">
+                <div class="layui-form-item">
+                    <div class="layui-inline">
+                        <div class="layui-input-inline">
+                            <input class="layui-input" type="text" name="condition" placeholder="璇疯緭鍏�" autocomplete="off">
+                        </div>
+                    </div>
+                    <div class="layui-inline" style="width: 300px">
+                        <div class="layui-input-inline">
+                            <input class="layui-input layui-laydate-range" name="timeRange" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
+                        </div>
+                    </div>
+                    <div class="layui-inline">&emsp;
+                        <button class="layui-btn icon-btn" lay-filter="search" lay-submit>
+                            <i class="layui-icon">&#xe615;</i>鎼滅储
+                        </button>
+                        <button class="layui-btn icon-btn" lay-filter="reset" lay-submit>
+                            <i class="layui-icon">&#xe666;</i>閲嶇疆
+                        </button>
+                    </div>
+                </div>
+            </div>
+            <table class="layui-hide" id="staDesc" lay-filter="staDesc"></table>
+        </div>
+    </div>
+</div>
+
+<script type="text/html" id="toolbar">
+    <div class="layui-btn-container">
+        <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">鏂板</button>
+        <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">鍒犻櫎</button>
+        <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">瀵煎嚭</button>
+    </div>
+</script>
+
+<script type="text/html" id="operate">
+    <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">淇敼</a>
+    <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">鍒犻櫎</a>
+</script>
+
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/staDesc/staDesc.js" charset="utf-8"></script>
+</body>
+<!-- 琛ㄥ崟寮圭獥 -->
+<script type="text/html" id="editDialog">
+    <div id="detail" lay-filter="detail" class="layui-form admin-form model-form">
+        <input name="id" type="hidden">
+        <div class="layui-row">
+            <div class="layui-col-md12">
+                <div class="layui-form-item">
+                    <label class="layui-form-label layui-form-required">鍏ュ嚭搴撶被鍨�: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="typeNo" placeholder="璇疯緭鍏ュ叆鍑哄簱绫诲瀷" lay-vertype="tips" lay-verify="required" style="display: none">
+                        <input id="typeNo$" name="typeNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ュ叆鍑哄簱绫诲瀷" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="basWrkIotypeQueryBytypeNo" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="basWrkIotypeQueryBytypeNoSelect" 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 class="layui-input" name="typeDesc" placeholder="璇疯緭鍏ヤ綔涓氱被鍨�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label layui-form-required">浣滀笟绔欑偣: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="stnNo" placeholder="璇疯緭鍏ヤ綔涓氱珯鐐�" lay-vertype="tips" lay-verify="required" style="display: none">
+                        <input id="stnNo$" name="stnNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ヤ綔涓氱珯鐐�" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="basDevpQueryBystnNo" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="basDevpQueryBystnNoSelect" 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 class="layui-input" name="stnDesc" placeholder="璇疯緭鍏ョ珯鐐瑰悕绉�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label layui-form-required">鍫嗗灈鏈哄彿: </label>
+                    <div class="layui-input-block">
+                        <input class="layui-input" name="crnNo" placeholder="璇疯緭鍏ュ爢鍨涙満鍙�" lay-vertype="tips" 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 class="layui-input" name="crnStn" placeholder="璇疯緭鍏ュ爢鍨涙満绔欑偣" style="display: none">
+                        <input id="crnStn$" name="crnStn$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ュ爢鍨涙満绔欑偣" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="basDevpQueryBycrnStn" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="basDevpQueryBycrnStnSelect" 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 class="layui-input" name="memo" placeholder="璇疯緭鍏ュ娉�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">淇敼浜哄憳: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="modiUser" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" style="display: none">
+                        <input id="modiUser$" name="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ヤ慨鏀逛汉鍛�" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" 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 class="layui-input" name="modiTime" id="modiTime$" placeholder="璇疯緭鍏ヤ慨鏀规椂闂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鍒涘缓鑰�: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="appeUser" placeholder="璇疯緭鍏ュ垱寤鸿��" style="display: none">
+                        <input id="appeUser$" name="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ュ垱寤鸿��" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" 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 class="layui-input" name="appeTime" id="appeTime$" placeholder="璇疯緭鍏ユ坊鍔犳椂闂�">
+                    </div>
+                </div>
+                <div class="layui-form-item">
+                    <label class="layui-form-label">鎺堟潈鍟嗘埛: </label>
+                    <div class="layui-input-block cool-auto-complete">
+                        <input class="layui-input" name="hostId" placeholder="璇疯緭鍏ユ巿鏉冨晢鎴�" style="display: none">
+                        <input id="hostId$" name="hostId$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="璇疯緭鍏ユ巿鏉冨晢鎴�" onfocus=this.blur()>
+                        <div class="cool-auto-complete-window">
+                            <input class="cool-auto-complete-window-input" data-key="hostQueryByhostId" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                            <select class="cool-auto-complete-window-select" data-key="hostQueryByhostIdSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                            </select>
+                        </div>
+                    </div>
+                </div>
+
+             </div>
+        </div>
+        <hr class="layui-bg-gray">
+        <div class="layui-form-item text-right">
+            <button class="layui-btn" lay-filter="editSubmit" lay-submit="">淇濆瓨</button>
+            <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">鍙栨秷</button>
+        </div>
+    </div>
+</script>
+</html>
+

--
Gitblit v1.9.1