From cf12c622c420d9ba18ffccd1ef16af3dacf329e0 Mon Sep 17 00:00:00 2001 From: zjj <zjj123456> Date: 星期二, 24 十二月 2024 09:52:25 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 1895 ++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 1,623 insertions(+), 272 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 6aa9b68..aa336ff 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -24,6 +24,7 @@ import com.zy.common.utils.News; import com.zy.core.CrnThread; import com.zy.core.DevpThread; +import com.zy.core.RgvThread; import com.zy.core.cache.MessageQueue; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.*; @@ -46,6 +47,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; +import java.io.IOException; import java.util.*; import java.util.stream.Collectors; @@ -86,9 +88,19 @@ private BasErrLogService basErrLogService; @Autowired private BasCrnErrorMapper basCrnErrorMapper; + @Autowired + private EmptyBarrelInService emptyBarrelInService; + @Autowired + private WrkMastStaService wrkMastStaService; + @Autowired + private MatnrCodeService matnrCodeService; + @Autowired + private WaitPakinService waitPakinService; @Value("${wms.url}") private String wmsUrl; + + public int workNo = 9900; /** * 缁勬墭 @@ -143,6 +155,250 @@ 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 (!Cools.isEmpty(barcode)) { + log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode); + if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) { + continue; + } + } else { + // 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; + } + // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 + if (staProtocol.isAutoing() + && staProtocol.isLoading() + && staProtocol.isInEnable() + && !staProtocol.isEmptyMk() + && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() > 9990) + && staProtocol.isPakMk()) { + + if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode)) { + log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode); + //鏉$爜涓虹┖鎴栬�呬笉绗﹀悎锛岄��搴撳埌 + LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); + if (ledThread != null) { + String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯"; + MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); + } +// staProtocol.setWorkNo((short)9999); +// staProtocol.setStaNo((short)(staProtocol.getStaNo()-1)); +// devpThread.setPakMk(staProtocol.getSiteId(), false); +// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); +// if (!result) { +// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); +// } + continue; + } + + // 鍒ゆ柇閲嶅宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + if (barcode.length() == 8) { + wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode); + if (wrkMast != null) { + log.error("宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast.getWrkNo()); + continue; + } + } +// 鑾峰彇鍏ュ簱閫氱煡妗� +// List<WaitPakin> waitPakins = waitPakinMapper.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", barcode).eq("io_status", "N")); +// if (waitPakins.isEmpty()) { +// log.error("鏃犳鍏ュ簱鏉$爜鏁版嵁銆傛潯鐮佸彿={}", barcode); +// 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/v1") + .setJson(JSON.toJSONString(param)) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); + if (jsonObject.getInteger("code").equals(200)) { + StartupDto dto = jsonObject.getObject("data", StartupDto.class); + + 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 if(jsonObject.getInteger("code").equals(700)) { +// staProtocol.setWorkNo((short) 9999); +// 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)); +// } + log.error(barcode + "鎵樼洏璇嗗埆寮傚父锛岃鍏堣繘琛岀粍鎵橈紒"); + // led 寮傚父鏄剧ず + ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); + if (ledThread != null) { + String errorMsg = barcode + "鎵樼洏璇嗗埆寮傚父锛岃鍏堣繘琛岀粍鎵橈紒"; + MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); + } + } else { + log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); + } + + } catch (Exception e) { + e.printStackTrace(); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + } + + } + } + + } + public synchronized void generateStoreWrkFile7() { + // 鏍规嵁杈撻�佺嚎plc閬嶅巻 + for (DevpSlave devp : slaveProperties.getDevp()) { + // 閬嶅巻鍏ュ簱鍙� + for (DevpSlave.Sta inSta : devp.getInSta7()) { + + // 鑾峰彇鍏ュ簱绔欎俊鎭� + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + + // 鑾峰彇鏉$爜鎵弿浠俊鎭� + BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode()); + if (barcodeThread == null) { + continue; + } + String barcode = barcodeThread.getBarcode(); + + // 灏哄妫�娴嬪紓甯� + 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.isBan()){ + + // 閫�鍥� + 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.getStaNoEnd() != 2001){ + log.error(staProtocol.getStaNo()+"绔欑偣锛岀┖妗讹紝闈炴硶鐩爣绔欙紒锛侊紒锛侊紒锛�"+staProtocol.getStaNoEnd().toString()); + continue; + } + // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 + if (staProtocol.isAutoing() + && staProtocol.isLoading() + && staProtocol.isInEnable() + && !staProtocol.isEmptyMk() + && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() > 9990) + && staProtocol.isPakMk()) { + Integer workNo1 = commonService.getWorkNo(3); + Date now = new Date(); + // 淇濆瓨宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo1); + wrkMast.setIoTime(now); + wrkMast.setWrkSts(101L); // 宸ヤ綔鐘舵�侊細101.鍒濆 + wrkMast.setIoType(199); // 鍏ュ嚭搴撶姸鎬侊細 199.杞Щ + wrkMast.setIoPri(15D); + wrkMast.setCrnNo(0); + wrkMast.setSourceStaNo(staProtocol.getStaNo().intValue()); // 婧愮珯 + wrkMast.setStaNo(staProtocol.getStaNoEnd().intValue()); // 鐩爣绔� + wrkMast.setFullPlt("N"); // 婊℃澘 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("Y"); // 绌烘澘 + wrkMast.setBarcode("KB888888"); // 鎵樼洏鐮� + wrkMast.setLinkMis("N"); + wrkMast.setCtnNo("Y"); // 鍏ュ簱闃诲搴撲綅绉昏浆鏍囪 + wrkMast.setAppeTime(now); + wrkMast.setModiTime(now); + int res = wrkMastMapper.insert(wrkMast); + if (res == 0) { +// throw new CoolException(""); + log.error(staProtocol.getStaNo()+"绔欑偣锛岀┖妗讹紝淇濆瓨宸ヤ綔妗d富妗eけ璐ワ紒锛侊紒锛侊紒锛�"+now.toString()); + continue; + } + LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); + +// StaProtocol staProtocol1 = new StaProtocol(); + staProtocol.setWorkNo(workNo1.shortValue()); + staProtocol.setStaNo((short)3001); + 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绔欑偣淇℃伅澶辫触"); + } + } + + continue; + } + if (staProtocol.isBarcodeErr()) { errMsg = errMsg+"鎵爜澶辫触"; back = true; @@ -369,7 +625,7 @@ && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk() - && staProtocol.getWorkNo() == 9991) { + && staProtocol.getWorkNo() == 9999) { // WrkMast wrkMast = wrkMastMapper.selectPickStep(barcode); LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); if (barcode.equals("") || barcode.equals("99999999")) { @@ -389,8 +645,9 @@ continue; } - WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue()); - ledThread.errorReset(); +// WrkMast wrkMast = wrkMastMapper.selectPakInStep3(staProtocol.getWorkNo().intValue()); + WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("barcode", barcode)); + if (wrkMast == null) { wrkMast = wrkMastMapper.selectPickStep(barcode); } @@ -474,6 +731,8 @@ boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); if (!result) { log.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId()); + }else { + ledThread.errorReset(); } } @@ -488,6 +747,9 @@ */ public synchronized void crnStnToOutStn() { for (CrnSlave crnSlave : slaveProperties.getCrn()) { + if (crnSlave.getId() ==5){ + continue; + } // 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯 for (CrnSlave.CrnStn crnStn : crnSlave.getCrnOutStn()) { // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 @@ -519,17 +781,20 @@ if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(wrkMast.getWrkNo().shortValue()) && crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.forkPosType == CrnForkPosType.HOME) { + log.error("鍫嗗灈鏈虹瓑寰呯‘璁わ紒锛侊紒 [宸ヤ綔鍙�:{}]", crnProtocol.getTaskNo()); // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - - // 涓嬪彂绔欑偣淇℃伅 - staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); - staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); - if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) { - continue; + if (crnProtocol.getCrnNo() !=5){ + // 涓嬪彂绔欑偣淇℃伅 + staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); + staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); + if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) { + continue; + } } - if (crnStn.getStaNo() == 1016 || crnStn.getStaNo() == 1019) { + + if (crnStn.getStaNo() > 1013) { // 鏇存柊宸ヤ綔妗g姸鎬佷负13.RGV鎼繍涓� wrkMast.setWrkSts(13L); }else { @@ -556,6 +821,9 @@ */ public synchronized void crnIoExecute() { for (CrnSlave crn : slaveProperties.getCrn()) { + if (crn.getId() == 5){ + continue; + } // 鑾峰彇鍫嗗灈鏈轰俊鎭� CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); CrnProtocol crnProtocol = crnThread.getCrnProtocol(); @@ -579,6 +847,9 @@ // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡 if (crnProtocol.getLastIo().equals("I")) { if (basCrnp.getInEnable().equals("Y")) { + if (crn.getId() == 5){ + continue; + } this.crnStnToLoc(crn, crnProtocol); // 鍏ュ簱 crnProtocol.setLastIo("O"); } else if (basCrnp.getOutEnable().equals("Y")) { @@ -592,6 +863,10 @@ this.locToCrnStn(crn, crnProtocol); // 鍑哄簱 crnProtocol.setLastIo("I"); } else if (basCrnp.getInEnable().equals("Y")) { + if (crn.getId() == 5){ + continue; + } + this.crnStnToLoc(crn, crnProtocol); // 鍏ュ簱 crnProtocol.setLastIo("O"); } @@ -804,10 +1079,10 @@ // WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo()); List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep11(slave.getId(), crnStn.getStaNo()); // 鑾峰彇宸ヤ綔鐘舵�佷负14鐨勫伐浣滄。 - WrkMast wrkMast1 = wrkMastMapper.selectPakOutStep14(slave.getId(), crnStn.getStaNo()); - if ( wrkMast1 !=null) { - continue; - } +// WrkMast wrkMast1 = wrkMastMapper.selectPakOutStep14(slave.getId(), crnStn.getStaNo()); +// if ( wrkMast1 !=null) { +// continue; +// } for (WrkMast wrkMast : wrkMasts) { if (wrkMast == null) { continue; @@ -1132,6 +1407,7 @@ } // 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1 if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) { + log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�併�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo()); if (crnProtocol.getTaskNo() == 9999) { // 鍫嗗灈鏈哄浣� crnThread.setResetFlag(true); @@ -1293,6 +1569,7 @@ // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭� SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); StaProtocol staProtocol = devpThread.getStation().get(emptyInSta.getStaNo()); + LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, emptyInSta.getLed()); if (staProtocol == null) { continue; } else { @@ -1301,8 +1578,16 @@ // 绔欑偣鏉′欢鍒ゆ柇 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() - && staProtocol.isEmptyMk() && (staProtocol.getWorkNo() >= 9990 - && staProtocol.getWorkNo() <= 9999) && staProtocol.isPakMk()) { + && (staProtocol.isEmptyMk() || staProtocol.getStaNo() == 9999) +// && (staProtocol.getWorkNo() >= 9990 && staProtocol.getWorkNo() <= 9999) + && staProtocol.isPakMk()) { + List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() + .eq("sta_no", emptyInSta.getStaNo()) + .eq("io_type", 10) + .eq("wrk_sts", 2)); + if (!Cools.isEmpty(wrkMasts)){ + continue; + } try { LocTypeDto locTypeDto = new LocTypeDto(staProtocol); @@ -1319,7 +1604,7 @@ JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.getInteger("code").equals(200)) { StartupDto dto = jsonObject.getObject("data", StartupDto.class); - + ledThread.errorReset(); // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 staProtocol.setWorkNo(dto.getWorkNo().shortValue()); staProtocol.setStaNo(dto.getStaNo().shortValue()); @@ -2001,261 +2286,11 @@ } - //RGV鎼繍 - public synchronized void rgvIoExecute() { - for (RgvSlave slave : slaveProperties.getRgv()) { - ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, slave.getId()); - if (rgvThread == null) { - return; - } - RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); - if (rgvProtocol == null) { - return; - } - // 鍒ゆ柇RGV鏄惁绌洪棽 - if (rgvProtocol.getModeType() == RgvModeType.COMPUTER - && rgvProtocol.getStatusType() == RgvStatusType.IDLE) { - // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡锛屽垯浼樺厛鎵弿鍑哄簱绔欑偣 - if (rgvProtocol.getLastIo().equals("I")) { - this.rgvOutExecute(rgvThread, rgvProtocol);//鍑哄簱 - rgvProtocol.setLastIo("O"); - }else { - this.rgvInExecute(rgvThread, rgvProtocol);//鍏ュ簱 - rgvProtocol.setLastIo("I"); - } - //妫�鏌ユ槸鍚﹀瓨鍦ㄥ伐浣�1浠诲姟瓒呮椂娌′笅鍙� - if (rgvProtocol.getTaskNo1() > 0 && rgvProtocol.getTaskNo2() == 0) { - if (System.currentTimeMillis() - rgvProtocol.getTask1SendTime() > (1000*60)) { - //宸ヤ綅1涓嬪彂鏃堕棿瓒呰繃60s - RgvCommand rgvCommand = new RgvCommand(); - rgvCommand.setRgvNo(rgvProtocol.getRgvNo());//RGV缂栧彿 - rgvCommand.setCommand((short) 1);//宸ヤ綅1纭 - if (!MessageQueue.offer(SlaveType.Rgv, rgvCommand.getRgvNo(), new Task(4, rgvCommand))) { - log.error("RGV纭鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand)); - return; - } - log.error("RGV纭鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand)); - } - } - } - } - } - //rgv鍏ュ簱 - public synchronized void rgvInExecute(ZyRgvThread rgvThread, RgvProtocol rgvProtocol) { - for (RgvSlave.Sta sta : rgvThread.getSlave().getInStn()) { - if (rgvProtocol.getTaskNo1() > 0) { - //妫�娴媟gv宸ヤ綅1鏄惁涓哄叆搴撲换鍔� - WrkMast wrkMast1 = wrkMastMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue()); - if (wrkMast1.getWrkSts() > 100) { - continue;//鍑哄簱浠诲姟璺宠繃 - } - } - SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, sta.getDevpPlcId()); - StaProtocol staProtocol = devpThread.getStation().get(sta.getSourceStaNo()); - //鍒ゆ柇杈撻�佺嚎鏄惁鑷姩銆佹湁鐗┿�佸彲鍏ャ�佹湁宸ヤ綔鍙� - if (!(staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isOutEnable() && (staProtocol.getWorkNo() > 0))) { - continue; - } - - //鎼滅储宸ヤ綔妗� - WrkMast wrkMast = wrkMastMapper.selectByWrkNo(staProtocol.getWorkNo().intValue()); - if (wrkMast == null) { - continue;//宸ヤ綔妗d笉瀛樺湪 - } - - //鑾峰彇RGV鏀捐揣绔欑偣 - Integer staNo = Utils.getRgvStaNo(rgvProtocol.getRgvNo(), sta.getSourceStaNo(), staProtocol.getStaNo().intValue(), true); - if (staNo == null) { - continue;//RGV鏀捐揣绔欑偣涓嶅瓨鍦� - } - - //鍒ゆ柇鐩爣绔欐槸鍚﹁嚜鍔ㄣ�佸彲鍏ャ�佹棤鐗┿�佹棤宸ヤ綔鍙� - StaProtocol staProtocol1 = devpThread.getStation().get(staNo); - if (!(staProtocol1.isAutoing() && staProtocol1.isInEnable() && !staProtocol1.isLoading() && (staProtocol1.getWorkNo() == 0))) { - continue; - } - - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - RgvCommand rgvCommand = new RgvCommand(); - rgvCommand.setRgvNo(rgvProtocol.getRgvNo());//RGV缂栧彿 - rgvCommand.setAckFinish((short) 0); - - //鍒ゆ柇rgv宸ヤ綅1鏄惁鍙敤 - if (rgvProtocol.getTaskNo1() == 0) { - rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue());//宸ヤ綔鍙� - rgvCommand.setTaskMode1(RgvTaskModeType.PICK_RELEASE);//宸ヤ綔妯″紡 鍙栨斁璐� - rgvCommand.setSourceStaNo1(staProtocol.getStaNo());//婧愮珯 - rgvCommand.setDestinationStaNo1(staNo.shortValue());//鐩爣绔� - rgvCommand.setCommand((short) 0);//宸ヤ綅1鏆備笉纭 - } else if (rgvProtocol.getTaskNo2() == 0) {//鍒ゆ柇rgv宸ヤ綅2鏄惁鍙敤 - rgvCommand.setTaskNo2(wrkMast.getWrkNo().shortValue());//宸ヤ綔鍙� - rgvCommand.setTaskMode2(RgvTaskModeType.PICK_RELEASE);//宸ヤ綔妯″紡 鍙栨斁璐� - rgvCommand.setSourceStaNo2(staProtocol.getStaNo());//婧愮珯 - rgvCommand.setDestinationStaNo2(staNo.shortValue());//鐩爣绔� - rgvCommand.setCommand((short) 1);//宸ヤ綅2纭 - }else { - continue;//娌℃湁鍙敤RGV宸ヤ綅 - } - - if (!MessageQueue.offer(SlaveType.Rgv, rgvCommand.getRgvNo(), new Task(2, rgvCommand))) { - log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand)); - continue; - } - - log.error("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand)); - } - } - - //rgv鍑哄簱 - public synchronized void rgvOutExecute(ZyRgvThread rgvThread, RgvProtocol rgvProtocol) { - for (RgvSlave.Sta sta : rgvThread.getSlave().getOutStn()) { - if (rgvProtocol.getTaskNo1() > 0) { - //妫�娴媟gv宸ヤ綅1鏄惁涓哄嚭搴撲换鍔� - WrkMast wrkMast1 = wrkMastMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue()); - if (wrkMast1.getWrkSts() < 100) { - continue;//鍏ュ簱浠诲姟璺宠繃 - } - } - - SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, sta.getDevpPlcId()); - StaProtocol staProtocol = devpThread.getStation().get(sta.getSourceStaNo()); - //鍒ゆ柇杈撻�佺嚎鏄惁鑷姩銆佹湁鐗┿�佸彲鍑恒�佹湁宸ヤ綔鍙� - if (!(staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isOutEnable() && (staProtocol.getWorkNo() > 0))) { - continue; - } - - //鎼滅储宸ヤ綔妗� - WrkMast wrkMast = wrkMastMapper.selectByWrkNo(staProtocol.getWorkNo().intValue()); - if (wrkMast == null) { - continue;//宸ヤ綔妗d笉瀛樺湪 - } - - //鑾峰彇RGV鏀捐揣绔欑偣 - Integer staNo = Utils.getRgvStaNo(rgvProtocol.getRgvNo(), sta.getSourceStaNo(), staProtocol.getStaNo().intValue(), false); - if (staNo == null) { - continue;//RGV鏀捐揣绔欑偣涓嶅瓨鍦� - } - - //鍒ゆ柇鐩爣绔欐槸鍚﹁嚜鍔ㄣ�佸彲鍑恒�佹棤鐗┿�佹棤宸ヤ綔鍙� - StaProtocol staProtocol1 = devpThread.getStation().get(staNo); - if (!(staProtocol1.isAutoing() && staProtocol1.isOutEnable() && !staProtocol1.isLoading() && (staProtocol1.getWorkNo() == 0))) { - continue; - } - - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - RgvCommand rgvCommand = new RgvCommand(); - rgvCommand.setRgvNo(rgvProtocol.getRgvNo());//RGV缂栧彿 - rgvCommand.setAckFinish((short) 0); - - //鍒ゆ柇rgv宸ヤ綅1鏄惁鍙敤 - if (rgvProtocol.getTaskNo1() == 0) { - rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue());//宸ヤ綔鍙� - rgvCommand.setTaskMode1(RgvTaskModeType.PICK_RELEASE);//宸ヤ綔妯″紡 鍙栨斁璐� - rgvCommand.setSourceStaNo1(staProtocol.getStaNo());//婧愮珯 - rgvCommand.setDestinationStaNo1(staNo.shortValue());//鐩爣绔� - rgvCommand.setCommand((short) 0);//宸ヤ綅1鏆備笉纭 - } else if (rgvProtocol.getTaskNo2() == 0) {//鍒ゆ柇rgv宸ヤ綅2鏄惁鍙敤 - rgvCommand.setTaskNo2(wrkMast.getWrkNo().shortValue());//宸ヤ綔鍙� - rgvCommand.setTaskMode2(RgvTaskModeType.PICK_RELEASE);//宸ヤ綔妯″紡 鍙栨斁璐� - rgvCommand.setSourceStaNo2(staProtocol.getStaNo());//婧愮珯 - rgvCommand.setDestinationStaNo2(staNo.shortValue());//鐩爣绔� - rgvCommand.setCommand((short) 1);//宸ヤ綅2纭 - }else { - continue;//娌℃湁鍙敤RGV宸ヤ綅 - } - - if (!MessageQueue.offer(SlaveType.Rgv, rgvCommand.getRgvNo(), new Task(2, rgvCommand))) { - log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand)); - continue; - } - - log.error("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvProtocol.getRgvNo(), JSON.toJSON(rgvCommand)); - } - } - - //RGV宸ヤ綔瀹屾垚 - public synchronized void rgvFinished() { - SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); - for (RgvSlave slave : slaveProperties.getRgv()) { - ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, slave.getId()); - if (rgvThread == null) { - return; - } - - RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); - if (rgvProtocol == null) { - return; - } - - // 鐘舵�侊細绛夊緟纭 - if (rgvProtocol.getStatusType() == RgvStatusType.WAITING) { - if (rgvProtocol.getTaskNo1() == 9999) { - // RGV澶嶄綅 - rgvThread.setResetFlag1(true); - }else { - // 鑾峰彇寰呯‘璁ゅ伐浣滄。 - WrkMast wrkMast = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue()); - if (wrkMast == null) { - log.error("RGV澶勪簬绛夊緟纭涓斾换鍔″畬鎴愮姸鎬侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�俁GV鍙�={}锛屽伐浣滃彿={}", rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo1()); - continue; - } - - if (rgvProtocol.getTaskNo1() > 0 && rgvProtocol.getTaskFinish1() == 1) { - //宸ヤ綅1浠诲姟瀹屾垚 - // RGV澶嶄綅 - rgvThread.setResetFlag1(true); - - //缁欑洰鏍囩珯杈撻�佺嚎鍐欏叆鏁版嵁 - Short destinationPos1 = rgvProtocol.getDestinationPos1();//鑾峰彇宸ヤ綅1鐩爣绔� - StaProtocol staProtocol = devpThread.getStation().get(destinationPos1.intValue()).clone(); - staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());//鍐欏叆宸ヤ綔鍙� - staProtocol.setStaNo(wrkMast.getStaNo().shortValue());//鍐欏叆鐩爣绔� - if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol))) { - log.info("{}浠诲姟锛孯GV鎼繍鎴愬姛锛屽啓鍏ヨ緭閫佹暟鎹け璐}", wrkMast.getWrkNo(), JSON.toJSONString(staProtocol)); - } - - //2鍙稲GV鍜�3鍙稲GV宸ヤ綔瀹屾垚鍚庨渶瑕佹洿鏂板伐浣滄。鐘舵�� - if (rgvProtocol.getRgvNo() == 2 || rgvProtocol.getRgvNo() == 3) { - if (wrkMast.getWrkSts() == 13) {//13.RGV鎼繍涓� => 14.宸插嚭搴� - wrkMast.setWrkSts(14L); - wrkMast.setModiTime(new Date()); - wrkMastMapper.updateById(wrkMast); - } - } - } - - if (rgvProtocol.getTaskNo2() > 0 && rgvProtocol.getTaskFinish2() == 1) { - //宸ヤ綅2浠诲姟瀹屾垚 - // RGV澶嶄綅 - rgvThread.setResetFlag2(true); - - //缁欑洰鏍囩珯杈撻�佺嚎鍐欏叆鏁版嵁 - Short destinationPos2 = rgvProtocol.getDestinationPos2();//鑾峰彇宸ヤ綅2鐩爣绔� - StaProtocol staProtocol = devpThread.getStation().get(destinationPos2.intValue()).clone(); - staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue());//鍐欏叆宸ヤ綔鍙� - staProtocol.setStaNo(wrkMast.getStaNo().shortValue());//鍐欏叆鐩爣绔� - if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol))) { - log.info("{}浠诲姟锛孯GV鎼繍鎴愬姛锛屽啓鍏ヨ緭閫佹暟鎹け璐}", wrkMast.getWrkNo(), JSON.toJSONString(staProtocol)); - } - - //2鍙稲GV鍜�3鍙稲GV宸ヤ綔瀹屾垚鍚庨渶瑕佹洿鏂板伐浣滄。鐘舵�� - if (rgvProtocol.getRgvNo() == 2 || rgvProtocol.getRgvNo() == 3) { - if (wrkMast.getWrkSts() == 13) {//13.RGV鎼繍涓� => 14.宸插嚭搴� - wrkMast.setWrkSts(14L); - wrkMast.setModiTime(new Date()); - wrkMastMapper.updateById(wrkMast); - } - } - } - } - } - } - } /** * 鎵弿纰熺洏鏈鸿嚜鍔ㄥ叆搴撶┖鎵樼洏 @@ -2278,14 +2313,23 @@ List<StaDesc> staDescs = staDescService.selectList(new EntityWrapper<StaDesc>().eq("type_no", 10).eq("stn_no", sta.getStaNo())); for (StaDesc staDesc:staDescs){ - BasDevp basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", staDesc.getCrnStn())); + BasDevp basDevp = new BasDevp(); + + if (staDesc.getCrnNo() == 1){ + basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", 1004)); + } else if (staDesc.getCrnNo() == 2) { + basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", 1008)); + } + if (Cools.isEmpty(basDevp)){ + continue; + } if (basDevp.getAutoing().equals("Y") && basDevp.getLoading().equals("N") && basDevp.getWrkNo() == 0 && basDevp.getCanining().equals("Y")){ // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 staProtocol.setWorkNo((short) 9997); -// staProtocol.setStaNo(basDevp.getDevNo().shortValue()); - staProtocol.setStaNo((short) 1013); + staProtocol.setStaNo((short) (basDevp.getDevNo()==1004?1003:1013)); +// staProtocol.setStaNo((short) 1013); devpThread.setPakMk(staProtocol.getSiteId(), false); boolean result = MessageQueue.offer(SlaveType.Devp, devpThread.getSlave().getId(), new Task(2, staProtocol)); if (!result) { @@ -2354,11 +2398,19 @@ // && staProtocol.isEmptyMk() && staProtocol.getWorkNo() == 0 ) { - WrkMast pakoutEmpty = wrkMastMapper.selectPakoutEmpty(sta.getStaNo()); + Integer staNo = sta.getStaNo(); + switch (staProtocol.getSiteId()){ + case 4007: + staNo = 4002;break; + case 4016: + staNo = 4011;break; + } + WrkMast pakoutEmpty = wrkMastMapper.selectPakoutEmpty(staNo); if (null != pakoutEmpty) { return; } - List<StaDesc> staDescs = staDescService.selectList(new EntityWrapper<StaDesc>().eq("stn_no", sta.getStaNo())); + + List<StaDesc> staDescs = staDescService.selectList(new EntityWrapper<StaDesc>().eq("stn_no", staNo)); for (StaDesc staDesc: staDescs){ BasCrnp basCrnp = basCrnpService.selectOne(new EntityWrapper<BasCrnp>().eq("crn_no", staDesc.getCrnNo())); if (!basCrnp.getCrnSts().equals(3) || basCrnp.getCrnErr() != 0){ @@ -2367,6 +2419,7 @@ try { HashMap<String, Object> map = new HashMap<>(); map.put("crnNo", staDesc.getCrnNo());//鐩爣绔� + map.put("staNo",staDesc.getStnNo()); String response = new HttpHandler.Builder() .setUri(wmsUrl) .setParams(map) @@ -2394,4 +2447,1302 @@ } + public synchronized void crn5InTask(){ + for (CrnSlave crnSlave : slaveProperties.getCrn()) { + if (crnSlave.getId() != 5){ + continue; + } + // 鑾峰彇鍫嗗灈鏈轰俊鎭� + CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId()); + CrnProtocol crnProtocol = crnThread.getCrnProtocol(); + if (crnProtocol == null) { + continue; + } + BasCrnp basCrnp = basCrnpService.selectById(crnSlave.getId()); + if (basCrnp == null) { + log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crnSlave.getId()); + continue; + } + // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛� + if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO + && crnProtocol.getLoaded() == 0 && crnProtocol.getForkPos() == 0) { + +// Crn5InTaskSta(crnSlave,crnProtocol); + + // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡 + if (crnProtocol.getLastIo().equals("I")) { + if (basCrnp.getInEnable().equals("Y")) { + this.Crn5InTaskSta(crnSlave,crnProtocol); + crnProtocol.setLastIo("O"); + } else if (basCrnp.getOutEnable().equals("Y")) { + this.locToCrn5Stn(crnSlave, crnProtocol); // 鍑哄簱 + crnProtocol.setLastIo("I"); + } + } + // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡 + else if (crnProtocol.getLastIo().equals("O")) { + if (basCrnp.getOutEnable().equals("Y")) { + this.locToCrn5Stn(crnSlave, crnProtocol); // 鍑哄簱 + crnProtocol.setLastIo("I"); + } else if (basCrnp.getInEnable().equals("Y")) { + + this.Crn5InTaskSta(crnSlave,crnProtocol); + crnProtocol.setLastIo("O"); + } + } + + } + + } + } + public void Crn5InTaskSta(CrnSlave slave, CrnProtocol crnProtocol){ + for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) { + // 鏌ヨ宸ヤ綔妗� + WrkMast wrkMast = wrkMastMapper.selectCrn5Task2(); + if (wrkMast == null) { + return; + } + // 鑾峰彇搴撲綅淇℃伅 + LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); + if (locMast == null) { + log.error("鏌ヨ搴撳瓨鏃犳暟鎹�--搴撲綅鍙穥}", wrkMast.getLocNo()); + return; + } + if (!locMast.getLocSts().equals("S") && !locMast.getLocSts().equals("Q")) { + log.error("鍏ュ簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), locMast.getLocSts()); + return; + } + // 鍫嗗灈鏈烘帶鍒惰繃婊� + if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { + return; + } + + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� + crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙� + crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� + crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 + crnCommand.setSourcePosX(crnStn.getRow().shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosY(crnStn.getBay().shortValue()); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZ(crnStn.getLev().shortValue()); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosX(locMast.getRow1().shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY(locMast.getBay1().shortValue()); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ(locMast.getLev1().shortValue()); // 鐩爣搴撲綅灞� + crnCommand.setLocType1(locMast.getLocType1().shortValue()); // 璐х墿绫诲瀷 + if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { + log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); + } else { + // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� + Date now = new Date(); + wrkMast.setWrkSts(3L); + wrkMast.setCrnStrTime(now); + wrkMast.setModiTime(now); + if (wrkMastMapper.updateById(wrkMast) == 0) { + log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } + } + } + + + + + } + + + public synchronized void crn5StnToOutStn() { + for (CrnSlave crnSlave : slaveProperties.getCrn()) { + if (crnSlave.getId() != 5){ + continue; + } + // 閬嶅巻鍫嗗灈鏈哄嚭搴撶珯 + for (CrnSlave.CrnStn crnStn : crnSlave.getCrnOutStn()) { + // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } +// if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()) { + // 鏌ヨ宸ヤ綔妗� + WrkMast wrkMast = wrkMastMapper.selectPakOutStep2(crnStn.getStaNo()); + if (wrkMast == null) { + continue; + } + // 鍒ゆ柇宸ヤ綔妗f潯浠� + if (wrkMast.getIoType() < 100 || wrkMast.getStaNo() == null || wrkMast.getSourceStaNo() == null) { + continue; + } + // 鍒ゆ柇鍚婅溅鏄惁瀹為檯宸插畬鎴愶紝涓旂數鑴戠姸鎬佸湪move涓紝浠ュ鐢佃剳杩涜鏇存柊宸ヤ綔妗� + CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkMast.getCrnNo()); + CrnProtocol crnProtocol = crnThread.getCrnProtocol(); + if (crnProtocol.statusType == CrnStatusType.FETCHING || crnProtocol.statusType == CrnStatusType.PUTTING) { + // 绉诲姩涓� + continue; + } + // 鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁� + if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(wrkMast.getWrkNo().shortValue()) + && crnProtocol.statusType == CrnStatusType.WAITING + && crnProtocol.forkPosType == CrnForkPosType.HOME) { + + // 鏇存柊宸ヤ綔妗g姸鎬佷负14 + wrkMast.setWrkSts(14L); + + wrkMast.setCrnEndTime(new Date()); + if (wrkMastMapper.updateById(wrkMast) != 0) { + // 澶嶄綅鍫嗗灈鏈� + crnThread.setResetFlag(true); + } else { + log.error("鏇存柊宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负14澶辫触锛侊紒锛� [宸ヤ綔鍙�:{}]", wrkMast.getWrkNo()); + } + + } + +// } + } + } + } + + + public synchronized void locToCrn5Stn(CrnSlave slave, CrnProtocol crnProtocol) { + for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) { + // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗� +// WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo()); + List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep11(slave.getId(), crnStn.getStaNo()); + // 鑾峰彇宸ヤ綔鐘舵�佷负14鐨勫伐浣滄。 + WrkMast wrkMast1 = wrkMastMapper.selectPakOutStep14(slave.getId(), crnStn.getStaNo()); + if ( wrkMast1 !=null) { + continue; + } + for (WrkMast wrkMast : wrkMasts) { + if (wrkMast == null) { + continue; + } + // 宸ヤ綔妗g姸鎬佸垽鏂� + if (wrkMast.getIoType() < 100 || wrkMast.getSourceStaNo() == null) { + log.error("鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getIoType()); + continue; + } + // 鑾峰彇婧愬簱浣嶄俊鎭� + LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo()); + if (!locMast.getLocSts().equals("R") && !locMast.getLocSts().equals("P")) { + log.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), locMast.getLocSts()); + continue; + } + // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); + if (staProtocol == null) { + break; +// continue; + } else { + staProtocol = staProtocol.clone(); + } + + // 鏌ヨ绔欑偣璇︾粏淇℃伅 + BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); + if (staDetl == null) { + log.error("鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo()); + break; +// continue; + } + // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵�� + if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.isOutEnable()) { + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + + // 鍫嗗灈鏈烘帶鍒惰繃婊� + if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { +// continue; + break; + } + + + // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� + if (wrkMastMapper.selectWorking(slave.getId()) != null) { + break; +// return; + } + + // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔� + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� + crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙� + crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� + crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 + crnCommand.setSourcePosX(locMast.getRow1().shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosY(locMast.getBay1().shortValue()); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZ(locMast.getLev1().shortValue()); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosX(crnStn.getRow().shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ(crnStn.getLev().shortValue()); // 鐩爣搴撲綅灞� + crnCommand.setLocType1(locMast.getLocType1().shortValue()); // 璐х墿绫诲瀷 + if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { + log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); + } else { + // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� + Date now = new Date(); + wrkMast.setWrkSts(12L); + wrkMast.setCrnStrTime(now); + wrkMast.setModiTime(now); + if (wrkMastMapper.updateById(wrkMast) == 0) { + log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } + break; + } + } + } + } + } + + public synchronized void crn5TaskCreate() throws IOException { + for (CrnSlave crnSlave : slaveProperties.getCrn()) { + if (crnSlave.getId() != 5){ + continue; + } + for (CrnSlave.CrnStn crnStn : crnSlave.getCrnInStn()) { + // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); + if (staProtocol == null) { + break; +// continue; + } else { + staProtocol = staProtocol.clone(); + } + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk()){ + + EmptyBarrelIn emptyBarrelIn = emptyBarrelInService.selectOne(new EntityWrapper<>()); + if (Cools.isEmpty(emptyBarrelIn)){ + continue; + } + + FullStoreParam fullStoreParam = new FullStoreParam(); + fullStoreParam.setDevpNo(crnStn.getStaNo()); + FullStoreParam.MatCodeStore matCodeStore = new FullStoreParam.MatCodeStore(); + matCodeStore.setMatnr(emptyBarrelIn.getMatnr()); + matCodeStore.setBatch(emptyBarrelIn.getBatch()); + if (staProtocol.isForce()){ + log.info("绌烘《寮哄埗鍏ュ簱锛�"+staProtocol.getAmount()); + matCodeStore.setAnfme(Double.valueOf(staProtocol.getAmount())); + }else { + matCodeStore.setAnfme(8d) ; + } + ArrayList<FullStoreParam.MatCodeStore> matCodeStores = new ArrayList<>(); + matCodeStores.add(matCodeStore); + fullStoreParam.setList(matCodeStores); + try { + String response = new HttpHandler.Builder() + .setUri(wmsUrl) + .setPath("/full/store/put/start") + .setJson(JSON.toJSONString(fullStoreParam)) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.getInteger("code").equals(200)) { + devpThread.setPakMk(crnStn.getStaNo(),false); + } + }catch (CoolException e){ + + } + + } + + } + } + } + + public synchronized void RGVTaskCreate(){ + for (RgvSlave rgvSlave:slaveProperties.getRgv()){ + ZyRgvThread rgvThread = (ZyRgvThread)SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (Cools.isEmpty(rgvProtocol)){ + continue; + }else { + rgvProtocol = rgvProtocol.clone(); + } + List<WrkMastSta> wrkMastStas = wrkMastStaService.selectRGVTask1(rgvSlave.getId()); + if (!Cools.isEmpty(wrkMastStas)){ + continue; + } + if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.IDLE && rgvProtocol.getLoaded1() == 0){ + boolean work1 = false; + boolean work2 = false; + int workNo1 = 0; + int workNo2 = 0; + short souSta1 = 0; + short sta1 = 0; + short souSta2 = 0; + short sta2 = 0; + Integer matnr = 0; + Integer matnr2 = 0; + String batch = ""; + String batch2 = ""; + short type = 0; + short type2 = 0; + short anfme = 4; + short anfme2 = 4; + Double weight = 0d; + Double weight2 = 0d; + Double weight11 = 0d; + String memo = ""; + String memo2 = ""; + + List<RgvSlave.Sta> inStn1 = rgvSlave.getInStn(); + if (rgvProtocol.getColumnNumber()>4){ + short rgvStaNo = Utils.getRgvStaNo(rgvSlave.getId(), inStn1.get(0).getSourceStaNo()); + if (rgvStaNo<5){ + Collections.reverse(inStn1); + } + } + //宸ヤ綅涓�浠诲姟 + for (RgvSlave.Sta inStn : inStn1){ + work1 = false; + workNo1 = 0; + souSta1 = 0; + sta1 = 0; + type = 0; + if (rgvSlave.getId() == 1 && inStn.getSourceStaNo() == 2114){ + continue; + } + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId()); + StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo()); + if (staProtocol == null) { +// break; + continue; + } else { + staProtocol = staProtocol.clone(); + } + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk() && (staProtocol.getWorkNo()>0 && staProtocol.getWorkNo()<9900)){ + + WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo()); + if (Cools.isEmpty(wrkMast)){ + log.error("鏈壘鍒板伐浣滄。"); + continue; + } + workNo1 = wrkMast.getWrkNo(); + souSta1 = Utils.getRgvStaNo(rgvSlave.getId(),staProtocol.getSiteId()); + sta1 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo()); + Integer staNo = Utils.getStaNo(rgvSlave.getId(), (int) sta1); + BasDevp devp = basDevpService.selectById(staNo); + if (devp.getWrkNo()!=0 || Cools.isEmpty(devp.getLoading()) || devp.getLoading().equals("Y")){ + continue; + } + work1 = true; + devpThread.setPakMk(inStn.getSourceStaNo(),false); + break; + + + } else if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk() && (staProtocol.getWorkNo()>=9900 || staProtocol.getWorkNo()==0)) { + if (rgvSlave.getId() != 2 ){ + continue; + } + workNo1 = workNo++; + souSta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getSourceStaNo()); + if (inStn.getSourceStaNo() == 4007 && staProtocol.getTongType() == 1){ + sta1 = Utils.getRgvStaNo(rgvSlave.getId(),2103); + } else if (inStn.getSourceStaNo() == 4007 && staProtocol.getTongType() == 2) { + sta1 = Utils.getRgvStaNo(rgvSlave.getId(),2002); + } else if (inStn.getSourceStaNo() == 4007 && staProtocol.getTongType() == 4) { + if (staProtocol.getStaNoEnd() == 3007 || staProtocol.getStaNoEnd() == 3012){ + sta1 = Utils.getRgvStaNo(rgvSlave.getId(),2103); + } else if (staProtocol.getStaNoEnd() == 2001 ){ + sta1 = Utils.getRgvStaNo(rgvSlave.getId(),2002); + } else { + log.error("4007绔欑偣锛屾《鍨�4锛岄潪娉曠洰鏍囩珯锛侊紒锛侊紒锛侊紒"+staProtocol.getStaNoEnd().toString()); + continue; + } + Integer staNo = Utils.getStaNo(rgvSlave.getId(), (int) sta1); + BasDevp devp = basDevpService.selectById(staNo); + if (devp.getWrkNo()!=0 || Cools.isEmpty(devp.getLoading()) || devp.getLoading().equals("Y")){ + continue; + } + workNo1 = commonService.getWorkNo(3); + Date now = new Date(); + // 淇濆瓨宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo1); + wrkMast.setIoTime(now); + wrkMast.setWrkSts(101L); // 宸ヤ綔鐘舵�侊細101.鍒濆 + wrkMast.setIoType(199); // 鍏ュ嚭搴撶姸鎬侊細 199.杞Щ + wrkMast.setIoPri(15D); + wrkMast.setCrnNo(0); + wrkMast.setSourceStaNo(4007); // 婧愮珯 + wrkMast.setStaNo(staProtocol.getStaNoEnd().intValue()); // 鐩爣绔� + wrkMast.setFullPlt("N"); // 婊℃澘 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("Y"); // 绌烘澘 + wrkMast.setBarcode("KB888888"); // 鎵樼洏鐮� + wrkMast.setLinkMis("N"); + wrkMast.setCtnNo("Y"); // 鍏ュ簱闃诲搴撲綅绉昏浆鏍囪 + wrkMast.setAppeTime(now); + wrkMast.setModiTime(now); + int res = wrkMastMapper.insert(wrkMast); + if (res == 0) { +// throw new CoolException(""); + log.error("4007绔欑偣锛屾《鍨�4锛屼繚瀛樺伐浣滄。涓绘。澶辫触锛侊紒锛侊紒锛侊紒"+now.toString()); + continue; + } + type = 2; + } else if (inStn.getSourceStaNo() == 2102 && staProtocol.isFullPlt()) { + sta1 = Utils.getRgvStaNo(rgvSlave.getId(),2301); + } else { + sta1 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getStaNo()); + } + + if (inStn.getSourceStaNo() == 2102 && staProtocol.isEmptyMk()){ //鍖哄垎绌烘澘 + type = 1; + } + if(inStn.getSourceStaNo() == 2102){ + weight = staProtocol.getWeight().doubleValue()/10; + } + Integer staNo = Utils.getStaNo(rgvSlave.getId(), (int) sta1); + BasDevp devp = basDevpService.selectById(staNo); + if (devp.getWrkNo()!=0 || Cools.isEmpty(devp.getLoading()) || devp.getLoading().equals("Y")){ + continue; + } + work1 = true; + if (inStn.getSourcePlcId() == 4 || inStn.getSourcePlcId() ==5){ //鐏岃绔欓渶瑕佽幏鍙栬緭閫佺嚎鐗╂枡浠g爜 + matnr = staProtocol.getMatnr(); + batch = staProtocol.getBatch(); + anfme = (Cools.isEmpty(staProtocol.getAnfme()) || staProtocol.getAnfme()==0) ? anfme:staProtocol.getAnfme().shortValue(); + weight11 = staProtocol.getWeight1(); + weight = weight11; + String memoBool = staProtocol.isBan()? "瀛樺湪":"涓嶅瓨鍦�"; + memo = memoBool+"鍗婃《"; + } + devpThread.setPakMk(inStn.getSourceStaNo(),false); + break; + + } + } + + if (rgvSlave.getId() != 3){ + //宸ヤ綅浜屼换鍔� + for (RgvSlave.Sta inStn : rgvSlave.getInStn()){ + work2 = false; + workNo2 = 0; + souSta2 = 0; + sta2 = 0; + type2 = 0; + if (souSta1 == inStn.getSourceStaNo()){ + continue; + } + if (rgvSlave.getId() == 1 && inStn.getSourceStaNo() == 1014){ + continue; + } + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId()); + StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo()); + if (staProtocol == null) { +// break; + continue; + } else { + staProtocol = staProtocol.clone(); + } + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()&& staProtocol.isPakMk() && (staProtocol.getWorkNo()>0 && staProtocol.getWorkNo()<9900)){ + + WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo()); + if (Cools.isEmpty(wrkMast)){ + log.error("鏈壘鍒板伐浣滄。"); + continue; + } + workNo2 = wrkMast.getWrkNo(); + souSta2 = Utils.getRgvStaNo(rgvSlave.getId(),staProtocol.getSiteId()); + sta2 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo()); + Integer staNo = Utils.getStaNo(rgvSlave.getId(), (int) sta2); + BasDevp devp2 = basDevpService.selectById(staNo); + if (devp2.getWrkNo()!=0 || Cools.isEmpty(devp2.getLoading()) || devp2.getLoading().equals("Y")){ + continue; + } + + work2 = true; + devpThread.setPakMk(inStn.getSourceStaNo(),false); + break; + } else if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk() && (staProtocol.getWorkNo()>=9900 || staProtocol.getWorkNo()==0)) { + if (rgvSlave.getId() != 2 ){ + continue; + } + workNo2 = workNo++; + souSta2 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getSourceStaNo()); + if (inStn.getSourceStaNo() == 4007 && staProtocol.getTongType() == 1){ + sta2 = Utils.getRgvStaNo(rgvSlave.getId(),2103); + } else if (inStn.getSourceStaNo() == 4007 && staProtocol.getTongType() == 2) { + sta2 = Utils.getRgvStaNo(rgvSlave.getId(),2002); + } else if (inStn.getSourceStaNo() == 4007 && staProtocol.getTongType() == 4) { + if (staProtocol.getStaNoEnd() == 3007 || staProtocol.getStaNoEnd() == 3012){ + sta2 = Utils.getRgvStaNo(rgvSlave.getId(),2103); + } else if (staProtocol.getStaNoEnd() == 2001 ){ + sta2 = Utils.getRgvStaNo(rgvSlave.getId(),2002); + } else { + log.error("4007绔欑偣锛屾《鍨�4锛岄潪娉曠洰鏍囩珯锛侊紒锛侊紒锛侊紒"+staProtocol.getStaNoEnd().toString()); + continue; + } + Integer staNo = Utils.getStaNo(rgvSlave.getId(), (int) sta2); + BasDevp devp2 = basDevpService.selectById(staNo); + if (devp2.getWrkNo()!=0 || Cools.isEmpty(devp2.getLoading()) || devp2.getLoading().equals("Y")){ + continue; + } + workNo2 = commonService.getWorkNo(3); + Date now = new Date(); + // 淇濆瓨宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo2); + wrkMast.setIoTime(now); + wrkMast.setWrkSts(101L); // 宸ヤ綔鐘舵�侊細101.鍒濆 + wrkMast.setIoType(199); // 鍏ュ嚭搴撶姸鎬侊細 199.杞Щ + wrkMast.setIoPri(15D); + wrkMast.setCrnNo(0); + wrkMast.setSourceStaNo(4007); // 婧愮珯 + wrkMast.setStaNo(staProtocol.getStaNoEnd().intValue()); // 鐩爣绔� + wrkMast.setFullPlt("N"); // 婊℃澘 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("Y"); // 绌烘澘 + wrkMast.setBarcode("KB888888"); // 鎵樼洏鐮� + wrkMast.setLinkMis("N"); + wrkMast.setCtnNo("Y"); // 鍏ュ簱闃诲搴撲綅绉昏浆鏍囪 + wrkMast.setAppeTime(now); + wrkMast.setModiTime(now); + int res = wrkMastMapper.insert(wrkMast); + if (res == 0) { +// throw new CoolException(""); + log.error("4007绔欑偣锛屾《鍨�4锛屼繚瀛樺伐浣滄。涓绘。澶辫触锛侊紒锛侊紒锛侊紒"+now.toString()); + continue; + } + type2 = 2; + } else if (inStn.getSourceStaNo() == 2102 && staProtocol.isFullPlt()) { + sta2 = Utils.getRgvStaNo(rgvSlave.getId(),2301); + } else { + sta2 = Utils.getRgvStaNo(rgvSlave.getId(),inStn.getStaNo()); + } + + if (inStn.getSourceStaNo() == 2102 && staProtocol.isEmptyMk()){ //鍖哄垎绌烘澘 + type2 = 1; + } + + if(inStn.getSourceStaNo() == 2102){ + weight2 = staProtocol.getWeight().doubleValue()/10; + } + Integer staNo = Utils.getStaNo(rgvSlave.getId(), (int) sta2); + BasDevp devp2 = basDevpService.selectById(staNo); + if (devp2.getWrkNo()!=0 || Cools.isEmpty(devp2.getLoading()) || devp2.getLoading().equals("Y")){ + continue; + } + + work2 = true; + if (inStn.getSourcePlcId() == 4){ + matnr2 = staProtocol.getMatnr(); + batch2 = staProtocol.getBatch(); + anfme2 = (Cools.isEmpty(staProtocol.getAnfme2()) || staProtocol.getAnfme2()==0) ? anfme2:staProtocol.getAnfme2().shortValue(); + + weight11 = staProtocol.getWeight1(); + weight2 = weight11; + String memoBool = staProtocol.isBan()? "瀛樺湪":"涓嶅瓨鍦�"; + memo2 = memoBool+"鍗婃《"; + } + devpThread.setPakMk(inStn.getSourceStaNo(),false); + break; + } + + + } + } + + + if (work1 || work2){ + //rgv浠诲姟涓嬪彂-------------------------------------------------------------- + RgvCommand command = new RgvCommand(); + command.setRgvNo(rgvSlave.getId()); // RGV缂栧彿 + //宸ヤ綅1 + command.setTaskNo1(workNo1); // 宸ヤ綔鍙� + command.setSourceStaNo1(souSta1); // 婧愮珯 + command.setDestinationStaNo1(sta1); // 鐩爣绔� + command.setAckFinish1(false); // 浠诲姟瀹屾垚纭浣� + + //宸ヤ綅2 + command.setTaskNo2(workNo2); // 宸ヤ綔鍙� + command.setSourceStaNo2(souSta2); // 婧愮珯 + command.setDestinationStaNo2(sta2); // 鐩爣绔� + command.setAckFinish2(false); // 浠诲姟瀹屾垚纭浣� + + command.setMatnr(matnr); + command.setMatnr2(matnr2); + command.setBatch(batch); + command.setBatch2(batch2); + command.setAnfme(anfme); + command.setAnfme2(anfme2); + + command.setType(type); + command.setType2(type2); + + command.setWeight(weight); + command.setWeight2(weight2); + + if (workNo1 == 0 && workNo2 !=0){ + command.setTaskMode(RgvTaskModeType.FETCH_PUT2); // 浠诲姟妯″紡: 2鍙栨斁璐� + } else if (workNo1 != 0 && workNo2 ==0) { + command.setTaskMode(RgvTaskModeType.FETCH_PUT1); // 浠诲姟妯″紡: 1鍙栨斁璐� + }else { + command.setTaskMode(RgvTaskModeType.FETCH_PUT_ALL); // 浠诲姟妯″紡: all鍙栨斁璐� + } + command.setCommand(false); + rgvTaskSave(command,memo,memo2); + MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(2, command)); + log.info("rgv浠诲姟涓嬪彂锛�"+JSON.toJSONString(command)); + } + } + + } + } + + + public synchronized void RGVTaskOver() { + for (RgvSlave rgvSlave:slaveProperties.getRgv()) { + if (rgvSlave.getId() ==2){ + continue; + } + ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (Cools.isEmpty(rgvProtocol)){ + continue; + }else { + rgvProtocol = rgvProtocol.clone(); + } + + //宸ヤ綅涓�浠诲姟瀹屾垚 + if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING && rgvProtocol.getLoaded1() == 0) { + + try { + boolean offer = MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(3, new RgvCommand())); + log.info("{}鍙穜gv宸ヤ綅涓�宸ヤ綔瀹屾垚澶嶄綅,宸ヤ綔鍙�:{}",rgvSlave.getId(),rgvProtocol.getTaskNo1()); + if (offer){ + //瀹屾垚rgv浠诲姟 + Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", rgvSlave.getId()).eq("wrk_no", rgvProtocol.getTaskNo1()); + WrkMastSta wrkMastSta1 = wrkMastStaService.selectOne(wrkMastStaWrapper); + if (Cools.isEmpty(wrkMastSta1)){ + log.error("瀹屾垚{}鍙疯溅宸ヤ綅涓�浠诲姟鏈壘鍒板搴攔gv浠诲姟,{}",rgvSlave.getId(),rgvProtocol.getTaskNo1()); + }else { + if (wrkMastSta1.getWrkType() == 8 ){ + wrkMastSta1.setWrkSts(3); + wrkMastStaService.update(wrkMastSta1,wrkMastStaWrapper); + } + } + + //瀹屾垚宸ヤ綔妗d换鍔� + if (rgvSlave.getId() != 1){ + WrkMast wrkMast = wrkMastService.selectByworkNo(rgvProtocol.getTaskNo1()); + if (Cools.isEmpty(wrkMast)){ + log.error("瀹屾垚{}鍙疯溅宸ヤ綅涓�浠诲姟鏈壘鍒板搴攔gv浠诲姟,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); + } else { + if (wrkMast.getIoType() == 110 || wrkMast.getIoType() == 101){ + Date date = new Date(); + wrkMast.setWrkSts(14L); + wrkMast.setModiTime(date); + wrkMastService.updateById(wrkMast); + } else if (wrkMast.getIoType()==199 && rgvSlave.getId()==3 && (wrkMast.getStaNo()==3007 || wrkMast.getStaNo()==3012)){ + Date date = new Date(); + wrkMast.setWrkSts(105L); + wrkMast.setModiTime(date); + wrkMastService.updateById(wrkMast); + } + } + } + } + + + }catch (Exception e){ + log.error("瀹屾垚{}鍙疯溅宸ヤ綅涓�浠诲姟鍑洪敊!!!!!!!!!!!!!!!!,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); + continue; + } + + + + } + + //宸ヤ綅浜屼换鍔″畬鎴� + if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING2 && rgvProtocol.getLoaded2() == 0) { + try { + boolean offer = MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(4, new RgvCommand())); + log.info("{}鍙穜gv宸ヤ綅浜屽伐浣滃畬鎴愬浣�,宸ヤ綔鍙�:{}",rgvSlave.getId(),rgvProtocol.getTaskNo2()); + if (offer){ + //瀹屾垚rgv浠诲姟 + Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", rgvProtocol.getRgvNo()).eq("wrk_no2", rgvProtocol.getTaskNo2()); + WrkMastSta wrkMastSta1 = wrkMastStaService.selectOne(wrkMastStaWrapper); + if (Cools.isEmpty(wrkMastSta1)){ + log.error("瀹屾垚{}鍙疯溅宸ヤ綅浜屼换鍔℃湭鎵惧埌瀵瑰簲宸ヤ綔浠诲姟,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2()); + }else { + if (wrkMastSta1.getWrkType() == 9 ){ + wrkMastSta1.setWrkSts(3); + wrkMastStaService.update(wrkMastSta1,wrkMastStaWrapper); + }else if (wrkMastSta1.getWrkType() == 1){ + wrkMastSta1.setWrkSts(3); + wrkMastStaService.update(wrkMastSta1,wrkMastStaWrapper); + } + } + + //瀹屾垚宸ヤ綔妗d换鍔� + if (rgvSlave.getId() != 1){ + WrkMast wrkMast = wrkMastService.selectByworkNo(rgvProtocol.getTaskNo2()); + if (Cools.isEmpty(wrkMast)){ + log.error("瀹屾垚{}鍙疯溅宸ヤ綅涓�浠诲姟鏈壘鍒板搴攔gv浠诲姟,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2()); + }else { + if (wrkMast.getIoType() == 110 || wrkMast.getIoType() == 101){ + Date date = new Date(); + wrkMast.setWrkSts(14L); + wrkMast.setModiTime(date); + wrkMastService.updateById(wrkMast); + } + } + } + + } + + }catch (Exception e){ + log.error("瀹屾垚{}鍙疯溅宸ヤ綅涓�浠诲姟鍑洪敊!!!!!!!!!!!!!!!!,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); + continue; + } + + + + + } + } + } + + //浜屽彿rgv杈撻�佺嚎鍛戒护涓嬪彂 + public synchronized void RGVTaskput() { + for (RgvSlave rgvSlave:slaveProperties.getRgv()) { + if (rgvSlave.getId() ==2){ + continue; + } + ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (Cools.isEmpty(rgvProtocol)){ + continue; + }else { + rgvProtocol = rgvProtocol.clone(); + } + + //宸ヤ綅涓�浠诲姟瀹屾垚 + if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.OUTSTN1 && rgvProtocol.getLoaded1() == 1) { + WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvSlave.getId(), rgvProtocol.getTaskNo1()); + WrkMast wrkMast = wrkMastService.selectByworkNo(rgvProtocol.getTaskNo1()); + if (Cools.isEmpty(wrkMastSta)){ + log.error("鏈煡璇㈠埌rgv宸ヤ綔浠诲姟锛宺gv缂栧彿{},宸ヤ綔鍙穥}",rgvSlave.getId(),rgvProtocol.getTaskNo1()); + continue; + } + for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){ + if (!Objects.equals(Utils.getStaNo(rgvSlave.getId(), wrkMastSta.getWrkEnd()), outStn.getStaNo())){ + continue; + } + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.isPakMk()){ + staProtocol.setWorkNo(wrkMastSta.getWrkNo().shortValue()); + if (rgvSlave.getId() == 3 && outStn.getStaPlcId() == 6){ + staProtocol.setStaNo((short)2401); + }else { + staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); + } + + MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol)); + } + } + } + + //宸ヤ綅浜屼换鍔″畬鎴� + if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.OUTSTN8 && rgvProtocol.getLoaded2() == 1) { + WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo2(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo2()); + WrkMast wrkMast = wrkMastService.selectByworkNo(rgvProtocol.getTaskNo2()); + if (Cools.isEmpty(wrkMastSta)){ + log.error("鏈煡璇㈠埌rgv宸ヤ綔浠诲姟锛宺gv缂栧彿{},宸ヤ綔鍙穥}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2()); + continue; + } + for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){ + if (!Objects.equals(Utils.getStaNo(rgvSlave.getId(), wrkMastSta.getStaEnd()), outStn.getStaNo())){ + continue; + }//鍒ゆ柇鏄惁涓哄伐浣滄。绔欑偣 + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.isPakMk()){ + staProtocol.setWorkNo(wrkMastSta.getWrkNo2().shortValue()); + staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); + MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol)); + } + } + } + } + } + + //浜屽彿rgv杈撻�佺嚎鍛戒护涓嬪彂 + public synchronized void RGV2Taskput() { + for (RgvSlave rgvSlave:slaveProperties.getRgv()) { + if (rgvSlave.getId() !=2){ + continue; + } + ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (Cools.isEmpty(rgvProtocol)){ + continue; + }else { + rgvProtocol = rgvProtocol.clone(); + } + + //宸ヤ綅涓�浠诲姟瀹屾垚 + if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.OUTSTN1 && rgvProtocol.getLoaded1() == 1) { + WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo1()); + if (Cools.isEmpty(wrkMastSta)){ + log.error("鏈煡璇㈠埌rgv宸ヤ綔浠诲姟锛宺gv缂栧彿{},宸ヤ綔鍙穥}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); + continue; + } + for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){ + if (!Objects.equals(Utils.getStaNo(rgvSlave.getId(), wrkMastSta.getWrkEnd()), outStn.getStaNo())){ + continue; + } + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + + if (outStn.getStaPlcId() == 2){ + if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.isPakMk()){ + staProtocol.setWorkNo(wrkMastSta.getWrkNo().shortValue()); + if (wrkMastSta.getType() == 1){ + staProtocol.setStaNo((short) 9999); + } else if (wrkMastSta.getType() == 2){//杞繍 + staProtocol.setStaNo((short) 2114); + } else { + staProtocol.setStaNo((short) 2106); + } + staProtocol.setMatnr(wrkMastSta.getMatnr1()); + + if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) { + continue; + } + } + } + + } + } + + //宸ヤ綅浜屼换鍔″畬鎴� + if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.OUTSTN8 && rgvProtocol.getLoaded2() == 1) { + WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo2(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo2()); + if (Cools.isEmpty(wrkMastSta)){ + log.error("鏈煡璇㈠埌rgv宸ヤ綔浠诲姟锛宺gv缂栧彿{},宸ヤ綔鍙穥}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2()); + continue; + } + for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){ + if (!Objects.equals(Utils.getStaNo(rgvSlave.getId(), wrkMastSta.getStaEnd()), outStn.getStaNo())){ + continue; + } + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + if (outStn.getStaPlcId() == 2){ + if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.isPakMk()){ + staProtocol.setWorkNo(wrkMastSta.getWrkNo2().shortValue()); + if (wrkMastSta.getType2() == 1){ + staProtocol.setStaNo((short) 9999); + } else if (wrkMastSta.getType() == 2){//杞繍 + staProtocol.setStaNo((short) 2114); + } else { + staProtocol.setStaNo((short) 2106); + } + + staProtocol.setMatnr(wrkMastSta.getMatnr2()); + + if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) { + continue; + } + } + } + } + } + } + } + + public synchronized void RGV2TaskOver() { + for (RgvSlave rgvSlave:slaveProperties.getRgv()) { + if (rgvSlave.getId() !=2){ + continue; + } + ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (Cools.isEmpty(rgvProtocol)){ + continue; + }else { + rgvProtocol = rgvProtocol.clone(); + } + + //宸ヤ綅涓�浠诲姟瀹屾垚 + if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING && rgvProtocol.getLoaded1() == 0) { + + try { + boolean offer = MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(3, new RgvCommand())); + log.info("{}鍙穜gv宸ヤ綅涓�宸ヤ綔瀹屾垚澶嶄綅,宸ヤ綔鍙�:{}",rgvSlave.getId(),rgvProtocol.getTaskNo1()); + if (offer){ + + Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", rgvProtocol.getRgvNo()).eq("wrk_no", rgvProtocol.getTaskNo1()); + WrkMastSta wrkMastSta1 = wrkMastStaService.selectOne(wrkMastStaWrapper); + if (Cools.isEmpty(wrkMastSta1)){ + log.error("瀹屾垚{}鍙疯溅宸ヤ綅涓�浠诲姟鏈壘鍒板搴攔gv浠诲姟,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); + }else { + if (wrkMastSta1.getWrkType() == 8 ){ + wrkMastSta1.setWrkSts(3); + wrkMastStaService.update(wrkMastSta1,wrkMastStaWrapper); + } + } + + //瀹屾垚宸ヤ綔妗d换鍔� + WrkMast wrkMast = wrkMastService.selectByworkNo(rgvProtocol.getTaskNo1()); + if (Cools.isEmpty(wrkMast)){ + log.error("瀹屾垚{}鍙疯溅宸ヤ綅涓�浠诲姟鏈壘鍒板搴攔gv浠诲姟,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); + }else { + if (wrkMast.getIoType() == 110 || wrkMast.getIoType() == 101){ + Date date = new Date(); + wrkMast.setWrkSts(14L); + wrkMast.setModiTime(date); + wrkMastService.updateById(wrkMast); + } else if (wrkMast.getIoType()==199 && wrkMast.getStaNo()==2001){ + Date date = new Date(); + wrkMast.setWrkSts(105L); + wrkMast.setModiTime(date); + wrkMastService.updateById(wrkMast); + } + } + + + } + + + }catch (Exception e){ + log.error("瀹屾垚{}鍙疯溅宸ヤ綅涓�浠诲姟鍑洪敊!!!!!!!!!!!!!!!!,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); + continue; + } + + + + } + + //宸ヤ綅浜屼换鍔″畬鎴� + if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING2 && rgvProtocol.getLoaded2() == 0) { + try { + boolean offer = MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(4, new RgvCommand())); + log.info("{}鍙穜gv宸ヤ綅浜屽伐浣滃畬鎴愬浣�,宸ヤ綔鍙�:{}",rgvSlave.getId(),rgvProtocol.getTaskNo2()); + if (offer){ + Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", rgvProtocol.getRgvNo()).eq("wrk_no2", rgvProtocol.getTaskNo2()); + WrkMastSta wrkMastSta1 = wrkMastStaService.selectOne(wrkMastStaWrapper); + if (Cools.isEmpty(wrkMastSta1)){ + log.error("瀹屾垚{}鍙疯溅宸ヤ綅浜屼换鍔℃湭鎵惧埌瀵瑰簲宸ヤ綔浠诲姟,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2()); + }else { + if (wrkMastSta1.getWrkType() == 9 ){ + wrkMastSta1.setWrkSts(3); + wrkMastStaService.update(wrkMastSta1,wrkMastStaWrapper); + }else if (wrkMastSta1.getWrkType() == 1){ + wrkMastSta1.setWrkSts(3); + wrkMastStaService.update(wrkMastSta1,wrkMastStaWrapper); + } + } + + //瀹屾垚宸ヤ綔妗d换鍔� + WrkMast wrkMast = wrkMastService.selectByworkNo(rgvProtocol.getTaskNo2()); + if (Cools.isEmpty(wrkMast)){ + log.error("瀹屾垚{}鍙疯溅宸ヤ綅涓�浠诲姟鏈壘鍒板搴攔gv浠诲姟,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2()); + }else { + if (wrkMast.getIoType() == 110 || wrkMast.getIoType() == 101){ + Date date = new Date(); + wrkMast.setWrkSts(14L); + wrkMast.setModiTime(date); + wrkMastService.updateById(wrkMast); + } + } + + } + + + }catch (Exception e){ + log.error("瀹屾垚{}鍙疯溅宸ヤ綅涓�浠诲姟鍑洪敊!!!!!!!!!!!!!!!!,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); + continue; + } + + + + + } + } + } + + public boolean rgvTaskSave(RgvCommand command,String memo,String memo2){ +// Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", command.getRgvNo()).eq("wrk_no", command.getTaskNo1()); + if (command.getTaskNo1() > 0){ + List<WrkMastSta> wrkMastSta1 = wrkMastStaService.selectBywrkNoHistoricalTasks(command.getRgvNo(),command.getTaskNo1()); + if (!Cools.isEmpty(wrkMastSta1)){ + for (WrkMastSta wrkMastSta :wrkMastSta1){ + wrkMastStaService.deleteById(wrkMastSta); + } + + } + } + if (command.getTaskNo2() > 0){ + List<WrkMastSta> wrkMastSta1 = wrkMastStaService.selectBywrkNoHistoricalTasks2(command.getRgvNo(),command.getTaskNo2()); + if (!Cools.isEmpty(wrkMastSta1)){ + for (WrkMastSta wrkMastSta :wrkMastSta1){ + wrkMastStaService.deleteById(wrkMastSta); + } + + } + } + + + WrkMastSta wrkMastSta = new WrkMastSta(); + wrkMastSta.setWrkNo(Long.valueOf(command.getTaskNo1())); + wrkMastSta.setWrkNo2(Long.valueOf(command.getTaskNo2())); + wrkMastSta.setWrkStart(command.getSourceStaNo1().intValue()); + wrkMastSta.setWrkEnd(command.getDestinationStaNo1().intValue()); + wrkMastSta.setStaStart(command.getSourceStaNo2().intValue()); + wrkMastSta.setStaEnd(command.getDestinationStaNo2().intValue()); + wrkMastSta.setWrkSts(1); + Date now = new Date(); + wrkMastSta.setCreateTime(now); + wrkMastSta.setUpdateTime(now); + wrkMastSta.setWrkCrn(command.getRgvNo()); + wrkMastSta.setWrkType(command.getTaskMode().intValue()); + wrkMastSta.setMatnr1(command.getMatnr()); + wrkMastSta.setMatnr2(command.getMatnr2()); + wrkMastSta.setType(command.getType().intValue()); + wrkMastSta.setType2(command.getType2().intValue()); + wrkMastSta.setBatch(command.getBatch()); + wrkMastSta.setBatch2(command.getBatch2()); + wrkMastSta.setAnfme(command.getAnfme().intValue()); + wrkMastSta.setAnfme2(command.getAnfme2().intValue()); + wrkMastSta.setWeight(command.getWeight()); + wrkMastSta.setWeight2(command.getWeight2()); + wrkMastSta.setMemo(memo); + wrkMastSta.setMemo2(memo2); + + return wrkMastStaService.insert(wrkMastSta); + } + + //浜屾湡缁勬墭 + public synchronized void generateStoreWrkFile2() { + // 鏍规嵁杈撻�佺嚎plc閬嶅巻 + for (DevpSlave devp : slaveProperties.getDevp()) { + if (devp.getId() != 2){ + continue; + } + // 閬嶅巻鍏ュ簱鍙� + for (DevpSlave.Sta inSta : devp.getInSta()) { + // 鑾峰彇鏉$爜鎵弿浠俊鎭� + BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode()); + if (barcodeThread == null) { + continue; + } + String barcode = barcodeThread.getBarcode(); + // 鑾峰彇鍏ュ簱绔欎俊鎭� + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + if (!Cools.isEmpty(barcode)) { + log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode); + if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) { + continue; + } + } else { + // 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; + } + // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 + if (staProtocol.isAutoing() + && staProtocol.isLoading() + && staProtocol.isInEnable() + && !staProtocol.isEmptyMk() + && staProtocol.getStaNo() != 9999 + && staProtocol.isPakMk()) { + + if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode)) { + log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode); + //鏉$爜涓虹┖鎴栬�呬笉绗﹀悎锛岄��搴撳埌 + 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; + } + + // 鍒ゆ柇閲嶅宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + if (barcode.length() == 8) { + wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode); + if (wrkMast != null) { + log.error("宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast.getWrkNo()); + continue; + } + } +// 鑾峰彇鍏ュ簱閫氱煡妗� + WaitPakin waitPakin = waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("zpallet", barcode).eq("io_status", "N")); + if (Cools.isEmpty(waitPakin)) { + try { + CreateComb(barcode, staProtocol.getMatnr(),staProtocol.getWorkNo().intValue(),staProtocol.getBatch(),inSta); + }catch (IOException e) { + throw new CoolException(e); + } + } else if (waitPakin.getWeight() == null) { + WrkMastSta wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>().eq("wrk_no", staProtocol.getWorkNo().intValue())); + if (Cools.isEmpty(wrkMastSta)){ + wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>().eq("wrk_no2", staProtocol.getWorkNo().intValue())); + if (Cools.isEmpty(wrkMastSta)){ + throw new CoolException("鏈壘鍒板搴旂殑浠诲姟淇℃伅"); + } + waitPakin.setWeight(wrkMastSta.getWeight2()); + }else { + waitPakin.setWeight(wrkMastSta.getWeight()); + } + waitPakinService.update(waitPakin,new EntityWrapper<WaitPakin>().eq("zpallet", barcode).eq("io_status", "N")); + } else { + 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/v1") + .setJson(JSON.toJSONString(param)) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); + if (jsonObject.getInteger("code").equals(200)) { + StartupDto dto = jsonObject.getObject("data", StartupDto.class); + + 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 if(jsonObject.getInteger("code").equals(700)) { + log.error(barcode + "鎵樼洏璇嗗埆寮傚父锛岃鍏堣繘琛岀粍鎵橈紒"); + // led 寮傚父鏄剧ず + ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); + if (ledThread != null) { + String errorMsg = barcode + "鎵樼洏璇嗗埆寮傚父锛岃鍏堣繘琛岀粍鎵橈紒"; + MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); + } + } else { + log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); + } + + } catch (Exception e) { + log.error(""+e); + e.printStackTrace(); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + } + + + } + + } + } + + } + + public void CreateComb(String barcode,Integer code,Integer wrkNo,String batch,DevpSlave.Sta inSta) throws IOException { + Double anfme = 0d; + Double weight = 0d; + String memo = ""; + + WrkMastSta wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>().eq("wrk_no", wrkNo)); + if (Cools.isEmpty(wrkMastSta)){ + wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>().eq("wrk_no2", wrkNo)); + if (Cools.isEmpty(wrkMastSta)){ + if (code >0 && !Cools.isEmpty(batch)){ + anfme = 1d; + }else { + throw new CoolException("鏈壘鍒板搴旂殑浠诲姟淇℃伅"); + } + }else { + batch = wrkMastSta.getBatch2(); + anfme = wrkMastSta.getAnfme2().doubleValue(); + code = wrkMastSta.getMatnr2(); + weight = wrkMastSta.getWeight2(); + memo = wrkMastSta.getMemo2(); + } + }else { + batch = wrkMastSta.getBatch(); + anfme = wrkMastSta.getAnfme().doubleValue(); + code = wrkMastSta.getMatnr1(); + weight = wrkMastSta.getWeight(); + memo = wrkMastSta.getMemo(); + } + MatnrCode matnrCode = matnrCodeService.selectByCode(code); + if (Cools.isEmpty(matnrCode)){ + throw new CoolException("鏈壘鍒板搴旂殑鐗╂枡淇℃伅"); + } + CombParam combParam = new CombParam(); + ArrayList<CombParam.CombMat> combMats = new ArrayList<>(); + CombParam.CombMat combMat = new CombParam.CombMat(); + combParam.setBarcode(barcode); + combMat.setMatnr(matnrCode.getMatnr()); + combMat.setBatch(batch); + combMat.setAnfme(anfme); + combMat.setWeight(weight); + combMat.setMemo(memo); + + combMats.add(combMat); + combParam.setCombMats(combMats); + + String response = new HttpHandler.Builder() + .setUri(wmsUrl) + .setPath("/mobile/comb/auth") + .setJson(JSON.toJSONString(combParam)) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.getInteger("code").equals(200)) { + + }else { + log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/mobile/comb/auth", JSON.toJSONString(combParam), response); +// log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode); + //鏉$爜涓虹┖鎴栬�呬笉绗﹀悎锛岄��搴撲俊鍙蜂笅鍙� + boolean result = MessageQueue.offer(SlaveType.Devp, 2, new Task(3, null)); + } + } + } -- Gitblit v1.9.1