From ef28fc12367f1be5f80682d4300c1e3891bfe5c8 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期一, 09 六月 2025 19:43:58 +0800
Subject: [PATCH] 完成部署服务器

---
 license.lic                                                      |    0 
 src/main/resources/mapper/WrkMastLogMapper.xml                   |    1 
 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java      |   16 
 src/main/java/com/zy/common/config/AdminInterceptor.java         |    3 
 src/main/webapp/views/mat/mat.html                               |    4 
 src/main/java/com/zy/asrs/entity/WrkMast.java                    |    2 
 src/main/resources/mapper/WrkMastMapper.xml                      |    3 
 src/main/java/com/zy/asrs/entity/WrkMastLog.java                 |    2 
 src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java       |    2 
 src/main/java/com/zy/common/web/WcsController.java               |  372 +++++++++++++++++-------
 /dev/null                                                        |   42 --
 src/main/java/com/zy/common/web/param/SearchLocParam.java        |   20 
 src/main/java/com/zy/common/web/param/CanningLineInLocParam.java |   28 +
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java      |  131 +++++---
 src/main/webapp/views/index.html                                 |    8 
 src/main/java/com/zy/asrs/entity/WrkDetl.java                    |    6 
 src/main/java/com/zy/asrs/task/WorkLogScheduler.java             |   48 +++
 src/main/webapp/static/js/common.js                              |    2 
 src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java   |    2 
 src/main/java/com/zy/common/service/CommonService.java           |  175 +++++++++-
 src/main/resources/license.lic                                   |    0 
 src/main/webapp/views/login.html                                 |    4 
 src/main/resources/application.yml                               |    2 
 23 files changed, 606 insertions(+), 267 deletions(-)

diff --git a/license.lic b/license.lic
index dd30251..df70474 100644
--- a/license.lic
+++ b/license.lic
Binary files differ
diff --git a/src/main/java/com/zy/asrs/entity/WrkDetl.java b/src/main/java/com/zy/asrs/entity/WrkDetl.java
index 9563fff..3270e75 100644
--- a/src/main/java/com/zy/asrs/entity/WrkDetl.java
+++ b/src/main/java/com/zy/asrs/entity/WrkDetl.java
@@ -167,7 +167,7 @@
     /**
      * 闀垮害
      */
-    @ApiModelProperty(value= "闀垮害")
+    @ApiModelProperty(value= "姣涢噸")
     @TableField("man_length")
     private Double manLength;
 
@@ -225,9 +225,9 @@
     private Integer source;
 
     /**
-     * 瑕佹眰妫�楠� 1: 鏄�  0: 鍚�
+     * 璐存爣缁撴灉(1.鎴愬姛锛�0.澶辫触)
      */
-    @ApiModelProperty(value= "瑕佹眰妫�楠� 1: 鏄�  0: 鍚�  ")
+    @ApiModelProperty(value= "璐存爣缁撴灉(1.鎴愬姛锛�0.澶辫触)")
     private Integer inspect;
 
     /**
diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java
index 013ab54..65f70a3 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMast.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMast.java
@@ -294,7 +294,7 @@
     // Y:閿�鍞鍗曞嚭搴撲换鍔�
     @ApiModelProperty(value= "")
     @TableField("Pdc_type")
-    private String PdcType;
+    private String pdcType;
 
     @ApiModelProperty(value= "")
     @TableField("ctn_no")
diff --git a/src/main/java/com/zy/asrs/entity/WrkMastLog.java b/src/main/java/com/zy/asrs/entity/WrkMastLog.java
index 4fe2a57..9178269 100644
--- a/src/main/java/com/zy/asrs/entity/WrkMastLog.java
+++ b/src/main/java/com/zy/asrs/entity/WrkMastLog.java
@@ -297,7 +297,7 @@
 
     @ApiModelProperty(value= "")
     @TableField("Pdc_type")
-    private String PdcType;
+    private String pdcType;
 
     @ApiModelProperty(value= "")
     @TableField("ctn_no")
diff --git a/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java
index babb339..eda0419 100644
--- a/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/BasDevpServiceImpl.java
@@ -55,7 +55,7 @@
             if(station.getLoading()==null || !station.getLoading().equals("Y")) {
                 throw new CoolException(devpNo+"绔欑偣鏃犵墿");
             }
-            if(station.getWrkNo()!=null && station.getWrkNo()>0 && station.getWrkNo() < 9990) {
+            if(station.getWrkNo()!=null && station.getWrkNo()!= 0) {
                 throw new CoolException(devpNo+"绔欑偣宸叉湁宸ヤ綔鍙�");
             }
 //            if(!station.getInEnable().equals("Y")) {
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 4c73c11..e9920df 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -644,8 +644,8 @@
             wrkMast.setWrkNo(workNo);
             wrkMast.setIoTime(now);
             wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
-            wrkMast.setIoType(locMast.getLocSts().equals("M") ? 111 : 112); // 鍏ュ嚭搴撶姸鎬�
-            wrkMast.setIoPri(10D);
+            wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬�
+            wrkMast.setIoPri(14D);
             wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
             wrkMast.setStaNo(param.getOutSite()); // 鐩爣绔�
             wrkMast.setCrnNo(locMast.getCrnNo());
@@ -659,7 +659,6 @@
             wrkMast.setAppeTime(now);
             wrkMast.setModiUser(1L);
             wrkMast.setModiTime(now);
-            wrkMast.setMemo("鐢熸垚鑷姩绌烘澘鍑哄簱");
             boolean res = wrkMastService.insert(wrkMast);
             if (!res) {
                 throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
@@ -814,15 +813,26 @@
         if (Cools.isEmpty(wrkMast)){
             throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
         }
+        if (wrkMast.getStaNo() == 1090 && wrkMast.getLocNo() == null) {
+            throw new CoolException(workNo+"宸ヤ綔妗f棤娉曞畬鎴�,搴撲綅鍙蜂负绌猴紒");
+        }
         if (wrkMast.getWrkSts() == 4 || wrkMast.getWrkSts() == 14) {
             throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚");
         }
+        // 瀹屾垚绌烘《搴撳叆鍑哄簱浠诲姟鍙︿竴涓换鍔�
+        int workNoOther = 0;
         // 鍏ュ簱 + 搴撲綅杞Щ
-        if (wrkMast.getWrkSts() < 4 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()==11)) {
+        if ((wrkMast.getWrkSts() < 4 && wrkMast.getIoType() != 101 && wrkMast.getIoType() != 110) || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()==11)) {
             wrkMast.setWrkSts(4L);
+            workNoOther = wrkMast.getWorkNoOther();
         // 鍑哄簱
-        } else if (wrkMast.getWrkSts() > 10) {
-            wrkMast.setWrkSts(14L);
+        } else if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 110) {
+            if(wrkMast.getWrkSts() == 2) {
+                wrkMast.setWrkSts(15L);
+            } else {
+                wrkMast.setWrkSts(14L);
+            }
+            workNoOther = wrkMast.getWorkNoOther();
         }
         Date now = new Date();
         wrkMast.setCrnStrTime(DateUtils.calculate(now, 1L, TimeUnit.SECONDS, true));
@@ -833,6 +843,16 @@
         wrkMast.setManuType("鎵嬪姩瀹屾垚");
         if (!wrkMastService.updateById(wrkMast)) {
             throw new CoolException("淇敼宸ヤ綔妗eけ璐�");
+        }
+        if(workNoOther != 0) {
+            WrkMast wrkMast1 = wrkMastService.selectById(workNoOther);
+            wrkMast1.setWrkSts(wrkMast.getWrkSts());
+            wrkMast1.setCrnStrTime(wrkMast.getCrnStrTime());
+            wrkMast1.setCrnEndTime(now);
+            wrkMast1.setModiTime(now);
+            wrkMast1.setModiUser(userId);
+            wrkMast1.setManuType("鎵嬪姩瀹屾垚");
+            wrkMastService.updateById(wrkMast1);
         }
     }
 
@@ -1068,7 +1088,7 @@
         String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣�
         String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬�
         // 鍏ュ簱鍙栨秷锛堜慨鏀圭洰鏍囧簱浣嶏級
-        if (wrkMast.getWrkSts() < 4) {
+        if (wrkMast.getWrkSts() <= 10) {
             locNo = wrkMast.getLocNo();
             locSts = "O";
 
@@ -1088,13 +1108,12 @@
         } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 14) {
             locNo = wrkMast.getSourceLocNo();
             if (wrkMast.getIoType() == 110) {
-                locSts = "D";
-                // 鍑哄簱 M.绌烘瘝鎵樼洏
-            } else if (wrkMast.getIoType() == 111) {
-                locSts = "M";
-                // 鍑哄簱Z.绌哄瓙鎵樼洏
-            } else if (wrkMast.getIoType() == 112) {
-                locSts = "Z";
+                if(wrkMast.getStaNo() == 1035) { // 瀛愭媶鐩樻満绔欑偣
+                    locSts = "Z";
+                }else {
+                    locSts = "M";
+                }
+//                locSts = "D";
             } else if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) {
                 // 鍑哄簱 ===>> F.鍦ㄥ簱
                 locSts = "F";
@@ -1115,21 +1134,9 @@
             throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曞彇娑�");
         }
 
-        //鍙栨秷鍏ュ簱宸ヤ綔妗f椂锛屾煡璇㈢粍鎵樿〃锛屽鏋滄湁灏嗙姸鎬佹敼涓哄緟澶勭悊
-        if(wrkMast.getIoType() == 1) {
-            List<WaitPakin> waitPakins=waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", wrkMast.getBarcode()));
-            for (WaitPakin waitPakin:waitPakins){
-                if (!Cools.isEmpty(waitPakin)) {
-                    waitPakin.setIoStatus("N");
-                    waitPakin.setLocNo("");
-                    waitPakinService.update(waitPakin, new EntityWrapper<WaitPakin>()
-//                            .eq("order_no", waitPakin.getOrderNo())
-                            .eq("zpallet",waitPakin.getZpallet())
-                            .eq("matnr", waitPakin.getMatnr())
-                            .eq("batch", waitPakin.getBatch()));
-                }
-            }
-        }
+         // 鍒犻櫎缁勬墭閫氱煡妗�
+         waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet",wrkMast.getBarcode()));
+
 
         //鍙栨秷鍑哄簱宸ヤ綔妗f椂锛屾煡璇㈠崟鎹鐞嗚〃锛屽洖婊氫綔涓氫腑鏁伴噺
         if(wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103) {
@@ -1195,27 +1202,59 @@
         }
         // 鍒犻櫎宸ヤ綔涓绘。
         boolean wrkMastRes = wrkMastService.deleteById(wrkMast);
+        // 淇濆瓨鏄庣粏
+        wrkDetlLogService.save(wrkMast.getWrkNo());
+        // 鍒犻櫎宸ヤ綔妗f槑缁�
+        boolean wrkDetlRes = wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo));
 
-        if (wrkMast.getIoType() != 10 && wrkMast.getIoType() != 110) {
-            // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
-            if (!wrkDetlLogService.save(wrkMast.getWrkNo())) {
-//                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo());
+        // 绌烘《搴撲换鍔�
+        if(wrkMast.getWorkNoOther()  != null && wrkMast.getWorkNoOther() != 0) {
+            WrkMast wrkMast1 = wrkMastService.selectById(wrkMast.getWorkNoOther());
+            if (wrkMast1 != null) {
+                if(wrkMast1.getIoType() == 1) {
+                    wrkMast1.setLocSts("O");
+                } else {
+                    wrkMast1.setLocSts("F");
+                }
+                // 鍙栨秷鎿嶄綔浜哄憳璁板綍
+                wrkMast1.setManuType("鎵嬪姩鍙栨秷");
+                wrkMast1.setModiUser(userId);
+                wrkMast1.setModiTime(now);
+
+                // 鍒犻櫎缁勬墭閫氱煡妗�
+                waitPakinService.delete(new EntityWrapper<WaitPakin>().eq("zpallet",wrkMast1.getBarcode()));
+                // 鍒犻櫎宸ヤ綔涓绘。
+                wrkMastService.deleteById(wrkMast1);
+                // 淇濆瓨宸ヤ綔鏄庣粏
+                wrkDetlLogService.save(wrkMast1.getWrkNo());
+                // 鍒犻櫎宸ヤ綔鏄庣粏
+                wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast1.getWrkNo()));
+                // 淇敼搴撲綅鐘舵��
+                LocMast locMast = locMastService.selectById(wrkMast1.getIoType() == 1 ? wrkMast1.getLocNo() : wrkMast1.getSourceLocNo());
+                if (Cools.isEmpty(locMast)) {
+                    throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:" + locNo);
+                }
+                locMast.setLocSts(locSts);
+                locMast.setModiTime(now);
+                locMast.setModiUser(userId);
+                locMastService.updateById(locMast);
             }
-            // 鍒犻櫎宸ヤ綔妗f槑缁�
-            boolean wrkDetlRes = wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo));
         }
+
 
         // 淇敼搴撲綅鐘舵��
-        LocMast locMast = locMastService.selectById(locNo);
-        if (Cools.isEmpty(locMast)) {
-            throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:"+ locNo);
-        }
-        locMast.setLocSts(locSts);
-        locMast.setModiTime(now);
-        locMast.setModiUser(userId);
-        boolean locMastRes = locMastService.updateById(locMast);
-        if (!wrkMastRes || !locMastRes) {
-            throw new CoolException("淇濆瓨鏁版嵁澶辫触");
+        if(locNo != null) {
+            LocMast locMast = locMastService.selectById(locNo);
+            if (Cools.isEmpty(locMast)) {
+                throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:"+ locNo);
+            }
+            locMast.setLocSts(locSts);
+            locMast.setModiTime(now);
+            locMast.setModiUser(userId);
+            boolean locMastRes = locMastService.updateById(locMast);
+            if (!wrkMastRes || !locMastRes) {
+                throw new CoolException("淇濆瓨鏁版嵁澶辫触");
+            }
         }
     }
 
@@ -1283,7 +1322,7 @@
         }
         LocTypeDto locTypeDto = new LocTypeDto();
         locTypeDto.setLocType1((short) 1);
-        return wcsController.startupFullPutStore(301, list.get(0).getZpallet(), locTypeDto, list.get(0),1,false);
+        return wcsController.startupFullPutStore(301, list.get(0).getZpallet(), locTypeDto, list.get(0),false);
     }
 
     @Override
diff --git a/src/main/java/com/zy/asrs/task/AutoLocMoveScheduler.java b/src/main/java/com/zy/asrs/task/AutoLocMoveScheduler.java
deleted file mode 100644
index 698e864..0000000
--- a/src/main/java/com/zy/asrs/task/AutoLocMoveScheduler.java
+++ /dev/null
@@ -1,106 +0,0 @@
-package com.zy.asrs.task;
-
-import com.baomidou.mybatisplus.mapper.EntityWrapper;
-import com.core.common.Cools;
-import com.zy.asrs.entity.*;
-import com.zy.asrs.service.*;
-import com.zy.asrs.task.handler.AutoLocMoveHandler;
-import com.zy.asrs.utils.OrderInAndOutUtil;
-import com.zy.common.properties.SlaveWmsParameterProperties;
-import com.zy.system.entity.Config;
-import com.zy.system.service.ConfigService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-@Slf4j
-@Component
-public class AutoLocMoveScheduler {
-
-
-    @Autowired
-    private WrkMastService wrkMastService;
-    @Autowired
-    private WorkService workService;
-    @Autowired
-    private AutoLocMoveHandler autoLocMoveHandler;
-    @Autowired
-    private BasCrnpService basCrnpService;
-    @Autowired
-    private ConfigService configService;
-    @Autowired
-    private SlaveWmsParameterProperties slaveWmsParameterProperties;
-    @Autowired
-    private OrderService orderService;
-    @Autowired
-    private OrderPakoutService orderPakoutService;
-    @Autowired
-    private OrderDetlService orderDetlService;
-    @Autowired
-    private AutoMoveService autoMoveService;
-
-    //瀹氭椂鍑哄簱   缁忓吀鍙屼几
-    @Scheduled(cron = "0/3 * * * * ? ")
-    public void locToLocAutoLocMove(){
-        if (slaveWmsParameterProperties.isAutoLocMoveBoolean()){
-            Config config = configService.selectConfigByCode("AutoLocMove");
-            if (Cools.isEmpty(config) || config.getValue().equals("false")) {
-                return;
-            }
-            OrderPakout orderPakout = orderPakoutService.selectOrderMoveStatus();
-            if (!Cools.isEmpty(orderPakout)){
-//                autoMoveService.selectList()
-            }else {
-                orderPakout = orderPakoutService.selectOrderMoveStatusInitial();
-                if (Cools.isEmpty(orderPakout)){
-                    return;
-                }
-                orderPakout.setMoveStatus(2);
-                orderPakoutService.updateById(orderPakout);
-            }
-        }
-    }
-
-    //瀹氭椂鍑哄簱
-    @Scheduled(cron = "0/3 * * * * ? ")
-    public void locToLoc11(){
-        if (slaveWmsParameterProperties.isAutoLocMoveUnilateralBoolean()){
-            Config config = configService.selectConfigByCode("AutoLocMoveUnilateral");
-            if (Cools.isEmpty(config) || config.getValue().equals("false")) {
-                return;
-            }
-            int crnCount = basCrnpService.selectCount(new EntityWrapper<>());
-            for (int crnNo = 1;crnNo < crnCount;crnNo++){
-                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 11).eq("crn_no", crnNo));
-                WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 111).eq("crn_no", crnNo));
-                if (Cools.isEmpty(wrkMast) && Cools.isEmpty(wrkMast1)){
-                    autoLocMoveHandler.start(crnNo,11);
-                }
-            }
-        }
-    }
-
-    //瀹氭椂鍏ュ簱
-    @Scheduled(cron = "0/3 * * * * ? ")
-    public void locToLoc111() {
-        if (slaveWmsParameterProperties.isAutoLocMoveUnilateralBoolean()){
-            Config config = configService.selectConfigByCode("AutoLocMoveUnilateral");
-            if (Cools.isEmpty(config) || config.getValue().equals("false")) {
-                return;
-            }
-            int crnCount = basCrnpService.selectCount(new EntityWrapper<>());
-            for (int crnNo = 1;crnNo < crnCount;crnNo++){
-                BasCrnp basCrnp = basCrnpService.selectById(crnNo);
-                if (basCrnp == null) {
-                    continue;
-                }
-                WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 111).eq("crn_no", crnNo));
-                WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 11).eq("crn_no", crnNo));
-                if (Cools.isEmpty(wrkMast)  && Cools.isEmpty(wrkMast1)){
-                    autoLocMoveHandler.start(crnNo,111);
-                }
-            }
-        }
-    }
-}
diff --git a/src/main/java/com/zy/asrs/task/BareBoardScheduler.java b/src/main/java/com/zy/asrs/task/BareBoardScheduler.java
deleted file mode 100644
index 498483b..0000000
--- a/src/main/java/com/zy/asrs/task/BareBoardScheduler.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.zy.asrs.task;
-
-import com.core.common.Cools;
-import com.zy.asrs.task.handler.BareBoardHandler;
-import com.zy.common.properties.SlaveWmsParameterProperties;
-import com.zy.system.entity.Config;
-import com.zy.system.service.ConfigService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-/**
- * Created by Monkey D. Luffy on 2023.10.25
- * 骞垮痉瀹滅..............浠ヤ笅.............骞垮痉瀹滅.............鑷姩琛ョ┖鏉垮啀浼樺寲
- */
-@Component
-public class BareBoardScheduler {
-
-    @Autowired
-    private BareBoardHandler bareBoardHandler;
-    @Autowired
-    private ConfigService configService;
-    @Autowired
-    private SlaveWmsParameterProperties slaveWmsParameterProperties;
-
-    /*
-    * 鑷姩璋冪┖鏉垮嚭搴�
-    * */
-    @Scheduled(cron = "0/3 * * * * ? ")
-    private void execute(){
-        if (slaveWmsParameterProperties.isAutomaticFillingBoardStaNosBoolean()){
-            Config config = configService.selectConfigByCode("AutomaticFillingBoard");
-            if (!Cools.isEmpty(config) && !Cools.isEmpty(config.getValue()) && config.getValue().equals("true")){
-                for (Integer staNo : slaveWmsParameterProperties.getAutomaticFillingBoardStaNos()){
-                    bareBoardHandler.start(110,staNo,"D");
-                }
-            }
-        }
-    }
-}
diff --git a/src/main/java/com/zy/asrs/task/WorkLogScheduler.java b/src/main/java/com/zy/asrs/task/WorkLogScheduler.java
index 06a0624..a675ccd 100644
--- a/src/main/java/com/zy/asrs/task/WorkLogScheduler.java
+++ b/src/main/java/com/zy/asrs/task/WorkLogScheduler.java
@@ -1,6 +1,7 @@
 package com.zy.asrs.task;
 
 import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.LocMastService;
 import com.zy.asrs.service.WrkMastService;
 import com.zy.asrs.task.core.ReturnT;
 import com.zy.asrs.task.handler.WorkLogHandler;
@@ -9,6 +10,7 @@
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
+import javax.annotation.Resource;
 import java.util.List;
 
 /**
@@ -23,6 +25,9 @@
     @Autowired
     private WrkMastService wrkMastService;
 
+    @Resource
+    private LocMastService locMastService;
+
     @Scheduled(cron = "0/3 * * * * ? ")
     private void execute(){
         List<WrkMast> wrkMasts = wrkMastService.selectToBeHistoryData();
@@ -37,4 +42,47 @@
         }
     }
 
+// 鎻掑叆搴撲綅
+//    @Scheduled(cron = "0 43 * * * ?")
+//    private void execute1(){
+//        for(int i = 5; i<= 6; i++)
+//            for(int j = 41; j<= 56; j ++)
+//                for(int k = 1; k <= 11; k++){
+//                    LocMast locMast = new LocMast();
+//                    locMast.setLocNo("0"+i+"0"+j +""+(k <= 9 ? "0"+k:k));
+//                    locMast.setRow1(i);
+//                    locMast.setBay1(j);
+//                    locMast.setLev1(k);
+//                    locMast.setLocSts("O");
+//                    locMast.setCrnNo(2);
+//                    locMast.setWhsType(1L);
+//                    locMast.setLocType1((short)1);
+//                    locMast.setLocType2((short)1);
+//                    locMast.setLocType3((short)1);
+//                    locMast.setFullPlt("N");
+//                    locMastService.insert(locMast);
+//                }
+//        System.out.println("瀹屾垚---");
+//        for(int i = 7; i<= 8; i++)
+//            for(int j = 41; j<= 56; j ++)
+//                for(int k = 1; k <= 11; k++){
+//                    LocMast locMast = new LocMast();
+//                    locMast.setLocNo("0"+i+"0"+j +""+(k <= 9 ? "0"+k:k));
+//                    locMast.setRow1(i);
+//                    locMast.setBay1(j);
+//                    locMast.setLev1(k);
+//                    locMast.setLocSts("O");
+//                    locMast.setCrnNo(3);
+//                    locMast.setWhsType(1L);
+//                    locMast.setLocType1((short)1);
+//                    locMast.setLocType2((short)1);
+//                    locMast.setLocType3((short)1);
+//                    locMast.setFullPlt("N");
+//                    locMastService.insert(locMast);
+//                }
+//        System.out.println("瀹屾垚--瀹屾垚-");
+//
+//    }
+
+
 }
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
index f351aa7..b8b099e 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -64,7 +64,7 @@
             // 鍏ュ簱 --------------------------------------------------------------------------------
             if (wrkMast.getWrkSts() == 5) {
                 // 鍏ㄦ澘鍏ュ簱
-                if (wrkMast.getIoType() == 1 || wrkMast.getIoType() == 2) {
+                if (wrkMast.getIoType() == 1 || wrkMast.getIoType() == 3 || wrkMast.getIoType() == 10) {
                     // 鍏ュ簱閫氱煡鍗�
                     if (!Cools.isEmpty(wrkMast.getBarcode())) {
                         // 淇濆瓨鍏ュ簱閫氱煡妗e巻鍙叉。
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 df2e686..0e56f41 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -55,10 +55,12 @@
         Date now = new Date();
         LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
         try {
-            if (null == locMast && wrkMast.getIoType() != 2) {
-//                exceptionHandle("宸ヤ綔妗workNo={0}]搴撲綅鍙烽敊璇痆locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
-                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                return FAIL.setMsg("宸ヤ綔妗workNo=" + wrkMast.getWrkNo() + "]搴撲綅鍙烽敊璇痆locNo=" + wrkMast.getLocNo() + "]");
+            if (wrkMast.getIoType() != 3) {
+                if (null == locMast) {
+                    // exceptionHandle("宸ヤ綔妗workNo={0}]搴撲綅鍙烽敊璇痆locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo());
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    return FAIL.setMsg("宸ヤ綔妗workNo=" + wrkMast.getWrkNo() + "]搴撲綅鍙烽敊璇痆locNo=" + wrkMast.getLocNo() + "]");
+                }
             }
 
             switch (wrkMast.getIoType()) {
@@ -69,7 +71,7 @@
                         if (!Cools.isEmpty(wrkMast.getBarcode())) {
                             locMast.setBarcode(wrkMast.getBarcode());
                         }
-                        locMast.setLocSts(wrkMast.getSourceStaNo() == 1027 || wrkMast.getSourceStaNo() == 1020 ? "M" : "Z");
+                        locMast.setLocSts(wrkMast.getSourceStaNo() == 1027 || wrkMast.getSourceStaNo() == 1020 || wrkMast.getSourceStaNo() == 1019 ? "M" : "Z");
                         locMast.setIoTime(now);
                         locMast.setModiTime(now);
                         if (!locMastService.updateById(locMast)) {
@@ -540,6 +542,10 @@
             }
             // 淇敼宸ヤ綔涓绘。鐘舵��
             wrkMast.setWrkSts(15L);
+            // 绌烘《鍑哄簱瀹屾垚锛岀姸鎬佹敼涓�2.璁惧涓婅蛋
+            if(wrkMast.getIoType() == 101 || wrkMast.getIoType() == 110) {
+                wrkMast.setWrkSts(2L);
+            }
             wrkMast.setModiTime(now);
             if (!wrkMastService.updateById(wrkMast)) {
 //                exceptionHandle("鏇存柊鍑哄簱瀹屾垚鐘舵�佸け璐�;[workNo={0}]", wrkMast.getWrkNo());
diff --git a/src/main/java/com/zy/common/config/AdminInterceptor.java b/src/main/java/com/zy/common/config/AdminInterceptor.java
index 547ba96..c577d37 100644
--- a/src/main/java/com/zy/common/config/AdminInterceptor.java
+++ b/src/main/java/com/zy/common/config/AdminInterceptor.java
@@ -1,6 +1,5 @@
 package com.zy.common.config;
 
-import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.annotations.AppAuth;
 import com.core.annotations.ManagerAuth;
@@ -120,7 +119,7 @@
 //            String deToken = Cools.deTokn(token, user.getPassword());
 //            long timestamp = Long.parseLong(deToken.substring(0, 13));
             // 15鍒嗛挓鍚庤繃鏈�
-            if (System.currentTimeMillis() - userLogin.getCreateTime().getTime() > 900000){
+            if (System.currentTimeMillis() - userLogin.getCreateTime().getTime() > 3600000){
                 Http.response(response, BaseRes.DENIED);
                 return false;
             }
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 9dea891..cd5c552 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -7,6 +7,7 @@
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.result.FindLocNoAttributeVo;
+import com.zy.asrs.mapper.LocMastMapper;
 import com.zy.asrs.mapper.WrkMastMapper;
 import com.zy.asrs.service.*;
 import com.zy.asrs.utils.Utils;
@@ -22,7 +23,8 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 璐ф灦鏍稿績鍔熻兘
@@ -58,10 +60,8 @@
     @Resource
     private WrkMastMapper wrkMastMapper;
 
-    /**
-     * 缃愯绾垮彿鏄犲皠鐩爣绔欑偣 涓嬫爣:鐩爣绔欑偣
-     */
-    private static final int[] fillingLineMappingSite = {0,1079,1065,1072};
+    @Resource
+    private LocMastMapper locMastMapper;
 
     /**
      * 鐢熸垚宸ヤ綔鍙�
@@ -169,50 +169,151 @@
 
         // 鍏ョ┖妗跺簱
         if (staDescId == 1 && locArea == 2) {
-            String model = findLocNoAttributeVo.getModel(); // 褰撳墠妗剁被鍨�
             List<WrkMast> wrkMastList = wrkMastMapper.selectLastInEmptyLoc(); // 鍓嶉潰鍏ョ┖妗跺簱鐨勪换鍔�(鏈墽琛屽爢鍨涙満鍏ュ簱)
 
             if (wrkMastList.size() == 0) {
                 // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣�
-                locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'O').in("row1", 9, 11).orderBy("lev1").orderBy("bay1").orderBy("row1"));
+                List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("crn_no", 4).eq("loc_sts", "O"));
+                List<LocMast> collect = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 9 || locMast1.getRow1() == 11).collect(Collectors.toList());
+                List<LocMast> collect1 = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 10 || locMast1.getRow1() == 12).collect(Collectors.toList()); // 绗竴涓厛鏀捐繖涓ゆ帓
+                if (collect.size() == 0 || collect1.size() == 0) {
+                    log.error("-----绌烘《搴撴棤绌哄簱浣�----");
+                    throw new CoolException("绌烘《搴撴棤绌哄簱浣�");
+                }
+                // 鍙敤搴撲綅缁�
+                List<LocMast> locMastList = new ArrayList<>();
+                for(LocMast locMast1:collect) {
+                    Optional<LocMast> first = collect1.stream().filter(locMast2 -> locMast1.getRow1() + 1 == locMast2.getRow1() && Objects.equals(locMast1.getLev1(), locMast2.getLev1())
+                            && Objects.equals(locMast1.getBay1(), locMast2.getBay1())).findFirst();
+                    first.ifPresent(locMastList::add);
+                }
+
+                if (locMastList.size() == 0) {
+                    log.error("-----绌烘《搴撴棤瀵瑰簲绌虹┖妗剁粍----");
+                    throw new CoolException("绌烘《搴撴棤瀵瑰簲绌虹┖妗剁粍");
+                }
+                String model = findLocNoAttributeVo.getModel(); // 褰撳墠妗剁被鍨�
+                if (model.equals("208L") && locMastList.size() <= 40 * 2 * 2) { // 鏈�涓婇潰涓�灞傚彧鑳芥斁208L锛屽簱浣嶅墿浣欓噺涓嶅鏃讹紝濡傛灉鏄�208L妗跺叆搴擄紝鍒欏厛浠庢渶椤跺眰鏀�
+                    locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).reversed().thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
+                } else {
+                    locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
+                }
+                locMast = locMastList.get(0);
+
             } else {
                 WrkMast wrkMast = wrkMastList.get(0); // 鏈�鍚庝竴涓叆绌烘《搴撲换鍔�
-                // 鍓嶄竴涓换鍔℃槑缁�
-                WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no",wrkMast.getWrkNo()));
                 // 鍓嶄竴涓换鍔℃《绫诲瀷
-                String oldModel = wrkDetl.getModel();
+                String oldModel = wrkMast.getPdcType();
                 // 鍓嶄竴涓换鍔″熬鎵樻爣璇�
                 Integer oldCtnType = wrkMast.getCtnType();
-                if(model.equals(oldModel)) { // 褰撳墠妗朵笌鍓嶆《鏄竴绉嶇被鍨�
+                // 褰撳墠妗剁被鍨�
+                String matnr = findLocNoAttributeVo.getMatnr();
+                if(findLocNoAttributeVo.getMatnr().equals(wrkMast.getPdcType())) { // 褰撳墠妗朵笌鍓嶆《鏄竴绉嶇被鍨�
                     // 褰撳墠妗剁被鍨嬬殑浠诲姟鏈夊嚑涓�
-                    long count = wrkMastList.stream().filter(wrkMast1 -> wrkMast1.getPdcType().equals(oldModel)).count();
+                    long count = wrkMastList.stream().filter(wrkMast1 -> wrkMast1.getPdcType().equals(matnr)).count();
                     if (count % 2  == 0) { // 鍋舵暟锛屽彇涓�缁勬柊搴撲綅
-                        locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'O').in("row1", 9, 11).orderBy("lev1").orderBy("bay1").orderBy("row1"));
+                        // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣�
+                        List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("crn_no", 4).eq("loc_sts", "O"));
+                        List<LocMast> collect = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 9 || locMast1.getRow1() == 11).collect(Collectors.toList());
+                        List<LocMast> collect1 = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 10 || locMast1.getRow1() == 12).collect(Collectors.toList()); // 绗竴涓厛鏀捐繖涓ゆ帓
+                        if (collect.size() == 0 || collect1.size() == 0) {
+                            log.error("-----绌烘《搴撴棤绌哄簱浣�----");
+                            throw new CoolException("绌烘《搴撴棤绌哄簱浣�");
+                        }
+                        // 鍙敤搴撲綅缁�
+                        List<LocMast> locMastList = new ArrayList<>();
+                        for(LocMast locMast1:collect) {
+                            Optional<LocMast> first = collect1.stream().filter(locMast2 -> locMast1.getRow1() + 1 == locMast2.getRow1() && Objects.equals(locMast1.getLev1(), locMast2.getLev1())
+                                    && Objects.equals(locMast1.getBay1(), locMast2.getBay1())).findFirst();
+                            first.ifPresent(locMastList::add);
+                        }
+
+                        if (locMastList.size() == 0) {
+                            log.error("-----绌烘《搴撴棤瀵瑰簲绌虹┖妗剁粍----");
+                            throw new CoolException("绌烘《搴撴棤瀵瑰簲绌虹┖妗剁粍");
+                        }
+                        String model = findLocNoAttributeVo.getModel(); // 褰撳墠妗剁被鍨�
+                        if (model.equals("208L") && locMastList.size() <= 40 * 2 * 2) { // 鏈�涓婇潰涓�灞傚彧鑳芥斁208L锛屽簱浣嶅墿浣欓噺涓嶅鏃讹紝濡傛灉鏄�208L妗跺叆搴擄紝鍒欏厛浠庢渶椤跺眰鏀�
+                            locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).reversed().thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
+                        } else {
+                            locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
+                        }
+                        locMast = locMastList.get(0);
                     } else { // 濂囨暟锛屽彇鍓嶄竴搴撲綅瀵瑰簲鐨勭┖搴撲綅
                         String locNo = wrkMast.getLocNo();
                         int row = Integer.parseInt(locNo.substring(0, 2));
-                        if(row == 9 || row == 11) {
-                            String newLocNo = (row + 1) + locNo.substring(2);
+                        if(row == 10 || row == 12) {
+                            String newLocNo =(row == 10 ? "09" : "11") + locNo.substring(2);
                             locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", newLocNo).eq("loc_sts","O"));
                             if (locMast == null) {
-                                log.error("-----涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屾槸9锛�11鎺�,浣嗘槸瀵瑰簲搴撲綅涓嶄负绌�----");
-                                throw new CoolException("涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屾槸9锛�11鎺�,浣嗘槸瀵瑰簲搴撲綅涓嶄负绌�");
+                                log.error("-----涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛�10锛�12鎺�,浣嗘槸瀵瑰簲搴撲綅涓嶄负绌�----");
+                                throw new CoolException("涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屾槸10锛�12鎺�,浣嗘槸瀵瑰簲搴撲綅涓嶄负绌�");
                             }
                         } else {
-                            log.error("-----涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屼絾鏄笉鏄�9锛�11鎺�----");
-                            throw new CoolException("涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屼絾鏄笉鏄�9锛�11鎺�");
+                            log.error("-----涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屼絾鏄笉鏄�10锛�12鎺�----");
+                            throw new CoolException("涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屼絾鏄笉鏄�10锛�12鎺�");
                         }
                     }
                 } else { // 褰撳墠妗朵笌鍓嶆《涓嶆槸涓�绉嶇被鍨�
                       if(oldCtnType == 1) { // 鍓嶉潰鏄熬妗�
                           // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣�
-                          locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'O').in("row1", 9, 11).orderBy("lev1").orderBy("bay1").orderBy("row1"));
+                          List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("crn_no", 4).eq("loc_sts", "O"));
+                          List<LocMast> collect = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 9 || locMast1.getRow1() == 11).collect(Collectors.toList());
+                          List<LocMast> collect1 = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 10 || locMast1.getRow1() == 12).collect(Collectors.toList()); // 绗竴涓厛鏀捐繖涓ゆ帓
+                          if (collect.size() == 0 || collect1.size() == 0) {
+                              log.error("-----绌烘《搴撴棤绌哄簱浣�----");
+                              throw new CoolException("绌烘《搴撴棤绌哄簱浣�");
+                          }
+                          // 鍙敤搴撲綅缁�
+                          List<LocMast> locMastList = new ArrayList<>();
+                          for(LocMast locMast1:collect) {
+                              Optional<LocMast> first = collect1.stream().filter(locMast2 -> locMast1.getRow1() + 1 == locMast2.getRow1() && Objects.equals(locMast1.getLev1(), locMast2.getLev1())
+                                      && Objects.equals(locMast1.getBay1(), locMast2.getBay1())).findFirst();
+                              first.ifPresent(locMastList::add);
+                          }
+
+                          if (locMastList.size() == 0) {
+                              log.error("-----绌烘《搴撴棤瀵瑰簲绌虹┖妗剁粍----");
+                              throw new CoolException("绌烘《搴撴棤瀵瑰簲绌虹┖妗剁粍");
+                          }
+                          String model = findLocNoAttributeVo.getModel(); // 褰撳墠妗剁被鍨�
+                          if (model.equals("208L") && locMastList.size() <= 40 * 2 * 2) { // 鏈�涓婇潰涓�灞傚彧鑳芥斁208L锛屽簱浣嶅墿浣欓噺涓嶅鏃讹紝濡傛灉鏄�208L妗跺叆搴擄紝鍒欏厛浠庢渶椤跺眰鏀�
+                              locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).reversed().thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
+                          } else {
+                              locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
+                          }
+                          locMast = locMastList.get(0);
                       } else { // 鍓嶉潰涓嶆槸灏炬《
                           // 鍒ゆ柇鍓嶉潰鍏ョ┖妗跺簱浠诲姟鏁伴噺(鏈墽琛屽爢鍨涙満鍏ュ簱)
                           long count = wrkMastList.stream().filter(wrkMast1 -> wrkMast1.getPdcType().equals(oldModel)).count();
                           if (count % 2 == 0) { // 鍋舵暟锛屽彲浠ュ叆搴�
                               // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣�
-                              locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'O').in("row1", 9, 11).orderBy("lev1").orderBy("bay1").orderBy("row1"));
+                              List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>().eq("crn_no", 4).eq("loc_sts", "O"));
+                              List<LocMast> collect = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 9 || locMast1.getRow1() == 11).collect(Collectors.toList());
+                              List<LocMast> collect1 = locMasts.stream().filter(locMast1 -> locMast1.getRow1() == 10 || locMast1.getRow1() == 12).collect(Collectors.toList()); // 绗竴涓厛鏀捐繖涓ゆ帓
+                              if (collect.size() == 0 || collect1.size() == 0) {
+                                  log.error("-----绌烘《搴撴棤绌哄簱浣�----");
+                                  throw new CoolException("绌烘《搴撴棤绌哄簱浣�");
+                              }
+                              // 鍙敤搴撲綅缁�
+                              List<LocMast> locMastList = new ArrayList<>();
+                              for(LocMast locMast1:collect) {
+                                  Optional<LocMast> first = collect1.stream().filter(locMast2 -> locMast1.getRow1() + 1 == locMast2.getRow1() && Objects.equals(locMast1.getLev1(), locMast2.getLev1())
+                                          && Objects.equals(locMast1.getBay1(), locMast2.getBay1())).findFirst();
+                                  first.ifPresent(locMastList::add);
+                              }
+
+                              if (locMastList.size() == 0) {
+                                  log.error("-----绌烘《搴撴棤瀵瑰簲绌虹┖妗剁粍----");
+                                  throw new CoolException("绌烘《搴撴棤瀵瑰簲绌虹┖妗剁粍");
+                              }
+                              String model = findLocNoAttributeVo.getModel(); // 褰撳墠妗剁被鍨�
+                              if (model.equals("208L") && locMastList.size() <= 40 * 2 * 2) { // 鏈�涓婇潰涓�灞傚彧鑳芥斁208L锛屽簱浣嶅墿浣欓噺涓嶅鏃讹紝濡傛灉鏄�208L妗跺叆搴擄紝鍒欏厛浠庢渶椤跺眰鏀�
+                                  locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).reversed().thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
+                              } else {
+                                  locMastList = locMastList.stream().sorted(Comparator.comparing(LocMast::getLev1).thenComparing(LocMast::getBay1).thenComparing(LocMast::getRow1)).collect(Collectors.toList());
+                              }
+                              locMast = locMastList.get(0);
                           } else { // 濂囨暟锛屼笉鍙互鍏ュ簱
                               log.error("-----涓庡墠闈㈡《绫诲瀷涓嶄竴鏍凤紝鍓嶉潰妗朵笉鏄熬妗讹紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁颁笉鏄伓鏁帮紝涓嶈兘鍏ュ簱----");
                               throw new CoolException("涓庡墠闈㈡《绫诲瀷涓嶄竴鏍凤紝鍓嶉潰妗朵笉鏄熬妗讹紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁颁笉鏄伓鏁帮紝涓嶈兘鍏ュ簱");
@@ -222,17 +323,34 @@
             }
 
         } else if ((staDescId == 1 && locArea == 1) || staDescId == 10) { // 婊℃澘鍏ユ垚鍝佸簱鎴栬�呯┖鏉垮叆鎴愬搧搴�
-            // 鎸夊眰鍒楁帓椤哄簭鑾峰彇涓�涓狢anningLineInLocParam param搴撲綅
-            locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'O').in("row1", 1, 4, 5, 6, 7, 8).orderBy("lev1").orderBy("bay1").orderBy("row1"));
 
-            // 娴呭簱浣嶆病鏈変簡鍒欒幏鍙栦竴涓祬搴撲綅
+            // 鍏ユ垚鍝佸簱鎽嗘斁瑙勫垯 鍒ゆ柇鍙敤鍫嗗灈鏈鸿嚜鍔�-鏃犳姤璀� 鎸夊眰鍒楁帓椤哄簭浠庝笅寰�涓婏紝浠庡墠寰�鍚庢帓 鍏堟繁搴撲綅鍦ㄦ祬搴撲綅 鏈�涓婇潰涓�灞傚彧鑳芥斁208L妗�(鍓╀綑搴撲綅杈惧埌涓�涓槇鍊�208L灏卞厛浠庢渶涓婇潰寮�濮嬫斁锛屼笅闈㈢暀缁欏叾浠栬揣鐗�-鍚庣画浼樺寲)
+
+            List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts", 3).eq("crn_err", 0).in("crn_no",1,2,3));
+            if (basCrnps.size() == 0) {
+                log.error("鍏ュ簱璇锋眰搴撲綅澶辫触锛屾病鏈夎仈鏈哄爢鍨涙満鎴栧爢鍨涙満寮傚父");
+                throw new CoolException("鍏ュ簱璇锋眰搴撲綅澶辫触锛屾病鏈夎仈鏈哄爢鍨涙満鎴栧爢鍨涙満寮傚父");
+            }
+
+            List<Integer> crnList = basCrnps.stream().map(BasCrnp::getCrnNo).collect(Collectors.toList());
+
+            // 鍏ュ簱妗跺瀷
+            String model = findLocNoAttributeVo.getModel();
+            Wrapper<LocMast> wrapper = new EntityWrapper<LocMast>().eq("loc_sts", 'O')
+                    .in("crn_no", crnList).orderBy("lev1").orderBy("bay1").orderBy("row1");
+            // 鍏ュ簱妗跺瀷鏄笉鏄�208L
+            if (model == null || !model.equals("208L")) {
+                wrapper.ne("lev1", 11);
+            }
+            locMast = locMastService.selectOne(wrapper.in("row1", 1, 4, 5, 6, 7, 8));
+            // 娣卞簱浣嶆病鏈変簡鍒欒幏鍙栦竴涓祬搴撲綅
             if (locMast == null) {
-                locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'O').in("row1", 2, 3).orderBy("lev1").orderBy("bay1").orderBy("row1"));
+                locMast = locMastService.selectOne(wrapper.in("row1", 2, 3));
                 if (locMast == null) {
                     log.error("-----搴撲綅涓嶈冻----");
                     throw new CoolException("搴撲綅涓嶈冻");
                 } else {
-                    int count = locMastService.selectCount(new EntityWrapper<LocMast>().eq("loc_sts", 'O'));
+                    int count = locMastService.selectCount(wrapper.in("row1", 2, 3));
                     if (count <= 10) {
                         log.error("-----搴撲綅涓嶈冻锛岄鐣�10涓簱浣嶇敤鏉ュ簱浣嶈浆绉�----");
                         throw new CoolException("搴撲綅涓嶈冻锛岄鐣�10涓簱浣嶇敤鏉ュ簱浣嶈浆绉�");
@@ -271,15 +389,14 @@
     }
 
     @Transactional(propagation = Propagation.REQUIRED)
-    public StartupDto getLocNo(SearchLocParam param, Integer wantBucketFlag) {
+    public StartupDto getLocNo(SearchLocParam param, Integer staNo) {
 
         // 杩斿洖dto
         StartupDto startupDto = new StartupDto();
 
         startupDto.setWorkNo(getWorkNo(0)); // 宸ヤ綔鍙�
         startupDto.setSourceStaNo(param.getSourceStaNo()); // 婧愮珯鐐�
-        startupDto.setStaNo(fillingLineMappingSite[wantBucketFlag]); // 鐩爣绔欑偣
-        startupDto.setCrnNo(wantBucketFlag); // 璁板綍缃愯绾垮彿锛寃cs娓呴櫎瑕佹《淇″彿
+        startupDto.setStaNo(staNo); // 鐩爣绔欑偣
         return startupDto;
     }
 
diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index 7026987..bbe9aa6 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -16,6 +16,7 @@
 import com.zy.common.service.CommonService;
 import com.zy.common.web.param.CanningLineInLocParam;
 import com.zy.common.web.param.SearchLocParam;
+import com.zy.system.entity.Config;
 import com.zy.system.service.ConfigService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,10 +25,7 @@
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.Map;
+import java.util.*;
 
 /**
  * Created by vincent on 2020/10/30
@@ -80,22 +78,6 @@
         if (param.getIoType() == 1) {
             // 鍏堝垱寤哄叆搴撻�氱煡妗�
             waitPakin = comb(param.getBarcode(),param.getBucketType(),param.getBucketCount());
-//            if (Cools.isEmpty(param.getBarcode())) {
-//                return R.error("鏉$爜涓嶈兘涓虹┖");
-//            }
-//            waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode()));
-//            if (Cools.isEmpty(waitPakins)) {
-//                WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode());
-//                if (wrkMast != null && wrkMast.getIoType() == 103) {
-//                    return R.parse(CodeRes.PICK_600);
-//                }
-//                return R.parse(CodeRes.NO_COMB_700);
-//            }
-//            int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode()));
-//            int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode()));
-//            if (countLoc > 0 || countWrk > 0) {
-//                return R.error(CodeRes.EXIST_500);
-//            }
         }
         if (Cools.isEmpty(param.getLocType1())){
             return R.error("楂樹綆妫�娴嬩俊鍙蜂笉鑳戒负绌�");
@@ -109,12 +91,13 @@
         StartupDto dto = null;
 
         if(param.getIoType() == 1) {
-            Map<Integer, String> wantBucketFlag = param.getWantBucketFlag();
-            if(!wantBucketFlag.isEmpty()) {
+            List<SearchLocParam.WantBucket> wantBucketFlag = param.getWantBucketFlag();
+            Optional<SearchLocParam.WantBucket> first = wantBucketFlag.stream().filter(wantBucket -> wantBucket.getBucketType() == param.getBucketType()).findFirst();
+            if (first.isPresent()) {
                 if(waitPakin == null) {
                     return R.error("鍏ュ簱閫氱煡妗d负绌�");
                 } else {
-                    dto = startupFullPutStore(param,waitPakin); // 鐩翠緵缃愯绾夸换鍔�
+                    dto = startupFullPutStore(param,waitPakin,first.get()); // 鐩翠緵缃愯绾夸换鍔�
                     if (dto != null) {
                         log.info("WCS鍏ュ簱鐩翠緵缃愯绾挎帴鍙h繑鍙�:{},鎵樼洏鐮�:{}", dto, param.getBarcode());
                         return R.ok().add(dto);
@@ -126,7 +109,7 @@
         switch (param.getIoType()) {
             case 1://婊℃墭鐩樺叆搴�
                 assert waitPakin != null;
-                dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakin, param.getLocArea(),param.isTailSupportFlag());
+                dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakin, param.isTailSupportFlag());
                 break;
             case 10://绌烘墭鐩樺叆搴�
                 dto = emptyPlateIn(param.getSourceStaNo(), locTypeDto, param.getBarcode(), 1);
@@ -142,7 +125,7 @@
     @PostMapping("/pakin/CanningLine/loc/v1")
     @ResponseBody
     @Transactional
-    public synchronized R getLocNo(@RequestBody CanningLineInLocParam param) {
+    public synchronized R inCanningLine(@RequestBody CanningLineInLocParam param) {
         log.info("鏀跺埌WCS缃愯鍏ュ簱鎺ュ彛璇锋眰====>>鍏ュ弬:{}", param);
         if (Cools.isEmpty(param.getWrkNo())) {
             return R.error("宸ヤ綔鍙蜂笉鑳戒负绌�");
@@ -155,71 +138,248 @@
         WrkMast wrkMast1 = wrkMastService.selectById(param.getWrkNo());
         // 鏍规嵁浠诲姟鍙锋煡璇换鍔℃槑缁�
         WrkDetl wrkDetl1 = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast1.getWrkNo()));
-        // 鍒嗛厤搴撲綅
-        StartupDto dto = commonService.getLocNoNew(1, param.getSourceStaNo(), null, 1);
 
-        // 鍒涘缓鏂颁换鍔�
-        int workNo = dto.getWorkNo();
+        Mat mat = matService.selectByMatnr(param.getMatnr());
+        if (mat == null) {
+            log.error("缃愯瀹屾垚鍏ュ簱锛屽弽棣堢粰wcs鎴愬搧鏍囪瘑涓嶅瓨鍦細{}",param.getMatnr());
+            return R.error("缃愯瀹屾垚鍏ュ簱锛屽弽棣堢粰wcs鎴愬搧鏍囪瘑涓嶅瓨鍦細" + param.getMatnr());
+        }
+
+        // 鑾峰彇绯荤粺閰嶇疆锛岀湅鎴愬搧缃愯瀹屾垚鏄惁鐩存帴鍑哄埌鍙戣揣鍙�
+        Config config = configService.selectConfigByCode("gzwcfh");
+        String fhFlag = "";
+        if (config != null && config.getStatus() == 1 && !Cools.isEmpty(config.getValue())) {
+            fhFlag = config.getValue();
+        }
+
         Date now = new Date();
-        // 鐢熸垚宸ヤ綔妗�
-        WrkMast wrkMast = new WrkMast();
-        wrkMast.setWrkNo(workNo);
-        wrkMast.setIoTime(now);
-        wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
-        wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
-        wrkMast.setIoPri(13D); // 浼樺厛绾�
-        wrkMast.setCrnNo(dto.getCrnNo());
-        wrkMast.setSourceStaNo(dto.getSourceStaNo());
-        wrkMast.setStaNo(dto.getStaNo());
-        wrkMast.setLocNo(dto.getLocNo());
-        wrkMast.setBarcode(wrkMast1.getBarcode()); // 鎵樼洏鐮�
-        wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
-        wrkMast.setPicking("N"); // 鎷f枡
-        wrkMast.setExitMk("N"); // 閫�鍑�
-        wrkMast.setEmptyMk("N"); // 绌烘澘
-        wrkMast.setLinkMis("Y");
-        wrkMast.setCtnType(wrkMast1.getCtnType()); // 灏炬墭鏍囪瘑
-        wrkMast.setPdcType(wrkMast1.getPdcType()); // 绌烘《绫诲瀷
-        wrkMast.setAppeTime(now);
-        boolean res = wrkMastService.insert(wrkMast);
-        if (!res) {
-            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
-        }
+        StartupDto dto;
 
-        // 鐢熸垚宸ヤ綔妗f槑缁�
-        // todo 鍏ユ垚鍝佹《搴撶殑鐗╂枡 杩欓噷鍏堟牴鎹┖妗剁被鍨嬫寚瀹氭垚鍝佹《鐗╂枡
-        String matnr;
-        if(wrkMast1.getPdcType().equals("208L")) {
-            matnr = "YJ2025011814414206";
-        } else {
-            matnr = "YJ2025011814412359";
-        }
-        Mat mat = matService.selectByMatnr(matnr);
-        WrkDetl wrkDetl = new WrkDetl();
-        wrkDetl.sync(mat);
-        wrkDetl.setWrkNo(workNo);
-        wrkDetl.setAnfme(wrkDetl1.getAnfme());
-        wrkDetl.setZpallet(wrkMast1.getBarcode());
-        wrkDetl.setIoTime(now);
-        wrkDetl.setAppeTime(now);
-        if (!wrkDetlService.insert(wrkDetl)) {
-            throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
-        }
+        // 鍒ゆ柇璐存爣寮傚父锛屽妫�閲嶉噺寮傚父鐨勶紝涓嶅垎閰嶅簱浣嶏紝鍘诲線寮傚父鍙�1090
+//        if ( !param.isTbFlag() || param.getGrossWeight() < param.getWeight()) {
+//
+//            // 鐢熸垚宸ヤ綔妗� ------------------------------------------------------
+//            WrkMast wrkMast = new WrkMast();
+//            wrkMast.setWrkNo(commonService.getWorkNo(0));
+//            wrkMast.setIoTime(now);
+//            wrkMast.setIoType(3); // 鍏ュ嚭搴撶被鍨�3.绔欏埌绔�
+//            wrkMast.setWrkSts(2L);
+//            wrkMast.setIoPri(13D); // 浼樺厛绾�
+////            wrkMast.setCrnNo(dto.getCrnNo());
+//            wrkMast.setSourceStaNo(param.getSourceStaNo());
+//            wrkMast.setStaNo(1090);
+////            wrkMast.setLocNo(dto.getLocNo());
+//            wrkMast.setBarcode(wrkMast1.getBarcode()); // 鎵樼洏鐮�
+//            wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+////            wrkMast.setPicking("N"); // 鎷f枡
+////            wrkMast.setExitMk("N"); // 閫�鍑�
+////            wrkMast.setEmptyMk("N"); // 绌烘澘
+////            wrkMast.setLinkMis("Y");
+////            wrkMast.setCtnType(wrkMast1.getCtnType()); // 灏炬墭鏍囪瘑
+//            wrkMast.setPdcType(wrkMast1.getPdcType()); // 绌烘《绫诲瀷
+//            wrkMast.setAppeTime(now);
+//            wrkMastService.insert(wrkMast);
+//
+//            // 鐢熸垚宸ヤ綔妗f槑缁�----------------------------------------------------
+//            WrkDetl wrkDetl = new WrkDetl();
+//            wrkDetl.sync(mat);
+//            wrkDetl.setWrkNo(wrkMast.getWrkNo());
+//            wrkDetl.setAnfme(wrkDetl1.getAnfme());
+//            wrkDetl.setZpallet(wrkMast1.getBarcode());
+//            wrkDetl.setBatch(param.getBatch());
+//            wrkDetl.setManuDate(param.getManuDate());
+//            wrkDetl.setWeight(param.getWeight());
+//            wrkDetl.setManLength(param.getGrossWeight());
+//            wrkDetl.setInspect(1); // 璐存爣鎴愬姛
+//            wrkDetl.setIoTime(now);
+//            wrkDetl.setAppeTime(now);
+//            wrkDetlService.insert(wrkDetl);
+//
+//            dto = new StartupDto();
+//            dto.setWorkNo(wrkMast.getWrkNo());
+//            dto.setSourceStaNo(wrkMast.getSourceStaNo());
+//            dto.setStaNo(wrkMast.getStaNo());
+//        } else
+        if(param.getMatnr().equals(fhFlag)) { // 鐩存帴鍙戣揣
+            // 鐢熸垚宸ヤ綔妗� ------------------------------------------------------
+            WrkMast wrkMast = new WrkMast();
+            wrkMast.setWrkNo(commonService.getWorkNo(0));
+            wrkMast.setIoTime(now);
+            wrkMast.setIoType(3); // 鍏ュ嚭搴撶被鍨�3.绔欏埌绔�
+            wrkMast.setWrkSts(2L);
+            wrkMast.setIoPri(13D); // 浼樺厛绾�
+//            wrkMast.setCrnNo(dto.getCrnNo());
+            wrkMast.setSourceStaNo(param.getSourceStaNo());
+            wrkMast.setStaNo(1016);
+//            wrkMast.setLocNo(dto.getLocNo());
+            wrkMast.setBarcode(wrkMast1.getBarcode()); // 鎵樼洏鐮�
+            wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+//            wrkMast.setPicking("N"); // 鎷f枡
+//            wrkMast.setExitMk("N"); // 閫�鍑�
+//            wrkMast.setEmptyMk("N"); // 绌烘澘
+//            wrkMast.setLinkMis("Y");
+//            wrkMast.setCtnType(wrkMast1.getCtnType()); // 灏炬墭鏍囪瘑
+            wrkMast.setPdcType(wrkMast1.getPdcType()); // 绌烘《绫诲瀷
+            wrkMast.setAppeTime(now);
+            wrkMastService.insert(wrkMast);
 
-        // 瀹屾垚鏃т换鍔�(鐩翠緵缃愯绾夸换鍔℃墜鍔ㄥ畬鎴�,鍑哄簱浠诲姟浠诲姟鍙锋秷澶变細鑷姩瀹屾垚)
-        if (wrkMast1.getIoType() == 2) {
-            wrkMast1.setWrkSts(4L);
+            // 鐢熸垚宸ヤ綔妗f槑缁�----------------------------------------------------
+            WrkDetl wrkDetl = new WrkDetl();
+            wrkDetl.sync(mat);
+            wrkDetl.setWrkNo(wrkMast.getWrkNo());
+            wrkDetl.setAnfme(wrkDetl1.getAnfme());
+            wrkDetl.setZpallet(wrkMast1.getBarcode());
+            wrkDetl.setBatch(param.getBatch());
+            wrkDetl.setManuDate(param.getManuDate());
+            wrkDetl.setWeight(param.getWeight());
+            wrkDetl.setManLength(param.getGrossWeight());
+            wrkDetl.setInspect(1);
+            wrkDetl.setIoTime(now);
+            wrkDetl.setAppeTime(now);
+            wrkDetlService.insert(wrkDetl);
+
+            dto = new StartupDto();
+            dto.setWorkNo(wrkMast.getWrkNo());
+            dto.setSourceStaNo(wrkMast.getSourceStaNo());
+            dto.setStaNo(wrkMast.getStaNo());
+        } else  { // 妫�娴嬫垚鍔燂紝鍏ユ垚鍝佸簱
+                // 妫�绱㈠簱浣嶆潯浠�
+                FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
+                findLocNoAttributeVo.setMatnr(wrkDetl1.getMatnr());
+                findLocNoAttributeVo.setModel(wrkDetl1.getModel());
+
+                // 鍒嗛厤搴撲綅
+                dto = commonService.getLocNoNew(1, param.getSourceStaNo(), findLocNoAttributeVo, 1);
+
+                // 鍒涘缓鏂颁换鍔�
+                int workNo = dto.getWorkNo();
+                // 鐢熸垚宸ヤ綔妗�
+                WrkMast wrkMast = new WrkMast();
+                wrkMast.setWrkNo(workNo);
+                wrkMast.setIoTime(now);
+                wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
+                wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱
+                wrkMast.setIoPri(13D); // 浼樺厛绾�
+                wrkMast.setCrnNo(dto.getCrnNo());
+                wrkMast.setSourceStaNo(dto.getSourceStaNo());
+                wrkMast.setStaNo(dto.getStaNo());
+                wrkMast.setLocNo(dto.getLocNo());
+                wrkMast.setBarcode(wrkMast1.getBarcode()); // 鎵樼洏鐮�
+                wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+                wrkMast.setPicking("N"); // 鎷f枡
+                wrkMast.setExitMk("N"); // 閫�鍑�
+                wrkMast.setEmptyMk("N"); // 绌烘澘
+                wrkMast.setLinkMis("Y");
+//            wrkMast.setCtnType(wrkMast1.getCtnType()); // 灏炬墭鏍囪瘑
+                wrkMast.setPdcType(wrkMast1.getPdcType()); // 绌烘《绫诲瀷
+                wrkMast.setAppeTime(now);
+                wrkMastService.insert(wrkMast);
+
+                // 鐢熸垚宸ヤ綔妗f槑缁�
+                WrkDetl wrkDetl = new WrkDetl();
+                wrkDetl.sync(mat);
+                wrkDetl.setWrkNo(workNo);
+                wrkDetl.setAnfme(wrkDetl1.getAnfme());
+                wrkDetl.setZpallet(wrkMast1.getBarcode());
+                wrkDetl.setBatch(param.getBatch());
+                wrkDetl.setManuDate(param.getManuDate());
+                wrkDetl.setWeight(param.getWeight());
+                wrkDetl.setManLength(param.getGrossWeight());
+                wrkDetl.setInspect(1); // 璐存爣鎴愬姛
+                wrkDetl.setIoTime(now);
+                wrkDetl.setAppeTime(now);
+                wrkDetlService.insert(wrkDetl);
+
+                // 鏇存柊鐩爣搴撲綅鐘舵��
+                LocMast locMast = locMastService.selectById(dto.getLocNo());
+                if (locMast.getLocSts().equals("O")) {
+                    locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+                    locMast.setModiTime(now);
+                    if (!locMastService.updateById(locMast)) {
+                        throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�");
+                    }
+                } else {
+                    log.error(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
+                    throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
+                }
+            }
+
+        // 瀹屾垚鏃т换鍔�(鐩翠緵缃愯绾夸换鍔℃墜鍔ㄥ畬鎴�)
+        if (wrkMast1.getIoType() == 3 && wrkMast1.getWrkSts() == 2) {
+            wrkMast1.setWrkSts(5L);
             wrkMast1.setModiTime(now);
             wrkMastService.updateById(wrkMast1);
+        } else if(wrkMast1.getIoType() == 101 && wrkMast1.getWrkSts() == 2) {
+            wrkMast1.setWrkSts(15L);
+            wrkMast1.setModiTime(now);
+            wrkMastService.updateById(wrkMast1);
+        } else {
+            log.error("缃愯瀹屾垚锛屽畬鎴愭棫浠诲姟澶辫触锛歿}",wrkMast1.getWrkNo());
+            return R.parse("缃愯瀹屾垚锛屽畬鎴愭棫浠诲姟澶辫触:"+wrkMast1.getWrkNo());
         }
 
         // 鏇存柊婧愮珯鐐逛俊鎭�
         BasDevp basDevp = basDevpService.selectById(param.getSourceStaNo());
-        basDevp.setWrkNo(workNo);
+        basDevp.setWrkNo(dto.getWorkNo());
         basDevp.setModiTime(now);
         if (!basDevpService.updateById(basDevp)) {
             throw new CoolException("鏇存柊婧愮珯澶辫触");
         }
+
+        log.info("WCS缃愯鍏ュ簱鎺ュ彛杩斿弬:{},鎵樼洏鐮�:{}", dto, wrkMast1.getBarcode());
+        return R.ok(dto);
+    }
+
+    // 寮傚父鍙e叆搴擄紝鑾峰彇搴撲綅
+    @PostMapping("/pakin/abnormalMouthWarehousing/loc/v1")
+    @ResponseBody
+    @Transactional
+    public synchronized R abnormalMouthWarehousing(@RequestBody CanningLineInLocParam param) {
+        log.info("鏀跺埌WCS寮傚父鍙e叆搴撴帴鍙h姹�====>>鍏ュ弬:{}", param);
+        int wrkNo = param.getWrkNo();
+        Integer sourceStaNo = param.getSourceStaNo();
+        if (Cools.isEmpty(wrkNo)) {
+            return R.error("宸ヤ綔鍙蜂笉鑳戒负绌�");
+        }
+        if (Cools.isEmpty(sourceStaNo)) {
+            return R.error("婧愮珯缂栧彿涓嶈兘涓虹┖");
+        }
+
+        Date now = new Date();
+        StartupDto dto;
+
+        WrkMast wrkMast = wrkMastService.selectById(wrkNo);
+        if (wrkMast == null) {
+            throw new CoolException("寮傚父鍙e叆搴撲换鍔″彿鏃犱换鍔★細" + wrkNo);
+        } else if (wrkMast.getLocNo() != null) {
+            throw new CoolException("寮傚父鍙e叆搴撳簱浣嶅凡鍒嗛厤锛�" + wrkMast.getLocNo());
+        }
+
+        if(!param.isTbFlag()) { //涓嬬嚎鍑哄簱
+            wrkMast.setSourceStaNo(1090);
+            wrkMast.setStaNo(1016); // 寮傚父涓嬬嚎榛樿鍏ュ簱绔欑偣涓�1016
+            wrkMastService.updateById(wrkMast);
+            return R.ok();
+        }
+
+
+        WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo));
+
+        // 妫�绱㈠簱浣嶆潯浠�
+        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo();
+        findLocNoAttributeVo.setMatnr(wrkDetl.getMatnr());
+        findLocNoAttributeVo.setModel(wrkDetl.getModel());
+
+        // 鍒嗛厤搴撲綅
+        dto = commonService.getLocNoNew(1, param.getSourceStaNo(), findLocNoAttributeVo, 1);
+
+        dto.setWorkNo(wrkMast.getWrkNo()); // 浣跨敤鍘熷伐浣滃彿
+        wrkMast.setIoType(1); // 鍏ュ嚭搴撶被鍨� 1.鍏ュ簱
+        wrkMast.setCrnNo(dto.getCrnNo());
+        wrkMast.setLocNo(dto.getLocNo());
+        wrkMast.setSourceStaNo(dto.getSourceStaNo());
+        wrkMast.setStaNo(dto.getStaNo());
+        wrkMastService.updateById(wrkMast);
 
         // 鏇存柊鐩爣搴撲綅鐘舵��
         LocMast locMast = locMastService.selectById(dto.getLocNo());
@@ -234,12 +394,20 @@
             throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤");
         }
 
-        log.info("WCS缃愯鍏ュ簱鎺ュ彛杩斿弬:{},鎵樼洏鐮�:{}", dto, wrkMast1.getBarcode());
+        // 鏇存柊婧愮珯鐐逛俊鎭�
+        BasDevp basDevp = basDevpService.selectById(sourceStaNo);
+        basDevp.setWrkNo(dto.getWorkNo());
+        basDevp.setModiTime(now);
+        if (!basDevpService.updateById(basDevp)) {
+            throw new CoolException("鏇存柊婧愮珯澶辫触");
+        }
+
+        log.info("WCS寮傚父鍙e叆搴撴帴鍙h繑鍙�:{},鎵樼洏鐮�:{}", dto, wrkMast.getBarcode());
         return R.ok(dto);
     }
 
     @Transactional(propagation = Propagation.REQUIRED)
-    public WaitPakin comb(String barcode, String matnr,int bucketCount) {
+    public WaitPakin comb(String barcode, int matnr,int bucketCount) {
         if (Cools.isEmpty(barcode, matnr,bucketCount)) {
             throw new CoolException(BaseRes.PARAM);
         }
@@ -282,7 +450,7 @@
 
 
 //            for (DetlDto detlDto : detlDtos) {
-                Mat mat = matService.selectByMatnr(matnr);
+                Mat mat = matService.selectByMatnr(String.valueOf(matnr));
                 if (Cools.isEmpty(mat)) {
                     throw new CoolException(matnr + "鍟嗗搧妗f涓嶅瓨鍦�");
                 }
@@ -443,15 +611,12 @@
      * 鍏ㄦ澘鍏ュ簱
      */
     @Transactional(propagation = Propagation.REQUIRED)
-    public StartupDto startupFullPutStore(Integer devpNo, String barcode, LocTypeDto locTypeDto, WaitPakin waitPakins, int locArea,boolean tailSupportFlag) {
+    public StartupDto startupFullPutStore(Integer devpNo, String barcode, LocTypeDto locTypeDto, WaitPakin waitPakins,boolean tailSupportFlag) {
         // 婧愮珯鐐圭姸鎬佹娴�
         BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
         // 妫�绱㈠簱浣�
-//        List<String> matnrs = waitPakins.stream().map(WaitPakin::getMatnr).distinct().collect(Collectors.toList());
-//        List<String> batchs = waitPakins.stream().map(WaitPakin::getBatch).distinct().collect(Collectors.toList());
-//        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(matnrs.get(0), batchs.get(0));
         FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(waitPakins);
-        StartupDto dto = commonService.getLocNoNew( 1, devpNo,findLocNoAttributeVo, locArea);
+        StartupDto dto = commonService.getLocNoNew( 1, devpNo,findLocNoAttributeVo,waitPakins.getModel().equals("绌烘墭鐩�") ? 1 : 2);
         int workNo = dto.getWorkNo();
         Date now = new Date();
         // 鐢熸垚宸ヤ綔妗�
@@ -472,7 +637,7 @@
         wrkMast.setEmptyMk("N"); // 绌烘澘
         wrkMast.setLinkMis("Y");
         wrkMast.setCtnType(tailSupportFlag ? 1 : 0); // 灏炬墭鏍囪瘑
-        wrkMast.setPdcType(waitPakins.getModel()); // 绌烘《绫诲瀷
+        wrkMast.setPdcType(waitPakins.getMatnr()); // 绌烘《绫诲瀷
         // 鎿嶄綔浜哄憳鏁版嵁
         wrkMast.setAppeTime(now);
         wrkMast.setModiTime(now);
@@ -524,43 +689,30 @@
      * 鐩翠緵缃愯绾�
      */
     @Transactional(propagation = Propagation.REQUIRED)
-    public StartupDto startupFullPutStore(SearchLocParam param,WaitPakin waitPakin) {
+    public StartupDto startupFullPutStore(SearchLocParam param,WaitPakin waitPakin,SearchLocParam.WantBucket wantBucket) {
 
         // 婧愮珯鐐圭姸鎬佹娴�
         BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true);
 
-        String model = waitPakin.getModel();
+        // 鍒ゆ柇绌烘《搴撴湁澶氬皯杩欑妗跺瀷
+        int count = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("matnr", param.getBucketType()).where("CAST(SUBSTRING(loc_no, 1, 2) as int) >= 9"));
 
-        Integer wantBucketFlag = 0; // 缃愯绾垮彿
-        String wantBucketType; // 妗剁被鍨�
-        boolean flag = true;
-        for(Map.Entry<Integer,String> entry :param.getWantBucketFlag().entrySet()) {
-            wantBucketFlag = entry.getKey();
-            wantBucketType = entry.getValue();
-            if(model.equals(wantBucketType)) { // 褰撳墠妗剁被鍨嬫槸缃愯绾胯鐨勭被鍨�
-                // 绌烘《搴撴棤璇ョ被鍨嬫《
-                int count = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("model", model).where("CAST(SUBSTRING(loc_no, 1, 2) as int) >= 9"));
-                if (count == 0) {
-                    flag = false;
-                    break;
-                }
-            }
-        }
-        if (flag) { // 涓嶆弧瓒崇洿渚涚綈瑁呯嚎鏉′欢
+        // 灏忎簬10涓垯鐩翠緵缃愯绾匡紝閬垮厤鍏ョ┖妗跺簱鍚庡湪鍑哄簱
+        if (count > 10) {
              return null;
         }
 
-        StartupDto dto = commonService.getLocNo(param,wantBucketFlag);
+        StartupDto dto = commonService.getLocNo(param,wantBucket.getSite());
         int workNo = dto.getWorkNo();
         Date now = new Date();
         // 鐢熸垚宸ヤ綔妗�
         WrkMast wrkMast = new WrkMast();
         wrkMast.setWrkNo(workNo);
         wrkMast.setIoTime(now);
-        wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID
-        wrkMast.setIoType(2); // 鍏ュ嚭搴撶姸鎬侊細2.鐩翠緵缃愯绾�
+        wrkMast.setWrkSts(2L);
+        wrkMast.setIoType(3); // 鍏ュ嚭搴撶姸鎬侊細3.绔欏埌绔�
         wrkMast.setIoPri(13D); // 浼樺厛绾�
-        wrkMast.setCrnNo(dto.getCrnNo());
+//        wrkMast.setCrnNo(dto.getCrnNo());
         wrkMast.setSourceStaNo(dto.getSourceStaNo());
         wrkMast.setStaNo(dto.getStaNo());
 //        wrkMast.setLocNo(dto.getLocNo());
@@ -571,7 +723,7 @@
         wrkMast.setEmptyMk("N"); // 绌烘澘
         wrkMast.setLinkMis("Y");
         wrkMast.setCtnType(param.isTailSupportFlag() ? 1 : 0); // 灏炬墭鏍囪瘑
-        wrkMast.setPdcType(model); // 绌烘《绫诲瀷
+        wrkMast.setPdcType(waitPakin.getMatnr()); // 绌烘《绫诲瀷
         // 鎿嶄綔浜哄憳鏁版嵁
         wrkMast.setAppeTime(now);
         wrkMast.setModiTime(now);
@@ -634,8 +786,8 @@
         wrkMast.setExitMk("N"); // 閫�鍑�
         wrkMast.setEmptyMk("Y"); // 绌烘澘
         wrkMast.setLinkMis("Y");
-        wrkMast.setBarcode(barcode);
-        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
+//        wrkMast.setBarcode(barcode);
+//        wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷
         // 鎿嶄綔浜哄憳鏁版嵁
         wrkMast.setAppeTime(new Date());
         wrkMast.setModiTime(new Date());
diff --git a/src/main/java/com/zy/common/web/param/CanningLineInLocParam.java b/src/main/java/com/zy/common/web/param/CanningLineInLocParam.java
index 23494aa..e37c873 100644
--- a/src/main/java/com/zy/common/web/param/CanningLineInLocParam.java
+++ b/src/main/java/com/zy/common/web/param/CanningLineInLocParam.java
@@ -10,14 +10,28 @@
 @Data
 public class CanningLineInLocParam {
 
-    /**
-     * 浠诲姟鍙�
-     */
-    private Integer wrkNo;
+    // 浠诲姟鍙�
+    private int wrkNo;
 
-    /**
-     * 婧愮珯鐐�
-     */
+    // 妗跺瀷鏍囪瘑
+    private String matnr;
+
+    //  鎵瑰彿
+    private String batch;
+
+    // 鐢熶骇鏃ユ湡
+    private String manuDate;
+
+    // 鍑�閲�
+    private double weight;
+
+    // 澶嶆閲嶉噺
+    private double grossWeight;
+
+    // 婧愮珯鐐�
     private Integer sourceStaNo;
 
+    // 璐存爣鎴愬姛鍚�
+    private boolean tbFlag;
+
 }
diff --git a/src/main/java/com/zy/common/web/param/SearchLocParam.java b/src/main/java/com/zy/common/web/param/SearchLocParam.java
index 2817ed6..da3a1f8 100644
--- a/src/main/java/com/zy/common/web/param/SearchLocParam.java
+++ b/src/main/java/com/zy/common/web/param/SearchLocParam.java
@@ -1,9 +1,9 @@
 package com.zy.common.web.param;
 
+import lombok.AllArgsConstructor;
 import lombok.Data;
 
-import java.util.HashMap;
-import java.util.Map;
+import java.util.List;
 
 /**
  * Created by vincent on 2020/10/30
@@ -20,11 +20,8 @@
     // 搴撲綅瑙勬牸锛� 0:鏈煡, 1:浣庡簱浣�, 2:楂樺簱浣嶏級
     private Short locType1;
 
-    // 搴撳尯绫诲瀷 1.鎴愬搧搴擄紝2.绌烘《搴�
-    private int locArea;
-
     // 鍏ュ簱妗剁紪鍙�/鐗╂枡鍙�
-    private String bucketType;
+    private int bucketType;
 
     // 鍏ュ簱妗舵暟閲�
     private int bucketCount;
@@ -32,6 +29,13 @@
     // 灏炬墭鏍囪瘑
     private boolean tailSupportFlag;
 
-    // 缃愯绾胯妗舵爣璇�
-    private Map<Integer,String> wantBucketFlag =  new HashMap<>();
+    // 缃愯绾胯妗� 缃愯绾垮彿-妗剁被鍨�
+    private List<WantBucket> wantBucketFlag;
+
+    @Data
+    @AllArgsConstructor
+    public static class WantBucket{
+        private int site;
+        private int bucketType;
+    }
 }
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index bbdcc4f..4dd548a 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -10,7 +10,7 @@
     enabled: false
   datasource:
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-    url: jdbc:sqlserver://127.0.0.1:1433;databasename=mdqzasrs
+    url: jdbc:sqlserver://192.168.2.201:1433;databasename=mdqzasrs
     username: sa
     password: sa@123
   mvc:
diff --git a/src/main/resources/license.lic b/src/main/resources/license.lic
index dd30251..df70474 100644
--- a/src/main/resources/license.lic
+++ b/src/main/resources/license.lic
Binary files differ
diff --git a/src/main/resources/mapper/WrkMastLogMapper.xml b/src/main/resources/mapper/WrkMastLogMapper.xml
index db294c5..a1db83a 100644
--- a/src/main/resources/mapper/WrkMastLogMapper.xml
+++ b/src/main/resources/mapper/WrkMastLogMapper.xml
@@ -65,6 +65,7 @@
         <result column="rgv_ssta_no" property="rgvSstaNo" />
         <result column="rgv_dsta_no" property="rgvDstaNo" />
         <result column="work_no_other" property="workNoOther" />
+        <result column="Pdc_type" property="pdcType" />
     </resultMap>
     <sql id="queryWhere">
         <where>
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index d343232..4ffbb83 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -64,6 +64,7 @@
         <result column="rgv_ssta_no" property="rgvSstaNo" />
         <result column="rgv_dsta_no" property="rgvDstaNo" />
         <result column="work_no_other" property="workNoOther" />
+        <result column="Pdc_type" property="pdcType" />
     </resultMap>
 
     <select id="selectToBeCompleteData" resultMap="BaseResultMap">
@@ -152,7 +153,7 @@
         </choose>
     </select>
     <select id="selectLastInEmptyLoc" resultType="com.zy.asrs.entity.WrkMast">
-        select wrk_no wrkNo,ctn_type ctnType,Pdc_type PdcType,loc_no locNo from asr_wrk_mast where sta_no = 1050 and wrk_sts in(2,9,10) order by io_time desc
+        select wrk_no wrkNo,ctn_type ctnType,Pdc_type pdcType,loc_no locNo from asr_wrk_mast where sta_no = 1050 and wrk_sts in(2,9,10) order by io_time desc
     </select>
 
 </mapper>
diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js
index a7f21c9..0532a54 100644
--- a/src/main/webapp/static/js/common.js
+++ b/src/main/webapp/static/js/common.js
@@ -188,7 +188,7 @@
     ,{field: 'maktx', align: 'center',title: '鍟嗗搧鍚嶇О锛堝搧鍚嶏級', width: 200}
     // ,{field: 'name', align: 'center',title: '鍒悕'}
     ,{field: 'specs', align: 'center',title: '瑙勬牸'}
-    ,{field: 'model', align: 'center',title: '浠g爜', hide: true}
+    ,{field: 'model', align: 'center',title: '妗跺瀷'}
     ,{field: 'color', align: 'center',title: '棰滆壊', hide: true}
     ,{field: 'brand', align: 'center',title: '鍝佺墝', hide: true}
     ,{field: 'unit', align: 'center',title: '鍗曚綅', hide: false}
diff --git a/src/main/webapp/views/index.html b/src/main/webapp/views/index.html
index 868a5bb..5ff0f43 100644
--- a/src/main/webapp/views/index.html
+++ b/src/main/webapp/views/index.html
@@ -2,11 +2,11 @@
 <html lang="en">
 <head>
   <meta charset="utf-8">
-  <title>涓壃 - 鑷姩鍖栫珛浣撲粨搴� - AS / RS</title>
+  <title>鑷姩浠撳簱WMS绯荤粺</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.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
-  <link rel="icon" type="image/x-icon" href="../static/image/favicon.ico" />
+<!--  <link rel="icon" type="image/x-icon" href="../static/image/favicon.ico" />-->
   <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/loader.css" media="all">
@@ -26,7 +26,7 @@
   <!-- 澶撮儴 -->
   <div class="layui-header">
     <div class="layui-logo">
-      <img src="../static/image/logo.png" style="display: inline-block; width: 40%;height: auto">
+<!--      <img src="../static/image/logo.png" style="display: inline-block; width: 40%;height: auto">-->
       <!--          <span style="margin-top: 0; letter-spacing: 10px">涓壃绔嬪簱</span>-->
       <!--          <img src="../static/image/logo.svg"/>-->
       <!--          <cite>涓壃 - Zoneyung</cite>-->
@@ -75,7 +75,7 @@
   <div class="layui-body"></div>
   <!-- 搴曢儴 -->
   <div class="layui-footer layui-text">
-    copyright 漏 2022 <a href="https://www.superton.cn/" target="_blank">娴欐睙涓壃绔嬪簱鏈夐檺鍏徃</a> all rights reserved.
+<!--    copyright 漏 2022 <a href="https://www.superton.cn/" target="_blank">娴欐睙涓壃绔嬪簱鏈夐檺鍏徃</a> all rights reserved.-->
     <span class="pull-right">Version 1.0.0</span>
   </div>
 
diff --git a/src/main/webapp/views/login.html b/src/main/webapp/views/login.html
index 6fcbd66..27cd436 100644
--- a/src/main/webapp/views/login.html
+++ b/src/main/webapp/views/login.html
@@ -53,7 +53,7 @@
                     z-index: 100;
                     top: 22px;
                     left: 20px;">
-        <img src="../static/image/logo.png" alt="" style="width: 20%">
+<!--        <img src="../static/image/logo.png" alt="" style="width: 20%">-->
       </div>
       <div class="p-sketch-outline">
         <h2 class="p-sketch-outline__title">Automatic Storage and Retrieval System</h2>
@@ -67,7 +67,7 @@
     <div id="sidebar">
       <div class="login-contain">
         <div class="login-box">
-          <img src="../static/image/logo.png" alt="" style="width: 80%">
+<!--          <img src="../static/image/logo.png" alt="" style="width: 80%">-->
 <!--          <span class="login100-form-title p-t-20 p-b-45">涓壃绔嬪簱</span>-->
 <!--          <span class="login100-form-title p-t-20 p-b-45" style="margin: 15px 0;color: #868686;font-size: 24px">WMS</span>-->
           <div class="wrap-input100 validate-input m-b-10" data-validate="璇疯緭鍏ョ敤鎴峰悕">
diff --git a/src/main/webapp/views/mat/mat.html b/src/main/webapp/views/mat/mat.html
index 6cdad50..2441a6e 100644
--- a/src/main/webapp/views/mat/mat.html
+++ b/src/main/webapp/views/mat/mat.html
@@ -199,9 +199,9 @@
                 </div>
 
                 <div class="layui-form-item">
-                    <label class="layui-form-label">閰嶇疆</label>
+                    <label class="layui-form-label">妗跺瀷</label>
                     <div class="layui-input-block">
-                        <input name="specs" placeholder="璇疯緭鍏ラ厤缃�" class="layui-input">
+                        <input name="model" placeholder="璇疯緭鍏ユ《鍨�" class="layui-input">
                     </div>
                 </div>
 

--
Gitblit v1.9.1