From d2b19008230941c105b57b8f7b49b291560f2cfb Mon Sep 17 00:00:00 2001 From: TQS <56479841@qq.com> Date: 星期一, 19 八月 2024 11:09:25 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 1138 ++++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 955 insertions(+), 183 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 1795d06..8837902 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -3,6 +3,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.baomidou.mybatisplus.mapper.Wrapper; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.*; @@ -140,6 +141,24 @@ News.error("MainServiceImpl generateStoreWrkFile"+"203涓哄嚭搴撴ā寮忥紝绂佹鍏ュ簱锛岄��鍥炲叆搴撳彛銆傦紒锛侊紒"); continue; } + if ( inSta.getStaNo()==113 && devpThread.ioModeOf3F == IoModeType.PAKOUT_MODE) { + //鏈夊嚭搴撲换鍔★紝閫�搴撳埌鍏ュ簱鍙� + staProtocol.setWorkNo((short) 9999); + staProtocol.setStaNo((short)114); + devpThread.setPakMk(staProtocol.getSiteId(), false); + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + News.error("MainServiceImpl generateStoreWrkFile"+"103涓哄嚭搴撴ā寮忥紝绂佹鍏ュ簱锛岄��鍥炲叆搴撳彛銆傦紒锛侊紒"); + continue; + } + if ( inSta.getStaNo()==213 && devpThread.ioModeOf4F == IoModeType.PAKOUT_MODE) { + //鏈夊嚭搴撲换鍔★紝閫�搴撳埌鍏ュ簱鍙� + staProtocol.setWorkNo((short) 9999); + staProtocol.setStaNo((short)214); + devpThread.setPakMk(staProtocol.getSiteId(), false); + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + News.error("MainServiceImpl generateStoreWrkFile"+"203涓哄嚭搴撴ā寮忥紝绂佹鍏ュ簱锛岄��鍥炲叆搴撳彛銆傦紒锛侊紒"); + continue; + } } // 鑾峰彇鏉$爜鎵弿浠俊鎭� @@ -212,7 +231,7 @@ // plc 澶勭悊 barcodeThread.setBarcode(""); staProtocol.setWorkNo(dto.getWorkNo().shortValue()); - staProtocol.setStaNo(dto.getStaNo().shortValue()); + staProtocol.setStaNo(Utils.getStaNoConvertCentreOther3(dto.getStaNo(),inSta.getStaNo()).shortValue()); devpThread.setPakMk(staProtocol.getSiteId(), false); ledThread.errorReset(); @@ -238,6 +257,22 @@ // led 寮傚父鏄剧ず if (ledThread != null) { String errorMsg = barcode + "鎵樼洏璇嗗埆寮傚父锛岃鍏堣繘琛岀粍鎵橈紒"; + MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); + } + } else if (code == 1000){ + if (inSta.getStaNo().equals(103)){ + staProtocol.setWorkNo((short)9996); + staProtocol.setStaNo((short)203); + }else { + staProtocol.setWorkNo((short)9996); + staProtocol.setStaNo((short)103); + } + devpThread.setPakMk(staProtocol.getSiteId(), false); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + + // led 寮傚父鏄剧ず + if (ledThread != null) { + String errorMsg = barcode + "闇�瑕佹崲鍏ュ簱绔欍�傜洰鏍囩珯锛�"+staProtocol.getStaNo(); MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); } } @@ -335,8 +370,6 @@ staNo = 103; if (basDevps1.size()!=0 && basDevps2.size()!=0){ continue; - } else if (basDevps1.size()!=0){ - staNo = 203; } List<WrkMast> wrkMasts1 = wrkMastMapper.selectWrkStsAndIoType((int)staNo); @@ -359,8 +392,6 @@ staNo = 203; if (basDevps1.size()!=0 && basDevps2.size()!=0){ continue; - } else if (basDevps2.size()!=0){ - staNo = 103; } // if (basDevps2.size()!=0){ @@ -390,9 +421,17 @@ staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); staProtocol.setStaNo(staNo); devpThread.setPakMk(staProtocol.getSiteId(), false); + if (staProtocol.getStaNo().equals(300)){ + BasDevp basDevp = basDevpMapper.selectByDevNo(300); + basDevp.setWrkNo1(wrkMast.getWrkNo()); + basDevpService.selectById(basDevp); + News.info("300绔欏幓鍏ュ簱绔欎换鍔′笅鍙戯紝鏇存柊绔欑偣琛紝[浠诲姟鍙�:{}锛岀珯鐐瑰彿:{}]", wrkMast.getWrkNo().shortValue(), staNo); + } boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); if (!result) { News.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId()); + } else { + News.info("300绔欏幓鍏ュ簱绔欎换鍔″凡涓嬪彂锛孾浠诲姟鍙�:{}锛岀珯鐐瑰彿:{}]", wrkMast.getWrkNo().shortValue(), staNo); } } } @@ -484,136 +523,231 @@ continue; } - try { - // 璁块棶 WMS 鑾峰彇鍏ュ簱搴撲綅 - LocTypeDto locTypeDto = new LocTypeDto(staProtocol); - SearchLocParam param = new SearchLocParam(); - param.setWrkNo(wrkMast.getWrkNo()); - param.setIoType(wrkMast.getIoType()); - param.setSourceStaNo(pickSta.getStaNo()); - param.setLocType1(locTypeDto.getLocType1()); - String response = new HttpHandler.Builder() - .setUri(wmsUrl) - .setPath("/rpc/pakin/loc/v1") - .setJson(JSON.toJSONString(param)) - .build() - .doPost(); - JSONObject jsonObject = JSON.parseObject(response); + // 鑾峰彇鐩爣绔� + 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)) { + // led 寮傚父鏄剧ず + String errorMsg = ""; LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); - Integer code = jsonObject.getInteger("code"); - if (code.equals(200)) { - StartupDto dto = jsonObject.getObject("data", StartupDto.class); - News.info("鍐嶅叆搴撹幏鍙栨柊搴撲綅鎴愬姛锛岃繑鍥炴暟鎹�===>>", JSON.toJSON(dto)); -// // 鑾峰彇鐩爣绔� -// Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() -// .eq("type_no", wrkMast.getIoType() - 50) -// .eq("stn_no", pickSta.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯 -// .eq("crn_no", dto.getCrnNo()); // 鍫嗗灈鏈哄彿 -// StaDesc staDesc = staDescService.selectOne(wrapper); -// if (Cools.isEmpty(staDesc)) { -// News.error("鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo()); -// continue; -// } -// // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�) -// Integer staNo = staDesc.getCrnStn(); - - // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。 -// if (wrkMastMapper.saveWrkDetlLog(wrkMast.getWrkNo()) == 0) { -// throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触"); -// } - // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� - if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { - throw new CoolException(wrkMast.getWrkNo() + "淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); - } - - String sourceLocNo = wrkMast.getSourceLocNo().trim(); - - // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� - wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57 - wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 - wrkMast.setIoPri(13D); - wrkMast.setSourceStaNo(pickSta.getStaNo()); // 婧愮珯 - wrkMast.setStaNo(dto.getStaNo()); // 鐩爣绔� - wrkMast.setCrnNo(dto.getCrnNo()); - wrkMast.setLocNo(dto.getLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣� - wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌� - wrkMast.setModiTime(new Date()); - if (wrkMastMapper.updateById(wrkMast) == 0) { - throw new CoolException(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); - } - if (wrkMastMapper.setSteEmpty(wrkMast.getWrkNo()) == 0) { - throw new CoolException(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); - } - - LocMast locMast = null; - // 淇敼鐩爣搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴� - locMast = locMastService.selectById(wrkMast.getLocNo()); - locMast.setLocSts("Q"); - locMast.setModiTime(new Date()); - if (!locMastService.updateById(locMast)) { - throw new CoolException(wrkMast.getWrkNo() + "淇敼鐩爣搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�"); - } - // 婧愬簱浣嶅簱瀛樻槑缁嗚浆绉诲埌鐩爣搴撲綅 - if (!locDetlService.updateLocNo(wrkMast.getLocNo(), sourceLocNo)) { - throw new CoolException(wrkMast.getLocNo() + "浠诲姟搴撳瓨鏄庣粏杞Щ澶辫触锛侊紒锛�"); - } - - // 淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣� - LocMast sourceLocMast = locMastService.selectById(sourceLocNo); - if (sourceLocMast.getLocSts().equals("P")) { - sourceLocMast.setLocSts("O"); - sourceLocMast.setBarcode(""); - sourceLocMast.setModiTime(new Date()); - if (!locMastService.updateById(sourceLocMast)) { - throw new CoolException(wrkMast.getWrkNo() + "淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�"); - } - locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo)); - } - - // 鏉$爜璁惧澶勭悊 - barcodeThread.setBarcode(""); - - ledThread.errorReset(); - - if(wrkMast.getIoType()>100){ - throw new CoolException("鍐嶅叆搴撴洿鏂板伐浣滄。澶辫触锛屼笉鑳界粰PLC涓嬪彂浠诲姟===>>" + wrkMast.getWrkNo()); - } - // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 - staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); - staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); - devpThread.setPakMk(staProtocol.getSiteId(), false); - boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); - if (!result) { - News.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId()); - } - - } else if (code == 500){ - if (ledThread != null) { - String errorMsg = jsonObject.getString("msg"); - if (!Cools.isEmpty(errorMsg)) { - MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); - } - } - News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); + if (wrkMast.getIoType() == 103) { + errorMsg = "褰撳墠鎷f枡浠诲姟璇风Щ鍔ㄨ嚦203绔�"; } 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)); - } + errorMsg = "褰撳墠鎷f枡浠诲姟璇风Щ鍔ㄨ嚦103绔�"; } - - } catch (Exception e) { - e.printStackTrace(); - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); -// continue; + if (ledThread != null) {MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg));} + News.error("鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo()); + continue; } + // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�) + Integer staNo = staDesc.getCrnStn(); + + // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。 + if (wrkMastMapper.saveWrkDetlLog(wrkMast.getWrkNo()) == 0) { + throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触"); + } + // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� + if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { + throw new CoolException(wrkMast.getWrkNo() + "淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); + } + + String sourceLocNo = wrkMast.getSourceLocNo().trim(); + + // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� + wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57 + wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 + wrkMast.setIoPri(13D); + wrkMast.setSourceStaNo(pickSta.getStaNo()); // 婧愮珯 + wrkMast.setStaNo(staNo); // 鐩爣绔� + wrkMast.setCrnNo(wrkMast.getCrnNo()); + wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣� + wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌� + wrkMast.setModiTime(new Date()); + if (wrkMastMapper.updateById(wrkMast) == 0) { + throw new CoolException(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); + } + if (wrkMastMapper.setSteEmpty(wrkMast.getWrkNo()) == 0) { + throw new CoolException(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); + } + + LocMast locMast = null; + // 淇敼鐩爣搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴� + locMast = locMastService.selectById(wrkMast.getLocNo()); + locMast.setLocSts("Q"); + locMast.setModiTime(new Date()); + if (!locMastService.updateById(locMast)) { + throw new CoolException(wrkMast.getWrkNo() + "淇敼鐩爣搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�"); + } + // 婧愬簱浣嶅簱瀛樻槑缁嗚浆绉诲埌鐩爣搴撲綅 + if (!locDetlService.updateLocNo(wrkMast.getLocNo(), sourceLocNo)) { + throw new CoolException(wrkMast.getLocNo() + "浠诲姟搴撳瓨鏄庣粏杞Щ澶辫触锛侊紒锛�"); + } + + // 淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣� + LocMast sourceLocMast = locMastService.selectById(sourceLocNo); + if (sourceLocMast.getLocSts().equals("P")) { + sourceLocMast.setLocSts("O"); + sourceLocMast.setBarcode(""); + sourceLocMast.setModiTime(new Date()); + if (!locMastService.updateById(sourceLocMast)) { + throw new CoolException(wrkMast.getWrkNo() + "淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�"); + } + locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo)); + } + + // 鏉$爜璁惧澶勭悊 + barcodeThread.setBarcode(""); + + if(wrkMast.getIoType()>100){ + throw new CoolException("鍐嶅叆搴撴洿鏂板伐浣滄。澶辫触锛屼笉鑳界粰PLC涓嬪彂浠诲姟===>>" + wrkMast.getWrkNo()); + } + // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 + staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); + staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + if (staProtocol.getStaNo().equals(300)){ + BasDevp basDevp = basDevpMapper.selectByDevNo(300); + basDevp.setWrkNo1(wrkMast.getWrkNo()); + basDevpService.selectById(basDevp); + } + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + if (!result) { + News.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId()); + } + +// try { +// // 璁块棶 WMS 鑾峰彇鍏ュ簱搴撲綅 +// LocTypeDto locTypeDto = new LocTypeDto(staProtocol); +// SearchLocParam param = new SearchLocParam(); +// param.setWrkNo(wrkMast.getWrkNo()); +// param.setIoType(wrkMast.getIoType()); +// param.setSourceStaNo(pickSta.getStaNo()); +// param.setLocType1(locTypeDto.getLocType1()); +// String response = new HttpHandler.Builder() +// .setUri(wmsUrl) +// .setPath("/rpc/pakin/loc/v1") +// .setJson(JSON.toJSONString(param)) +// .build() +// .doPost(); +// JSONObject jsonObject = JSON.parseObject(response); +// LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); +// Integer code = jsonObject.getInteger("code"); +// if (code.equals(200)) { +// StartupDto dto = jsonObject.getObject("data", StartupDto.class); +// News.info("鍐嶅叆搴撹幏鍙栨柊搴撲綅鎴愬姛锛岃繑鍥炴暟鎹�===>>", JSON.toJSON(dto)); +//// // 鑾峰彇鐩爣绔� +//// Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() +//// .eq("type_no", wrkMast.getIoType() - 50) +//// .eq("stn_no", pickSta.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯 +//// .eq("crn_no", dto.getCrnNo()); // 鍫嗗灈鏈哄彿 +//// StaDesc staDesc = staDescService.selectOne(wrapper); +//// if (Cools.isEmpty(staDesc)) { +//// News.error("鍏ュ簱璺緞涓嶅瓨鍦紒type_no={},stn_no={},crn_no={}", wrkMast.getIoType(), pickSta.getStaNo(), wrkMast.getCrnNo()); +//// continue; +//// } +//// // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�) +//// Integer staNo = staDesc.getCrnStn(); +// +// // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。 +//// if (wrkMastMapper.saveWrkDetlLog(wrkMast.getWrkNo()) == 0) { +//// throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触"); +//// } +// // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� +// if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { +// throw new CoolException(wrkMast.getWrkNo() + "淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); +// } +// +// String sourceLocNo = wrkMast.getSourceLocNo().trim(); +// +// // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� +// wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57 +// wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 +// wrkMast.setIoPri(13D); +// wrkMast.setSourceStaNo(pickSta.getStaNo()); // 婧愮珯 +// wrkMast.setStaNo(dto.getStaNo()); // 鐩爣绔� +// wrkMast.setCrnNo(dto.getCrnNo()); +// wrkMast.setLocNo(dto.getLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣� +// wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌� +// wrkMast.setModiTime(new Date()); +// if (wrkMastMapper.updateById(wrkMast) == 0) { +// throw new CoolException(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); +// } +// if (wrkMastMapper.setSteEmpty(wrkMast.getWrkNo()) == 0) { +// throw new CoolException(wrkMast.getWrkNo() + "鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); +// } +// +// LocMast locMast = null; +// // 淇敼鐩爣搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴� +// locMast = locMastService.selectById(wrkMast.getLocNo()); +// locMast.setLocSts("Q"); +// locMast.setModiTime(new Date()); +// if (!locMastService.updateById(locMast)) { +// throw new CoolException(wrkMast.getWrkNo() + "淇敼鐩爣搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴�"); +// } +// // 婧愬簱浣嶅簱瀛樻槑缁嗚浆绉诲埌鐩爣搴撲綅 +// if (!locDetlService.updateLocNo(wrkMast.getLocNo(), sourceLocNo)) { +// throw new CoolException(wrkMast.getLocNo() + "浠诲姟搴撳瓨鏄庣粏杞Щ澶辫触锛侊紒锛�"); +// } +// +// // 淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣� +// LocMast sourceLocMast = locMastService.selectById(sourceLocNo); +// if (sourceLocMast.getLocSts().equals("P")) { +// sourceLocMast.setLocSts("O"); +// sourceLocMast.setBarcode(""); +// sourceLocMast.setModiTime(new Date()); +// if (!locMastService.updateById(sourceLocMast)) { +// throw new CoolException(wrkMast.getWrkNo() + "淇敼婧愬簱浣嶇姸鎬� O.绌哄簱浣�"); +// } +// locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo)); +// } +// +// // 鏉$爜璁惧澶勭悊 +// barcodeThread.setBarcode(""); +// +// ledThread.errorReset(); +// +// if(wrkMast.getIoType()>100){ +// throw new CoolException("鍐嶅叆搴撴洿鏂板伐浣滄。澶辫触锛屼笉鑳界粰PLC涓嬪彂浠诲姟===>>" + wrkMast.getWrkNo()); +// } +// // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 +// staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); +// staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); +// devpThread.setPakMk(staProtocol.getSiteId(), false); +// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); +// if (!result) { +// News.error("鍙戝竷鍛戒护鑷宠緭閫佺嚎闃熷垪澶辫触锛侊紒锛� [plc缂栧彿锛歿}]", devp.getId()); +// } +// +// } else if (code == 500){ +// if (ledThread != null) { +// String errorMsg = jsonObject.getString("msg"); +// if (!Cools.isEmpty(errorMsg)) { +// MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); +// } +// } +// News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); +// } else { +// staProtocol.setWorkNo((short) 9995); +// staProtocol.setStaNo(pickSta.getBackSta().shortValue()); +// devpThread.setPakMk(staProtocol.getSiteId(), false); +// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); +// +// // led 寮傚父鏄剧ず +// if (ledThread != null) { +// String errorMsg = jsonObject.getString("msg"); +//// String errorMsg = barcode + "鎵樼洏璇嗗埆寮傚父锛岃鍏堣繘琛岀粍鎵橈紒"; +// MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); +// } +// } +// +// } catch (Exception e) { +// e.printStackTrace(); +// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); +//// continue; +// } } } @@ -728,6 +862,67 @@ // 鏌ヨ宸ヤ綔妗� WrkMast wrkMast = wrkMastMapper.selectPakOutStep16(staProtocol.getSiteId()); if (wrkMast == null) { + try{ + if (crnSlave.getId()!=2){ + // 鍒ゆ柇鍚婅溅鏄惁瀹為檯宸插畬鎴愶紝涓旂數鑴戠姸鎬佸湪move涓紝浠ュ鐢佃剳杩涜鏇存柊宸ヤ綔妗� + CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crnSlave.getId()); + CrnProtocol crnProtocol = crnThread.getCrnProtocol(); + if (crnProtocol.statusType == CrnStatusType.FETCHING || crnProtocol.statusType == CrnStatusType.PUTTING) { + // 绉诲姩涓� + continue; + } + WrkMast onlyWrkNo = wrkMastMapper.selectByOnlyWrkNo(crnProtocol.getTaskNo().intValue()); + if (Cools.isEmpty(onlyWrkNo) && (crnStn.getStaNo() == 112 || crnStn.getStaNo() == 212)){ + // 鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁� + if (crnProtocol.modeType == CrnModeType.AUTO + && crnProtocol.statusType == CrnStatusType.WAITING + && crnProtocol.forkPosType == CrnForkPosType.HOME + && crnProtocol.getBay().equals(crnStn.getBay().shortValue()) && crnProtocol.getLevel().equals(crnStn.getLev().shortValue())) { + News.info("鍫嗗灈鏈烘帴椹充换鍔″畬鎴愶紝宸ヤ綔鍙凤細"+crnProtocol.getTaskNo()+"锛涙墽琛屽爢鍨涙満鍙凤細"+crnSlave.getId()+"锛涙帴椹虫斁璐т綅锛�"+crnStn.getStaNo()+"锛涙帴椹宠璧扮洰鏍囩珯锛�"+Utils.getStaNoConvertCentreOther2(crnStn.getStaNo())); + // 涓嬪彂绔欑偣淇℃伅 + News.error("new867===>"+crnProtocol.getTaskNo()); + News.error("new867===>"+Utils.getStaNoConvertCentreOther2(crnStn.getStaNo()).toString()); + staProtocol.setWorkNo(crnProtocol.getTaskNo()); + staProtocol.setStaNo(Utils.getStaNoConvertCentreOther2(crnStn.getStaNo()).shortValue()); + if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) { + continue; + } + // 澶嶄綅鍫嗗灈鏈� + crnThread.setResetFlag(true); + continue; + } + } + if (Cools.isEmpty(onlyWrkNo) || + ((onlyWrkNo.getStaNo()!=114 && onlyWrkNo.getStaNo()!=214 && + onlyWrkNo.getSourceStaNo()!=114 && onlyWrkNo.getSourceStaNo()!=214) + && + (onlyWrkNo.getStaNo()!=113 && onlyWrkNo.getStaNo()!=213 && + onlyWrkNo.getSourceStaNo()!=113 && onlyWrkNo.getSourceStaNo()!=213)) + ){ + continue; + } + // 鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁� + if (crnProtocol.modeType == CrnModeType.AUTO + && crnProtocol.statusType == CrnStatusType.WAITING + && crnProtocol.forkPosType == CrnForkPosType.HOME + && crnProtocol.getBay().equals(crnStn.getBay().shortValue()) && crnProtocol.getLevel().equals(crnStn.getLev().shortValue())) { + News.info("鍫嗗灈鏈烘帴椹充换鍔″畬鎴愶紝宸ヤ綔鍙凤細"+crnProtocol.getTaskNo()+"锛涙墽琛屽爢鍨涙満鍙凤細"+crnSlave.getId()+"锛涙帴椹虫斁璐т綅锛�"+crnStn.getStaNo()+"锛涙帴椹宠璧扮洰鏍囩珯锛�"+Utils.getStaNoConvertCentreOther2(crnStn.getStaNo())); + // 涓嬪彂绔欑偣淇℃伅 + News.error("new867===>"+crnProtocol.getTaskNo()); + News.error("new867===>"+Utils.getStaNoConvertCentreOther2(crnStn.getStaNo()).toString()); + staProtocol.setWorkNo(crnProtocol.getTaskNo()); + staProtocol.setStaNo(Utils.getStaNoConvertCentreOther2(crnStn.getStaNo()).shortValue()); + if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) { + continue; + } + // 澶嶄綅鍫嗗灈鏈� + crnThread.setResetFlag(true); + continue; + } + } + } catch (Exception e){ + News.info("鍫嗗灈鏈烘帴椹充换鍔″畬鎴愶紝寮傚父锛�"+e.getMessage()); + } continue; } // 鍒ゆ柇宸ヤ綔妗f潯浠� @@ -750,7 +945,9 @@ // 涓嬪彂绔欑偣淇℃伅 staProtocol.setWorkNo(wrkMast.getWrkNo().shortValue()); - staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); + News.error("new902===>"+crnProtocol.getCrnNo().toString()); + News.error("new902===>"+wrkMast.getStaNoConvert(crnProtocol.getCrnNo()).toString()); + staProtocol.setStaNo(wrkMast.getStaNoConvert(crnProtocol.getCrnNo()).shortValue()); if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) { continue; } @@ -820,6 +1017,8 @@ } // 搴撲綅绉昏浆 this.locToLoc1(crn, crnProtocol); + // 搴撲綅绉昏浆(楂橀绉诲簱锛宨o_type=111) + this.locToLoc111(crn, crnProtocol); // 搴撲綅绉昏浆锛屽洖鍘熷簱浣� this.locToLoc17(crn, crnProtocol); // 婕旂ず浠诲姟 @@ -851,21 +1050,162 @@ // 鑾峰彇宸ヤ綔鐘舵�佷负 2,3,4,5,6 鐨勫叆搴撳伐浣滄。 WrkMast wrkMast = wrkMastMapper.selectPakInStep23456(slave.getId(), staProtocol.getWorkNo().intValue(), crnStn.getStaNo()); - if(null == wrkMast) { -// News.error("{}绔欑偣鏌ヨ鏃犲緟鍏ュ簱鏁版嵁 宸ヤ綔鍙�={}", crnStn.getStaNo(), staProtocol.getWorkNo()); + if(null == wrkMast){ + try{ + WrkMast onlyWrkNo = wrkMastMapper.selectByOnlyWrkNo(staProtocol.getWorkNo().intValue()); + if (!Cools.isEmpty(onlyWrkNo) && onlyWrkNo.getCrnNo()==2 && onlyWrkNo.getWrkSts()==2 && crnProtocol.getCrnNo()!=2 && (onlyWrkNo.getIoType()==1 || onlyWrkNo.getIoType()==10)){ + // News.error("{}绔欑偣鏌ヨ鏃犲緟鍏ュ簱鏁版嵁 宸ヤ綔鍙�={}", crnStn.getStaNo(), staProtocol.getWorkNo()); + // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� + if (wrkMastMapper.selectWorking(slave.getId()) != null) { + continue; + } + if (Cools.isEmpty(staProtocol.getWorkNo()) || !staProtocol.isLoading()){ + continue; + } + // 鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁� + if (crnProtocol.modeType == CrnModeType.AUTO + && crnProtocol.statusType == CrnStatusType.IDLE + && crnProtocol.forkPosType == CrnForkPosType.HOME && crnStn.getBay()!=(short)4) { + News.info("鍫嗗灈鏈烘帴椹充换鍔℃墽琛岋紝宸ヤ綔鍙凤細"+staProtocol.getWorkNo()+"锛涙墽琛屽爢鍨涙満鍙凤細"+slave.getId()+"锛涙帴椹冲彇璐т綅锛�"+crnStn.getStaNo()+"锛涙帴椹虫斁璐т綅锛�"+staProtocol.getSiteId()); + // 鍫嗗灈鏈烘帴椹充换鍔″懡浠や笅鍙戝尯 -------------------------------------------------------------------------- + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� + crnCommand.setTaskNo(onlyWrkNo.getWrkNo().shortValue()); // 宸ヤ綔鍙� + crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� + crnCommand.setCommand((short) 0); + crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 + crnCommand.setSourcePosX(crnStn.getRow().shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosY(crnStn.getBay().shortValue()); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZ(crnStn.getLev().shortValue()); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosX(Utils.getRow(staProtocol.getSiteId())); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY(Utils.getBay(staProtocol.getSiteId())); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ(Utils.getLev(staProtocol.getSiteId())); // 鐩爣搴撲綅灞� + if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) { + News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", slave.getId(), JSON.toJSONString(crnCommand)); + } + return true; + } + } else if (!Cools.isEmpty(onlyWrkNo) && onlyWrkNo.getCrnNo()==2 && onlyWrkNo.getWrkSts()>16 && crnProtocol.getCrnNo()!=2 && onlyWrkNo.getIoType()>100){ + // News.error("{}绔欑偣鏌ヨ鏃犲緟鍏ュ簱鏁版嵁 宸ヤ綔鍙�={}", crnStn.getStaNo(), staProtocol.getWorkNo()); + // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� + if (wrkMastMapper.selectWorking(slave.getId()) != null) { + continue; + } + if (Cools.isEmpty(staProtocol.getWorkNo()) || !staProtocol.isLoading()){ + continue; + } + // 鍒ゆ柇鍫嗗灈鏈虹姸鎬佺瓑寰呯‘璁� + if (crnProtocol.modeType == CrnModeType.AUTO + && crnProtocol.statusType == CrnStatusType.IDLE + && crnProtocol.forkPosType == CrnForkPosType.HOME && crnStn.getBay()==(short)4) { + News.info("鍫嗗灈鏈烘帴椹充换鍔℃墽琛岋紝宸ヤ綔鍙凤細"+staProtocol.getWorkNo()+"锛涙墽琛屽爢鍨涙満鍙凤細"+slave.getId()+"锛涙帴椹冲彇璐т綅锛�"+crnStn.getStaNo()+"锛涙帴椹虫斁璐т綅锛�"+staProtocol.getSiteId()); + // 鍫嗗灈鏈烘帴椹充换鍔″懡浠や笅鍙戝尯 -------------------------------------------------------------------------- + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� + crnCommand.setTaskNo(onlyWrkNo.getWrkNo().shortValue()); // 宸ヤ綔鍙� + crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� + crnCommand.setCommand((short) 0); + crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 + crnCommand.setSourcePosX(crnStn.getRow().shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosY(crnStn.getBay().shortValue()); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZ(crnStn.getLev().shortValue()); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosX(Utils.getRow(staProtocol.getSiteId())); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY(Utils.getBay(staProtocol.getSiteId())); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ(Utils.getLev(staProtocol.getSiteId())); // 鐩爣搴撲綅灞� + if (!MessageQueue.offer(SlaveType.Crn, slave.getId(), new Task(2, crnCommand))) { + News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", slave.getId(), JSON.toJSONString(crnCommand)); + } + return true; + } + } + continue; + } catch (Exception e){ + News.info("鍫嗗灈鏈烘帴椹充换鍔℃墽琛岋紝寮傚父锛�"+e.getMessage()); + } continue; } - // 鍏ュ簱娣卞簱浣嶆槸鍚︽湁闈濬銆丏搴撲綅杩涜鏍¢獙 + // 鍏ュ簱娣卞簱浣嶆槸鍚︽湁闈濬銆丏銆乆搴撲綅杩涜鏍¢獙 锛� Q銆丳銆丷銆丼锛� if (wrkMastMapper.selectShallowLoc(Integer.parseInt(wrkMast.getLocNo().substring(0, 2)),Integer.parseInt(wrkMast.getLocNo().substring(2, 5)),Integer.parseInt(wrkMast.getLocNo().substring(5, 7)))!=null){ - continue; + //妫�鏌ュ叆搴撳簱浣嶆槸鍚︽槸鍦ㄥ爢鍨涙満杈瑰簱浣� + ArrayList<Integer> outLoc = new ArrayList<>(); + outLoc.add(3);outLoc.add(4);outLoc.add(11);outLoc.add(12);outLoc.add(18);outLoc.add(19); + if (!outLoc.contains(Integer.parseInt(wrkMast.getLocNo().substring(0, 2)))) { + continue; + } } + //鍔犲己鍒ゆ柇锛屽彧瑕佸瓨鍦ㄧЩ搴撲换鍔★紝璇存槑鍑哄簱浠诲姟鏈畬鍏ㄧ粨鏉燂紝涓嶆墽琛屽叆搴撲换鍔� WrkMast one = wrkMastMapper.selectLocMoveData(slave.getId()); if(!Cools.isEmpty(one)){ News.error("鍏ュ簱 ===>> 瀛樺湪绉诲簱鏈畬鎴愪换鍔★紝涓嶈兘鍏ュ簱銆傜Щ搴撲换鍔″彿={},鍫嗗灈鏈哄彿={}", one.getWrkNo(), slave.getId()); // continue; + } + + //鍏ュ簱搴撲綅涓嶆槸鏈�澶栧眰搴撲綅锛屽垽鏂渶澶栧眰搴撲綅鏄惁涓虹┖搴撲綅锛屽涓嶆槸鍒欒繘琛岀Щ搴撲换鍔� + if(!locMastService.isOutMost(wrkMast.getLocNo())) { + WrkMast wrkMastMove = wrkMastMapper.selectLocMoveWorking(slave.getId()); + if (wrkMastMove != null && wrkMast.getWrkNo() == 111) { + continue; + } + + WrkMast two = wrkMastMapper.selectWorking1(slave.getId(), wrkMast.getWrkNo()); + if (two != null) {//2鍙锋満鏈夊湪鎵ц浠诲姟鏃讹紝绂佹鐢熸垚绉诲簱宸ヤ綔妗� + continue; + } else { + List<String> shallowLocs = Utils.getShallowLocs(wrkMast.getLocNo()); + if (!Cools.isEmpty(shallowLocs)) { + for (String shallowLocNo : shallowLocs) { + LocMast shallowLoc = locMastService.selectById(shallowLocNo); + WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo); + if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) { + if (null == waitWrkMast) { + // 鐢熸垚涓�绗旂Щ搴撲换鍔″伐浣滄。銆佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�� + // 娌℃湁浣滀笟涓殑鍏ュ簱浠诲姟鏃讹紝鎵嶈兘鐢熸垚绉诲簱浠诲姟 + WrkMast one2 = wrkMastService.selectOne(new EntityWrapper<WrkMast>() + .eq("crn_no", slave.getId()) + .last(" and wrk_sts in (3,4,5,6,7,8)")); + if (one2 == null) { + moveLocForDeepLoc(slave, shallowLoc); + // 缃《浠诲姟 + wrkMast.setIoPri((double) 9999); + wrkMastMapper.updateById(wrkMast); + } else { + News.error("娴呭簱浣嶉樆濉炴椂锛屼笖娴呭簱浣嶅瓨鍦ㄤ綔涓氫腑鍑哄簱浠诲姟锛佸伐浣滃彿={}", one2.getWrkNo()); + } + flag = true; + break; + } else { + if (waitWrkMast.getWrkSts() != 18) { + News.error("搴撲綅鍑哄簱鍒板爢鍨涙満绔� ===>> 搴撲綅鐘舵�佸湪搴擄紝浣嗘槸娴呭簱浣嶅凡瀛樺湪宸ヤ綔妗d换鍔★紒鍑哄簱搴撲綅={},娴呭簱浣嶅彿={}", shallowLoc.getLocNo()); + flag = true; + break; + } + + } +// } else if (shallowLoc.getLocSts().equals("Q") || shallowLoc.getLocSts().equals("S")) { +// News.error("搴撲綅鍑哄簱鍒板爢鍨涙満绔� ===>> 娴呭簱浣嶅簱浣嶇姸鎬佷负鍏ュ簱棰勭害锛佸嚭搴撳簱浣�={},娴呭簱浣嶅彿={}", shallowLoc.getLocNo()); +// flag = true; +// break; + } else if (shallowLoc.getLocSts().equals("R") || shallowLoc.getLocSts().equals("P")) { + News.error("搴撲綅鍑哄簱鍒板爢鍨涙満绔� ===>> 搴撲綅鐘舵�佸湪搴擄紝浣嗘槸娴呭簱浣嶅凡瀛樺湪宸ヤ綔妗d换鍔★紒鍑哄簱搴撲綅={},娴呭簱浣嶅彿={}", shallowLoc.getLocNo()); + flag = true; + break; + } + +// //20230307 ADD锛屽啀鍔犱竴娆″垽鏂紝褰撴祬搴撲綅鐘舵�佷笉涓篛鏃讹紝涓嶆墽琛屽綋鍓嶅嚭搴撲换鍔� +// if (shallowLoc != null && !shallowLoc.getLocSts().equals("O")) { +// News.error("鍋氫簡娴呭簱浣嶉樆濉炲鐞嗗悗鍙嶅鍒ゆ柇锛屾祬搴撲綅鐘舵�佷笉涓篛 ===>> 娴呭簱浣嶅簱浣嶇姸鎬佷负鍏ュ簱棰勭害锛佸嚭搴撳簱浣�={},娴呭簱浣嶅彿={}", wrkMast.getSourceLocNo(), shallowLoc.getLocNo()); +// flag = true; +// break; +// } + } + } + } + } + if(flag){ + return false; } // 鍒ゆ柇鏄惁宸插瓨鍦ㄥ皬杞︾粦瀹氫换鍔� @@ -1000,6 +1340,7 @@ SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); SteProtocol steProtocol = steThread.getSteProtocol(); if (steProtocol == null) { continue; } + if (steProtocol.loca==0) continue; if (steProtocol.isIdle()) { // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� @@ -1049,6 +1390,10 @@ } // 鍫嗗灈鏈烘惉杩愬皬杞� if (wrkMast.getWrkSts() == 3L) { + if (Cools.isEmpty(wrkMast.getSteNo()) || wrkMast.getSteNo()==0){ + News.error("宸ヤ綔鍙�={}鍗冲皢寮�濮嬫惉杩愬皬杞︿絾鏄伐浣滄。娌℃湁灏忚溅鍙�",wrkMast.getWrkNo()); + return false; + } this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol); } } @@ -1062,11 +1407,23 @@ * 鍑哄簱 ===>> 搴撲綅鍒板爢鍨涙満绔� */ public synchronized boolean locToCrnStn(CrnSlave slave, CrnProtocol crnProtocol){ + Collections.shuffle(slave.getCrnOutStn()); for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) { - // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗� + // 鑾峰彇宸ヤ綔鐘舵�佷负11,12,13,14,15, 16锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗� WrkMast wrkMast = wrkMastMapper.selectPakOutStep111215(slave.getId(), crnStn.getStaNo()); if (wrkMast == null) { continue; + } + + /* + * 100銆�200瀛樺湪杩涜涓殑鐩樼偣浠诲姟锛屽垯涓嶆墽琛岀洏鐐逛换鍔� + * */ + if (wrkMast.getIoType().equals(107)){ + Integer countPan = wrkMastMapper.selectWrkStsAndIoType107Count(wrkMast.getSourceStaNo(),wrkMast.getWrkNo()); + if (countPan > 0){ + News.error("MainServiceImpl locToCrnStn 1271琛�"+"鐩樼偣鍑哄簱璺宠繃锛屽瓨鍦ㄨ繘琛屼腑鍙兘鍫靛浠诲姟鏁皗}涓�",countPan); + continue; + } } // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 @@ -1087,12 +1444,20 @@ News.error("MainServiceImpl locToCrnStn"+"203闈炲嚭搴撴ā寮忥紝绂佹鍑哄簱銆備换鍔″彿:{}锛侊紒锛�",wrkMast.getWrkNo()); return false; } + if (wrkMast.getStaNo() == 113 && devpThread.ioModeOf3F != IoModeType.PAKOUT_MODE) { + News.error("MainServiceImpl locToCrnStn"+"113闈炲嚭搴撴ā寮忥紝绂佹鍑哄簱銆備换鍔″彿:{}锛侊紒锛�",wrkMast.getWrkNo()); + return false; + } + if (wrkMast.getStaNo() == 213 && devpThread.ioModeOf4F != IoModeType.PAKOUT_MODE) { + News.error("MainServiceImpl locToCrnStn"+"213闈炲嚭搴撴ā寮忥紝绂佹鍑哄簱銆備换鍔″彿:{}锛侊紒锛�",wrkMast.getWrkNo()); + return false; + } if (wrkMast.getWrkSts() == 11 && (wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107)){ Integer sour = wrkMast.getSourceStaNo(); List<WrkMast> wrkMasts = wrkMastMapper.selectWrkStsAndIoType0(sour); if (wrkMasts.size() > 0){ - News.error("MainServiceImpl 1028琛�"+"瀛樺湪鎹℃枡銆佺洏鐐规湭鍏ュ簱璐х墿锛�2鍙峰爢鍨涙満鏆傛椂绂佹鍑哄簱锛侊紒锛�"); + News.error("MainServiceImpl 1300琛�"+"瀛樺湪鎹℃枡銆佺洏鐐规湭鍏ュ簱璐х墿锛�2鍙峰爢鍨涙満鏆傛椂绂佹鍑哄簱锛侊紒锛�"); return false; } @@ -1101,7 +1466,7 @@ .eq("sta_no",300) .last(" and wrk_sts>11 and io_type in (103,107) ")); if(!Cools.isEmpty(one)){ - News.error("MainServiceImpl 1099琛�"+"瀛樺湪鎹℃枡銆佺洏鐐规湭鍏ュ簱璐х墿锛�2鍙峰爢鍨涙満鏆傛椂绂佹鍑哄簱锛侊紒锛�"); + News.error("MainServiceImpl 1309琛�"+"瀛樺湪鎹℃枡銆佺洏鐐规湭鍏ュ簱璐х墿锛�2鍙峰爢鍨涙満鏆傛椂绂佹鍑哄簱锛侊紒锛�"); continue; } } @@ -1148,11 +1513,11 @@ } } - //鍑哄簱搴撲綅涓嶆槸鏈�澶栧眰搴撲綅锛屽垽鏂祬搴撲綅缁勬槸鍚﹂兘涓虹┖锛屾垨瀛樺湪搴撲綅绉昏浆浠诲姟 + //鍑哄簱搴撲綅涓嶆槸鏈�澶栧眰搴撲綅锛屽垽鏂渶澶栧眰搴撲綅鏄惁涓虹┖搴撲綅锛屽涓嶆槸鍒欒繘琛岀Щ搴撲换鍔� boolean flag = false; if(!locMastService.isOutMost(wrkMast.getSourceLocNo())) { WrkMast wrkMastMove = wrkMastMapper.selectLocMoveWorking(slave.getId()); - if (wrkMastMove != null && wrkMast.getWrkNo() == 11) { + if (wrkMastMove != null && wrkMast.getWrkNo() == 111) { continue; } @@ -1160,29 +1525,39 @@ if (two != null) {//2鍙锋満鏈夊湪鎵ц浠诲姟鏃讹紝绂佹鐢熸垚绉诲簱宸ヤ綔妗� continue; } else { - String[] shallowlocs = Utils.getShallowLocs(wrkMast.getSourceLocNo()); - if (!Cools.isEmpty(shallowlocs)) { - for (String shallowLocNo : shallowlocs) { + List<String> shallowLocs = Utils.getShallowLocs(wrkMast.getSourceLocNo()); + if (!Cools.isEmpty(shallowLocs)) { + for (String shallowLocNo : shallowLocs) { LocMast shallowLoc = locMastService.selectById(shallowLocNo); WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo); if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) { - if (null == waitWrkMast) { - News.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo); - } else { - //iotype=11锛寃rksts=17锛岃鏄庤揣鐗╁凡缁忕Щ搴撳埌鏆傚瓨搴撲綅锛岀瓑寰呭洖鍘熷簱浣�,姝ゆ椂鍏佽缁х画鍑哄簱 - if (waitWrkMast.getIoType() != 11 || waitWrkMast.getWrkSts() != 17) { - waitWrkMast.setIoPri((double) 9999); - waitWrkMast.setModiTime(new Date()); - if (wrkMastMapper.updateById(waitWrkMast) == 0) { - News.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo()); + if (Cools.isEmpty(waitWrkMast)){ + News.error("搴撲綅寮傚父"); + }else { + if (waitWrkMast.getIoType() != 11 || waitWrkMast.getWrkSts() != 17){ + if(waitWrkMast.getIoPri()<=9980.0){ + waitWrkMast.setIoPri(waitWrkMast.getIoPri()+10.0); + }else { + waitWrkMast.setIoPri(9999d); } - if (waitWrkMast.getWrkSts() != 17) { +// if (wrkMast.getIoPri()>23.0){ +// wrkMast.setIoPri(wrkMast.getIoPri()-10.0); +// }else { + wrkMast.setIoPri(15.0d); +// } + if (wrkMastMapper.updateById(wrkMast)==0){ + News.error("璋冩暣浼樺厛绾уけ璐�"); + } + if (wrkMastMapper.updateById(waitWrkMast)==0){ + News.error("璋冩暣浼樺厛绾уけ璐�"); + }else if (waitWrkMast.getWrkSts() != 17){ flag = true; } + break; } } - } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) { + }else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) { if (null == waitWrkMast) { // 鐢熸垚涓�绗旂Щ搴撲换鍔″伐浣滄。銆佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�� // 娌℃湁浣滀笟涓殑鍑哄簱浠诲姟鏃讹紝鎵嶈兘鐢熸垚绉诲簱浠诲姟 @@ -1310,6 +1685,7 @@ SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); SteProtocol steProtocol = steThread.getSteProtocol(); if (steProtocol == null) { continue; } + if (steProtocol.loca==0) continue; if (steProtocol.isIdle()) { //灏忚溅鍙兘缁戝畾涓�绗斾綔涓氫腑浠诲姟 @@ -1410,6 +1786,10 @@ } // 鍫嗗灈鏈烘惉杩愬皬杞� if (wrkMast.getWrkSts() == 12L) { + if (Cools.isEmpty(wrkMast.getSteNo()) || wrkMast.getSteNo()==0) { + News.error("宸ヤ綔鍙�={}鍗冲皢寮�濮嬫惉杩愬皬杞︿絾鏄伐浣滄。娌℃湁灏忚溅鍙�",wrkMast.getWrkNo()); + return false; + } this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol); } } @@ -1612,6 +1992,102 @@ if (wrkMast.getWrkSts() == 12L) { this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol); } + } + } + } + + /** + * 搴撲綅绉昏浆(楂橀绉诲簱锛宨o_type=111) + */ + public synchronized void locToLoc111(CrnSlave slave, CrnProtocol crnProtocol){ + // 鑾峰彇宸ヤ綔妗d俊鎭� + WrkMast wrkMast = wrkMastMapper.selectLocMove111(slave.getId()); + if (null == wrkMast) { + return; + } + // 杩囨护 + if (null != wrkMastMapper.selectPakin(slave.getId(), null)) { + News.error("{}鍑哄簱浠诲姟鏃犳硶浣滀笟锛屽洜瀛樺湪鍏ュ簱涓换鍔�!", wrkMast.getWrkNo()); + return; + } + + // 鍒ゆ柇鏄惁宸插瓨鍦ㄥ皬杞︾粦瀹氫换鍔� + BasSte basSte = basSteService.findByCrnNo(wrkMast.getCrnNo()); + if(basSte == null) return; + WrkMast one = wrkMastService.selectOne(new EntityWrapper<WrkMast>() + .eq("ste_no",basSte.getSteNo()) + .last(" and io_type != 111 and wrk_sts < 10")); + if(one != null){ + News.error("{}绉诲簱浠诲姟鏃犳硶浣滀笟锛屽洜鍏ュ簱浠诲姟宸茬粦瀹氬皬杞�!", wrkMast.getWrkNo()); + return; + } + + // 鑾峰彇婧愬簱浣嶄俊鎭� + LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo()); + if (null == sourceLoc) { + News.error("宸ヤ綔妗e簱浣嶇Щ杞け璐ワ紝鍘熷洜锛氭绱㈡簮搴撲綅澶辫触锛佸伐浣滃彿={}锛屾簮搴撲綅={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); + return; + } + // 婧愬簱浣� 搴撲綅鐘舵�佸垽鏂� + if (!sourceLoc.getLocSts().equals("R")) { + return; + } + // 鑾峰彇鐩爣搴撲綅淇℃伅 + LocMast loc = locMastService.selectById(wrkMast.getLocNo()); + if (null == loc || !loc.getLocSts().equals("S")) { + News.error("宸ヤ綔妗e簱浣嶇Щ杞け璐ワ紝鍘熷洜锛氭绱㈢洰鏍囧簱浣嶅け璐ワ紒宸ヤ綔鍙�={}锛屾簮搴撲綅={}", wrkMast.getWrkNo(), wrkMast.getLocNo()); + return; + } + // 鑾峰彇鍫嗗灈鏈轰俊鎭� 骞� 鍒ゆ柇鏄惁鍙叆鍑� + BasCrnp basCrnp = basCrnpService.selectById(slave.getId()); + if (!basCrnp.getInEnable().equals("Y") && !basCrnp.getOutEnable().equals("Y")) { + return; + } + +// // 鍫嗗灈鏈烘帶鍒惰繃婊� +// if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { +// return; +// } + + // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� + if (wrkMastMapper.selectWorking(slave.getId()) != null) { + return; + } + + // 缃《浠诲姟 + wrkMast.setIoPri((double) 9999); + wrkMastMapper.updateById(wrkMast); + + // 婧愬簱浣� ===>> 鏈�澶栧眰搴撲綅 + if (locMastService.isOutMost(wrkMast.getSourceLocNo())) { + // 鐩爣搴撲綅 ===>> 鏈�澶栧眰搴撲綅 + if (locMastService.isOutMost(wrkMast.getLocNo())) { + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� + crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙� + crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� + crnCommand.setCommand((short) 0); + crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 + crnCommand.setSourcePosX(sourceLoc.getRow1().shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosY(sourceLoc.getBay1().shortValue()); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZ(sourceLoc.getLev1().shortValue()); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosX(loc.getRow1().shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY(loc.getBay1().shortValue()); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ(loc.getLev1().shortValue()); // 鐩爣搴撲綅灞� + if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { + News.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); + } else { + // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 7.鍚婅溅鍏ュ簱涓� + Date now = new Date(); + wrkMast.setWrkSts(7L); + wrkMast.setCrnStrTime(now); + wrkMast.setModiTime(now); + if (wrkMastMapper.updateById(wrkMast) == 0) { + News.error("銆愬簱浣嶇Щ杞�� 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 7.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } + } + } } } @@ -2212,6 +2688,10 @@ } // 鍫嗗灈鏈烘惉杩愬皬杞� if (wrkMast.getWrkSts() == 12L) { + if (Cools.isEmpty(wrkMast.getSteNo()) || wrkMast.getSteNo()==0) { + News.error("宸ヤ綔鍙�={}鍗冲皢寮�濮嬫惉杩愬皬杞︿絾鏄伐浣滄。娌℃湁灏忚溅鍙�",wrkMast.getWrkNo()); + return; + } this.carMoveIn(wrkMast, wrkMast.getSteNo(), crnProtocol); } } @@ -2227,6 +2707,7 @@ SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId()); SteProtocol steProtocol = steThread.getSteProtocol(); if (steProtocol == null) { continue; } + if (steProtocol.loca==0) 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(); } @@ -2243,6 +2724,7 @@ SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId()); SteProtocol steProtocol = steThread.getSteProtocol(); if (steProtocol == null) { continue; } + if (steProtocol.loca==0) continue; if (steProtocol.isIdle()) { if (Utils.getGroupRow(locNo).equals(Utils.getGroupRow(steProtocol.getRow().intValue())) && steProtocol.getBay() == Utils.getBay(locNo) && steProtocol.getLev() == Utils.getLev(locNo)) { return steProtocol.getSteNo().intValue(); @@ -2638,7 +3120,7 @@ } if (wrkMast == null) { continue; } - if (wrkMast.getIoType() != 11) { + if (wrkMast.getIoType() != 11 && wrkMast.getIoType() != 111) { // 鍏ュ簱 ==>> 璐х墿鎼叆搴� if (wrkMast.getWrkSts() == 7){ // 鍒ゆ柇鏄惁闇�瑕佸皬杞﹀叆搴� @@ -2661,6 +3143,7 @@ SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); SteProtocol steProtocol = steThread.getSteProtocol(); if (steProtocol == null) { continue; } +// if (steProtocol.loca==0) continue; if (steProtocol.isIdle()) { // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- SteCommand steCommand = new SteCommand(); @@ -2753,6 +3236,7 @@ SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); SteProtocol steProtocol = steThread.getSteProtocol(); if (steProtocol == null) { continue; } +// if (steProtocol.loca==0) continue; // 绌挎杞﹂噸鏂板畾浣嶆帓鍒楀眰 if (!steThread.confirmPos()) { News.error("{}鍙风┛姊溅閲嶆柊瀹氫綅澶辫触锛佷綔涓氬伐浣滄。浠诲姟鍙凤細{}", wrkMast.getSteNo(), wrkMast.getWrkNo()); @@ -2782,8 +3266,27 @@ } // 绉诲簱 ===>> 鍫嗗灈鏈烘惉鑷崇洰鏍囧簱浣嶇粍 瀹屾垚 } + // 搴撲綅绉昏浆(楂橀io_type111) + } else if(wrkMast.getIoType() == 111) { + Date now = new Date(); + // 鍏ュ簱 ==>> 璐х墿鎼叆搴� + if (wrkMast.getWrkSts() == 7){ + if (locMastService.isOutMost(wrkMast.getLocNo()) && locMastService.isOutMost(wrkMast.getSourceLocNo())) { + // ==> 9.鍏ュ簱瀹屾垚 + wrkMast.setWrkSts(9L); + wrkMast.setCrnEndTime(now); + wrkMast.setModiTime(now); + // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 + if (wrkMastMapper.updateById(wrkMast) > 0) { + // 鍫嗗灈鏈哄浣� + crnThread.setResetFlag(true); + } else { + News.error("淇敼宸ヤ綔妗g姸鎬� 7.鍚婅溅鍏ュ簱涓� => 9.鍏ュ簱瀹屾垚 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } + } + } // 搴撲綅绉昏浆 - } else { + }else { // 鍏ュ簱 ==>> 璐х墿鎼叆搴� if (wrkMast.getWrkSts() == 7){ // 鍒ゆ柇鏄惁闇�瑕佸皬杞﹀叆搴� @@ -2806,6 +3309,7 @@ SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); SteProtocol steProtocol = steThread.getSteProtocol(); if (steProtocol == null) { continue; } +// if (steProtocol.loca==0) continue; if (steProtocol.isIdle()) { // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- SteCommand steCommand = new SteCommand(); @@ -3002,6 +3506,7 @@ SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); SteProtocol steProtocol = steThread.getSteProtocol(); if (steProtocol == null) { continue; } + if (steProtocol.loca==0) continue; if (steProtocol.isIdle()) { // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- SteCommand steCommand = new SteCommand(); @@ -3031,6 +3536,7 @@ SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, steNo); SteProtocol steProtocol = steThread.getSteProtocol(); if (steProtocol == null) { continue; } + if (steProtocol.loca==0) continue; // 绌挎杞﹂噸鏂板畾浣嶆帓鍒楀眰 if (!steThread.confirmPos()) { News.error("{}鍙风┛姊溅閲嶆柊瀹氫綅澶辫触锛佷綔涓氬伐浣滄。浠诲姟鍙凤細{}", wrkMast.getSteNo(), wrkMast.getWrkNo()); @@ -3072,6 +3578,8 @@ SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId()); SteProtocol steProtocol = steThread.getSteProtocol(); if (steProtocol == null) { continue; } + if (Cools.isEmpty(steProtocol.loca)) continue; + if (steProtocol.loca==0) continue; if (steProtocol.getWaiting() && steProtocol.getTaskNo() == 0){ News.info("ste[id={}] 鏀跺埌绛夊緟WCS纭淇″彿锛屼絾鏄换鍔″彿(鍦板潃V824)涓�0", steProtocol.getSteNo()); } @@ -3137,6 +3645,10 @@ switch (wrkMast.getWrkSts().intValue()) { case 2: // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.灏忚溅寰呮惉 + if (Cools.isEmpty(wrkMast.getSteNo()) || wrkMast.getSteNo()==0){ + News.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.灏忚溅寰呮惉 澶辫触锛侊紒锛屽伐浣滃彿={} 鍘熷洜锛氬伐浣滃彿娌″皬杞�", wrkMast.getWrkNo()); + break; + } wrkMast.setWrkSts(3L); wrkMast.setModiTime(now); if (wrkMastMapper.updateById(wrkMast) == 0) { @@ -3484,6 +3996,24 @@ News.error("MainServiceImpl storeEmptyPlt"+"203涓哄嚭搴撴ā寮忥紝绂佹鍏ュ簱锛岄��鍥炲叆搴撳彛銆傦紒锛侊紒"); continue; } + if ( emptyInSta.getStaNo()==113 && devpThread.ioModeOf3F == IoModeType.PAKOUT_MODE) { + //鏈夊嚭搴撲换鍔★紝閫�搴撳埌鍏ュ簱鍙� + staProtocol.setWorkNo((short) 9999); + staProtocol.setStaNo((short)100); + devpThread.setPakMk(staProtocol.getSiteId(), false); + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + News.error("MainServiceImpl storeEmptyPlt"+"113涓哄嚭搴撴ā寮忥紝绂佹鍏ュ簱锛岄��鍥炲叆搴撳彛銆傦紒锛侊紒"); + continue; + } + if ( emptyInSta.getStaNo()==213 && devpThread.ioModeOf4F == IoModeType.PAKOUT_MODE) { + //鏈夊嚭搴撲换鍔★紝閫�搴撳埌鍏ュ簱鍙� + staProtocol.setWorkNo((short) 9999); + staProtocol.setStaNo((short)200); + devpThread.setPakMk(staProtocol.getSiteId(), false); + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + News.error("MainServiceImpl storeEmptyPlt"+"213涓哄嚭搴撴ā寮忥紝绂佹鍏ュ簱锛岄��鍥炲叆搴撳彛銆傦紒锛侊紒"); + continue; + } } // 绔欑偣鏉′欢鍒ゆ柇 @@ -3615,15 +4145,24 @@ ledCommand.setBarcode(wrkMast.getBarcode()); if (wrkMast.getIoType() != 110) { List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo()); + wrkDetls.forEach(wrkDetl -> { + Double total = 0.0; + EntityWrapper<LocDetl> wrapper = new EntityWrapper<>(); + LocDetl locDetl = locDetlService.selectOne(wrapper.eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr())); + if (Cools.isEmpty(locDetl)) { + total = wrkDetl.getAnfme(); + } else { + total = locDetl.getAnfme(); + } if (wrkMast.getIoType() == 101) { - ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getAnfme())); + ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total)); } if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) { - ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getAnfme())); + ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total)); } if (wrkMast.getIoType() == 107) { - ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getAnfme())); + ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total)); } }); } @@ -4055,8 +4594,78 @@ break; } LocMast loc = null; + + if(shallowLoc.getLocType2() == 3){ //浣庨娣风洿鎺ュ嚭搴� + // 鑾峰彇宸ヤ綔鍙� + int workNo = commonService.getWorkNo(0); + Date now = new Date(); + // 淇濆瓨宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(now); + wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID + wrkMast.setIoType(101); // 鍏ュ嚭搴撶姸鎬侊細 101.鍏ㄦ澘鍑哄簱 + wrkMast.setIoPri((double) 9999); + wrkMast.setCrnNo(crn.getId()); + wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣� + if (shallowLoc.getCrnNo()==1){ + wrkMast.setStaNo(100); + wrkMast.setSourceStaNo(108); + }else if (shallowLoc.getCrnNo()==2){ + wrkMast.setStaNo(100); + wrkMast.setSourceStaNo(104); + }else { + wrkMast.setStaNo(200); + wrkMast.setSourceStaNo(208); + } + + +// wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅 + wrkMast.setFullPlt("Y"); // 婊℃澘 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘 + wrkMast.setBarcode(shallowLoc.getBarcode()); // 鎵樼洏鐮� + wrkMast.setLinkMis("N"); + wrkMast.setAppeTime(now); + wrkMast.setModiTime(now); + int res = wrkMastMapper.insert(wrkMast); + if (res == 0) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + // 宸ヤ綔妗f槑缁嗕繚瀛� + if (shallowLoc.getLocSts().equals("F")) { + List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", shallowLoc.getLocNo())); + 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 (shallowLoc.getLocSts().equals("D") || shallowLoc.getLocSts().equals("F")) { + shallowLoc.setLocSts("R"); // R.鍑哄簱棰勭害 + shallowLoc.setModiTime(now); + if (!locMastService.updateById(shallowLoc)) { + throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�"); + } + } else { + throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�"); + } + + return; + } + List<LocMast> locs = locMastService.selectList(new EntityWrapper<LocMast>().eq("crn_no",crn.getId()) .eq("loc_type1",shallowLoc.getLocType1()) + .eq("loc_type2",shallowLoc.getLocType2()) .eq("loc_sts","O") .last(" and row1 in (" + rows + ") order by bay1,lev1")); for (LocMast one : locs){ @@ -4064,36 +4673,33 @@ || Utils.getBay(one.getLocNo()) != Utils.getBay(shallowLoc.getLocNo()) || Utils.getLev(one.getLocNo()) != Utils.getLev(shallowLoc.getLocNo())){ - boolean success = true; - List<String> insideLoc = Utils.getGroupInsideLoc(one.getLocNo()); - for (String inside : insideLoc) { - LocMast locMast = locMastService.selectById(inside); - if(Cools.isEmpty(locMast)){ - continue; - } - if (locMast.getLocSts().equals("P") - || locMastService.selectById(inside).getLocSts().equals("R") - || locMastService.selectById(inside).getLocSts().equals("S") - || locMastService.selectById(inside).getLocSts().equals("Q")) { - success = false; break; - } - } - Integer steNo = this.hasCar(one.getLocNo()); if (steNo != null) { + //鏈夊皬杞� continue; } - if (success) { - loc = one; - break; +// //妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆 +// if (Utils.checkInsideLocIsDFX(one.getLocNo())) { +// //鍐呬晶鍏朵粬搴撲綅涓嶆槸D銆丗銆乆銆備笉鑳介�夊彇璇ュ簱浣� +// continue; +// } + + //妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆銆丱 + if (Utils.checkInsideLocIsDFXO(one.getLocNo())) { + //鍐呬晶鍏朵粬搴撲綅涓嶆槸D銆丗銆乆銆丱銆備笉鑳介�夊彇璇ュ簱浣� + continue; } + + loc = one; + break; } } if (null == loc) { News.error("娣卞簱浣嶅嚭搴� --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo()); - throw new CoolException("娣卞簱浣嶅嚭搴� --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo()); + return; +// throw new CoolException("娣卞簱浣嶅嚭搴� --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo()); } // 鑾峰彇宸ヤ綔鍙� @@ -4104,7 +4710,7 @@ wrkMast.setWrkNo(workNo); wrkMast.setIoTime(now); wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID - wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇 + wrkMast.setIoType(111); // 鍏ュ嚭搴撶姸鎬侊細 111.搴撴牸绉昏浇(楂橀) wrkMast.setIoPri((double) 9999); wrkMast.setCrnNo(crn.getId()); wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣� @@ -4174,10 +4780,10 @@ SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); for (DevpSlave.Sta inSta : devp.getInSta()) { - Integer sourceStaNo = inSta.getStaNo()==103 ? 104 : 204; + Integer sourceStaNo = inSta.getStaNo()==103 ? 104 : inSta.getStaNo()==113 ? 104 : 204; WrkMast pakout = wrkMastMapper.selectWorkingPakout(sourceStaNo); switch (inSta.getStaNo()) { - case 103://1F + case 103://1F1 if (pakout != null) { if (devpThread.ioModeOf1F != IoModeType.PAKOUT_MODE) { // 鍑哄簱鍒囨崲涓� @@ -4195,7 +4801,7 @@ devpThread.ioModeOf1F = IoModeType.PAKIN_MODE; } break; - case 203://2F + case 203://1F2 if (pakout != null) { if (devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) { // 鍑哄簱鍒囨崲涓� @@ -4213,6 +4819,42 @@ devpThread.ioModeOf2F = IoModeType.PAKIN_MODE; } break; +// case 113://2F1 +// if (pakout != null) { +// if (devpThread.ioModeOf3F != IoModeType.PAKOUT_MODE) { +// // 鍑哄簱鍒囨崲涓� +//// devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING; +//// WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo()); +//// if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading() +//// && !devpThread.getStation().get(inSta.getStaNo()-1).isLoading() +//// && devpThread.getStation().get(inSta.getStaNo()-1).getWorkNo()==0) { +//// // 鍑哄簱妯″紡 +// devpThread.ioModeOf3F = IoModeType.PAKOUT_MODE; +//// } +// } +// } else { +// // 鍏ュ簱妯″紡 +// devpThread.ioModeOf3F = IoModeType.PAKIN_MODE; +// } +// break; +// case 213://2F2 +// if (pakout != null) { +// if (devpThread.ioModeOf4F != IoModeType.PAKOUT_MODE) { +// // 鍑哄簱鍒囨崲涓� +//// devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING; +//// WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo()); +//// if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading() +//// && !devpThread.getStation().get(inSta.getStaNo()-1).isLoading() +//// && devpThread.getStation().get(inSta.getStaNo()-1).getWorkNo()==0) { +//// // 鍑哄簱妯″紡 +// devpThread.ioModeOf4F = IoModeType.PAKOUT_MODE; +//// } +// } +// } else { +// // 鍏ュ簱妯″紡 +// devpThread.ioModeOf4F = IoModeType.PAKIN_MODE; +// } +// break; } } @@ -4222,5 +4864,135 @@ e.printStackTrace(); } } + public synchronized void ioConvert2F() { + try { + // 鏍规嵁杈撻�佺嚎plc閬嶅巻 + for (DevpSlave devp : slaveProperties.getDevp()) { + if (devp.getId() == 1){ + continue; + } + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + + for (DevpSlave.Sta inSta : devp.getInSta()) { + Integer staNoEnd = inSta.getStaNo()==113 ? 114 : 214; + WrkMast pakout = wrkMastMapper.selectWorkingPakoutTwoF(staNoEnd); + boolean sign = true; + int[] staNos = new int[3]; + + switch (inSta.getStaNo()) { + case 113://2F1 + staNos = new int[]{112,113,114}; + for (int staNo : staNos){ + StaProtocol staProtocol = devpThread.getStation().get(staNo); + if (Cools.isEmpty(staProtocol)) continue; + if (!staProtocol.isAutoing() || staProtocol.isLoading() || staProtocol.getWorkNo()>0){ + sign = false; + } + } + if (sign){ + if (pakout != null) { + if (devpThread.ioModeOf3F != IoModeType.PAKOUT_MODE) { + + // 鍑哄簱鍒囨崲涓� +// devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING; +// WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo()); +// if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading() +// && !devpThread.getStation().get(inSta.getStaNo()-1).isLoading() +// && devpThread.getStation().get(inSta.getStaNo()-1).getWorkNo()==0) { +// // 鍑哄簱妯″紡 + devpThread.ioModeOf3F = IoModeType.PAKOUT_MODE; +// } + } + } else { + // 鍏ュ簱妯″紡 + devpThread.ioModeOf3F = IoModeType.PAKIN_MODE; + + } + } + break; + case 213://2F2 + staNos = new int[]{212,213,214}; + for (int staNo : staNos){ + StaProtocol staProtocol = devpThread.getStation().get(staNo); + if (Cools.isEmpty(staProtocol)) continue; + if (!staProtocol.isAutoing() || staProtocol.isLoading()){ + sign = false; + } + } + if (sign){ + if (pakout != null) { + if (devpThread.ioModeOf4F != IoModeType.PAKOUT_MODE) { + // 鍑哄簱鍒囨崲涓� +// devpThread.ioModeOf2F = IoModeType.PAKOUT_BOOTING; +// WrkMast pakin = wrkMastMapper.selectWorkingPakin(inSta.getStaNo()); +// if (pakin == null && !devpThread.getStation().get(inSta.getStaNo()).isLoading() +// && !devpThread.getStation().get(inSta.getStaNo()-1).isLoading() +// && devpThread.getStation().get(inSta.getStaNo()-1).getWorkNo()==0) { +// // 鍑哄簱妯″紡 + devpThread.ioModeOf4F = IoModeType.PAKOUT_MODE; +// } + } + } else { + // 鍏ュ簱妯″紡 + devpThread.ioModeOf4F = IoModeType.PAKIN_MODE; + } + } + break; + } + } + + } + + } catch (Exception e) { + e.printStackTrace(); + } + } + + public synchronized void automaticallyTurnOffCharging() { + // 鑾峰彇褰撳墠鏃堕棿鎴� + long timestamp = System.currentTimeMillis(); + Date date = new Date(timestamp); + TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai"); + java.util.Calendar calendar = java.util.Calendar.getInstance(timeZone); + calendar.setTime(date); + int hour = calendar.get(java.util.Calendar.HOUR_OF_DAY); + if (hour>8 && hour<18){ + for (SteSlave ste : slaveProperties.getSte()) { + SteThread steThread = (SteThread) SlaveConnection.get(SlaveType.Ste, ste.getId()); + SteProtocol steProtocol = steThread.getSteProtocol(); + BasSte basSte = basSteService.selectById(ste.getId()); + if (Cools.isEmpty(steProtocol, basSte)) { continue; } + try{ + // 鍦ㄧ嚎 绌洪棽 鏃犱綔涓氭爣璁� 涓嶅湪鍏呯數 + if (steProtocol.getMode() == 0 + || !steProtocol.statusType.equals(SteStatusType.IDLE) + || basSte.getPakMk().equals("Y") + || steProtocol.getChargeStatus() == 0 + ) { + continue; + } + if (!steProtocol.isEnable()) { + continue; + } + if (steProtocol.getCharge() > Float.parseFloat(basSte.getChargeLine())) { + WrkCharge wrkCharge = wrkChargeService.selectWorking(steProtocol.getSteNo().intValue()); + if (wrkCharge == null) { + if (steProtocol.getChargeStatus() == 1){ + SteCommand steCommand = new SteCommand(); + steCommand.setSteNo(ste.getId()); // 绌挎杞︾紪鍙� + steCommand.setTaskNo(9999); // 宸ヤ綔鍙� + steCommand.setTaskMode(SteTaskModeType.CLOSE_CHARGE); + if (!MessageQueue.offer(SlaveType.Ste, ste.getId(), new Task(2, steCommand))) { + News.error("绌挎杞﹀懡浠や笅鍙戝け璐ワ紝绌挎杞﹀彿={}锛屼换鍔℃暟鎹�={}", ste.getId(), JSON.toJSON(steCommand)); + } + } + } + } + }catch (Exception e){ + News.error("鑷姩鍏抽棴鍏呯數鍑洪敊锛岃仈绯荤鐞嗗憳锛�"+hour+"鐐�;"+ste.getId()+"鍙峰皬杞�;"); + } + } + } + } } -- Gitblit v1.9.1