From 0ac76f7d8101903e1d050116f7d3835ce1303dfa Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期一, 06 一月 2025 17:00:37 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 4692 +++++++++++++++++++++++------------------------------------ 1 files changed, 1,821 insertions(+), 2,871 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 d44fec1..bbf300e 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -1,9 +1,6 @@ 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.entity.*; import com.zy.asrs.mapper.*; import com.zy.asrs.service.*; @@ -12,24 +9,22 @@ import com.zy.common.model.enums.NavigationMapType; import com.zy.common.service.CommonService; import com.zy.common.utils.*; -import com.zy.core.DevpThread; import com.zy.core.News; -import com.zy.core.cache.MessageQueue; +import com.zy.core.action.ForkLiftAction; +import com.zy.core.action.ShuttleAction; import com.zy.core.cache.SlaveConnection; +import com.zy.core.dispatcher.ShuttleDispatchUtils; import com.zy.core.enums.*; import com.zy.core.model.*; import com.zy.core.model.command.*; import com.zy.core.model.protocol.*; import com.zy.core.properties.SlaveProperties; import com.zy.core.thread.*; -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.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.transaction.interceptor.TransactionAspectSupport; import java.util.*; @@ -46,8 +41,6 @@ @Autowired private SlaveProperties slaveProperties; @Autowired - private WrkMastMapper wrkMastMapper; - @Autowired private WrkMastService wrkMastService; @Autowired private LocMastService locMastService; @@ -62,11 +55,7 @@ @Autowired private BasShuttleErrService basShuttleErrService; @Autowired - private WrkChargeService wrkChargeService; - @Autowired private CommonService commonService; - @Autowired - private WrkChargeMapper wrkChargeMapper; @Autowired private BasMapService basMapService; @Autowired @@ -85,673 +74,447 @@ private NavigateMapUtils navigateMapUtils; @Autowired private NavigateMapData navigateMapData; + @Autowired + private NavigateUtils navigateUtils; + @Autowired + private ShuttleOperaUtils shuttleOperaUtils; + @Autowired + private ShuttleAction shuttleAction; + @Autowired + private ForkLiftAction forkLiftAction; - /** - * 缁勬墭 - * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2 - */ - public void generateStoreWrkFile() { - try { - // 鏍规嵁杈撻�佺嚎plc閬嶅巻 - for (DevpSlave devp : slaveProperties.getDevp()) { - // 閬嶅巻鍏ュ簱鍙� - for (DevpSlave.Sta inSta : devp.getInSta()) { - // 鑾峰彇鍏ュ簱绔欎俊鎭� - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); - StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); - if (staProtocol == null) { - continue; - } else { - 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) { - MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg)); - } - continue; - } - - // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 - if (staProtocol.isAutoing() && staProtocol.isLoading() - && staProtocol.isInEnable() - && !staProtocol.isEmptyMk() && (workNo == 0 || (workNo >= 9990 && workNo <= 9999)) - ) { - - // 鑾峰彇鏉$爜鎵弿浠俊鎭� - BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode()); - if (barcodeThread == null) { - continue; - } - String barcode = barcodeThread.getBarcode(); - if (!Cools.isEmpty(barcode)) { -// News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode); - if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode) || "00000000".equals(barcode)) { -// staProtocol.setWorkNo((short) 32002); -// staProtocol.setStaNo(inSta.getBackSta().shortValue()); -// devpThread.setPakMk(staProtocol.getSiteId(), false); -// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); - - // led 寮傚父鏄剧ず - LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); - if (ledThread != null) { - String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯"; - MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); - } - continue; - } - } else { -// staProtocol.setWorkNo((short) 32002); -// staProtocol.setStaNo(inSta.getBackSta().shortValue()); -// devpThread.setPakMk(staProtocol.getSiteId(), false); -// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); - +// /** +// * 缁勬墭 +// * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2 +// */ +// public void generateStoreWrkFile() { +// try { +// // 鏍规嵁杈撻�佺嚎plc閬嶅巻 +// for (DevpSlave devp : slaveProperties.getDevp()) { +// // 閬嶅巻鍏ュ簱鍙� +// for (DevpSlave.Sta inSta : devp.getInSta()) { +// // 鑾峰彇鍏ュ簱绔欎俊鎭� +// DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); +// StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); +// if (staProtocol == null) { +// continue; +// } else { +// 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) { -// String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯"; -// MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); +// MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg)); // } - continue; - } - - // 杩囨护鐩樼偣/鎷f枡/骞舵澘浠诲姟 - WrkMast wrkMast1 = wrkMastMapper.selectPickStepByBarcode(barcode); - if (null != wrkMast1) { - continue; - } - - // 鍒ゆ柇閲嶅宸ヤ綔妗� - WrkMast wrkMast2 = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode); - if (wrkMast2 != null) { - News.error("宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast2.getWrkNo()); - continue; - } - - try { - LocTypeDto locTypeDto = new LocTypeDto(staProtocol); - SearchLocParam param = new SearchLocParam(); - param.setBarcode(barcode); - param.setIoType(1); - param.setSourceStaNo(inSta.getStaNo()); - param.setLocType1(locTypeDto.getLocType1()); - String response = new HttpHandler.Builder() - .setUri(wmsUrl) - .setPath("/rpc/pakin/loc/v2") - .setJson(JSON.toJSONString(param)) - .build() - .doPost(); - JSONObject jsonObject = JSON.parseObject(response); - LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); - Integer code = jsonObject.getInteger("code"); - if (code.equals(200)) { - StartupDto dto = jsonObject.getObject("data", StartupDto.class); - // plc 澶勭悊 - barcodeThread.setBarcode(""); -// staProtocol.setWorkNo(dto.getWorkNo().shortValue()); -// staProtocol.setStaNo(dto.getStaNo().shortValue()); -// devpThread.setPakMk(staProtocol.getSiteId(), false); +// continue; +// } // -// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); -// if (!result) { -// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); -// } - - // 鍒ゆ柇閲嶅宸ヤ綔妗� - WrkMast wrkMast = wrkMastMapper.selectPakInStep11(inSta.getStaNo()); - if (wrkMast == null) { - continue; - } - - // 鏇存柊宸ヤ綔涓绘。 - wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細2.璁惧涓婅蛋 - wrkMast.setModiTime(new Date()); - if (wrkMastMapper.updateById(wrkMast) == 0) { - News.error("鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo()); - } - - } else if (code == 500) { - if (ledThread != null) { - String errorMsg = jsonObject.getString("msg"); - if (!Cools.isEmpty(errorMsg)) { - MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); - ledThread.setLedMk(false); - } - } - News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v2", JSON.toJSONString(param), response); - } else if (code == 700) { -// staProtocol.setWorkNo((short) 32002); -// staProtocol.setRollback102(1);//102绔欏洖閫�淇″彿 -// devpThread.setPakMk(staProtocol.getSiteId(), false); -// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(5, staProtocol)); - - // led 寮傚父鏄剧ず - if (ledThread != null) { - String errorMsg = barcode + "鎵樼洏璇嗗埆寮傚父锛岃鍏堣繘琛岀粍鎵橈紒"; - MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); - ledThread.setLedMk(false); - } - } - } catch (Exception e) { - e.printStackTrace(); - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 鎷f枡銆佸苟鏉垮啀鍏ュ簱 - */ - @Transactional - public synchronized void stnToCrnStnPick(){ - try { - for (DevpSlave devp : slaveProperties.getDevp()) { - // 閬嶅巻鎷f枡鍏ュ簱鍙� - for (DevpSlave.Sta pickSta : devp.getPickInSta()) { - // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭� - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); - StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo()); - if (staProtocol == null) { - continue; - } else { - staProtocol = staProtocol.clone(); - } - if (staProtocol.isAutoing() - && staProtocol.isLoading() - && staProtocol.isInEnable() -// && (staProtocol.getWorkNo() > 0) - && staProtocol.isPakMk()) { - - // 鑾峰彇鏉$爜鎵弿浠俊鎭� - BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode()); - if (barcodeThread == null) { - continue; - } - String barcode = barcodeThread.getBarcode(); - if (Cools.isEmpty(barcode)) { - continue; - } - if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) { - continue; - } - - WrkMast wrkMast = wrkMastMapper.selectPickStepByBarcode(barcode); - if (wrkMast == null) {//鎵句笉鍒板伐浣滄。 - continue; - } - - if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104) - || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) { - continue; - } - -// //*********************鍚屽簱浣嶇粍鏍¢獙********************* -// boolean flag = false; -// String th = ""; -// List<String> innerLoc = Utils.getGroupInnerLoc(wrkMast.getSourceLocNo()); -// for (String loc : innerLoc) { -// LocMast locMast = locMastService.selectById(loc); -// if (locMast == null) { +// // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 +// if (staProtocol.isAutoing() && staProtocol.isLoading() +// && staProtocol.isInEnable() +// && !staProtocol.isEmptyMk() && (workNo == 0 || (workNo >= 9990 && workNo <= 9999)) +// ) { +// +// // 鑾峰彇鏉$爜鎵弿浠俊鎭� +// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode()); +// if (barcodeThread == null) { +// continue; +// } +// String barcode = barcodeThread.getBarcode(); +// if (!Cools.isEmpty(barcode)) { +//// News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode); +// if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode) || "00000000".equals(barcode)) { +//// staProtocol.setWorkNo((short) 32002); +//// staProtocol.setStaNo(inSta.getBackSta().shortValue()); +//// devpThread.setPakMk(staProtocol.getSiteId(), false); +//// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); +// +// // led 寮傚父鏄剧ず +// LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); +// if (ledThread != null) { +// String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯"; +// MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); +// } // continue; // } +// } else { +//// staProtocol.setWorkNo((short) 32002); +//// staProtocol.setStaNo(inSta.getBackSta().shortValue()); +//// devpThread.setPakMk(staProtocol.getSiteId(), false); +//// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); // -// if (!locMast.getLocSts().equals("F")) { -// flag = true; -// th = loc + "搴撲綅瀛樺湪鏈洖搴撲换鍔�"; -// break; +//// // led 寮傚父鏄剧ず +//// LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); +//// if (ledThread != null) { +//// String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯"; +//// MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); +//// } +// continue; +// } +// +// // 杩囨护鐩樼偣/鎷f枡/骞舵澘浠诲姟 +// WrkMast wrkMast1 = wrkMastMapper.selectPickStepByBarcode(barcode); +// if (null != wrkMast1) { +// continue; +// } +// +// // 鍒ゆ柇閲嶅宸ヤ綔妗� +// WrkMast wrkMast2 = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode); +// if (wrkMast2 != null) { +// News.error("宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast2.getWrkNo()); +// continue; +// } +// +// try { +// LocTypeDto locTypeDto = new LocTypeDto(staProtocol); +// SearchLocParam param = new SearchLocParam(); +// param.setBarcode(barcode); +// param.setIoType(1); +// param.setSourceStaNo(inSta.getStaNo()); +// param.setLocType1(locTypeDto.getLocType1()); +// String response = new HttpHandler.Builder() +// .setUri(wmsUrl) +// .setPath("/rpc/pakin/loc/v2") +// .setJson(JSON.toJSONString(param)) +// .build() +// .doPost(); +// JSONObject jsonObject = JSON.parseObject(response); +// LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); +// Integer code = jsonObject.getInteger("code"); +// if (code.equals(200)) { +// StartupDto dto = jsonObject.getObject("data", StartupDto.class); +// // plc 澶勭悊 +// barcodeThread.setBarcode(""); +//// staProtocol.setWorkNo(dto.getWorkNo().shortValue()); +//// staProtocol.setStaNo(dto.getStaNo().shortValue()); +//// devpThread.setPakMk(staProtocol.getSiteId(), false); +//// +//// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); +//// if (!result) { +//// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); +//// } +// +// // 鍒ゆ柇閲嶅宸ヤ綔妗� +// WrkMast wrkMast = wrkMastMapper.selectPakInStep11(inSta.getStaNo()); +// if (wrkMast == null) { +// continue; +// } +// +// // 鏇存柊宸ヤ綔涓绘。 +// wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細2.璁惧涓婅蛋 +// wrkMast.setModiTime(new Date()); +// if (wrkMastMapper.updateById(wrkMast) == 0) { +// News.error("鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo()); +// } +// +// } else if (code == 500) { +// if (ledThread != null) { +// String errorMsg = jsonObject.getString("msg"); +// if (!Cools.isEmpty(errorMsg)) { +// MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); +// ledThread.setLedMk(false); +// } +// } +// News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v2", JSON.toJSONString(param), response); +// } else if (code == 700) { +//// staProtocol.setWorkNo((short) 32002); +//// staProtocol.setRollback102(1);//102绔欏洖閫�淇″彿 +//// devpThread.setPakMk(staProtocol.getSiteId(), false); +//// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(5, staProtocol)); +// +// // led 寮傚父鏄剧ず +// if (ledThread != null) { +// String errorMsg = barcode + "鎵樼洏璇嗗埆寮傚父锛岃鍏堣繘琛岀粍鎵橈紒"; +// MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); +// ledThread.setLedMk(false); +// } // } +// } catch (Exception e) { +// e.printStackTrace(); +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); // } -// if (flag) { -// News.info(th); -// continue; -// } -// //*********************鍚屽簱浣嶇粍鏍¢獙********************* - -// // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� -// if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { -// News.info(wrkMast.getWrkNo() + "淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); -// continue; -// } - - try { - LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());//婧愬簱浣� - SearchLocParam param = new SearchLocParam(); - param.setWrkNo(wrkMast.getWrkNo()); - param.setBarcode(wrkMast.getBarcode()); - param.setIoType(wrkMast.getIoType()); - param.setSourceStaNo(pickSta.getStaNo()); - param.setLiftNo(pickSta.getLiftNo()); - param.setLocType1(locMast.getLocType1()); - String response = new HttpHandler.Builder() - .setUri(wmsUrl) - .setPath("/rpc/pakin/loc/v2") - .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); - -// //鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯 -// LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(dto.getLocNo())); -// if (liftStaProtocol == null) { -// News.info(wrkMast.getWrkNo() + "鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯澶辫触"); -// continue; -// } -// -// // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� -// wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54 -// wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 -// wrkMast.setSourceStaNo(dto.getSourceStaNo()); // 婧愮珯 -// wrkMast.setStaNo(liftStaProtocol.getStaNo());//鐩爣绔� -// wrkMast.setLocNo(dto.getLocNo()); // 鐩爣搴撲綅 -// wrkMast.setShuttleNo(null); // 绌挎杞︽竻绌� -// wrkMast.setLiftNo(null);// 鎻愬崌鏈烘竻绌� -// wrkMast.setModiTime(new Date()); -// if (wrkMastMapper.updateById(wrkMast) == 0) { -// News.info(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); -// continue; -// } - } else if (code == 500) { - News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v2", JSON.toJSONString(param), response); - } - } catch (Exception e) { - e.printStackTrace(); - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } - } - } - - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 鐩樼偣鍐嶅叆搴� - */ - @Transactional - public synchronized void stnToCrnStnPlate(){ - try { - for (DevpSlave devp : slaveProperties.getDevp()) { - // 閬嶅巻鎷f枡鍏ュ簱鍙� - for (DevpSlave.Sta pickSta : devp.getPickInSta()) { - // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭� - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); - StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo()); - if (staProtocol == null) { - continue; - } else { - staProtocol = staProtocol.clone(); - } - if (staProtocol.isAutoing() - && staProtocol.isLoading() - && staProtocol.isInEnable() -// && (staProtocol.getWorkNo() > 0) - && staProtocol.isPakMk()) { - - // 鑾峰彇鏉$爜鎵弿浠俊鎭� - BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode()); - if (barcodeThread == null) { - continue; - } - String barcode = barcodeThread.getBarcode(); - if (Cools.isEmpty(barcode)) { - continue; - } - if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) { - continue; - } - WrkMast wrkMast = wrkMastMapper.selectByBarcode(barcode); - if (wrkMast == null) {//鎵句笉鍒板伐浣滄。 - continue; - } - - if ((wrkMast.getIoType() != 107) - || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) { - continue; - } - -// // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� -// if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { -// News.info(wrkMast.getWrkNo() + "淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); -// continue; -// } - - //鐩樼偣鎵炬柊搴撲綅 - try { - LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());//婧愬簱浣� - SearchLocParam param = new SearchLocParam(); - param.setWrkNo(wrkMast.getWrkNo()); - param.setBarcode(wrkMast.getBarcode()); - param.setIoType(107);//鐩樼偣 - param.setSourceStaNo(pickSta.getStaNo()); - param.setLiftNo(pickSta.getLiftNo()); - param.setLocType1(locMast.getLocType1()); - String response = new HttpHandler.Builder() - .setUri(wmsUrl) - .setPath("/rpc/pakin/loc/v2") - .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); - -// //鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯 -// LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(dto.getLocNo())); -// if (liftStaProtocol == null) { -// News.info(wrkMast.getWrkNo() + "鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯澶辫触"); -// continue; -// } -// -// // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� -// wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 107->57 -// wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 -// wrkMast.setSourceStaNo(dto.getSourceStaNo()); // 婧愮珯 -// wrkMast.setStaNo(liftStaProtocol.getStaNo());//鐩爣绔� -// wrkMast.setLocNo(dto.getLocNo()); // 鐩爣搴撲綅 -// wrkMast.setShuttleNo(null); // 绌挎杞︽竻绌� -// wrkMast.setLiftNo(null);// 鎻愬崌鏈烘竻绌� -// wrkMast.setModiTime(new Date()); -// if (wrkMastMapper.updateById(wrkMast) == 0) { -// News.info(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); -// continue; -// } - -// staProtocol.setStaNo(dto.getSourceStaNo().shortValue());//鍐欏叆鐩爣绔� -// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); - - } else if (code == 500) { - News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v2", JSON.toJSONString(param), response); - } - } catch (Exception e) { - e.printStackTrace(); - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } - - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } +// } +// } +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } // /** -// * 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱 +// * 鎷f枡銆佸苟鏉垮啀鍏ュ簱 // */ // @Transactional // public synchronized void stnToCrnStnPick(){ -// for (DevpSlave devp : slaveProperties.getDevp()) { -// // 閬嶅巻鎷f枡鍏ュ簱鍙� -// for (DevpSlave.Sta pickSta : devp.getPickInSta()) { -// -// // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭� -// DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); -// StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo()); -// if (staProtocol == null) { -// continue; -// } else { -// staProtocol = staProtocol.clone(); -// } -// if (staProtocol.isAutoing() -// && staProtocol.isLoading() -//// && (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() < 9999) -//// && staProtocol.getStaNo().equals(staProtocol.getSiteId().shortValue()) -// && staProtocol.isPakMk()){ -// -// // 鑾峰彇鏉$爜鎵弿浠俊鎭� -// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode()); -// if (barcodeThread == null) { +// try { +// for (DevpSlave devp : slaveProperties.getDevp()) { +// // 閬嶅巻鎷f枡鍏ュ簱鍙� +// for (DevpSlave.Sta pickSta : devp.getPickInSta()) { +// // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭� +// DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); +// StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo()); +// if (staProtocol == null) { // continue; +// } else { +// staProtocol = staProtocol.clone(); // } -// String barcode = barcodeThread.getBarcode(); +// if (staProtocol.isAutoing() +// && staProtocol.isLoading() +// && staProtocol.isInEnable() +//// && (staProtocol.getWorkNo() > 0) +// && staProtocol.isPakMk()) { // -// WrkMast wrkMast = null; -// wrkMast = wrkMastMapper.selectPickStepByBarcode(barcode); -// if (wrkMast == null) { -// continue; -// } -//// if (staProtocol.getWorkNo() == 9996) { -//// String barcode = barcodeThread.getBarcode(); -//// if(!Cools.isEmpty(barcode)) { -//// News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode); -//// if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) { -//// staProtocol.setWorkNo((short) 32002); -//// staProtocol.setStaNo(pickSta.getBackSta().shortValue()); -//// devpThread.setPakMk(staProtocol.getSiteId(), false); -//// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); -//// -//// // led 寮傚父鏄剧ず -//// LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); -//// if (ledThread != null) { -//// String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯"; -//// MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); -//// } +// // 鑾峰彇鏉$爜鎵弿浠俊鎭� +// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode()); +// if (barcodeThread == null) { +// continue; +// } +// String barcode = barcodeThread.getBarcode(); +// if (Cools.isEmpty(barcode)) { +// continue; +// } +// if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) { +// continue; +// } +// +// WrkMast wrkMast = wrkMastMapper.selectPickStepByBarcode(barcode); +// if (wrkMast == null) {//鎵句笉鍒板伐浣滄。 +// continue; +// } +// +// if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104) +// || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) { +// continue; +// } +// +//// //*********************鍚屽簱浣嶇粍鏍¢獙********************* +//// boolean flag = false; +//// String th = ""; +//// List<String> innerLoc = Utils.getGroupInnerLoc(wrkMast.getSourceLocNo()); +//// for (String loc : innerLoc) { +//// LocMast locMast = locMastService.selectById(loc); +//// if (locMast == null) { //// continue; //// } -//// } else { -//// staProtocol.setWorkNo((short) 32002); -//// staProtocol.setStaNo(pickSta.getBackSta().shortValue()); -//// devpThread.setPakMk(staProtocol.getSiteId(), false); -//// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); //// -//// // led 寮傚父鏄剧ず -//// LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); -//// if (ledThread != null) { -//// String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯"; -//// MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); +//// if (!locMast.getLocSts().equals("F")) { +//// flag = true; +//// th = loc + "搴撲綅瀛樺湪鏈洖搴撲换鍔�"; +//// break; //// } +//// } +//// if (flag) { +//// News.info(th); //// continue; //// } -//// wrkMast = wrkMastMapper.selectPickStepByBarcode(barcode); -//// if (null == wrkMast) { -//// News.error("{}鏉$爜閿欒锛屾殏鏃犳嫞鏂欎换鍔★紒", barcode); +//// //*********************鍚屽簱浣嶇粍鏍¢獙********************* +// +//// // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� +//// if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { +//// News.info(wrkMast.getWrkNo() + "淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); +//// continue; //// } -//// } // -// if ((wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107) -// || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo()) ) { -// continue; -// } +// try { +// LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());//婧愬簱浣� +// SearchLocParam param = new SearchLocParam(); +// param.setWrkNo(wrkMast.getWrkNo()); +// param.setBarcode(wrkMast.getBarcode()); +// param.setIoType(wrkMast.getIoType()); +// param.setSourceStaNo(pickSta.getStaNo()); +// param.setLiftNo(pickSta.getLiftNo()); +// param.setLocType1(locMast.getLocType1()); +// String response = new HttpHandler.Builder() +// .setUri(wmsUrl) +// .setPath("/rpc/pakin/loc/v2") +// .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); // -// // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� -// if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { -// throw new CoolException(wrkMast.getWrkNo() + "淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); -// } -// -// String sourceLocNo = wrkMast.getSourceLocNo().trim(); -// LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(sourceLocNo));//鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯 -// if (liftStaProtocol == null) { -// continue; -// } -// -// // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� -// wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57 -// wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 -// wrkMast.setSourceStaNo(pickSta.getStaNo()); // 婧愮珯 -//// wrkMast.setStaNo(dto.getStaNo()); // 鐩爣绔� -//// wrkMast.setCrnNo(dto.getCrnNo()); -// wrkMast.setStaNo(liftStaProtocol.getStaNo());//鐩爣绔� -// wrkMast.setLocNo(sourceLocNo); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣� -// wrkMast.setShuttleNo(null); // 绌挎杞︽竻绌� -// wrkMast.setLiftNo(null);// 鎻愬崌鏈烘竻绌� -// 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暟鎹姸鎬佸け璐�"); -// } -// -// // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴� -// LocMast locMast = locMastService.selectById(sourceLocNo); -// locMast.setLocSts("Q"); -// locMast.setModiTime(new Date()); -// if (!locMastService.updateById(locMast)) { -// throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�"); -// } -// barcodeThread.setBarcode("");//娓呯悊鏉$爜 -// -//// 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); -//// -////// // 鑾峰彇鐩爣绔� -////// 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(); -//// LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(sourceLocNo));//鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯 -//// if (liftStaProtocol == null) { -//// continue; -//// } -//// -//// // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� -//// wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57 -//// wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 -//// wrkMast.setSourceStaNo(pickSta.getStaNo()); // 婧愮珯 -////// wrkMast.setStaNo(dto.getStaNo()); // 鐩爣绔� -////// wrkMast.setCrnNo(dto.getCrnNo()); -//// wrkMast.setStaNo(liftStaProtocol.getStaNo());//鐩爣绔� -//// wrkMast.setLocNo(sourceLocNo); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣� -//// wrkMast.setShuttleNo(null); // 绌挎杞︽竻绌� -//// wrkMast.setLiftNo(null);// 鎻愬崌鏈烘竻绌� -//// 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暟鎹姸鎬佸け璐�"); -//// } -//// -//// // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴� -//// LocMast locMast = locMastService.selectById(sourceLocNo); -//// locMast.setLocSts("Q"); -//// locMast.setModiTime(new Date()); -//// if (!locMastService.updateById(locMast)) { -//// throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�"); -//// } -//// -////// // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂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()); -////// } -//// -//// barcodeThread.setBarcode("");//娓呯悊鏉$爜 -//// -//// } 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)); +//// //鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯 +//// LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(dto.getLocNo())); +//// if (liftStaProtocol == null) { +//// News.info(wrkMast.getWrkNo() + "鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯澶辫触"); +//// continue; //// } -//// } -//// News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); -//// } else { -////// staProtocol.setWorkNo((short) 32002); -////// 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(); -//// } +//// // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� +//// wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54 +//// wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 +//// wrkMast.setSourceStaNo(dto.getSourceStaNo()); // 婧愮珯 +//// wrkMast.setStaNo(liftStaProtocol.getStaNo());//鐩爣绔� +//// wrkMast.setLocNo(dto.getLocNo()); // 鐩爣搴撲綅 +//// wrkMast.setShuttleNo(null); // 绌挎杞︽竻绌� +//// wrkMast.setLiftNo(null);// 鎻愬崌鏈烘竻绌� +//// wrkMast.setModiTime(new Date()); +//// if (wrkMastMapper.updateById(wrkMast) == 0) { +//// News.info(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); +//// continue; +//// } +// } else if (code == 500) { +// News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v2", JSON.toJSONString(param), response); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); +// } +// } +// } // +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } + +// /** +// * 鐩樼偣鍐嶅叆搴� +// */ +// @Transactional +// public synchronized void stnToCrnStnPlate(){ +// try { +// for (DevpSlave devp : slaveProperties.getDevp()) { +// // 閬嶅巻鎷f枡鍏ュ簱鍙� +// for (DevpSlave.Sta pickSta : devp.getPickInSta()) { +// // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭� +// DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); +// StaProtocol staProtocol = devpThread.getStation().get(pickSta.getStaNo()); +// if (staProtocol == null) { +// continue; +// } else { +// staProtocol = staProtocol.clone(); +// } +// if (staProtocol.isAutoing() +// && staProtocol.isLoading() +// && staProtocol.isInEnable() +//// && (staProtocol.getWorkNo() > 0) +// && staProtocol.isPakMk()) { +// +// // 鑾峰彇鏉$爜鎵弿浠俊鎭� +// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode()); +// if (barcodeThread == null) { +// continue; +// } +// String barcode = barcodeThread.getBarcode(); +// if (Cools.isEmpty(barcode)) { +// continue; +// } +// if ("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) { +// continue; +// } +// WrkMast wrkMast = wrkMastMapper.selectByBarcode(barcode); +// if (wrkMast == null) {//鎵句笉鍒板伐浣滄。 +// continue; +// } +// +// if ((wrkMast.getIoType() != 107) +// || Cools.isEmpty(wrkMast.getStaNo()) || Cools.isEmpty(wrkMast.getSourceStaNo())) { +// continue; +// } +// +//// // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� +//// if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { +//// News.info(wrkMast.getWrkNo() + "淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); +//// continue; +//// } +// +// //鐩樼偣鎵炬柊搴撲綅 +// try { +// LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo());//婧愬簱浣� +// SearchLocParam param = new SearchLocParam(); +// param.setWrkNo(wrkMast.getWrkNo()); +// param.setBarcode(wrkMast.getBarcode()); +// param.setIoType(107);//鐩樼偣 +// param.setSourceStaNo(pickSta.getStaNo()); +// param.setLiftNo(pickSta.getLiftNo()); +// param.setLocType1(locMast.getLocType1()); +// String response = new HttpHandler.Builder() +// .setUri(wmsUrl) +// .setPath("/rpc/pakin/loc/v2") +// .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); +// +//// //鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯 +//// LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(pickSta.getLiftNo(), Utils.getLev(dto.getLocNo())); +//// if (liftStaProtocol == null) { +//// News.info(wrkMast.getWrkNo() + "鑾峰彇鍥炲簱鎻愬崌鏈虹洰鏍囩珯澶辫触"); +//// continue; +//// } +//// +//// // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� +//// wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 107->57 +//// wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 +//// wrkMast.setSourceStaNo(dto.getSourceStaNo()); // 婧愮珯 +//// wrkMast.setStaNo(liftStaProtocol.getStaNo());//鐩爣绔� +//// wrkMast.setLocNo(dto.getLocNo()); // 鐩爣搴撲綅 +//// wrkMast.setShuttleNo(null); // 绌挎杞︽竻绌� +//// wrkMast.setLiftNo(null);// 鎻愬崌鏈烘竻绌� +//// wrkMast.setModiTime(new Date()); +//// if (wrkMastMapper.updateById(wrkMast) == 0) { +//// News.info(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); +//// continue; +//// } +// +//// staProtocol.setStaNo(dto.getSourceStaNo().shortValue());//鍐欏叆鐩爣绔� +//// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); +// +// } else if (code == 500) { +// News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v2", JSON.toJSONString(param), response); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); +// } +// +// } // } // } -// +// } catch (Exception e) { +// e.printStackTrace(); // } // } @@ -790,1349 +553,871 @@ } } - /** - * 浠巖edis涓噸鍚换鍔� - */ - public synchronized void restartTaskFromRedis() { - HashMap<Object, Object> map = redisUtil.getRedis(); - for (Object key : map.keySet()) { - if (key.toString().contains(RedisKeyType.LIFT.key)) {//鎻愬崌鏈轰换鍔� - LiftRedisCommand redisCommand = JSON.parseObject(map.get(key).toString(), LiftRedisCommand.class); - if (redisCommand == null) { - continue; - } - - Short liftNo = redisCommand.getLiftNo(); - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo.intValue()); - if (liftThread == null) { - continue; - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - continue; - } - if (!liftProtocol.isIdle()) { - continue; - } - - //鎻愬崌鏈哄浜庣┖闂茬姸鎬侊紝杩涜浠诲姟鐨勬仮澶� - liftProtocol.setTaskNo(redisCommand.getWrkNo());//灏嗘彁鍗囨満绾跨▼鍒嗛厤浠诲姟鍙� - liftProtocol.setProtocolStatus(LiftProtocolStatusType.WORKING);//宸ヤ綔鐘舵�� - - }else if(key.toString().contains(RedisKeyType.SHUTTLE.key)){//鍥涘悜绌挎杞︿换鍔� - ShuttleRedisCommand redisCommand = JSON.parseObject(map.get(key).toString(), ShuttleRedisCommand.class); - if (redisCommand == null) { - continue; - } - - Short shuttleNo = redisCommand.getShuttleNo(); - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo.intValue()); - if (shuttleThread == null) { - continue; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - continue; - } - if (!shuttleProtocol.isIdle()) { - continue; - } - - //鍥涘悜绌挎杞﹀浜庣┖闂茬姸鎬侊紝杩涜浠诲姟鐨勬仮澶� - shuttleProtocol.setTaskNo(redisCommand.getWrkNo().intValue());//灏嗗洓鍚戠┛姊溅绾跨▼鍒嗛厤浠诲姟鍙� - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WORKING);//宸ヤ綔鐘舵�� - } - } - - } - - /** - * 鍏ュ簱 ===>> 鍥涘悜绌挎杞﹀叆搴撲綔涓氫笅鍙� - */ - public synchronized void shuttleInExecute() { - try { - List<WrkMast> wrkMasts = wrkMastMapper.selectInStep4(); - for (WrkMast wrkMast : wrkMasts) { - //鑾峰彇婧愮珯 - BasDevp sourceBasDevp = basDevpService.selectById(wrkMast.getSourceStaNo()); - if (sourceBasDevp == null) { - continue;//绔欑偣涓嶅瓨鍦� - } - - //鑾峰彇鐩爣绔� - LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(sourceBasDevp.getLiftNo(), Utils.getLev(wrkMast.getLocNo())); - if (liftStaProtocol == null) { - continue;//绔欑偣涓嶅瓨鍦� - } - - // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢锛岃嚜鍔ㄣ�佺┖闂层�佹湁鐗� - if (!(liftStaProtocol.getModel() && !liftStaProtocol.getBusy() && liftStaProtocol.getHasTray())) { - News.info("{}浠诲姟锛岃緭閫佺珯鐐圭姸鎬佷笉婊¤冻鍏ュ簱銆傝緭閫佺珯鐐�:{}", wrkMast.getWrkNo(), JSON.toJSONString(liftStaProtocol)); - continue; - } - - boolean step1 = this.shuttleInExecuteStep1(wrkMast, liftStaProtocol);//灏忚溅鎼叆搴撲腑 - if (!step1) { - continue; - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } - // /** // * 鍏ュ簱 ===>> 鍥涘悜绌挎杞﹀叆搴撲綔涓氫笅鍙� // */ // public synchronized void shuttleInExecute() { -// // 鏍规嵁杈撻�佺嚎plc閬嶅巻 -// for (DevpSlave devp : slaveProperties.getDevp()) { -// // 閬嶅巻鍏ュ簱绔� -// for (DevpSlave.StaRack staRack : devp.getRackInStn()) { -// // 鑾峰彇鍏ュ簱绔欎俊鎭� -// DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); -// StaProtocol staProtocol = devpThread.getStation().get(staRack.getStaNo()); -// if (staProtocol == null) { -// continue; -// } else { -// staProtocol = staProtocol.clone(); -// } -// Short workNo = staProtocol.getWorkNo(); -// BasDevp basDevp = basDevpService.selectById(staProtocol.getSiteId()); -// if (basDevp == null) { -// continue;//绔欑偣淇℃伅涓嶅瓨鍦� +// try { +// List<WrkMast> wrkMasts = wrkMastMapper.selectInStep4(); +// for (WrkMast wrkMast : wrkMasts) { +// //鑾峰彇婧愮珯 +// BasDevp sourceBasDevp = basDevpService.selectById(wrkMast.getSourceStaNo()); +// if (sourceBasDevp == null) { +// continue;//绔欑偣涓嶅瓨鍦� // } // -// // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢锛岃嚜鍔ㄣ�佹湁鐗┿�佸洓鍚戠┛姊溅鍙彇淇″彿 -// if (!(staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isShuttleTakeEnable())) { +// //鑾峰彇鐩爣绔� +// LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(sourceBasDevp.getLiftNo(), Utils.getLev(wrkMast.getLocNo())); +// if (liftStaProtocol == null) { +// continue;//绔欑偣涓嶅瓨鍦� +// } +// +// // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢锛岃嚜鍔ㄣ�佺┖闂层�佹湁鐗� +// if (!(liftStaProtocol.getModel() && !liftStaProtocol.getBusy() && liftStaProtocol.getHasTray())) { +// News.info("{}浠诲姟锛岃緭閫佺珯鐐圭姸鎬佷笉婊¤冻鍏ュ簱銆傝緭閫佺珯鐐�:{}", wrkMast.getWrkNo(), JSON.toJSONString(liftStaProtocol)); // continue; // } // -// WrkMast wrkMast = wrkMastMapper.selectRackInStep4(workNo, staProtocol.getSiteId()); -// if (wrkMast == null) { -// continue; -// } -// -// boolean step1 = this.shuttleInExecuteStep1(wrkMast, basDevp);//灏忚溅鎼叆搴撲腑 +// boolean step1 = this.shuttleInExecuteStep1(wrkMast, liftStaProtocol);//灏忚溅鎼叆搴撲腑 // if (!step1) { // continue; // } -// // } +// } catch (Exception e) { +// e.printStackTrace(); // } -// // } - /** - * 鍏ュ簱-灏忚溅鎼叆搴撲腑 - * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false - * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue - */ - public boolean shuttleInExecuteStep1(WrkMast wrkMast, LiftStaProtocol liftStaProtocol) { - if (wrkMast.getWrkSts() == 4) { - if (wrkMast.getShuttleNo() == null) {//娌℃湁缁戝畾灏忚溅锛岃繘琛岃皟搴� - boolean result = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), liftStaProtocol.getLocNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄨ緭閫佺珯鐐硅繘琛屽彇璐� - News.info("{}浠诲姟锛岃皟搴﹀皬杞}绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), result ? "鎴愬姛" : "澶辫触"); - return false; - } +// /** +// * 鍏ュ簱-灏忚溅鎼叆搴撲腑 +// * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false +// * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue +// */ +// public boolean shuttleInExecuteStep1(WrkMast wrkMast, LiftStaProtocol liftStaProtocol) { +// if (wrkMast.getWrkSts() == 4) { +// if (wrkMast.getShuttleNo() == null) {//娌℃湁缁戝畾灏忚溅锛岃繘琛岃皟搴� +// boolean result = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), liftStaProtocol.getLocNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄨ緭閫佺珯鐐硅繘琛屽彇璐� +// News.info("{}浠诲姟锛岃皟搴﹀皬杞}绯荤粺绛夊緟涓�", 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.info("{}浠诲姟锛寋}灏忚溅蹇欑涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); +// return false; +// } +//// //鍒ゆ柇灏忚溅浠ょ墝鏄惁鏈鍗犻 +//// if (shuttleProtocol.getToken() != 0) { +//// News.info("{}浠诲姟锛寋}灏忚溅锛屼护鐗屽凡琚嫭鍗狅紝绂佹娲惧彂浠诲姟", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); +//// return false;//灏忚溅宸茶鐙崰锛岀姝㈠啀娲惧彂浠诲姟 +//// } +// +// //鍒ゆ柇灏忚溅鏄惁瀛樺湪绉诲姩浠诲姟 +// WrkMast hasMoveWorking = wrkMastMapper.selectShuttleHasMoveWorking(wrkMast.getShuttleNo()); +// if (hasMoveWorking != null) { +// News.info("{}浠诲姟锛寋}灏忚溅锛屽瓨鍦ㄧЩ鍔ㄤ换鍔★紝绂佹娲惧彂浠诲姟", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); +// return false;//瀛樺湪绉诲姩浠诲姟锛岀姝㈡墽琛屽叆搴撲换鍔� +// } +// +// //鍒ゆ柇灏忚溅鏄惁鍒拌揪杈撻�佺珯鐐瑰簱浣� +// if (!shuttleProtocol.getCurrentLocNo().equals(liftStaProtocol.getLocNo())) { +// //灏忚溅涓嶅湪杈撻�佺珯鐐逛綅缃� +// shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), liftStaProtocol.getLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄨ緭閫佺珯鐐硅繘琛屽彇璐� +// News.info("{}浠诲姟锛寋}灏忚溅锛屾湭鍒拌揪杈撻�佺珯鐐癸紝绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); +// return false; +// } +// +// //灏忚溅宸叉姷杈捐緭閫佺珯鐐逛綅缃紝杩涜鎼繍璐х墿 +// ShuttleOperaResult result = ShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo()); +// if (result == null) {//璺緞璁$畻澶辫触 +// News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐ワ紝绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); +// return false; +// } +// +// //鍒涘缓鍒嗛厤鍛戒护 +// ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); +// assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿 +// assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙� +// assignCommand.setTaskMode(ShuttleTaskModeType.PAK_IN.id);//鍏ュ簱妯″紡 +// assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) +// assignCommand.setCommands(result.getCommands());//杩愯鍛戒护 +// assignCommand.setNodes(result.getNodes());//璺緞鑺傜偣 +// +// wrkMast.setWrkSts(5L);//4.鎻愬崌鏈烘惉杩愬畬鎴� => 5.灏忚溅鎼繍涓� +// wrkMast.setModiTime(new Date()); +//// shuttleProtocol.setToken(wrkMast.getWrkNo());//鐙崰灏忚溅浠ょ墝 +// if (wrkMastMapper.updateById(wrkMast) > 0) { +// //涓嬪彂浠诲姟 +// MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); +// } +// +// return false; +// } +// return true; +// } - //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); - if (shuttleThread == null) { - return false; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - return false; - } - if (!shuttleProtocol.isIdle()) { - News.info("{}浠诲姟锛寋}灏忚溅蹇欑涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - //鍒ゆ柇灏忚溅浠ょ墝鏄惁鏈鍗犻 - if (shuttleProtocol.getToken() != 0) { - News.info("{}浠诲姟锛寋}灏忚溅锛屼护鐗屽凡琚嫭鍗狅紝绂佹娲惧彂浠诲姟", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false;//灏忚溅宸茶鐙崰锛岀姝㈠啀娲惧彂浠诲姟 - } +// /** +// * 鍑哄簱 ===>> 鍥涘悜绌挎杞﹀嚭搴撲綔涓氫笅鍙� +// */ +// public synchronized void shuttleOutExecute() { +// try { +// for (WrkMast wrkMast : wrkMastMapper.selectBy2125()) { +// boolean step1 = this.shuttleOutExecuteStep1(wrkMast);//灏忚溅鎼嚭搴撲腑 +// if (!step1) { +// continue; +// } +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// /** +// * 鍑哄簱-灏忚溅鎼嚭搴撲腑 +// * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false +// * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue +// */ +// public boolean shuttleOutExecuteStep1(WrkMast wrkMast) { +// //21.鐢熸垚鍑哄簱浠诲姟 => 22.灏忚溅鎼繍涓� +// if (wrkMast.getWrkSts() == 21) { +// EntityWrapper<StaDesc> wrapper = new EntityWrapper<>(); +// wrapper.eq("type_no", wrkMast.getIoType());//璺緞绫诲瀷 +// wrapper.eq("stn_no", wrkMast.getStaNo());//鍑哄簱绔欑偣缂栧彿 +// StaDesc staDesc = staDescService.selectOne(wrapper); +// if (staDesc == null) { +// News.info("{}浠诲姟锛屽嚭搴撹矾寰勪笉瀛樺湪", wrkMast.getWrkNo()); +// return false;//鍑哄簱璺緞涓嶅瓨鍦� +// } +// +// //鑾峰彇鍑哄簱绔欑偣 +// BasDevp basDevp = basDevpService.selectById(wrkMast.getStaNo()); +// if (basDevp == null) { +// return false;//鍑哄簱绔欑偣涓嶅瓨鍦� +// } +// +//// if (!basDevp.getAutoing().equals("Y")) { +//// News.info("{}浠诲姟锛寋}绔欑偣锛屼笉鏄嚜鍔ㄧ姸鎬�",wrkMast.getWrkNo(),basDevp.getDevNo()); +//// return false;//涓嶆槸鑷姩鐘舵�� +//// } +//// +//// if (!basDevp.getOutEnable().equals("Y")) { +//// News.info("{}浠诲姟锛寋}绔欑偣锛屾病鏈夊彲鍑轰俊鍙�", wrkMast.getWrkNo(), basDevp.getDevNo()); +//// return false;//鍑哄簱绔欑偣涓嶅彲鍑� +//// } +// +// Integer liftNo = basDevp.getLiftNo();//鎼滅储鍑哄簱鎻愬崌鏈烘槸鍚﹀瓨鍦ㄥ叆搴撲换鍔★紝濡傚瓨鍦ㄧ姝㈠嚭搴� +// List<WrkMast> liftWrkMasts = wrkMastMapper.selectInWrkMastByLiftNo(liftNo); +// if (!liftWrkMasts.isEmpty()) { +// News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽瓨鍦ㄥ叆搴撲换鍔★紝绯荤粺绂佹鍑哄簱", wrkMast.getWrkNo(), liftNo); +// return false;//瀛樺湪鍏ュ簱浠诲姟锛岀姝㈠嚭搴� +// } +// +// //鍚屽簱浣嶇粍鏍¢獙 +// List<String> outerLoc = Utils.getGroupOuterLoc(wrkMast.getSourceLocNo()); +// List<LocMast> outerLocMasts = locMastService.selectNotEmptyLocNos(outerLoc); +// if (!outerLocMasts.isEmpty()) { +// News.info("{}浠诲姟锛屾祬搴撲綅瀛樺湪璐х墿锛岀郴缁熺瓑寰呬腑", wrkMast.getWrkNo()); +// return false;//娴呭簱浣嶅瓨鍦ㄦ湭鎵ц浠诲姟 +// } +// +// //鑾峰彇婧愮珯 +// LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(basDevp.getLiftNo(), Utils.getLev(wrkMast.getSourceLocNo())); +// if (liftStaProtocol == null) { +// return false;//鎵句笉鍒扮珯鐐� +// } +// +// if (!(liftStaProtocol.getModel() && !liftStaProtocol.getBusy() && !liftStaProtocol.getHasTray())) { +// News.info("{}浠诲姟锛寋}鍐呴儴杈撻�佺珯锛屼笉婊¤冻鑷姩銆佺┖闂层�佹棤鎵樼洏鐘舵��", wrkMast.getWrkNo(), liftStaProtocol.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.info("{}浠诲姟锛屽綋鍓嶆ゼ灞傚彲鐢ㄥ皬杞}鍙帮紝鍑哄簱浠诲姟宸插垎閰峽}鍙帮紝绯荤粺绛夊緟涓��", wrkMast.getWrkNo(), useShuttleCount, wrkMasts.size()); +// return false; +// } +// } +// boolean result = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐� +// News.info("{}浠诲姟锛岃皟搴﹀皬杞}绯荤粺绛夊緟涓��", wrkMast.getWrkNo(), result ? "鎴愬姛" : "澶辫触"); +// return false; +// } +// +// //鑾峰彇鍥涘悜绌挎杞︾嚎绋� +// NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); +// if (shuttleThread == null) { +// return false; +// } +// NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); +// if (shuttleProtocol == null) { +// return false; +// } +// if (!shuttleProtocol.isIdle()) { +// News.info("{}浠诲姟锛寋}灏忚溅锛屽繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); +// return false; +// } +// //鍒ゆ柇灏忚溅浠ょ墝鏄惁鏈鍗犻 +// if (shuttleProtocol.getToken() != 0) { +// News.info("{}浠诲姟锛寋}灏忚溅锛屼护鐗屽凡琚嫭鍗狅紝绂佹娲惧彂浠诲姟", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); +// return false;//灏忚溅宸茶鐙崰锛岀姝㈠啀娲惧彂浠诲姟 +// } +// +// //鍒ゆ柇灏忚溅鏄惁鍒拌揪璐х墿搴撲綅 +// if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) { +// //灏忚溅涓嶅湪杈撻�佺珯鐐逛綅缃� +// shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐� +// News.info("{}浠诲姟锛寋}灏忚溅锛屾湭鍒拌揪杈撻�佺珯鐐癸紝绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); +// return false; +// } +// +// //灏忚溅宸叉姷杈捐揣鐗╀綅缃紝杩涜鎼繍璐х墿 +// ShuttleOperaResult result = ShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), liftStaProtocol.getLocNo());//灏嗚揣鐗╂惉杩愯嚦鎻愬崌鏈鸿緭閫佺珯鐐� +// if (result == null) {//鍑哄簱璺緞璁$畻澶辫触 +// News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐ワ紝绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); +// return false; +// } +// +// //鍒涘缓鍒嗛厤鍛戒护 +// ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); +// assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿 +// assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙� +// assignCommand.setTaskMode(ShuttleTaskModeType.PAK_OUT.id.shortValue());//鍑哄簱妯″紡 +// assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) +// assignCommand.setCommands(result.getCommands());//杩愯鍛戒护 +// assignCommand.setNodes(result.getNodes());//璺緞鑺傜偣 +// +// wrkMast.setWrkSts(22L);//21.鐢熸垚鍑哄簱浠诲姟 => 22.灏忚溅鎼繍涓� +// wrkMast.setModiTime(new Date()); +// shuttleProtocol.setToken(wrkMast.getWrkNo());//鐙崰灏忚溅浠ょ墝 +// if (wrkMastMapper.updateById(wrkMast) > 0) { +// //涓嬪彂浠诲姟 +// MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); +// } +// return false; +// } +// return true; +// } - //鍒ゆ柇灏忚溅鏄惁瀛樺湪绉诲姩浠诲姟 - WrkMast hasMoveWorking = wrkMastMapper.selectShuttleHasMoveWorking(wrkMast.getShuttleNo()); - if (hasMoveWorking != null) { - News.info("{}浠诲姟锛寋}灏忚溅锛屽瓨鍦ㄧЩ鍔ㄤ换鍔★紝绂佹娲惧彂浠诲姟", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false;//瀛樺湪绉诲姩浠诲姟锛岀姝㈡墽琛屽叆搴撲换鍔� - } +// /** +// * 鍥涘悜绌挎杞︿换鍔″畬鎴� +// */ +// public synchronized void shuttleFinished() { +// try { +// for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { +// //鑾峰彇鍥涘悜绌挎杞︿俊鎭� +// NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); +// NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); +// if (shuttleProtocol == null) { +// continue; +// } +// +// //鍥涘悜绌挎杞︾姸鎬佷负绛夊緟纭銆佸皬杞﹀浜庣┖闂茬姸鎬� +// if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.WAITING.id //浠诲姟瀹屾垚绛夊緟纭 +// && shuttleProtocol.getTaskNo() != 0 +// && shuttleProtocol.getFree() == ShuttleStatusType.IDLE.id +// ) { +// //灏嗕换鍔℃。鏍囪涓哄畬鎴� +// WrkMast wrkMast = wrkMastMapper.selectByWorkNo(shuttleProtocol.getTaskNo()); +// if (wrkMast != null) { +// switch (wrkMast.getWrkSts().intValue()) { +// case 5://5.灏忚溅鎼繍涓� ==> 9.鍏ュ簱瀹屾垚 +// wrkMast.setWrkSts(9L); +// shuttleProtocol.setTaskNo(0); +// if (shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { +// //閲婃斁灏忚溅浠ょ墝 +// shuttleProtocol.setToken(0); +// } +// break; +// case 22://22.灏忚溅鎼繍涓� ==> 23.灏忚溅鎼繍瀹屾垚 +// wrkMast.setWrkSts(23L); +// shuttleProtocol.setTaskNo(0); +// if (shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { +// //閲婃斁灏忚溅浠ょ墝 +// shuttleProtocol.setToken(0); +// } +// break; +// case 102://102.灏忚溅绉诲姩鑷崇珯鐐� ==> 103.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� +// wrkMast.setWrkSts(103L); +// break; +// case 104://104.灏忚溅杩佸叆鎻愬崌鏈轰腑 ==> 105.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� +// wrkMast.setWrkSts(105L); +// shuttleProtocol.setTaskNo(0);//娓呯悊宸ヤ綔鍙� +// break; +// case 108://108.灏忚溅杩佸嚭鎻愬崌鏈轰腑 ==> 109.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� +// wrkMast.setWrkSts(109L); +// break; +// case 110://110.灏忚溅绉诲姩涓� ==> 111.灏忚溅绉诲姩瀹屾垚 +// wrkMast.setWrkSts(111L); +// shuttleProtocol.setTaskNo(0); +// if (shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { +// //閲婃斁灏忚溅浠ょ墝 +// shuttleProtocol.setToken(0); +// } +// break; +// default: +// } +// +// if (wrkMastMapper.updateById(wrkMast) > 0) { +// if (wrkMast.getWrkSts() == 111) { +// // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� +// if (wrkMastLogMapper.save(wrkMast.getWrkNo()) <= 0) { +// log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo()); +// } +// // 鍒犻櫎宸ヤ綔涓绘。 +// if (!wrkMastService.deleteById(wrkMast)) { +// log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={0}]澶辫触", wrkMast.getWrkNo()); +// } +// } +// +// //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵�� +// shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); +// //婧愬簱浣嶆竻闆� +// shuttleProtocol.setSourceLocNo(null); +// //鐩爣搴撲綅娓呴浂 +// shuttleProtocol.setLocNo(null); +// //浠诲姟鎸囦护娓呴浂 +// shuttleProtocol.setAssignCommand(null); +// News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo()); +// } else { +// News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚洓鍚戠┛姊溅鍙�={}锛屽伐浣滃彿={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo()); +// } +// } else { +// ShuttleAssignCommand assignCommand = shuttleProtocol.getAssignCommand(); +// if (!assignCommand.getAuto()) { +// //鎵嬪姩妯″紡 +// //宸ヤ綔鍙锋竻闆� +// shuttleProtocol.setTaskNo(0); +// //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵�� +// shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); +// //婧愬簱浣嶆竻闆� +// shuttleProtocol.setSourceLocNo(null); +// //鐩爣搴撲綅娓呴浂 +// shuttleProtocol.setLocNo(null); +// //浠诲姟鎸囦护娓呴浂 +// shuttleProtocol.setAssignCommand(null); +// //娓呴浂浠ょ墝 +// shuttleProtocol.setToken(0); +// News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo()); +// } +// } +// +// } +// +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } - //鍒ゆ柇灏忚溅鏄惁鍒拌揪杈撻�佺珯鐐瑰簱浣� - if (!shuttleProtocol.getCurrentLocNo().equals(liftStaProtocol.getLocNo())) { - //灏忚溅涓嶅湪杈撻�佺珯鐐逛綅缃� - shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), liftStaProtocol.getLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄨ緭閫佺珯鐐硅繘琛屽彇璐� - News.info("{}浠诲姟锛寋}灏忚溅锛屾湭鍒拌揪杈撻�佺珯鐐癸紝绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - - //灏忚溅宸叉姷杈捐緭閫佺珯鐐逛綅缃紝杩涜鎼繍璐х墿 - NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo()); - if (result == null) {//璺緞璁$畻澶辫触 - News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐ワ紝绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - - //鍒涘缓鍒嗛厤鍛戒护 - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿 - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.PAK_IN.id.shortValue());//鍏ュ簱妯″紡 - assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) - assignCommand.setCommands(result.getCommands());//杩愯鍛戒护 - assignCommand.setNodes(result.getNodes());//璺緞鑺傜偣 - - wrkMast.setWrkSts(5L);//4.鎻愬崌鏈烘惉杩愬畬鎴� => 5.灏忚溅鎼繍涓� - wrkMast.setModiTime(new Date()); - shuttleProtocol.setToken(wrkMast.getWrkNo());//鐙崰灏忚溅浠ょ墝 - if (wrkMastMapper.updateById(wrkMast) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); - } - - return false; - } - return true; - } - - /** - * 鍑哄簱 ===>> 鍥涘悜绌挎杞﹀嚭搴撲綔涓氫笅鍙� - */ - public synchronized void shuttleOutExecute() { - try { - for (WrkMast wrkMast : wrkMastMapper.selectBy2125()) { - boolean step1 = this.shuttleOutExecuteStep1(wrkMast);//灏忚溅鎼嚭搴撲腑 - if (!step1) { - continue; - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 鍑哄簱-灏忚溅鎼嚭搴撲腑 - * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false - * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue - */ - public boolean shuttleOutExecuteStep1(WrkMast wrkMast) { - //21.鐢熸垚鍑哄簱浠诲姟 => 22.灏忚溅鎼繍涓� - if (wrkMast.getWrkSts() == 21) { - EntityWrapper<StaDesc> wrapper = new EntityWrapper<>(); - wrapper.eq("type_no", wrkMast.getIoType());//璺緞绫诲瀷 - wrapper.eq("stn_no", wrkMast.getStaNo());//鍑哄簱绔欑偣缂栧彿 - StaDesc staDesc = staDescService.selectOne(wrapper); - if (staDesc == null) { - News.info("{}浠诲姟锛屽嚭搴撹矾寰勪笉瀛樺湪", wrkMast.getWrkNo()); - return false;//鍑哄簱璺緞涓嶅瓨鍦� - } - - //鑾峰彇鍑哄簱绔欑偣 - BasDevp basDevp = basDevpService.selectById(wrkMast.getStaNo()); - if (basDevp == null) { - return false;//鍑哄簱绔欑偣涓嶅瓨鍦� - } - +// /** +// * 鎻愬崌鏈轰换鍔� +// */ +// public synchronized void liftIoExecute() { +// try { +// for (LiftSlave liftSlave : slaveProperties.getLift()) { +// LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId()); +// if (liftThread == null) { +// continue; +// } +// LiftProtocol liftProtocol = liftThread.getLiftProtocol(); +// if (liftProtocol == null) { +// continue; +// } +// +// if (!liftProtocol.isIdle()) { +// News.info("{}鍙锋彁鍗囨満锛屽繖纰屼腑", liftSlave.getId()); +// continue; +// } +// +// //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚﹁鍗犵敤 +// if (liftProtocol.getToken() != 0) { +// News.info("{}鍙锋彁鍗囨満锛屼护鐗屽凡琚嫭鍗�", liftSlave.getId()); +// continue; +// } +// +// //鎼滅储鏄惁鏈夊緟澶勭悊鐨勪换鍔� +// List<WrkMast> wrkMasts = wrkMastMapper.selectLiftStep223103(); +// if (wrkMasts.isEmpty()) { +// continue; +// } +// +// for (WrkMast wrkMast : wrkMasts) { +// //鎼滅储鏄惁鏈夊叾浠栦换鍔″崰鐢ㄤ簡鎻愬崌鏈猴紝濡傛灉鍗犵敤鎻愬崌鏈虹殑浠诲姟鍜屽綋鍓嶄换鍔$浉鍚岋紝鍒欒繍琛屾墽琛� +// WrkMast wrkMast1 = wrkMastMapper.selectLiftWrkMast(liftProtocol.getLiftNo().intValue()); +// if (wrkMast1 != null && wrkMast1.getWrkNo().intValue() != wrkMast.getWrkNo().intValue()) { +// News.info("{}鍙锋彁鍗囨満锛岃鍏朵粬浠诲姟{}鍗犵敤涓斿拰褰撳墠浠诲姟{}涓嶇浉鍚岋紝绂佹娲惧彂", liftSlave.getId(), wrkMast1.getWrkNo(), wrkMast.getWrkNo()); +// continue; +// } +// +// boolean stepIn = this.liftIoExecuteStepIn(wrkMast);//鎻愬崌鏈哄叆搴� +// if (!stepIn) { +// continue; +// } +// +// boolean stepOut = this.liftIoExecuteStepOut(wrkMast);//鎻愬崌鏈哄嚭搴� +// if (!stepOut) { +// continue; +// } +// } +// +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// /** +// * 鎻愬崌鏈哄叆搴� +// * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false +// * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue +// */ +// private boolean liftIoExecuteStepIn(WrkMast wrkMast) { +// //--------------------------------------鎻愬崌鏈哄叆搴�-----------------------------------------// +// Date now = new Date(); +// +// //2.璁惧涓婅蛋 ==> 3.鎻愬崌鏈烘惉杩愪腑 +// if (wrkMast.getWrkSts() == 2) { +// //鑾峰彇婧愮珯 +// BasDevp sourceBasDevp = basDevpService.selectById(wrkMast.getSourceStaNo()); +// if (sourceBasDevp == null) { +// return false;//鎵句笉鍒扮珯鐐� +// } +// +// if (!sourceBasDevp.getInEnable().equals("Y")) { +// News.info("{}浠诲姟锛寋}婧愮珯锛屾病鏈夊彲鍏ヤ俊鍙�", wrkMast.getWrkNo(), sourceBasDevp.getDevNo()); +// return false;//绔欑偣涓嶅彲鍏� +// } +// +// Integer barcodeId = Utils.getBarcodeIdByStaNo(wrkMast.getSourceStaNo()); +// if (barcodeId == null) { +// News.info("{}浠诲姟锛寋}婧愮珯锛屾壘涓嶅埌鍙敤鏉$爜鍣↖D", wrkMast.getWrkNo(), sourceBasDevp.getDevNo()); +// return false;//绔欑偣涓嶅彲鍏� +// } +// +// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId); +// if (barcodeThread == null) { +// News.info("{}浠诲姟锛寋}婧愮珯锛屾潯鐮佸櫒{}绾跨▼涓虹┖", wrkMast.getWrkNo(), sourceBasDevp.getDevNo(), barcodeId); +// return false;//绔欑偣涓嶅彲鍏� +// } +// String barcode = barcodeThread.getBarcode(); +// if(!Cools.isEmpty(barcode)) { +// if(!("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode))) { +// //瀛樺湪鏉$爜鍊硷紝鍒ゆ柇鏄惁鍜屽綋鍓嶅伐浣滄。涓�鑷� +// if (!barcode.equals(wrkMast.getBarcode())) { +// News.info("{}浠诲姟,{}绔欑偣锛屾潯鐮佸櫒{}鍊納}涓庡伐浣滄。鏉$爜鍊納}涓嶄竴鑷达紝绯荤粺璺宠繃鎵ц", wrkMast.getWrkNo(), sourceBasDevp.getDevNo(), barcodeId, barcode,wrkMast.getBarcode()); +// return false;//绔欑偣涓嶅彲鍏� +// } +// } +// }else { +// return false; +// } +// +// //鍒ゆ柇鎻愬崌鏈烘暣涓笁妤兼槸鍚﹂兘澶勪簬鍏ュ簱妯″紡 +// Integer outInModel1 = Utils.getOutInModelByLift(sourceBasDevp.getLiftNo(), 1); +// Integer outInModel2 = Utils.getOutInModelByLift(sourceBasDevp.getLiftNo(), 5); +// Integer outInModel3 = Utils.getOutInModelByLift(sourceBasDevp.getLiftNo(), 8); +// if (outInModel1 == null || outInModel2 == null || outInModel3 == null) { +// News.info("{}浠诲姟锛屾病鏈夊嚭鍏ュ簱妯″紡", wrkMast.getWrkNo()); +// return false;//涓嶅瓨鍦ㄥ嚭鍏ュ簱妯″紡 +// } +// +// if (outInModel1 == 2 || outInModel2 == 2 && outInModel3 == 2) { +// News.info("{}浠诲姟锛屾湁绔欑偣澶勪簬鍑哄簱妯″紡锛岀姝㈠叆搴�", wrkMast.getWrkNo()); +// return false;//鍙鏈変竴涓浜庡嚭搴撴ā寮忥紝绂佹鍏ュ簱 +// } +// +// LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, sourceBasDevp.getLiftNo()); +// if (liftThread == null) { +// return false; +// } +// LiftProtocol liftProtocol = liftThread.getLiftProtocol(); +// if (liftProtocol == null) { +// return false; +// } +// if (!liftProtocol.isIdle()) { +// News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽繖纰屼腑", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); +// return false; +// } +// //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︽湭琚崰棰� +// if (liftProtocol.getToken() != 0) { +// News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屼护鐗屽凡琚嫭鍗狅紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); +// return false;//鎻愬崌鏈哄凡琚嫭鍗狅紝绂佹鍐嶆淳鍙戜换鍔� +// } +// +// //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞� +// if (liftProtocol.getHasCar()) { +// News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呴儴鏈夊皬杞︼紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); +// return false;//鏈夊皬杞︼紝绂佹娲惧彂 +// } +// +// //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩� +// if (liftProtocol.getHasTray()) { +// News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呴儴鏈夋墭鐩橈紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); +// return false;//鏈夋墭鐩橈紝绂佹娲惧彂 +// } +// +// //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 +// WrkMast liftWrkMast = wrkMastMapper.selectLiftWrkMast(liftThread.getSlave().getId()); +// if (liftWrkMast != null) { +// News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽綋鍓嶆彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); +// return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� +// } +// +// //鑾峰彇婧愮珯瀵瑰簲鐨勭墰鐪兼彁鍗囨満绔欑偣缂栧彿(璧风偣缂栧彿) +// Integer startSta = Integer.parseInt(sourceBasDevp.getQrCodeValue()); +// //鑾峰彇鎻愬崌鏈虹珯鐐� +// LiftStaProtocol targetStaProtocol = NyLiftUtils.getLiftStaByLev(liftThread.getSlave().getId(), Utils.getLev(wrkMast.getLocNo())); +// if (targetStaProtocol == null) { +// return false;//绔欑偣涓嶅瓨鍦� +// } +// +// if (targetStaProtocol.getHasTray()) { +// News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛寋}绔欑偣锛屾彁鍗囨満绔欑偣鏈夋墭鐩橈紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo(), targetStaProtocol.getStaNo()); +// return false;//鎻愬崌鏈虹珯鐐规湁鎵樼洏锛岀姝㈡淳鍙� +// } +// +// Integer targetSta = targetStaProtocol.getStaNo(); +// +// //鑾峰彇鎻愬崌鏈哄懡浠� +// NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, startSta, targetSta, wrkMast.getWrkNo()); +// if (wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57) { +// //鎷f枡鍐嶅洖搴擄紝閲嶆柊鍒嗛厤璁惧宸ヤ綔鍙� +// int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿 +// BasLiftOpt basLiftOpt = basLiftOptService.selectByDeviceWrk(String.valueOf(deviceWrk), liftThread.getSlave().getId()); +// if (basLiftOpt != null) { +// News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛岃澶囧伐浣滃彿鍑虹幇閲嶅鎯呭喌锛岃鑱旂郴鎶�鏈汉鍛樻敮鎸併��", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); +// return false; +// } +// liftCommand.setTaskNo((short) deviceWrk); +// } +// ArrayList<NyLiftCommand> commands = new ArrayList<>(); +// commands.add(liftCommand); +// +// //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 +// LiftAssignCommand assignCommand = new LiftAssignCommand(); +// assignCommand.setCommands(commands); +// assignCommand.setLiftNo(liftProtocol.getLiftNo()); +// assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); +// assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_TRAY.id.shortValue()); +// +// wrkMast.setWrkSts(3L);//2.璁惧涓婅蛋 ==> 3.鎻愬崌鏈烘惉杩愪腑 +// wrkMast.setLiftNo(liftThread.getSlave().getId());//浠诲姟妗g粦瀹氭彁鍗囨満鍙� +// wrkMast.setModiTime(now); +// liftProtocol.setToken(wrkMast.getWrkNo());//鐙崰鎻愬崌鏈轰护鐗� +// if (wrkMastMapper.updateById(wrkMast) > 0) { +// //涓嬪彂浠诲姟 +// MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); +// } +// +// return false; +// } +// return true; +// } +// +// /** +// * 鎻愬崌鏈哄嚭搴� +// * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false +// * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue +// */ +// private boolean liftIoExecuteStepOut(WrkMast wrkMast) { +// //--------------------------------------鎻愬崌鏈哄嚭搴�-----------------------------------------// +// Date now = new Date(); +// +// //23.灏忚溅鎼繍瀹屾垚 ==> 24.鎻愬崌鏈烘惉杩愪腑 +// if (wrkMast.getWrkSts() == 23) { +// NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); +// if (shuttleThread == null) { +// return false; +// } +// +// //鑾峰彇鍑哄簱绔欑偣(鐩爣绔�) +// BasDevp basDevp = basDevpService.selectById(wrkMast.getStaNo()); +// if (basDevp == null) { +// News.info("{}浠诲姟锛屽嚭搴撶珯鐐逛笉瀛樺湪锛岀姝㈡淳鍙�", wrkMast.getWrkNo()); +// return false;//鍑哄簱绔欑偣涓嶅瓨鍦� +// } +// +// //鑾峰彇婧愮珯瀵瑰簲鐨勭墰鐪兼彁鍗囨満绔欑偣缂栧彿(璧风偣缂栧彿) +// LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(basDevp.getLiftNo(), Utils.getLev(wrkMast.getSourceLocNo())); +// if (liftStaProtocol == null) { +// News.info("{}浠诲姟锛屾壘涓嶅埌绔欑偣锛岀姝㈡淳鍙�", wrkMast.getWrkNo()); +// return false;//鎵句笉鍒扮珯鐐� +// } +// Integer startSta = liftStaProtocol.getStaNo(); +// +// NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); +// if (shuttleProtocol.getCurrentLocNo().equals(liftStaProtocol.getLocNo())) { +// //灏忚溅杩樺湪杈撻�佺珯鐐� +// //璋冨害灏忚溅閬胯 +// boolean result = Utils.searchEmptyGroupToMoveShuttle(Utils.getLev(wrkMast.getSourceLocNo()), wrkMast.getShuttleNo(), shuttleThread); +// if (!result) { +// News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀湪杈撻�佺珯鐐硅皟搴﹀皬杞﹂伩璁╁け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); +// return false; +// } +// } +// // if (!basDevp.getAutoing().equals("Y")) { -// News.info("{}浠诲姟锛寋}绔欑偣锛屼笉鏄嚜鍔ㄧ姸鎬�",wrkMast.getWrkNo(),basDevp.getDevNo()); -// return false;//涓嶆槸鑷姩鐘舵�� +// News.info("{}浠诲姟锛寋}绔欑偣锛屾病鏈夎嚜鍔ㄤ俊鍙凤紝绂佹娲惧彂", wrkMast.getWrkNo(), basDevp.getDevNo()); +// return false;//鍑哄簱绔欑偣涓嶅彲鍑� +// } +// +// if (basDevp.getLoading().equals("Y")) { +// News.info("{}浠诲姟锛寋}绔欑偣锛屽瓨鍦ㄦ湁鐗╀俊鍙凤紝绂佹娲惧彂", wrkMast.getWrkNo(), basDevp.getDevNo()); +// return false;//鍑哄簱绔欑偣涓嶅彲鍑� // } // // if (!basDevp.getOutEnable().equals("Y")) { -// News.info("{}浠诲姟锛寋}绔欑偣锛屾病鏈夊彲鍑轰俊鍙�", wrkMast.getWrkNo(), basDevp.getDevNo()); +// News.info("{}浠诲姟锛寋}绔欑偣锛屾病鏈夊彲鍑轰俊鍙凤紝绂佹娲惧彂", wrkMast.getWrkNo(), basDevp.getDevNo()); // return false;//鍑哄簱绔欑偣涓嶅彲鍑� // } - - Integer liftNo = basDevp.getLiftNo();//鎼滅储鍑哄簱鎻愬崌鏈烘槸鍚﹀瓨鍦ㄥ叆搴撲换鍔★紝濡傚瓨鍦ㄧ姝㈠嚭搴� - List<WrkMast> liftWrkMasts = wrkMastMapper.selectInWrkMastByLiftNo(liftNo); - if (!liftWrkMasts.isEmpty()) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽瓨鍦ㄥ叆搴撲换鍔★紝绯荤粺绂佹鍑哄簱", wrkMast.getWrkNo(), liftNo); - return false;//瀛樺湪鍏ュ簱浠诲姟锛岀姝㈠嚭搴� - } - - //鍚屽簱浣嶇粍鏍¢獙 - List<String> outerLoc = Utils.getGroupOuterLoc(wrkMast.getSourceLocNo()); - List<LocMast> outerLocMasts = locMastService.selectNotEmptyLocNos(outerLoc); - if (!outerLocMasts.isEmpty()) { - News.info("{}浠诲姟锛屾祬搴撲綅瀛樺湪璐х墿锛岀郴缁熺瓑寰呬腑", wrkMast.getWrkNo()); - return false;//娴呭簱浣嶅瓨鍦ㄦ湭鎵ц浠诲姟 - } - - //鑾峰彇婧愮珯 - LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(basDevp.getLiftNo(), Utils.getLev(wrkMast.getSourceLocNo())); - if (liftStaProtocol == null) { - return false;//鎵句笉鍒扮珯鐐� - } - - if (!(liftStaProtocol.getModel() && !liftStaProtocol.getBusy() && !liftStaProtocol.getHasTray())) { - News.info("{}浠诲姟锛寋}鍐呴儴杈撻�佺珯锛屼笉婊¤冻鑷姩銆佺┖闂层�佹棤鎵樼洏鐘舵��", wrkMast.getWrkNo(), liftStaProtocol.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.info("{}浠诲姟锛屽綋鍓嶆ゼ灞傚彲鐢ㄥ皬杞}鍙帮紝鍑哄簱浠诲姟宸插垎閰峽}鍙帮紝绯荤粺绛夊緟涓��", wrkMast.getWrkNo(), useShuttleCount, wrkMasts.size()); - return false; - } - } - boolean result = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐� - News.info("{}浠诲姟锛岃皟搴﹀皬杞}绯荤粺绛夊緟涓��", wrkMast.getWrkNo(), result ? "鎴愬姛" : "澶辫触"); - return false; - } - - //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); - if (shuttleThread == null) { - return false; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - return false; - } - if (!shuttleProtocol.isIdle()) { - News.info("{}浠诲姟锛寋}灏忚溅锛屽繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - //鍒ゆ柇灏忚溅浠ょ墝鏄惁鏈鍗犻 - if (shuttleProtocol.getToken() != 0) { - News.info("{}浠诲姟锛寋}灏忚溅锛屼护鐗屽凡琚嫭鍗狅紝绂佹娲惧彂浠诲姟", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false;//灏忚溅宸茶鐙崰锛岀姝㈠啀娲惧彂浠诲姟 - } - - //鍒ゆ柇灏忚溅鏄惁鍒拌揪璐х墿搴撲綅 - if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) { - //灏忚溅涓嶅湪杈撻�佺珯鐐逛綅缃� - shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒拌揣鐗╂墍鍦ㄥ簱浣嶈繘琛屽彇璐� - News.info("{}浠诲姟锛寋}灏忚溅锛屾湭鍒拌揪杈撻�佺珯鐐癸紝绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - - //灏忚溅宸叉姷杈捐揣鐗╀綅缃紝杩涜鎼繍璐х墿 - NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), liftStaProtocol.getLocNo());//灏嗚揣鐗╂惉杩愯嚦鎻愬崌鏈鸿緭閫佺珯鐐� - if (result == null) {//鍑哄簱璺緞璁$畻澶辫触 - News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐ワ紝绯荤粺绛夊緟涓�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - - //鍒涘缓鍒嗛厤鍛戒护 - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿 - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.PAK_OUT.id.shortValue());//鍑哄簱妯″紡 - assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) - assignCommand.setCommands(result.getCommands());//杩愯鍛戒护 - assignCommand.setNodes(result.getNodes());//璺緞鑺傜偣 - - wrkMast.setWrkSts(22L);//21.鐢熸垚鍑哄簱浠诲姟 => 22.灏忚溅鎼繍涓� - wrkMast.setModiTime(new Date()); - shuttleProtocol.setToken(wrkMast.getWrkNo());//鐙崰灏忚溅浠ょ墝 - if (wrkMastMapper.updateById(wrkMast) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); - } - return false; - } - return true; - } - - /** - * 鍥涘悜绌挎杞︿换鍔″畬鎴� - */ - public synchronized void shuttleFinished() { - try { - for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { - //鑾峰彇鍥涘悜绌挎杞︿俊鎭� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - continue; - } - - //鍥涘悜绌挎杞︾姸鎬佷负绛夊緟纭銆佸皬杞﹀浜庣┖闂茬姸鎬� - if (shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.WAITING.id //浠诲姟瀹屾垚绛夊緟纭 - && shuttleProtocol.getTaskNo() != 0 - && shuttleProtocol.getFree() == ShuttleStatusType.IDLE.id - ) { - //灏嗕换鍔℃。鏍囪涓哄畬鎴� - WrkMast wrkMast = wrkMastMapper.selectByWorkNo(shuttleProtocol.getTaskNo()); - if (wrkMast != null) { - switch (wrkMast.getWrkSts().intValue()) { - case 5://5.灏忚溅鎼繍涓� ==> 9.鍏ュ簱瀹屾垚 - wrkMast.setWrkSts(9L); - shuttleProtocol.setTaskNo(0); - if (shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { - //閲婃斁灏忚溅浠ょ墝 - shuttleProtocol.setToken(0); - } - break; - case 22://22.灏忚溅鎼繍涓� ==> 23.灏忚溅鎼繍瀹屾垚 - wrkMast.setWrkSts(23L); - shuttleProtocol.setTaskNo(0); - if (shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { - //閲婃斁灏忚溅浠ょ墝 - shuttleProtocol.setToken(0); - } - break; - case 102://102.灏忚溅绉诲姩鑷崇珯鐐� ==> 103.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� - wrkMast.setWrkSts(103L); - break; - case 104://104.灏忚溅杩佸叆鎻愬崌鏈轰腑 ==> 105.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� - wrkMast.setWrkSts(105L); - shuttleProtocol.setTaskNo(0);//娓呯悊宸ヤ綔鍙� - break; - case 108://108.灏忚溅杩佸嚭鎻愬崌鏈轰腑 ==> 109.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� - wrkMast.setWrkSts(109L); - break; - case 110://110.灏忚溅绉诲姩涓� ==> 111.灏忚溅绉诲姩瀹屾垚 - wrkMast.setWrkSts(111L); - shuttleProtocol.setTaskNo(0); - if (shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { - //閲婃斁灏忚溅浠ょ墝 - shuttleProtocol.setToken(0); - } - break; - default: - } - - if (wrkMastMapper.updateById(wrkMast) > 0) { - if (wrkMast.getWrkSts() == 111) { - // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� - if (wrkMastLogMapper.save(wrkMast.getWrkNo()) <= 0) { - log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo()); - } - // 鍒犻櫎宸ヤ綔涓绘。 - if (!wrkMastService.deleteById(wrkMast)) { - log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={0}]澶辫触", wrkMast.getWrkNo()); - } - } - - //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵�� - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); - //婧愬簱浣嶆竻闆� - shuttleProtocol.setSourceLocNo(null); - //鐩爣搴撲綅娓呴浂 - shuttleProtocol.setLocNo(null); - //浠诲姟鎸囦护娓呴浂 - shuttleProtocol.setAssignCommand(null); - News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo()); - } else { - News.error("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傚洓鍚戠┛姊溅鍙�={}锛屽伐浣滃彿={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo()); - } - } else { - ShuttleAssignCommand assignCommand = shuttleProtocol.getAssignCommand(); - if (!assignCommand.getAuto()) { - //鎵嬪姩妯″紡 - //宸ヤ綔鍙锋竻闆� - shuttleProtocol.setTaskNo(0); - //璁剧疆鍥涘悜绌挎杞︿负绌洪棽鐘舵�� - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); - //婧愬簱浣嶆竻闆� - shuttleProtocol.setSourceLocNo(null); - //鐩爣搴撲綅娓呴浂 - shuttleProtocol.setLocNo(null); - //浠诲姟鎸囦护娓呴浂 - shuttleProtocol.setAssignCommand(null); - //娓呴浂浠ょ墝 - shuttleProtocol.setToken(0); - News.info("鍥涘悜绌挎杞﹀凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅銆傚洓鍚戠┛姊溅鍙�={}", shuttleProtocol.getShuttleNo()); - } - } - - } - - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 鎻愬崌鏈轰换鍔� - */ - public synchronized void liftIoExecute() { - try { - for (LiftSlave liftSlave : slaveProperties.getLift()) { - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId()); - if (liftThread == null) { - continue; - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - continue; - } - - if (!liftProtocol.isIdle()) { - News.info("{}鍙锋彁鍗囨満锛屽繖纰屼腑", liftSlave.getId()); - continue; - } - - //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚﹁鍗犵敤 - if (liftProtocol.getToken() != 0) { - News.info("{}鍙锋彁鍗囨満锛屼护鐗屽凡琚嫭鍗�", liftSlave.getId()); - continue; - } - - //鎼滅储鏄惁鏈夊緟澶勭悊鐨勪换鍔� - List<WrkMast> wrkMasts = wrkMastMapper.selectLiftStep223103(); - if (wrkMasts.isEmpty()) { - continue; - } - - for (WrkMast wrkMast : wrkMasts) { - //鎼滅储鏄惁鏈夊叾浠栦换鍔″崰鐢ㄤ簡鎻愬崌鏈猴紝濡傛灉鍗犵敤鎻愬崌鏈虹殑浠诲姟鍜屽綋鍓嶄换鍔$浉鍚岋紝鍒欒繍琛屾墽琛� - WrkMast wrkMast1 = wrkMastMapper.selectLiftWrkMast(liftProtocol.getLiftNo().intValue()); - if (wrkMast1 != null && wrkMast1.getWrkNo().intValue() != wrkMast.getWrkNo().intValue()) { - News.info("{}鍙锋彁鍗囨満锛岃鍏朵粬浠诲姟{}鍗犵敤涓斿拰褰撳墠浠诲姟{}涓嶇浉鍚岋紝绂佹娲惧彂", liftSlave.getId(), wrkMast1.getWrkNo(), wrkMast.getWrkNo()); - continue; - } - - boolean stepIn = this.liftIoExecuteStepIn(wrkMast);//鎻愬崌鏈哄叆搴� - if (!stepIn) { - continue; - } - - boolean stepOut = this.liftIoExecuteStepOut(wrkMast);//鎻愬崌鏈哄嚭搴� - if (!stepOut) { - continue; - } - } - - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 鎻愬崌鏈哄叆搴� - * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false - * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue - */ - private boolean liftIoExecuteStepIn(WrkMast wrkMast) { - //--------------------------------------鎻愬崌鏈哄叆搴�-----------------------------------------// - Date now = new Date(); - - //2.璁惧涓婅蛋 ==> 3.鎻愬崌鏈烘惉杩愪腑 - if (wrkMast.getWrkSts() == 2) { - //鑾峰彇婧愮珯 - BasDevp sourceBasDevp = basDevpService.selectById(wrkMast.getSourceStaNo()); - if (sourceBasDevp == null) { - return false;//鎵句笉鍒扮珯鐐� - } - - if (!sourceBasDevp.getInEnable().equals("Y")) { - News.info("{}浠诲姟锛寋}婧愮珯锛屾病鏈夊彲鍏ヤ俊鍙�", wrkMast.getWrkNo(), sourceBasDevp.getDevNo()); - return false;//绔欑偣涓嶅彲鍏� - } - - Integer barcodeId = Utils.getBarcodeIdByStaNo(wrkMast.getSourceStaNo()); - if (barcodeId == null) { - News.info("{}浠诲姟锛寋}婧愮珯锛屾壘涓嶅埌鍙敤鏉$爜鍣↖D", wrkMast.getWrkNo(), sourceBasDevp.getDevNo()); - return false;//绔欑偣涓嶅彲鍏� - } - - BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, barcodeId); - if (barcodeThread == null) { - News.info("{}浠诲姟锛寋}婧愮珯锛屾潯鐮佸櫒{}绾跨▼涓虹┖", wrkMast.getWrkNo(), sourceBasDevp.getDevNo(), barcodeId); - return false;//绔欑偣涓嶅彲鍏� - } - String barcode = barcodeThread.getBarcode(); - if(!Cools.isEmpty(barcode)) { - if(!("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode))) { - //瀛樺湪鏉$爜鍊硷紝鍒ゆ柇鏄惁鍜屽綋鍓嶅伐浣滄。涓�鑷� - if (!barcode.equals(wrkMast.getBarcode())) { - News.info("{}浠诲姟,{}绔欑偣锛屾潯鐮佸櫒{}鍊納}涓庡伐浣滄。鏉$爜鍊納}涓嶄竴鑷达紝绯荤粺璺宠繃鎵ц", wrkMast.getWrkNo(), sourceBasDevp.getDevNo(), barcodeId, barcode,wrkMast.getBarcode()); - return false;//绔欑偣涓嶅彲鍏� - } - } - }else { - return false; - } - - //鍒ゆ柇鎻愬崌鏈烘暣涓笁妤兼槸鍚﹂兘澶勪簬鍏ュ簱妯″紡 - Integer outInModel1 = Utils.getOutInModelByLift(sourceBasDevp.getLiftNo(), 1); - Integer outInModel2 = Utils.getOutInModelByLift(sourceBasDevp.getLiftNo(), 5); - Integer outInModel3 = Utils.getOutInModelByLift(sourceBasDevp.getLiftNo(), 8); - if (outInModel1 == null || outInModel2 == null || outInModel3 == null) { - News.info("{}浠诲姟锛屾病鏈夊嚭鍏ュ簱妯″紡", wrkMast.getWrkNo()); - return false;//涓嶅瓨鍦ㄥ嚭鍏ュ簱妯″紡 - } - - if (outInModel1 == 2 || outInModel2 == 2 && outInModel3 == 2) { - News.info("{}浠诲姟锛屾湁绔欑偣澶勪簬鍑哄簱妯″紡锛岀姝㈠叆搴�", wrkMast.getWrkNo()); - return false;//鍙鏈変竴涓浜庡嚭搴撴ā寮忥紝绂佹鍏ュ簱 - } - - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, sourceBasDevp.getLiftNo()); - if (liftThread == null) { - return false; - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - return false; - } - if (!liftProtocol.isIdle()) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽繖纰屼腑", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false; - } - //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︽湭琚崰棰� - if (liftProtocol.getToken() != 0) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屼护鐗屽凡琚嫭鍗狅紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//鎻愬崌鏈哄凡琚嫭鍗狅紝绂佹鍐嶆淳鍙戜换鍔� - } - - //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞� - if (liftProtocol.getHasCar()) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呴儴鏈夊皬杞︼紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//鏈夊皬杞︼紝绂佹娲惧彂 - } - - //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夋墭鐩� - if (liftProtocol.getHasTray()) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呴儴鏈夋墭鐩橈紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//鏈夋墭鐩橈紝绂佹娲惧彂 - } - - //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 - WrkMast liftWrkMast = wrkMastMapper.selectLiftWrkMast(liftThread.getSlave().getId()); - if (liftWrkMast != null) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽綋鍓嶆彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� - } - - //鑾峰彇婧愮珯瀵瑰簲鐨勭墰鐪兼彁鍗囨満绔欑偣缂栧彿(璧风偣缂栧彿) - Integer startSta = Integer.parseInt(sourceBasDevp.getQrCodeValue()); - //鑾峰彇鎻愬崌鏈虹珯鐐� - LiftStaProtocol targetStaProtocol = NyLiftUtils.getLiftStaByLev(liftThread.getSlave().getId(), Utils.getLev(wrkMast.getLocNo())); - if (targetStaProtocol == null) { - return false;//绔欑偣涓嶅瓨鍦� - } - - if (targetStaProtocol.getHasTray()) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛寋}绔欑偣锛屾彁鍗囨満绔欑偣鏈夋墭鐩橈紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo(), targetStaProtocol.getStaNo()); - return false;//鎻愬崌鏈虹珯鐐规湁鎵樼洏锛岀姝㈡淳鍙� - } - - Integer targetSta = targetStaProtocol.getStaNo(); - - //鑾峰彇鎻愬崌鏈哄懡浠� - NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, startSta, targetSta, wrkMast.getWrkNo()); - if (wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57) { - //鎷f枡鍐嶅洖搴擄紝閲嶆柊鍒嗛厤璁惧宸ヤ綔鍙� - int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿 - BasLiftOpt basLiftOpt = basLiftOptService.selectByDeviceWrk(String.valueOf(deviceWrk), liftThread.getSlave().getId()); - if (basLiftOpt != null) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛岃澶囧伐浣滃彿鍑虹幇閲嶅鎯呭喌锛岃鑱旂郴鎶�鏈汉鍛樻敮鎸併��", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false; - } - liftCommand.setTaskNo((short) deviceWrk); - } - ArrayList<NyLiftCommand> commands = new ArrayList<>(); - commands.add(liftCommand); - - //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 - LiftAssignCommand assignCommand = new LiftAssignCommand(); - assignCommand.setCommands(commands); - assignCommand.setLiftNo(liftProtocol.getLiftNo()); - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); - assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_TRAY.id.shortValue()); - - wrkMast.setWrkSts(3L);//2.璁惧涓婅蛋 ==> 3.鎻愬崌鏈烘惉杩愪腑 - wrkMast.setLiftNo(liftThread.getSlave().getId());//浠诲姟妗g粦瀹氭彁鍗囨満鍙� - wrkMast.setModiTime(now); - liftProtocol.setToken(wrkMast.getWrkNo());//鐙崰鎻愬崌鏈轰护鐗� - if (wrkMastMapper.updateById(wrkMast) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); - } - - return false; - } - return true; - } - - /** - * 鎻愬崌鏈哄嚭搴� - * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false - * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue - */ - private boolean liftIoExecuteStepOut(WrkMast wrkMast) { - //--------------------------------------鎻愬崌鏈哄嚭搴�-----------------------------------------// - Date now = new Date(); - - //23.灏忚溅鎼繍瀹屾垚 ==> 24.鎻愬崌鏈烘惉杩愪腑 - if (wrkMast.getWrkSts() == 23) { - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); - if (shuttleThread == null) { - return false; - } - - //鑾峰彇鍑哄簱绔欑偣(鐩爣绔�) - BasDevp basDevp = basDevpService.selectById(wrkMast.getStaNo()); - if (basDevp == null) { - News.info("{}浠诲姟锛屽嚭搴撶珯鐐逛笉瀛樺湪锛岀姝㈡淳鍙�", wrkMast.getWrkNo()); - return false;//鍑哄簱绔欑偣涓嶅瓨鍦� - } - - //鑾峰彇婧愮珯瀵瑰簲鐨勭墰鐪兼彁鍗囨満绔欑偣缂栧彿(璧风偣缂栧彿) - LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(basDevp.getLiftNo(), Utils.getLev(wrkMast.getSourceLocNo())); - if (liftStaProtocol == null) { - News.info("{}浠诲姟锛屾壘涓嶅埌绔欑偣锛岀姝㈡淳鍙�", wrkMast.getWrkNo()); - return false;//鎵句笉鍒扮珯鐐� - } - Integer startSta = liftStaProtocol.getStaNo(); - - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol.getCurrentLocNo().equals(liftStaProtocol.getLocNo())) { - //灏忚溅杩樺湪杈撻�佺珯鐐� - //璋冨害灏忚溅閬胯 - boolean result = Utils.searchEmptyGroupToMoveShuttle(Utils.getLev(wrkMast.getSourceLocNo()), wrkMast.getShuttleNo(), shuttleThread); - if (!result) { - News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀湪杈撻�佺珯鐐硅皟搴﹀皬杞﹂伩璁╁け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - } - - if (!basDevp.getAutoing().equals("Y")) { - News.info("{}浠诲姟锛寋}绔欑偣锛屾病鏈夎嚜鍔ㄤ俊鍙凤紝绂佹娲惧彂", wrkMast.getWrkNo(), basDevp.getDevNo()); - return false;//鍑哄簱绔欑偣涓嶅彲鍑� - } - - if (basDevp.getLoading().equals("Y")) { - News.info("{}浠诲姟锛寋}绔欑偣锛屽瓨鍦ㄦ湁鐗╀俊鍙凤紝绂佹娲惧彂", wrkMast.getWrkNo(), basDevp.getDevNo()); - return false;//鍑哄簱绔欑偣涓嶅彲鍑� - } - - if (!basDevp.getOutEnable().equals("Y")) { - News.info("{}浠诲姟锛寋}绔欑偣锛屾病鏈夊彲鍑轰俊鍙凤紝绂佹娲惧彂", wrkMast.getWrkNo(), basDevp.getDevNo()); - return false;//鍑哄簱绔欑偣涓嶅彲鍑� - } - - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, basDevp.getLiftNo()); - if (liftThread == null) { - return false; - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - return false; - } - - if (!liftProtocol.isIdle()) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽繖纰屼腑", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false; - } - //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︽湭琚崰棰� - if (liftProtocol.getToken() != 0) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屼护鐗屽凡琚嫭鍗狅紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//鎻愬崌鏈哄凡琚嫭鍗狅紝绂佹鍐嶆淳鍙戜换鍔� - } - //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 - WrkMast liftWrkMast = wrkMastMapper.selectLiftWrkMast(liftThread.getSlave().getId()); - if (liftWrkMast != null) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽綋鍓嶆彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� - } - - //鑾风洰鏍囩珯婧愮珯瀵瑰簲鐨勮緭閫佺珯鐐� - BasDevp targetBasDevp = basDevpService.selectById(wrkMast.getStaNo()); - if (targetBasDevp == null) { - News.info("{}浠诲姟锛寋}绔欑偣锛岀珯鐐逛笉瀛樺湪锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), wrkMast.getStaNo()); - return false;//绔欑偣涓嶅瓨鍦� - } - //鑾峰彇鐗涚溂鎻愬崌鏈虹珯鐐圭紪鍙�(鐩爣缂栧彿) - Integer targetSta = Integer.parseInt(targetBasDevp.getQrCodeValue()); - - //鑾峰彇鎻愬崌鏈哄懡浠� - NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftThread.getSlave().getId(), NyLiftTaskModelType.MOVE_TRAY.id, startSta, targetSta, wrkMast.getWrkNo()); - - ArrayList<NyLiftCommand> commands = new ArrayList<>(); - commands.add(liftCommand); - - //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 - LiftAssignCommand assignCommand = new LiftAssignCommand(); - assignCommand.setCommands(commands); - assignCommand.setLiftNo(liftProtocol.getLiftNo()); - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); - assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_TRAY.id.shortValue()); - - wrkMast.setWrkSts(24L);//23.灏忚溅鎼繍瀹屾垚 ==> 24.鎻愬崌鏈烘惉杩愪腑 - wrkMast.setLiftNo(liftThread.getSlave().getId());//浠诲姟妗g粦瀹氭彁鍗囨満鍙� - wrkMast.setModiTime(now); - liftProtocol.setToken(wrkMast.getWrkNo());//鐙崰鎻愬崌鏈轰护鐗� - if (wrkMastMapper.updateById(wrkMast) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); - } - - return false; - } - return true; - } - - /** - * 鎻愬崌鏈轰换鍔″畬鎴� - */ - public synchronized void liftFinished() { - try { - for (LiftSlave liftSlave : slaveProperties.getLift()) { - //鑾峰彇鎻愬崌鏈轰俊鎭� - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId()); - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - continue; - } - - //鎻愬崌鏈轰负绛夊緟纭涓旂┖闂� - if (liftProtocol.getProtocolStatus() == LiftProtocolStatusType.WAITING.id - && liftProtocol.getTaskNo() != 0 - && !liftProtocol.getBusy() - ) { - int taskNo = liftProtocol.getTaskNo().intValue(); - if (taskNo >= 20000 && taskNo <= 30000) { - //鎻愬崌鏈鸿澶囧伐浣滃彿锛岄渶瑕佹煡璇㈠搴斾换鍔″彿 - BasLiftOpt basLiftOpt = basLiftOptService.selectByDeviceWrk(liftProtocol.getTaskNo().toString(), liftSlave.getId()); - if (basLiftOpt != null) { - taskNo = basLiftOpt.getWrkNo(); - } - } - - //灏嗕换鍔℃。鏍囪涓哄畬鎴� - WrkMast wrkMast = wrkMastMapper.selectByWorkNo324104(taskNo); - if (wrkMast != null) { - switch (wrkMast.getWrkSts().intValue()) { - case 3://3.鎻愬崌鏈烘惉杩愪腑 ==> 4.鎻愬崌鏈烘惉杩愬畬鎴� - wrkMast.setWrkSts(4L); - wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� - if (liftProtocol.getToken().equals(wrkMast.getWrkNo())) { - //閲婃斁鎻愬崌鏈轰护鐗� - liftProtocol.setToken(0); - } - break; - case 24://24.鎻愬崌鏈烘惉杩愪腑 ==> 25.鎻愬崌鏈烘惉杩愬畬鎴� - wrkMast.setWrkSts(25L); - if (wrkMast.getIoType() == 11) {//搴撲綅绉昏浆 - wrkMast.setWrkSts(4L);//4.鎻愬崌鏈烘惉杩愬畬鎴� - } else { - if (wrkMast.getMk() == null || !wrkMast.getMk().equals("Y")) { - //涓嶉渶瑕佺敤鍒版満姊拌噦锛岀洿鎺ヨ浆29.鍑哄簱瀹屾垚 - wrkMast.setWrkSts(29L); - wrkMast.setShuttleNo(null);//閲婃斁灏忚溅 - wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� - wrkMast.setModiTime(new Date()); - } - } - - if (liftProtocol.getToken().equals(wrkMast.getWrkNo())) { - //閲婃斁鎻愬崌鏈轰护鐗� - liftProtocol.setToken(0); - } - - break; - case 106://106.鎻愬崌鏈烘惉杩愪腑 ==> 107.鎻愬崌鏈烘惉杩愬畬鎴� - wrkMast.setWrkSts(107L); - break; - default: - } - - if (wrkMastMapper.updateById(wrkMast) > 0) { - //璁剧疆鎻愬崌鏈轰负绌洪棽鐘舵�� - liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE); - //浠诲姟鎸囦护娓呴浂 - liftProtocol.setAssignCommand(null); - News.info("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬併�傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo()); - } else { - News.error("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傛彁鍗囨満鍙�={}锛屽伐浣滃彿={}", liftProtocol.getLiftNo(), liftProtocol.getTaskNo()); - } - } else { - LiftAssignCommand assignCommand = liftProtocol.getAssignCommand(); - if (assignCommand != null) { - if (!assignCommand.getAuto()) { - //鎵嬪姩鎿嶄綔 - //璁剧疆鎻愬崌鏈轰负绌洪棽鐘舵�� - liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE); - //浠诲姟鎸囦护娓呴浂 - liftProtocol.setAssignCommand(null); - News.info("鎻愬崌鏈哄凡纭鎵嬪姩鎿嶄綔銆傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo()); - } - } - } - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 搴撲綅绉昏浆 - */ - public synchronized void locToLocExecute() { - try { - //鑾峰彇鍑哄叆搴撳伐浣滄。 -// List<WrkMast> wrkMasts = wrkMastMapper.selectInOutWrkMast(); -// if (wrkMasts.size() > 0) { -// //鏈夊嚭鍏ュ簱浠诲姟锛屽繀椤荤瓑寰呬换鍔℃墽琛屽畬姣曞啀鎵ц搴撲綅绉昏浆 -// return; +// +// LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, basDevp.getLiftNo()); +// if (liftThread == null) { +// return false; +// } +// LiftProtocol liftProtocol = liftThread.getLiftProtocol(); +// if (liftProtocol == null) { +// return false; +// } +// +// if (!liftProtocol.isIdle()) { +// News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽繖纰屼腑", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); +// return false; +// } +// //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︽湭琚崰棰� +// if (liftProtocol.getToken() != 0) { +// News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屼护鐗屽凡琚嫭鍗狅紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); +// return false;//鎻愬崌鏈哄凡琚嫭鍗狅紝绂佹鍐嶆淳鍙戜换鍔� +// } +// //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 +// WrkMast liftWrkMast = wrkMastMapper.selectLiftWrkMast(liftThread.getSlave().getId()); +// if (liftWrkMast != null) { +// News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屽綋鍓嶆彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); +// return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� +// } +// +// //鑾风洰鏍囩珯婧愮珯瀵瑰簲鐨勮緭閫佺珯鐐� +// BasDevp targetBasDevp = basDevpService.selectById(wrkMast.getStaNo()); +// if (targetBasDevp == null) { +// News.info("{}浠诲姟锛寋}绔欑偣锛岀珯鐐逛笉瀛樺湪锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), wrkMast.getStaNo()); +// return false;//绔欑偣涓嶅瓨鍦� +// } +// //鑾峰彇鐗涚溂鎻愬崌鏈虹珯鐐圭紪鍙�(鐩爣缂栧彿) +// Integer targetSta = Integer.parseInt(targetBasDevp.getQrCodeValue()); +// +// //鑾峰彇鎻愬崌鏈哄懡浠� +// NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftThread.getSlave().getId(), NyLiftTaskModelType.MOVE_TRAY.id, startSta, targetSta, wrkMast.getWrkNo()); +// +// ArrayList<NyLiftCommand> commands = new ArrayList<>(); +// commands.add(liftCommand); +// +// //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 +// LiftAssignCommand assignCommand = new LiftAssignCommand(); +// assignCommand.setCommands(commands); +// assignCommand.setLiftNo(liftProtocol.getLiftNo()); +// assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); +// assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_TRAY.id.shortValue()); +// +// wrkMast.setWrkSts(24L);//23.灏忚溅鎼繍瀹屾垚 ==> 24.鎻愬崌鏈烘惉杩愪腑 +// wrkMast.setLiftNo(liftThread.getSlave().getId());//浠诲姟妗g粦瀹氭彁鍗囨満鍙� +// wrkMast.setModiTime(now); +// liftProtocol.setToken(wrkMast.getWrkNo());//鐙崰鎻愬崌鏈轰护鐗� +// if (wrkMastMapper.updateById(wrkMast) > 0) { +// //涓嬪彂浠诲姟 +// MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); +// } +// +// return false; // } +// return true; +// } +// +// /** +// * 鎻愬崌鏈轰换鍔″畬鎴� +// */ +// public synchronized void liftFinished() { +// try { +// for (LiftSlave liftSlave : slaveProperties.getLift()) { +// //鑾峰彇鎻愬崌鏈轰俊鎭� +// LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId()); +// LiftProtocol liftProtocol = liftThread.getLiftProtocol(); +// if (liftProtocol == null) { +// continue; +// } +// +// //鎻愬崌鏈轰负绛夊緟纭涓旂┖闂� +// if (liftProtocol.getProtocolStatus() == LiftProtocolStatusType.WAITING.id +// && liftProtocol.getTaskNo() != 0 +// && !liftProtocol.getBusy() +// ) { +// int taskNo = liftProtocol.getTaskNo().intValue(); +// if (taskNo >= 20000 && taskNo <= 30000) { +// //鎻愬崌鏈鸿澶囧伐浣滃彿锛岄渶瑕佹煡璇㈠搴斾换鍔″彿 +// BasLiftOpt basLiftOpt = basLiftOptService.selectByDeviceWrk(liftProtocol.getTaskNo().toString(), liftSlave.getId()); +// if (basLiftOpt != null) { +// taskNo = basLiftOpt.getWrkNo(); +// } +// } +// +// //灏嗕换鍔℃。鏍囪涓哄畬鎴� +// WrkMast wrkMast = wrkMastMapper.selectByWorkNo324104(taskNo); +// if (wrkMast != null) { +// switch (wrkMast.getWrkSts().intValue()) { +// case 3://3.鎻愬崌鏈烘惉杩愪腑 ==> 4.鎻愬崌鏈烘惉杩愬畬鎴� +// wrkMast.setWrkSts(4L); +// wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� +// if (liftProtocol.getToken().equals(wrkMast.getWrkNo())) { +// //閲婃斁鎻愬崌鏈轰护鐗� +// liftProtocol.setToken(0); +// } +// break; +// case 24://24.鎻愬崌鏈烘惉杩愪腑 ==> 25.鎻愬崌鏈烘惉杩愬畬鎴� +// wrkMast.setWrkSts(25L); +// if (wrkMast.getIoType() == 11) {//搴撲綅绉昏浆 +// wrkMast.setWrkSts(4L);//4.鎻愬崌鏈烘惉杩愬畬鎴� +// } else { +// if (wrkMast.getMk() == null || !wrkMast.getMk().equals("Y")) { +// //涓嶉渶瑕佺敤鍒版満姊拌噦锛岀洿鎺ヨ浆29.鍑哄簱瀹屾垚 +// wrkMast.setWrkSts(29L); +// wrkMast.setShuttleNo(null);//閲婃斁灏忚溅 +// wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� +// wrkMast.setModiTime(new Date()); +// } +// } +// +// if (liftProtocol.getToken().equals(wrkMast.getWrkNo())) { +// //閲婃斁鎻愬崌鏈轰护鐗� +// liftProtocol.setToken(0); +// } +// +// break; +// case 106://106.鎻愬崌鏈烘惉杩愪腑 ==> 107.鎻愬崌鏈烘惉杩愬畬鎴� +// wrkMast.setWrkSts(107L); +// break; +// default: +// } +// +// if (wrkMastMapper.updateById(wrkMast) > 0) { +// //璁剧疆鎻愬崌鏈轰负绌洪棽鐘舵�� +// liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE); +// //浠诲姟鎸囦护娓呴浂 +// liftProtocol.setAssignCommand(null); +// News.info("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬併�傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo()); +// } else { +// News.error("鎻愬崌鏈哄凡纭涓斾换鍔″畬鎴愮姸鎬�,澶嶄綅澶辫触锛屼絾鏈壘鍒板伐浣滄。銆傛彁鍗囨満鍙�={}锛屽伐浣滃彿={}", liftProtocol.getLiftNo(), liftProtocol.getTaskNo()); +// } +// } else { +// LiftAssignCommand assignCommand = liftProtocol.getAssignCommand(); +// if (assignCommand != null) { +// if (!assignCommand.getAuto()) { +// //鎵嬪姩鎿嶄綔 +// //璁剧疆鎻愬崌鏈轰负绌洪棽鐘舵�� +// liftProtocol.setProtocolStatus(LiftProtocolStatusType.IDLE); +// //浠诲姟鎸囦护娓呴浂 +// liftProtocol.setAssignCommand(null); +// News.info("鎻愬崌鏈哄凡纭鎵嬪姩鎿嶄綔銆傛彁鍗囨満鍙�={}", liftProtocol.getLiftNo()); +// } +// } +// } +// } +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } - //鏌ヨ搴撲綅绉昏浆宸ヤ綔妗� - List<WrkMast> wrkMasts1 = wrkMastMapper.selectLocToLocWrkMast(); - for (WrkMast wrkMast : wrkMasts1) { - if (Utils.getLev(wrkMast.getSourceLocNo()) == Utils.getLev(wrkMast.getLocNo())) { - boolean step1 = this.locToLocExecuteStep1(wrkMast);//鍚屾ゼ灞傚簱浣嶇Щ杞� - if (!step1) { - continue; - } - } else { - //璺ㄦゼ灞傚簱浣嶇Щ杞� - boolean step2 = this.locToLocExecuteStep2(wrkMast);//璋冨害杞﹁締鍙栬揣骞惰繍閫佸埌鍑哄簱鍙� - if (!step2) { - continue; - } +// /** +// * 寮傚父淇℃伅璁板綍 +// */ +// public void recErr() { +// try { +// this.recShuttleErr(); +// this.recLiftErr(); +// } catch (Exception e) { +// News.error("recErr fail", e); +// } +// } - boolean step3 = this.locToLocExecuteStep3(wrkMast);//鎻愬崌鏈烘惉杩愯揣鐗� - if (!step3) { - continue; - } - - boolean step4 = this.locToLocExecuteStep4(wrkMast);//璋冨害杞﹁締鍙栬揣骞惰繍閫佸埌鐩爣搴撲綅 - if (!step4) { - continue; - } - - } - - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 鍚屾ゼ灞傚簱浣嶇Щ杞� - * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false - * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue - */ - private boolean locToLocExecuteStep1(WrkMast wrkMast) { - if (wrkMast.getWrkSts() == 21) {//21.鐢熸垚鍑哄簱浠诲姟 - if (wrkMast.getShuttleNo() == null) { - shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo());//璋冨害灏忚溅鍒版簮搴撲綅杩涜鍙栬揣 - return false; - } - - //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); - if (shuttleThread == null) { - return false; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - return false; - } - if (!shuttleProtocol.isIdle()) { - return false; - } - - //鍒ゆ柇灏忚溅鏄惁鍒拌揪婧愬簱浣� - if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) { - //灏忚溅涓嶅湪婧愬簱浣嶄綅缃� - shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒版簮搴撲綅杩涜鍙栬揣 - return false; - } - - //灏忚溅宸叉姷杈炬簮搴撲綅锛岃繘琛屾惉杩愯揣鐗� - NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getLocNo()); - if (result == null) {//璺緞璁$畻澶辫触 - return false; - } - - //鍒涘缓鍒嗛厤鍛戒护 - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿 - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.PAK_IN.id.shortValue());//鍏ュ簱妯″紡 - assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) - assignCommand.setCommands(result.getCommands());//杩愯鍛戒护 - assignCommand.setNodes(result.getNodes());//璺緞鑺傜偣 - - wrkMast.setWrkSts(5L);//21.鐢熸垚鍑哄簱浠诲姟 => 5.灏忚溅鎼繍涓� - wrkMast.setModiTime(new Date()); - if (wrkMastMapper.updateById(wrkMast) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); - } - - return false; - } - return true; - } - - /** - * 璺ㄦゼ灞傚簱浣嶇Щ杞�-璋冨害杞﹁締鍙栬揣骞惰繍閫佸埌鍑哄簱鍙� - * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false - * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue - */ - private boolean locToLocExecuteStep2(WrkMast wrkMast) { - if (wrkMast.getWrkSts() == 21) {//21.鐢熸垚鍑哄簱浠诲姟 - if (wrkMast.getShuttleNo() == null) { - shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo());//璋冨害灏忚溅鍒版簮搴撲綅杩涜鍙栬揣 - return false; - } - - //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); - if (shuttleThread == null) { - return false; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - return false; - } - if (!shuttleProtocol.isIdle()) { - return false; - } - - //鍒ゆ柇灏忚溅鏄惁鍒拌揪婧愬簱浣� - if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) { - //灏忚溅涓嶅湪婧愬簱浣嶄綅缃� - shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒版簮搴撲綅杩涜鍙栬揣 - return false; - } - - //鑾峰彇绌挎杞︽渶杩戜笖绌洪棽鐨勬彁鍗囨満杈撻�佺珯鐐� - LiftStaProtocol liftSta = shuttleDispatchUtils.getRecentLiftSta(shuttleThread.getSlave().getId(), Utils.getLev(wrkMast.getLocNo())); - if (liftSta == null) { - return false;//娌℃湁鍙敤涓旂┖闂茬殑杈撻�佺珯鐐� - } - //婧愮珯 - Integer sourceStaNo = liftSta.getStaNo(); - //鎻愬崌鏈哄彿*100+鐩爣妤煎眰=鐩爣绔欑偣 - Integer staNo = liftSta.getLiftNo() * 100 + Utils.getLev(wrkMast.getLocNo());//鐩爣绔� - - //灏忚溅宸叉姷杈炬簮搴撲綅锛屽皢璐х墿鎼繍鍒拌緭閫佺珯鐐� - NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), liftSta.getLocNo()); - if (result == null) {//璺緞璁$畻澶辫触 - return false; - } - - //鍒涘缓鍒嗛厤鍛戒护 - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿 - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.SHUTTLE_LOC_TO_LOC.id.shortValue());//搴撲綅绉昏浆妯″紡 - assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) - assignCommand.setCommands(result.getCommands());//杩愯鍛戒护 - assignCommand.setNodes(result.getNodes());//璺緞鑺傜偣 - - wrkMast.setWrkSts(22L);//21.鐢熸垚鍑哄簱浠诲姟 => 22.灏忚溅鎼繍涓� - wrkMast.setSourceStaNo(sourceStaNo);//婧愮珯 - wrkMast.setStaNo(staNo);//鐩爣绔� - wrkMast.setModiTime(new Date()); - if (wrkMastMapper.updateById(wrkMast) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); - } - - return false; - } - return true; - } - - /** - * 璺ㄦゼ灞傚簱浣嶇Щ杞�-鎻愬崌鏈烘惉杩愯揣鐗� - * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false - * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue - */ - private boolean locToLocExecuteStep3(WrkMast wrkMast) { - Date now = new Date(); - if (wrkMast.getWrkSts() == 23) {//23.灏忚溅鎼繍瀹屾垚 - //婧愮珯 - Integer sourceStaNo = wrkMast.getSourceStaNo(); - //鐩爣绔� - Integer staNo = wrkMast.getStaNo(); - if (sourceStaNo == null || staNo == null) { - return false;//婧愮珯鎴栫洰鏍囩珯涓虹┖ - } - - int liftNo = staNo / 100;//鑾峰彇鎻愬崌鏈哄彿 - - //鑾峰彇鎻愬崌鏈虹嚎绋� - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo); - if (liftThread == null) { - return false; - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - return false; - } - - //鑾峰彇婧愮珯瀵瑰簲鐨勮緭閫佺珯鐐� - LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(liftNo, Utils.getLev(wrkMast.getSourceLocNo())); - if (liftStaProtocol == null) { - return false;//鎵句笉鍒扮珯鐐� - } - - if (!(liftStaProtocol.getModel() && !liftStaProtocol.getBusy() && liftStaProtocol.getHasTray())) { - return false;//绔欑偣蹇呴』鑷姩銆佺┖闂层�佹湁鎵樼洏 - } - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); - if (shuttleThread == null) { - return false; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol.getCurrentLocNo().equals(liftStaProtocol.getLocNo())) { - //灏忚溅杩樺湪杈撻�佺珯鐐� - //璋冨害灏忚溅閬胯 - boolean result = Utils.searchEmptyGroupToMoveShuttle(Utils.getLev(wrkMast.getSourceLocNo()), wrkMast.getShuttleNo(), shuttleThread); - if (!result) { - return false; - } - } - - if (!liftProtocol.isIdle()) { - return false; - } - - //鎼滅储鏄惁鏈夊叾浠栦换鍔″崰鐢ㄤ簡鎻愬崌鏈猴紝濡傛灉鍗犵敤鎻愬崌鏈虹殑浠诲姟鍜屽綋鍓嶄换鍔$浉鍚岋紝鍒欒繍琛屾墽琛� - WrkMast wrkMast1 = wrkMastMapper.selectLiftWrkMast(liftProtocol.getLiftNo().intValue()); - if (wrkMast1 != null && wrkMast1.getWrkNo().intValue() != wrkMast.getWrkNo().intValue()) { - return false; - } - - //鑾峰彇鎻愬崌鏈哄懡浠� - NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, sourceStaNo, staNo, wrkMast.getWrkNo()); - - ArrayList<NyLiftCommand> commands = new ArrayList<>(); - commands.add(liftCommand); - - //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 - LiftAssignCommand assignCommand = new LiftAssignCommand(); - assignCommand.setCommands(commands); - assignCommand.setLiftNo(liftProtocol.getLiftNo()); - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); - assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_TRAY.id.shortValue()); - - wrkMast.setWrkSts(24L);//23.灏忚溅鎼繍瀹屾垚 ==> 24.鎻愬崌鏈烘惉杩愪腑 - wrkMast.setLiftNo(liftThread.getSlave().getId());//浠诲姟妗g粦瀹氭彁鍗囨満鍙� - wrkMast.setShuttleNo(null);//娓呯┖灏忚溅鍙凤紝绛夎揣鐗╂惉杩愬畬鎴愬悗锛屽埌鐩爣妤煎眰閲嶆柊鎼滅储灏忚溅 - wrkMast.setModiTime(now); - if (wrkMastMapper.updateById(wrkMast) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); - } - return false; - } - return true; - } - - /** - * 璺ㄦゼ灞傚簱浣嶇Щ杞�-璋冨害杞﹁締鍙栬揣骞惰繍閫佸埌鐩爣搴撲綅 - * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false - * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue - */ - private boolean locToLocExecuteStep4(WrkMast wrkMast) { - if (wrkMast.getWrkSts() == 4) {//4.鎻愬崌鏈烘惉杩愬畬鎴� - //鑾峰彇鐩爣绔欏搴旂殑杈撻�佺珯鐐� - LiftStaProtocol liftStaProtocol = NyLiftUtils.getLiftStaByLev(wrkMast.getLiftNo(), Utils.getLev(wrkMast.getLocNo())); - if (liftStaProtocol == null) { - return false;//鎵句笉鍒扮珯鐐� - } - - if (!(liftStaProtocol.getModel() && !liftStaProtocol.getBusy() && liftStaProtocol.getHasTray())) { - return false;//绔欑偣蹇呴』鑷姩銆佺┖闂层�佹湁鎵樼洏 - } - - if (wrkMast.getShuttleNo() == null) { - shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), liftStaProtocol.getLocNo());//璋冨害灏忚溅鍒扮洰鏍囪緭閫佺珯鐐硅繘琛屽彇璐� - return false; - } - - //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); - if (shuttleThread == null) { - return false; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - return false; - } - if (!shuttleProtocol.isIdle()) { - return false; - } - - //鍒ゆ柇灏忚溅鏄惁鍒拌揪鐩爣杈撻�佺珯鐐� - if (!shuttleProtocol.getCurrentLocNo().equals(liftStaProtocol.getLocNo())) { - //灏忚溅涓嶅湪鐩爣杈撻�佺珯鐐� - shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), liftStaProtocol.getLocNo(), wrkMast.getShuttleNo());//璋冨害灏忚溅鍒扮洰鏍囪緭閫佺珯鐐硅繘琛屽彇璐� - return false; - } - - //灏忚溅宸叉姷杈剧洰鏍囪緭閫佺珯鐐癸紝灏嗚揣鐗╂惉杩愬埌鐩爣搴撲綅 - NyShuttleOperaResult result = NyShuttleOperaUtils.getShuttleTransportCommands(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), liftStaProtocol.getLocNo(), wrkMast.getLocNo()); - if (result == null) {//璺緞璁$畻澶辫触 - return false; - } - - //鍒涘缓鍒嗛厤鍛戒护 - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿 - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.SHUTTLE_LOC_TO_LOC.id.shortValue());//搴撲綅绉昏浆妯″紡 - assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) - assignCommand.setCommands(result.getCommands());//杩愯鍛戒护 - assignCommand.setNodes(result.getNodes());//璺緞鑺傜偣 - - wrkMast.setWrkSts(5L);//4.鎻愬崌鏈烘惉杩愬畬鎴� => 5.灏忚溅鎼繍涓� - wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� - wrkMast.setModiTime(new Date()); - if (wrkMastMapper.updateById(wrkMast) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); - } - - return false; - } - return true; - } - - /** - * 寮傚父淇℃伅璁板綍 - */ - public void recErr() { - try { - this.recShuttleErr(); - this.recLiftErr(); - } catch (Exception e) { - News.error("recErr fail", e); - } - } - - /** - * 鍥涘悜绌挎杞﹀紓甯镐俊鎭褰� - */ - private void recShuttleErr() { - Date now = new Date(); - for (ShuttleSlave shuttleSlave : slaveProperties.getShuttle()) { - // 鑾峰彇鍥涘悜绌挎杞︿俊鎭� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleSlave.getId()); - if (shuttleThread == null) { - continue; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - continue; - } - - if (shuttleProtocol.getTaskNo() != 0) { - //鏈変换鍔� - BasShuttleErrLog latest = basShuttleErrLogService.findLatestByTaskNo(shuttleSlave.getId(), shuttleProtocol.getTaskNo()); - // 鏈夊紓甯� - if (latest == null) { - if (shuttleProtocol.getErrState() != null && shuttleProtocol.getErrState() == 1) { - WrkMast wrkMast = wrkMastMapper.selectById(shuttleProtocol.getTaskNo()); - if (wrkMast == null) { - continue; - } - BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(shuttleProtocol.getErrCode()); - String errName = basShuttleErr==null? "鏈煡寮傚父":basShuttleErr.getErrName(); - BasShuttleErrLog basShuttleErrLog = new BasShuttleErrLog( - null, // 缂栧彿 - wrkMast.getWrkNo(), // 宸ヤ綔鍙� - now, // 鍙戠敓鏃堕棿 - null, // 缁撴潫鏃堕棿 - wrkMast.getWrkSts(), // 宸ヤ綔鐘舵�� - wrkMast.getIoType(), // 鍏ュ嚭搴撶被鍨� - shuttleSlave.getId(), // 鍥涘悜绌挎杞� - null, // plc - wrkMast.getLocNo(), // 鐩爣搴撲綅 - wrkMast.getStaNo(), // 鐩爣绔� - wrkMast.getSourceStaNo(), // 婧愮珯 - wrkMast.getSourceLocNo(), // 婧愬簱浣� - wrkMast.getBarcode(), // 鏉$爜 - shuttleProtocol.getErrCode(), // 寮傚父鐮� - errName, // 寮傚父 - 1, // 寮傚父鎯呭喌 - now, // 娣诲姞鏃堕棿 - null, // 娣诲姞浜哄憳 - now, // 淇敼鏃堕棿 - null, // 淇敼浜哄憳 - "浠诲姟涓紓甯�", // 澶囨敞 - JSON.toJSONString(shuttleProtocol) // 绯荤粺鐘舵�佹暟鎹� - ); - if (!basShuttleErrLogService.insert(basShuttleErrLog)) { - News.error("鍥涘悜绌挎杞lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", shuttleSlave.getId(), errName); - } - } - } else { - // 寮傚父淇 - if (shuttleProtocol.getErrState() == null || shuttleProtocol.getErrState() == 0) { - latest.setEndTime(now); - latest.setUpdateTime(now); - latest.setStatus(2); - if (!basShuttleErrLogService.updateById(latest)) { - News.error("鍥涘悜绌挎杞lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", shuttleSlave.getId(), latest.getId()); - } - } - } - }else { -// //鏃犱换鍔� -// BasShuttleErrLog latest = basShuttleErrLogService.findLatest(shuttleSlave.getId()); +// /** +// * 鍥涘悜绌挎杞﹀紓甯镐俊鎭褰� +// */ +// private void recShuttleErr() { +// Date now = new Date(); +// for (ShuttleSlave shuttleSlave : slaveProperties.getShuttle()) { +// // 鑾峰彇鍥涘悜绌挎杞︿俊鎭� +// NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleSlave.getId()); +// if (shuttleThread == null) { +// continue; +// } +// NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); +// if (shuttleProtocol == null) { +// continue; +// } +// +// if (shuttleProtocol.getTaskNo() != 0) { +// //鏈変换鍔� +// BasShuttleErrLog latest = basShuttleErrLogService.findLatestByTaskNo(shuttleSlave.getId(), shuttleProtocol.getTaskNo()); // // 鏈夊紓甯� -// if (shuttleProtocol.getStatusErrorCode() != null && shuttleProtocol.getStatusErrorCode() > 0) { -// // 璁板綍鏂板紓甯� -// if (latest == null || (latest.getErrCode() != shuttleProtocol.getStatusErrorCode().intValue())) { -// BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(shuttleProtocol.getStatusErrorCode().intValue()); +// if (latest == null) { +// if (shuttleProtocol.getErrState() != null && shuttleProtocol.getErrState() == 1) { +// WrkMast wrkMast = wrkMastMapper.selectById(shuttleProtocol.getTaskNo()); +// if (wrkMast == null) { +// continue; +// } +// BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(shuttleProtocol.getErrCode()); // String errName = basShuttleErr==null? "鏈煡寮傚父":basShuttleErr.getErrName(); // BasShuttleErrLog basShuttleErrLog = new BasShuttleErrLog( // null, // 缂栧彿 -// null, // 宸ヤ綔鍙� +// wrkMast.getWrkNo(), // 宸ヤ綔鍙� // now, // 鍙戠敓鏃堕棿 // null, // 缁撴潫鏃堕棿 -// null, // 宸ヤ綔鐘舵�� -// null, // 鍏ュ嚭搴撶被鍨� +// wrkMast.getWrkSts(), // 宸ヤ綔鐘舵�� +// wrkMast.getIoType(), // 鍏ュ嚭搴撶被鍨� // shuttleSlave.getId(), // 鍥涘悜绌挎杞� // null, // plc -// null, // 鐩爣搴撲綅 -// null, // 鐩爣绔� -// null, // 婧愮珯 -// null, // 婧愬簱浣� -// null, // 鏉$爜 -// (int)shuttleProtocol.getStatusErrorCode(), // 寮傚父鐮� +// wrkMast.getLocNo(), // 鐩爣搴撲綅 +// wrkMast.getStaNo(), // 鐩爣绔� +// wrkMast.getSourceStaNo(), // 婧愮珯 +// wrkMast.getSourceLocNo(), // 婧愬簱浣� +// wrkMast.getBarcode(), // 鏉$爜 +// shuttleProtocol.getErrCode(), // 寮傚父鐮� // errName, // 寮傚父 // 1, // 寮傚父鎯呭喌 // now, // 娣诲姞鏃堕棿 // null, // 娣诲姞浜哄憳 // now, // 淇敼鏃堕棿 // null, // 淇敼浜哄憳 -// "鏃犱换鍔″紓甯�" // 澶囨敞 +// "浠诲姟涓紓甯�", // 澶囨敞 +// JSON.toJSONString(shuttleProtocol) // 绯荤粺鐘舵�佹暟鎹� // ); // if (!basShuttleErrLogService.insert(basShuttleErrLog)) { // News.error("鍥涘悜绌挎杞lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", shuttleSlave.getId(), errName); // } // } -// // 鏃犲紓甯� // } else { // // 寮傚父淇 -// if (latest != null && latest.getStatus() == 1) { +// if (shuttleProtocol.getErrState() == null || shuttleProtocol.getErrState() == 0) { // latest.setEndTime(now); // latest.setUpdateTime(now); // latest.setStatus(2); @@ -2141,195 +1426,243 @@ // } // } // } - } - } - } - - /** - * 鎻愬崌鏈哄紓甯镐俊鎭褰� - */ - private void recLiftErr() { - Date now = new Date(); - for (LiftSlave liftSlave : slaveProperties.getLift()) { - // 鑾峰彇鎻愬崌鏈轰俊鎭� - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId()); - if (liftThread == null) { - continue; - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - continue; - } - - if (liftProtocol.getTaskNo() != 0) { - //鏈変换鍔� - BasLiftErrLog latest = basLiftErrLogService.findLatestByTaskNo(liftSlave.getId(), liftProtocol.getTaskNo().intValue()); - // 鏈夊紓甯� - if (latest == null) { - if (liftProtocol.getDeviceError() != null && liftProtocol.getDeviceError()) { - WrkMast wrkMast = wrkMastMapper.selectById(liftProtocol.getTaskNo()); - if (wrkMast == null) { - continue; - } - - String errName = ""; - if (liftProtocol.getFrontOverrun()) { - errName = "鍓嶈秴闄�"; - } else if (liftProtocol.getBackOverrun()) { - errName = "鍚庤秴闄�"; - } else if (liftProtocol.getLeftOverrun()) { - errName = "宸﹁秴闄�"; - } else if (liftProtocol.getRightOverrun()) { - errName = "鍙宠秴闄�"; - } else if (liftProtocol.getOverHeight()) { - errName = "瓒呴珮"; - } else if (liftProtocol.getOverWeight()) { - errName = "瓒呴噸"; - } - - BasLiftErrLog basLiftErrLog = new BasLiftErrLog( - null, // 缂栧彿 - wrkMast.getWrkNo(), // 宸ヤ綔鍙� - now, // 鍙戠敓鏃堕棿 - null, // 缁撴潫鏃堕棿 - wrkMast.getWrkSts(), // 宸ヤ綔鐘舵�� - wrkMast.getIoType(), // 鍏ュ嚭搴撶被鍨� - liftSlave.getId(), // 鎻愬崌鏈� - null, // plc - wrkMast.getLocNo(), // 鐩爣搴撲綅 - wrkMast.getStaNo(), // 鐩爣绔� - wrkMast.getSourceStaNo(), // 婧愮珯 - wrkMast.getSourceLocNo(), // 婧愬簱浣� - wrkMast.getBarcode(), // 鏉$爜 - null, // 寮傚父鐮� - errName, // 寮傚父 - 1, // 寮傚父鎯呭喌 - now, // 娣诲姞鏃堕棿 - null, // 娣诲姞浜哄憳 - now, // 淇敼鏃堕棿 - null, // 淇敼浜哄憳 - "浠诲姟涓紓甯�", // 澶囨敞 - JSON.toJSONString(liftProtocol) // 绯荤粺鐘舵�佹暟鎹� - ); - if (!basLiftErrLogService.insert(basLiftErrLog)) { - News.error("鎻愬崌鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", liftSlave.getId(), errName); - } - } - } else { - // 寮傚父淇 - if (liftProtocol.getDeviceError() == null || !liftProtocol.getDeviceError()) { - latest.setEndTime(now); - latest.setUpdateTime(now); - latest.setStatus(2); - if (!basLiftErrLogService.updateById(latest)) { - News.error("鎻愬崌鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", liftSlave.getId(), latest.getId()); - } - } - } - } - } - } +// }else { +//// //鏃犱换鍔� +//// BasShuttleErrLog latest = basShuttleErrLogService.findLatest(shuttleSlave.getId()); +//// // 鏈夊紓甯� +//// if (shuttleProtocol.getStatusErrorCode() != null && shuttleProtocol.getStatusErrorCode() > 0) { +//// // 璁板綍鏂板紓甯� +//// if (latest == null || (latest.getErrCode() != shuttleProtocol.getStatusErrorCode().intValue())) { +//// BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(shuttleProtocol.getStatusErrorCode().intValue()); +//// String errName = basShuttleErr==null? "鏈煡寮傚父":basShuttleErr.getErrName(); +//// BasShuttleErrLog basShuttleErrLog = new BasShuttleErrLog( +//// null, // 缂栧彿 +//// null, // 宸ヤ綔鍙� +//// now, // 鍙戠敓鏃堕棿 +//// null, // 缁撴潫鏃堕棿 +//// null, // 宸ヤ綔鐘舵�� +//// null, // 鍏ュ嚭搴撶被鍨� +//// shuttleSlave.getId(), // 鍥涘悜绌挎杞� +//// null, // plc +//// null, // 鐩爣搴撲綅 +//// null, // 鐩爣绔� +//// null, // 婧愮珯 +//// null, // 婧愬簱浣� +//// null, // 鏉$爜 +//// (int)shuttleProtocol.getStatusErrorCode(), // 寮傚父鐮� +//// errName, // 寮傚父 +//// 1, // 寮傚父鎯呭喌 +//// now, // 娣诲姞鏃堕棿 +//// null, // 娣诲姞浜哄憳 +//// now, // 淇敼鏃堕棿 +//// null, // 淇敼浜哄憳 +//// "鏃犱换鍔″紓甯�" // 澶囨敞 +//// ); +//// if (!basShuttleErrLogService.insert(basShuttleErrLog)) { +//// News.error("鍥涘悜绌挎杞lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", shuttleSlave.getId(), errName); +//// } +//// } +//// // 鏃犲紓甯� +//// } else { +//// // 寮傚父淇 +//// if (latest != null && latest.getStatus() == 1) { +//// latest.setEndTime(now); +//// latest.setUpdateTime(now); +//// latest.setStatus(2); +//// if (!basShuttleErrLogService.updateById(latest)) { +//// News.error("鍥涘悜绌挎杞lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", shuttleSlave.getId(), latest.getId()); +//// } +//// } +//// } +// } +// } +// } +// +// /** +// * 鎻愬崌鏈哄紓甯镐俊鎭褰� +// */ +// private void recLiftErr() { +// Date now = new Date(); +// for (LiftSlave liftSlave : slaveProperties.getLift()) { +// // 鑾峰彇鎻愬崌鏈轰俊鎭� +// LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId()); +// if (liftThread == null) { +// continue; +// } +// LiftProtocol liftProtocol = liftThread.getLiftProtocol(); +// if (liftProtocol == null) { +// continue; +// } +// +// if (liftProtocol.getTaskNo() != 0) { +// //鏈変换鍔� +// BasLiftErrLog latest = basLiftErrLogService.findLatestByTaskNo(liftSlave.getId(), liftProtocol.getTaskNo().intValue()); +// // 鏈夊紓甯� +// if (latest == null) { +// if (liftProtocol.getDeviceError() != null && liftProtocol.getDeviceError()) { +// WrkMast wrkMast = wrkMastMapper.selectById(liftProtocol.getTaskNo()); +// if (wrkMast == null) { +// continue; +// } +// +// String errName = ""; +// if (liftProtocol.getFrontOverrun()) { +// errName = "鍓嶈秴闄�"; +// } else if (liftProtocol.getBackOverrun()) { +// errName = "鍚庤秴闄�"; +// } else if (liftProtocol.getLeftOverrun()) { +// errName = "宸﹁秴闄�"; +// } else if (liftProtocol.getRightOverrun()) { +// errName = "鍙宠秴闄�"; +// } else if (liftProtocol.getOverHeight()) { +// errName = "瓒呴珮"; +// } else if (liftProtocol.getOverWeight()) { +// errName = "瓒呴噸"; +// } +// +// BasLiftErrLog basLiftErrLog = new BasLiftErrLog( +// null, // 缂栧彿 +// wrkMast.getWrkNo(), // 宸ヤ綔鍙� +// now, // 鍙戠敓鏃堕棿 +// null, // 缁撴潫鏃堕棿 +// wrkMast.getWrkSts(), // 宸ヤ綔鐘舵�� +// wrkMast.getIoType(), // 鍏ュ嚭搴撶被鍨� +// liftSlave.getId(), // 鎻愬崌鏈� +// null, // plc +// wrkMast.getLocNo(), // 鐩爣搴撲綅 +// wrkMast.getStaNo(), // 鐩爣绔� +// wrkMast.getSourceStaNo(), // 婧愮珯 +// wrkMast.getSourceLocNo(), // 婧愬簱浣� +// wrkMast.getBarcode(), // 鏉$爜 +// null, // 寮傚父鐮� +// errName, // 寮傚父 +// 1, // 寮傚父鎯呭喌 +// now, // 娣诲姞鏃堕棿 +// null, // 娣诲姞浜哄憳 +// now, // 淇敼鏃堕棿 +// null, // 淇敼浜哄憳 +// "浠诲姟涓紓甯�", // 澶囨敞 +// JSON.toJSONString(liftProtocol) // 绯荤粺鐘舵�佹暟鎹� +// ); +// if (!basLiftErrLogService.insert(basLiftErrLog)) { +// News.error("鎻愬崌鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", liftSlave.getId(), errName); +// } +// } +// } else { +// // 寮傚父淇 +// if (liftProtocol.getDeviceError() == null || !liftProtocol.getDeviceError()) { +// latest.setEndTime(now); +// latest.setUpdateTime(now); +// latest.setStatus(2); +// if (!basLiftErrLogService.updateById(latest)) { +// News.error("鎻愬崌鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", liftSlave.getId(), latest.getId()); +// } +// } +// } +// } +// } +// } // ------------------------------------------------------------------------------- - /** - * 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐� - */ - public void storeEmptyPlt(){ - try { - for (DevpSlave devp : slaveProperties.getDevp()) { - // 閬嶅巻绌烘澘鍏ュ簱鍙� - for (DevpSlave.Sta emptyInSta : devp.getEmptyInSta()) { - // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭� - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); - StaProtocol staProtocol = devpThread.getStation().get(emptyInSta.getStaNo()); - if (staProtocol == null) { - continue; - } else { - staProtocol = staProtocol.clone(); - } - // 绔欑偣鏉′欢鍒ゆ柇 - if (staProtocol.isAutoing() - && staProtocol.isLoading() - && staProtocol.isInEnable() - && staProtocol.isEmptyMk() - && (staProtocol.getWorkNo() == 0 || (staProtocol.getWorkNo() >= 9990 || staProtocol.getWorkNo() <= 9999)) - && staProtocol.isPakMk()) { - - // 鑾峰彇鏉$爜鎵弿浠俊鎭� - String barcode = null; - BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, emptyInSta.getBarcode()); - if (barcodeThread != null) { - String barcode0 = barcodeThread.getBarcode(); - if (!Cools.isEmpty(barcode0)) { -// News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", emptyInSta.getBarcode(), barcode0); - if (!"NG".endsWith(barcode0) && !"NoRead".equals(barcode0) && !"empty".equals(barcode0)) { - barcode = barcode0; - } - } - } - - if (!Cools.isEmpty(barcode)) { - WrkMast wrkMast = wrkMastMapper.selectByBarcode(barcode);//鏉$爜瀛樺湪宸ヤ綔妗� - if (wrkMast != null) { - continue; - } - } - - LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, emptyInSta.getLed()); - - try { - LocTypeDto locTypeDto = new LocTypeDto(staProtocol); - - SearchLocParam param = new SearchLocParam(); - param.setIoType(10); - if (!Cools.isEmpty(barcode)) { - param.setBarcode(barcode); - } - param.setSourceStaNo(emptyInSta.getStaNo()); -// param.setLocType1(locTypeDto.getLocType1()); - String response = new HttpHandler.Builder() - .setUri(wmsUrl) - .setPath("/rpc/pakin/loc/v2") - .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); - barcodeThread.setBarcode(""); -// // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 -// staProtocol.setWorkNo(dto.getWorkNo().shortValue()); -// staProtocol.setStaNo(dto.getStaNo().shortValue()); -// devpThread.setPakMk(staProtocol.getSiteId(), false); -// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); -// if (!result) { -// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); +// /** +// * 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐� +// */ +// public void storeEmptyPlt(){ +// try { +// for (DevpSlave devp : slaveProperties.getDevp()) { +// // 閬嶅巻绌烘澘鍏ュ簱鍙� +// for (DevpSlave.Sta emptyInSta : devp.getEmptyInSta()) { +// // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭� +// DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); +// StaProtocol staProtocol = devpThread.getStation().get(emptyInSta.getStaNo()); +// if (staProtocol == null) { +// continue; +// } else { +// staProtocol = staProtocol.clone(); +// } +// // 绔欑偣鏉′欢鍒ゆ柇 +// if (staProtocol.isAutoing() +// && staProtocol.isLoading() +// && staProtocol.isInEnable() +// && staProtocol.isEmptyMk() +// && (staProtocol.getWorkNo() == 0 || (staProtocol.getWorkNo() >= 9990 || staProtocol.getWorkNo() <= 9999)) +// && staProtocol.isPakMk()) { +// +// // 鑾峰彇鏉$爜鎵弿浠俊鎭� +// String barcode = null; +// BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, emptyInSta.getBarcode()); +// if (barcodeThread != null) { +// String barcode0 = barcodeThread.getBarcode(); +// if (!Cools.isEmpty(barcode0)) { +//// News.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", emptyInSta.getBarcode(), barcode0); +// if (!"NG".endsWith(barcode0) && !"NoRead".equals(barcode0) && !"empty".equals(barcode0)) { +// barcode = barcode0; +// } // } - } else { - if (ledThread != null) { - String errorMsg = jsonObject.getString("msg"); - if (!Cools.isEmpty(errorMsg)) { - MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(3, errorMsg)); - } - } - News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v2", JSON.toJSONString(param), response); - } - } catch (Exception e) { - e.printStackTrace(); - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } - - } - - - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } +// } +// +// if (!Cools.isEmpty(barcode)) { +// WrkMast wrkMast = wrkMastMapper.selectByBarcode(barcode);//鏉$爜瀛樺湪宸ヤ綔妗� +// if (wrkMast != null) { +// continue; +// } +// } +// +// LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, emptyInSta.getLed()); +// +// try { +// LocTypeDto locTypeDto = new LocTypeDto(staProtocol); +// +// SearchLocParam param = new SearchLocParam(); +// param.setIoType(10); +// if (!Cools.isEmpty(barcode)) { +// param.setBarcode(barcode); +// } +// param.setSourceStaNo(emptyInSta.getStaNo()); +//// param.setLocType1(locTypeDto.getLocType1()); +// String response = new HttpHandler.Builder() +// .setUri(wmsUrl) +// .setPath("/rpc/pakin/loc/v2") +// .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); +// barcodeThread.setBarcode(""); +//// // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 +//// staProtocol.setWorkNo(dto.getWorkNo().shortValue()); +//// staProtocol.setStaNo(dto.getStaNo().shortValue()); +//// devpThread.setPakMk(staProtocol.getSiteId(), false); +//// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); +//// if (!result) { +//// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); +//// } +// } else { +// if (ledThread != null) { +// String errorMsg = jsonObject.getString("msg"); +// if (!Cools.isEmpty(errorMsg)) { +// MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(3, errorMsg)); +// } +// } +// News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v2", JSON.toJSONString(param), response); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); +// } +// +// } +// +// +// } +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } /** * 鍑哄簱 ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣� @@ -2531,220 +1864,220 @@ // } } - /** - * 鍥涘悜绌挎杞︾數閲忔娴� ===>> 鍙戣捣鍏呯數 - */ - public synchronized void loopShuttleCharge() { - try { - for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { - //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - continue; - } - - //鍒ゆ柇褰撳墠灏忚溅鏄惁婊¤冻闇�瑕佸厖鐢佃姹� - if (!shuttleProtocol.isRequireCharge()) { - continue; - } - - WrkCharge wrkCharge = wrkChargeService.selectWorking(shuttleProtocol.getShuttleNo().intValue()); - if (wrkCharge != null) {//宸叉湁鍏呯數浠诲姟 - continue; - } - - //灏忚溅鎵�鍦ㄦゼ灞� - int lev = Utils.getLev(shuttleProtocol.getCurrentLocNo()); - ShuttleChargeType shuttleCharge = null; - - //鎼滅储灏忚溅鎵�鍦ㄦゼ灞傛湁娌℃湁鍏呯數妗� - for (ShuttleChargeType chargeType : ShuttleChargeType.values()) { - if (lev != Utils.getLev(chargeType.locNo)) { - continue;//灏忚溅鍜屽厖鐢垫々涓嶅湪鍚屼竴灞� - } - - //灏忚溅鍜屽厖鐢垫々鍦ㄥ悓涓�灞� - if (wrkChargeService.selectWorkingOfCharge(chargeType.id) == null) { - shuttleCharge = chargeType; - break; - } - } - - if (shuttleCharge == null) { - //鍚屾ゼ灞傛病鏈夋壘鍒板厖鐢垫々锛屾壘鍙敤鍏呯數妗� - //灏忚溅鍚屾ゼ灞傛病鏈夊厖鐢垫々锛屽彧瑕佸厖鐢垫々鍙敤灏辩敓鎴愬厖鐢典换鍔� - for (ShuttleChargeType chargeType : ShuttleChargeType.values()) { - if (wrkChargeService.selectWorkingOfCharge(chargeType.id) == null) { - //鍒ゆ柇褰撳墠鍏呯數妗╂ゼ灞傛槸鍚︽湁灏忚溅锛屽鏈夊皬杞︼紝涓嶅垎閰嶈鍏呯數妗� - int chargeLev = Utils.getLev(chargeType.locNo);//鍏呯數妗╂ゼ灞� - boolean checkLevHasShuttle = Utils.checkLevHasShuttle(chargeLev);//妫�娴嬫ゼ灞傛槸鍚︽湁绌挎杞� - if (checkLevHasShuttle) { - //褰撳墠鍏呯數妗╂ゼ灞傛湁绌挎杞︼紝涓嶅垎閰嶈鍏呯數妗� - continue; - } - - shuttleCharge = chargeType; - break; - } - } - } - - if (shuttleCharge == null) { - continue; - } - - String chargeLocNo = shuttleCharge.locNo; - wrkCharge = new WrkCharge(); - wrkCharge.setShuttleNo(shuttle.getId()); - wrkCharge.setCharge(shuttleCharge.id); - wrkCharge.setWrkNo(commonService.getChargeWorkNo(4)); - wrkCharge.setWrkSts(51L); // 51.鍑嗗鍏呯數 - wrkCharge.setIoPri((double) 10); - wrkCharge.setLocNo(chargeLocNo); - wrkCharge.setMemo("charge"); - wrkCharge.setAppeTime(new Date()); - if (!wrkChargeService.insert(wrkCharge)) { - News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", shuttle.getId()); - continue; - } - - News.info("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟鎴愬姛!!!", shuttle.getId()); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 鎵ц鍥涘悜绌挎杞﹀厖鐢典换鍔� - */ - public synchronized void executeShuttleCharge() { - try { - for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { - WrkCharge wrkCharge = wrkChargeService.selectWorking(shuttle.getId()); - if (wrkCharge == null) { - continue; - } - - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkCharge.getShuttleNo()); - if (shuttleThread == null) { - continue; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - continue; - } - - if (wrkCharge.getWrkSts() == 51) { - if (!shuttleProtocol.isIdleNoCharge()) { - continue; - } - - if (shuttleProtocol.getSuspendState() == 1) { - continue;//绠″埗涓� - } - - if (!shuttleProtocol.getCurrentLocNo().equals(wrkCharge.getLocNo())) { - //灏忚溅涓嶅湪鍏呯數妗╀綅缃� - shuttleDispatchUtils.dispatchShuttle(wrkCharge.getWrkNo(), wrkCharge.getLocNo(), shuttle.getId());//璋冨害灏忚溅鍘诲厖鐢垫々 - continue; - } - - //灏忚溅宸茬粡鍦ㄥ厖鐢垫々浣嶇疆锛屼笅鍙戝厖鐢靛懡浠� - NyShuttleHttpCommand chargeCommand = NyHttpUtils.getChargeCommand(shuttle.getId(), wrkCharge.getWrkNo(), true); - ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); - commands.add(chargeCommand); - //鍒涘缓鍒嗛厤鍛戒护 - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿 - assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());//浠诲姟鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE.id.shortValue());//鍑哄簱妯″紡 - assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) - assignCommand.setCommands(commands);//杩愯鍛戒护 - - wrkCharge.setWrkSts(52L);//51.鐢熸垚鍏呯數浠诲姟 => 52.灏忚溅鍘诲厖鐢典腑 - wrkCharge.setModiTime(new Date()); - if (wrkChargeMapper.updateById(wrkCharge) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); - } - } else if (wrkCharge.getWrkSts() == 52) { - //妫�娴嬪皬杞︽槸鍚︽弧鐢� - - //鑾峰彇婊$數闃堝�� - int maxPower = 95; - EntityWrapper<Config> wrapper = new EntityWrapper<>(); - wrapper.eq("code", "chargeMaxValue"); - Config config = configService.selectOne(wrapper); - if (config != null) { - maxPower = Integer.parseInt(config.getValue()); - } - - if (shuttleProtocol.getPowerPercent() < maxPower) { - continue; - } - - //***************鍒ゆ柇鏄惁婊″厖鏍″噯*************** - EntityWrapper<Config> wrapper1 = new EntityWrapper<>(); - wrapper.eq("code", "shuttleMaxPowerVerify"); - Config config1 = configService.selectOne(wrapper1); - if (config1 != null) { - if (config1.getValue().equals("true")) { - if (shuttleProtocol.getVoltage() < 5630) { - continue;//鐢靛帇涓嶅缁х画鍏呯數 - } - } - } - //***************鍒ゆ柇鏄惁婊″厖鏍″噯*************** - - //灏忚溅婊$數锛岀粨鏉熷厖鐢典换鍔� - NyShuttleHttpCommand chargeCommand = NyHttpUtils.getChargeCommand(shuttle.getId(), wrkCharge.getWrkNo(), false); - ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); - commands.add(chargeCommand); - //鍒涘缓鍒嗛厤鍛戒护 - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿 - assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());//浠诲姟鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE.id.shortValue());//鍑哄簱妯″紡 - assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) - assignCommand.setCommands(commands);//杩愯鍛戒护 - - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); - try { - Thread.sleep(3000); - } catch (Exception e) { - e.printStackTrace(); - } - - wrkCharge.setWrkSts(53L);//52.灏忚溅鍘诲厖鐢典腑 => 53.灏忚溅鍏呯數瀹屾垚 - wrkCharge.setModiTime(new Date()); - if (wrkChargeMapper.updateById(wrkCharge) > 0) { - shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE.id); - shuttleProtocol.setTaskNo(0); - shuttleProtocol.setPakMk(false); - } - } else if (wrkCharge.getWrkSts() == 53) { - if (shuttleProtocol.getChargState() == 0) {//灏忚溅澶勪簬鏈厖鐢电姸鎬� - boolean result = Utils.searchEmptyGroupToMoveShuttle(Utils.getLev(wrkCharge.getLocNo()), shuttleThread.getSlave().getId(), shuttleThread); - if (!result) { - continue; - } - - wrkCharge.setWrkSts(60L);//53.灏忚溅鍏呯數瀹屾垚 => 60.鍏呯數浠诲姟瀹屾垚 - wrkCharge.setModiTime(new Date()); - if (wrkChargeMapper.updateById(wrkCharge) > 0) { - - } - } - } - - } - } catch (Exception e) { - e.printStackTrace(); - } - } +// /** +// * 鍥涘悜绌挎杞︾數閲忔娴� ===>> 鍙戣捣鍏呯數 +// */ +// public synchronized void loopShuttleCharge() { +// try { +// for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { +// //鑾峰彇鍥涘悜绌挎杞︾嚎绋� +// NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); +// NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); +// if (shuttleProtocol == null) { +// continue; +// } +// +// //鍒ゆ柇褰撳墠灏忚溅鏄惁婊¤冻闇�瑕佸厖鐢佃姹� +// if (!shuttleProtocol.isRequireCharge()) { +// continue; +// } +// +// WrkCharge wrkCharge = wrkChargeService.selectWorking(shuttleProtocol.getShuttleNo().intValue()); +// if (wrkCharge != null) {//宸叉湁鍏呯數浠诲姟 +// continue; +// } +// +// //灏忚溅鎵�鍦ㄦゼ灞� +// int lev = Utils.getLev(shuttleProtocol.getCurrentLocNo()); +// ShuttleChargeType shuttleCharge = null; +// +// //鎼滅储灏忚溅鎵�鍦ㄦゼ灞傛湁娌℃湁鍏呯數妗� +// for (ShuttleChargeType chargeType : ShuttleChargeType.values()) { +// if (lev != Utils.getLev(chargeType.locNo)) { +// continue;//灏忚溅鍜屽厖鐢垫々涓嶅湪鍚屼竴灞� +// } +// +// //灏忚溅鍜屽厖鐢垫々鍦ㄥ悓涓�灞� +// if (wrkChargeService.selectWorkingOfCharge(chargeType.id) == null) { +// shuttleCharge = chargeType; +// break; +// } +// } +// +// if (shuttleCharge == null) { +// //鍚屾ゼ灞傛病鏈夋壘鍒板厖鐢垫々锛屾壘鍙敤鍏呯數妗� +// //灏忚溅鍚屾ゼ灞傛病鏈夊厖鐢垫々锛屽彧瑕佸厖鐢垫々鍙敤灏辩敓鎴愬厖鐢典换鍔� +// for (ShuttleChargeType chargeType : ShuttleChargeType.values()) { +// if (wrkChargeService.selectWorkingOfCharge(chargeType.id) == null) { +// //鍒ゆ柇褰撳墠鍏呯數妗╂ゼ灞傛槸鍚︽湁灏忚溅锛屽鏈夊皬杞︼紝涓嶅垎閰嶈鍏呯數妗� +// int chargeLev = Utils.getLev(chargeType.locNo);//鍏呯數妗╂ゼ灞� +// boolean checkLevHasShuttle = Utils.checkLevHasShuttle(chargeLev);//妫�娴嬫ゼ灞傛槸鍚︽湁绌挎杞� +// if (checkLevHasShuttle) { +// //褰撳墠鍏呯數妗╂ゼ灞傛湁绌挎杞︼紝涓嶅垎閰嶈鍏呯數妗� +// continue; +// } +// +// shuttleCharge = chargeType; +// break; +// } +// } +// } +// +// if (shuttleCharge == null) { +// continue; +// } +// +// String chargeLocNo = shuttleCharge.locNo; +// wrkCharge = new WrkCharge(); +// wrkCharge.setShuttleNo(shuttle.getId()); +// wrkCharge.setCharge(shuttleCharge.id); +// wrkCharge.setWrkNo(commonService.getChargeWorkNo(4)); +// wrkCharge.setWrkSts(51L); // 51.鍑嗗鍏呯數 +// wrkCharge.setIoPri((double) 10); +// wrkCharge.setLocNo(chargeLocNo); +// wrkCharge.setMemo("charge"); +// wrkCharge.setAppeTime(new Date()); +// if (!wrkChargeService.insert(wrkCharge)) { +// News.error("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟澶辫触!!!", shuttle.getId()); +// continue; +// } +// +// News.info("淇濆瓨{}鍙峰洓鍚戠┛姊溅鍏呯數浠诲姟鎴愬姛!!!", shuttle.getId()); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } +// +// /** +// * 鎵ц鍥涘悜绌挎杞﹀厖鐢典换鍔� +// */ +// public synchronized void executeShuttleCharge() { +// try { +// for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { +// WrkCharge wrkCharge = wrkChargeService.selectWorking(shuttle.getId()); +// if (wrkCharge == null) { +// continue; +// } +// +// NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkCharge.getShuttleNo()); +// if (shuttleThread == null) { +// continue; +// } +// NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); +// if (shuttleProtocol == null) { +// continue; +// } +// +// if (wrkCharge.getWrkSts() == 51) { +// if (!shuttleProtocol.isIdleNoCharge()) { +// continue; +// } +// +// if (shuttleProtocol.getSuspendState() == 1) { +// continue;//绠″埗涓� +// } +// +// if (!shuttleProtocol.getCurrentLocNo().equals(wrkCharge.getLocNo())) { +// //灏忚溅涓嶅湪鍏呯數妗╀綅缃� +// shuttleDispatchUtils.dispatchShuttle(wrkCharge.getWrkNo(), wrkCharge.getLocNo(), shuttle.getId());//璋冨害灏忚溅鍘诲厖鐢垫々 +// continue; +// } +// +// //灏忚溅宸茬粡鍦ㄥ厖鐢垫々浣嶇疆锛屼笅鍙戝厖鐢靛懡浠� +// NyShuttleHttpCommand chargeCommand = NyHttpUtils.getChargeCommand(shuttle.getId(), wrkCharge.getWrkNo(), true); +// ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); +// commands.add(chargeCommand); +// //鍒涘缓鍒嗛厤鍛戒护 +// ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); +// assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿 +// assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());//浠诲姟鍙� +// assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE.id.shortValue());//鍑哄簱妯″紡 +// assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) +// assignCommand.setCommands(commands);//杩愯鍛戒护 +// +// wrkCharge.setWrkSts(52L);//51.鐢熸垚鍏呯數浠诲姟 => 52.灏忚溅鍘诲厖鐢典腑 +// wrkCharge.setModiTime(new Date()); +// if (wrkChargeMapper.updateById(wrkCharge) > 0) { +// //涓嬪彂浠诲姟 +// MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); +// } +// } else if (wrkCharge.getWrkSts() == 52) { +// //妫�娴嬪皬杞︽槸鍚︽弧鐢� +// +// //鑾峰彇婊$數闃堝�� +// int maxPower = 95; +// EntityWrapper<Config> wrapper = new EntityWrapper<>(); +// wrapper.eq("code", "chargeMaxValue"); +// Config config = configService.selectOne(wrapper); +// if (config != null) { +// maxPower = Integer.parseInt(config.getValue()); +// } +// +// if (shuttleProtocol.getPowerPercent() < maxPower) { +// continue; +// } +// +// //***************鍒ゆ柇鏄惁婊″厖鏍″噯*************** +// EntityWrapper<Config> wrapper1 = new EntityWrapper<>(); +// wrapper.eq("code", "shuttleMaxPowerVerify"); +// Config config1 = configService.selectOne(wrapper1); +// if (config1 != null) { +// if (config1.getValue().equals("true")) { +// if (shuttleProtocol.getVoltage() < 5630) { +// continue;//鐢靛帇涓嶅缁х画鍏呯數 +// } +// } +// } +// //***************鍒ゆ柇鏄惁婊″厖鏍″噯*************** +// +// //灏忚溅婊$數锛岀粨鏉熷厖鐢典换鍔� +// NyShuttleHttpCommand chargeCommand = NyHttpUtils.getChargeCommand(shuttle.getId(), wrkCharge.getWrkNo(), false); +// ArrayList<NyShuttleHttpCommand> commands = new ArrayList<>(); +// commands.add(chargeCommand); +// //鍒涘缓鍒嗛厤鍛戒护 +// ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); +// assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//鍥涘悜绌挎杞﹀彿 +// assignCommand.setTaskNo(wrkCharge.getWrkNo().shortValue());//浠诲姟鍙� +// assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE.id.shortValue());//鍑哄簱妯″紡 +// assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣�(灏忚溅褰撳墠浣嶇疆) +// assignCommand.setCommands(commands);//杩愯鍛戒护 +// +// //涓嬪彂浠诲姟 +// MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); +// try { +// Thread.sleep(3000); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// +// wrkCharge.setWrkSts(53L);//52.灏忚溅鍘诲厖鐢典腑 => 53.灏忚溅鍏呯數瀹屾垚 +// wrkCharge.setModiTime(new Date()); +// if (wrkChargeMapper.updateById(wrkCharge) > 0) { +// shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE.id); +// shuttleProtocol.setTaskNo(0); +// shuttleProtocol.setPakMk(false); +// } +// } else if (wrkCharge.getWrkSts() == 53) { +// if (shuttleProtocol.getChargState() == 0) {//灏忚溅澶勪簬鏈厖鐢电姸鎬� +// boolean result = Utils.searchEmptyGroupToMoveShuttle(Utils.getLev(wrkCharge.getLocNo()), shuttleThread.getSlave().getId(), shuttleThread); +// if (!result) { +// continue; +// } +// +// wrkCharge.setWrkSts(60L);//53.灏忚溅鍏呯數瀹屾垚 => 60.鍏呯數浠诲姟瀹屾垚 +// wrkCharge.setModiTime(new Date()); +// if (wrkChargeMapper.updateById(wrkCharge) > 0) { +// +// } +// } +// } +// +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } /** * 鎵ц灏忚溅绉诲簱浠诲姟 @@ -2752,25 +2085,15 @@ public synchronized void shuttleMoveExecute() { try { //鏌ヨ灏忚溅绉诲簱浠诲姟 - List<WrkMast> wrkMasts = wrkMastMapper.selectShuttleMoveWrk(); + List<WrkMast> wrkMasts = wrkMastService.selectShuttleMoveWrk(); for (WrkMast wrkMast : wrkMasts) { boolean stepMoveSta = this.shuttleMoveExecuteStepMoveSta(wrkMast);//灏忚溅绉诲姩鍒扮珯鐐� if (!stepMoveSta) { continue; } - boolean stepIntoLift = this.shuttleMoveExecuteStepIntoLift(wrkMast);//灏忚溅杩佸叆鎻愬崌鏈� - if (!stepIntoLift) { - continue; - } - boolean stepLiftMove = this.shuttleMoveExecuteStepLiftMove(wrkMast);//鎻愬崌鏈烘惉杩愪腑 if (!stepLiftMove) { - continue; - } - - boolean stepOutLift = this.shuttleMoveExecuteStepOutLift(wrkMast);//灏忚溅杩佸嚭鎻愬崌鏈� - if (!stepOutLift) { continue; } @@ -2794,284 +2117,92 @@ //--------------------------------------灏忚溅绉诲姩鑷崇珯鐐�-----------------------------------------// Date now = new Date(); - //灏忚溅绉诲姩鑷崇珯鐐� 101.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 102.灏忚溅绉诲姩鑷崇珯鐐逛腑 - if (wrkMast.getWrkSts() == 101) { + //灏忚溅绉诲姩鑷崇珯鐐� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷崇珯鐐逛腑 + if (wrkMast.getWrkSts() == WrkStsType.NEW_MOVE.sts) { //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); if (shuttleThread == null) { return false; } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); if (shuttleProtocol == null) { return false; } //灏忚溅澶勪簬绌洪棽鐘舵�� - if (!shuttleProtocol.isIdleNoCharge(wrkMast.getWrkNo())) { + if (!shuttleThread.isIdle()) { News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false; } - //鍒ゆ柇灏忚溅浠ょ墝鏄惁鏈鍗犻 - if (shuttleProtocol.getToken() != 0) { - News.info("{}浠诲姟锛寋}灏忚溅锛屼护鐗屽凡琚嫭鍗狅紝绂佹娲惧彂", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false;//灏忚溅宸茶鐙崰锛岀姝㈠啀娲惧彂浠诲姟 - } - - if (Utils.getLev(wrkMast.getLocNo()) == shuttleProtocol.getPoint().getZ()) { + if (Utils.getLev(wrkMast.getLocNo()) == Utils.getLev(shuttleProtocol.getCurrentLocNo())) { //鐩爣搴撲綅鍜屽皬杞﹀簱浣嶅浜庡悓涓�妤煎眰锛屼笉闇�瑕侀�氳繃鎻愬崌鏈鸿皟搴� - wrkMast.setWrkSts(109L);// 109.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 110.灏忚溅绉诲姩涓� + wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts);// 309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓� wrkMast.setModiTime(now); - shuttleProtocol.setToken(wrkMast.getWrkNo());//鐙崰璇ュ皬杞︿护鐗� - if (wrkMastMapper.updateById(wrkMast) > 0) { + if (wrkMastService.updateById(wrkMast)) { //涓嬪彂浠诲姟 - return true;//鐩存帴杩涘叆109.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 110.灏忚溅绉诲姩涓� + return true;//鐩存帴杩涘叆309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓� } return false; } //鑾峰彇婧愯緭閫佺珯 - LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo()); + ForkLiftStaProtocol liftSta = ForkLiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo()); if (liftSta == null) { return false;//鎵句笉鍒扮珯鐐� } //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟(璇ヤ换鍔¢渶瑕佹崲灞傚繀椤绘彁鍓嶇嫭鍗犳彁鍗囨満) - WrkMast liftWrkMast = wrkMastMapper.selectLiftWrkMast(liftSta.getLiftNo()); + WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(liftSta.getLiftNo()); if (liftWrkMast != null) { News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftSta.getLiftNo()); return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� } + ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); + assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙� + assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟 + assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙� + assignCommand.setAuto(true);//鑷姩妯″紡 + + //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠� + List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftSta.getLocNo(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread); + if (commands == null) { + News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); + return false;//璺緞瑙i攣澶辫触 + } + + assignCommand.setCommands(commands); + //*************灏濊瘯閿佸畾鐩爣绔欒矾寰�*************** - List<NavigateNode> targetNodes = NyLiftUtils.getLiftStaNodes(wrkMast.getStaNo()); + List<NavigateNode> targetNodes = ForkLiftUtils.getLiftStaNodes(wrkMast.getStaNo()); if (targetNodes == null) { return false;//鏈幏鍙栧埌鑺傜偣 } - boolean checkPathIsAvailable = NavigateUtils.checkPathIsAvailable(targetNodes, shuttleProtocol.getShuttleNo().intValue(), Utils.getLev(wrkMast.getLocNo()), null); + boolean checkPathIsAvailable = navigateUtils.checkPathIsAvailable(targetNodes, shuttleProtocol.getShuttleNo(), Utils.getLev(wrkMast.getLocNo())); if (!checkPathIsAvailable) { News.info("{}浠诲姟锛寋}灏忚溅锛岀洰鏍囩珯鐐硅矾寰勮鍗犵敤锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false;//妫�娴嬬洰鏍囩珯鐐硅矾寰勬槸鍚︽湭琚崰鐢� } //灏濊瘯閿佸畾鐩爣绔欒矾寰� - boolean result2 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), shuttleProtocol.getShuttleNo().intValue(), targetNodes, true);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� + boolean result2 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), shuttleProtocol.getShuttleNo(), targetNodes, true);//鎵�浣跨敤鐨勮矾寰勮繘琛岄攣瀹氱鐢� if (!result2) { News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勯攣瀹氬け璐ワ紝绂佹娲惧彂", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false;//璺緞閿佸畾澶辫触 } //*************灏濊瘯閿佸畾鐩爣绔欒矾寰�*************** - //鑾峰彇灏忚溅鍒拌緭閫佺珯鐐硅璧板懡浠� - NyShuttleOperaResult result = NyShuttleOperaUtils.getStartToTargetCommands(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), liftSta.getLocNo(), NavigationMapType.NORMAL.id); - if (result == null) { - //璺緞鑾峰彇澶辫触锛岄渶瑕佽В閿佷笂闈㈤攣瀹氱殑璺緞 - //灏濊瘯瑙i攣鐩爣绔欒矾寰� - boolean result3 = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), shuttleProtocol.getShuttleNo().intValue(), targetNodes, false);//鎵�浣跨敤鐨勮矾寰勮繘琛岃В閿� - if (!result3) { - News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勮В閿佸け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false;//璺緞瑙i攣澶辫触 - } - News.info("{}浠诲姟锛寋}灏忚溅锛岃矾寰勮绠楀け璐�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false;//璺緞瑙i攣澶辫触 - } - List<NyShuttleHttpCommand> commands = result.getCommands(); - - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO.id.shortValue());//灏忚溅绉诲簱浠诲姟 - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙� - assignCommand.setAuto(true);//鑷姩妯″紡 - assignCommand.setCommands(commands); - assignCommand.setNodes(result.getNodes()); - - wrkMast.setWrkSts(102L);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 101.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 102.灏忚溅绉诲姩鑷崇珯鐐� + wrkMast.setWrkSts(WrkStsType.MOVE_SITE.sts);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 301.鐢熸垚灏忚溅绉诲簱浠诲姟 ==> 302.灏忚溅绉诲姩鑷崇珯鐐� wrkMast.setModiTime(now); wrkMast.setLiftNo(liftSta.getLiftNo());//鎻愬墠閿佸畾鎻愬崌鏈� - shuttleProtocol.setToken(wrkMast.getWrkNo());//鐙崰璇ュ皬杞︿护鐗� - if (wrkMastMapper.updateById(wrkMast) > 0) { +// shuttleProtocol.setToken(wrkMast.getWrkNo());//鐙崰璇ュ皬杞︿护鐗� + if (wrkMastService.updateById(wrkMast)) { //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); + shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); return false; } return false; } - return true; - } - - /** - * 灏忚溅杩佺Щ-灏忚溅杩佸叆鎻愬崌鏈� - * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false - * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue - */ - private boolean shuttleMoveExecuteStepIntoLift(WrkMast wrkMast) { - //--------------------------------------灏忚溅杩佸叆鎻愬崌鏈�-----------------------------------------// - Date now = new Date(); - - //灏忚溅绉诲姩鍒版彁鍗囨満涓� 103.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 104.灏忚溅杩佸叆鎻愬崌鏈轰腑 - if (wrkMast.getWrkSts() == 103) { - //鑾峰彇婧愮珯 - LiftStaProtocol sourceLiftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo()); - if (sourceLiftSta == null) { - return false;//鎵句笉鍒扮珯鐐� - } - - //鑾峰彇鐩爣杈撻�佺珯 - LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo()); - if (liftSta == null) { - return false;//鎵句笉鍒扮珯鐐� - } - - //鑾峰彇鎻愬崌鏈烘暟鎹� - BasLift basLift = basLiftService.selectById(liftSta.getLiftNo()); - if (basLift == null) { - return false;//娌℃湁鎻愬崌鏈烘暟鎹� - } - - if (basLift.getPoint() == null) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾病鏈夋彁鍗囨満鐐逛綅鍧愭爣锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), basLift.getLiftNo()); - return false;//娌℃湁璁剧疆鎻愬崌鏈虹偣浣嶅潗鏍� - } - - //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 - WrkMast liftWrkMast = wrkMastMapper.selectLiftWrkMast(basLift.getLiftNo()); - if (liftWrkMast != null) { - if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚� - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), basLift.getLiftNo()); - return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� - } - } - - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSta.getLiftNo()); - if (liftThread == null) { - return false; - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - return false; - } - - if (!liftProtocol.isIdle(wrkMast.getWrkNo().shortValue())) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), basLift.getLiftNo()); - return false; - } - - //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); - if (shuttleThread == null) { - return false; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - return false; - } - - //灏忚溅澶勪簬绌洪棽鐘舵�� - if (!shuttleProtocol.isIdleNoCharge(wrkMast.getWrkNo())) { - News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - - //灏忚溅浠ょ墝鏄惁琚换鍔$嫭鍗� - if (!shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { - News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞︿护鐗岃鐙崰锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - - //鍒ゆ柇鎻愬崌鏈烘ゼ灞� - if (liftProtocol.getLev().intValue() != shuttleProtocol.getPoint().getZ()) { - //鎻愬崌鏈轰笉鍦ㄥ皬杞︽ゼ灞� - //璋冨害鎻愬崌鏈� - - if (liftProtocol.getToken() != 0) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満浠ょ墝琚嫭鍗狅紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//鎻愬崌鏈轰护鐗岃鍗犵敤 - } - - //鑾峰彇鎻愬崌鏈哄懡浠わ紝璋冨害鎻愬崌鏈哄埌婧愮珯浣嶇疆 - NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_CAR.id, sourceLiftSta.getStaNo(), sourceLiftSta.getStaNo(), wrkMast.getWrkNo()); - - int deviceWrk = commonService.getWorkNo(8);//鐢熸垚鎻愬崌鏈鸿澶囧伐浣滃彿 - BasLiftOpt basLiftOpt = basLiftOptService.selectByDeviceWrk(String.valueOf(deviceWrk), liftThread.getSlave().getId()); - if (basLiftOpt != null) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛岃澶囧伐浣滃彿鍑虹幇閲嶅鎯呭喌锛岃鑱旂郴鎶�鏈汉鍛樻敮鎸併��", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false; - } - liftCommand.setTaskNo((short) deviceWrk);//鏇存崲闅忔満浠诲姟鍙� - - ArrayList<NyLiftCommand> commands = new ArrayList<>(); - commands.add(liftCommand); - - //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 - LiftAssignCommand assignCommand = new LiftAssignCommand(); - assignCommand.setCommands(commands); - assignCommand.setLiftNo(liftProtocol.getLiftNo()); - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); - assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_CAR.id.shortValue()); - assignCommand.setAuto(false); - - wrkMast.setLiftNo(liftThread.getSlave().getId());//閿佸畾鎻愬崌鏈洪槻姝㈣鍗犵敤 - wrkMast.setModiTime(now); - liftProtocol.setToken(wrkMast.getShuttleNo());//鎻愬崌鏈轰护鐗岀粦瀹氬綋鍓嶅皬杞� - if (wrkMastMapper.updateById(wrkMast) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); - } - return false;//绛夊緟鎻愬崌鏈哄埌灏忚溅妤煎眰 - } - - if (liftProtocol.getToken() == 0) {//鎻愬崌鏈轰护鐗屾湭琚崰鐢� - //鐙崰鎻愬崌鏈� - liftProtocol.setToken(wrkMast.getShuttleNo()); - return false;//绛夊緟涓嬩竴娆℃墽琛� - } - - //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︿负褰撳墠灏忚溅 - if (!liftProtocol.getToken().equals(wrkMast.getShuttleNo())) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満浠ょ墝琚嫭鍗狅紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//鎻愬崌鏈哄凡琚嫭鍗狅紝绂佹鍐嶆淳鍙戜换鍔� - } - - //鍒ゆ柇灏忚溅鏄惁涓哄綋鍓嶄换鍔$嫭鍗� - if (!shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { - News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞︿护鐗岃鐙崰锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - - //绔欑偣鑺傜偣 - NavigateNode staNode = NavigatePositionConvert.locNoToNode(sourceLiftSta.getLocNo()); - - //鎻愬崌鏈鸿妭鐐� - NavigateNode liftNode = new NavigateNode(basLift.getPoint$().getX(), basLift.getPoint$().getY()); - liftNode.setZ(staNode.getZ()); - - //鑾峰彇灏忚溅杩涙彁鍗囨満琛岃蛋鍛戒护 - NyShuttleHttpCommand moveCommand = NyHttpUtils.getInOutLiftCommand(wrkMast.getShuttleNo(), wrkMast.getWrkNo(), staNode, liftNode, true); - List<NyShuttleHttpCommand> commands = new ArrayList<>(); - commands.add(moveCommand); - List<NavigateNode> nodes = new ArrayList<>();//琛岃蛋鑺傜偣璺緞 - nodes.add(staNode); - nodes.add(liftNode); - - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO.id.shortValue());//灏忚溅绉诲簱浠诲姟 - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙� - assignCommand.setAuto(true);//鑷姩妯″紡 - assignCommand.setCommands(commands); - assignCommand.setNodes(nodes); - - wrkMast.setWrkSts(104L);//灏忚溅绉诲姩鍒版彁鍗囨満涓� 103.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 104.灏忚溅杩佸叆鎻愬崌鏈轰腑 - wrkMast.setModiTime(now); - wrkMast.setLiftNo(liftThread.getSlave().getId());//閿佸畾鎻愬崌鏈洪槻姝㈣鍗犵敤 - liftProtocol.setToken(wrkMast.getShuttleNo());//鎻愬崌鏈轰护鐗岀粦瀹氬綋鍓嶅皬杞� - if (wrkMastMapper.updateById(wrkMast) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); - return false; - } - return false; - } - return true; } @@ -3084,203 +2215,57 @@ //--------------------------------------鎻愬崌鏈烘惉杩愪腑-----------------------------------------// Date now = new Date(); - //鎻愬崌鏈烘惉杩愪腑 105.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 106.鎻愬崌鏈烘惉杩愪腑 - if (wrkMast.getWrkSts() == 105) { - - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo()); - if (liftThread == null) { + //鎻愬崌鏈烘惉杩愪腑 303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 306.鎻愬崌鏈烘惉杩愪腑 + if (wrkMast.getWrkSts() == WrkStsType.MOVE_SITE_COMPLETE.sts) { + ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, wrkMast.getLiftNo()); + if (forkLiftThread == null) { return false; } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { + ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); + if (forkLiftProtocol == null) { return false; } - if (!liftProtocol.isIdle(wrkMast.getWrkNo().shortValue())) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); + if (!forkLiftThread.isIdle()) { + News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); return false; } //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 - WrkMast liftWrkMast = wrkMastMapper.selectLiftWrkMast(liftThread.getSlave().getId()); + WrkMast liftWrkMast = wrkMastService.selectLiftWrkMast(wrkMast.getLiftNo()); if (liftWrkMast != null) { if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚� - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); + News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), wrkMast.getLiftNo()); return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� } } - //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︿负褰撳墠灏忚溅 - if (!liftProtocol.getToken().equals(wrkMast.getShuttleNo())) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満浠ょ墝鍜屽綋鍓嶅皬杞︿笉涓�鑷达紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//鎻愬崌鏈轰护鐗屽拰褰撳墠灏忚溅涓嶄竴鑷达紝绂佹娲惧彂 - } - - //鍒ゆ柇鎻愬崌鏈哄唴鏄惁鏈夊皬杞� - if (!liftProtocol.getHasCar()) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満鍐呮棤灏忚溅锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//鎻愬崌鏈哄唴鏃犲皬杞� - } - - //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); - if (shuttleThread == null) { - return false; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - return false; - } - - //灏忚溅澶勪簬绌洪棽鐘舵�� - if (!shuttleProtocol.isIdleNoCharge()) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false; - } - - //鍒ゆ柇灏忚溅鏄惁涓哄綋鍓嶄换鍔$嫭鍗� - if (!shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { - News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀綋鍓嶄换鍔℃湭琚嫭鍗狅紝绂佹娲惧彂", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - //鑾峰彇婧愮珯 - LiftStaProtocol sourceLiftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo()); + ForkLiftStaProtocol sourceLiftSta = ForkLiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo()); //鑾峰彇鐩爣绔� - LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo()); + ForkLiftStaProtocol liftSta = ForkLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo()); if (sourceLiftSta == null || liftSta == null) { News.info("{}浠诲姟锛岀己灏戠珯鐐逛俊鎭紝绂佹娲惧彂", wrkMast.getWrkNo()); return false;//缂哄皯绔欑偣淇℃伅 } - //鑾峰彇鎻愬崌鏈哄懡浠� - NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_CAR.id, sourceLiftSta.getStaNo(), liftSta.getStaNo(), wrkMast.getWrkNo()); - ArrayList<NyLiftCommand> commands = new ArrayList<>(); - commands.add(liftCommand); + //鑾峰彇鎻愬崌鏈哄懡浠� + List<ForkLiftCommand> liftCommands = forkLiftThread.getShuttleSwitchCommand(wrkMast.getWrkNo(), sourceLiftSta.getLev(), liftSta.getLev()); + ArrayList<ForkLiftCommand> commands = new ArrayList<>(); + commands.addAll(liftCommands); //鎻愪氦鍒扮嚎绋嬪幓宸ヤ綔 LiftAssignCommand assignCommand = new LiftAssignCommand(); assignCommand.setCommands(commands); - assignCommand.setLiftNo(liftProtocol.getLiftNo()); + assignCommand.setLiftNo(wrkMast.getLiftNo().shortValue()); assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); - assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_CAR.id.shortValue()); + assignCommand.setTaskMode(ForkLiftTaskModeType.SHUTTLE_SWITCH.id.shortValue()); - wrkMast.setWrkSts(106L);//鎻愬崌鏈烘惉杩愪腑 105.灏忚溅杩佸叆鎻愬崌鏈哄畬鎴� ==> 106.鎻愬崌鏈烘惉杩愪腑 - wrkMast.setLiftNo(liftThread.getSlave().getId());//閿佸畾鎻愬崌鏈洪槻姝㈣鍗犵敤 + wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_RUN.sts);//鎻愬崌鏈烘惉杩愪腑 303.灏忚溅绉诲姩鑷崇珯鐐瑰畬鎴� ==> 306.鎻愬崌鏈烘惉杩愪腑 wrkMast.setModiTime(now); - if (wrkMastMapper.updateById(wrkMast) > 0) { + if (wrkMastService.updateById(wrkMast)) { //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Lift, liftProtocol.getLiftNo().intValue(), new Task(3, assignCommand)); + forkLiftAction.assignWork(wrkMast.getLiftNo(), assignCommand); } - - } - return true; - } - - /** - * 灏忚溅杩佺Щ-灏忚溅杩佸嚭鎻愬崌鏈� - * 濡傞渶涓绘柟娉曟墽琛宑ontinue锛岃杩斿洖false - * ps:杩斿洖鍊紅rue骞朵笉浠h〃璇ユ柟娉曟墽琛屾垚鍔燂紝杩斿洖鍊间粎鍋氭爣璁扮敤浜庝富鏂规硶鏄惁鎵цcontinue - */ - private boolean shuttleMoveExecuteStepOutLift(WrkMast wrkMast) { - //--------------------------------------灏忚溅杩佸嚭鎻愬崌鏈�-----------------------------------------// - Date now = new Date(); - //灏忚溅绉诲姩鍒版彁鍗囨満涓� 107.鎻愬崌鏈烘惉杩愬畬鎴� ==> 108.灏忚溅杩佸嚭鎻愬崌鏈轰腑 - if (wrkMast.getWrkSts() == 107) { - - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo()); - if (liftThread == null) { - return false; - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - return false; - } - if (!liftProtocol.isIdle(wrkMast.getWrkNo().shortValue())) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満蹇欑涓紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false; - } - - //鍒ゆ柇鎻愬崌鏈烘槸鍚︽湁鍏朵粬浠诲姟 - WrkMast liftWrkMast = wrkMastMapper.selectLiftWrkMast(liftThread.getSlave().getId()); - if (liftWrkMast != null) { - if (!liftWrkMast.getWrkNo().equals(wrkMast.getWrkNo())) {//鎻愬崌鏈轰换鍔″拰褰撳墠浠诲姟涓嶇浉鍚� - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満瀛樺湪鏈畬鎴愪换鍔★紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//褰撳墠鎻愬崌鏈哄瓨鍦ㄦ湭瀹屾垚浠诲姟锛岀瓑寰呬笅涓�娆¤疆璇� - } - } - - //鍒ゆ柇鎻愬崌鏈轰护鐗屾槸鍚︿负褰撳墠灏忚溅 - if (!liftProtocol.getToken().equals(wrkMast.getShuttleNo())) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛屾彁鍗囨満浠ょ墝鍜屽綋鍓嶅皬杞︿笉涓�鑷达紝绂佹娲惧彂", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//鎻愬崌鏈轰护鐗屽拰褰撳墠灏忚溅涓嶄竴鑷达紝绂佹娲惧彂 - } - - //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); - if (shuttleThread == null) { - return false; - } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - return false; - } - - //灏忚溅澶勪簬绌洪棽鐘舵�� - if (!shuttleProtocol.isIdleNoCharge()) { - News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - - //鍒ゆ柇灏忚溅鏄惁涓哄綋鍓嶄换鍔$嫭鍗� - if (!shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { - News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞︿护鐗岃鐙崰锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); - return false; - } - - //鑾峰彇鐩爣绔� - LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo()); - if (liftSta == null) { - return false;//鎵句笉鍒扮珯鐐� - } - - //鑾峰彇鎻愬崌鏈烘暟鎹� - BasLift basLift = basLiftService.selectById(liftProtocol.getLiftNo().intValue()); - if (basLift == null) { - return false;//娌℃湁鎻愬崌鏈烘暟鎹� - } - if (basLift.getPoint() == null) { - News.info("{}浠诲姟锛寋}鍙锋彁鍗囨満锛岀己灏戞彁鍗囨満鐐逛綅鍧愭爣锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), liftProtocol.getLiftNo()); - return false;//娌℃湁璁剧疆鎻愬崌鏈虹偣浣嶅潗鏍� - } - - NavigateNode liftNode = new NavigateNode(basLift.getPoint$().getX(), basLift.getPoint$().getY()); - liftNode.setZ(liftSta.getLev()); - - List<NyShuttleHttpCommand> commands = new ArrayList<>(); - //鑾峰彇灏忚溅鏇存柊妤煎眰鍛戒护 - NyShuttleHttpCommand updateZCommand = NyHttpUtils.getUpdateZCommand(shuttleThread.getSlave().getId(), liftProtocol.getLev().intValue(), wrkMast.getWrkNo()); - commands.add(updateZCommand); - - //鑾峰彇灏忚溅鍑烘彁鍗囨満琛岃蛋鍛戒护 - NyShuttleHttpCommand moveCommand = NyHttpUtils.getInOutLiftCommand(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), liftNode, NavigatePositionConvert.locNoToNode(liftSta.getLocNo()), false); - commands.add(moveCommand);//娣诲姞灏忚溅杩佸嚭鎻愬崌鏈哄懡浠� - - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO.id.shortValue());//灏忚溅绉诲簱浠诲姟 - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙� - assignCommand.setAuto(true);//鑷姩妯″紡 - assignCommand.setCommands(commands); - assignCommand.setNodes(null); - - wrkMast.setWrkSts(108L);//灏忚溅杩佸嚭鎻愬崌鏈轰腑 107.鎻愬崌鏈烘惉杩愬畬鎴� ==> 108.灏忚溅杩佸嚭鎻愬崌鏈轰腑 - wrkMast.setModiTime(now); - if (wrkMastMapper.updateById(wrkMast) > 0) { - //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); - return false; - } - return false; } return true; } @@ -3294,180 +2279,145 @@ //--------------------------------------灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑-----------------------------------------// Date now = new Date(); - //灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑 109.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 110.灏忚溅绉诲姩涓� - if (wrkMast.getWrkSts() == 109) { + //灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑 309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓� + if (wrkMast.getWrkSts() == WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts) { //鑾峰彇鍥涘悜绌挎杞︾嚎绋� - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); + ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); if (shuttleThread == null) { return false; } - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); + ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); if (shuttleProtocol == null) { return false; } //灏忚溅澶勪簬绌洪棽鐘舵�� - if (!shuttleProtocol.isIdleNoCharge(wrkMast.getWrkNo())) { + if (!shuttleThread.isIdle()) { News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞﹀繖纰屼腑锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false; } - //鍒ゆ柇灏忚溅浠ょ墝鏄惁涓哄綋鍓嶄换鍔� - if (shuttleProtocol.getToken() != 0 && !shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { - News.info("{}浠诲姟锛寋}灏忚溅锛屽皬杞︿护鐗岃鐙崰锛岀姝㈡淳鍙�", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); + //灏忚溅宸茬粡鍦ㄧ洰鏍囧簱浣嶏紝鐩存帴璁ゅ畾灏忚溅绉诲姩浠诲姟瀹屾垚 + if (shuttleProtocol.getCurrentLocNo().equals(wrkMast.getLocNo())) { + wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts);//311.灏忚溅绉诲姩瀹屾垚 + wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� + wrkMast.setModiTime(now); + wrkMastService.updateById(wrkMast); + + if (wrkMast.getWrkSts() == WrkStsType.COMPLETE_MOVE.sts) { + // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� + if (wrkMastLogMapper.save(wrkMast.getWrkNo()) <= 0) { + log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={}]澶辫触", wrkMast.getWrkNo()); + } + // 鍒犻櫎宸ヤ綔涓绘。 + if (!wrkMastService.deleteById(wrkMast)) { + log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={}]澶辫触", wrkMast.getWrkNo()); + } + } return false; } -// //璺ㄦゼ灞傜Щ鍔ㄤ换鍔� -// if (Utils.getLev(wrkMast.getSourceLocNo()) != Utils.getLev(wrkMast.getLocNo())) { + ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); + assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙� + assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//灏忚溅绉诲簱浠诲姟 + assignCommand.setTaskNo(wrkMast.getWrkNo());//浠诲姟鍙� + assignCommand.setAuto(true);//鑷姩妯″紡 + assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣� + assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅 + + List<ShuttleCommand> commands = null; + //璺ㄦゼ灞傜Щ鍔ㄤ换鍔� + if (Utils.getLev(wrkMast.getSourceLocNo()) != Utils.getLev(wrkMast.getLocNo())) { +// //闇�瑕佸皢鍓嶄袱涓妭鐐逛綔涓虹櫧鍚嶅崟鑺傜偣浼犲叆 // //鑾峰彇鐩爣绔� // LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo()); // if (liftSta == null) { // return false;//鎵句笉鍒扮珯鐐� // } // -// //*************灏濊瘯瑙i攣鐩爣绔欒矾寰�*************** // List<NavigateNode> targetNodes = NyLiftUtils.getLiftStaNodes(liftSta.getStaNo()); // if (targetNodes == null) { // return false;//鏈幏鍙栧埌鑺傜偣 // } -// //灏濊瘯瑙i攣鐩爣绔欒矾寰� -// boolean result = navigateMapUtils.writeNavigateNodeToRedisMap(Utils.getLev(wrkMast.getLocNo()), targetNodes, false);//鎵�浣跨敤鐨勮矾寰勮繘琛岃В閿� -// if (!result) { -// return false;//璺緞瑙i攣澶辫触 +// +// //璁剧疆璁$畻鑺傜偣鐨勭櫧鍚嶅崟 +// ArrayList<int[]> whiteList = new ArrayList<>();//璁剧疆璁$畻鑺傜偣鐨勭櫧鍚嶅崟 +// for (NavigateNode node : targetNodes) { +// whiteList.add(new int[]{node.getX(), node.getY()}); // } -// //*************灏濊瘯瑙i攣鐩爣绔欒矾寰�*************** -// } - - //灏忚溅宸茬粡鍦ㄧ洰鏍囧簱浣嶏紝鐩存帴璁ゅ畾灏忚溅绉诲姩浠诲姟瀹屾垚 - if (shuttleProtocol.getCurrentLocNo().equals(wrkMast.getLocNo())) { - if (shuttleProtocol.getToken().equals(wrkMast.getWrkNo())) { - //閲婃斁灏忚溅浠ょ墝 - shuttleProtocol.setToken(0); - } - wrkMast.setWrkSts(111L);//111.灏忚溅绉诲姩瀹屾垚 - wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� - wrkMast.setModiTime(now); - wrkMastMapper.updateById(wrkMast); - - shuttleProtocol.setShuttleNo((short) 0);//閲婃斁灏忚溅 - shuttleProtocol.setToken(0);//閲婃斁灏忚溅 - - if (wrkMast.getWrkSts() == 111) { - // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� - if (wrkMastLogMapper.save(wrkMast.getWrkNo()) <= 0) { - log.info("淇濆瓨宸ヤ綔鍘嗗彶妗workNo={0}]澶辫触", wrkMast.getWrkNo()); - } - // 鍒犻櫎宸ヤ綔涓绘。 - if (!wrkMastService.deleteById(wrkMast)) { - log.info("鍒犻櫎宸ヤ綔涓绘。[workNo={0}]澶辫触", wrkMast.getWrkNo()); - } - } - return false; - } - - NyShuttleOperaResult result = null; - //璺ㄦゼ灞傜Щ鍔ㄤ换鍔� - if (Utils.getLev(wrkMast.getSourceLocNo()) != Utils.getLev(wrkMast.getLocNo())) { - //闇�瑕佸皢鍓嶄袱涓妭鐐逛綔涓虹櫧鍚嶅崟鑺傜偣浼犲叆 - //鑾峰彇鐩爣绔� - LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(wrkMast.getStaNo()); - if (liftSta == null) { - return false;//鎵句笉鍒扮珯鐐� - } - - List<NavigateNode> targetNodes = NyLiftUtils.getLiftStaNodes(liftSta.getStaNo()); - if (targetNodes == null) { - return false;//鏈幏鍙栧埌鑺傜偣 - } - - //璁剧疆璁$畻鑺傜偣鐨勭櫧鍚嶅崟 - ArrayList<int[]> whiteList = new ArrayList<>();//璁剧疆璁$畻鑺傜偣鐨勭櫧鍚嶅崟 - for (NavigateNode node : targetNodes) { - whiteList.add(new int[]{node.getX(), node.getY()}); - } - result = NyShuttleOperaUtils.getStartToTargetCommandsByWhites(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), NavigationMapType.NORMAL.id, whiteList); +// commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread, whiteList); }else { //鑾峰彇灏忚溅鍒扮洰鏍囧簱浣嶅懡浠� - result = NyShuttleOperaUtils.getStartToTargetCommands(shuttleThread.getSlave().getId(), wrkMast.getWrkNo(), shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), NavigationMapType.NORMAL.id); + commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), NavigationMapType.NORMAL.id, assignCommand, shuttleThread); } - if (result == null) { + if (commands == null) { return false;//璺緞璁$畻澶辫触 } - List<NyShuttleHttpCommand> commands = result.getCommands(); - ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); - assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // 鍥涘悜绌挎杞︾紪鍙� - assignCommand.setTaskMode(ShuttleTaskModeType.SHUTTLE_MOVE_LOC_NO.id.shortValue());//灏忚溅绉诲簱浠诲姟 - assignCommand.setTaskNo(wrkMast.getWrkNo().shortValue());//浠诲姟鍙� - assignCommand.setAuto(true);//鑷姩妯″紡 assignCommand.setCommands(commands); - assignCommand.setNodes(result.getNodes()); - assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//婧愬簱浣� - assignCommand.setLocNo(wrkMast.getLocNo());//鐩爣搴撲綅 - if (wrkMast.getLiftNo() != null) { - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo()); - if (liftThread == null) { - return false; - } - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - return false; - } - if (liftProtocol.getToken().equals(shuttleProtocol.getShuttleNo().intValue())) { - liftProtocol.setToken(0);//閲婃斁鎻愬崌鏈轰护鐗� - } - } +// if (wrkMast.getLiftNo() != null) { +// LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo()); +// if (liftThread == null) { +// return false; +// } +// LiftProtocol liftProtocol = liftThread.getLiftProtocol(); +// if (liftProtocol == null) { +// return false; +// } +// if (liftProtocol.getToken().equals(shuttleProtocol.getShuttleNo())) { +// liftProtocol.setToken(0);//閲婃斁鎻愬崌鏈轰护鐗� +// } +// } - wrkMast.setWrkSts(110L);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑 109.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 110.灏忚溅绉诲姩涓� + wrkMast.setWrkSts(WrkStsType.MOVE_SHUTTLE.sts);//灏忚溅绉诲姩鍒扮洰鏍囧簱浣嶄腑 309.灏忚溅杩佸嚭鎻愬崌鏈哄畬鎴� ==> 310.灏忚溅绉诲姩涓� wrkMast.setLiftNo(null);//閲婃斁鎻愬崌鏈� wrkMast.setModiTime(now); - if (wrkMastMapper.updateById(wrkMast) > 0) { + if (wrkMastService.updateById(wrkMast)) { //涓嬪彂浠诲姟 - MessageQueue.offer(SlaveType.Shuttle, assignCommand.getShuttleNo().intValue(), new Task(3, assignCommand)); + shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); } } return true; } - //鎵弿璁惧PakMk鏍囪鏄惁瓒呮椂 - public synchronized void scanDevicePakMk() { - try { - //鎵弿灏忚溅 - for (ShuttleSlave slave : slaveProperties.getShuttle()) { - NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId()); - NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); - if (shuttleProtocol == null) { - continue; - } - - if ((System.currentTimeMillis() - shuttleProtocol.getSendTime() > (1000 * 60 * 5)) && shuttleProtocol.getPakMk()) { - //璁惧瓒呰繃5鍒嗛挓杩樻病澶嶄綅鏍囪 - shuttleProtocol.setPakMk(false);//澶嶄綅鏍囪 - } - } - - //鎵弿鎻愬崌鏈� - for (LiftSlave slave : slaveProperties.getLift()) { - LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, slave.getId()); - LiftProtocol liftProtocol = liftThread.getLiftProtocol(); - if (liftProtocol == null) { - continue; - } - - if ((System.currentTimeMillis() - liftProtocol.getSendTime() > (1000 * 60 * 5)) && liftProtocol.getPakMk()) { - //璁惧瓒呰繃5鍒嗛挓杩樻病澶嶄綅鏍囪 - liftProtocol.setPakMk(false);//澶嶄綅鏍囪 - } - } - } catch (Exception e) { - e.printStackTrace(); - } - - } +// //鎵弿璁惧PakMk鏍囪鏄惁瓒呮椂 +// public synchronized void scanDevicePakMk() { +// try { +// //鎵弿灏忚溅 +// for (ShuttleSlave slave : slaveProperties.getShuttle()) { +// NyShuttleThread shuttleThread = (NyShuttleThread) SlaveConnection.get(SlaveType.Shuttle, slave.getId()); +// NyShuttleProtocol shuttleProtocol = shuttleThread.getShuttleProtocol(); +// if (shuttleProtocol == null) { +// continue; +// } +// +// if ((System.currentTimeMillis() - shuttleProtocol.getSendTime() > (1000 * 60 * 5)) && shuttleProtocol.getPakMk()) { +// //璁惧瓒呰繃5鍒嗛挓杩樻病澶嶄綅鏍囪 +// shuttleProtocol.setPakMk(false);//澶嶄綅鏍囪 +// } +// } +// +// //鎵弿鎻愬崌鏈� +// for (LiftSlave slave : slaveProperties.getLift()) { +// LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, slave.getId()); +// LiftProtocol liftProtocol = liftThread.getLiftProtocol(); +// if (liftProtocol == null) { +// continue; +// } +// +// if ((System.currentTimeMillis() - liftProtocol.getSendTime() > (1000 * 60 * 5)) && liftProtocol.getPakMk()) { +// //璁惧瓒呰繃5鍒嗛挓杩樻病澶嶄綅鏍囪 +// liftProtocol.setPakMk(false);//澶嶄綅鏍囪 +// } +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// +// } } -- Gitblit v1.9.1