From 4e32eae9008b56a346f52710d86241890a0ae1a7 Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期四, 27 十一月 2025 19:59:00 +0800
Subject: [PATCH] #库存调整

---
 src/main/java/com/zy/asrs/entity/CheckOrderDetl.java                 |   28 
 src/main/java/com/zy/asrs/controller/OpenController.java             |   18 
 src/main/resources/mapper/CheckOrderDetlMapper.xml                   |    2 
 src/main/java/com/zy/asrs/enums/OrderTypeEnum.java                   |   38 +
 src/main/webapp/static/js/checkOrder/checkOrder.js                   |   15 
 src/main/webapp/views/adjustOrder/adjustOrder.html                   |  270 ++++++++++++
 src/main/java/com/zy/asrs/service/OpenService.java                   |    2 
 src/main/webapp/static/js/adjustOrder/adjustOrder.js                 |  552 +++++++++++++++++++++++++
 src/main/java/com/zy/asrs/service/impl/CheckOrderServiceImpl.java    |    1 
 src/main/java/com/zy/asrs/controller/CheckOrderController.java       |   32 +
 src/main/webapp/static/js/adjustOrder/checkOrderLocQuery.js          |  118 +++++
 src/main/webapp/views/adjustOrder/checkOrderLocQuery.html            |  115 +++++
 src/main/java/com/zy/asrs/entity/param/OpenAdjustmentOrderParam.java |   17 
 src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java          |   65 ++
 14 files changed, 1,247 insertions(+), 26 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/CheckOrderController.java b/src/main/java/com/zy/asrs/controller/CheckOrderController.java
index a2886a9..4b88046 100644
--- a/src/main/java/com/zy/asrs/controller/CheckOrderController.java
+++ b/src/main/java/com/zy/asrs/controller/CheckOrderController.java
@@ -13,6 +13,7 @@
 import com.zy.asrs.entity.param.CheckTaskListParam;
 import com.zy.asrs.entity.param.OrderDomainParam;
 import com.zy.asrs.entity.result.CheckOrderExportDTO;
+import com.zy.asrs.enums.OrderTypeEnum;
 import com.zy.asrs.service.*;
 import com.core.annotations.ManagerAuth;
 import com.zy.common.entity.NodeExcel;
@@ -135,10 +136,14 @@
             checkOrderDetl.setBatch(locDetl.getBatch());
             checkOrderDetl.setSpecs(locDetl.getSpecs());
             checkOrderDetl.setAnfme(new BigDecimal(locDetl.getAnfme().toString()));
-            checkOrderDetl.setQty(BigDecimal.ZERO);
+            checkOrderDetl.setDiffQty(BigDecimal.ZERO);
             checkOrderDetl.setWorkQty(BigDecimal.ZERO);
             checkOrderDetl.setStatus(1);
             checkOrderDetl.setZpallet(locDetl.getZpallet());
+            checkOrderDetl.setCreateBy(getUserId());
+            checkOrderDetl.setCreateTime(now);
+            checkOrderDetl.setUpdateBy(getUserId());
+            checkOrderDetl.setUpdateTime(now);
             if (!checkOrderDetlService.insert(checkOrderDetl)) {
                 throw new CoolException("淇濆瓨鐩樼偣鍗曟槑缁嗗け璐�");
             }
@@ -181,10 +186,14 @@
             checkOrderDetl1.setBatch(checkOrderDetl.getBatch());
             checkOrderDetl1.setSpecs(checkOrderDetl.getSpecs());
             checkOrderDetl1.setAnfme(checkOrderDetl.getAnfme());
-            checkOrderDetl1.setQty(checkOrderDetl.getQty());
+            checkOrderDetl1.setDiffQty(checkOrderDetl.getDiffQty());
             checkOrderDetl1.setWorkQty(checkOrderDetl.getWorkQty());
             checkOrderDetl1.setStatus(checkOrderDetl.getStatus());
             checkOrderDetl1.setZpallet(checkOrderDetl.getZpallet());
+            checkOrderDetl1.setCreateBy(getUserId());
+            checkOrderDetl1.setCreateTime(checkOrderDetl.getCreateTime() == null?now:checkOrderDetl.getCreateTime());
+            checkOrderDetl1.setUpdateBy(getUserId());
+            checkOrderDetl1.setUpdateTime(now);
             if (!checkOrderDetlService.insert(checkOrderDetl1)) {
                 throw new CoolException("淇濆瓨鐩樼偣鍗曟槑缁嗗け璐�");
             }
@@ -212,6 +221,25 @@
         allLike(CheckOrder.class, param.keySet(), wrapper, condition);
         if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
         wrapper.orderBy("create_time", false);
+        wrapper.eq("doc_type", OrderTypeEnum.INVENTORY.type);
+        return R.ok(checkOrderService.selectPage(new Page<>(curr, limit), wrapper));
+    }
+
+    @RequestMapping(value = "/adjustOrder/list/auth")
+    @ManagerAuth
+    public R adjustList(@RequestParam(defaultValue = "1")Integer curr,
+                  @RequestParam(defaultValue = "10")Integer limit,
+                  @RequestParam(required = false)String orderByField,
+                  @RequestParam(required = false)String orderByType,
+                  @RequestParam(required = false)String condition,
+                  @RequestParam Map<String, Object> param){
+        EntityWrapper<CheckOrder> wrapper = new EntityWrapper<>();
+        excludeTrash(param);
+        convert(param, wrapper);
+        allLike(CheckOrder.class, param.keySet(), wrapper, condition);
+        if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));}
+        wrapper.orderBy("create_time", false);
+        wrapper.eq("doc_type", OrderTypeEnum.ADJUSTMENT.type);
         return R.ok(checkOrderService.selectPage(new Page<>(curr, limit), wrapper));
     }
 
diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 8b0604a..85fe6ad 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -81,6 +81,24 @@
 //        return R.ok();
 //    }
 
+    @PostMapping("/order/adjustment/default/v1")
+    public synchronized R adjustmentOrderCreate(@RequestHeader(required = false) String appkey,
+                                           @RequestBody OpenAdjustmentOrderParam param,
+                                           HttpServletRequest request) {
+        auth(appkey, param, request);
+        if (Cools.isEmpty(param)) {
+            return R.parse(BaseRes.PARAM);
+        }
+        if (Cools.isEmpty(param.getOrderNo())) {
+            return R.error("鍗曟嵁缂栧彿[orderNo]涓嶈兘涓虹┖");
+        }
+        if (Cools.isEmpty(param.getOrderDetails())) {
+            return R.error("鍗曟嵁鏄庣粏[orderDetails]涓嶈兘涓虹┖");
+        }
+        openService.adjustmentOrderCreate(param);
+        return R.ok();
+    }
+
     /**
      * 娣诲姞鍏ュ簱鍗�
      */
diff --git a/src/main/java/com/zy/asrs/entity/CheckOrderDetl.java b/src/main/java/com/zy/asrs/entity/CheckOrderDetl.java
index 0daf52e..0b3ade0 100644
--- a/src/main/java/com/zy/asrs/entity/CheckOrderDetl.java
+++ b/src/main/java/com/zy/asrs/entity/CheckOrderDetl.java
@@ -69,7 +69,8 @@
     private BigDecimal anfme;
 
     @ApiModelProperty(value= "")
-    private BigDecimal qty;
+    @TableField("diff_qty")
+    private BigDecimal diffQty;
 
     /**
      * 鍟嗗搧缂栫爜
@@ -257,7 +258,7 @@
     /**
      * 鐘舵�� 1: 鏈敓鎴�  0: 绂佺敤  2锛氬緟鐩�  3锛氬凡鐩�
      */
-    @ApiModelProperty(value= "鐘舵�� 1: 鏈敓鎴�  0: 绂佺敤  2锛氬緟鐩�  3锛氬凡鐩�")
+    @ApiModelProperty(value= "鐘舵�� 1: 鏈敓鎴�  0: 绂佺敤  2锛氬緟鐩�  3锛氬凡鐩�  4:寰呰皟鏁� 5:宸茶皟鏁�")
     private Integer status;
 
     /**
@@ -389,11 +390,11 @@
 
     public CheckOrderDetl() {}
 
-    public CheckOrderDetl(Long orderId,String orderNo,BigDecimal anfme,BigDecimal 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 manLength,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,BigDecimal workQty,String qrCode,Date startDate,Date endDate,Integer pakinPakoutStatus,Long lineNumber,String locNo,Long version) {
+    public CheckOrderDetl(Long orderId,String orderNo,BigDecimal anfme,BigDecimal diffQty,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 manLength,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,BigDecimal workQty,String qrCode,Date startDate,Date endDate,Integer pakinPakoutStatus,Long lineNumber,String locNo,Long version) {
         this.orderId = orderId;
         this.orderNo = orderNo;
         this.anfme = anfme;
-        this.qty = qty;
+        this.diffQty = diffQty;
         this.matnr = matnr;
         this.maktx = maktx;
         this.batch = batch;
@@ -489,21 +490,6 @@
 //            null    // [闈炵┖]
 //    );
 
-    public BigDecimal getDiffQty() {
-        if (null == this.status || this.status == 1  ||  this.status == 0 ||  this.status == 2) {
-            return BigDecimal.ZERO;
-        }
-        if (null != this.anfme && this.workQty != null) {
-
-            BigDecimal subtract = new BigDecimal(this.workQty.toString()).subtract(new BigDecimal(this.anfme.toString()));
-
-            return subtract;
-        }
-//        if (null != this.anfme && this.qty != null) {
-//            return this.anfme - this.qty;
-//        }
-        return null;
-    }
 
     public String getOrderId$(){
         OrderService service = SpringUtils.getBean(OrderService.class);
@@ -575,6 +561,10 @@
                 return "寰呯洏";
             case 3:
                 return "宸茬洏";
+            case 4:
+                return "寰呰皟鏁�";
+            case 5:
+                return "宸茶皟鏁�";
             default:
                 return String.valueOf(this.status);
         }
diff --git a/src/main/java/com/zy/asrs/entity/param/OpenAdjustmentOrderParam.java b/src/main/java/com/zy/asrs/entity/param/OpenAdjustmentOrderParam.java
new file mode 100644
index 0000000..08ed077
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/OpenAdjustmentOrderParam.java
@@ -0,0 +1,17 @@
+package com.zy.asrs.entity.param;
+
+import com.zy.asrs.entity.CheckOrderDetl;
+import lombok.Data;
+
+import java.util.List;
+@Data
+public class OpenAdjustmentOrderParam {
+
+    private String orderNo;
+
+    private Long orderType = 10L;
+
+    private String orderTime;
+
+    private List<CheckOrderDetl> orderDetails;
+}
diff --git a/src/main/java/com/zy/asrs/enums/OrderTypeEnum.java b/src/main/java/com/zy/asrs/enums/OrderTypeEnum.java
new file mode 100644
index 0000000..beb6825
--- /dev/null
+++ b/src/main/java/com/zy/asrs/enums/OrderTypeEnum.java
@@ -0,0 +1,38 @@
+package com.zy.asrs.enums;
+
+public enum OrderTypeEnum {
+
+    MATERIAL(1, "鐗╂枡妗f"),
+    OUT_NOTICE(2, "鍙戣揣閫氱煡鍗�"),
+    OTHER_IN(3, "鍏朵粬鍏ュ簱鍗�"),
+    IN_NOTICE(4, "鏀舵枡閫氱煡鍗�"),
+    PRODUCTION(5, "鐢熶骇姹囨姤鍗�"),
+    RETURN(6, "閫�璐ч�氱煡鍗�"),
+    OUT_APPLY(7, "鍑哄簱鐢宠鍗�"),
+    INVENTORY(8, "鐩樼偣鍗�"),
+    TRANSFER_IN(9, "璋冩嫧鍏ュ簱鍗�"),
+    ADJUSTMENT(10, "搴撳瓨璋冩暣鍗�"),
+    SALE_OUT(27, "鍙戣揣閫氱煡鍗�-閿�鍞嚭搴撳崟"),
+    PURCHASE_IN(28, "鏀舵枡閫氱煡鍗�-閲囪喘鍏ュ簱鍗�"),
+    PRODUCTION_IN(29, "鐢熶骇姹囨姤鍗�-鐢熶骇鍏ュ簱鍗�"),
+    PRODUCTION_OTHER_IN(30, "鐢熶骇姹囨姤鍗�-鍏朵粬鍏ュ簱鍗�"),
+    SALE_RETURN(31, "閫�璐ч�氱煡鍗�-閿�鍞��璐у崟"),
+    OTHER_OUT(32, "鍑哄簱鐢宠鍗�-鍏朵粬鍑哄簱鍗�"),
+    PRODUCT_IN(33, "鎴愬搧鍏ュ簱鍗�"),
+    PRODUCT_OUT(34, "鎴愬搧鍑哄簱鍗�");
+
+    public Integer type;
+    public String desc;
+    OrderTypeEnum(Integer type, String desc) {
+        this.type = type;
+        this.desc = desc;
+    }
+    public static String getDescByType(Integer type) {
+        for (OrderTypeEnum value : OrderTypeEnum.values()) {
+            if (value.type.equals(type)) {
+                return value.desc;
+            }
+        }
+        return null;
+    }
+}
diff --git a/src/main/java/com/zy/asrs/service/OpenService.java b/src/main/java/com/zy/asrs/service/OpenService.java
index afd90b1..bf4767c 100644
--- a/src/main/java/com/zy/asrs/service/OpenService.java
+++ b/src/main/java/com/zy/asrs/service/OpenService.java
@@ -43,4 +43,6 @@
      * @param param
      */
     void syncMat(MatSyncParam param);
+
+    void adjustmentOrderCreate(OpenAdjustmentOrderParam param);
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/CheckOrderServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/CheckOrderServiceImpl.java
index 43ff929..28004d3 100644
--- a/src/main/java/com/zy/asrs/service/impl/CheckOrderServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/CheckOrderServiceImpl.java
@@ -128,6 +128,7 @@
         }
 
         for (CheckOrderDetl checkOrderDetl: checkTaskListParam.getCheckOrderDetlList()){
+            checkOrderDetl.setDiffQty(checkOrderDetl.getWorkQty().subtract(checkOrderDetl.getAnfme()));
             checkOrderDetl.setStatus(3);
             if (!checkOrderDetlService.updateById(checkOrderDetl)){
                 throw new CoolException("鏇存柊鐩樼偣鐘舵�佸け璐�");
diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index 5277f6f..54d49d5 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.common.DateUtils;
+import com.core.common.R;
 import com.core.common.SnowflakeIdWorker;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
@@ -20,6 +21,7 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -49,6 +51,10 @@
     private TagService tagService;
     @Autowired
     private TagMapper tagMapper;
+    @Autowired
+    private CheckOrderDetlService checkOrderDetlService;
+    @Autowired
+    private CheckOrderService checkOrderService;
 
     @Override
     @Transactional
@@ -591,4 +597,63 @@
 
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void adjustmentOrderCreate(OpenAdjustmentOrderParam param) {
+        if(Cools.isEmpty(param.getOrderNo())){
+            String prefix = "";
+            DocType docType = docTypeService.selectById(param.getOrderNo());
+            if(!Cools.isEmpty(docType)){
+                prefix = "Adjust";
+            }
+            param.setOrderNo(prefix + snowflakeIdWorker.nextId());
+        }
+        CheckOrder checkOrder = checkOrderService.selectOne(new EntityWrapper<CheckOrder>().eq("order_no", param.getOrderNo()) );
+        if (checkOrder != null) {
+            throw new CoolException("鍗曟嵁宸插瓨鍦�");
+        }
+        Date now = new Date();
+        checkOrder = new CheckOrder();
+        checkOrder.setOrderNo(param.getOrderNo());
+        checkOrder.setUuid(String.valueOf(snowflakeIdWorker.nextId()));
+        checkOrder.setOrderTime( DateUtils.convert(now));
+        checkOrder.setDocType(param.getOrderType());
+        checkOrder.setSettle(1L);
+        checkOrder.setCreateBy(9527L);
+        checkOrder.setCreateTime(now);
+        checkOrder.setUpdateBy(9527L);
+        checkOrder.setUpdateTime(now);
+        checkOrder.setStatus(1);
+
+        if (!checkOrderService.insert(checkOrder)) {
+            throw new CoolException("淇濆瓨璋冩暣鍗曚富鍗曞け璐�");
+        }
+        for (CheckOrderDetl checkOrderDetl1 : param.getOrderDetails()) {
+            LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>()
+                    .eq("matnr", checkOrderDetl1.getMatnr())
+                    .eq("loc_no", checkOrderDetl1.getLocNo())
+                    .eq("batch", checkOrderDetl1.getBatch())
+            );
+            if (Cools.isEmpty(locDetl)) {
+                throw new CoolException("鏈壘鍒板簱瀛樻槑缁�,璇锋鏌ュ簱瀛�");
+            }
+            CheckOrderDetl checkOrderDetl = new CheckOrderDetl();
+            checkOrderDetl.sync(locDetl);
+            checkOrderDetl.setLocDetlId(locDetl.getId());
+            checkOrderDetl.setOrderId(checkOrder.getId());
+            checkOrderDetl.setOrderNo(checkOrder.getOrderNo());
+            checkOrderDetl.setAnfme(checkOrderDetl1.getAnfme());
+            checkOrderDetl.setDiffQty(checkOrderDetl1.getDiffQty());
+            checkOrderDetl.setWorkQty(checkOrderDetl1.getWorkQty());
+            checkOrderDetl.setStatus(4);
+            checkOrderDetl.setZpallet(locDetl.getZpallet());
+            checkOrderDetl.setCreateTime(now);
+            checkOrderDetl.setUpdateTime(now);
+            if (!checkOrderDetlService.insert(checkOrderDetl)) {
+                throw new CoolException("淇濆瓨璋冩暣鍗曟槑缁嗗け璐�");
+            }
+        }
+
+    }
+
 }
diff --git a/src/main/resources/mapper/CheckOrderDetlMapper.xml b/src/main/resources/mapper/CheckOrderDetlMapper.xml
index 91fe3dc..10df052 100644
--- a/src/main/resources/mapper/CheckOrderDetlMapper.xml
+++ b/src/main/resources/mapper/CheckOrderDetlMapper.xml
@@ -8,7 +8,7 @@
         <result column="order_id" property="orderId" />
         <result column="order_no" property="orderNo" />
         <result column="anfme" property="anfme" />
-        <result column="qty" property="qty" />
+        <result column="diff_qty" property="diffQty" />
         <result column="matnr" property="matnr" />
         <result column="maktx" property="maktx" />
         <result column="batch" property="batch" />
diff --git a/src/main/webapp/static/js/adjustOrder/adjustOrder.js b/src/main/webapp/static/js/adjustOrder/adjustOrder.js
new file mode 100644
index 0000000..cff3f3e
--- /dev/null
+++ b/src/main/webapp/static/js/adjustOrder/adjustOrder.js
@@ -0,0 +1,552 @@
+var insTbCount = 0;
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"
+}).extend({
+    notice: 'notice/notice',
+}).use(['layer', 'form', 'table', 'util', 'admin', 'xmSelect', 'laydate','tableMerge','notice'], 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;
+    var tableMerge = layui.tableMerge;
+    var notice = layui.notice;
+
+    // 娓叉煋鎼滅储妯℃澘
+    $.ajax({
+        url: baseUrl+"/docType/list/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+'/adjustOrder/list/auth',
+        headers: {token: localStorage.getItem('token')},
+        page: true,
+        cellMinWidth: 100,
+        cols: [[
+            {type: 'numbers'},
+            {field: 'orderNo', title: '鍗曟嵁缂栧彿'},
+            {field: 'docType$', align: 'center', title: '绫诲瀷',  minWidth: 160, width: 160},
+            {align: 'center', title: '鏄庣粏', toolbar: '#tbLook', minWidth: 160, width: 160},
+            {field: 'createTime$', title: '鍒涘缓鏃堕棿', minWidth: 200, width: 200},
+            {field: 'settle$', align: 'center', title: '鐘舵��', templet: '#settleTpl',  minWidth: 160, width: 160},
+            {field: 'memo', align: 'center',title: '澶囨敞', hide: true},
+            {align: 'center', title: '鎿嶄綔', toolbar: '#operate',}
+        ]],
+        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 === 'adjust') {
+            pakoutPreview(data.id);
+        }else if (layEvent === 'export') {
+            export1(data.id);
+        }else if (layEvent === 'del') {
+            doDel(data.id);
+        } else if (layEvent === 'complete') {
+            doModify(data.id, data.orderNo, 4);
+        } 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: '1000px',
+                offset: [top + 'px', (left - 700 + $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+'/checkOrderDetl/list/auth',
+                        where: {
+                            order_id: data.id
+                        },
+                        page: true,
+                        cellMinWidth: 100,
+                        cols: [[
+                            {type: 'numbers'},
+                            {field: 'locNo', title: '搴撲綅鍙�', width: 120},
+                            {field: 'zpallet', title: '瀹瑰櫒鐮�', width: 120},
+                            {field: 'matnr', title: '鍟嗗搧缂栫爜', width: 160},
+                            {field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 160},
+                            {field: 'batch', title: '鎵瑰彿'},
+                            {field: 'diffQty', title: '宸紓鏁伴噺', style: 'font-weight: bold'},
+                            // {field: 'unit', title: '鍗曚綅'},
+                            // {
+                            //     field: 'createTime$', title: '鍒涘缓鏃堕棿', sort: true, templet: function (d) {
+                            //         return util.toDateString(d.createTime);
+                            //     },  width: 180
+                            // },
+                            // {field: 'inQty', title: '宸插叆搴撻噺'},
+                            // {field: 'color', title: '棰滆壊'},
+                            {field: 'specs', title: '瑙勬牸'},
+                            {field: 'status$', 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:  (res) => {
+                            if(res.code == 403){
+                                window.top.location.href = baseUrl+"/";
+                            }
+                            $(layero).find('.layui-table-view').css('margin', '0');
+                        },
+                        size: ''
+                    });
+                }
+            });
+        }
+    });
+
+    // 鏄剧ず琛ㄥ崟寮圭獥
+    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);
+                    layer.load(2);
+                    if (isExpAdd){
+                        $.ajax({
+                            url: baseUrl+"/checkOrder/form/" + "add" + "/auth",
+                            headers: {'token': localStorage.getItem('token')},
+                            data: JSON.stringify({
+                                orderId: Number(data.field.id),
+                                docType: Number(data.field.docType),
+                                orderNo: data.field.orderNo,
+                                locDetlList: 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});
+                                }
+                            }
+                        })
+                    }else {
+                        $.ajax({
+                            url: baseUrl+"/checkOrder/form/" + "modify" + "/auth",
+                            headers: {'token': localStorage.getItem('token')},
+                            data: JSON.stringify({
+                                orderId: Number(data.field.id),
+                                docType: Number(data.field.docType),
+                                orderNo: data.field.orderNo,
+                                checkOrderDetls: 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: 'locNo', title: '搴撲綅鍙�'},
+                        {field: 'matnr', title: '鍟嗗搧缂栫爜', width: 160},
+                        {field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 200},
+                        {field: 'batch', title: '鎵瑰彿'},
+                        {field: 'specs', title: '瑙勬牸'},
+                        {field: 'anfme', title: '鏁伴噺', minWidth: 110, width: 110},
+                        // {field: 'unit', title: '鍗曚綅', width: 80},
+                        {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+"/checkOrderDetl/select/all?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 === 'del') {
+                        if(data.workQty > 0){
+                            layer.msg("宸插瓨鍦ㄤ綔涓氭暟閲忥紝涓嶈兘鍒犻櫎", {icon: 2});
+                            return;
+                        }
+                        layer.confirm('纭畾瑕佸垹闄ゅ悧锛�', {
+                            shade: .1,
+                            skin: 'layui-layer-admin'
+                        }, function (i) {
+                            layer.close(i);
+                            for (var j = 0; j < xxDataList.length; j++) {
+                                if (xxDataList[j].matnr === data.matnr && xxDataList[j].batch === data.batch) {
+                                    xxDataList.splice(j, 1);
+                                    break;
+                                }
+                            }
+                            insTbSSXM.reload({data: xxDataList, page: {curr: 1}});
+                        });
+                    }
+                });
+
+                // 鍏ㄥ眬鍑芥暟锛岀敤浜庢帴鏀朵粠搴撳瓨鏌ヨ椤甸潰杩斿洖鐨勬暟鎹�
+                window.addCheckOrderTableData = function(data) {
+                    // 澶勭悊閫変腑鐨勫簱瀛樻暟鎹�
+                    var addedCount = 0;
+                    var duplicateCount = 0;
+                    for (var i = 0; i < data.length; i++) {
+                        // 鍒ゆ柇鏄惁宸插瓨鍦ㄧ浉鍚岀殑鍟嗗搧缂栫爜鍜屾壒鍙�
+                        var isDuplicate = false;
+                        for (var j = 0; j < xxDataList.length; j++) {
+                            if (xxDataList[j].locNo === data[i].locNo && xxDataList[j].matnr === data[i].matnr && xxDataList[j].batch === data[i].batch) {
+                                if (xxDataList[j].diffQty !== 0){
+                                    isDuplicate = true;
+                                    duplicateCount++;
+                                    break;
+                                }
+
+                            }
+                        }
+                        if (data[j].diffQty !== 0){
+                            isDuplicate = true;
+                            duplicateCount++;
+                        }
+                        // 濡傛灉涓嶉噸澶嶏紝鍒欐坊鍔犲埌鍒楄〃
+                        if (!isDuplicate) {
+                            xxDataList.push({...data[i]});
+                            addedCount++;
+                        }
+                    }
+                    insTbSSXM.reload({data: xxDataList, page: {curr: 1}});
+                    // 鎻愮ず娣诲姞缁撴灉
+                    if (duplicateCount > 0) {
+                        layer.msg('鎴愬姛娣诲姞 ' + addedCount + ' 鏉℃暟鎹紝' + duplicateCount + ' 鏉℃暟鎹凡蹇界暐', {icon: 1});
+                    } else if (addedCount > 0) {
+                        layer.msg('鎴愬姛娣诲姞 ' + addedCount + ' 鏉℃暟鎹�', {icon: 1});
+                    }
+                };
+
+                $('#matAddBtnComment').click(function () {
+                    showEditModel2();
+                });
+
+                // 鏄剧ず娣诲姞鏄庣粏琛ㄥ崟寮圭獥 - 鎻愬彇搴撳瓨
+                function showEditModel2(exp) {
+                    let loadIndex = layer.msg('璇锋眰涓�...', {icon: 16, shade: 0.01, time: false});
+                    layer.open({
+                        type: 2,
+                        title: '鎻愬彇搴撳瓨',
+                        closeBtn: 1,
+                        maxmin: false,
+                        area: ['90%', '85%'],
+                        shadeClose: true,
+                        content: 'checkOrderLocQuery.html',
+                        success: function(layero, index){
+                            layer.close(loadIndex);
+                        }
+                    });
+                }
+
+            }
+        });
+    }
+
+    // 鍒犻櫎鍗曟嵁
+    function doDel(orderId) {
+        layer.confirm('纭畾瑕佸垹闄ゅ悧锛�', {
+            shade: .1,
+            skin: 'layui-layer-admin'
+        }, function (i) {
+            layer.close(i);
+            layer.load(2);
+            $.ajax({
+                url: baseUrl+"/checkOrder/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, orderNo, settle) {
+        layer.confirm('纭畾瑕佹墜鍔ㄥ畬缁撳悧锛�', {
+            shade: .1,
+            skin: 'layui-layer-admin'
+        }, function (i) {
+            layer.close(i);
+            layer.load(2);
+            $.ajax({
+                url: baseUrl+"/checkOrder/complete/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 pakoutPreview(id) {
+        let loadIndex = layer.load(2);
+        $.ajax({
+            url: baseUrl + "/checkOrder/preview/auth",
+            headers: {'token': localStorage.getItem('token')},
+            data: {
+                orderId: id
+            },
+            method: 'POST',
+            success: function (res) {
+                if (res.code === 200){
+
+                } else if (res.code === 403){
+                    top.location.href = baseUrl+"/";
+                } else {
+                    layer.msg(res.msg, {icon: 2})
+                }
+            }
+        })
+    }
+
+    function export1(id) {
+        notice.msg('姝e湪瀵煎嚭鏂囦欢......', {icon: 4});
+        $.ajax({
+            url: baseUrl + "/checkOrder/export/auth",
+            headers: {'token': localStorage.getItem('token')},
+            data: {
+                orderId: id
+            },
+            method: 'POST',
+            xhrFields: {
+                responseType: 'blob'
+            },
+            success: function (data, status, xhr) {
+                notice.destroy();
+                // 浠庡搷搴斿ご鑾峰彇鏂囦欢鍚�
+                var disposition = xhr.getResponseHeader('Content-Disposition');
+                var filename = '鐩樼偣宸紓鍗�.xlsx';
+                if (disposition && disposition.indexOf('filename') !== -1) {
+                    var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
+                    var matches = filenameRegex.exec(disposition);
+                    if (matches != null && matches[1]) {
+                        filename = decodeURIComponent(matches[1].replace(/['"]/g, ''));
+                    }
+                }
+                
+                // 鍒涘缓涓嬭浇閾炬帴
+                var blob = new Blob([data], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'});
+                var link = document.createElement('a');
+                link.href = window.URL.createObjectURL(blob);
+                link.download = filename;
+                document.body.appendChild(link);
+                link.click();
+                document.body.removeChild(link);
+                window.URL.revokeObjectURL(link.href);
+                
+                layer.msg('瀵煎嚭鎴愬姛', {icon: 1});
+            },
+            error: function (xhr, status, error) {
+                notice.destroy();
+                if (xhr.status === 403) {
+                    top.location.href = baseUrl + "/";
+                } else {
+                    layer.msg('瀵煎嚭澶辫触锛�' + error, {icon: 2});
+                }
+            }
+        });
+    }
+
+    function pakout(tableCache, layerIndex) {
+        // let loadIndex = layer.load(2);
+        notice.msg('姝e湪鐢熸垚鐩樼偣鍑哄簱浠诲姟......', {icon: 4});
+        $.ajax({
+            url: baseUrl + "/out/checkPakOut/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});
+                } 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/src/main/webapp/static/js/adjustOrder/checkOrderLocQuery.js b/src/main/webapp/static/js/adjustOrder/checkOrderLocQuery.js
new file mode 100644
index 0000000..d58cd7c
--- /dev/null
+++ b/src/main/webapp/static/js/adjustOrder/checkOrderLocQuery.js
@@ -0,0 +1,118 @@
+function getCol() {
+    var cols = [
+        {type: 'checkbox', merge: ['locNo']}
+        ,{field: 'locNo', align: 'center',title: '搴撲綅鍙�', merge: true, style: 'font-weight: bold'}
+    ];
+    cols.push.apply(cols, detlCols);
+    cols.push({field: 'modiUser', align: 'center',title: '淇敼浜哄憳', hide: true}
+        ,{field: 'modiTime', align: 'center',title: '淇敼鏃堕棿'})
+    return cols;
+}
+
+layui.config({
+    base: baseUrl + "/static/layui/lay/modules/"
+}).use(['table','laydate', 'form', 'admin', 'tableMerge'], function() {
+    var table = layui.table;
+    var $ = layui.jquery;
+    var layer = layui.layer;
+    var layDate = layui.laydate;
+    var form = layui.form;
+    var admin = layui.admin;
+    var tableMerge = layui.tableMerge;
+
+    // 鏁版嵁娓叉煋
+    var locDetlTableIns = table.render({
+        elem: '#checkOrderLocQuery',
+        headers: {token: localStorage.getItem('token')},
+        url: baseUrl+'/stock/out/list/auth',
+        page: true,
+        limits: [16, 30, 50, 100, 200, 500],
+        limit: 16,
+        even: true,
+        toolbar: '#toolbar',
+        cellMinWidth: 50,
+        cols: [getCol()],
+        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
+        }
+    });
+
+    // 鐩戝惉澶村伐鍏锋爮浜嬩欢
+    table.on('toolbar(checkOrderLocQuery)', function (obj) {
+        var checkStatus = table.checkStatus(String(obj.config.id));
+        var data = checkStatus.data;
+        switch(obj.event) {
+            case 'confirm':
+                if (data.length === 0){
+                    layer.msg("璇烽�夋嫨鏁版嵁");
+                    return;
+                }
+
+                if (data.some(obj => obj.frozen === 1)) {
+                    layer.msg("鍐荤粨鐨勫簱瀛樹笉鍏佽閫夋嫨锛�");
+                    return;
+                }
+
+                let locNos = [];
+                data.forEach(function(elem) {
+                    locNos.push(elem.locNo);
+                });
+                $.ajax({
+                    url: baseUrl+"/locDetl/auth",
+                    headers: {'token': localStorage.getItem('token')},
+                    data: {locNos:locNos},
+                    method: 'POST',
+                    async: false,
+                    success: function (res) {
+                        if (res.code === 200) {
+                            data = res.data;
+                        } else if (res.code === 403) {
+                            top.location.href = baseUrl + "/";
+                        } else {
+                            layer.msg(res.msg)
+                        }
+                    }
+                })
+
+                parent.addCheckOrderTableData(data);
+                
+                // 鍏抽棴褰撳墠寮圭獥
+                var index = parent.layer.getFrameIndex(window.name);
+                parent.layer.close(index);
+                break;
+        }
+    });
+
+    // 鎼滅储鏍忔悳绱簨浠�
+    form.on('submit(search)', function (data) {
+        tableReload();
+    });
+
+    layDate.render({
+        elem: '.layui-laydate-range'
+        ,type: 'datetime'
+        ,range: true
+    });
+
+    function tableReload() {
+        var searchData = {};
+        $.each($('#search-box [name]').serializeArray(), function() {
+            searchData[this.name] = this.value;
+        });
+        locDetlTableIns.reload({
+            where: searchData,
+        });
+    }
+});
diff --git a/src/main/webapp/static/js/checkOrder/checkOrder.js b/src/main/webapp/static/js/checkOrder/checkOrder.js
index 186aa3c..24cd161 100644
--- a/src/main/webapp/static/js/checkOrder/checkOrder.js
+++ b/src/main/webapp/static/js/checkOrder/checkOrder.js
@@ -332,10 +332,17 @@
                         var isDuplicate = false;
                         for (var j = 0; j < xxDataList.length; j++) {
                             if (xxDataList[j].locNo === data[i].locNo && xxDataList[j].matnr === data[i].matnr && xxDataList[j].batch === data[i].batch) {
-                                isDuplicate = true;
-                                duplicateCount++;
-                                break;
+                                if (xxDataList[j].diffQty !== 0){
+                                    isDuplicate = true;
+                                    duplicateCount++;
+                                    break;
+                                }
+
                             }
+                        }
+                        if (data[j].diffQty !== 0){
+                            isDuplicate = true;
+                            duplicateCount++;
                         }
                         // 濡傛灉涓嶉噸澶嶏紝鍒欐坊鍔犲埌鍒楄〃
                         if (!isDuplicate) {
@@ -346,7 +353,7 @@
                     insTbSSXM.reload({data: xxDataList, page: {curr: 1}});
                     // 鎻愮ず娣诲姞缁撴灉
                     if (duplicateCount > 0) {
-                        layer.msg('鎴愬姛娣诲姞 ' + addedCount + ' 鏉℃暟鎹紝' + duplicateCount + ' 鏉¢噸澶嶆暟鎹凡蹇界暐', {icon: 1});
+                        layer.msg('鎴愬姛娣诲姞 ' + addedCount + ' 鏉℃暟鎹紝' + duplicateCount + ' 鏉℃暟鎹凡蹇界暐', {icon: 1});
                     } else if (addedCount > 0) {
                         layer.msg('鎴愬姛娣诲姞 ' + addedCount + ' 鏉℃暟鎹�', {icon: 1});
                     }
diff --git a/src/main/webapp/views/adjustOrder/adjustOrder.html b/src/main/webapp/views/adjustOrder/adjustOrder.html
new file mode 100644
index 0000000..88755a2
--- /dev/null
+++ b/src/main/webapp/views/adjustOrder/adjustOrder.html
@@ -0,0 +1,270 @@
+<!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;
+        }
+        .layui-table-view .layui-table-cell .layui-select-title .layui-input {
+            height: 28px;
+            line-height: 28px;
+        }
+    </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 == 0 || d.settle == 1) { }}
+    <a class="layui-btn layui-btn-primary layui-btn-xs layui-border-blue" lay-event="adjust">璋冩暣搴撳瓨</a>
+    <a class="layui-btn layui-btn-danger layui-btn-xs btn-delete" lay-event="del">鍒犻櫎</a>
+    {{# } }}
+    {{# if (d.settle == 2 || d.settle == 11) { }}
+    <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="complete">瀹岀粨</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" class="layui-badge layui-badge-gray">{{d.settle$}}</span>-->
+<!--</script>-->
+<script type="text/html" id="settleTpl">
+    <span name="settle"
+          {{# if( d.settle === 1){ }}
+          class="layui-badge layui-badge-red"
+          {{# }else if(d.settle === 2){ }}
+          class="layui-badge layui-badge-green"
+          {{# }else if(d.settle === 11){ }}
+          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" data-condition="鐩樼偣鍗�"  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 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/template" id="batchStaSelectTpl">
+    <option value="">閫夋嫨鍑哄簱绔�</option>
+    {{#each list}}
+    <option value="{{this}}">{{this}}</option>
+    {{/each}}
+</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/adjustOrder/adjustOrder.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/src/main/webapp/views/adjustOrder/checkOrderLocQuery.html b/src/main/webapp/views/adjustOrder/checkOrderLocQuery.html
new file mode 100644
index 0000000..7d60c34
--- /dev/null
+++ b/src/main/webapp/views/adjustOrder/checkOrderLocQuery.html
@@ -0,0 +1,115 @@
+<!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">
+    <style>
+        .layui-table-box {
+            border-right: 1px solid #9F9F9F;
+            border-left: 1px solid #9F9F9F;
+        }
+
+        #search-box {
+            padding: 30px 0 20px 0;
+        }
+        #search-box .layui-inline:first-child {
+            margin-left: 30px;
+        }
+        #search-box .layui-inline {
+            margin-right: 5px;
+        }
+
+        #data-search-btn {
+            margin-left: 10px;
+            display: inline-block;
+        }
+        #data-search-btn.layui-btn-container .layui-btn {
+            margin-right: 20px;
+        }
+    </style>
+</head>
+<body>
+<!-- <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> -->
+<!-- 鎼滅储鏍� -->
+<fieldset class="layui-elem-field site-demo-button" style="margin: 20px;">
+    <legend>鎼滅储鏍�</legend>
+    <div id="search-box" class="layui-form layui-card-header">
+        <div class="layui-inline">
+            <div class="layui-input-inline cool-auto-complete">
+                <input id="crnNo" class="layui-input" name="crnNo" type="text" placeholder="璇疯緭鍏�" autocomplete="off" style="display: none">
+                <input id="crnNo$" 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="basCrnpQueryBycrnNo" onkeyup="autoLoad(this.getAttribute('data-key'))">
+                    <select class="cool-auto-complete-window-select" data-key="basCrnpQueryBycrnNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
+                    </select>
+                </div>
+            </div>
+        </div>
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <input class="layui-input" type="text" name="loc_no" placeholder="搴撲綅鍙�" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <input class="layui-input" type="text" name="matnr" placeholder="鍟嗗搧缂栧彿"  autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <input class="layui-input" type="text" name="specs" placeholder="瑙勬牸"  autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <input class="layui-input" type="text" name="maktx" placeholder="鐗╂枡鎻忚堪" autocomplete="off">
+            </div>
+        </div>
+        <div class="layui-inline">
+            <div class="layui-input-inline">
+                <select name="frozen" class="layui-input" type="text" autocomplete="off">
+                    <option value="">鍐荤粨鍚�</option>
+                    <option value="0">鏈喕缁�</option>
+                    <option value="1">宸插喕缁�</option>
+                </select>
+            </div>
+        </div>
+        <div class="layui-inline" style="width: 300px">
+            <div class="layui-input-inline">
+                <input class="layui-input layui-laydate-range" name="modi_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
+            </div>
+        </div>
+        <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block">
+            <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>
+        </div>
+    </div>
+</fieldset>
+
+<script type="text/html" id="toolbar">
+    <div class="layui-btn-container">
+        <button class="layui-btn" id="btn-confirm" lay-event="confirm">鎻愬彇</button>
+    </div>
+</script>
+
+<div class="layui-form">
+    <table class="layui-hide" id="checkOrderLocQuery" lay-filter="checkOrderLocQuery"></table>
+</div>
+
+<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/handlebars/handlebars-v4.5.3.js"></script>
+<script type="text/javascript" src="../../static/js/checkOrder/checkOrderLocQuery.js" charset="utf-8"></script>
+
+</body>
+</html>

--
Gitblit v1.9.1