From cf2e4086d44e51bcd7407133d460dda498b45eff Mon Sep 17 00:00:00 2001
From: whycq <you@example.com>
Date: 星期三, 28 六月 2023 21:55:29 +0800
Subject: [PATCH] #

---
 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java |  645 +++++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 476 insertions(+), 169 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index ceba294..cdb869d 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.core.common.Cools;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
@@ -11,6 +12,8 @@
 import com.zy.asrs.mapper.WrkChargeMapper;
 import com.zy.asrs.mapper.WrkMastMapper;
 import com.zy.asrs.service.*;
+import com.zy.asrs.utils.Monitor;
+import com.zy.asrs.utils.Roles;
 import com.zy.asrs.utils.Utils;
 import com.zy.common.model.LocTypeDto;
 import com.zy.common.model.MatDto;
@@ -114,6 +117,7 @@
                 }
                 Short workNo = staProtocol.getWorkNo();
 
+                Monitor.ledError(100,"娴嬭瘯");
                 // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢
                 if (staProtocol.isAutoing() && staProtocol.isLoading()
                         && staProtocol.isInEnable()
@@ -484,136 +488,217 @@
                         continue;
                     }
 
-                    try {
-                        // 璁块棶 WMS 鑾峰彇鍏ュ簱搴撲綅
-                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
-                        SearchLocParam param = new SearchLocParam();
-                        param.setWrkNo(wrkMast.getWrkNo());
-                        param.setIoType(wrkMast.getIoType());
-                        param.setSourceStaNo(pickSta.getStaNo());
-                        param.setLocType1(locTypeDto.getLocType1());
-                        String response = new HttpHandler.Builder()
-                                .setUri(wmsUrl)
-                                .setPath("/rpc/pakin/loc/v1")
-                                .setJson(JSON.toJSONString(param))
-                                .build()
-                                .doPost();
-                        JSONObject jsonObject = JSON.parseObject(response);
-                        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
-                        Integer code = jsonObject.getInteger("code");
-                        if (code.equals(200)) {
-                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
-                            News.info("鍐嶅叆搴撹幏鍙栨柊搴撲綅鎴愬姛锛岃繑鍥炴暟鎹�===>>", JSON.toJSON(dto));
-//                            // 鑾峰彇鐩爣绔�
-//                            Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
-//                                    .eq("type_no", wrkMast.getIoType() - 50)
-//                                    .eq("stn_no", pickSta.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
-//                                    .eq("crn_no", dto.getCrnNo()); // 鍫嗗灈鏈哄彿
-//                            StaDesc staDesc = staDescService.selectOne(wrapper);
-//                            if (Cools.isEmpty(staDesc)) {
-//                                News.error("鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo());
-//                                continue;
-//                            }
-//                            // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
-//                            Integer staNo = staDesc.getCrnStn();
-
-                            // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
-//                        if (wrkMastMapper.saveWrkDetlLog(wrkMast.getWrkNo()) == 0) {
-//                            throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触");
-//                        }
-                            // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
-                            if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) {
-                                throw new CoolException(wrkMast.getWrkNo() + "淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
-                            }
-
-                            String sourceLocNo = wrkMast.getSourceLocNo().trim();
-
-                            // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
-                            wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
-                            wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
-                            wrkMast.setIoPri(13D);
-                            wrkMast.setSourceStaNo(pickSta.getStaNo()); // 婧愮珯
-                            wrkMast.setStaNo(dto.getStaNo()); // 鐩爣绔�
-                            wrkMast.setCrnNo(dto.getCrnNo());
-                            wrkMast.setLocNo(dto.getLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
-                            wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
-                            wrkMast.setModiTime(new Date());
-                            if (wrkMastMapper.updateById(wrkMast) == 0) {
-                                throw new CoolException(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
-                            }
-                            if (wrkMastMapper.setSteEmpty(wrkMast.getWrkNo()) == 0) {
-                                throw new CoolException(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
-                            }
-
-                            LocMast locMast = null;
-                            // 淇敼鐩爣搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
-                            locMast = locMastService.selectById(wrkMast.getLocNo());
-                            locMast.setLocSts("Q");
-                            locMast.setModiTime(new Date());
-                            if (!locMastService.updateById(locMast)) {
-                                throw new CoolException(wrkMast.getWrkNo() + "淇敼鐩爣搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�");
-                            }
-                            // 婧愬簱浣嶅簱瀛樻槑缁嗚浆绉诲埌鐩爣搴撲綅
-                            if (!locDetlService.updateLocNo(wrkMast.getLocNo(), sourceLocNo)) {
-                                throw new CoolException(wrkMast.getLocNo() + "浠诲姟搴撳瓨鏄庣粏杞Щ澶辫触锛侊紒锛�");
-                            }
-
-                            // 淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�
-                            LocMast sourceLocMast = locMastService.selectById(sourceLocNo);
-                            if (sourceLocMast.getLocSts().equals("P")) {
-                                sourceLocMast.setLocSts("O");
-                                sourceLocMast.setBarcode("");
-                                sourceLocMast.setModiTime(new Date());
-                                if (!locMastService.updateById(sourceLocMast)) {
-                                    throw new CoolException(wrkMast.getWrkNo() + "淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�");
-                                }
-                                locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
-                            }
-
-                            // 鏉$爜璁惧澶勭悊
-                            barcodeThread.setBarcode("");
-
-                            ledThread.errorReset();
-
-                            if(wrkMast.getIoType()>100){
-                                throw new CoolException("鍐嶅叆搴撴洿鏂板伐浣滄。澶辫触锛屼笉鑳界粰PLC涓嬪彂浠诲姟===>>" + wrkMast.getWrkNo());
-                            }
-                            // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
-                            staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
-                            staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-                            if (!result) {
-                                News.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
-                            }
-
-                        } else if (code == 500){
-                            if (ledThread != null) {
-                                String errorMsg = jsonObject.getString("msg");
-                                if (!Cools.isEmpty(errorMsg)) {
-                                    MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
-                                }
-                            }
-                            News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
-                        } else {
-                            staProtocol.setWorkNo((short) 9995);
-                            staProtocol.setStaNo(pickSta.getBackSta().shortValue());
-                            devpThread.setPakMk(staProtocol.getSiteId(), false);
-                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
-
-                            // led 寮傚父鏄剧ず
-                            if (ledThread != null) {
-                                String errorMsg = jsonObject.getString("msg");
-//                                String errorMsg = barcode + "鎵樼洏璇嗗埆寮傚父锛岃鍏堣繘琛岀粍鎵橈紒";
-                                MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
-                            }
-                        }
-
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-//                        continue;
+                    // 鑾峰彇鐩爣绔�
+                    Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+                            .eq("type_no", wrkMast.getIoType() - 50)
+                            .eq("stn_no", pickSta.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
+                            .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿
+                    StaDesc staDesc = staDescService.selectOne(wrapper);
+                    if (Cools.isEmpty(staDesc)) {
+                        News.error("鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo());
+                        continue;
                     }
+                    // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
+                    Integer staNo = staDesc.getCrnStn();
+
+                    // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
+                    if (wrkMastMapper.saveWrkDetlLog(wrkMast.getWrkNo()) == 0) {
+                        throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触");
+                    }
+                    // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+                    if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) {
+                        throw new CoolException(wrkMast.getWrkNo() + "淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
+                    }
+
+                    String sourceLocNo = wrkMast.getSourceLocNo().trim();
+
+                    // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
+                    wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
+                    wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
+                    wrkMast.setIoPri(13D);
+                    wrkMast.setSourceStaNo(pickSta.getStaNo()); // 婧愮珯
+                    wrkMast.setStaNo(staNo); // 鐩爣绔�
+                    wrkMast.setCrnNo(wrkMast.getCrnNo());
+                    wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
+                    wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
+                    wrkMast.setModiTime(new Date());
+                    if (wrkMastMapper.updateById(wrkMast) == 0) {
+                        throw new CoolException(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
+                    }
+                    if (wrkMastMapper.setSteEmpty(wrkMast.getWrkNo()) == 0) {
+                        throw new CoolException(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
+                    }
+
+                    LocMast locMast = null;
+                    // 淇敼鐩爣搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
+                    locMast = locMastService.selectById(wrkMast.getLocNo());
+                    locMast.setLocSts("Q");
+                    locMast.setModiTime(new Date());
+                    if (!locMastService.updateById(locMast)) {
+                        throw new CoolException(wrkMast.getWrkNo() + "淇敼鐩爣搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�");
+                    }
+                    // 婧愬簱浣嶅簱瀛樻槑缁嗚浆绉诲埌鐩爣搴撲綅
+                    if (!locDetlService.updateLocNo(wrkMast.getLocNo(), sourceLocNo)) {
+                        throw new CoolException(wrkMast.getLocNo() + "浠诲姟搴撳瓨鏄庣粏杞Щ澶辫触锛侊紒锛�");
+                    }
+
+                    // 淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�
+                    LocMast sourceLocMast = locMastService.selectById(sourceLocNo);
+                    if (sourceLocMast.getLocSts().equals("P")) {
+                        sourceLocMast.setLocSts("O");
+                        sourceLocMast.setBarcode("");
+                        sourceLocMast.setModiTime(new Date());
+                        if (!locMastService.updateById(sourceLocMast)) {
+                            throw new CoolException(wrkMast.getWrkNo() + "淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�");
+                        }
+                        locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
+                    }
+
+                    // 鏉$爜璁惧澶勭悊
+                    barcodeThread.setBarcode("");
+
+                    if(wrkMast.getIoType()>100){
+                        throw new CoolException("鍐嶅叆搴撴洿鏂板伐浣滄。澶辫触锛屼笉鑳界粰PLC涓嬪彂浠诲姟===>>" + wrkMast.getWrkNo());
+                    }
+                    // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
+                    staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
+                    staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+                    devpThread.setPakMk(staProtocol.getSiteId(), false);
+                    boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+                    if (!result) {
+                        News.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
+                    }
+
+//                    try {
+//                        // 璁块棶 WMS 鑾峰彇鍏ュ簱搴撲綅
+//                        LocTypeDto locTypeDto = new LocTypeDto(staProtocol);
+//                        SearchLocParam param = new SearchLocParam();
+//                        param.setWrkNo(wrkMast.getWrkNo());
+//                        param.setIoType(wrkMast.getIoType());
+//                        param.setSourceStaNo(pickSta.getStaNo());
+//                        param.setLocType1(locTypeDto.getLocType1());
+//                        String response = new HttpHandler.Builder()
+//                                .setUri(wmsUrl)
+//                                .setPath("/rpc/pakin/loc/v1")
+//                                .setJson(JSON.toJSONString(param))
+//                                .build()
+//                                .doPost();
+//                        JSONObject jsonObject = JSON.parseObject(response);
+//                        LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed());
+//                        Integer code = jsonObject.getInteger("code");
+//                        if (code.equals(200)) {
+//                            StartupDto dto = jsonObject.getObject("data", StartupDto.class);
+//                            News.info("鍐嶅叆搴撹幏鍙栨柊搴撲綅鎴愬姛锛岃繑鍥炴暟鎹�===>>", JSON.toJSON(dto));
+////                            // 鑾峰彇鐩爣绔�
+////                            Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+////                                    .eq("type_no", wrkMast.getIoType() - 50)
+////                                    .eq("stn_no", pickSta.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯
+////                                    .eq("crn_no", dto.getCrnNo()); // 鍫嗗灈鏈哄彿
+////                            StaDesc staDesc = staDescService.selectOne(wrapper);
+////                            if (Cools.isEmpty(staDesc)) {
+////                                News.error("鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo());
+////                                continue;
+////                            }
+////                            // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�)
+////                            Integer staNo = staDesc.getCrnStn();
+//
+//                            // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
+////                        if (wrkMastMapper.saveWrkDetlLog(wrkMast.getWrkNo()) == 0) {
+////                            throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触");
+////                        }
+//                            // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
+//                            if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) {
+//                                throw new CoolException(wrkMast.getWrkNo() + "淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�");
+//                            }
+//
+//                            String sourceLocNo = wrkMast.getSourceLocNo().trim();
+//
+//                            // 鏇存柊宸ヤ綔妗f暟鎹姸鎬�
+//                            wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57
+//                            wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋
+//                            wrkMast.setIoPri(13D);
+//                            wrkMast.setSourceStaNo(pickSta.getStaNo()); // 婧愮珯
+//                            wrkMast.setStaNo(dto.getStaNo()); // 鐩爣绔�
+//                            wrkMast.setCrnNo(dto.getCrnNo());
+//                            wrkMast.setLocNo(dto.getLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣�
+//                            wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌�
+//                            wrkMast.setModiTime(new Date());
+//                            if (wrkMastMapper.updateById(wrkMast) == 0) {
+//                                throw new CoolException(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
+//                            }
+//                            if (wrkMastMapper.setSteEmpty(wrkMast.getWrkNo()) == 0) {
+//                                throw new CoolException(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�");
+//                            }
+//
+//                            LocMast locMast = null;
+//                            // 淇敼鐩爣搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�
+//                            locMast = locMastService.selectById(wrkMast.getLocNo());
+//                            locMast.setLocSts("Q");
+//                            locMast.setModiTime(new Date());
+//                            if (!locMastService.updateById(locMast)) {
+//                                throw new CoolException(wrkMast.getWrkNo() + "淇敼鐩爣搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�");
+//                            }
+//                            // 婧愬簱浣嶅簱瀛樻槑缁嗚浆绉诲埌鐩爣搴撲綅
+//                            if (!locDetlService.updateLocNo(wrkMast.getLocNo(), sourceLocNo)) {
+//                                throw new CoolException(wrkMast.getLocNo() + "浠诲姟搴撳瓨鏄庣粏杞Щ澶辫触锛侊紒锛�");
+//                            }
+//
+//                            // 淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�
+//                            LocMast sourceLocMast = locMastService.selectById(sourceLocNo);
+//                            if (sourceLocMast.getLocSts().equals("P")) {
+//                                sourceLocMast.setLocSts("O");
+//                                sourceLocMast.setBarcode("");
+//                                sourceLocMast.setModiTime(new Date());
+//                                if (!locMastService.updateById(sourceLocMast)) {
+//                                    throw new CoolException(wrkMast.getWrkNo() + "淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�");
+//                                }
+//                                locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo));
+//                            }
+//
+//                            // 鏉$爜璁惧澶勭悊
+//                            barcodeThread.setBarcode("");
+//
+//                            ledThread.errorReset();
+//
+//                            if(wrkMast.getIoType()>100){
+//                                throw new CoolException("鍐嶅叆搴撴洿鏂板伐浣滄。澶辫触锛屼笉鑳界粰PLC涓嬪彂浠诲姟===>>" + wrkMast.getWrkNo());
+//                            }
+//                            // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护
+//                            staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());
+//                            staProtocol.setStaNo(wrkMast.getStaNo().shortValue());
+//                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                            boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//                            if (!result) {
+//                                News.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId());
+//                            }
+//
+//                        } else if (code == 500){
+//                            if (ledThread != null) {
+//                                String errorMsg = jsonObject.getString("msg");
+//                                if (!Cools.isEmpty(errorMsg)) {
+//                                    MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
+//                                }
+//                            }
+//                            News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
+//                        } else {
+//                            staProtocol.setWorkNo((short) 9995);
+//                            staProtocol.setStaNo(pickSta.getBackSta().shortValue());
+//                            devpThread.setPakMk(staProtocol.getSiteId(), false);
+//                            MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol));
+//
+//                            // led 寮傚父鏄剧ず
+//                            if (ledThread != null) {
+//                                String errorMsg = jsonObject.getString("msg");
+////                                String errorMsg = barcode + "鎵樼洏璇嗗埆寮傚父锛岃鍏堣繘琛岀粍鎵橈紒";
+//                                MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));
+//                            }
+//                        }
+//
+//                    } catch (Exception e) {
+//                        e.printStackTrace();
+//                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+////                        continue;
+//                    }
 
                 }
             }
@@ -820,6 +905,8 @@
                 }
                 // 搴撲綅绉昏浆
                 this.locToLoc1(crn, crnProtocol);
+                // 搴撲綅绉昏浆(楂橀绉诲簱锛宨o_type=111)
+                this.locToLoc111(crn, crnProtocol);
                 // 搴撲綅绉昏浆锛屽洖鍘熷簱浣�
                 this.locToLoc17(crn, crnProtocol);
                 // 婕旂ず浠诲姟
@@ -856,11 +943,81 @@
                 continue;
             }
 
+            // 鍏ュ簱娣卞簱浣嶆槸鍚︽湁闈濬銆丏銆乆搴撲綅杩涜鏍¢獙
+            if (wrkMastMapper.selectShallowLoc(Integer.parseInt(wrkMast.getLocNo().substring(0, 2)),Integer.parseInt(wrkMast.getLocNo().substring(2, 5)),Integer.parseInt(wrkMast.getLocNo().substring(5, 7)))!=null){
+                continue;
+            }
+
             //鍔犲己鍒ゆ柇锛屽彧瑕佸瓨鍦ㄧЩ搴撲换鍔★紝璇存槑鍑哄簱浠诲姟鏈畬鍏ㄧ粨鏉燂紝涓嶆墽琛屽叆搴撲换鍔�
             WrkMast one = wrkMastMapper.selectLocMoveData(slave.getId());
             if(!Cools.isEmpty(one)){
                 News.error("鍏ュ簱 ===>> 瀛樺湪绉诲簱鏈畬鎴愪换鍔★紝涓嶈兘鍏ュ簱銆傜Щ搴撲换鍔″彿={},鍫嗗灈鏈哄彿={}", one.getWrkNo(), slave.getId());
 //                continue;
+            }
+
+            //鍏ュ簱搴撲綅涓嶆槸鏈�澶栧眰搴撲綅锛屽垽鏂渶澶栧眰搴撲綅鏄惁涓虹┖搴撲綅锛屽涓嶆槸鍒欒繘琛岀Щ搴撲换鍔�
+            if(!locMastService.isOutMost(wrkMast.getLocNo())) {
+                WrkMast wrkMastMove = wrkMastMapper.selectLocMoveWorking(slave.getId());
+                if (wrkMastMove != null && wrkMast.getWrkNo() == 111) {
+                    continue;
+                }
+
+                WrkMast two = wrkMastMapper.selectWorking1(slave.getId(), wrkMast.getWrkNo());
+                if (two != null) {//2鍙锋満鏈夊湪鎵ц浠诲姟鏃讹紝绂佹鐢熸垚绉诲簱宸ヤ綔妗�
+                    continue;
+                } else {
+                    List<String> shallowLocs = Utils.getShallowLocs(wrkMast.getLocNo());
+                    if (!Cools.isEmpty(shallowLocs)) {
+                        for (String shallowLocNo : shallowLocs) {
+                            LocMast shallowLoc = locMastService.selectById(shallowLocNo);
+                            WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
+                            if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
+                                if (null == waitWrkMast) {
+                                    // 鐢熸垚涓�绗旂Щ搴撲换鍔″伐浣滄。銆佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵��
+                                    // 娌℃湁浣滀笟涓殑鍏ュ簱浠诲姟鏃讹紝鎵嶈兘鐢熸垚绉诲簱浠诲姟
+                                    WrkMast one2 = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+                                            .eq("crn_no", slave.getId())
+                                            .last(" and wrk_sts in (3,4,5,6,7,8)"));
+                                    if (one2 == null) {
+                                        moveLocForDeepLoc(slave, shallowLoc);
+                                        // 缃《浠诲姟
+                                        wrkMast.setIoPri((double) 9999);
+                                        wrkMastMapper.updateById(wrkMast);
+                                    } else {
+                                        News.error("娴呭簱浣嶉樆濉炴椂锛屼笖娴呭簱浣嶅瓨鍦ㄤ綔涓氫腑鍑哄簱浠诲姟锛佸伐浣滃彿={}", one2.getWrkNo());
+                                    }
+                                    flag = true;
+                                    break;
+                                } else {
+                                    if (waitWrkMast.getWrkSts() != 18) {
+                                        News.error("搴撲綅鍑哄簱鍒板爢鍨涙満绔� ===>> 搴撲綅鐘舵�佸湪搴擄紝浣嗘槸娴呭簱浣嶅凡瀛樺湪宸ヤ綔妗d换鍔★紒鍑哄簱搴撲綅={},娴呭簱浣嶅彿={}", shallowLoc.getLocNo());
+                                        flag = true;
+                                        break;
+                                    }
+
+                                }
+//                            } else if (shallowLoc.getLocSts().equals("Q") || shallowLoc.getLocSts().equals("S")) {
+//                                News.error("搴撲綅鍑哄簱鍒板爢鍨涙満绔� ===>> 娴呭簱浣嶅簱浣嶇姸鎬佷负鍏ュ簱棰勭害锛佸嚭搴撳簱浣�={},娴呭簱浣嶅彿={}", shallowLoc.getLocNo());
+//                                flag = true;
+//                                break;
+                            } else if (shallowLoc.getLocSts().equals("R") || shallowLoc.getLocSts().equals("P")) {
+                                News.error("搴撲綅鍑哄簱鍒板爢鍨涙満绔� ===>> 搴撲綅鐘舵�佸湪搴擄紝浣嗘槸娴呭簱浣嶅凡瀛樺湪宸ヤ綔妗d换鍔★紒鍑哄簱搴撲綅={},娴呭簱浣嶅彿={}", shallowLoc.getLocNo());
+                                flag = true;
+                                break;
+                            }
+
+//                            //20230307 ADD锛屽啀鍔犱竴娆″垽鏂紝褰撴祬搴撲綅鐘舵�佷笉涓篛鏃讹紝涓嶆墽琛屽綋鍓嶅嚭搴撲换鍔�
+//                            if (shallowLoc != null && !shallowLoc.getLocSts().equals("O")) {
+//                                News.error("鍋氫簡娴呭簱浣嶉樆濉炲鐞嗗悗鍙嶅鍒ゆ柇锛屾祬搴撲綅鐘舵�佷笉涓篛 ===>> 娴呭簱浣嶅簱浣嶇姸鎬佷负鍏ュ簱棰勭害锛佸嚭搴撳簱浣�={},娴呭簱浣嶅彿={}", wrkMast.getSourceLocNo(), shallowLoc.getLocNo());
+//                                flag = true;
+//                                break;
+//                            }
+                        }
+                    }
+                }
+            }
+            if(flag){
+                return false;
             }
 
             // 鍒ゆ柇鏄惁宸插瓨鍦ㄥ皬杞︾粦瀹氫换鍔�
@@ -1044,6 +1201,10 @@
                     }
                     // 鍫嗗灈鏈烘惉杩愬皬杞�
                     if (wrkMast.getWrkSts() == 3L) {
+                        if (Cools.isEmpty(wrkMast.getSteNo()) || wrkMast.getSteNo()==0){
+                            News.error("宸ヤ綔鍙�={}鍗冲皢寮�濮嬫惉杩愬皬杞︿絾鏄伐浣滄。娌℃湁灏忚溅鍙�",wrkMast.getWrkNo());
+                            return false;
+                        }
                         this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol);
                     }
                 }
@@ -1057,6 +1218,7 @@
      * 鍑哄簱  ===>>  搴撲綅鍒板爢鍨涙満绔�
      */
     public synchronized boolean locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){
+        Collections.shuffle(slave.getCrnOutStn());
         for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) {
             // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗�
             WrkMast wrkMast = wrkMastMapper.selectPakOutStep111215(slave.getId(), crnStn.getStaNo());
@@ -1143,11 +1305,11 @@
                 }
             }
 
-            //鍑哄簱搴撲綅涓嶆槸鏈�澶栧眰搴撲綅锛屽垽鏂祬搴撲綅缁勬槸鍚﹂兘涓虹┖锛屾垨瀛樺湪搴撲綅绉昏浆浠诲姟
+            //鍑哄簱搴撲綅涓嶆槸鏈�澶栧眰搴撲綅锛屽垽鏂渶澶栧眰搴撲綅鏄惁涓虹┖搴撲綅锛屽涓嶆槸鍒欒繘琛岀Щ搴撲换鍔�
             boolean flag = false;
             if(!locMastService.isOutMost(wrkMast.getSourceLocNo())) {
                 WrkMast wrkMastMove = wrkMastMapper.selectLocMoveWorking(slave.getId());
-                if (wrkMastMove != null && wrkMast.getWrkNo() == 11) {
+                if (wrkMastMove != null && wrkMast.getWrkNo() == 111) {
                     continue;
                 }
 
@@ -1155,29 +1317,41 @@
                 if (two != null) {//2鍙锋満鏈夊湪鎵ц浠诲姟鏃讹紝绂佹鐢熸垚绉诲簱宸ヤ綔妗�
                     continue;
                 } else {
-                    String[] shallowlocs = Utils.getShallowLocs(wrkMast.getSourceLocNo());
-                    if (!Cools.isEmpty(shallowlocs)) {
-                        for (String shallowLocNo : shallowlocs) {
+                    List<String> shallowLocs = Utils.getShallowLocs(wrkMast.getSourceLocNo());
+                    if (!Cools.isEmpty(shallowLocs)) {
+                        for (String shallowLocNo : shallowLocs) {
                             LocMast shallowLoc = locMastService.selectById(shallowLocNo);
                             WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo);
                             if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) {
-                                if (null == waitWrkMast) {
-                                    News.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo);
-                                } else {
-                                    //iotype=11锛寃rksts=17锛岃鏄庤揣鐗╁凡缁忕Щ搴撳埌鏆傚瓨搴撲綅锛岀瓑寰呭洖鍘熷簱浣�,姝ゆ椂鍏佽缁х画鍑哄簱
-                                    if (waitWrkMast.getIoType() != 11 || waitWrkMast.getWrkSts() != 17) {
-                                        waitWrkMast.setIoPri((double) 9999);
-                                        waitWrkMast.setModiTime(new Date());
-                                        if (wrkMastMapper.updateById(waitWrkMast) == 0) {
-                                            News.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo());
+                                if (Cools.isEmpty(waitWrkMast)){
+                                    News.error("搴撲綅寮傚父");
+                                }else {
+                                    if (waitWrkMast.getIoType() != 11 || waitWrkMast.getWrkSts() != 17){
+                                        if(waitWrkMast.getIoPri()<=9980.0){
+                                            waitWrkMast.setIoPri(waitWrkMast.getIoPri()+10.0);
+                                        }else {
+                                            waitWrkMast.setIoPri(9999d);
                                         }
-                                        if (waitWrkMast.getWrkSts() != 17) {
+                                        if(wrkMast.getIoPri()>=9000.0){
+                                            wrkMast.setIoPri(9999d);
+                                        }else if (wrkMast.getIoPri()>20.0){
+                                            wrkMast.setIoPri(wrkMast.getIoPri()-10.0);
+                                        }else {
+                                            wrkMast.setIoPri(13.0d);
+                                        }
+                                        if (wrkMastMapper.updateById(wrkMast)==0){
+                                            News.error("璋冩暣浼樺厛绾уけ璐�");
+                                        }
+                                        if (wrkMastMapper.updateById(waitWrkMast)==0){
+                                            News.error("璋冩暣浼樺厛绾уけ璐�");
+                                        }else if (waitWrkMast.getWrkSts() != 17){
                                             flag = true;
                                         }
+
                                         break;
                                     }
                                 }
-                            } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
+                            }else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) {
                                 if (null == waitWrkMast) {
                                     // 鐢熸垚涓�绗旂Щ搴撲换鍔″伐浣滄。銆佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵��
                                     // 娌℃湁浣滀笟涓殑鍑哄簱浠诲姟鏃讹紝鎵嶈兘鐢熸垚绉诲簱浠诲姟
@@ -1405,6 +1579,10 @@
                         }
                         // 鍫嗗灈鏈烘惉杩愬皬杞�
                         if (wrkMast.getWrkSts() == 12L) {
+                            if (Cools.isEmpty(wrkMast.getSteNo()) || wrkMast.getSteNo()==0) {
+                                News.error("宸ヤ綔鍙�={}鍗冲皢寮�濮嬫惉杩愬皬杞︿絾鏄伐浣滄。娌℃湁灏忚溅鍙�",wrkMast.getWrkNo());
+                                return false;
+                            }
                             this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol);
                         }
                     }
@@ -1607,6 +1785,102 @@
                 if (wrkMast.getWrkSts() == 12L) {
                     this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol);
                 }
+            }
+        }
+    }
+
+    /**
+     * 搴撲綅绉昏浆(楂橀绉诲簱锛宨o_type=111)
+     */
+    public synchronized void locToLoc111(CrnSlave slave, CrnProtocol crnProtocol){
+        // 鑾峰彇宸ヤ綔妗d俊鎭�
+        WrkMast wrkMast = wrkMastMapper.selectLocMove111(slave.getId());
+        if (null == wrkMast) {
+            return;
+        }
+        // 杩囨护
+        if (null != wrkMastMapper.selectPakin(slave.getId(), null)) {
+            News.error("{}鍑哄簱浠诲姟鏃犳硶浣滀笟锛屽洜瀛樺湪鍏ュ簱涓换鍔�!", wrkMast.getWrkNo());
+            return;
+        }
+
+        // 鍒ゆ柇鏄惁宸插瓨鍦ㄥ皬杞︾粦瀹氫换鍔�
+        BasSte basSte = basSteService.findByCrnNo(wrkMast.getCrnNo());
+        if(basSte == null) return;
+        WrkMast one = wrkMastService.selectOne(new EntityWrapper<WrkMast>()
+                .eq("ste_no",basSte.getSteNo())
+                .last(" and io_type != 111 and wrk_sts < 10"));
+        if(one != null){
+            News.error("{}绉诲簱浠诲姟鏃犳硶浣滀笟锛屽洜鍏ュ簱浠诲姟宸茬粦瀹氬皬杞�!", wrkMast.getWrkNo());
+            return;
+        }
+
+        // 鑾峰彇婧愬簱浣嶄俊鎭�
+        LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo());
+        if (null == sourceLoc) {
+            News.error("宸ヤ綔妗e簱浣嶇Щ杞け璐ワ紝鍘熷洜锛氭绱㈡簮搴撲綅澶辫触锛佸伐浣滃彿={}锛屾簮搴撲綅={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo());
+            return;
+        }
+        // 婧愬簱浣�  搴撲綅鐘舵�佸垽鏂�
+        if (!sourceLoc.getLocSts().equals("R")) {
+            return;
+        }
+        // 鑾峰彇鐩爣搴撲綅淇℃伅
+        LocMast loc = locMastService.selectById(wrkMast.getLocNo());
+        if (null == loc || !loc.getLocSts().equals("S")) {
+            News.error("宸ヤ綔妗e簱浣嶇Щ杞け璐ワ紝鍘熷洜锛氭绱㈢洰鏍囧簱浣嶅け璐ワ紒宸ヤ綔鍙�={}锛屾簮搴撲綅={}", wrkMast.getWrkNo(), wrkMast.getLocNo());
+            return;
+        }
+        // 鑾峰彇鍫嗗灈鏈轰俊鎭� 骞� 鍒ゆ柇鏄惁鍙叆鍑�
+        BasCrnp basCrnp = basCrnpService.selectById(slave.getId());
+        if (!basCrnp.getInEnable().equals("Y") && !basCrnp.getOutEnable().equals("Y")) {
+            return;
+        }
+
+//        // 鍫嗗灈鏈烘帶鍒惰繃婊�
+//        if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) {
+//            return;
+//        }
+
+        // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊�
+        if (wrkMastMapper.selectWorking(slave.getId()) != null) {
+            return;
+        }
+
+        // 缃《浠诲姟
+        wrkMast.setIoPri((double) 9999);
+        wrkMastMapper.updateById(wrkMast);
+
+        // 婧愬簱浣� ===>> 鏈�澶栧眰搴撲綅
+        if (locMastService.isOutMost(wrkMast.getSourceLocNo())) {
+            // 鐩爣搴撲綅 ===>> 鏈�澶栧眰搴撲綅
+            if (locMastService.isOutMost(wrkMast.getLocNo())) {
+                // 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
+                CrnCommand crnCommand = new CrnCommand();
+                crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙�
+                crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙�
+                crnCommand.setAckFinish((short) 0);  // 浠诲姟瀹屾垚纭浣�
+                crnCommand.setCommand((short) 0);
+                crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡:  搴撲綅绉昏浆
+                crnCommand.setSourcePosX(sourceLoc.getRow1().shortValue());     // 婧愬簱浣嶆帓
+                crnCommand.setSourcePosY(sourceLoc.getBay1().shortValue());     // 婧愬簱浣嶅垪
+                crnCommand.setSourcePosZ(sourceLoc.getLev1().shortValue());     // 婧愬簱浣嶅眰
+                crnCommand.setDestinationPosX(loc.getRow1().shortValue());     // 鐩爣搴撲綅鎺�
+                crnCommand.setDestinationPosY(loc.getBay1().shortValue());     // 鐩爣搴撲綅鍒�
+                crnCommand.setDestinationPosZ(loc.getLev1().shortValue());     // 鐩爣搴撲綅灞�
+                if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) {
+                    News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand));
+                } else {
+                    // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 7.鍚婅溅鍏ュ簱涓�
+                    Date now = new Date();
+                    wrkMast.setWrkSts(7L);
+                    wrkMast.setCrnStrTime(now);
+                    wrkMast.setModiTime(now);
+                    if (wrkMastMapper.updateById(wrkMast) == 0) {
+                        News.error("銆愬簱浣嶇Щ杞�� 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 7.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                    }
+                }
+
             }
         }
     }
@@ -2207,6 +2481,10 @@
                 }
                 // 鍫嗗灈鏈烘惉杩愬皬杞�
                 if (wrkMast.getWrkSts() == 12L) {
+                    if (Cools.isEmpty(wrkMast.getSteNo()) || wrkMast.getSteNo()==0) {
+                        News.error("宸ヤ綔鍙�={}鍗冲皢寮�濮嬫惉杩愬皬杞︿絾鏄伐浣滄。娌℃湁灏忚溅鍙�",wrkMast.getWrkNo());
+                        return;
+                    }
                     this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol);
                 }
             }
@@ -2633,7 +2911,7 @@
 
                 }
                 if (wrkMast == null) { continue; }
-                if (wrkMast.getIoType() != 11) {
+                if (wrkMast.getIoType() != 11 && wrkMast.getIoType() != 111) {
                     // 鍏ュ簱 ==>> 璐х墿鎼叆搴�
                     if (wrkMast.getWrkSts() == 7){
                         // 鍒ゆ柇鏄惁闇�瑕佸皬杞﹀叆搴�
@@ -2777,8 +3055,27 @@
                         }
                         // 绉诲簱 ===>> 鍫嗗灈鏈烘惉鑷崇洰鏍囧簱浣嶇粍 瀹屾垚
                     }
+                // 搴撲綅绉昏浆(楂橀io_type111)
+                } else if(wrkMast.getIoType() == 111) {
+                    Date now = new Date();
+                    // 鍏ュ簱 ==>> 璐х墿鎼叆搴�
+                    if (wrkMast.getWrkSts() == 7){
+                        if (locMastService.isOutMost(wrkMast.getLocNo()) && locMastService.isOutMost(wrkMast.getSourceLocNo())) {
+                            // ==> 9.鍏ュ簱瀹屾垚
+                            wrkMast.setWrkSts(9L);
+                            wrkMast.setCrnEndTime(now);
+                            wrkMast.setModiTime(now);
+                            // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満
+                            if (wrkMastMapper.updateById(wrkMast) > 0) {
+                                // 鍫嗗灈鏈哄浣�
+                                crnThread.setResetFlag(true);
+                            } else {
+                                News.error("淇敼宸ヤ綔妗g姸鎬� 7.鍚婅溅鍏ュ簱涓� => 9.鍏ュ簱瀹屾垚 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo());
+                            }
+                        }
+                    }
                 // 搴撲綅绉昏浆
-                } else {
+                }else {
                     // 鍏ュ簱 ==>> 璐х墿鎼叆搴�
                     if (wrkMast.getWrkSts() == 7){
                         // 鍒ゆ柇鏄惁闇�瑕佸皬杞﹀叆搴�
@@ -3132,6 +3429,10 @@
                     switch (wrkMast.getWrkSts().intValue()) {
                         case 2:
                             // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.灏忚溅寰呮惉
+                            if (Cools.isEmpty(wrkMast.getSteNo()) || wrkMast.getSteNo()==0){
+                                News.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.灏忚溅寰呮惉 澶辫触锛侊紒锛屽伐浣滃彿={}   鍘熷洜锛氬伐浣滃彿娌″皬杞�", wrkMast.getWrkNo());
+                                break;
+                            }
                             wrkMast.setWrkSts(3L);
                             wrkMast.setModiTime(now);
                             if (wrkMastMapper.updateById(wrkMast) == 0) {
@@ -3610,15 +3911,24 @@
                 ledCommand.setBarcode(wrkMast.getBarcode());
                 if (wrkMast.getIoType() != 110) {
                     List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
+
                     wrkDetls.forEach(wrkDetl -> {
+                        Double total = 0.0;
+                        EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
+                        LocDetl locDetl = locDetlService.selectOne(wrapper.eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr()));
+                        if (Cools.isEmpty(locDetl)) {
+                            total = wrkDetl.getAnfme();
+                        } else {
+                            total = locDetl.getAnfme();
+                        }
                         if (wrkMast.getIoType() == 101) {
-                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getAnfme()));
+                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
                         }
                         if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) {
-                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getAnfme()));
+                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
                         }
                         if (wrkMast.getIoType() == 107) {
-                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getAnfme()));
+                            ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
                         }
                     });
                 }
@@ -4052,6 +4362,7 @@
             LocMast loc = null;
             List<LocMast> locs = locMastService.selectList(new EntityWrapper<LocMast>().eq("crn_no",crn.getId())
                                                 .eq("loc_type1",shallowLoc.getLocType1())
+                                                .eq("loc_type2",shallowLoc.getLocType2())
                                                 .eq("loc_sts","O")
                                                 .last(" and row1 in (" + rows + ") order by bay1,lev1"));
             for (LocMast one : locs){
@@ -4059,30 +4370,26 @@
                     || Utils.getBay(one.getLocNo()) != Utils.getBay(shallowLoc.getLocNo())
                     || Utils.getLev(one.getLocNo()) != Utils.getLev(shallowLoc.getLocNo())){
 
-                    boolean success = true;
-                    List<String> insideLoc = Utils.getGroupInsideLoc(one.getLocNo());
-                    for (String inside : insideLoc) {
-                        LocMast locMast = locMastService.selectById(inside);
-                        if(Cools.isEmpty(locMast)){
-                            continue;
-                        }
-                        if (locMast.getLocSts().equals("P")
-                                || locMastService.selectById(inside).getLocSts().equals("R")
-                                || locMastService.selectById(inside).getLocSts().equals("S")
-                                || locMastService.selectById(inside).getLocSts().equals("Q")) {
-                            success = false; break;
-                        }
-                    }
-
                     Integer steNo = this.hasCar(one.getLocNo());
                     if (steNo != null) {
+                        //鏈夊皬杞�
                         continue;
                     }
 
-                    if (success) {
-                        loc = one;
-                        break;
+//                    //妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆
+//                    if (Utils.checkInsideLocIsDFX(one.getLocNo())) {
+//                        //鍐呬晶鍏朵粬搴撲綅涓嶆槸D銆丗銆乆銆備笉鑳介�夊彇璇ュ簱浣�
+//                        continue;
+//                    }
+
+                    //妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆銆丱
+                    if (Utils.checkInsideLocIsDFXO(one.getLocNo())) {
+                        //鍐呬晶鍏朵粬搴撲綅涓嶆槸D銆丗銆乆銆丱銆備笉鑳介�夊彇璇ュ簱浣�
+                        continue;
                     }
+
+                    loc = one;
+                    break;
                 }
             }
 
@@ -4099,7 +4406,7 @@
             wrkMast.setWrkNo(workNo);
             wrkMast.setIoTime(now);
             wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
-            wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇
+            wrkMast.setIoType(111); // 鍏ュ嚭搴撶姸鎬侊細 111.搴撴牸绉昏浇(楂橀)
             wrkMast.setIoPri((double) 9999);
             wrkMast.setCrnNo(crn.getId());
             wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣�

--
Gitblit v1.9.1