From 2ded9514aa9a93ee440af0b1437d788fb052028b Mon Sep 17 00:00:00 2001
From: pjb <pjb123456>
Date: 星期六, 23 八月 2025 08:36:59 +0800
Subject: [PATCH] wms功能完善

---
 src/main/java/com/zy/system/controller/UserController.java     |    3 
 src/main/webapp/static/js/pakStore/stockAdjust.js              |   24 
 src/main/java/com/zy/asrs/controller/MobileController.java     |   19 +
 src/main/java/com/zy/common/web/WcsController.java             |   95 ++++++
 src/main/java/com/zy/asrs/task/MdqzScheduler.java              |   53 +++
 src/main/java/com/zy/asrs/entity/WaitPakin.java                |    3 
 src/main/java/com/zy/asrs/entity/param/BarcodeCombParam.java   |   49 +++
 src/main/java/com/zy/asrs/entity/param/LocDetlAdjustParam.java |   62 ++-
 src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java    |  105 ++++++
 src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java  |   46 +++
 src/main/java/com/zy/asrs/controller/OutController.java        |   16 +
 src/main/java/com/zy/common/service/CommonService.java         |  297 ++++++++++----------
 src/main/java/com/zy/asrs/service/MobileService.java           |   12 
 13 files changed, 584 insertions(+), 200 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/MobileController.java b/src/main/java/com/zy/asrs/controller/MobileController.java
index 6a9a1e9..b6e9244 100644
--- a/src/main/java/com/zy/asrs/controller/MobileController.java
+++ b/src/main/java/com/zy/asrs/controller/MobileController.java
@@ -219,6 +219,25 @@
         return R.ok("缁勬墭鎴愬姛");
     }
 
+    @RequestMapping("/getMatInfoByBarcode/auth")
+    @ManagerAuth(memo = "鏍规嵁鏉$爜鑾峰彇鐗╂枡淇℃伅")
+    public R getMatInfoByBarcode(@RequestBody CombParam combParam){
+        String barcode = combParam.getBarcode();
+        if(Cools.isEmpty(barcode)) {
+            return R.error("鏉$爜涓嶈兘涓虹┖");
+        }
+        return mobileService.getMatInfoByBarcode(barcode);
+    }
+
+    @RequestMapping("/barcodeComb/auth")
+//    @ManagerAuth(memo = "鍒涘缓缁勬嫋")
+    public R barcodeComb(@RequestBody BarcodeCombParam combParam){
+        if(Cools.isEmpty(combParam,combParam.getBarcode(),combParam.getCombMats().get(0).getMatnr())) {
+            return R.error("鏉$爜鍜屽晢鍝佺紪鐮佷笉鑳戒负绌�");
+        }
+        return mobileService.barcodeComb(combParam);
+    }
+
     @RequestMapping("/pack/get/auth")
     @ManagerAuth
     public R packGet(@RequestParam String barcode){
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index 5336d71..b97f668 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -5,11 +5,14 @@
 import com.core.common.BaseRes;
 import com.core.common.Cools;
 import com.core.common.R;
+import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.service.*;
 import com.zy.common.model.LocDto;
 import com.zy.common.model.TaskDto;
 import com.zy.common.web.BaseController;
+import com.zy.system.entity.Config;
+import com.zy.system.service.ConfigService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
@@ -46,6 +49,9 @@
 
     @Resource
     private OrderPakoutService orderPakOutService;
+
+    @Resource
+    private ConfigService configService;
 
 
     @PostMapping("/out/pakout/orderDetlIds/auth")
@@ -217,6 +223,16 @@
         // -----------------------------------------------------------------------------------------------
         for (TaskDto taskDto : taskDtos) {
             BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo());
+            // 鍒ゆ柇浠诲姟鐩爣绔欑偣鏄惁鏄嚭搴撴ā寮�
+            if (staNo.getDevNo() == 1016 || staNo.getDevNo() == 1043) {
+                Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "inOrOutBoundMode").eq("status", 1));
+                if (config != null && !Cools.isEmpty(config.getValue())) {
+                    int value = Integer.parseInt(config.getValue());
+                    if (value != 2) {
+                        throw new CoolException("鐩爣绔欑偣" + staNo.getDevNo() + "涓嶆槸鍑哄簱妯″紡锛屽綋鍓嶆ā寮忎负锛�" + value);
+                    }
+                }
+            }
             workService.stockOut(staNo, taskDto, getUserId());
         }
         return R.ok();
diff --git a/src/main/java/com/zy/asrs/entity/WaitPakin.java b/src/main/java/com/zy/asrs/entity/WaitPakin.java
index e1bfb4c..fcd113b 100644
--- a/src/main/java/com/zy/asrs/entity/WaitPakin.java
+++ b/src/main/java/com/zy/asrs/entity/WaitPakin.java
@@ -93,7 +93,8 @@
     private Double weight;
 
     @ApiModelProperty(value= "闀垮害")
-    private Double man_length;
+    @TableField("man_length")
+    private Double manLength;
 
     @ApiModelProperty(value= "浣撶Н")
     private Double volume;
diff --git a/src/main/java/com/zy/asrs/entity/param/BarcodeCombParam.java b/src/main/java/com/zy/asrs/entity/param/BarcodeCombParam.java
new file mode 100644
index 0000000..5c545df
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/BarcodeCombParam.java
@@ -0,0 +1,49 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 鏉$爜缁勬嫋
+ */
+@Data
+public class BarcodeCombParam {
+
+    // 鎵樼洏鏉$爜
+    private String barcode;
+    private List<CombMat> combMats;
+
+    @Data
+    public static class CombMat {
+
+        // 鍟嗗搧缂栫爜
+        private String matnr;
+
+        // 鍟嗗搧鍚嶇О
+        private String maktx;
+
+        // 鎵规
+        private String batch;
+
+        // 妗跺瀷
+        private String model;
+
+        // 鏁伴噺
+        private Double anfme;
+
+        // 鐢熶骇鏃ユ湡
+        private String manuDate;
+
+        // 鍑�閲�
+        private Double weight;
+
+        // 姣涢噸
+        private Double manLength;
+
+        // 缃愯閲�
+        private Double volume;
+
+    }
+
+}
diff --git a/src/main/java/com/zy/asrs/entity/param/LocDetlAdjustParam.java b/src/main/java/com/zy/asrs/entity/param/LocDetlAdjustParam.java
index 381d7c2..b742456 100644
--- a/src/main/java/com/zy/asrs/entity/param/LocDetlAdjustParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/LocDetlAdjustParam.java
@@ -1,9 +1,7 @@
 package com.zy.asrs.entity.param;
 
-import com.core.common.Cools;
 import lombok.Data;
 
-import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -30,33 +28,43 @@
         // 鍙樻洿鏁伴噺
         private Double count;
 
-        public LocDetlAdjust(String matnr, String batch, Double count) {
-            this.matnr = matnr;
-            this.batch = batch;
-            this.count = count;
-        }
+        private String zpallet;
+
+        private String model;
+
+        private String manuDate;
+
+        private Double weight;
+        private Double manLength;
+        private Double volume;
+
+//        public LocDetlAdjust(String matnr, String batch, Double count) {
+//            this.matnr = matnr;
+//            this.batch = batch;
+//            this.count = count;
+//        }
     }
 
-    public void integrate() {
-        if (Cools.isEmpty(list)) {
-            return;
-        }
-        List<LocDetlAdjust> copyList = new ArrayList<>();
-        for (LocDetlAdjust adjust : list) {
-            boolean exit = false;
-            for (LocDetlAdjust copy : copyList) {
-                if (adjust.getMatnr().equals(copy.getMatnr()) && Cools.eq(adjust.getBatch(), copy.getBatch())) {
-                    copy.setCount(copy.getCount() + adjust.getCount());
-                    exit = true;
-                    break;
-                }
-            }
-            if (!exit) {
-                copyList.add(new LocDetlAdjustParam.LocDetlAdjust(adjust.getMatnr(), adjust.getBatch(), adjust.getCount()));
-            }
-        }
-        list = copyList;
-    }
+//    public void integrate() {
+//        if (Cools.isEmpty(list)) {
+//            return;
+//        }
+//        List<LocDetlAdjust> copyList = new ArrayList<>();
+//        for (LocDetlAdjust adjust : list) {
+//            boolean exit = false;
+//            for (LocDetlAdjust copy : copyList) {
+//                if (adjust.getMatnr().equals(copy.getMatnr()) && Cools.eq(adjust.getBatch(), copy.getBatch())) {
+//                    copy.setCount(copy.getCount() + adjust.getCount());
+//                    exit = true;
+//                    break;
+//                }
+//            }
+//            if (!exit) {
+//                copyList.add(new LocDetlAdjustParam.LocDetlAdjust(adjust.getMatnr(), adjust.getBatch(), adjust.getCount()));
+//            }
+//        }
+//        list = copyList;
+//    }
 
 
 }
diff --git a/src/main/java/com/zy/asrs/service/MobileService.java b/src/main/java/com/zy/asrs/service/MobileService.java
index c1d97d0..bc51a18 100644
--- a/src/main/java/com/zy/asrs/service/MobileService.java
+++ b/src/main/java/com/zy/asrs/service/MobileService.java
@@ -67,4 +67,16 @@
 
     void stockOut(OrderDetl orderDetl, BasDevp staNo, LocDetl locDetl,
                   Double curOutQty, Integer ioType, Long userId, Date now);
+
+    /**
+     * 鏍规嵁鏉$爜鑾峰彇涓婁竴娆″嚭搴撶墿鏂欎俊鎭�
+     * @param barcode 鏉$爜
+     * @return 鐗╂枡淇℃伅
+     */
+    R getMatInfoByBarcode(String barcode);
+
+    /**
+     * 鍒涘缓缁勬嫋閫氱煡妗f
+     */
+    R barcodeComb(BarcodeCombParam combParam);
 }
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 c401b70..651a14f 100644
--- a/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -96,6 +96,9 @@
     @Resource
     private OrderDetlPakoutService orderDetlPakoutService;
 
+    @Resource
+    private WrkDetlLogService wrkDetlLogService;
+
     @Override
     @Transactional
     public R WarehouseOutPickMergeV1(WarehouseOutPickMergeParam param, Long hostId, Long userId) {
@@ -1111,4 +1114,47 @@
             throw new CoolException(locDetl.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
         }
     }
+
+    @Override
+    public R getMatInfoByBarcode(String barcode) {
+        WrkDetlLog wrkDetl = wrkDetlLogService.selectOne(new EntityWrapper<WrkDetlLog>().eq("zpallet", barcode).orderBy("io_time", false));
+        if(wrkDetl == null) {
+            return R.parse("璇ユ潯鐮佹病鏈夋煡璇㈠埌鐗╂枡淇℃伅");
+        }
+        return R.ok(wrkDetl);
+    }
+
+    @Override
+    public R barcodeComb(BarcodeCombParam combParams) {
+        String barcode = combParams.getBarcode();
+        BarcodeCombParam.CombMat combParam = combParams.getCombMats().get(0);
+        String matnr = combParam.getMatnr();
+        int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",barcode));
+        int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",barcode));
+        int countwait = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet",barcode));
+        if (countLoc > 0 || countWrk > 0 || countwait > 0) {
+            throw new CoolException("缁勬墭妗�/宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + barcode);
+        }
+
+        Mat mat = matService.selectByMatnr(matnr);
+        if (Cools.isEmpty(mat)) {
+            throw new CoolException(matnr + "鍟嗗搧妗f涓嶅瓨鍦�");
+        }
+
+        Date now = new Date();
+        WaitPakin waitPakin = new WaitPakin();
+        waitPakin.sync(combParam);
+        waitPakin.setZpallet(barcode);   // 鎵樼洏鐮�
+        waitPakin.setIoStatus("N");     // 鍏ュ嚭鐘舵��
+        waitPakin.setStatus("Y");    // 鐘舵��
+        waitPakin.setDanger(1); // 鎵嬪姩缁勬嫋鍏ュ簱
+//        waitPakin.setAppeUser(userId);
+        waitPakin.setAppeTime(now);
+//        waitPakin.setModiUser(userId);
+        waitPakin.setModiTime(now);
+        if (!waitPakinService.insert(waitPakin)) {
+            throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
+        }
+        return R.ok("缁勬嫋缁戝畾鎴愬姛");
+    }
 }
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 b6df9d2..a713524 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -24,6 +24,8 @@
 import com.zy.common.properties.SlaveProperties;
 import com.zy.common.service.CommonService;
 import com.zy.common.web.WcsController;
+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.stereotype.Service;
@@ -97,6 +99,9 @@
 
     @Resource
     private OrderDetlPakoutMapper orderDetlPakoutMapper;
+
+    @Resource
+    private ConfigService configService;
 
     @Override
     @Transactional
@@ -184,6 +189,16 @@
     public void startupFullTakeStore(StockOutParam param, Long userId) {
         // 鐩爣绔欑偣鐘舵�佹娴�
         BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
+        // 鍒ゆ柇浠诲姟鐩爣绔欑偣鏄惁鏄嚭搴撴ā寮�
+        if (param.getOutSite() == 1016 || param.getOutSite() == 1043) {
+            Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "inOrOutBoundMode").eq("status", 1));
+            if (config != null && !Cools.isEmpty(config.getValue())) {
+                int value = Integer.parseInt(config.getValue());
+                if (value != 2) {
+                    throw new CoolException("鐩爣绔欑偣" + param.getOutSite() + "涓嶆槸鍑哄簱妯″紡锛屽綋鍓嶆ā寮忎负锛�" + value);
+                }
+            }
+        }
         // 鑾峰彇搴撲綅鏄庣粏
         List<LocDetlDto> locDetlDtos = new ArrayList<>();
         for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
@@ -897,7 +912,7 @@
         wrkMast.setCrnNo(locMast.getCrnNo());
         wrkMast.setSourceLocNo(locMast.getLocNo());
         wrkMast.setLocNo(locMast.getLocNo());
-        wrkMast.setBarcode(locMast.getBarcode()); // 鎵樼洏鐮�
+        wrkMast.setBarcode(list.get(0).getZpallet()); // 鎵樼洏鐮�
         wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
         wrkMast.setPicking("N"); // 鎷f枡
         wrkMast.setExitMk("N"); // 閫�鍑�
@@ -914,6 +929,10 @@
         boolean deleteFlag = true;
         boolean addFlag = true;
 
+        // 搴撲綅鐘舵�佹槸绌猴紝鍒欐坊鍔�
+        // 搴撲綅鐘舵�佸湪搴擄紝鏈夋彁浜ゆ暟鎹紝鍒欎慨鏀�
+        // 搴撲綅鐘舵�佸湪搴擄紝娌℃湁鎻愪氦鏁版嵁锛屽垯鍒犻櫎
+
         // 淇敼鏁伴噺
         Iterator<LocDetl> iterator = locDetls.iterator();
         while (iterator.hasNext()) {
@@ -924,13 +943,20 @@
                 LocDetlAdjustParam.LocDetlAdjust adjust = iterator1.next();
                 if (adjust.getCount() == 0) { continue; }
                 if (locDetl.getMatnr().equals(adjust.getMatnr()) && Cools.eq(locDetl.getBatch(), adjust.getBatch())) {
-                    if (!locDetl.getAnfme().equals(adjust.getCount())) {
                         // todo 鐩樼偣璁板綍
                         // 淇敼搴撳瓨
-                        if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getBrand(),
-                                locDetl.getStandby1(),locDetl.getStandby2(),locDetl.getStandby3(),locDetl.getBoxType1(),locDetl.getBoxType2(),locDetl.getBoxType3())) {
-                            throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿淇敼鏁伴噺澶辫触");
-                        }
+//                        if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(),locDetl.getBrand(),
+//                                locDetl.getStandby1(),locDetl.getStandby2(),locDetl.getStandby3(),locDetl.getBoxType1(),locDetl.getBoxType2(),locDetl.getBoxType3())) {
+//                            throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "鎵瑰彿淇敼鏁伴噺澶辫触");
+//                        }
+                        locDetl.setAnfme(adjust.getCount());
+                        locDetl.setZpallet(adjust.getZpallet());
+                        locDetl.setModel(adjust.getModel());
+                        locDetl.setManuDate(adjust.getManuDate());
+                        locDetl.setWeight(adjust.getWeight());
+                        locDetl.setManLength(adjust.getManLength());
+                        locDetl.setVolume(adjust.getVolume());
+                        locDetlService.update(locDetl,new EntityWrapper<LocDetl>().eq("loc_no",locDetl.getLocNo()).eq("matnr",locDetl.getMatnr()).eq("batch",locDetl.getBatch()));
                         // 淇濆瓨璋冩暣璁板綍
                         AdjDetl adjDetl = new AdjDetl();
                         adjDetl.setLocNo(locDetl.getLocNo());
@@ -960,6 +986,13 @@
                         wrkDetl.setWrkNo(wrkMast.getWrkNo());
                         wrkDetl.setIoTime(wrkMast.getIoTime());
                         wrkDetl.setAnfme(adjust.getCount());
+                        wrkDetl.setAnfme(adjust.getCount());
+                        wrkDetl.setZpallet(adjust.getZpallet());
+                        wrkDetl.setModel(adjust.getModel());
+                        wrkDetl.setManuDate(adjust.getManuDate());
+                        wrkDetl.setWeight(adjust.getWeight());
+                        wrkDetl.setManLength(adjust.getManLength());
+                        wrkDetl.setVolume(adjust.getVolume());
                         wrkDetl.setAppeTime(now);
                         wrkDetl.setModiTime(now);
                         wrkMast.setAppeUser(userId);
@@ -967,7 +1000,6 @@
                         if (!wrkDetlLogService.insert(wrkDetl)) {
                             throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
                         }
-                    }
                     iterator.remove();
                     iterator1.remove();
                 }
@@ -1027,8 +1059,13 @@
             locDetl.sync(mat);
             locDetl.setBatch(adjust.getBatch());
             locDetl.setLocNo(locMast.getLocNo());
-            locDetl.setZpallet(locMast.getBarcode());
+            locDetl.setZpallet(adjust.getZpallet());
             locDetl.setAnfme(adjust.getCount()); // 鏁伴噺
+            locDetl.setModel(adjust.getModel());
+            locDetl.setManuDate(adjust.getManuDate());
+            locDetl.setWeight(adjust.getWeight());
+            locDetl.setManLength(adjust.getManLength());
+            locDetl.setVolume(adjust.getVolume());
             locDetl.setModiUser(userId); // 鎿嶄綔浜哄憳淇℃伅
             locDetl.setModiTime(now);
             locDetl.setAppeUser(userId);
@@ -1077,12 +1114,15 @@
         int count = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo()));
         if (locMast.getLocSts().equals("F")) {
             if (count == 0) {
-                locMast.setLocSts("D");
+                locMast.setLocSts("O");
+            } else {
+                locMast.setBarcode(wrkMast.getBarcode());
             }
         }
         if (locMast.getLocSts().equals("D") || locMast.getLocSts().equals("O")) {
             if (count > 0) {
                 locMast.setLocSts("F");
+                locMast.setBarcode(wrkMast.getBarcode());
             }
         }
         locMast.setModiUser(userId);
@@ -1103,7 +1143,52 @@
         }
         String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣�
         String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬�
+        Long wrkSts = wrkMast.getWrkSts();
+        Integer ioType = wrkMast.getIoType();
+
+        // 浠诲姟瀹屾垚锛屾棤娉曞彇娑�
+        if(wrkSts == 4 || wrkSts == 5 || wrkSts == 14 || wrkSts == 15 || wrkSts == 54) {
+            throw new CoolException(workNo+"浠诲姟宸插畬鎴愶紝鏃犳硶鍙栨秷");
+        }
+
+        if(ioType == 101 || ioType == 110) {
+            if(wrkSts == 11 || wrkSts == 12) {
+
+            } else {
+                throw new CoolException(workNo+"搴撳瓨淇℃伅宸叉洿鏂帮紝鏃犳硶鍙栨秷");
+            }
+        }
         // 鍏ュ簱鍙栨秷锛堜慨鏀圭洰鏍囧簱浣嶏級
+//        if(ioType == 1 || ioType == 10) {
+//            if(wrkSts == 1 || wrkSts == 2|| wrkSts == 3 || wrkSts == 9 || wrkSts == 10) {
+//                locNo = wrkMast.getLocNo();
+//                locSts = "O";
+//            } else {
+//                throw new CoolException(workNo+"鍙栨秷澶辫触锛屽綋鍓嶇姸鎬侊細" + wrkSts);
+//            }
+//        } else if(ioType == 11){
+//            if(wrkSts <= 10) {
+//                locNo = wrkMast.getLocNo();
+//                locSts = "O";
+//                // 搴撲綅杞Щ锛氭簮搴撲綅
+//                LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());
+//                if (Cools.isEmpty(locMast)) {
+//                    throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:"+ wrkMast.getSourceLocNo());
+//                }
+//                locMast.setLocSts(wrkMast.getFullPlt().equalsIgnoreCase("N")?wrkMast.getEmptyMk():"F");
+//                locMast.setModiTime(now);
+//                locMast.setModiUser(userId);
+//                locMastService.updateById(locMast);
+//            } else {
+//                throw new CoolException(workNo+"鍙栨秷澶辫触锛屽綋鍓嶇姸鎬侊細" + wrkSts);
+//            }
+//        } else if(ioType == 3) {
+//
+//        } else if(ioType == 101) {
+//
+//        } else if(ioType == 110) {
+//
+//        }
         if (wrkMast.getWrkSts() <= 10  && wrkMast.getIoType()!=120) {
             locNo = wrkMast.getLocNo();
             locSts = "O";
@@ -1135,7 +1220,7 @@
                 locSts = "F";
                 // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉�
             } else if (wrkMast.getIoType() == 11) {
-                locSts = wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F";
+                locSts = wrkMast.getFullPlt().equalsIgnoreCase("N")?wrkMast.getEmptyMk():"F";
                 // 搴撲綅杞Щ锛氱洰鏍囧簱浣�
                 LocMast locMast = locMastService.selectById(wrkMast.getLocNo());
                 if (Cools.isEmpty(locMast)) {
diff --git a/src/main/java/com/zy/asrs/task/MdqzScheduler.java b/src/main/java/com/zy/asrs/task/MdqzScheduler.java
index f585916..94fe738 100644
--- a/src/main/java/com/zy/asrs/task/MdqzScheduler.java
+++ b/src/main/java/com/zy/asrs/task/MdqzScheduler.java
@@ -2,7 +2,11 @@
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
+import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.entity.WrkDetl;
 import com.zy.asrs.entity.WrkMast;
+import com.zy.asrs.service.LocMastService;
+import com.zy.asrs.service.WrkDetlService;
 import com.zy.asrs.service.WrkMastService;
 import com.zy.system.entity.Config;
 import com.zy.system.service.ConfigService;
@@ -11,6 +15,8 @@
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author pang.jiabao
@@ -27,15 +33,60 @@
     @Resource
     private WrkMastService wrkMastService;
 
+    @Resource
+    private LocMastService locMastService;
+
+    @Resource
+    private WrkDetlService wrkDetlService;
+
     // 璇昏ˉ灏炬《閰嶇疆锛岀粰瀵瑰簲浠诲姟鍙疯ˉ灏炬《淇″彿--鏇挎崲涓哄叆搴撳鎵惧簱浣嶆椂锛屽彂鐜板墠闈㈢被鍨嬩笉涓�鏍峰崟鐫�锛岃嚜鍔ㄨˉ灏炬《
     @Scheduled(cron = "0/5 * * * * ?")
     private void tailFillingBuckets() {
         Config config = configService.selectConfigByCode("tailFillingBuckets");
         if (config != null && config.getStatus() == 1 && !Cools.isEmpty(config.getValue())) {
             WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", config.getValue()));
+
             if (wrkMast != null && wrkMast.getCtnType() == 0) {
-                wrkMast.setCtnType(1);
+                Integer wrkNo = wrkMast.getWrkNo();
+                // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣�
+                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("绔欑偣:{},浠诲姟鍙穥}锛氬叆搴撶┖妗跺簱鏃犵┖搴撲綅",1050,wrkNo);
+                    return;
+                }
+                // 鍙敤搴撲綅缁�
+                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("绔欑偣:{},浠诲姟鍙穥}锛氬叆搴撶┖妗跺簱鏃犲搴旂┖绌烘《缁�",1050,wrkNo);
+                    return;
+                }
+                WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkNo));
+                if (wrkDetl.getModel().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 locMast = locMastList.get(0);
+                wrkMast.setLocNo(locMast.getLocNo());
+                wrkMast.setCtnType(1); // 灏炬墭鏍囪瘑
                 wrkMastService.updateById(wrkMast);
+                if (locMast.getLocSts().equals("O")){
+                    locMast.setLocSts("S"); // S.鍏ュ簱棰勭害
+                    locMast.setModiTime(new Date());
+                    if (!locMastService.updateById(locMast)){
+                        log.error("绔欑偣:{},浠诲姟鍙穥}锛氭敼鍙樺簱浣峽}鐘舵�亄}澶辫触",1050,wrkNo,locMast.getLocNo(),locMast.getLocSts());
+                    }
+                } else {
+                    log.error("绔欑偣:{},浠诲姟鍙穥}锛氱洰鏍囧簱浣嶏細{}宸茶鍗犵敤",1050,wrkNo,locMast.getLocNo());
+                }
             }
         }
     }
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index 0ca5ca9..dce1bc3 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -185,162 +185,165 @@
                     throw new CoolException("鍏ョ┖妗跺簱杈撻�佺嚎缂撳瓨浠诲姟鏁帮細"+count+"锛岃秴閰嶇疆缂撳瓨鏁帮細" + value);
                 }
             }
+            locMast = new LocMast();
+            locMast.setCrnNo(4);
+            locMast.setLocNo("");
             List<WrkMast> wrkMastList = wrkMastMapper.selectLastInEmptyLoc(); // 鍓嶉潰鍏ョ┖妗跺簱鐨勪换鍔�(鏈墽琛屽爢鍨涙満鍏ュ簱)
 
-            if (wrkMastList.size() == 0) {
+//            if (wrkMastList.size() == 0) {
                 // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣�
                 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) {
+                if (collect.size() - wrkMastList.size() <= 0 && collect1.size()  - wrkMastList.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); // 鏈�鍚庝竴涓叆绌烘《搴撲换鍔�
-                // 鍓嶄竴涓换鍔℃《绫诲瀷
-                String oldModel = wrkMast.getPdcType();
-                // 鍓嶄竴涓换鍔″熬鎵樻爣璇�
-                Integer oldCtnType = wrkMast.getCtnType();
-                // 褰撳墠妗剁被鍨�
-                String matnr = findLocNoAttributeVo.getMatnr();
-                if(findLocNoAttributeVo.getMatnr().equals(wrkMast.getPdcType())) { // 褰撳墠妗朵笌鍓嶆《鏄竴绉嶇被鍨�
-                    // 褰撳墠妗剁被鍨嬬殑浠诲姟鏈夊嚑涓�
-                    long count = wrkMastList.stream().filter(wrkMast1 -> wrkMast1.getPdcType().equals(matnr)).count();
-                    if (count % 2  == 0) { // 鍋舵暟锛屽彇涓�缁勬柊搴撲綅
-                        // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣�
-                        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 == 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("-----涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛�10锛�12鎺�,浣嗘槸瀵瑰簲搴撲綅涓嶄负绌�----");
-                                throw new CoolException("涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屾槸10锛�12鎺�,浣嗘槸瀵瑰簲搴撲綅涓嶄负绌�");
-                            }
-                        } else {
-                            // 鑷姩缁欏墠闈换鍔¤ˉ灏炬《淇″彿
-                            wrkMastService.updateCtnType(wrkMast);
-                            log.error("-----涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屼絾鏄笉鏄�10锛�12鎺�----");
-                            throw new CoolException("涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屼絾鏄笉鏄�10锛�12鎺�");
-                        }
-                    }
-                } else { // 褰撳墠妗朵笌鍓嶆《涓嶆槸涓�绉嶇被鍨�
-                      if(oldCtnType == 1) { // 鍓嶉潰鏄熬妗�
-                          // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣�
-                          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) { // 鍋舵暟锛屽彲浠ュ叆搴�
-                              // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣�
-                              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 { // 濂囨暟锛屼笉鍙互鍏ュ簱
-                              // 鑷姩缁欏墠闈换鍔¤ˉ灏炬《淇″彿
-                              wrkMastService.updateCtnType(wrkMast);
-                              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); // 鏈�鍚庝竴涓叆绌烘《搴撲换鍔�
+//                // 鍓嶄竴涓换鍔℃《绫诲瀷
+//                String oldModel = wrkMast.getPdcType();
+//                // 鍓嶄竴涓换鍔″熬鎵樻爣璇�
+//                Integer oldCtnType = wrkMast.getCtnType();
+//                // 褰撳墠妗剁被鍨�
+//                String matnr = findLocNoAttributeVo.getMatnr();
+//                if(findLocNoAttributeVo.getMatnr().equals(wrkMast.getPdcType())) { // 褰撳墠妗朵笌鍓嶆《鏄竴绉嶇被鍨�
+//                    // 褰撳墠妗剁被鍨嬬殑浠诲姟鏈夊嚑涓�
+//                    long count = wrkMastList.stream().filter(wrkMast1 -> wrkMast1.getPdcType().equals(matnr)).count();
+//                    if (count % 2  == 0) { // 鍋舵暟锛屽彇涓�缁勬柊搴撲綅
+//                        // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣�
+//                        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 == 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("-----涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛�10锛�12鎺�,浣嗘槸瀵瑰簲搴撲綅涓嶄负绌�----");
+//                                throw new CoolException("涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屾槸10锛�12鎺�,浣嗘槸瀵瑰簲搴撲綅涓嶄负绌�");
+//                            }
+//                        } else {
+//                            // 鑷姩缁欏墠闈换鍔¤ˉ灏炬《淇″彿
+//                            wrkMastService.updateCtnType(wrkMast);
+//                            log.error("-----涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屼絾鏄笉鏄�10锛�12鎺�----");
+//                            throw new CoolException("涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屼絾鏄笉鏄�10锛�12鎺�");
+//                        }
+//                    }
+//                } else { // 褰撳墠妗朵笌鍓嶆《涓嶆槸涓�绉嶇被鍨�
+//                      if(oldCtnType == 1) { // 鍓嶉潰鏄熬妗�
+//                          // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣�
+//                          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) { // 鍋舵暟锛屽彲浠ュ叆搴�
+//                              // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣�
+//                              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 { // 濂囨暟锛屼笉鍙互鍏ュ簱
+//                              // 鑷姩缁欏墠闈换鍔¤ˉ灏炬《淇″彿
+//                              wrkMastService.updateCtnType(wrkMast);
+//                              log.error("-----涓庡墠闈㈡《绫诲瀷涓嶄竴鏍凤紝鍓嶉潰妗朵笉鏄熬妗讹紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁颁笉鏄伓鏁帮紝涓嶈兘鍏ュ簱----");
+//                              throw new CoolException("涓庡墠闈㈡《绫诲瀷涓嶄竴鏍凤紝鍓嶉潰妗朵笉鏄熬妗讹紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁颁笉鏄伓鏁帮紝涓嶈兘鍏ュ簱");
+//                          }
+//                      }
+//                }
+//            }
 
         } else if ((staDescId == 1 && locArea == 1) || staDescId == 10) { // 婊℃澘鍏ユ垚鍝佸簱鎴栬�呯┖鏉垮叆鎴愬搧搴�
 
diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index be0c951..5a1e540 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -93,7 +93,14 @@
         if (Cools.isEmpty(param.getSourceStaNo())) {
             return R.error("婧愮珯缂栧彿涓嶈兘涓虹┖");
         }
-        WaitPakin waitPakin = null;
+
+        WaitPakin waitPakin;
+        // 鍒ゆ柇鏄笉鏄垚鍝佸叆搴�
+        waitPakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().
+                eq("zpallet", param.getBarcode()).eq("danger", 1));
+        if (waitPakin != null) {
+            param.setIoType(0);
+        }
         if (param.getIoType() == 1) {
             // 鍏堝垱寤哄叆搴撻�氱煡妗�
             waitPakin = comb(param.getBarcode(),param.getBucketType(),param.getBucketCount());
@@ -144,6 +151,9 @@
         }
 
         switch (param.getIoType()) {
+            case 0: // 鎴愬搧鍏ュ簱
+                dto = finishedProductIn(param.getSourceStaNo(), param.getBarcode(), waitPakin);
+                break;
             case 1://婊℃墭鐩樺叆搴�
                 assert waitPakin != null;
                 dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakin, param.isTailSupportFlag());
@@ -794,7 +804,7 @@
         wrkMast.setExitMk("N"); // 閫�鍑�
         wrkMast.setEmptyMk("N"); // 绌烘澘
         wrkMast.setLinkMis("Y");
-        wrkMast.setCtnType(tailSupportFlag ? 1 : 0); // 灏炬墭鏍囪瘑
+        wrkMast.setCtnType(0); // 灏炬墭鏍囪瘑
         wrkMast.setPdcType(waitPakins.getMatnr()); // 绌烘《绫诲瀷
         // 鎿嶄綔浜哄憳鏁版嵁
         wrkMast.setAppeTime(now);
@@ -829,6 +839,87 @@
         if (!basDevpService.updateById(sourceStaNo)){
             throw new CoolException("鏇存柊婧愮珯澶辫触");
         }
+        if(!dto.getLocNo().isEmpty()) {
+            // 鏇存柊鐩爣搴撲綅鐘舵��
+            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 {
+                throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤");
+            }
+        }
+
+        return dto;
+    }
+
+    /**
+     * 鎴愬搧鍏ュ簱
+     */
+    @Transactional(propagation = Propagation.REQUIRED)
+    public StartupDto finishedProductIn(Integer devpNo, String barcode, WaitPakin waitPakins) {
+        // 婧愮珯鐐圭姸鎬佹娴�
+        BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true);
+        // 妫�绱㈠簱浣�
+        FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(waitPakins);
+        StartupDto dto = commonService.getLocNoNew( 1, devpNo,findLocNoAttributeVo,1);
+        int workNo = dto.getWorkNo();
+        Date now = new Date();
+        // 鐢熸垚宸ヤ綔妗�
+        WrkMast wrkMast = new WrkMast();
+        wrkMast.setWrkNo(workNo);
+        wrkMast.setIoTime(new Date());
+        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(barcode); // 鎵樼洏鐮�
+        wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+        wrkMast.setPicking("N"); // 鎷f枡
+        wrkMast.setExitMk("N"); // 閫�鍑�
+        wrkMast.setEmptyMk("N"); // 绌烘澘
+        wrkMast.setLinkMis("Y");
+//        wrkMast.setCtnType(tailSupportFlag ? 1 : 0); // 灏炬墭鏍囪瘑
+        wrkMast.setPdcType(waitPakins.getModel()); // 绌烘《绫诲瀷
+        // 鎿嶄綔浜哄憳鏁版嵁
+        wrkMast.setAppeTime(now);
+        wrkMast.setModiTime(now);
+        boolean res = wrkMastService.insert(wrkMast);
+        if (!res) {
+            throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�");
+        }
+        // 鐢熸垚宸ヤ綔妗f槑缁�
+        WrkDetl wrkDetl = new WrkDetl();
+        wrkDetl.sync(waitPakins);
+        wrkDetl.setWrkNo(wrkMast.getWrkNo());
+        wrkDetl.setIoTime(wrkMast.getIoTime());
+        wrkDetl.setAppeTime(now);
+        wrkDetl.setModiTime(now);
+        if (!wrkDetlService.insert(wrkDetl)) {
+            throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触");
+        }
+        // 鏇存柊鍏ュ簱閫氱煡妗� ioStatus ===>> Y
+        Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>()
+                .eq("zpallet", barcode);
+        WaitPakin setParam = new WaitPakin();
+        setParam.setLocNo(dto.getLocNo());
+        setParam.setIoStatus("Y");
+        setParam.setModiTime(now);
+        if (!waitPakinService.update(setParam, wrapper)) {
+            throw new CoolException("鏇存柊閫氱煡妗eけ璐�");
+        }
+        // 鏇存柊婧愮珯鐐逛俊鎭�
+        sourceStaNo.setWrkNo(workNo);
+        sourceStaNo.setModiTime(now);
+        if (!basDevpService.updateById(sourceStaNo)){
+            throw new CoolException("鏇存柊婧愮珯澶辫触");
+        }
         // 鏇存柊鐩爣搴撲綅鐘舵��
         LocMast locMast = locMastService.selectById(dto.getLocNo());
         if (locMast.getLocSts().equals("O")){
diff --git a/src/main/java/com/zy/system/controller/UserController.java b/src/main/java/com/zy/system/controller/UserController.java
index a823f5a..78623cd 100644
--- a/src/main/java/com/zy/system/controller/UserController.java
+++ b/src/main/java/com/zy/system/controller/UserController.java
@@ -117,6 +117,9 @@
         if (user.getMobile()!=null) {
             entity.setMobile(user.getMobile());
         }
+        if (user.getRoleId() !=null) {
+            entity.setRoleId(user.getRoleId());
+        }
         userService.updateById(entity);
         return R.ok();
     }
diff --git a/src/main/webapp/static/js/pakStore/stockAdjust.js b/src/main/webapp/static/js/pakStore/stockAdjust.js
index c6ff8a7..36d71fe 100644
--- a/src/main/webapp/static/js/pakStore/stockAdjust.js
+++ b/src/main/webapp/static/js/pakStore/stockAdjust.js
@@ -8,21 +8,21 @@
         {fixed: 'left', field: 'count', title: '瀹為檯鏁伴噺', align: 'center', edit:'text', width: 120,  style:'color: blue;font-weight: bold'}
         ,{field: 'anfme', align: 'center',title: '鏁伴噺'}
         ,{field: 'batch', align: 'center',title: '鎵瑰彿锛堢紪杈戯級', edit: true, style: 'font-weight:bold'}
-        // ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜', edit: true}
-        // ,{field: 'model', align: 'center',title: '妗跺瀷', edit: true}
-        // ,{field: 'manuDate', align: 'center',title: '鐢熶骇鏃ユ湡', edit: true}
-        // ,{field: 'weight', align: 'center',title: '鍑�閲�', edit: true}
-        // ,{field: 'manLength', align: 'center',title: '姣涢噸', edit: true}
-        // ,{field: 'volume', align: 'center',title: '缃愯閲�', edit: true}
+        ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜', edit: true}
+        ,{field: 'model', align: 'center',title: '妗跺瀷', edit: true}
+        ,{field: 'manuDate', align: 'center',title: '鐢熶骇鏃ユ湡', edit: true}
+        ,{field: 'weight', align: 'center',title: '鍑�閲�', edit: true}
+        ,{field: 'manLength', align: 'center',title: '姣涢噸', edit: true}
+        ,{field: 'volume', align: 'center',title: '缃愯閲�', edit: true}
     ];
     arrRemove(detlCols, "field", "anfme");
     arrRemove(detlCols, "field", "batch");
-    // arrRemove(detlCols, "field", "zpallet");
-    // arrRemove(detlCols, "field", "model");
-    // arrRemove(detlCols, "field", "manuDate");
-    // arrRemove(detlCols, "field", "weight");
-    // arrRemove(detlCols, "field", "manLength");
-    // arrRemove(detlCols, "field", "volume");
+    arrRemove(detlCols, "field", "zpallet");
+    arrRemove(detlCols, "field", "model");
+    arrRemove(detlCols, "field", "manuDate");
+    arrRemove(detlCols, "field", "weight");
+    arrRemove(detlCols, "field", "manLength");
+    arrRemove(detlCols, "field", "volume");
     cols.push.apply(cols, detlCols);
     cols.push({fixed: 'right', title:'鎿嶄綔', align: 'center', toolbar: '#operate', width:80})
     return cols;

--
Gitblit v1.9.1