From bfc0d002ee31ceb7f74bd3ecd5008177ba31425b Mon Sep 17 00:00:00 2001 From: zhangc <zc@123> Date: 星期六, 19 四月 2025 10:17:07 +0800 Subject: [PATCH] 999 --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 744 ++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 449 insertions(+), 295 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 d7e34f0..dbb30ac 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -1,14 +1,15 @@ package com.zy.asrs.service.impl; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; -import com.core.common.Cools; import com.zy.asrs.domain.enums.NotifyMsgType; import com.zy.asrs.entity.*; import com.zy.asrs.service.*; import com.zy.asrs.utils.NotifyUtils; import com.zy.asrs.utils.Utils; import com.zy.common.model.MapNode; +import com.zy.common.model.SearchLocParam; import com.zy.common.model.enums.NavigationMapType; import com.zy.common.service.CommonService; import com.zy.common.utils.*; @@ -27,20 +28,21 @@ import com.zy.core.model.command.LiftCommand; import com.zy.core.model.command.ShuttleAssignCommand; import com.zy.core.model.command.ShuttleCommand; -import com.zy.core.model.protocol.*; +import com.zy.core.model.protocol.ForkLiftStaProtocol; +import com.zy.core.model.protocol.LiftProtocol; +import com.zy.core.model.protocol.ShuttleProtocol; +import com.zy.core.model.protocol.StaProtocol; import com.zy.core.properties.SlaveProperties; -import com.zy.core.thread.*; +import com.zy.core.thread.DevpThread; +import com.zy.core.thread.LiftThread; +import com.zy.core.thread.ShuttleThread; import com.zy.core.thread.impl.FyDevpThread; -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; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 绔嬩綋浠撳簱WCS绯荤粺涓绘祦绋嬩笟鍔� @@ -94,14 +96,11 @@ private NoLiftOutServiceImpl noLiftOutService; @Autowired private LiftAction liftAction; + @Autowired + private BasWrkStatusService wrkStatusService; - public static List<Integer> staNosIn = new ArrayList<Integer>() {{ - add(1015); - add(1026); - }}; - - private boolean isInEnable(DevpThread devpThread, Integer staNo) { + public boolean isInEnable(DevpThread devpThread, Integer staNo) { if (staNo == null) { return false; } @@ -117,6 +116,7 @@ case 1031: case 1032: return devpThread.getStation().get(1032).isInEnable(); + case 1024: case 1025: case 1026: return devpThread.getStation().get(1025).isInEnable(); @@ -128,7 +128,7 @@ return false; } - private boolean isOutEnable(DevpThread devpThread, Integer staNo) { + public boolean isOutEnable(DevpThread devpThread, Integer staNo) { if (staNo == null) { return false; } @@ -141,9 +141,7 @@ case 1022: case 1023: return devpThread.getStation().get(1022).isOutEnable(); - case 1031: - case 1032: - return devpThread.getStation().get(1032).isOutEnable(); + case 1024: case 1025: case 1026: return devpThread.getStation().get(1025).isOutEnable(); @@ -151,6 +149,9 @@ case 1014: case 1015: return devpThread.getStation().get(1014).isOutEnable(); + case 1031: + case 1032: + return devpThread.getStation().get(1032).isOutEnable(); } return false; } @@ -173,52 +174,15 @@ staProtocol = staProtocol.clone(); } Short workNo = staProtocol.getWorkNo(); - // 灏哄妫�娴嬪紓甯� - boolean back = false; - String errMsg = "寮傚父锛�"; - if (staProtocol.isFrontErr()) { - errMsg = errMsg + "鍓嶈秴闄愶紱"; - back = true; - } - if (staProtocol.isBackErr()) { - errMsg = errMsg + "鍚庤秴闄�"; - back = true; - } - if (staProtocol.isHighErr()) { - errMsg = errMsg + "楂樿秴闄�"; - back = true; - } - if (staProtocol.isLeftErr()) { - errMsg = errMsg + "宸﹁秴闄�"; - back = true; - } - if (staProtocol.isRightErr()) { - errMsg = errMsg + "鍙宠秴闄�"; - back = true; - } - if (staProtocol.isWeightErr()) { - errMsg = errMsg + "瓒呴噸"; - back = true; - } - if (staProtocol.isBarcodeErr()) { - errMsg = errMsg + "鎵爜澶辫触"; - back = true; - } - // 閫�鍥� - if (back) { - // led 寮傚父鏄剧ず - LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); - if (ledThread != null) { - ledThread.error(errMsg); - } - continue; - } + +// // led 寮傚父鏄剧ず +// LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); +// if (ledThread != null) { +// ledThread.error(errMsg); +// } // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 if (staProtocol.isAutoing() && staProtocol.isLoading() && isInEnable(devpThread, inSta.getStaNo()) && !staProtocol.isEmptyMk() && (workNo == 0 || (workNo >= 9990 && workNo <= 9999)) && staProtocol.isPakMk()) { String barcode = staProtocol.getBarcode(); - if (!Cools.isEmpty(barcode)) { - News.info("鏉$爜鎵弿鍣ㄦ娴嬫潯鐮佷俊鎭細{}", barcode); - } // 鍒ゆ柇閲嶅宸ヤ綔妗� WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_sta_no", inSta.getStaNo()).eq("wrk_sts", WrkStsType.NEW_INBOUND.sts).eq("barcode", barcode)); if (wrkMast != null) { @@ -233,23 +197,22 @@ wrkMastService.updateById(wrkMast); } try { - /*String wmsUrl = "127.0.0.1:8080/fyxcwms"; - SearchLocParam param = new SearchLocParam(); - param.setBarcode(barcode); - param.setIoType(1); - param.setSourceStaNo(inSta.getStaNo()); - param.setLocType1(staProtocol.getLocType1().shortValue()); - String response = new HttpHandler.Builder() - .setUri(wmsUrl) - .setPath("/rpc/pakin/loc/v1") - .setJson(JSON.toJSONString(param)) - .build() - .doPost(); - JSONObject jsonObject = JSON.parseObject(response); - Integer code = jsonObject.getInteger("code"); - if (code.equals(200)) { - StartupDto dto = jsonObject.getObject("data", StartupDto.class); - + String wmsUrl = "192.168.10.201:8080/fyxcwms"; + SearchLocParam param = new SearchLocParam(); + param.setBarcode(barcode); + param.setIoType(1); + param.setSourceStaNo(inSta.getStaNo()); + param.setLocType1(staProtocol.getLocType1().shortValue()); + String response = new HttpHandler.Builder() + .setUri(wmsUrl) + .setPath("/rpc/pakin/loc/v1") + .setJson(JSON.toJSONString(param)) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + Integer code = jsonObject.getInteger("code"); + if (code.equals(200)) { + //StartupDto dto = jsonObject.getObject("data", StartupDto.class); // String wmsLocNo = dto.getLocNo(); // int row = Integer.parseInt(wmsLocNo.substring(0, 2)); // int bay = Integer.parseInt(wmsLocNo.substring(2, 5)); @@ -280,24 +243,73 @@ // }catch (Exception e){ // // } - } else { - String msg = jsonObject.getString("msg"); - HashMap<String, String> hashMap = new HashMap<>(); - hashMap.put("msg", msg); - hashMap.put("sta", inSta.getStaNo().toString()); - new HttpHandler.Builder() - .setUri(wmsUrl) - .setPath("/rpc/led/getError") - .setJson(JSON.toJSONString(hashMap)) - .build() - .doPost(); - News.error("鍏ュ簱鐢宠澶辫触锛屼换鍔℃暟鎹�={}锛岃姹傚搷搴�={}", JSON.toJSON(param), JSON.toJSON(jsonObject)); - }*/ + } else { + String msg = jsonObject.getString("msg"); + HashMap<String, String> hashMap = new HashMap<>(); + hashMap.put("msg", msg); + hashMap.put("sta", inSta.getStaNo().toString()); + new HttpHandler.Builder() + .setUri(wmsUrl) + .setPath("/rpc/led/getError") + .setJson(JSON.toJSONString(hashMap)) + .build() + .doPost(); + News.error("鍏ュ簱鐢宠澶辫触锛屼换鍔℃暟鎹�={}锛岃姹傚搷搴�={}", JSON.toJSON(param), JSON.toJSON(jsonObject)); + } } catch (Exception e) { e.printStackTrace(); } } + } else if (inSta.getStaNo() == 1012 || inSta.getStaNo() == 1022) { + // 鑾峰彇鍏ュ簱绔欎俊鎭� + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1); + StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + Short workNo = staProtocol.getWorkNo(); + if (staProtocol.isAutoing() && staProtocol.isLoading() && isInEnable(devpThread, inSta.getStaNo()) && !staProtocol.isEmptyMk() && (workNo == 0 || (workNo >= 9990 && workNo <= 9999)) && staProtocol.isPakMk()) { + String barcode = staProtocol.getBarcode(); + // 鍒ゆ柇閲嶅宸ヤ綔妗� + WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_sta_no", inSta.getStaNo()).eq("wrk_sts", WrkStsType.NEW_INBOUND.sts).eq("barcode", barcode)); + if (wrkMast == null) { + try { + String wmsUrl = "192.168.10.201:8080/fyxcwms"; + SearchLocParam param = new SearchLocParam(); + param.setBarcode(barcode); + param.setIoType(1); + param.setSourceStaNo(inSta.getStaNo()); + param.setLocType1((short) 1); + String response = new HttpHandler.Builder() + .setUri(wmsUrl) + .setPath("/rpc/pakin/loc/v1") + .setJson(JSON.toJSONString(param)) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + Integer code = jsonObject.getInteger("code"); + if (code.equals(200)) { + } else { + String msg = jsonObject.getString("msg"); + HashMap<String, String> hashMap = new HashMap<>(); + hashMap.put("msg", msg); + hashMap.put("sta", inSta.getStaNo().toString()); + new HttpHandler.Builder() + .setUri(wmsUrl) + .setPath("/rpc/led/getError") + .setJson(JSON.toJSONString(hashMap)) + .build() + .doPost(); + News.error("鍏ュ簱鐢宠澶辫触锛屼换鍔℃暟鎹�={}锛岃姹傚搷搴�={}", JSON.toJSON(param), JSON.toJSON(jsonObject)); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } } } } catch (Exception e) { @@ -316,29 +328,42 @@ } else { staProtocol = staProtocol.clone(); } + if ((Utils.getLev(wrkMast.getLocNo()) != 1 && wrkMast.getSourceStaNo() == 1014) || (Utils.getLev(wrkMast.getLocNo()) != 5 && wrkMast.getSourceStaNo() == 1025)) { + //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 + WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(1, wrkMast.getWrkNo(), wrkMast.getMainWrkNo()); + if (liftWrkMast != null) { + if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚� + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), 1); + continue; + } + } + wrkMast.setLiftNo(1); + } Short finishWorkNo = staProtocol.getFinishWorkNo(); if (finishWorkNo == null) { continue; } + + String locNo = "1200301"; - if (wrkMast.getStaNo() == 1025) { + if (wrkMast.getStaNo() == 1026) { locNo = "1200305"; } - boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttleIn(wrkMast.getWrkNo(), locNo, wrkMast.getLocNo(), "TRANSPORT_DEVP",true); + boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttleS(wrkMast.getWrkNo(), locNo, wrkMast.getLocNo(), "TRANSPORT_DEVP"); if (!dispatchShuttle) { News.info("{}浠诲姟锛岃皟搴﹀皬杞﹀け璐�", wrkMast.getWrkNo()); - return; + continue; + } else { + News.info("{}浠诲姟锛岃皟搴﹀皬杞﹀け鎴愬姛", wrkMast.getWrkNo()); } wrkMast.setWrkSts(WrkStsType.INBOUND_SHUTTLE_RUN.sts); wrkMast.setLiftNo(null); wrkMast.setSystemMsg("");//娓呯┖娑堟伅 wrkMast.setModiTime(new Date()); - if (wrkMastService.updateById(wrkMast)) { - return; + if (!wrkMastService.updateById(wrkMast)) { + News.info("{}浠诲姟锛屾洿鏂板伐浣滄。澶辫触", wrkMast.getWrkNo()); } } - - } } @@ -351,38 +376,48 @@ List<WrkMast> wrkSts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", WrkStsType.NEW_OUTBOUND.sts).in("sta_no", 1013, 1024)); for (WrkMast wrkMast : wrkSts) { if (devpThread == null) { - return; + continue; } Map<Integer, StaProtocol> station = devpThread.getStation(); StaProtocol staProtocol = station.get(wrkMast.getStaNo()); if (staProtocol == null) { - return; + continue; } if (!staProtocol.isAutoing()) { News.info("{}浠诲姟锛寋}绔欑偣锛屼笉鍦ㄨ嚜鍔ㄧ姸鎬�", wrkMast.getWrkNo(), staProtocol.getSiteId()); - return; + continue; } - - if (!staProtocol.isOutEnable()) { + if (!isOutEnable(devpThread, wrkMast.getStaNo())) { News.info("{}浠诲姟锛寋}绔欑偣锛屾病鏈夊彲鍑轰俊鍙�", wrkMast.getWrkNo(), staProtocol.getSiteId()); - return; + continue; } String locNo = "1200301"; if (wrkMast.getStaNo() == 1024) { locNo = "1200305"; } - boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttleIn(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), locNo, "TRANSPORT_DEVP", false); + boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttleS(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), locNo, "TRANSPORT_DEVP"); if (!dispatchShuttle) { News.info("{}浠诲姟锛岃皟搴﹀皬杞﹀け璐�", wrkMast.getWrkNo()); - return; + continue; + } else { + WrkMast wrkMast1 = wrkMastService.selectByMainWrkNo(wrkMast.getWrkNo()); + if (wrkMast1 == null) { + News.info("{}浠诲姟锛岃皟搴﹀皬杞﹀け璐�,缁堜簬鍙戠幇浜�", wrkMast.getWrkNo()); + continue; + } else { + News.info("{}浠诲姟锛屾棤鎻愬崌鏈哄璋冨害灏忚溅鎴愬姛", wrkMast.getWrkNo()); + } } wrkMast.setWrkSts(WrkStsType.OUTBOUND_SHUTTLE_RUN.sts); wrkMast.setSystemMsg("");//娓呯┖娑堟伅 wrkMast.setModiTime(now); - if (wrkMastService.updateById(wrkMast)) { - return; + if (!wrkMastService.updateById(wrkMast)) { + News.info("{}浠诲姟锛屾洿鏂板伐浣滄。澶辫触", wrkMast.getWrkNo()); + } else { + WrkMast wrkMast1 = wrkMastService.selectByMainWrkNo(wrkMast.getWrkNo()); + News.info("{}浠诲姟锛岀Щ鍔ㄤ换鍔$敓鎴愭垚鍔熲�斺��1", wrkMast1.getWrkNo()); } } } @@ -391,6 +426,13 @@ * 鍑哄簱鍒板嚭搴撳彛 */ public synchronized void stnToOutStn() { + ShuttleThread shuttleThread1 = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, 1); + ShuttleThread shuttleThread2 = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, 2); + ShuttleProtocol status1 = shuttleThread1.getStatus(); + ShuttleProtocol status2 = shuttleThread2.getStatus(); + List<String> loc = new ArrayList<>(); + loc.add(status1.getCurrentLocNo()); + loc.add(status2.getCurrentLocNo()); DevpSlave devpSlave = slaveProperties.getDevp().get(0); // 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯 DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devpSlave.getId()); @@ -410,14 +452,35 @@ if (wrkMast == null) { continue; } + + String sourceLocNo = "1200305"; + String locNo = "1300105"; + if (wrkMast.getStaNo() == 1013) { + sourceLocNo = "1200301"; + locNo = "1300101"; + if (loc.contains(locNo)) { + locNo = "1100101"; + } + } else { + if (loc.contains(locNo)) { + locNo = "1100105"; + } + } + + boolean dispatchShuttle = shuttleDispatchUtils.shuttleMoveGenerate(wrkMast.getWrkNo(), sourceLocNo, locNo, wrkMast.getShuttleNo(), null, false); + if (!dispatchShuttle) { + News.taskInfo(wrkMast.getWrkNo(), "{}灏忚溅锛屾尓杞﹁皟搴﹁嚦鍙栬揣鐐瑰け璐�", wrkMast.getShuttleNo()); + continue; + } + staProtocol.setWorkNo(Short.parseShort(String.valueOf(wrkMast.getWrkNo()))); staProtocol.setStaNo(Short.parseShort(String.valueOf(wrkMast.getStaNo()))); MessageQueue.offer(SlaveType.Devp, devpSlave.getId(), new Task(2, staProtocol)); News.info("杈撻�佺嚎鍏ュ簱鍛戒护涓嬪彂锛屼换鍔℃暟鎹�={}", JSON.toJSON(wrkMast)); wrkMast.setWrkSts(WrkStsType.OUTBOUND_DEVP_RUN.sts); wrkMast.setModiTime(new Date()); + wrkMast.setShuttleNo(null); wrkMastService.updateById(wrkMast); - } } } @@ -429,8 +492,22 @@ * 鍒濆鍖栧疄鏃跺湴鍥� */ public synchronized void initRealtimeBasMap() { + //鍒濆鍖栭厤缃� +// WrkStsType[] values = WrkStsType.values(); +// for (int i = 0; i < values.length; i++) { +// BasWrkStatus basWrkStatus = wrkStatusService.selectById(values[i].sts); +// if (basWrkStatus == null) { +// basWrkStatus = new BasWrkStatus(); +// basWrkStatus.setWrkDesc(values[i].sts+"."+values[i].desc); +// basWrkStatus.setWrkSts(values[i].sts); +// basWrkStatus.setModiTime(new Date()); +// basWrkStatus.setAppeTime(new Date()); +// basWrkStatus.setAppeUser(9527L); +// basWrkStatus.setModiUser(9527L); +// wrkStatusService.insert(basWrkStatus); +// } +// } try { - List<BasMap> basMaps = basMapService.selectList(new EntityWrapper<BasMap>().orderBy("lev", true)); for (BasMap basMap : basMaps) { Integer lev = basMap.getLev(); @@ -570,176 +647,175 @@ /** * 鍑哄簱 ===>> 鍥涘悜绌挎杞﹀嚭搴撲綔涓氫笅鍙� */ - public synchronized void shuttleOutExecute() { - try { - List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("wrk_sts", WrkStsType.NEW_OUTBOUND.sts)); - for (WrkMast wrkMast : wrkMasts) { - boolean step1 = this.shuttleOutExecuteStep1(wrkMast);//灏忚溅鎼嚭搴撲腑 - if (!step1) { - continue; - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } +// public synchronized void shuttleOutExecute() { +// try { +// List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("wrk_sts", WrkStsType.NEW_OUTBOUND.sts)); +// for (WrkMast wrkMast : wrkMasts) { +// boolean step1 = this.shuttleOutExecuteStep1(wrkMast);//灏忚溅鎼嚭搴撲腑 +// if (!step1) { +// continue; +// } +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } /** * 鍑哄簱-灏忚溅鎼嚭搴撲腑 * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue */ - public boolean shuttleOutExecuteStep1(WrkMast wrkMast) { - //101.鐢熸垚鍑哄簱浠诲姟 => 102.灏忚溅鎼繍涓� - if (wrkMast.getWrkSts() == WrkStsType.NEW_OUTBOUND.sts) { - Integer liftNo = wrkMast.getLiftNo(); - if (liftNo == null) { - //閫氳繃杈撻�佺嚎绔欏彿鑾峰彇鎻愬崌鏈哄彿 - liftNo = ForkLiftUtils.getConveyorBindLiftNo(wrkMast.getStaNo()); - if (liftNo == null) { - News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭鎵惧埌鍖归厤鐨勬彁鍗囨満", wrkMast.getWrkNo()); - return false; - } - - //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 - WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftNo); - if (liftWrkMast != null) { - if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚� - News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftNo); - return false; - } - } - - wrkMast.setLiftNo(liftNo); - wrkMast.setModiTime(new Date()); - wrkMastService.updateById(wrkMast); - return false; - } - - ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo); - if (forkLiftThread == null) { - return false; - } - ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); - if (forkLiftProtocol == null) { - return false; - } - - //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庡嚭搴撴ā寮� - if (!forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.OUT)) { - News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾彁鍗囨満涓嶅浜庡嚭搴撴ā寮忥紝绂佹鍑哄簱", wrkMast.getWrkNo()); - return false; - } - - //鑾峰彇婧愮珯 - ForkLiftStaProtocol liftSta = ForkLiftUtils.getLiftStaByLev(liftNo, Utils.getLev(wrkMast.getSourceLocNo())); - if (liftSta == null) { - News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀己灏戠珯鐐逛俊鎭紝绂佹娲惧彂", wrkMast.getWrkNo()); - return false; - } - - if (liftSta.getHasCar()) { - News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣瀛樺湪灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftSta.getStaNo()); - return false; - } - - if (liftSta.getHasTray()) { - News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣鏈夋墭鐩橈紝绂佹娲惧彂", wrkMast.getWrkNo(), liftSta.getStaNo()); - return false; - } - - if (wrkMast.getShuttleNo() == null) {//娌℃湁缁戝畾灏忚溅锛岃繘琛岃皟搴� - //寮哄埗棰勭暀涓�鍙板皬杞︾粰鍏ュ簱浠诲姟 - int lev = Utils.getLev(wrkMast.getSourceLocNo()); - //鑾峰彇褰撳墠妤煎眰鏈夊嚑鍙板彲鐢ㄥ皬杞� - int shuttleCount = shuttleDispatchUtils.getShuttleCountByLev(lev); - if (shuttleCount >= 2) {//鍙湁鍙敤灏忚溅鏁伴噺澶т簬2锛屾墠杩涜鍏ュ簱浠诲姟棰勭暀灏忚溅 - int shuttleWrkInObligateCount = 1;//棰勭暀灏忚溅鏁伴噺 - Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "shuttleWrkInObligateCount").eq("status", 1)); - if (config != null) { - shuttleWrkInObligateCount = Integer.parseInt(config.getValue()); - } - //鍙敤鍑哄簱灏忚溅鏁伴噺(缁欏叆搴撲换鍔¢鐣欎竴鍙拌溅) - int useShuttleCount = shuttleCount - shuttleWrkInObligateCount; - //鏌ヨ妤煎眰宸插垎閰嶈溅杈嗙殑鍑哄簱浠诲姟鏁伴噺 - List<WrkMast> wrkMasts = wrkMastService.selectShuttleOutWrkByLev(lev); - if (wrkMasts.size() >= useShuttleCount) { - News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽綋鍓嶆ゼ灞傚彲鐢ㄥ皬杞}鍙帮紝鍑哄簱浠诲姟宸插垎閰峽}鍙帮紝绯荤粺绛夊緟涓��", wrkMast.getWrkNo(), useShuttleCount, wrkMasts.size()); - return false; - } - } - boolean result = shuttleDispatchUtils.searchDispatchShuttle(wrkMast.getWrkNo(), null, wrkMast.getSourceLocNo(), null);//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐� - News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃皟搴﹀皬杞}绯荤粺绛夊緟涓��", wrkMast.getWrkNo(), result ? "鎴愬姛" : "澶辫触"); - return false; - } - - //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); - if (shuttleThread == null) { - return false; - } - ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); - if (shuttleProtocol == null) { - return false; - } - if (!shuttleThread.isIdle()) { - News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - - //鍒ゆ柇灏忚溅鏄惁鍒拌揪璐х墿搴撲綅 - if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) { - //灏忚溅涓嶅湪杈撻�佺珯鐐逛綅缃� - shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐� - News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屾湭鍒拌揪杈撻�佺珯鐐癸紝绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.TRANSPORT.id);//灏忚溅绉诲簱浠诲姟 - assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙� - assignCommand.setAuto(true);//鑷姩妯″紡 - - //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠� - List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(wrkMast.getSourceLocNo(), liftSta.getLocNo(), NavigationMapType.DFX.id, assignCommand, shuttleThread); - if (commands == null) { - News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - - List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true); - if (liftCommand == null) { - News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - - List<ShuttleCommand> liftCommand2 = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, false); - if (liftCommand2 == null) { - News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇涓嬮檷鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - - commands.add(0, liftCommand.get(0)); - commands.add(liftCommand2.get(0)); - assignCommand.setCommands(commands); - - wrkMast.setWrkSts(WrkStsType.OUTBOUND_SHUTTLE_RUN.sts);//灏忚溅鎼繍涓� 101.鐢熸垚鍑哄簱浠诲姟 ==> 102.灏忚溅鎼繍涓� - wrkMast.setSourceStaNo(liftSta.getStaNo()); - wrkMast.setModiTime(new Date()); - wrkMast.setSystemMsg("");//娓呯┖娑堟伅 - if (wrkMastService.updateById(wrkMast)) { - //涓嬪彂浠诲姟 - shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); - //瑙﹀彂閫氱煡 - notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_TRANSPORT); - return false; - } - return false; - } - return true; - } - +// public boolean shuttleOutExecuteStep1(WrkMast wrkMast) { +// //101.鐢熸垚鍑哄簱浠诲姟 => 102.灏忚溅鎼繍涓� +// if (wrkMast.getWrkSts() == WrkStsType.NEW_OUTBOUND.sts) { +// Integer liftNo = wrkMast.getLiftNo(); +// if (liftNo == null) { +// //閫氳繃杈撻�佺嚎绔欏彿鑾峰彇鎻愬崌鏈哄彿 +// liftNo = ForkLiftUtils.getConveyorBindLiftNo(wrkMast.getStaNo()); +// if (liftNo == null) { +// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾湭鎵惧埌鍖归厤鐨勬彁鍗囨満", wrkMast.getWrkNo()); +// return false; +// } +// +// //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 +// WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftNo); +// if (liftWrkMast != null) { +// if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚� +// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftNo); +// return false; +// } +// } +// +// wrkMast.setLiftNo(liftNo); +// wrkMast.setModiTime(new Date()); +// wrkMastService.updateById(wrkMast); +// return false; +// } +// +// ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo); +// if (forkLiftThread == null) { +// return false; +// } +// ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); +// if (forkLiftProtocol == null) { +// return false; +// } +// +// //鍒ゆ柇鎻愬崌鏈烘槸鍚﹀浜庡嚭搴撴ā寮� +// if (!forkLiftProtocol.getIOModeType().equals(ForkLiftIoModeType.OUT)) { +// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屾彁鍗囨満涓嶅浜庡嚭搴撴ā寮忥紝绂佹鍑哄簱", wrkMast.getWrkNo()); +// return false; +// } +// +// //鑾峰彇婧愮珯 +// ForkLiftStaProtocol liftSta = ForkLiftUtils.getLiftStaByLev(liftNo, Utils.getLev(wrkMast.getSourceLocNo())); +// if (liftSta == null) { +// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岀己灏戠珯鐐逛俊鎭紝绂佹娲惧彂", wrkMast.getWrkNo()); +// return false; +// } +// +// if (liftSta.getHasCar()) { +// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣瀛樺湪灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftSta.getStaNo()); +// return false; +// } +// +// if (liftSta.getHasTray()) { +// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}绔欑偣鏈夋墭鐩橈紝绂佹娲惧彂", wrkMast.getWrkNo(), liftSta.getStaNo()); +// return false; +// } +// +// if (wrkMast.getShuttleNo() == null) {//娌℃湁缁戝畾灏忚溅锛岃繘琛岃皟搴� +// //寮哄埗棰勭暀涓�鍙板皬杞︾粰鍏ュ簱浠诲姟 +// int lev = Utils.getLev(wrkMast.getSourceLocNo()); +// //鑾峰彇褰撳墠妤煎眰鏈夊嚑鍙板彲鐢ㄥ皬杞� +// int shuttleCount = shuttleDispatchUtils.getShuttleCountByLev(lev); +// if (shuttleCount >= 2) {//鍙湁鍙敤灏忚溅鏁伴噺澶т簬2锛屾墠杩涜鍏ュ簱浠诲姟棰勭暀灏忚溅 +// int shuttleWrkInObligateCount = 1;//棰勭暀灏忚溅鏁伴噺 +// Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "shuttleWrkInObligateCount").eq("status", 1)); +// if (config != null) { +// shuttleWrkInObligateCount = Integer.parseInt(config.getValue()); +// } +// //鍙敤鍑哄簱灏忚溅鏁伴噺(缁欏叆搴撲换鍔¢鐣欎竴鍙拌溅) +// int useShuttleCount = shuttleCount - shuttleWrkInObligateCount; +// //鏌ヨ妤煎眰宸插垎閰嶈溅杈嗙殑鍑哄簱浠诲姟鏁伴噺 +// List<WrkMast> wrkMasts = wrkMastService.selectShuttleOutWrkByLev(lev); +// if (wrkMasts.size() >= useShuttleCount) { +// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛屽綋鍓嶆ゼ灞傚彲鐢ㄥ皬杞}鍙帮紝鍑哄簱浠诲姟宸插垎閰峽}鍙帮紝绯荤粺绛夊緟涓��", wrkMast.getWrkNo(), useShuttleCount, wrkMasts.size()); +// return false; +// } +// } +// boolean result = shuttleDispatchUtils.searchDispatchShuttle(wrkMast.getWrkNo(), null, wrkMast.getSourceLocNo(), null);//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐� +// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛岃皟搴﹀皬杞}绯荤粺绛夊緟涓��", wrkMast.getWrkNo(), result ? "鎴愬姛" : "澶辫触"); +// return false; +// } +// +// //鑾峰彇鍥涘悜绌挎杞︾嚎绋� +// ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); +// if (shuttleThread == null) { +// return false; +// } +// ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); +// if (shuttleProtocol == null) { +// return false; +// } +// if (!shuttleThread.isIdle()) { +// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屽繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); +// return false; +// } +// +// //鍒ゆ柇灏忚溅鏄惁鍒拌揪璐х墿搴撲綅 +// if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) { +// //灏忚溅涓嶅湪杈撻�佺珯鐐逛綅缃� +// shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐� +// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛屾湭鍒拌揪杈撻�佺珯鐐癸紝绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); +// return false; +// } +// +// ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); +// assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙� +// assignCommand.setTaskMode(ShuttleTaskModeType.TRANSPORT.id);//灏忚溅绉诲簱浠诲姟 +// assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙� +// assignCommand.setAuto(true);//鑷姩妯″紡 +// +// //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠� +// List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(wrkMast.getSourceLocNo(), liftSta.getLocNo(), NavigationMapType.DFX.id, assignCommand, shuttleThread); +// if (commands == null) { +// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); +// return false; +// } +// +// List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true); +// if (liftCommand == null) { +// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇椤跺崌鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); +// return false; +// } +// +// List<ShuttleCommand> liftCommand2 = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, false); +// if (liftCommand2 == null) { +// News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}灏忚溅鑾峰彇涓嬮檷鍛戒护澶辫触", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); +// return false; +// } +// +// commands.add(0, liftCommand.get(0)); +// commands.add(liftCommand2.get(0)); +// assignCommand.setCommands(commands); +// +// wrkMast.setWrkSts(WrkStsType.OUTBOUND_SHUTTLE_RUN.sts);//灏忚溅鎼繍涓� 101.鐢熸垚鍑哄簱浠诲姟 ==> 102.灏忚溅鎼繍涓� +// wrkMast.setSourceStaNo(liftSta.getStaNo()); +// wrkMast.setModiTime(new Date()); +// wrkMast.setSystemMsg("");//娓呯┖娑堟伅 +// if (wrkMastService.updateById(wrkMast)) { +// //涓嬪彂浠诲姟 +// shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); +// //瑙﹀彂閫氱煡 +// notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_TRANSPORT); +// return false; +// } +// return false; +// } +// return true; +// } public synchronized void liftInExecute() { try { List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("wrk_sts", WrkStsType.NEW_INBOUND.sts, WrkStsType.INBOUND_DEVICE_RUN.sts, WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts).in("source_sta_no", 1012, 1022)); @@ -792,10 +868,20 @@ News.info("{}浠诲姟锛寋}绔欑偣锛屾墭鐩樼爜涓嶅尮閰嶏紝绔欑偣鎵樼洏鐮侊細{}锛屼换鍔℃墭鐩樼爜锛歿}", wrkMast.getWrkNo(), staProtocol.getSiteId(), staProtocol.getBarcode(), wrkMast.getBarcode()); return false; } + //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 + WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(1, wrkMast.getWrkNo(), wrkMast.getMainWrkNo()); + if (liftWrkMast != null) { + if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚� + News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), 1); + return false; + } + } short staNo = 1012; if (wrkMast.getSourceStaNo() == 1022) { staNo = 1023; + } else if (wrkMast.getSourceStaNo() == 1031 || wrkMast.getSourceStaNo() == 1032) { + staNo = 1032; } staProtocol = staProtocol.clone(); @@ -834,7 +920,7 @@ } //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満) - WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftProtocol.getLiftNo()); + WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(liftProtocol.getLiftNo(), wrkMast.getWrkNo(), wrkMast.getMainWrkNo()); if (liftWrkMast != null) { News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� @@ -878,19 +964,48 @@ News.info("{}浠诲姟锛寋}绔欑偣锛屾棤鎵樼洏", wrkMast.getWrkNo(), staProtocol.getSiteId()); return false; } + if (sourceStaNo == 1023) { + if (staProtocol.getFinishWorkNo().intValue() != wrkMast.getWrkNo()) { + News.info("{}浠诲姟锛寋}绔欑偣锛屼换鍔″彿涓嶄竴鑷�", wrkMast.getWrkNo(), staProtocol.getSiteId()); + return false; + } + if (!station.get(1022).getBarcode().equals(wrkMast.getBarcode())) { + News.info("{}浠诲姟锛寋}绔欑偣锛屾墭鐩樼爜涓嶅尮閰嶏紝绔欑偣鎵樼洏鐮侊細{}锛屼换鍔℃墭鐩樼爜锛歿}", wrkMast.getWrkNo(), staProtocol.getSiteId(), staProtocol.getBarcode(), wrkMast.getBarcode()); + return false; + } + } else { + if (staProtocol.getWorkNo().intValue() != wrkMast.getWrkNo()) { + News.info("{}浠诲姟锛寋}绔欑偣锛屼换鍔″彿涓嶄竴鑷�", wrkMast.getWrkNo(), staProtocol.getSiteId()); + return false; + } + if (!staProtocol.getBarcode().equals(wrkMast.getBarcode())) { + News.info("{}浠诲姟锛寋}绔欑偣锛屾墭鐩樼爜涓嶅尮閰嶏紝绔欑偣鎵樼洏鐮侊細{}锛屼换鍔℃墭鐩樼爜锛歿}", wrkMast.getWrkNo(), staProtocol.getSiteId(), staProtocol.getBarcode(), wrkMast.getBarcode()); + return false; + } + } - if (staProtocol.getWorkNo().intValue() != wrkMast.getWrkNo()) { - News.info("{}浠诲姟锛寋}绔欑偣锛屼换鍔″彿涓嶄竴鑷�", wrkMast.getWrkNo(), staProtocol.getSiteId()); + String locNo = "0200305"; + if (wrkMast.getSourceStaNo() == 1012) { + locNo = "0200301"; + } else if (wrkMast.getSourceStaNo() == 1032 || wrkMast.getSourceStaNo() == 1031) { + locNo = "0200308"; + } + boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttleS(wrkMast.getWrkNo(), locNo, wrkMast.getLocNo(), "TRANSPORT_LIFT"); + if (!dispatchShuttle) { + News.info("{}浠诲姟锛岃皟搴﹀皬杞﹀け璐�", wrkMast.getWrkNo()); return false; } - if (!staProtocol.getBarcode().equals(wrkMast.getBarcode())) { - News.info("{}浠诲姟锛寋}绔欑偣锛屾墭鐩樼爜涓嶅尮閰嶏紝绔欑偣鎵樼洏鐮侊細{}锛屼换鍔℃墭鐩樼爜锛歿}", wrkMast.getWrkNo(), staProtocol.getSiteId(), staProtocol.getBarcode(), wrkMast.getBarcode()); - return false; + int lev = 101; + if (wrkMast.getSourceStaNo() == 1021) { + //TODO + // lev = 105; + lev = 1021; + } else if (wrkMast.getSourceStaNo() == 1032 || wrkMast.getSourceStaNo() == 1031) { + lev = 1031; } - //鑾峰彇鎻愬崌鏈哄懡浠� - List<LiftCommand> liftCommands = liftThread.getPalletInCommand(wrkMast.getWrkNo(), wrkMast.getSourceStaNo(), 101); + List<LiftCommand> liftCommands = liftThread.getPalletInCommand(wrkMast.getWrkNo(), sourceStaNo, lev); LiftCommand liftCommand = liftCommands.get(0); int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿 @@ -950,15 +1065,19 @@ News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤鎵樼洏锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); return false; } - - boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttle(wrkMast.getWrkNo(), "0200301", wrkMast.getLocNo(), "TRANSPORT_LIFT"); - if (!dispatchShuttle) { - News.info("{}浠诲姟锛岃皟搴﹀皬杞﹀け璐�", wrkMast.getWrkNo()); - return false; - } +// String locNo = "0200305"; +// if (wrkMast.getStaNo() == 1011) { +// locNo = "0200301"; +// } +// boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttleS(wrkMast.getWrkNo(), locNo, wrkMast.getLocNo(), "TRANSPORT_LIFT"); +// if (!dispatchShuttle) { +// News.info("{}浠诲姟锛岃皟搴﹀皬杞﹀け璐�", wrkMast.getWrkNo()); +// return false; +// } wrkMast.setWrkSts(WrkStsType.INBOUND_SHUTTLE_RUN.sts); - wrkMast.setLiftNo(null); + // TODO 娴嬭瘯涓彂鐜颁笉鑳借В绂侊紝鍥犱负鎻愬崌鏈洪噷瀛樺湪鎵樼洏锛屽氨涓嶈兘瑙g锛屼笉鐒跺彟涓�杈嗗皬杞﹀彲鑳戒細杩戞彁鍗囨満 + //wrkMast.setLiftNo(null); wrkMast.setSystemMsg("");//娓呯┖娑堟伅 wrkMast.setModiTime(now); if (wrkMastService.updateById(wrkMast)) { @@ -1008,16 +1127,23 @@ return false; } - if (!staProtocol.isOutEnable()) { + if (!isOutEnable(devpThread, wrkMast.getStaNo())) { News.info("{}浠诲姟锛寋}绔欑偣锛屾病鏈夊彲鍑轰俊鍙�", wrkMast.getWrkNo(), staProtocol.getSiteId()); return false; } - - boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), "0200301", "TRANSPORT_LIFT"); + String locNo = "0200305"; + if (wrkMast.getStaNo() == 1011) { + locNo = "0200301"; + } else if (wrkMast.getStaNo() == 1032) { + locNo = "0200308"; + } + boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttleS(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), locNo, "TRANSPORT_LIFT"); if (!dispatchShuttle) { News.info("{}浠诲姟锛岃皟搴﹀皬杞﹀け璐�", wrkMast.getWrkNo()); return false; + } else { + News.info("{}浠诲姟锛屾棤鎻愬崌鏈哄璋冨害灏忚溅鎴愬姛", wrkMast.getWrkNo()); } wrkMast.setWrkSts(WrkStsType.OUTBOUND_SHUTTLE_RUN.sts); @@ -1050,7 +1176,7 @@ } //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満) - WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftProtocol.getLiftNo()); + WrkMast liftWrkMast = wrkMastService.selectLiftWrkMastAndWrkNo(liftProtocol.getLiftNo(), wrkMast.getWrkNo(), wrkMast.getMainWrkNo()); if (liftWrkMast != null) { News.taskInfo(wrkMast.getWrkNo(), "{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� @@ -1214,6 +1340,7 @@ notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_POWER_COMPLETE);//瑙﹀彂閫氱煡 } else if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_NO_LIFT_11.sts) { wrkMast.setWrkSts(WrkStsType.MOVE_IN_NO_LIFT_12.sts); + wrkMast.setLiftNo(null); shuttleThread.setSyncTaskNo(0); notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_POWER_COMPLETE);//瑙﹀彂閫氱煡 } else if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_NO_LIFT_13.sts) { @@ -1226,6 +1353,7 @@ notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_POWER_COMPLETE);//瑙﹀彂閫氱煡 } else if (wrkMast.getWrkSts() == WrkStsType.MOVE_OUT_NO_LIFT_10.sts) { wrkMast.setWrkSts(WrkStsType.MOVE_OUT_NO_LIFT_11.sts); + wrkMast.setLiftNo(null); shuttleThread.setSyncTaskNo(0); notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_POWER_COMPLETE);//瑙﹀彂閫氱煡 } else if (wrkMast.getWrkSts() == WrkStsType.MOVE_OUT_NO_LIFT_8.sts) { @@ -1444,7 +1572,6 @@ if (wrkMast.getWrkSts() == WrkStsType.INBOUND_LIFT_RUN.sts) { //3.鎻愬崌鏈烘惉杩愪腑 ==> 4.鎻愬崌鏈烘惉杩愬畬鎴� wrkMast.setWrkSts(WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts); - wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� } else if (wrkMast.getWrkSts() == WrkStsType.OUTBOUND_LIFT_RUN.sts) { //104.鎻愬崌鏈烘惉杩愪腑 ==> 109.鍑哄簱瀹屾垚 wrkMast.setWrkSts(WrkStsType.COMPLETE_OUTBOUND.sts); @@ -1500,7 +1627,7 @@ Map<Integer, StaProtocol> station = devpThread.getStation(); WrkMast wrkMast = null; for (StaProtocol staProtocol : station.values()) { - if (staProtocol.getSiteId() == 1013 || staProtocol.getSiteId() == 1014) { + if (staProtocol.getSiteId() == 1013 || staProtocol.getSiteId() == 1024) { wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", staProtocol.getFinishWorkNo()).eq("wrk_sts", WrkStsType.OUTBOUND_DEVP_RUN.sts)); if (wrkMast != null) { wrkMast.setWrkSts(WrkStsType.COMPLETE_OUTBOUND.sts); @@ -2037,4 +2164,31 @@ } + /** + * 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁� + */ + public synchronized void ioConvert() { + try { + // 鏍规嵁杈撻�佺嚎plc閬嶅巻 + FyDevpThread devpThread = (FyDevpThread) SlaveConnection.get(SlaveType.Devp, 1); + WrkMast pakout = wrkMastService.selectWorkingPakout(1032); + if (pakout != null) { + if (devpThread.ioModeOf2_5 != IoModeType.PAKOUT_MODE) { + // 鍑哄簱鍒囨崲涓� + WrkMast pakin = wrkMastService.selectWorkingPakin(1032); + if (pakin == null && !devpThread.getStation().get(1031).isLoading() + && !devpThread.getStation().get(1032).isLoading()) { + // 鍑哄簱妯″紡 + devpThread.ioModeOf2_5 = IoModeType.PAKOUT_MODE; + } + } + } else { + // 鍏ュ簱妯″紡 + devpThread.ioModeOf2_5 = IoModeType.PAKIN_MODE; + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } -- Gitblit v1.9.1