From 9d38f2354b3a7267a2486d937bb7d256fcb949c1 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期五, 13 六月 2025 08:15:48 +0800
Subject: [PATCH] #增加生产日期,到期日期字段,增加库存明细超期库存检索

---
 src/main/webapp/static/js/agvLocDetl/locDetl.js                  |   30 ++++
 src/main/webapp/views/locDetl/locDetl.html                       |    2 
 src/main/java/com/zy/asrs/entity/param/CombParam.java            |   10 +
 src/main/java/com/zy/asrs/controller/AgvLocDetlController.java   |   13 +
 src/main/java/com/zy/asrs/entity/AgvLocDetl.java                 |   23 +++
 src/main/java/com/zy/asrs/entity/AgvWaitPakin.java               |   19 ++
 src/main/java/com/zy/asrs/entity/AgvWrkDetl.java                 |   20 ++
 src/main/java/com/zy/common/web/WcsController.java               |    2 
 src/main/webapp/static/js/orderDetl/orderDetl.js                 |    2 
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java      |    2 
 src/main/java/com/zy/asrs/entity/WrkDetl.java                    |   20 ++
 src/main/java/com/zy/asrs/entity/param/StockOutParam.java        |    3 
 src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java   |   23 ++-
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java    |    8 
 src/main/java/com/zy/common/model/DetlDto.java                   |   19 ++
 src/main/webapp/static/js/common.js                              |    2 
 src/main/java/com/zy/asrs/entity/param/FullStoreParam.java       |    7 +
 src/main/java/com/zy/asrs/entity/OrderDetl.java                  |   29 ++++
 src/main/java/com/zy/asrs/controller/LocDetlController.java      |   20 ++
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java      |    4 
 src/main/webapp/static/js/locDetlStatis/locDetlStatis.js         |    3 
 src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java   |    3 
 src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java |    4 
 src/main/webapp/views/agvLocDetl/locDetl.html                    |    1 
 src/main/java/com/zy/common/model/LocDto.java                    |   16 ++
 src/main/webapp/static/js/locDetl/locDetl.js                     |   31 ++++
 src/main/java/com/zy/asrs/entity/WaitPakin.java                  |   19 ++
 src/main/webapp/static/js/waitPakin/waitPakin.js                 |    4 
 src/main/java/com/zy/asrs/entity/LocDetl.java                    |   24 +++
 src/main/webapp/static/js/waitPakinLog/waitPakinLog.js           |    4 
 src/main/resources/application.yml                               |    2 
 31 files changed, 335 insertions(+), 34 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/AgvLocDetlController.java b/src/main/java/com/zy/asrs/controller/AgvLocDetlController.java
index f98d3f4..e376151 100644
--- a/src/main/java/com/zy/asrs/controller/AgvLocDetlController.java
+++ b/src/main/java/com/zy/asrs/controller/AgvLocDetlController.java
@@ -8,6 +8,7 @@
 import com.core.common.DateUtils;
 import com.core.common.R;
 import com.zy.asrs.entity.AgvLocDetl;
+import com.zy.asrs.entity.LocDetl;
 import com.zy.asrs.entity.Mat;
 import com.zy.asrs.service.AgvLocDetlService;
 import com.zy.asrs.service.MatService;
@@ -20,6 +21,7 @@
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
+import java.time.LocalDate;
 import java.util.List;
 import java.util.Map;
 
@@ -40,14 +42,23 @@
                   @RequestParam(required = false)String orderByType,
                   @RequestParam(required = false)String condition,
                   @RequestParam Map<String, Object> param,
-                  @RequestParam(required = false)Boolean unreason){
+                  @RequestParam(required = false)Boolean unreason,
+                  @RequestParam(required = false)Boolean expired){
         if (!Cools.isEmpty(unreason) && unreason) {
 
             return R.ok(agvLocDetlService.selectPage(new Page<>(curr, limit), new EntityWrapper<AgvLocDetl>()
                     .where(" DATALENGTH( batch ) != 11 or\n" +
                             "            batch LIKE '%[a-z]%'")));
         }
+        if (!Cools.isEmpty(expired) && expired) {
+            return R.ok(agvLocDetlService.selectPage(
+                    new Page<>(curr, limit),
+                    new EntityWrapper<AgvLocDetl>()
+                            .where("deadline < {0}", LocalDate.now())  // 鏂板鐨勮繃鏈熷垽鏂�
+            ));
+        }
         param.remove("unreason");
+        param.remove("expired");
         String row = "";
         EntityWrapper<AgvLocDetl> wrapper = new EntityWrapper<>();
         if (param.get("row") != null) {
diff --git a/src/main/java/com/zy/asrs/controller/LocDetlController.java b/src/main/java/com/zy/asrs/controller/LocDetlController.java
index 3ab417a..be58971 100644
--- a/src/main/java/com/zy/asrs/controller/LocDetlController.java
+++ b/src/main/java/com/zy/asrs/controller/LocDetlController.java
@@ -19,6 +19,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.time.LocalDate;
 import java.util.*;
 
 @RestController
@@ -86,14 +87,23 @@
                   @RequestParam(required = false)String orderByType,
                   @RequestParam(required = false)String condition,
                   @RequestParam Map<String, Object> param,
-                  @RequestParam(required = false)Boolean unreason){
+                  @RequestParam(required = false)Boolean unreason,
+                @RequestParam(required = false)Boolean expired){
         if (!Cools.isEmpty(unreason) && unreason) {
-
-            return R.ok(locDetlService.selectPage(new Page<>(curr, limit), new EntityWrapper<LocDetl>()
-                    .where(" DATALENGTH( batch ) != 11 or\n" +
-                            "            batch LIKE '%[a-z]%'")));
+            return R.ok(locDetlService.selectPage(
+                    new Page<>(curr, limit),
+                    new EntityWrapper<LocDetl>()
+                            .where(" DATALENGTH(batch) != 11 OR batch LIKE '%[a-z]%'")));
+        }
+        if (!Cools.isEmpty(expired) && expired) {
+            return R.ok(locDetlService.selectPage(
+                    new Page<>(curr, limit),
+                    new EntityWrapper<LocDetl>()
+                            .where("deadline < {0}", LocalDate.now())  // 鏂板鐨勮繃鏈熷垽鏂�
+            ));
         }
         param.remove("unreason");
+        param.remove("expired");
         String row = "";
         EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
         if (param.get("row") != null) {
diff --git a/src/main/java/com/zy/asrs/entity/AgvLocDetl.java b/src/main/java/com/zy/asrs/entity/AgvLocDetl.java
index 1ea03d2..e6c4e18 100644
--- a/src/main/java/com/zy/asrs/entity/AgvLocDetl.java
+++ b/src/main/java/com/zy/asrs/entity/AgvLocDetl.java
@@ -12,6 +12,7 @@
 import com.zy.system.service.UserService;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
 import java.text.SimpleDateFormat;
@@ -160,6 +161,15 @@
     @TableField("stock_freeze")
     @ApiModelProperty(value= "搴撳瓨鍐荤粨{1:姝e父,0:鍐荤粨}")
     private Integer stockFreeze;
+    @ApiModelProperty(value= "鐢熶骇鏃ユ湡")
+    @TableField("proddate")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+
+    private Date proddate;
+    @ApiModelProperty(value= "鍒版湡鏃ユ湡")
+    @TableField("deadline")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    private Date deadline;
 
     public String getLocNo$(){
         LocMastService service = SpringUtils.getBean(LocMastService.class);
@@ -262,5 +272,16 @@
         }
         return this.stockFreeze == 1 ? "姝e父" : "鍐荤粨";
     }
-
+    public String getProddate$(){
+        if (Cools.isEmpty(this.proddate)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd").format(this.proddate);
+    }
+    public String getDeadline$(){
+        if (Cools.isEmpty(this.deadline)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd").format(this.deadline);
+    }
 }
diff --git a/src/main/java/com/zy/asrs/entity/AgvWaitPakin.java b/src/main/java/com/zy/asrs/entity/AgvWaitPakin.java
index 2dc0a4e..db53ce1 100644
--- a/src/main/java/com/zy/asrs/entity/AgvWaitPakin.java
+++ b/src/main/java/com/zy/asrs/entity/AgvWaitPakin.java
@@ -150,7 +150,26 @@
 
     @ApiModelProperty(value= "澶囨敞")
     private String memo;
+    @ApiModelProperty(value= "鐢熶骇鏃ユ湡")
+    @TableField("proddate")
+    private Date proddate;
+    @ApiModelProperty(value= "鍒版湡鏃ユ湡")
+    @TableField("deadline")
+    private Date deadline;
 
+
+    public String getProddate$(){
+        if (Cools.isEmpty(this.proddate)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd").format(this.proddate);
+    }
+    public String getDeadline$(){
+        if (Cools.isEmpty(this.deadline)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd").format(this.deadline);
+    }
     public String getBeBatch$(){
         if (null == this.beBatch){ return null; }
         switch (this.beBatch){
diff --git a/src/main/java/com/zy/asrs/entity/AgvWrkDetl.java b/src/main/java/com/zy/asrs/entity/AgvWrkDetl.java
index 7f89042..3c20cef 100644
--- a/src/main/java/com/zy/asrs/entity/AgvWrkDetl.java
+++ b/src/main/java/com/zy/asrs/entity/AgvWrkDetl.java
@@ -268,7 +268,12 @@
      */
     @ApiModelProperty(value= "澶囨敞")
     private String memo;
-
+    @ApiModelProperty(value= "鐢熶骇鏃ユ湡")
+    @TableField("proddate")
+    private Date proddate;
+    @ApiModelProperty(value= "鍒版湡鏃ユ湡")
+    @TableField("deadline")
+    private Date deadline;
     public String getIoTime$(){
         if (Cools.isEmpty(this.ioTime)){
             return "";
@@ -276,6 +281,19 @@
         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime);
     }
 
+    public String getProddate$(){
+        if (Cools.isEmpty(this.proddate)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd").format(this.proddate);
+    }
+    public String getDeadline$(){
+        if (Cools.isEmpty(this.deadline)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd").format(this.deadline);
+    }
+
     public String getBeBatch$(){
         if (null == this.beBatch){ return null; }
         switch (this.beBatch){
diff --git a/src/main/java/com/zy/asrs/entity/LocDetl.java b/src/main/java/com/zy/asrs/entity/LocDetl.java
index ccb2015..4353bb9 100644
--- a/src/main/java/com/zy/asrs/entity/LocDetl.java
+++ b/src/main/java/com/zy/asrs/entity/LocDetl.java
@@ -12,6 +12,7 @@
 import com.zy.system.service.UserService;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
 import java.text.SimpleDateFormat;
@@ -157,6 +158,17 @@
     @ApiModelProperty(value= "澶囨敞")
     private String memo;
 
+    @ApiModelProperty(value= "鐢熶骇鏃ユ湡")
+    @TableField("proddate")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+
+    private Date proddate;
+    @ApiModelProperty(value= "鍒版湡鏃ユ湡")
+    @TableField("deadline")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+    private Date deadline;
+
+
     @TableField("stock_freeze")
     @ApiModelProperty(value= "搴撳瓨鍐荤粨{1:姝e父,0:鍐荤粨}")
     private Integer stockFreeze;
@@ -244,6 +256,18 @@
         }
         return null;
     }
+    public String getProddate$(){
+        if (Cools.isEmpty(this.proddate)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd").format(this.proddate);
+    }
+    public String getDeadline$(){
+        if (Cools.isEmpty(this.deadline)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd").format(this.deadline);
+    }
 
     public String getAppeTime$(){
         if (Cools.isEmpty(this.appeTime)){
diff --git a/src/main/java/com/zy/asrs/entity/OrderDetl.java b/src/main/java/com/zy/asrs/entity/OrderDetl.java
index 2d20f94..a09ec06 100644
--- a/src/main/java/com/zy/asrs/entity/OrderDetl.java
+++ b/src/main/java/com/zy/asrs/entity/OrderDetl.java
@@ -279,6 +279,18 @@
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
     private Date updateTime;
 
+
+    @ApiModelProperty(value= "鐢熶骇鏃ユ湡")
+    @TableField("proddate")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+
+    private Date proddate;
+    @ApiModelProperty(value= "鍒版湡鏃ユ湡")
+    @TableField("deadline")
+    @DateTimeFormat(pattern="yyyy-MM-dd")
+
+    private Date deadline;
+
     /**
      * 澶囨敞
      */
@@ -287,7 +299,7 @@
 
     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) {
+    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,Date proddate, Date deadline) {
         this.orderId = orderId;
         this.orderNo = orderNo;
         this.anfme = anfme;
@@ -327,6 +339,8 @@
         this.updateBy = updateBy;
         this.updateTime = updateTime;
         this.memo = memo;
+        this.proddate = proddate;
+        this.deadline = deadline;
     }
 
     public String getOrderId$(){
@@ -432,6 +446,19 @@
         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
     }
 
+    public String getProddate$(){
+        if (Cools.isEmpty(this.proddate)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd").format(this.proddate);
+    }
+    public String getDeadline$(){
+        if (Cools.isEmpty(this.deadline)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd").format(this.deadline);
+    }
+
     public Double getEnableQty() {
         Double enableQty = null;
         if (null != this.anfme && this.qty != null) {
diff --git a/src/main/java/com/zy/asrs/entity/WaitPakin.java b/src/main/java/com/zy/asrs/entity/WaitPakin.java
index 5692c8d..bc4a45f 100644
--- a/src/main/java/com/zy/asrs/entity/WaitPakin.java
+++ b/src/main/java/com/zy/asrs/entity/WaitPakin.java
@@ -148,6 +148,12 @@
     @ApiModelProperty(value= "鍒涘缓鑰�")
     @TableField("appe_user")
     private Long appeUser;
+    @ApiModelProperty(value= "鐢熶骇鏃ユ湡")
+    @TableField("proddate")
+    private Date proddate;
+    @ApiModelProperty(value= "鍒版湡鏃ユ湡")
+    @TableField("deadline")
+    private Date deadline;
 
     @ApiModelProperty(value= "澶囨敞")
     private String memo;
@@ -215,7 +221,18 @@
         }
         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime);
     }
-
+    public String getProddate$(){
+        if (Cools.isEmpty(this.proddate)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd").format(this.proddate);
+    }
+    public String getDeadline$(){
+        if (Cools.isEmpty(this.deadline)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd").format(this.deadline);
+    }
     public void sync(Object source) {
         Synchro.Copy(source, this);
     }
diff --git a/src/main/java/com/zy/asrs/entity/WrkDetl.java b/src/main/java/com/zy/asrs/entity/WrkDetl.java
index ae755c0..184d5b0 100644
--- a/src/main/java/com/zy/asrs/entity/WrkDetl.java
+++ b/src/main/java/com/zy/asrs/entity/WrkDetl.java
@@ -269,6 +269,13 @@
     @ApiModelProperty(value= "澶囨敞")
     private String memo;
 
+    @ApiModelProperty(value= "鐢熶骇鏃ユ湡")
+    @TableField("proddate")
+    private Date proddate;
+    @ApiModelProperty(value= "鍒版湡鏃ユ湡")
+    @TableField("deadline")
+    private Date deadline;
+
     public String getIoTime$(){
         if (Cools.isEmpty(this.ioTime)){
             return "";
@@ -287,7 +294,18 @@
                 return String.valueOf(this.beBatch);
         }
     }
-
+    public String getProddate$(){
+        if (Cools.isEmpty(this.proddate)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd").format(this.proddate);
+    }
+    public String getDeadline$(){
+        if (Cools.isEmpty(this.deadline)){
+            return "";
+        }
+        return new SimpleDateFormat("yyyy-MM-dd").format(this.deadline);
+    }
     public String getSource$(){
         if (null == this.source){ return null; }
         switch (this.source){
diff --git a/src/main/java/com/zy/asrs/entity/param/CombParam.java b/src/main/java/com/zy/asrs/entity/param/CombParam.java
index ff8690d..95bd641 100644
--- a/src/main/java/com/zy/asrs/entity/param/CombParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/CombParam.java
@@ -1,7 +1,9 @@
 package com.zy.asrs.entity.param;
 
 import lombok.Data;
+import org.springframework.dao.DataAccessException;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -48,6 +50,14 @@
         // 瑙勬牸
         private String specs;
 
+        //鐢熶骇鏃ユ湡
+        private Date proddate;
+
+        //鍒版湡鏃ユ湡
+        private Date deadline;
+
+
+
     }
 
 }
diff --git a/src/main/java/com/zy/asrs/entity/param/FullStoreParam.java b/src/main/java/com/zy/asrs/entity/param/FullStoreParam.java
index aee3742..57f2b26 100644
--- a/src/main/java/com/zy/asrs/entity/param/FullStoreParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/FullStoreParam.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -40,6 +41,12 @@
         //閿�鍞鍗曡鍙�
         private String isoseq;
 
+        //鐢熶骇鏃ユ湡
+        private Date proddate;
+
+        //鍒版湡鏃ユ湡
+        private Date deadline;
+
     }
 
 }
diff --git a/src/main/java/com/zy/asrs/entity/param/StockOutParam.java b/src/main/java/com/zy/asrs/entity/param/StockOutParam.java
index 3c9fd81..5f1d9d9 100644
--- a/src/main/java/com/zy/asrs/entity/param/StockOutParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/StockOutParam.java
@@ -2,6 +2,7 @@
 
 import lombok.Data;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -42,6 +43,8 @@
 
         //閿�鍞鍗曡鍙�
         private String deadTime;
+        private Date proddate;
+        private Date deadline;
     }
 
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
index 982fcbf..d61484a 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvMobileServiceImpl.java
@@ -136,7 +136,7 @@
                 checkOrderQty(order,combMat);
             }
 
-            DetlDto detlDto = new DetlDto(combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), combMat.getCsocode(), combMat.getIsoseq(),combMat.getContainerCode());
+            DetlDto detlDto = new DetlDto(combMat.getMatnr(), combMat.getBatch(), combMat.getAnfme(), combMat.getCsocode(), combMat.getIsoseq(),combMat.getContainerCode(),combMat.getProddate(),combMat.getDeadline());
             //鍚屼竴鎵樼洏涓嬬浉鍚岀墿鏂欎俊鎭拰鎵瑰彿杞负涓�涓叆搴撻�氱煡妗�
             if (DetlDto.has(detlDtos, detlDto)) {
                 DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(), detlDto.getCsocode(), detlDto.getIsoseq(),null);
@@ -185,6 +185,8 @@
         waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
         waitPakin.setAnfme(detlDto.getAnfme());  // 鏁伴噺
         waitPakin.setStatus("Y");    // 鐘舵��
+        waitPakin.setProddate(detlDto.getProddate());
+        waitPakin.setDeadline(detlDto.getDeadline());
 
         ////閿�鍞鍗曞彿
         waitPakin.setThreeCode(detlDto.getCsocode());
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
index 42f3d88..b8ec93b 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -97,7 +97,7 @@
             wrkMast.setMk(isConveyor ? "Y" : "N");
             //鐢熸垚宸ヤ綔妗f槑缁�
             agvWaitPakinList.forEach(wp -> {
-                createWrkDetlReWrite(wp.getMatnr(),wrkMast.getWrkNo(),wp.getOrderNo(),wp.getBatch(),wp.getAnfme(),wp.getSuppCode(),now,userId,wp.getThreeCode(),wp.getDeadTime());
+                createWrkDetlReWrite(wp.getMatnr(),wrkMast.getWrkNo(),wp.getOrderNo(),wp.getBatch(),wp.getAnfme(),wp.getSuppCode(),now,userId,wp.getThreeCode(),wp.getDeadTime(),wp.getProddate(),wp.getDeadline());
             });
             //鏇存柊婧愮珯鐐逛俊鎭�
             updateAgvBasDevp(agvBasDevp,"R");
@@ -149,7 +149,9 @@
                             now,
                             userId,
                             locDto.getCsocode(),
-                            locDto.getIsoseq());
+                            locDto.getIsoseq(),
+                            locDto.getProddate(),
+                            locDto.getDeadline());
                 }else {
                     List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class);
                     orderDtoList.forEach(orderDto -> {
@@ -163,7 +165,9 @@
                                 now,
                                 userId,
                                 locDto.getCsocode(),
-                                locDto.getIsoseq());
+                                locDto.getIsoseq(),
+                                locDto.getProddate(),
+                                locDto.getDeadline());
                     });
                 }
 
@@ -241,7 +245,7 @@
 
         List<TaskDto> taskDtos = new ArrayList<>();
         param.getLocDetls().forEach(locDetl -> {
-            LocDto locDto = new LocDto(locDetl.getLocNo(),locDetl.getCount(),locDetl.getMatnr(),locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime(),locDetl.getSuppCode());
+            LocDto locDto = new LocDto(locDetl.getLocNo(),locDetl.getCount(),locDetl.getMatnr(),locDetl.getBatch(),locDetl.getThreeCode(),locDetl.getDeadTime(),locDetl.getSuppCode(),locDetl.getProddate(),locDetl.getDeadline());
             TaskDto taskDto = new TaskDto(locDetl.getLocNo(),station,locDto);
             if(TaskDto.has(taskDtos,taskDto)){
                 TaskDto.find(taskDtos,taskDto).getLocDtos().add(locDto);
@@ -273,7 +277,9 @@
                         now,
                         userId,
                         locDto.getCsocode(),
-                        locDto.getIsoseq());
+                        locDto.getIsoseq(),
+                        locDto.getProddate(),
+                        locDto.getDeadline());
             });
             updateAgvLocMast(agvLocMastService.selectById(wrkMast.getSourceLocNo()),"P");
             //鏇存柊鐩爣绔欑偣鐘舵��
@@ -303,7 +309,7 @@
         //鐢熸垚绉诲簱宸ヤ綔妗�
         AgvWrkMast wrkMast = createWrkMast(11, 21L, sourceLocNo, targetLocNo, sourceLocDetl.getSuppCode(), now, userId,false);
         //鐢熸垚宸ヤ綔鍏氭槑缁�
-        createWrkDetlReWrite(sourceLocDetl.getMatnr(),wrkMast.getWrkNo(),null,sourceLocDetl.getBatch(),sourceLocDetl.getAnfme(),sourceLocDetl.getZpallet(),now,userId,sourceLocDetl.getThreeCode(),sourceLocDetl.getDeadTime());
+        createWrkDetlReWrite(sourceLocDetl.getMatnr(),wrkMast.getWrkNo(),null,sourceLocDetl.getBatch(),sourceLocDetl.getAnfme(),sourceLocDetl.getZpallet(),now,userId,sourceLocDetl.getThreeCode(),sourceLocDetl.getDeadTime(),sourceLocDetl.getProddate(),sourceLocDetl.getDeadline());
         //淇敼鐩爣搴撲綅鐘舵��
         updateAgvLocMast(targetLocMast,"S");
         //淇敼鍘熷簱浣嶇姸鎬�
@@ -613,7 +619,7 @@
     /*
     鐢熸垚宸ヤ綔妗f槑缁�
      */
-    private void createWrkDetlReWrite(String matnr, int wrkNo, String orderNo,String batch, double anfme, String zpallet, Date now, Long userId, String csocode, String isoseq){
+    private void createWrkDetlReWrite(String matnr, int wrkNo, String orderNo,String batch, double anfme, String zpallet, Date now, Long userId, String csocode, String isoseq, Date proddate,Date deadline){
         Mat mat = matService.selectByMatnr(matnr);
         if (Cools.isEmpty(mat)) {
             throw new CoolException(matnr + "鍟嗗搧缁存姢澶辫触");
@@ -630,7 +636,8 @@
         wrkDetl.setAppeTime(now);
         wrkDetl.setModiUser(userId);
         wrkDetl.setModiTime(now);
-
+        wrkDetl.setProddate(proddate);
+        wrkDetl.setDeadline(deadline);
         wrkDetl.setThreeCode(csocode);
         wrkDetl.setDeadTime(isoseq);
         if (!agvWrkDetlService.insert(wrkDetl)) {
diff --git a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
index 163d97b..f3a082a 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -142,7 +142,7 @@
             // 鐢熸垚鍏ュ簱閫氱煡妗�
             List<DetlDto> detlDtos = new ArrayList<>();
             param.getCombMats().forEach(elem -> {
-                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(), elem.getCsocode(), elem.getIsoseq(),elem.getContainerCode());
+                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(), elem.getCsocode(), elem.getIsoseq(),elem.getContainerCode(),elem.getProddate(),elem.getDeadline());
                 if (DetlDto.has(detlDtos, detlDto)) {
                     DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(),detlDto.getCsocode(),detlDto.getIsoseq(),detlDto.getContainerCode());
                     assert one != null;
@@ -169,6 +169,8 @@
                 waitPakin.setAppeTime(now);
                 waitPakin.setModiUser(userId);
                 waitPakin.setModiTime(now);
+                waitPakin.setProddate(detlDto.getProddate());
+                waitPakin.setDeadline(detlDto.getDeadline());
 
                 waitPakin.setThreeCode(detlDto.getCsocode());
                 waitPakin.setDeadTime(detlDto.getIsoseq());
@@ -197,7 +199,7 @@
                     throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触");
                 }
 
-                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(),elem.getCsocode(),elem.getIsoseq(),elem.getContainerCode());
+                DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(),elem.getCsocode(),elem.getIsoseq(),elem.getContainerCode(),elem.getProddate(),elem.getDeadline());
                 if (DetlDto.has(detlDtos, detlDto)) {
                     DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(),detlDto.getCsocode(),detlDto.getIsoseq(),detlDto.getContainerCode());
                     assert one != null;
@@ -223,6 +225,8 @@
                 waitPakin.setAppeTime(now);
                 waitPakin.setModiUser(userId);
                 waitPakin.setModiTime(now);
+                waitPakin.setProddate(detlDto.getProddate());
+                waitPakin.setDeadline(detlDto.getDeadline());
 
                 waitPakin.setThreeCode(detlDto.getCsocode());
                 waitPakin.setDeadTime(detlDto.getIsoseq());
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index 3680f51..ecb96a9 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -131,7 +131,7 @@
         // 鐢熸垚宸ヤ綔妗f槑缁�
         List<DetlDto> detlDtos = new ArrayList<>();
         param.getList().forEach(elem -> {
-            DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(), elem.getCsocode(), elem.getIsoseq(),elem.getContainerCode());
+            DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme(), elem.getCsocode(), elem.getIsoseq(),elem.getContainerCode(),elem.getProddate(),elem.getDeadline());
             if (DetlDto.has(detlDtos, detlDto)) {
                 DetlDto detlDto1 = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch(),detlDto.getCsocode(),detlDto.getIsoseq(),detlDto.getContainerCode());
                 assert detlDto1 != null;
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java
index 89c9603..98988c4 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java
@@ -46,7 +46,8 @@
             wrkDetl.setAppeTime(now);
             wrkDetl.setModiUser(userId);
             wrkDetl.setModiTime(now);
-
+            wrkDetl.setProddate(dto.getProddate());
+            wrkDetl.setDeadline(dto.getDeadline());
             wrkDetl.setThreeCode(dto.getCsocode());
             wrkDetl.setDeadTime(dto.getIsoseq());
             wrkDetl.setSuppCode(dto.getContainerCode());
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
index 6665933..2d003aa 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -92,6 +92,8 @@
                             locDetl.sync(wrkDetl);
                             locDetl.setLocNo(wrkMast.getLocNo()); // 搴撲綅鍙�
                             locDetl.setAnfme(wrkDetl.getAnfme()); // 鏁伴噺
+                            locDetl.setProddate(wrkDetl.getProddate());//鐢熶骇鏃ユ湡
+                            locDetl.setDeadline(wrkDetl.getDeadline());//鍒版湡鏃ユ湡
                             locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
                             locDetl.setModiTime(now);
                             locDetl.setAppeTime(now);
@@ -203,6 +205,8 @@
                             locDetl.setAnfme(wrkDetl.getAnfme()); // 鏁伴噺
                             locDetl.setZpallet(wrkDetl.getZpallet()); // 鎵樼洏鏉$爜
                             locDetl.setModiTime(now);
+                            locDetl.setProddate(wrkDetl.getProddate());
+                            locDetl.setDeadline(wrkDetl.getDeadline());
                             locDetl.setAppeTime(now);
                             if (!locDetlService.insert(locDetl)) {
                                 exceptionHandle("骞舵澘鍏ュ簱 ===>> 鏂板搴撳瓨鏄庣粏澶辫触锛沎workNo={0}],[matnr={1}]", wrkMast.getWrkNo(), wrkDetl.getMatnr());
diff --git a/src/main/java/com/zy/common/model/DetlDto.java b/src/main/java/com/zy/common/model/DetlDto.java
index d58542b..2058e7f 100644
--- a/src/main/java/com/zy/common/model/DetlDto.java
+++ b/src/main/java/com/zy/common/model/DetlDto.java
@@ -4,6 +4,7 @@
 import com.zy.asrs.entity.OrderDetl;
 import lombok.Data;
 
+import java.util.Date;
 import java.util.List;
 import java.util.Set;
 
@@ -29,6 +30,12 @@
 
     //閿�鍞鍗曡鍙�
     private String isoseq;
+
+    //鐢熶骇鏃ユ湡
+    private Date proddate;
+
+    //鍒版湡鏃ユ湡
+    private Date deadline;
 
     public DetlDto() {
     }
@@ -56,6 +63,17 @@
         this.csocode = csocode;
         this.isoseq = isoseq;
         this.containerCode = containerCode;
+    }
+
+    public DetlDto(String matnr, String batch, Double anfme, String csocode, String isoseq, String containerCode, Date proddate, Date deadline) {
+        this.matnr = matnr;
+        this.batch = batch;
+        this.anfme = anfme;
+        this.csocode = csocode;
+        this.isoseq = isoseq;
+        this.containerCode = containerCode;
+        this.proddate = proddate;
+        this.deadline = deadline;
     }
 
     public DetlDto(String orderNo, String matnr, String batch, Double anfme, String csocode, String isoseq) {
@@ -113,6 +131,7 @@
         return null;
     }
 
+
     public static void main(String[] args) {
         boolean a = Cools.eq("a", null);
         System.out.println(a);
diff --git a/src/main/java/com/zy/common/model/LocDto.java b/src/main/java/com/zy/common/model/LocDto.java
index 785eb50..9f70a46 100644
--- a/src/main/java/com/zy/common/model/LocDto.java
+++ b/src/main/java/com/zy/common/model/LocDto.java
@@ -3,6 +3,7 @@
 import com.core.common.Cools;
 import lombok.Data;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -44,6 +45,9 @@
     //鏂欑鐮�
     private String containerCode;
 
+    private Date proddate;
+    private Date deadline;
+
     public LocDto() {
     }
 
@@ -57,6 +61,18 @@
         this.containerCode = containerCode;
     }
 
+    public LocDto(String locNo, Double anfme, String matnr, String batch, String csocode, String isoseq, String containerCode,Date proddate, Date deadline) {
+        this.locNo = locNo;
+        this.anfme = anfme;
+        this.matnr = matnr;
+        this.batch = batch;
+        this.csocode = csocode;
+        this.isoseq = isoseq;
+        this.containerCode = containerCode;
+        this.proddate = proddate;
+        this.deadline = deadline;
+    }
+
     public LocDto(String locNo, String matnr, String batch, Double anfme) {
         this.locNo = locNo;
         this.matnr = matnr;
diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index 3855940..2b79a7f 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -280,6 +280,8 @@
             WrkDetl wrkDetl = new WrkDetl();
             BeanUtils.copyProperties(waitPakin, wrkDetl);
             wrkDetl.setZpallet(barcode);
+            wrkDetl.setProddate(waitPakin.getProddate());
+            wrkDetl.setDeadline(waitPakin.getDeadline());
             wrkDetl.setWrkNo(wrkMast.getWrkNo());
             wrkDetl.setIoTime(wrkMast.getIoTime());
             wrkDetl.setAppeTime(now);
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index bde1d85..74c7ea8 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,5 +1,5 @@
 server:
-  port: 8080
+  port: 8081
   servlet:
     context-path: /@pom.build.finalName@
 
diff --git a/src/main/webapp/static/js/agvLocDetl/locDetl.js b/src/main/webapp/static/js/agvLocDetl/locDetl.js
index d408a1d..f1b970e 100644
--- a/src/main/webapp/static/js/agvLocDetl/locDetl.js
+++ b/src/main/webapp/static/js/agvLocDetl/locDetl.js
@@ -57,6 +57,8 @@
     cols.push({field: 'modiUser$', align: 'center',title: '淇敼浜哄憳',hide: true}
         ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿'}
         ,{field: 'stockFreeze', align: 'center',title: '搴撳瓨鍐荤粨', templet: '#stockFreezeTpl'}
+        ,{field: 'proddate$', align: 'center',title: '鐢熶骇鏃ユ湡', hide:false}
+        ,{field: 'deadline$', align: 'center',title: '鍒版湡鏃ユ湡', hide:false}
     )
     return cols;
 }
@@ -79,7 +81,8 @@
         page: true,
         limit: 20,
         where:{
-          unreason: false
+            unreason: false,
+            expired: false
         },
         limits: [20, 30, 50, 100, 200, 500],
         even: true,
@@ -478,6 +481,28 @@
         tableReload(false);
     });
 
+    form.on('submit(expired)', function (data) {
+        pageCurr = 1;
+
+        tableIns.reload({
+            where: {
+                expired: true
+            },
+            page: {
+                curr: pageCurr
+            },
+            done: function (res, curr, count) {
+
+                if (res.code === 403) {
+                    top.location.href = baseUrl+"/";
+                }
+                pageCurr=curr;
+
+                limit(child);
+            }
+        });
+    });
+
     //鏌ョ湅寮傚父鏁版嵁
     form.on('submit(unreason)', function (data) {
         pageCurr = 1;
@@ -539,7 +564,8 @@
 
 function tableReload(child) {
     var searchData = {
-        unreason: false
+        unreason: false,
+        expired: false
     };
     $.each($('#search-box [name]').serializeArray(), function() {
         searchData[this.name] = this.value;
diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js
index cc817a0..9950aaf 100644
--- a/src/main/webapp/static/js/common.js
+++ b/src/main/webapp/static/js/common.js
@@ -246,6 +246,8 @@
     ,{field: 'dsDate', align: 'center',title: '鍚敤鏃ユ湡', hide: true}
     ,{field: 'supp', align: 'center',title: '寤烘。浜�', hide: true}
     ,{field: 'dInvCreateDatetime', align: 'center',title: '寤烘。鏃ユ湡', hide: true}
+    ,{field: 'proddate$', align: 'center',title: '鐢熶骇鏃ユ湡', hide:false}
+    ,{field: 'deadline$', align: 'center',title: '鍒版湡鏃ユ湡', hide:false}
 
     // ,{field: 'specs', align: 'center',title: '瑙勬牸'}
     // ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
diff --git a/src/main/webapp/static/js/locDetl/locDetl.js b/src/main/webapp/static/js/locDetl/locDetl.js
index 9999628..19bda12 100644
--- a/src/main/webapp/static/js/locDetl/locDetl.js
+++ b/src/main/webapp/static/js/locDetl/locDetl.js
@@ -20,7 +20,8 @@
         ,{field: 'price', align: 'center',title: '杩涢」绋�', hide: true}
         ,{field: 'units', align: 'center',title: '閿�椤圭◣', hide: true}
         ,{field: 'memo', align: 'center',title: '澶囨敞', hide: true}
-
+        ,{field: 'proddate$', align: 'center',title: '鐢熶骇鏃ユ湡', hide:false}
+        ,{field: 'deadline$', align: 'center',title: '鍒版湡鏃ユ湡', hide:false}
     ];
 
     // cols.push.apply(cols, detlCols);
@@ -46,7 +47,8 @@
         page: true,
         limit: 20,
         where:{
-          unreason: false
+          unreason: false,
+            expired: false
         },
         limits: [20, 30, 50, 100, 200, 500],
         even: true,
@@ -479,6 +481,28 @@
         });
     });
 
+    form.on('submit(expired)', function (data) {
+        pageCurr = 1;
+
+        tableIns.reload({
+            where: {
+                expired: true
+            },
+            page: {
+                curr: pageCurr
+            },
+            done: function (res, curr, count) {
+
+                if (res.code === 403) {
+                    top.location.href = baseUrl+"/";
+                }
+                pageCurr=curr;
+
+                limit(child);
+            }
+        });
+    });
+
     // 鏃堕棿閫夋嫨鍣�
     layDate.render({
         elem: '#modiTime\\$',
@@ -512,7 +536,8 @@
 
 function tableReload(child) {
     var searchData = {
-        unreason: false
+        unreason: false,
+        expired: false
     };
     $.each($('#search-box [name]').serializeArray(), function() {
         searchData[this.name] = this.value;
diff --git a/src/main/webapp/static/js/locDetlStatis/locDetlStatis.js b/src/main/webapp/static/js/locDetlStatis/locDetlStatis.js
index 9e80d36..c4fb55e 100644
--- a/src/main/webapp/static/js/locDetlStatis/locDetlStatis.js
+++ b/src/main/webapp/static/js/locDetlStatis/locDetlStatis.js
@@ -10,6 +10,9 @@
     arrRemove(detlCols, "field", "threeCode");
     arrRemove(detlCols, "field", "deadTime");
     arrRemove(detlCols, "field", "batch");
+    arrRemove(detlCols, "field", "proddate");
+    arrRemove(detlCols, "field", "deadline");
+
     cols.push.apply(cols, detlCols);
     // cols.push({field: 'anfme', align: 'center',title: '鏁伴噺', style: 'font-weight: bold'}
     // )
diff --git a/src/main/webapp/static/js/orderDetl/orderDetl.js b/src/main/webapp/static/js/orderDetl/orderDetl.js
index b6e3708..782a4d7 100644
--- a/src/main/webapp/static/js/orderDetl/orderDetl.js
+++ b/src/main/webapp/static/js/orderDetl/orderDetl.js
@@ -44,6 +44,8 @@
             ,{field: 'updateBy$', align: 'center',title: '淇敼浜哄憳'}
             ,{field: 'updateTime$', align: 'center',title: '淇敼鏃堕棿'}
             ,{field: 'memo', align: 'center',title: '澶囨敞'}
+            ,{field: 'proddate$', align: 'center',title: '鐢熶骇鏃ユ湡', hide:false}
+            ,{field: 'deadline$', align: 'center',title: '鍒版湡鏃ユ湡', hide:false}
 
             ,{fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:120}
         ]],
diff --git a/src/main/webapp/static/js/waitPakin/waitPakin.js b/src/main/webapp/static/js/waitPakin/waitPakin.js
index 35600fd..a791d85 100644
--- a/src/main/webapp/static/js/waitPakin/waitPakin.js
+++ b/src/main/webapp/static/js/waitPakin/waitPakin.js
@@ -15,7 +15,9 @@
                 return html;
             }}
         ,{field: 'modiUser$', align: 'center',title: '淇敼浜哄憳', hide:true}
-        ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿', hide:true})
+        ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿', hide:true}
+
+    )
     return cols;
 }
 
diff --git a/src/main/webapp/static/js/waitPakinLog/waitPakinLog.js b/src/main/webapp/static/js/waitPakinLog/waitPakinLog.js
index 54fc129..8e3c832 100644
--- a/src/main/webapp/static/js/waitPakinLog/waitPakinLog.js
+++ b/src/main/webapp/static/js/waitPakinLog/waitPakinLog.js
@@ -14,9 +14,7 @@
                 if(row.ioStatus === 'Y'){html += " checked ";}
                 html += ">";
                 return html;
-            }}
-        ,{field: 'modiUser$', align: 'center',title: '淇敼浜哄憳', hide:true}
-        ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿', hide:true})
+            }})
     return cols;
 }
 layui.use(['table','laydate', 'form'], function(){
diff --git a/src/main/webapp/views/agvLocDetl/locDetl.html b/src/main/webapp/views/agvLocDetl/locDetl.html
index 2d4401d..1cb0541 100644
--- a/src/main/webapp/views/agvLocDetl/locDetl.html
+++ b/src/main/webapp/views/agvLocDetl/locDetl.html
@@ -47,6 +47,7 @@
         <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>
         <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button>
         <button id="unreason" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="unreason">鏌ョ湅寮傚父鏁版嵁</button>
+        <button id="expired" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="expired">鏌ョ湅瓒呮湡鏁版嵁</button>
     </div>
 
 </div>
diff --git a/src/main/webapp/views/locDetl/locDetl.html b/src/main/webapp/views/locDetl/locDetl.html
index 83ed293..b9f625e 100644
--- a/src/main/webapp/views/locDetl/locDetl.html
+++ b/src/main/webapp/views/locDetl/locDetl.html
@@ -46,6 +46,8 @@
         <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>
         <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆</button>
         <button id="unreason" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="unreason">鏌ョ湅寮傚父鏁版嵁</button>
+        <button id="expired" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="expired">鏌ョ湅瓒呮湡鏁版嵁</button>
+
     </div>
 
 </div>

--
Gitblit v1.9.1