From b78b9ca2ef71de6b9af4a31b45defb12304289b7 Mon Sep 17 00:00:00 2001 From: luxiaotao1123 <t1341870251@63.com> Date: 星期二, 25 十月 2022 08:18:24 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 1197 ++++++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 849 insertions(+), 348 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 c19564c..7b18315 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -3,11 +3,11 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; -import com.baomidou.mybatisplus.mapper.Wrapper; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.mapper.BasCrnErrorMapper; +import com.zy.asrs.mapper.WrkChargeMapper; import com.zy.asrs.mapper.WrkMastMapper; import com.zy.asrs.service.*; import com.zy.asrs.utils.Utils; @@ -66,6 +66,8 @@ @Autowired private LocMastService locMastService; @Autowired + private LocDetlService locDetlService; + @Autowired private StaDescService staDescService; @Autowired private BasCrnpService basCrnpService; @@ -74,13 +76,19 @@ @Autowired private BasErrLogService basErrLogService; @Autowired + private BasSteErrLogService basSteErrLogService; + @Autowired private BasCrnErrorMapper basCrnErrorMapper; @Autowired private BasSteService basSteService; @Autowired private WrkChargeService wrkChargeService; @Autowired + private BasSteErrService basSteErrService; + @Autowired private CommonService commonService; + @Autowired + private WrkChargeMapper wrkChargeMapper; /** * 缁勬墭 @@ -114,11 +122,38 @@ } String barcode = barcodeThread.getBarcode(); if(!Cools.isEmpty(barcode)) { - log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode); - if("NG".endsWith(barcode) || "NoRead".equals(barcode)) { +// log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode); + if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) { + staProtocol.setWorkNo((short) 9995); + 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) 9995); + 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; + } + + // 杩囨护鐩樼偣/鎷f枡/骞舵澘浠诲姟 + if (null != wrkMastMapper.selectPickStepByBarcode(barcode)) { continue; } @@ -143,19 +178,41 @@ .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); - if (jsonObject.getInteger("code").equals(200)) { + 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); + + ledThread.errorReset(); + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); if (!result) { throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); } - } else { - log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl+"/rpc/pakin/loc/v1", JSON.toJSONString(param), response); + } 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)); + } + } + log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); + } else if (code == 700) { + staProtocol.setWorkNo((short) 9995); + staProtocol.setStaNo(inSta.getBackSta().shortValue()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + + // led 寮傚父鏄剧ず + if (ledThread != null) { + String errorMsg = barcode + "鎵樼洏璇嗗埆寮傚父锛岃鍏堣繘琛岀粍鎵橈紒"; + MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); + } } } catch (Exception e) { e.printStackTrace(); @@ -217,12 +274,12 @@ } /** - * 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱 + * 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱 銆愮1闃舵銆� */ - public synchronized void stnToCrnStnPick(){ + public synchronized void stnToCrnStnPick0(){ for (DevpSlave devp : slaveProperties.getDevp()) { // 閬嶅巻鎷f枡鍏ュ簱鍙� - for (DevpSlave.Sta pickSta : devp.getPickSta()) { + for (DevpSlave.Sta pickSta : devp.getPickOutSta()) { // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭� DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); @@ -232,24 +289,119 @@ } else { staProtocol = staProtocol.clone(); } - if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()){ + if (staProtocol.isAutoing() + && staProtocol.isLoading() + && staProtocol.isInEnable() + && staProtocol.getWorkNo() > 0 + && staProtocol.isPakMk()) { + WrkMast wrkMast = wrkMastMapper.selectPickStep(staProtocol.getWorkNo()); + if (wrkMast == null) { + // 鏃犳嫞鏂欐暟鎹� + continue; + } + short staNo; + switch (wrkMast.getSourceStaNo()) { + case 104: + case 108: + staNo = 103; + break; + case 204: + case 208: + staNo = 203; + break; + default: + log.error("{}浠诲姟鍐嶅叆搴撳け璐ワ紝绯荤粺鏁版嵁寮傚父锛�", wrkMast.getWrkNo()); + continue; + } + // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 +// staProtocol.setWorkNo((short) 9994); + staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); + staProtocol.setStaNo(staNo); + devpThread.setPakMk(staProtocol.getSiteId(), false); + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + if (!result) { + log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId()); + } + } + } + } + } + + /** + * 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱銆愮2闃舵銆� + */ + public synchronized void stnToCrnStnPick1(){ + 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() + // 0 - 9990 鎴栬�� 9996 + && ((staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() < 9990) || staProtocol.getWorkNo() == 9996) + && staProtocol.getStaNo().equals(staProtocol.getSiteId().shortValue()) + && staProtocol.isPakMk()){ // 鑾峰彇鏉$爜鎵弿浠俊鎭� BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode()); if (barcodeThread == null) { continue; } - String barcode = barcodeThread.getBarcode(); - if(!Cools.isEmpty(barcode)) { - log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode); - if("NG".endsWith(barcode) || "NoRead".equals(barcode)) { + + WrkMast wrkMast = null; + if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() < 9990) { + wrkMast = wrkMastMapper.selectPickStep(staProtocol.getWorkNo()); + if (null == wrkMast) { + log.error("{}浠诲姟鍙烽敊璇紝鏆傛棤鎷f枡浠诲姟锛�", staProtocol.getWorkNo()); + } + } + if (staProtocol.getWorkNo() == 9996) { + String barcode = barcodeThread.getBarcode(); + if(!Cools.isEmpty(barcode)) { + log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode); + if("NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) { + staProtocol.setWorkNo((short) 9995); + staProtocol.setStaNo(pickSta.getBackSta().shortValue()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + + // led 寮傚父鏄剧ず + LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); + if (ledThread != null) { + String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯"; + MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); + } + continue; + } + } else { + staProtocol.setWorkNo((short) 9995); + staProtocol.setStaNo(pickSta.getBackSta().shortValue()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + + // led 寮傚父鏄剧ず + LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); + if (ledThread != null) { + String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯"; + MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); + } continue; } - } else { - continue; + wrkMast = wrkMastMapper.selectPickStepByBarcode(barcode); + if (null == wrkMast) { + log.error("{}鏉$爜閿欒锛屾殏鏃犳嫞鏂欎换鍔★紒", barcode); + } } - WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode); if (wrkMast == null) { // 鏃犳嫞鏂欐暟鎹� continue; @@ -259,64 +411,126 @@ continue; } - // 鑾峰彇鐩爣绔� - Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() - .eq("type_no", wrkMast.getIoType() - 50) - .eq("stn_no", pickSta.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯 - .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿 - StaDesc staDesc = staDescService.selectOne(wrapper); - if (Cools.isEmpty(staDesc)) { - log.error("鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo()); - continue; - } - try { - // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。 - if (wrkMastMapper.saveWrkDetlLog(wrkMast.getWrkNo()) == 0) { - throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触"); - } - // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� - if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { - throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); + // 璁块棶 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)) { +// log.error("鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo()); +// continue; +// } +// // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�) +// Integer staNo = staDesc.getCrnStn(); + + // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。 +// if (wrkMastMapper.saveWrkDetlLog(wrkMast.getWrkNo()) == 0) { +// throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触"); +// } + // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� + if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { + throw new CoolException(wrkMast.getWrkNo() + "淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); + } + + String sourceLocNo = wrkMast.getSourceLocNo().trim(); + // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� + wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57 + wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 + wrkMast.setSourceStaNo(pickSta.getStaNo()); // 婧愮珯 + wrkMast.setStaNo(dto.getStaNo()); // 鐩爣绔� + wrkMast.setCrnNo(dto.getCrnNo()); + wrkMast.setLocNo(dto.getLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣� + wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌� + wrkMast.setModiTime(new Date()); + if (wrkMastMapper.updateById(wrkMast) == 0) { + throw new CoolException(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); + } + if (wrkMastMapper.setSteEmpty(wrkMast.getWrkNo()) == 0) { + throw new CoolException(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); + } + // 淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣� + LocMast locMast = locMastService.selectById(sourceLocNo); + locMast.setLocSts("O"); + locMast.setModiTime(new Date()); + if (!locMastService.updateById(locMast)) { + throw new CoolException(wrkMast.getWrkNo() + "淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�"); + } + // 淇敼鐩爣搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴� + locMast = locMastService.selectById(wrkMast.getLocNo()); + locMast.setLocSts("Q"); + locMast.setModiTime(new Date()); + if (!locMastService.updateById(locMast)) { + throw new CoolException(wrkMast.getWrkNo() + "淇敼鐩爣搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�"); + } + // 搴撳瓨鏄庣粏杞Щ + if (!locDetlService.updateLocNo(wrkMast.getLocNo(), sourceLocNo)) { + throw new CoolException(wrkMast.getWrkNo() + "浠诲姟搴撳瓨鏄庣粏杞Щ澶辫触锛侊紒锛�"); + } + + // 鏉$爜璁惧澶勭悊 + barcodeThread.setBarcode(""); + + ledThread.errorReset(); + + // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂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) { + log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId()); + } + + } else if (code == 500){ + if (ledThread != null) { + String errorMsg = jsonObject.getString("msg"); + if (!Cools.isEmpty(errorMsg)) { + MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); + } + } + log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); + } else { + staProtocol.setWorkNo((short) 9995); + staProtocol.setStaNo(pickSta.getBackSta().shortValue()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + + // led 寮傚父鏄剧ず + if (ledThread != null) { + String errorMsg = jsonObject.getString("msg"); +// String errorMsg = barcode + "鎵樼洏璇嗗埆寮傚父锛岃鍏堣繘琛岀粍鎵橈紒"; + MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); + } } - // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�) - Integer staNo = staDesc.getCrnStn(); - // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� - wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57 - wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 - wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯 - wrkMast.setStaNo(staNo); // 鐩爣绔� - wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣� - wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌� - wrkMast.setModiTime(new Date()); - if (wrkMastMapper.updateById(wrkMast) == 0) { - throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); - } - // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴� - LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); - locMast.setLocSts("Q"); - locMast.setModiTime(new Date()); - if (!locMastService.updateById(locMast)) { - throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�"); - } } catch (Exception e) { e.printStackTrace(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - continue; - } - - // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂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) { - log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId()); +// continue; } } - } } @@ -432,6 +646,8 @@ } // 搴撲綅绉昏浆 this.locToLoc(crn, crnProtocol); + // 婕旂ず浠诲姟 + this.steMoveDemo(crn, crnProtocol); } } } @@ -482,6 +698,24 @@ continue; } + // 妫�娴嬫槸鍚﹀瓨鍦ㄥ嚭搴撲换鍔� +// WrkMast pakoutWrkMast = wrkMastMapper.selectPakout(slave.getId(), null); +// if (null != pakoutWrkMast) { +// if ((pakoutWrkMast.getIoType() == 103 || pakoutWrkMast.getIoType() == 104 || pakoutWrkMast.getIoType() == 107) +// && pakoutWrkMast.getWrkSts() == 17 +// && basDevpService.selectByWrkNo(pakoutWrkMast.getWrkNo()) != null +// ) { +// +// } else { +// log.error("{}鍏ュ簱浠诲姟鏃犳硶浣滀笟锛屽洜瀛樺湪鍑哄簱涓换鍔�!", wrkMast.getWrkNo()); +// continue; +// } +// } + if (null != wrkMastMapper.selectPakout(slave.getId(), null)) { + log.error("{}鍏ュ簱浠诲姟鏃犳硶浣滀笟锛屽洜瀛樺湪鍑哄簱涓换鍔�!", wrkMast.getWrkNo()); + continue; + } + // 缃《浠诲姟 wrkMast.setIoPri((double) 9999); wrkMastMapper.updateById(wrkMast); @@ -489,12 +723,15 @@ // 鐩爣搴撲綅 ===>> 鏈�澶栧眰搴撲綅 if (locMastService.isOutMost(wrkMast.getLocNo())) { // 鍒ゆ柇灏忚溅鏄惁鍦ㄦ渶澶栧眰搴撲綅锛屽鏋滄槸鍒欐惉璧帮紝濡傛灉涓嶆槸锛屽垯鐩存帴鍫嗗灈鏈哄叆搴� - Integer steNo = this.hasCarOfIdle(wrkMast.getLocNo()); + Integer steNo = this.hasCar(wrkMast.getLocNo()); // 鏈夊皬杞� if (steNo != null) { // 灏忚溅琛岃蛋鍒板爢鍨涙満寰呮惉绉荤偣 if (wrkMast.getWrkSts() == 2L && wrkMast.getSteNo() == null) { - this.letCarBeReady(wrkMast, steNo, wrkMast.getLocNo()); + // 娌℃湁鍏朵粬浠诲姟 + if (null == wrkMastMapper.selectPakin(slave.getId(), steNo)) { + this.letCarBeReady(wrkMast, steNo, wrkMast.getLocNo()); + } } // 灏忚溅鎼蛋 if (wrkMast.getWrkSts() == 3L) { @@ -550,7 +787,10 @@ if (steNo != null) { // 灏忚溅琛岃蛋鍒板爢鍨涙満寰呮惉绉荤偣 if (wrkMast.getWrkSts() == 2L && wrkMast.getSteNo() == null) { - this.letCarBeWaiting(wrkMast, steNo, wrkMast.getLocNo()); + // 娌℃湁鍏朵粬浠诲姟 + if (null == wrkMastMapper.selectPakin(slave.getId(), steNo)) { + this.letCarBeWaiting(wrkMast, steNo, wrkMast.getLocNo()); + } } // 鍫嗗灈鏈哄皢璐ф斁鑷冲皬杞︿笂 3.灏忚溅寰呮惉锛堝皬杞︿笉鐢ㄦ惉杩愶紝宸茬粡鍦ㄥ綋鍓嶇粍搴撲綅锛� / 6.灏忚溅寰呭叆 ===>> 7.鍚婅溅鍏ュ簱涓� if (wrkMast.getWrkSts() == 3L || wrkMast.getWrkSts() == 6L) { @@ -597,8 +837,11 @@ // 瀵绘壘褰撳墠鍫嗗灈鏈哄搴旂殑灏忚溅 SteThread steThread = queryIdleCar(wrkMast); if (steThread != null) { - // 璁╁皬杞︾瓑寰呮惉杩愬緟缁� - this.letCarBeReady(wrkMast, steThread.getSlave().getId(), wrkMast.getLocNo()); + // 娌℃湁鍏朵粬浠诲姟 + if (null == wrkMastMapper.selectPakin(slave.getId(), steNo)) { + // 璁╁皬杞︾瓑寰呮惉杩愬緟缁� + this.letCarBeReady(wrkMast, steThread.getSlave().getId(), wrkMast.getLocNo()); + } } } // 鍫嗗灈鏈烘惉杩愬皬杞� @@ -654,6 +897,12 @@ // 鍫嗗灈鏈烘帶鍒惰繃婊� if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { + continue; + } + + // 杩囨护 + if (null != wrkMastMapper.selectPakin(slave.getId(), null)) { + log.error("{}鍑哄簱浠诲姟鏃犳硶浣滀笟锛屽洜瀛樺湪鍏ュ簱涓换鍔�!", wrkMast.getWrkNo()); continue; } @@ -771,8 +1020,27 @@ // 瀵绘壘鏈�杩戠殑灏忚溅 SteThread steThread = queryIdleCar(wrkMast); if (steThread != null) { - // 璁╁皬杞︾瓑寰呮惉杩愬緟缁� - this.letCarBeReady(wrkMast, steThread.getSlave().getId(), wrkMast.getSourceLocNo()); + // 娌℃湁鍏朵粬浠诲姟 +// boolean hasPakout = true; +// WrkMast pakoutWrkMast = wrkMastMapper.selectPakout(slave.getId(), steNo); +// if (null != pakoutWrkMast) { +// if ((pakoutWrkMast.getIoType() == 103 || pakoutWrkMast.getIoType() == 104 || pakoutWrkMast.getIoType() == 107) +// && pakoutWrkMast.getWrkSts() == 17 +// && basDevpService.selectByWrkNo(pakoutWrkMast.getWrkNo()) != null +// ) { +// hasPakout = false; +// } +// } else { +// hasPakout = false; +// } +// if (!hasPakout) { +// // 璁╁皬杞︾瓑寰呮惉杩愬緟缁� +// this.letCarBeReady(wrkMast, steThread.getSlave().getId(), wrkMast.getSourceLocNo()); +// } + if (null == wrkMastMapper.selectPakout(slave.getId(), steNo)) { + // 璁╁皬杞︾瓑寰呮惉杩愬緟缁� + this.letCarBeReady(wrkMast, steThread.getSlave().getId(), wrkMast.getSourceLocNo()); + } } } // 鍫嗗灈鏈烘惉杩愬皬杞� @@ -836,6 +1104,8 @@ if (locMastService.isOutMost(wrkMast.getSourceLocNo())) { // 鐩爣搴撲綅 ===>> 鏈�澶栧眰搴撲綅 if (locMastService.isOutMost(wrkMast.getLocNo())) { + // todo:luxiaotao 鍒ゆ柇鐩爣搴撲綅鏄惁瀛樺湪灏忚溅锛屽鏋滃瓨鍦紝鍒欐惉璧板皬杞� + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- CrnCommand crnCommand = new CrnCommand(); crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� @@ -1080,6 +1350,22 @@ /** * 褰撳墠搴撲綅缁勬槸鍚﹀瓨鍦ㄧ┖闂插皬杞� */ + public Integer hasCar(String locNo) { + for (SteSlave ste : slaveProperties.getSte()) { + // 鑾峰彇鍫嗗灈鏈轰俊鎭� + SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId()); + SteProtocol steProtocol = steThread.getSteProtocol(); + if (steProtocol == null) { continue; } + if (Utils.getGroupRow(locNo).equals(Utils.getGroupRow(steProtocol.getRow().intValue())) && steProtocol.getBay() == Utils.getBay(locNo) && steProtocol.getLev() == Utils.getLev(locNo)) { + return steProtocol.getSteNo().intValue(); + } + } + return null; + } + + /** + * 褰撳墠搴撲綅缁勬槸鍚﹀瓨鍦ㄧ┖闂插皬杞� + */ public Integer hasCarOfIdle(String locNo) { for (SteSlave ste : slaveProperties.getSte()) { // 鑾峰彇鍫嗗灈鏈轰俊鎭� @@ -1208,6 +1494,40 @@ wrkMast.setModiTime(new Date()); if (wrkMastMapper.updateById(wrkMast) == 0) { log.error("淇敼宸ヤ綔妗g姸鎬� 缁戝畾绌挎杞� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } + } + } + } + + /** + * 璁╁皬杞︿粠 杩滅偣 ====>> 绉诲姩鍒拌繎鐐� + * 绛夊緟鍫嗗灈鏈烘惉杩� + */ + public void letCarBeReady(WrkCharge wrkCharge, Integer steNo) { + // 鑾峰彇绌挎杞︿俊鎭� + SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); + SteProtocol steProtocol = steThread.getSteProtocol(); + if (steProtocol == null) { return; } + if (steProtocol.isIdle()) { + + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + SteCommand steCommand = new SteCommand(); + steCommand.setSteNo(steNo); // 绌挎杞︾紪鍙� + steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙� + steCommand.setTaskMode(SteTaskModeType.findOriginByLoc(steProtocol)); // 浠诲姟妯″紡: 鍘昏繎鐐� 绛夊緟鍫嗗灈鏈哄弶鍙� + + steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue()); + steCommand.setBay(steProtocol.getBay()); + steCommand.setLev(steProtocol.getLev()); + + if (!MessageQueue.offer(SlaveType.Ste, steNo, new Task(2, steCommand))) { + log.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", steNo, JSON.toJSON(steCommand)); + } else { + // 淇敼宸ヤ綔妗g姸鎬� 缁戝畾绌挎杞� + wrkCharge.setSteNo(steNo); + wrkCharge.setModiTime(new Date()); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼宸ヤ綔妗g姸鎬� 缁戝畾绌挎杞� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); } } } @@ -1369,6 +1689,20 @@ wrkCharge.setWrkSts(24L); if (!wrkChargeService.updateById(wrkCharge)) { log.error("淇敼鍏呯數浠诲姟鐘舵�� 23.鍚婅溅鎼繍 ===>> 24.灏忚溅鍒拌揪 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } else { + // 鍫嗗灈鏈哄浣� + crnThread.setResetFlag(true); + // 绌挎杞﹂噸鏂板畾浣嶆帓鍒楀眰 + SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, wrkCharge.getSteNo()); + if (!steThread.confirmPos()) { + log.error("{}鍙风┛姊溅閲嶆柊瀹氫綅澶辫触锛佷綔涓氬厖鐢典换鍔″彿锛歿}", wrkCharge.getSteNo(), wrkCharge.getWrkNo()); + } + } + } else if (wrkCharge.getWrkSts() == 34) { + // 34.鍚婅溅鎼繍 ===>> 35.灏忚溅灏辩华 + wrkCharge.setWrkSts(35L); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼鍏呯數浠诲姟鐘舵�� 34.鍚婅溅鎼繍 ===>> 35.灏忚溅灏辩华 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); } else { // 鍫嗗灈鏈哄浣� crnThread.setResetFlag(true); @@ -1668,6 +2002,7 @@ SteProtocol steProtocol = steThread.getSteProtocol(); if (steProtocol == null) { continue; } if (steProtocol.getWaiting() && steProtocol.getTaskNo() != 0) { + log.info("ste[id={}] 鎵ц宸ヤ綔妗e畬鎴愶紝浠诲姟鍙�={}", steProtocol.getSteNo(), steProtocol.getTaskNo()); if (steProtocol.getTaskNo() == 9999) { steThread.setResetFlag(true); } else { @@ -1692,6 +2027,22 @@ wrkCharge.setWrkSts(26L); if (!wrkChargeService.updateById(wrkCharge)) { log.error("淇敼鍏呯數浠诲姟鐘舵�� 25.灏忚溅鍘诲厖鐢� ===>> 26.绛夊緟鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } else { + steThread.setResetFlag(true); + } + } else if (wrkCharge.getWrkSts() == 32) { + // 32.灏忚溅璧拌 ===>> 33.灏忚溅寰呮惉 + wrkCharge.setWrkSts(33L); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼婕旂ず浠诲姟鐘舵�� 25.灏忚溅鍘诲厖鐢� ===>> 26.绛夊緟鍏呯數 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); + } else { + steThread.setResetFlag(true); + } + } else if (wrkCharge.getWrkSts() == 36) { + // 36.灏忚溅璧拌 ===>> 37.婕旂ず瀹屾垚 + wrkCharge.setWrkSts(37L); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼婕旂ず浠诲姟鐘舵�� 36.灏忚溅璧拌 ===>> 37.婕旂ず瀹屾垚 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkCharge.getWrkNo()); } else { steThread.setResetFlag(true); } @@ -1768,10 +2119,21 @@ } /** + * 寮傚父淇℃伅璁板綍 + */ + public void recErr() { + try { + this.recCrnErr(); + this.recSteErr(); + } catch (Exception e) { + log.error("recErr fail", e); + } + } + + /** * 鍫嗗灈鏈哄紓甯镐俊鎭褰� */ - @Async - public void recCrnErr(){ + private void recCrnErr(){ Date now = new Date(); for (CrnSlave crn : slaveProperties.getCrn()) { // 鑾峰彇鍫嗗灈鏈轰俊鎭� @@ -1780,109 +2142,219 @@ if (crnProtocol == null) { continue; } - if (true) { -// if (crnProtocol.getModeType() != CrnModeType.STOP) { - // 鏈変换鍔� - if (crnProtocol.getTaskNo() != 0) { - BasErrLog latest = basErrLogService.findLatestByTaskNo(crn.getId(), crnProtocol.getTaskNo().intValue()); - // 鏈夊紓甯� - if (latest == null) { - if (crnProtocol.getAlarm() != null && crnProtocol.getAlarm() > 0) { - WrkMast wrkMast = wrkMastMapper.selectById(crnProtocol.getTaskNo()); - if (wrkMast == null) { - continue; - } - BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm()); - String errName = crnError==null? String.valueOf(crnProtocol.getAlarm()):crnError.getErrName(); - BasErrLog basErrLog = new BasErrLog( - null, // 缂栧彿 - wrkMast.getWrkNo(), // 宸ヤ綔鍙� - now, // 鍙戠敓鏃堕棿 - null, // 缁撴潫鏃堕棿 - wrkMast.getWrkSts(), // 宸ヤ綔鐘舵�� - wrkMast.getIoType(), // 鍏ュ嚭搴撶被鍨� - crn.getId(), // 鍫嗗灈鏈� - null, // plc - wrkMast.getLocNo(), // 鐩爣搴撲綅 - wrkMast.getStaNo(), // 鐩爣绔� - wrkMast.getSourceStaNo(), // 婧愮珯 - wrkMast.getSourceLocNo(), // 婧愬簱浣� - wrkMast.getBarcode(), // 鏉$爜 - (int) crnProtocol.getAlarm(), // 寮傚父鐮� - errName, // 寮傚父 - 1, // 寮傚父鎯呭喌 - now, // 娣诲姞鏃堕棿 - null, // 娣诲姞浜哄憳 - now, // 淇敼鏃堕棿 - null, // 淇敼浜哄憳 - "浠诲姟涓紓甯�" // 澶囨敞 - ); - if (!basErrLogService.insert(basErrLog)) { - log.error("鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName); - } + // 鏈変换鍔� + if (crnProtocol.getTaskNo() != 0) { + BasErrLog latest = basErrLogService.findLatestByTaskNo(crn.getId(), crnProtocol.getTaskNo().intValue()); + // 鏈夊紓甯� + if (latest == null) { + if (crnProtocol.getAlarm() != null && crnProtocol.getAlarm() > 0) { + WrkMast wrkMast = wrkMastMapper.selectById(crnProtocol.getTaskNo()); + if (wrkMast == null) { + continue; } - } else { - // 寮傚父淇 - if (crnProtocol.getAlarm() == null || crnProtocol.getAlarm() == 0) { - latest.setEndTime(now); - latest.setUpdateTime(now); - latest.setStatus(2); - if (!basErrLogService.updateById(latest)) { - log.error("鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId()); - } + BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm()); + String errName = crnError==null? "鏈煡寮傚父":crnError.getErrName(); + BasErrLog basErrLog = new BasErrLog( + null, // 缂栧彿 + wrkMast.getWrkNo(), // 宸ヤ綔鍙� + now, // 鍙戠敓鏃堕棿 + null, // 缁撴潫鏃堕棿 + wrkMast.getWrkSts(), // 宸ヤ綔鐘舵�� + wrkMast.getIoType(), // 鍏ュ嚭搴撶被鍨� + crn.getId(), // 鍫嗗灈鏈� + null, // plc + wrkMast.getLocNo(), // 鐩爣搴撲綅 + wrkMast.getStaNo(), // 鐩爣绔� + wrkMast.getSourceStaNo(), // 婧愮珯 + wrkMast.getSourceLocNo(), // 婧愬簱浣� + wrkMast.getBarcode(), // 鏉$爜 + (int) crnProtocol.getAlarm(), // 寮傚父鐮� + errName, // 寮傚父 + 1, // 寮傚父鎯呭喌 + now, // 娣诲姞鏃堕棿 + null, // 娣诲姞浜哄憳 + now, // 淇敼鏃堕棿 + null, // 淇敼浜哄憳 + "浠诲姟涓紓甯�" // 澶囨敞 + ); + if (!basErrLogService.insert(basErrLog)) { + log.error("鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName); } } - // 鏃犱换鍔� } else { - BasErrLog latest = basErrLogService.findLatest(crn.getId()); - // 鏈夊紓甯� - if (crnProtocol.getAlarm() != null && crnProtocol.getAlarm() > 0) { - // 璁板綍鏂板紓甯� - if (latest == null || (latest.getErrCode() != crnProtocol.getAlarm().intValue())) { - BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm()); - String errName = crnError==null? String.valueOf(crnProtocol.getAlarm()):crnError.getErrName(); - BasErrLog basErrLog = new BasErrLog( - null, // 缂栧彿 - null, // 宸ヤ綔鍙� - now, // 鍙戠敓鏃堕棿 - null, // 缁撴潫鏃堕棿 - null, // 宸ヤ綔鐘舵�� - null, // 鍏ュ嚭搴撶被鍨� - crn.getId(), // 鍫嗗灈鏈� - null, // plc - null, // 鐩爣搴撲綅 - null, // 鐩爣绔� - null, // 婧愮珯 - null, // 婧愬簱浣� - null, // 鏉$爜 - (int)crnProtocol.getAlarm(), // 寮傚父鐮� - errName, // 寮傚父 - 1, // 寮傚父鎯呭喌 - now, // 娣诲姞鏃堕棿 - null, // 娣诲姞浜哄憳 - now, // 淇敼鏃堕棿 - null, // 淇敼浜哄憳 - "鏃犱换鍔″紓甯�" // 澶囨敞 - ); - if (!basErrLogService.insert(basErrLog)) { - log.error("鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName); - } + // 寮傚父淇 + if (crnProtocol.getAlarm() == null || crnProtocol.getAlarm() == 0) { + latest.setEndTime(now); + latest.setUpdateTime(now); + latest.setStatus(2); + if (!basErrLogService.updateById(latest)) { + log.error("鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId()); } - // 鏃犲紓甯� - } else { - // 寮傚父淇 - if (latest != null && latest.getStatus() == 1) { - latest.setEndTime(now); - latest.setUpdateTime(now); - latest.setStatus(2); - if (!basErrLogService.updateById(latest)) { - log.error("鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId()); - } + } + } + // 鏃犱换鍔� + } else { + BasErrLog latest = basErrLogService.findLatest(crn.getId()); + // 鏈夊紓甯� + if (crnProtocol.getAlarm() != null && crnProtocol.getAlarm() > 0) { + // 璁板綍鏂板紓甯� + if (latest == null || (latest.getErrCode() != crnProtocol.getAlarm().intValue())) { + BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm()); + String errName = crnError==null? "鏈煡寮傚父":crnError.getErrName(); + BasErrLog basErrLog = new BasErrLog( + null, // 缂栧彿 + null, // 宸ヤ綔鍙� + now, // 鍙戠敓鏃堕棿 + null, // 缁撴潫鏃堕棿 + null, // 宸ヤ綔鐘舵�� + null, // 鍏ュ嚭搴撶被鍨� + crn.getId(), // 鍫嗗灈鏈� + null, // plc + null, // 鐩爣搴撲綅 + null, // 鐩爣绔� + null, // 婧愮珯 + null, // 婧愬簱浣� + null, // 鏉$爜 + (int)crnProtocol.getAlarm(), // 寮傚父鐮� + errName, // 寮傚父 + 1, // 寮傚父鎯呭喌 + now, // 娣诲姞鏃堕棿 + null, // 娣诲姞浜哄憳 + now, // 淇敼鏃堕棿 + null, // 淇敼浜哄憳 + "鏃犱换鍔″紓甯�" // 澶囨敞 + ); + if (!basErrLogService.insert(basErrLog)) { + log.error("鍫嗗灈鏈簆lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", crn.getId(), errName); + } + } + // 鏃犲紓甯� + } else { + // 寮傚父淇 + if (latest != null && latest.getStatus() == 1) { + latest.setEndTime(now); + latest.setUpdateTime(now); + latest.setStatus(2); + if (!basErrLogService.updateById(latest)) { + log.error("鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", crn.getId(), latest.getId()); } } } } + } + } + /** + * 绌挎杞﹀紓甯镐俊鎭褰� + */ + private void recSteErr(){ + Date now = new Date(); + for (SteSlave ste : slaveProperties.getSte()) { + // 鑾峰彇鍫嗗灈鏈轰俊鎭� + SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId()); + SteProtocol steProtocol = steThread.getSteProtocol(); + if (steProtocol == null) { + continue; + } + // 鏈変换鍔� + if (steProtocol.getTaskNo() != 0) { + BasSteErrLog latest = basSteErrLogService.findLatestByTaskNo(ste.getId(), steProtocol.getTaskNo().intValue()); + // 鏈夊紓甯� + if (latest == null) { + if (steProtocol.getAlarm() != null && steProtocol.isAlarm()) { + WrkMast wrkMast = wrkMastMapper.selectById(steProtocol.getTaskNo()); + if (wrkMast == null) { + continue; + } + BasSteErr steErr = basSteErrService.selectById(steProtocol.getAlarm()); + String errName = steErr==null? "鏈煡寮傚父":steErr.getErrName(); + BasSteErrLog basSteErrLog = new BasSteErrLog( + null, // 缂栧彿 + wrkMast.getWrkNo(), // 宸ヤ綔鍙� + now, // 鍙戠敓鏃堕棿 + null, // 缁撴潫鏃堕棿 + wrkMast.getWrkSts(), // 宸ヤ綔鐘舵�� + wrkMast.getIoType(), // 鍏ュ嚭搴撶被鍨� + ste.getId(), // 鍫嗗灈鏈� + null, // plc + wrkMast.getLocNo(), // 鐩爣搴撲綅 + wrkMast.getStaNo(), // 鐩爣绔� + wrkMast.getSourceStaNo(), // 婧愮珯 + wrkMast.getSourceLocNo(), // 婧愬簱浣� + wrkMast.getBarcode(), // 鏉$爜 + (int) steProtocol.getAlarm(), // 寮傚父鐮� + errName, // 寮傚父 + 1, // 寮傚父鎯呭喌 + now, // 娣诲姞鏃堕棿 + null, // 娣诲姞浜哄憳 + now, // 淇敼鏃堕棿 + null, // 淇敼浜哄憳 + "浠诲姟涓紓甯�" // 澶囨敞 + ); + if (!basSteErrLogService.insert(basSteErrLog)) { + log.error("绌挎杞lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", ste.getId(), errName); + } + } + } else { + // 寮傚父淇 + if (steProtocol.getAlarm() == null || !steProtocol.isAlarm()) { + latest.setEndTime(now); + latest.setUpdateTime(now); + latest.setStatus(2); + if (!basSteErrLogService.updateById(latest)) { + log.error("绌挎杞lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", ste.getId(), latest.getId()); + } + } + } + // 鏃犱换鍔� + } else { + BasSteErrLog latest = basSteErrLogService.findLatest(ste.getId()); + // 鏈夊紓甯� + if (steProtocol.getAlarm() != null && steProtocol.isAlarm()) { + // 璁板綍鏂板紓甯� + if (latest == null || (latest.getErrCode() != steProtocol.getAlarm().intValue())) { + BasSteErr steErr = basSteErrService.selectById(steProtocol.getAlarm()); + String errName = steErr==null? "鏈煡寮傚父":steErr.getErrName(); + BasSteErrLog basSteErrLog = new BasSteErrLog( + null, // 缂栧彿 + null, // 宸ヤ綔鍙� + now, // 鍙戠敓鏃堕棿 + null, // 缁撴潫鏃堕棿 + null, // 宸ヤ綔鐘舵�� + null, // 鍏ュ嚭搴撶被鍨� + ste.getId(), // 鍫嗗灈鏈� + null, // plc + null, // 鐩爣搴撲綅 + null, // 鐩爣绔� + null, // 婧愮珯 + null, // 婧愬簱浣� + null, // 鏉$爜 + (int)steProtocol.getAlarm(), // 寮傚父鐮� + errName, // 寮傚父 + 1, // 寮傚父鎯呭喌 + now, // 娣诲姞鏃堕棿 + null, // 娣诲姞浜哄憳 + now, // 淇敼鏃堕棿 + null, // 淇敼浜哄憳 + "鏃犱换鍔″紓甯�" // 澶囨敞 + ); + if (!basSteErrLogService.insert(basSteErrLog)) { + log.error("绌挎杞lc寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", ste.getId(), errName); + } + } + // 鏃犲紓甯� + } else { + // 寮傚父淇 + if (latest != null && latest.getStatus() == 1) { + latest.setEndTime(now); + latest.setUpdateTime(now); + latest.setStatus(2); + if (!basSteErrLogService.updateById(latest)) { + log.error("绌挎杞lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", ste.getId(), latest.getId()); + } + } + } + } } } @@ -1906,14 +2378,36 @@ staProtocol = staProtocol.clone(); } // 绔欑偣鏉′欢鍒ゆ柇 - if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() - && staProtocol.isEmptyMk() && (staProtocol.getWorkNo() == 0 || (staProtocol.getWorkNo() >= 9990 && staProtocol.getWorkNo() <= 9999) || staProtocol.getWorkNo() == 9997) && staProtocol.isPakMk()) { + 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)) { +// log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", emptyInSta.getBarcode(), barcode0); + if(!"NG".endsWith(barcode0) && !"NoRead".equals(barcode0) && !"empty".equals(barcode0)) { + barcode = barcode0; + } + } + } + + 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() @@ -1923,8 +2417,11 @@ .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); - if (jsonObject.getInteger("code").equals(200)) { + Integer code = jsonObject.getInteger("code"); + if (code.equals(200)) { StartupDto dto = jsonObject.getObject("data", StartupDto.class); + + ledThread.errorReset(); // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 staProtocol.setWorkNo(dto.getWorkNo().shortValue()); @@ -1935,7 +2432,13 @@ throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); } } else { - log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl+"/rpc/pakin/loc/v1", JSON.toJSONString(param), response); + if (ledThread != null) { + String errorMsg = jsonObject.getString("msg"); + if (!Cools.isEmpty(errorMsg)) { + MessageQueue.offer(SlaveType.Led, emptyInSta.getLed(), new Task(3, errorMsg)); + } + } + log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); } } catch (Exception e) { e.printStackTrace(); @@ -2115,6 +2618,7 @@ wrkCharge.setCrnNo(basSte.getCrnNo()); wrkCharge.setIoPri((double) 10); wrkCharge.setLocNo(idleLoc); + wrkCharge.setMemo("charge"); if (!wrkChargeService.insert(wrkCharge)) { log.error("淇濆瓨{}鍙风┛姊溅鍏呯數浠诲姟澶辫触!!!", ste.getId()); continue; @@ -2237,190 +2741,187 @@ continue; } // 蹇呴』涓烘紨绀虹姸鎬� -// CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); -// CrnProtocol crnProtocol = crnThread.getCrnProtocol(); -// if (crnProtocol == null) { -// continue; -// } - - // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛� -// if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) { - - String locNo = null; - Iterator<String> iterator = crn1DemoLocs.iterator(); - if (crn.getId() == 1) { - iterator = crn1DemoLocs.iterator(); - } else if (crn.getId() == 2) { - iterator = crn2DemoLocs.iterator(); - } else if (crn.getId() == 3) { - iterator = crn3DemoLocs.iterator(); - } - while (iterator.hasNext()) { - String next = iterator.next(); - String lastLoc = ""; - if (crn.getId() == 1) { - lastLoc = crn1LastLoc; - } else if (crn.getId() == 2) { - lastLoc = crn2LastLoc; - } else if (crn.getId() == 3) { - lastLoc = crn3LastLoc; - } - if (!Cools.isEmpty(lastLoc)) { - if (!lastLoc.substring(2, 7).equals(next.substring(2, 7)) || !Utils.getGroupRow(lastLoc).equals(Utils.getGroupRow(next))) { - locNo = next; - iterator.remove(); - break; - } else { - iterator.remove(); - } - } else { - locNo = next; - iterator.remove(); - break; - } - - } - if (!Cools.isEmpty(locNo)) { - if (crn.getId() == 1) { - crn1LastLoc = locNo; - } else if (crn.getId() == 2) { - crn2LastLoc = locNo; - } else if (crn.getId() == 3) { - crn3LastLoc = locNo; - } - } - -// log.info("{}鍙峰爢鍨涙満瀵箋}搴撲綅杩涜婕旂ず", crn.getId(), locNo); - - // 鑾峰彇绉诲簱宸ヤ綔妗d俊鎭� -// WrkMast wrkMast = wrkMastMapper.selectLocMove(crn.getId()); -// if (null != wrkMast) { continue; } -// -// LocMast sourceLoc = locMastService.queryDemoSourceLoc(crn.getId()); -// LocMast loc = locMastService.queryDemoLoc(crn.getId()); -// if (null == sourceLoc || null == loc) { continue; } -// -// String sourceLocNo = sourceLoc.getLocNo(); -// String locNo = loc.getLocNo(); -// -// // 鑾峰彇宸ヤ綔鍙� -// int workNo = commonService.getWorkNo(WorkNoType.PICK.type); -// // 淇濆瓨宸ヤ綔妗� -// wrkMast = new WrkMast(); -// wrkMast.setWrkNo(workNo); -// wrkMast.setIoTime(new Date()); -// wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID -// wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇 -// wrkMast.setIoPri(13D); -// wrkMast.setCrnNo(crn.getId()); -// wrkMast.setSourceLocNo(sourceLocNo); // 婧愬簱浣� -// wrkMast.setLocNo(locNo); // 鐩爣搴撲綅 -// wrkMast.setFullPlt("N"); // 婊℃澘锛歒 -// wrkMast.setPicking("N"); // 鎷f枡 -// wrkMast.setExitMk("N"); // 閫�鍑� -// wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D")?"Y":"N"); // 绌烘澘 -// wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮� -// wrkMast.setLinkMis("N"); -// wrkMast.setAppeTime(new Date()); -// wrkMast.setModiTime(new Date()); -// int res = wrkMastMapper.insert(wrkMast); -// if (res == 0) { -// throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); -// } - - } - -// } - } - - /** - * 鍫嗗灈鏈烘紨绀� ===>> 搴撲綅绉昏浆 - */ - public synchronized void crnDemoOfLocMove(){ - for (CrnSlave crn : slaveProperties.getCrn()) { - if (!crn.getDemo()) { continue; } // 蹇呴』涓烘紨绀虹姸鎬� - CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); CrnProtocol crnProtocol = crnThread.getCrnProtocol(); - if (crnProtocol == null) { continue; } - - log.info("{}鍙峰爢鍨涙満姝e湪婕旂ず", crn.getId()); + if (crnProtocol == null) { + continue; + } // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛� if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO) { -// // 鑾峰彇绉诲簱宸ヤ綔妗d俊鎭� -// WrkMast wrkMast = wrkMastMapper.selectLocMove(crn.getId()); -// if (null != wrkMast) { continue; } -// -// LocMast sourceLoc = locMastService.queryDemoSourceLoc(crn.getId()); -// LocMast loc = locMastService.queryDemoLoc(crn.getId()); -// if (null == sourceLoc || null == loc) { continue; } -// -// String sourceLocNo = sourceLoc.getLocNo(); -// String locNo = loc.getLocNo(); -// -// // 鑾峰彇宸ヤ綔鍙� -// int workNo = commonService.getWorkNo(WorkNoType.PICK.type); -// // 淇濆瓨宸ヤ綔妗� -// wrkMast = new WrkMast(); -// wrkMast.setWrkNo(workNo); -// wrkMast.setIoTime(new Date()); -// wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID -// wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇 -// wrkMast.setIoPri(13D); -// wrkMast.setCrnNo(crn.getId()); -// wrkMast.setSourceLocNo(sourceLocNo); // 婧愬簱浣� -// wrkMast.setLocNo(locNo); // 鐩爣搴撲綅 -// wrkMast.setFullPlt("N"); // 婊℃澘锛歒 -// wrkMast.setPicking("N"); // 鎷f枡 -// wrkMast.setExitMk("N"); // 閫�鍑� -// wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D")?"Y":"N"); // 绌烘澘 -// wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮� -// wrkMast.setLinkMis("N"); -// wrkMast.setAppeTime(new Date()); -// wrkMast.setModiTime(new Date()); -// int res = wrkMastMapper.insert(wrkMast); -// if (res == 0) { -// throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); -// } -// // 宸ヤ綔妗f槑缁嗕繚瀛� -// List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo)); -// for (LocDetl locDetl : locDetls) { -// WrkDetl wrkDetl = new WrkDetl(); -// wrkDetl.sync(locDetl); -// wrkDetl.setWrkNo(workNo); -// wrkDetl.setIoTime(new Date()); -// wrkDetl.setAnfme(locDetl.getAnfme()); -// wrkDetl.setAppeTime(new Date()); -// wrkDetl.setModiTime(new Date()); -// if (!wrkDetlService.insert(wrkDetl)) { -// throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); -// } -// } -// // 淇敼婧愬簱浣嶇姸鎬� -// if (sourceLoc.getLocSts().equals("D") || sourceLoc.getLocSts().equals("F")) { -// sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害 -// sourceLoc.setModiTime(new Date()); -// if (!locMastService.updateById(sourceLoc)){ -// throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�"); -// } -// } else { -// throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�"); -// } -// // 淇敼鐩爣搴撲綅鐘舵�� -// if (loc.getLocSts().equals("O")) { -// loc.setLocSts("S"); // S.鍏ュ簱棰勭害 -// loc.setModiTime(new Date()); -// if (!locMastService.updateById(loc)) { -// throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�"); -// } -// } else { -// throw new CoolException("绉昏浆澶辫触"); -// } + // filter + if (wrkChargeService.selectCount(new EntityWrapper<WrkCharge>() + .eq("crn_no", crn.getId()).between("wrk_sts", 31, 36)) > 0) { + continue; + } + + int steNo = crn.getId(); + SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); + SteProtocol steProtocol = steThread.getSteProtocol(); + BasSte basSte = basSteService.selectById(steNo); + if (Cools.isEmpty(steProtocol, basSte)) { continue; } + + // 鍙湁褰撶┛姊溅绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛� + if (steProtocol.isIdle()) { + + String locNo = null; + Iterator<String> iterator = crn1DemoLocs.iterator(); + if (crn.getId() == 1) { + iterator = crn1DemoLocs.iterator(); + } else if (crn.getId() == 2) { + iterator = crn2DemoLocs.iterator(); + } else if (crn.getId() == 3) { + iterator = crn3DemoLocs.iterator(); + } + while (iterator.hasNext()) { + String next = iterator.next(); + String lastLoc = ""; + if (crn.getId() == 1) { + lastLoc = crn1LastLoc; + } else if (crn.getId() == 2) { + lastLoc = crn2LastLoc; + } else if (crn.getId() == 3) { + lastLoc = crn3LastLoc; + } + if (!Cools.isEmpty(lastLoc)) { + if (!lastLoc.substring(2, 7).equals(next.substring(2, 7)) || !Utils.getGroupRow(lastLoc).equals(Utils.getGroupRow(next))) { + locNo = next; + iterator.remove(); + break; + } else { + iterator.remove(); + } + } else { + locNo = next; + iterator.remove(); + break; + } + + } + if (!Cools.isEmpty(locNo)) { + if (crn.getId() == 1) { + crn1LastLoc = locNo; + } else if (crn.getId() == 2) { + crn2LastLoc = locNo; + } else if (crn.getId() == 3) { + crn3LastLoc = locNo; + } + } + + log.info("{}鍙峰爢鍨涙満瀵箋}搴撲綅杩涜婕旂ず", crn.getId(), locNo); + + String sourceLocNo = Utils.getLocNo(steProtocol.getRow(), steProtocol.getBay(), steProtocol.getLev()); + + WrkCharge wrkCharge = new WrkCharge(); + wrkCharge.setCrnNo(crn.getId()); + wrkCharge.setSteNo(steNo); + wrkCharge.setWrkNo(commonService.getChargeWorkNo(5)); + wrkCharge.setWrkSts(31L); // 31.鐢熸垚婕旂ずID + wrkCharge.setIoPri((double) 10); + wrkCharge.setSourceLocNo(sourceLocNo); + wrkCharge.setLocNo(locNo); + wrkCharge.setMemo("demo"); + if (!wrkChargeService.insert(wrkCharge)) { + log.error("鐢熸垚婕旂ず浠诲姟澶辫触锛屽爢鍨涙満鍙凤細{}锛屽皬杞︼細{}锛屾簮搴撲綅锛歿}锛岀洰鏍囧簱浣嶏細{}", crn.getId(), steNo, sourceLocNo, locNo); + } + } } - } } + /** + * 婕旂ず鍙栬揣 + */ + private void steMoveDemo(CrnSlave slave, CrnProtocol crnProtocol) { + // 鑾峰彇宸ヤ綔妗d俊鎭� + WrkCharge wrkCharge = wrkChargeService.selectOne(new EntityWrapper<WrkCharge>().eq("crn_no", slave.getId()) + .in("wrk_sts", 31, 33, 35)); + if (null == wrkCharge) { + return; + } + SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, wrkCharge.getSteNo()); + SteProtocol steProtocol = steThread.getSteProtocol(); + if (null == steProtocol) { return; } + if (steProtocol.isIdle()) { + // 31.鐢熸垚婕旂ずID + if (wrkCharge.getWrkSts() == 31L) { + this.letCarBeReady(wrkCharge, steProtocol.getSteNo().intValue()); + wrkCharge.setWrkSts(32L); + wrkCharge.setModiTime(new Date()); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼婕旂ず浠诲姟{}宸ヤ綔妗� 31.鐢熸垚婕旂ずID ==>> 32.灏忚溅璧拌 澶辫触!", wrkCharge.getWrkNo()); + } + // 33.灏忚溅寰呮惉 + } else if (wrkCharge.getWrkSts() == 33L) { + LocMast locMast = locMastService.selectById(wrkCharge.getLocNo()); + // 鍫嗗灈鏈哄懡浠や笅鍙戝尯 -------------------------------------------------------------------------- + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setCrnNo(crnProtocol.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� + crnCommand.setTaskNo(wrkCharge.getWrkNo().shortValue()); // 宸ヤ綔鍙� + crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� + crnCommand.setTaskMode(CrnTaskModeType.STE_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 + crnCommand.setSourcePosX(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosY(steProtocol.getBay()); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZ(steProtocol.getLev()); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosX(Utils.getGroupRow(locMast.getLocNo()).shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY(locMast.getBay1().shortValue()); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ(locMast.getLev1().shortValue()); // 鐩爣搴撲綅灞� + if (!MessageQueue.offer(SlaveType.Crn, wrkCharge.getCrnNo(), new Task(2, crnCommand))) { + log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkCharge.getCrnNo(), JSON.toJSON(crnCommand)); + } else { + // 淇敼绌挎杞﹁繍琛屼腑鎺掑垪灞� + steThread.modifyPos(Utils.getGroupRow(locMast.getLocNo()), locMast.getBay1(), locMast.getLev1()); + // 淇敼宸ヤ綔妗g姸鎬� 33.灏忚溅寰呮惉 => 34.鍚婅溅鎼繍 + Date now = new Date(); + wrkCharge.setWrkSts(34L); + wrkCharge.setCrnStrTime(now); + wrkCharge.setModiTime(now); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼婕旂ず浠诲姟{}宸ヤ綔妗� 33.灏忚溅寰呮惉 => 34.鍚婅溅鎼繍 澶辫触!", wrkCharge.getWrkNo()); + } + } + // 35.灏忚溅灏辩华 + } else if (wrkCharge.getWrkSts() == 35L) { + + int steNo = steProtocol.getSteNo().intValue(); + if (!basSteService.updatePakMk(steNo, "Y")) { + log.error("淇敼绌挎杞︿綔涓氱姸鎬� 澶辫触锛侊紒锛岀┛姊溅={}", steNo); + return; + } + + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + SteCommand steCommand = new SteCommand(); + steCommand.setSteNo(steNo); // 绌挎杞︾紪鍙� + steCommand.setTaskNo(wrkCharge.getWrkNo()); // 宸ヤ綔鍙� + SteTaskModeType originByLoc = SteTaskModeType.findOriginByLoc(steProtocol.getRow()); + if (originByLoc.equals(SteTaskModeType.GO_ORIGIN)) { + originByLoc = SteTaskModeType.BACK_ORIGIN; + } else if (originByLoc.equals(SteTaskModeType.BACK_ORIGIN)) { + originByLoc = SteTaskModeType.GO_ORIGIN; + } else { + return; + } + steCommand.setTaskMode(originByLoc); + + steCommand.setRow(Utils.getGroupRow(steProtocol.getRow().intValue()).shortValue()); + steCommand.setBay(steProtocol.getBay()); + steCommand.setLev(steProtocol.getLev()); + + if (!MessageQueue.offer(SlaveType.Ste, steNo, new Task(2, steCommand))) { + log.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", steNo, JSON.toJSON(steCommand)); + } else { + // 淇敼宸ヤ綔妗g姸鎬� 35.灏忚溅灏辩华 => 36.灏忚溅璧拌 + wrkCharge.setWrkSts(36L); + wrkCharge.setModiTime(new Date()); + if (!wrkChargeService.updateById(wrkCharge)) { + log.error("淇敼婕旂ず浠诲姟{}宸ヤ綔妗� 35.灏忚溅灏辩华 => 36.灏忚溅璧拌 澶辫触!", wrkCharge.getWrkNo()); + } + } + } + } + + } + + } -- Gitblit v1.9.1