From 6ceeb65fe79ce6c5eb648bca52308bc4a5c77dad Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期三, 26 三月 2025 13:44:03 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 1371 ++++++++++++++--------------------------------------------- 1 files changed, 322 insertions(+), 1,049 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 8e03dbb..ee75672 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -7,12 +7,14 @@ import com.core.common.Cools; import com.core.common.DateUtils; import com.core.exception.CoolException; +import com.zy.asrs.domain.param.ForwardAGVTaskParam; import com.zy.asrs.entity.*; import com.zy.asrs.mapper.*; import com.zy.asrs.service.*; import com.zy.asrs.utils.RouteUtils; import com.zy.asrs.utils.Utils; import com.zy.asrs.utils.VersionUtils; +import com.zy.common.constant.AgvSiteConstant; import com.zy.common.model.LocTypeDto; import com.zy.common.model.MatDto; import com.zy.common.model.SearchLocParam; @@ -30,17 +32,16 @@ import com.zy.core.enums.DevpType.DevpStateType; import com.zy.core.enums.DevpType.DevpTrayType; import com.zy.core.enums.DevpType.DevpWorkType; -import com.zy.core.model.*; +import com.zy.core.model.CrnSlave; +import com.zy.core.model.DevpSlave; +import com.zy.core.model.LedSlave; +import com.zy.core.model.Task; import com.zy.core.model.command.CrnCommand; import com.zy.core.model.command.LedCommand; -import com.zy.core.model.command.RgvCommand; import com.zy.core.model.protocol.CrnProtocol; -import com.zy.core.model.protocol.RgvProtocol; import com.zy.core.model.protocol.StaProtocol; import com.zy.core.properties.SlaveProperties; -import com.zy.core.thread.BarcodeThread; import com.zy.core.thread.LedThread; -import com.zy.core.thread.RgvThread; import com.zy.core.thread.SiemensDevpThread; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -49,8 +50,10 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; +import javax.annotation.Resource; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; import java.util.*; -import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -89,15 +92,14 @@ @Autowired private BasCrnErrorMapper basCrnErrorMapper; @Autowired - private WrkMastStaMapper wrkMastStaMapper; - @Autowired - private BasRgvService basRgvService; - @Autowired - private BasRgvMapMapper basRgvMapMapper; - @Autowired private WrkMastService wrkMastService; @Autowired - private BasRgvMapService basRgvMapService; + private OrderService orderService; + @Autowired + private OrderDetlService orderDetlService; + + @Resource + private ApiLogService apiLogService; @Value("${wms.url}") private String wmsUrl; @@ -114,9 +116,7 @@ for (DevpSlave devp : slaveProperties.getDevp()) { // 閬嶅巻鍏ュ簱鍙� for (DevpSlave.Sta inSta : devp.getInSta()) { - // 鑾峰彇鏉$爜鎵弿浠俊鎭� - BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode()); - BarcodeThread barcodeThreadMat = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcodeMat()); + LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); @@ -125,15 +125,6 @@ } else { staProtocol = staProtocol.clone(); } - - if (barcodeThread == null) { - continue; - } - - if (barcodeThreadMat == null) { - continue; - } - // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 if (staProtocol.stateType == DevpStateType.AUTO //鑷姩 && staProtocol.workType == DevpWorkType.BUSY //蹇欑 @@ -155,9 +146,8 @@ } continue; } - barcodeThread.setBarcode(""); staProtocol.setWorkNo(wrkMast.getWrkNo()); - staProtocol.setStaNo(RouteUtils.SouStaEnd(null,wrkMast.getSourceStaNo())); + staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); devpThread.setPakMk(staProtocol.getSiteId(), false); boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); log.info("杈撻�佺嚎涓嬪彂(瀛樺湪璁惧涓婅蛋鐨勫伐浣滄。锛岀洿鎺ヤ笅鍙戯紒))锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo()); @@ -196,9 +186,8 @@ JSONObject jsonObject = JSON.parseObject(response); if (jsonObject.getInteger("code").equals(200)) { StartupDto dto = jsonObject.getObject("data", StartupDto.class); - barcodeThread.setBarcode(""); staProtocol.setWorkNo(dto.getWorkNo()); - staProtocol.setStaNo(RouteUtils.SouStaEnd(dto.getStaNo(),dto.getSourceStaNo())); + staProtocol.setStaNo(dto.getStaNo().shortValue()); devpThread.setPakMk(staProtocol.getSiteId(), false); boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); log.error("杈撻�佺嚎涓嬪彂2锛�"+dto.getWorkNo()+","+dto.getStaNo()); @@ -212,12 +201,6 @@ throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); } }else { - staProtocol.setWorkNo(wrkNo); - wrkNo++; - staProtocol.setStaNo(inSta.getBackSta().shortValue()); - devpThread.setPakMk(staProtocol.getSiteId(), false); - MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); -// // if (ledThread != null) { String errorMsg = jsonObject.getString("msg"); if (!Cools.isEmpty(errorMsg)) { @@ -319,19 +302,10 @@ // 閬嶅巻鎷f枡鍏ュ簱鍙� for (DevpSlave.Sta pickSta : devp.getPickSta()) { // 鑾峰彇鏉$爜鎵弿浠俊鎭� - BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode()); - if (barcodeThread == null) { - continue; - } - String barcode = barcodeThread.getBarcode(); - if(!Cools.isEmpty(barcode)) { -// News.info(""+mark+" - 1"+" - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode); - if("NG".endsWith(barcode) || "NoRead".equals(barcode)) { - continue; - } - } else { - continue; - } + + + + // 鑾峰彇鎷f枡鍏ュ簱绔欎俊鎭� SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); @@ -341,9 +315,17 @@ } else { staProtocol = staProtocol.clone(); } + String barcode = staProtocol.getBarcode(); + if(!Cools.isEmpty(barcode)) { +// News.info(""+mark+" - 1"+" - {}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode); + if("NG".endsWith(barcode) || "NoRead".equals(barcode)) { + continue; + } + } else { + continue; + } -// // 鍏ュ嚭搴撴ā寮忓垽鏂� -// if (devpThread.ioMode != IoModeType.PAKIN_MODE) { continue; } + if (staProtocol.stateType == DevpStateType.AUTO && staProtocol.workType == DevpWorkType.BUSY @@ -384,10 +366,10 @@ } try { - // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。 - if (wrkMastMapper.saveWrkDetlLog(wrkMast.getWrkNo()) == 0) { - throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触"); - } + // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。 //鍥犱负鍏煎u8宸ヤ綔妯″紡 涓嶈兘鐢熸垚鍘嗗彶宸ヤ綔鏄庣粏 +// if (wrkMastMapper.saveWrkDetlLog(wrkMast.getWrkNo()) == 0) { +// throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触"); +// } // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� if (wrkMastMapper.saveWrkMastLog(wrkMast.getWrkNo()) == 0) { throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); @@ -425,7 +407,7 @@ // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 staProtocol.setWorkNo(wrkMast.getWrkNo()); - staProtocol.setStaNo((short) 161); + staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); devpThread.setPakMk(staProtocol.getSiteId(), false); boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); log.error("杈撻�佺嚎涓嬪彂5锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo()); @@ -465,20 +447,13 @@ // && staProtocol.getWorkNo() > 0 && staProtocol.isPakMk()){ - // 鑾峰彇鏉$爜鎵弿浠俊鎭� - BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, pickSta.getBarcode()); - if (barcodeThread == null) { - continue; - } - String barcode = barcodeThread.getBarcode(); + String barcode = staProtocol.getBarcode(); + + + if(!Cools.isEmpty(barcode)) { // log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", pickSta.getBarcode(), barcode); if("00000000".equals(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "empty".equals(barcode)) { - staProtocol.setWorkNo(wrkNo++); - staProtocol.setStaNo(pickSta.getBackSta().shortValue()); - devpThread.setPakMk(staProtocol.getSiteId(), false); - MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); - // led 寮傚父鏄剧ず LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); if (ledThread != null) { @@ -487,35 +462,12 @@ } continue; } - } else { - staProtocol.setWorkNo(wrkNo++); - staProtocol.setStaNo(pickSta.getBackSta().shortValue()); - devpThread.setPakMk(staProtocol.getSiteId(), false); - MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); - - // led 寮傚父鏄剧ず - LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, pickSta.getLed()); - if (ledThread != null) { - String errorMsg = "鎵爜澶辫触锛岃閲嶈瘯"; - MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); - } - continue; } - WrkMast wrkMast = wrkMastMapper.selectPickStep2(barcode); if (wrkMast == null) { // 鏃犵洏鐐规暟鎹� continue; } - - // 鍑哄簱纭淇″彿浣� -// if ((Cools.isEmpty(wrkMast.getInvWh()) || wrkMast.getInvWh().equals("N")) && wrkMast.getIoType() != 107) { -// continue; -// } -// if ( wrkMast.getIoType() != 107 || Cools.isEmpty(wrkMast.getStaNo()) -// || Cools.isEmpty(wrkMast.getSourceStaNo())) { -// continue; -// } // 鑾峰彇搴撲綅鍙� try { @@ -582,18 +534,6 @@ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } } - } else { - staProtocol.setWorkNo(wrkNo++); - staProtocol.setStaNo(pickSta.getBackSta().shortValue()); - devpThread.setPakMk(staProtocol.getSiteId(), false); - MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); - if (ledThread != null) { - String errorMsg = jsonObject.getString("msg"); - if (!Cools.isEmpty(errorMsg)) { - MessageQueue.offer(SlaveType.Led, pickSta.getLed(), new Task(3, errorMsg)); - } - } - log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin2/loc/v1", JSON.toJSONString(param), response); } } catch (Exception e) { log.error("stnToCrnStnPick2===>>fail", e); @@ -660,7 +600,10 @@ } // 鏇存柊宸ヤ綔妗g姸鎬佷负14澶辫触 - wrkMast.setWrkSts(14L); + wrkMast.setWrkSts(13L); + if (wrkMast.getStaNo() == 1024 || wrkMast.getStaNo() == 1028) { + wrkMast.setWrkSts(14L); + } wrkMast.setCrnEndTime(new Date()); if (wrkMastMapper.updateById(wrkMast) != 0) { // 澶嶄綅鍫嗗灈鏈� @@ -885,13 +828,13 @@ News.warnNoLog(""+mark+" - 1"+" - 12"+" - // F銆丏 搴撲綅鐘舵��={}",shallowLoc.getLocSts()); // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔� if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk())) { - wrkMast.setUpdMk("Y"); - wrkMast.setIoPri(14D); - wrkMastMapper.updateById(wrkMast); - // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑 - moveLocForDeepLoc(slave, shallowLoc,mark); - // 鐢熸垚宸ヤ綔妗c�佹敼鍙樻祬搴撲綅鐨勬簮搴�/鐩爣搴� 搴撲綅鐘舵�併�佷笅鍙戝爢鍨涙満鍛戒护锛堢珛椹墽琛�) -// moveLocForDeepLocPakin(slave, shallowLoc, wrkMast); + + if (moveLocForDeepLoc(slave, shallowLoc,mark)){ + wrkMast.setUpdMk("Y"); + wrkMast.setIoPri(14D); + wrkMastMapper.updateById(wrkMast); + } + } continue; } else if (shallowLoc.getLocSts().equals("Q")) { @@ -1042,10 +985,10 @@ // if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk()) // || Cools.isEmpty(waitWrkMast)) { if (Cools.isEmpty(waitWrkMast)) { - wrkMast.setUpdMk("Y"); - wrkMastMapper.updateById(wrkMast); - // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑 - moveLocForDeepLoc(slave, shallowLoc,mark); + if (moveLocForDeepLoc(slave, shallowLoc,mark)){ + wrkMast.setUpdMk("Y"); + wrkMastMapper.updateById(wrkMast); + } } News.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛佹祬搴撲綅鍙�:{}", wrkMast.getWrkNo(), shallowLocNo); continue; @@ -1509,7 +1452,7 @@ SearchLocParam param = new SearchLocParam(); param.setIoType(10); param.setSourceStaNo(emptyInSta.getStaNo()); - param.setLocType1(locTypeDto.getLocType1()); + param.setLocType1((short) 0); String response = new HttpHandler.Builder() .setUri(wmsUrl) .setPath("/rpc/pakin/loc/v1") @@ -1637,7 +1580,7 @@ ledCommand.setStaNo(wrkMast.getStaNo()); ledCommand.setBarcode(wrkMast.getBarcode()); if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) { - List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo()); + List<WrkDetl> wrkDetls =wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); wrkDetls.forEach(wrkDetl -> { Double total = 0.0; @@ -1648,15 +1591,31 @@ } else { total = locDetl.getAnfme(); } - if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) { - ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total)); + if (!Cools.isEmpty(wrkDetl.getOrderNo())){ + OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", wrkDetl.getOrderNo()) + .eq("matnr", wrkDetl.getMatnr()).eq("batch", wrkDetl.getBatch())); + if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) { + ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total,orderDetl.getTemp1(),orderDetl.getTemp2())); + } + if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) { + ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total,orderDetl.getTemp1(),orderDetl.getTemp2())); + } + if (wrkMast.getIoType() == 107 || wrkMast.getIoType() == 104) { + ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total,orderDetl.getTemp1(),orderDetl.getTemp2())); + } + }else { + if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) { + 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.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total)); + } + if (wrkMast.getIoType() == 107 || wrkMast.getIoType() == 104) { + 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.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total)); - } - if (wrkMast.getIoType() == 107) { - ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total)); - } + + }); } commands.add(ledCommand); @@ -1809,7 +1768,7 @@ * 鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増) * tip锛氬悓姝� */ - private synchronized void moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc,Integer mark) { + private synchronized boolean moveLocForDeepLoc(CrnSlave crn, LocMast shallowLoc,Integer mark) { try { News.warnNoLog(""+mark+"moveLocForDeepLoc"+" - 0"+" - 寮�濮嬫墽琛�:鍥犲弻娣卞簱浣嶉樆濉烇紝瀵规祬搴撲綅杩涜绉昏浆锛堢珛鍗虫墽琛岀増)"); @@ -1855,80 +1814,83 @@ if (null == loc) { News.error(""+mark+"moveLocForDeepLoc"+" - 1"+" - 鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo()); - throw new CoolException("鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo()); - } - - // 鑾峰彇宸ヤ綔鍙� - int workNo = commonService.getWorkNo(0); - // 淇濆瓨宸ヤ綔妗� - WrkMast wrkMast = new WrkMast(); - wrkMast.setWrkNo(workNo); - wrkMast.setIoTime(new Date()); - wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID - wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇 - wrkMast.setIoPri(13D); - wrkMast.setCrnNo(crn.getId()); - wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣� - wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅 - wrkMast.setFullPlt(shallowLoc.getFullPlt()); // 婊℃澘 - wrkMast.setPicking("N"); // 鎷f枡 - wrkMast.setExitMk("N"); // 閫�鍑� - wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘 - wrkMast.setBarcode(shallowLoc.getBarcode()); // 鎵樼洏鐮� - wrkMast.setLinkMis("N"); - wrkMast.setAppeTime(new Date()); - wrkMast.setModiTime(new Date()); - int res = wrkMastMapper.insert(wrkMast); - if (res == 0) { - News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 2"+" - 淇濆瓨宸ヤ綔妗eけ璐�"); - 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.setWrkNo(workNo); - wrkDetl.setIoTime(new Date()); - wrkDetl.setAnfme(locDetl.getAnfme()); - VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗 - wrkDetl.setAppeTime(new Date()); - wrkDetl.setModiTime(new Date()); - if (!wrkDetlService.insert(wrkDetl)) { - News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 3"+" - 淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); - throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); +// throw new CoolException("鍙屾繁搴撲綅 --- 娴呭簱浣嶉樆濉炲紓甯革紒 寰呯Щ杞祬搴撲綅锛�" + shallowLoc.getLocNo()); + return false; + }else { + // 鑾峰彇宸ヤ綔鍙� + int workNo = commonService.getWorkNo(0); + // 淇濆瓨宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(new Date()); + wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID + wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇 + wrkMast.setIoPri(13D); + wrkMast.setCrnNo(crn.getId()); + wrkMast.setSourceLocNo(shallowLoc.getLocNo()); // 婧愬簱浣� + wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅 + wrkMast.setFullPlt(shallowLoc.getLocSts().equals("F") ? "Y" : "N"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk(shallowLoc.getLocSts().equals("D") ? "Y" : "N"); // 绌烘澘 + wrkMast.setBarcode(shallowLoc.getBarcode()); // 鎵樼洏鐮� + wrkMast.setLinkMis("N"); + wrkMast.setAppeTime(new Date()); + wrkMast.setModiTime(new Date()); + int res = wrkMastMapper.insert(wrkMast); + if (res == 0) { + News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 2"+" - 淇濆瓨宸ヤ綔妗eけ璐�"); + 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.setWrkNo(workNo); + wrkDetl.setIoTime(new Date()); + wrkDetl.setAnfme(locDetl.getAnfme()); + VersionUtils.setWrkDetl(wrkDetl, locDetl); // 鐗堟湰鎺у埗 + wrkDetl.setAppeTime(new Date()); + wrkDetl.setModiTime(new Date()); + if (!wrkDetlService.insert(wrkDetl)) { + News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 3"+" - 淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); + throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); + } } } - } - // 淇敼婧愬簱浣嶇姸鎬� - if (shallowLoc.getLocSts().equals("D") || shallowLoc.getLocSts().equals("F")) { - shallowLoc.setLocSts("R"); // R.鍑哄簱棰勭害 - shallowLoc.setModiTime(new Date()); - if (!locMastService.updateById(shallowLoc)) { - News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 4"+" - 鏇存柊婧愬簱浣嶇姸鎬佸け璐�"); - throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�"); + // 淇敼婧愬簱浣嶇姸鎬� + if (shallowLoc.getLocSts().equals("D") || shallowLoc.getLocSts().equals("F")) { + shallowLoc.setLocSts("R"); // R.鍑哄簱棰勭害 + shallowLoc.setModiTime(new Date()); + if (!locMastService.updateById(shallowLoc)) { + News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 4"+" - 鏇存柊婧愬簱浣嶇姸鎬佸け璐�"); + throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�"); + } + } else { + News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 5"+" - 婧愬簱浣嶅嚭搴撳け璐�"); + throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�"); } - } else { - News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 5"+" - 婧愬簱浣嶅嚭搴撳け璐�"); - throw new CoolException("婧愬簱浣嶅嚭搴撳け璐�"); - } - // 淇敼鐩爣搴撲綅鐘舵�� - if (loc.getLocSts().equals("O")) { - loc.setLocSts("S"); // S.鍏ュ簱棰勭害 - loc.setModiTime(new Date()); - if (!locMastService.updateById(loc)) { - News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 6"+" - 鏇存柊鐩爣搴撲綅鐘舵�佸け璐�"); - throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�"); + // 淇敼鐩爣搴撲綅鐘舵�� + if (loc.getLocSts().equals("O")) { + loc.setLocSts("S"); // S.鍏ュ簱棰勭害 + loc.setModiTime(new Date()); + if (!locMastService.updateById(loc)) { + News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 6"+" - 鏇存柊鐩爣搴撲綅鐘舵�佸け璐�"); + throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�"); + } + } else { + News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 7"+" - 绉昏浆澶辫触"); + throw new CoolException("绉昏浆澶辫触"); } - } else { - News.errorNoLog(""+mark+"moveLocForDeepLoc"+" - 7"+" - 绉昏浆澶辫触"); - throw new CoolException("绉昏浆澶辫触"); } + } catch (Exception e) { News.error(""+mark+"moveLocForDeepLoc"+" - 8"+" - 鍙屾繁搴撲綅闃诲锛屽娴呭簱浣嶈繘琛岀Щ杞け璐�", e); e.printStackTrace(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } + return true; } /** @@ -2082,68 +2044,7 @@ } } - /** - * 鍏ュ嚭搴撴ā寮忓垏鎹㈠嚱鏁� - */ -// public synchronized void ioConvert() { -// try { -// // 鏍规嵁杈撻�佺嚎plc閬嶅巻 -// for (DevpSlave devp : slaveProperties.getDevp()) { -// SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); -// -// for (DevpSlave.Sta inSta : devp.getInSta()) { -// if (inSta.getStaNo() == 2) { -// continue; -// } -// WrkMast pakout = wrkMastMapper.selectWorkingPakout(inSta.getStaNo()); -// switch (inSta.getStaNo()) { -// case 203://1F -// if (pakout != null) { -// if (devpThread.ioModeOf2F != 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.ioModeOf2F = IoModeType.PAKOUT_MODE; -// } -// } -// } else { -// // 鍏ュ簱妯″紡 -// devpThread.ioModeOf2F = IoModeType.PAKIN_MODE; -// } -// break; -// case 401://1F -// if (pakout != null) { -// if (devpThread.ioModeOf4F != IoModeType.PAKOUT_MODE) { -// // 鍑哄簱鍒囨崲涓� -// devpThread.ioModeOf4F = 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 outOfDevp(Integer mark) { @@ -2162,814 +2063,186 @@ // News.infoNoLog(""+mark+" - 0"+" - outOfDevp鎵ц瀹屾垚"); } - -// public synchronized void autoEmptyOut() { -// SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); -// List<Integer> list = new ArrayList<>(); -// list.add(101);list.add(112); -// Map<Integer,Integer> map = new HashMap<>(); -// map.put(101,102);map.put(112,111); -// for (Integer site:list){ -// WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("sta_no", map.get(site))); -// if (!Cools.isEmpty(wrkMast)){ -// continue; -// } -// //濡傛灉绔欑偣鍙嚭绂佺敤锛屽垯涓嶇敓鎴愮┖鐩樺嚭搴撲换鍔� -// StaProtocol staProtocol = devpThread.getStation().get(site); -// if (staProtocol == null) { -// return; -// } else { -// staProtocol = staProtocol.clone(); -// } -// if (staProtocol.isAutoing() //鑷姩 -// && !staProtocol.isLoading() //鏃犵墿 -// && staProtocol.isOutEnable() //鍙嚭淇″彿 -// && staProtocol.getWorkNo() == 0 -// ) { -// WrkMast pakoutEmpty = wrkMastMapper.selectPakoutEmpty(site); -// if (null != pakoutEmpty) { -// return; -// } -// Short loctype1 = 1; -// if (site == 101){ -// loctype1 = 2; -// } -// LocTypeDto locTypeDto = new LocTypeDto(loctype1, (short) 1, (short) 1); -// locTypeDto.setSiteId(site); -// try { -// String response = new HttpHandler.Builder() -// .setUri(wmsUrl) -// .setPath("/rpc/auto/emptyOut/v1") -// .setJson(JSON.toJSONString(locTypeDto)) -// .build() -// .doPost(); -// JSONObject jsonObject = JSON.parseObject(response); -// if (jsonObject.getInteger("code").equals(200)) { -// String data = jsonObject.get("data").toString(); -// News.info((String) jsonObject.get("msg")+","+data); -// } else { -// News.warnNoLog("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyOut/v1","", response); -// } -// } catch (Exception e) { -// e.printStackTrace(); -// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); -// } -// } -// } -// -// } - -// public synchronized void autoEmptyIn() { -// SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); -// List<Integer> list = new ArrayList<>(); -// list.add(153);list.add(157); -// for (Integer site:list){ -// StaProtocol staProtocol = devpThread.getStation().get(site); -// if (staProtocol == null) { -// return; -// } else { -// staProtocol = staProtocol.clone(); -// } -// if (staProtocol.isAutoing() //鑷姩 -// && staProtocol.isLoading() //鏈夌墿 -// && staProtocol.isInEnable() //鍙叆淇″彿 -// && staProtocol.isPakMk() -// && (staProtocol.getWorkNo() == 0 || staProtocol.getWorkNo() > 9990) //宸ヤ綔鍙蜂负0鎴栬�呭伐浣滃彿鏄�9991~9999锛堣緭閫佹満鐣欑敤锛� -// ) { -// -// try { -// Short loctype1 = 1; -// if (site == 153){ -// loctype1 = 2; -// } -// LocTypeDto locTypeDto = new LocTypeDto(loctype1, (short) 1, (short) 1); -// locTypeDto.setSiteId(site); -// -// String response = new HttpHandler.Builder() -// .setUri(wmsUrl) -// .setPath("/rpc/auto/emptyIn/v1") -// .setJson(JSON.toJSONString(locTypeDto)) -// .build() -// .doPost(); -// JSONObject jsonObject = JSON.parseObject(response); -// if (jsonObject.getInteger("code").equals(200)) { -// News.info((String) jsonObject.get("msg")); -// staProtocol.setWorkNo(jsonObject.get("data").hashCode()); -// staProtocol.setStaNo(site.shortValue()); -// devpThread.setPakMk(site,false); -// MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol)); -// } else { -// News.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyIn/v1", JSON.toJSONString(locTypeDto), response); -// } -// } catch (Exception e) { -// e.printStackTrace(); -// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); -// } -// } -// -// } -// -// } - - /* - * 灏忚溅鍦板浘鏇存柊 鏇存柊閿� - * */ -// public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd,String sign){ -// log.info("灏忚溅鍦板浘鏇存柊锛乕鏍囪锛歿}];[BasRgvMap锛歿}];[staStart锛歿}];[staEnd锛歿}];",sign,JSON.toJSONString(basRgvMapCurrent),staStart,staEnd); -// -//// List<Integer> integers = RouteUtils.RouteMapCurrentFar(basRgvMapCurrent.getNowRoute(),staStart,staEnd, basRgvMapCurrent.getLockStartRoute()); -// //鏇存柊褰撳墠灏忚溅閿� -// try{ -// Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getNowRoute(), staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//鑾峰彇鏈�杩滅珯鐐� -// log.info("灏忚溅鍦板浘鏇存柊锛佽幏鍙栨渶杩滅珯鐐�;[farCurrentStaNo锛歿}]",farCurrentStaNo); -// Integer fallMerge = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getRgvNo(), farCurrentStaNo); //鑾峰彇鍚堝苟骞叉秹椤� -// log.info("灏忚溅鍦板浘鏇存柊锛佽幏鍙栧悎骞跺共娑夐」;[fallMerge锛歿}]",fallMerge); -// basRgvMapCurrent.setLockEndRoute(fallMerge); -// Integer i = basRgvMapMapper.updateById(basRgvMapCurrent); -//// if (i>0){ -//// log.error("{}:==>{}:{}鍙疯溅鏇存柊缁撴潫閿�,{}",sign,new Date(),basRgvMapCurrent.getRgvNo(),JSON.toJSONString(basRgvMapCurrent)); -//// } -// -// //鏇存柊鍙︿竴鍙板皬杞﹀湴鍥� -// Integer rgvNoOther = basRgvMapCurrent.getRgvNoOther(basRgvMapCurrent.getRgvNo()); -// log.info("灏忚溅鍦板浘鏇存柊锛佸彟涓�鍙板皬杞﹀彿;[rgvNoOther锛歿}]",rgvNoOther); -// -// BasRgvMap basRgvMapOther = basRgvMapMapper.selectById(rgvNoOther); -// log.info("灏忚溅鍦板浘鏇存柊锛佸彟涓�鍙板皬杞�;[basRgvMapOther锛歿}]",JSON.toJSONString(basRgvMapOther)); -// -// List<Integer> integers = RouteUtils.RouteMapCurrentFar(fallMerge, basRgvMapCurrent.getLockStartRoute()); -// Integer lockEndRoute = RouteUtils.RouteMapOtherFarStnNo(integers, basRgvMapCurrent.getLockStartRoute());//鍙︿竴鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃� -// log.info("灏忚溅鍦板浘鏇存柊锛佸彟涓�鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃�;[lockEndRoute锛歿}]",lockEndRoute); -// basRgvMapOther.setEndRoute(lockEndRoute); -// Integer i1 = basRgvMapMapper.updateById(basRgvMapOther); -//// if (i1>0){ -//// log.error("{}:==>{}:{}鍙疯溅鏇存柊缁撴潫浣嶇疆,{}",sign,new Date(),basRgvMapOther.getRgvNo(),JSON.toJSONString(basRgvMapOther)); -//// } -// return true; -// }catch (Exception e){ -// log.error("灏忚溅鍦板浘鏇存柊鍑洪敊锛佸紓甯稿師鍥狅細"+e); -// return false; -// } -// } - - /* - * 鍒锋柊鍦板浘鏁版嵁 - * */ -// public synchronized void refreshRgvMap() { -// try{ -// List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>()); -// for (BasRgvMap rgvSlave:basRgvMaps) { -// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo()); -// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); -// if (rgvProtocol == null) { -// continue; -// }else { -// rgvProtocol = rgvProtocol.clone(); -// } -// BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo()); -// if (basRgv == null) { -// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�2", rgvSlave.getRgvNo()); + public synchronized void forwardAGVInTasks() { + for (DevpSlave devp : slaveProperties.getDevp()) { + // 閬嶅巻鍏ュ簱鍙� + for (DevpSlave.Sta agvSta : devp.getAgvOutSta()) { + // 鑾峰彇鍏ュ簱绔欎俊鎭� + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + StaProtocol staProtocol = devpThread.getStation().get(agvSta.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + if (!(staProtocol.stateType == DevpStateType.AUTO)){ + continue; + } + if (staProtocol.getWorkNo() == 0){ + continue; + } +// WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", staProtocol.getWorkNo()).eq("wrk_sts", 13)); +// if(!Cools.isEmpty(wrkMast1)){ // continue; // } -// -// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 -// if (rgvProtocol.getStatusType() == RgvStatusType.IDLE && -// rgvProtocol.getModeType() == RgvModeType.AUTO -// && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 -// && (rgvProtocol.getTaskNo1()==0) -// &&rgvThread.isPakMk() -// ) { -// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); -// -// Integer rgvNoOther = basRgvMap.getRgvNoOther(rgvProtocol.getRgvNo()); -// RgvThread rgvThreadOther = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvNoOther); -// RgvProtocol rgvProtocolOther = rgvThreadOther.getRgvProtocol(); -// if (rgvProtocolOther == null) { -// continue; -// }else { -// rgvProtocolOther = rgvProtocolOther.clone(); -// } -// if (rgvProtocolOther.getStatusType() == RgvStatusType.IDLE -// && rgvProtocolOther.getModeType() == RgvModeType.AUTO -// && rgvProtocolOther.getLoaded1()==0 -// && (rgvProtocolOther.getTaskNo1()==0) -// &&rgvThreadOther.isPakMk() -// ){ -// //瀵瑰伐浣滄。杩涜鍒ゆ柇 -// basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); -// if (rgvProtocol.getTaskNo1() >0 && rgvProtocol.getTaskNo1()<=9000){ -// WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue()); -// rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2366"); -// }else if (rgvProtocol.getTaskNo1() == 0){ -// rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2366"); -// } -// -// } -// -// -// -// } -// } -// }catch (Exception e){ -// log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触"); -// log.error("4109琛�"+e); -// } -// } + //鏌ヨ鐘舵�佷负2鐨勪换鍔� + //鏌ヨ鐘舵�佷负2鐨勪换鍔� + WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>() + .eq("wrk_no", staProtocol.getWorkNo()) + .in("io_type",101,110,103,104,107) + .eq("wrk_sts", 13)); + if (Cools.isEmpty(wrkMast)) { +// log.error(agvSta.getStaNo()+"绔�,杞彂agv浠诲姟鏈壘鍒板搴斾换鍔�,浠诲姟鍙凤細"+staProtocol.getWorkNo()); + continue; + } + ForwardAGVTaskParam forwardAGVTaskParam = new ForwardAGVTaskParam(); + getAgvTaskParam(forwardAGVTaskParam,wrkMast,staProtocol.getSiteId()); + String request = forwardAGVHttpRequest(wrkMast.getStaNo(),forwardAGVTaskParam, "10.0.100.110:8182", "/rcms/services/rest/hikRpcService/genAgvSchedulingTask"); + if ("SUCCESS".equals(request)) { + wrkMast.setWrkSts(14L); + boolean update = wrkMastService.updateById(wrkMast); + if (update){ + log.info("鍏ュ簱杞彂AGV浠诲姟瀹屾垚,浠诲姟鍙�:"+wrkMast.getWrkNo()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + } + } - /** - * 瀹屾垚灏忚溅浠诲姟 - */ -// public synchronized void rgvCompleteWrkMastSta() { -// try{ -// for (DevpSlave devp : slaveProperties.getDevp()) { -// List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>()); -// for (BasRgvMap rgvSlave:basRgvMaps) { -// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo()); -// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); -// if (rgvProtocol == null) { -// continue; -// }else { -// rgvProtocol = rgvProtocol.clone(); -// } -// BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo()); -// if (basRgv == null) { -// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�3", rgvSlave.getRgvNo()); -// continue; -// } -// -// // 鍙湁褰揜GV绛夊緟WCS纭銆佽嚜鍔� -// if ((rgvProtocol.getStatusType1() == RgvStatusType.WAITING || rgvProtocol.getStatusType1()==RgvStatusType.FETCHWAITING) -// && rgvProtocol.getModeType() == RgvModeType.AUTO -// && (rgvProtocol.getStatusType() == RgvStatusType.WORKING1) -// ){ -// log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol); -// if (rgvProtocol.getTaskNo1()!=0){ -// if (rgvProtocol.getTaskNo1()==32222){ -// boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo()); -// if (!rgvComplete){ -// log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); -// } -// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); -// basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); -// rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2415"); -// rgvThread.setPakMk(true); -// break; -// } -// WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().intValue()); -// if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getWrkSts()!=1){ -// log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta); -// continue; -// } -// -// SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); -// StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd()); -// if (staProtocol == null) { -// continue; -// } else { -// staProtocol = staProtocol.clone(); -// } -// if (!staProtocol.isAutoing() || !staProtocol.isLoading()){ -// continue; -// } -// WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue()); -// if (!Cools.isEmpty(wrkMast)){ -// if (!staProtocol.isPakMk()){ -// continue; -// } -// // 涓嬪彂绔欑偣淇℃伅 -// staProtocol.setWorkNo(wrkMast.getWrkNo()); -// staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); -// devpThread.setPakMk(staProtocol.getSiteId(), false); -// log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo()); -// if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) { -// continue; -// } -// }else { -// log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护,浣嗘湭鏌ヨ鍒板伐浣滄。"); -// // 涓嬪彂绔欑偣淇℃伅 -// Map<Integer,Integer> map = new HashMap<>(); -// map.put(101,102);map.put(112,111); -// map.put(100,100); -// staProtocol.setWorkNo(rgvProtocol.getTaskNo1().intValue()); -// staProtocol.setStaNo(map.get(rgvProtocol.getRgvPosI()).shortValue()); -// devpThread.setPakMk(staProtocol.getSiteId(), false); -//// log.error("rgv浠诲姟瀹屾垚缁欒緭閫佺嚎涓嬪彂鍛戒护锛�"+wrkMast.getWrkNo()+","+wrkMast.getStaNo()); -// if (!MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol))) { -// continue; -// } -// } -// boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo()); -//// boolean rgvComplete = true; -// if (!rgvComplete){ -// log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); -// break; -// } -// WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1().intValue()); -// wrkMast1.setPdcType("Y"); -// -// wrkMastService.updateById(wrkMast1); -// -// wrkMastSta.setWrkSts(3); -// wrkMastStaMapper.updateById(wrkMastSta); -// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); -// basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); -// rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2471"); -// rgvThread.setPakMk(true); -// } -// -// else { -// log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭浣嗘槸娌℃湁宸ヤ綔鍙凤紒",rgvProtocol.getRgvNo()); -// } -// } -// } -// } -// }catch (Exception e){ -// log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e); -// } -// } -// /** -// * 鎵ц灏忚溅鎼繍浠诲姟 -// */ -// public synchronized boolean rgvRunWrkMastFullSta() { -// boolean wrkEnable = false; -// try{ -// List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>()); -// for (BasRgvMap rgvSlave:basRgvMaps) { -// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo()); -// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); -// if (rgvProtocol == null) { -// continue; -// }else { -// rgvProtocol = rgvProtocol.clone(); -// } -// BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo()); -// if (basRgv == null) { -// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�4", rgvSlave.getRgvNo()); -// continue; -// } -// -// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 -// if (rgvProtocol.getStatusType() == RgvStatusType.IDLE -// && rgvProtocol.getModeType() == RgvModeType.AUTO -// && rgvProtocol.getLoaded1()==0 -// && rgvProtocol.getTaskNo1() == 0 -// && rgvThread.isPakMk() -// ) { -// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); -// if (basRgvMap == null) { -// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo()); -// continue; -// } -// List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); -// basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� -// List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route); -// for (WrkMastSta wrkMastSta : wrkMastStaList){ -// if (wrkMastSta.getType()!=0 || wrkMastSta.getWrkType()!=3 || wrkMastSta.getWrkSts()!=0){//1:婊$増 3锛氬彇鏀� -// continue; -// } -// //鍒ゆ柇宸ヤ綔缁撴潫浣嶇疆鐘舵�� -// boolean signDev = false; -// BasDevp devNo = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", wrkMastSta.getStaEnd())); -// if (devNo.getDevNo()==113){ -// BasDevp devNo114 = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", 114)); -// if (!Cools.isEmpty(devNo114)){ -// if (devNo114.getOutEnable().equals("Y")){ -// signDev = true; -// } -// } -// } -// if (!Cools.isEmpty(devNo)){ -// if (devNo.getAutoing().equals("Y") && !devNo.getWrkNo().equals(0) && !devNo.getLoading().equals("N")){ -// continue; -// } -// if (!signDev && devNo.getDevNo()==113){ -// if (!devNo.getAutoing().equals("Y") || !devNo.getWrkNo().equals(0) || !devNo.getLoading().equals("N")){ -// wrkEnable = true; -// continue; -// } -// if (!devNo.getOutEnable().equals("Y")){ -// wrkEnable = true; -// continue; -// } -// } -// } -// boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //鍛戒护涓嬪彂 -// wrkEnable = true; -// if (sign){ -// wrkMastSta.setWrkSts(1); -// try{ -// wrkMastStaMapper.updateById(wrkMastSta); -// log.error("鏇存柊灏忚溅浠诲姟鎴愬姛"); -// }catch (Exception e){ -// log.error("鏇存柊灏忚溅浠诲姟澶辫触"); -// } -// rgvThread.setPakMk(false); -// boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526"); -// if (signMap){ -// return wrkEnable; -//// break; -// }else { -// log.error("3864琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); -// Thread.sleep(500); -// } -// } else { -// log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); -// Thread.sleep(500); -// } -// break; -// } -// } -// -// } -//// if (!wrkEnable){ -//// rgvRunWrkMastEmptyStaAvoidance(); -//// } -// }catch (Exception e){ -// log.error("3875琛屾墽琛屽皬杞︽惉杩愪换鍔′笅鍙戝け璐�"); -// log.error("3875琛�"+e); -// } -// return wrkEnable; -// } - /** - * 鎵ц灏忚溅鎼繍浠诲姟 - */ -// public synchronized void rgvRunWrkMastEmptyStaPut() {//鏀� -// try{ -// for (RgvSlave rgvSlave:slaveProperties.getRgv()) { -// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); -// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); -// if (rgvProtocol == null) { -// continue; -// } -// BasRgv basRgv = basRgvService.selectById(rgvSlave.getId()); -// if (basRgv == null) { -// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�5", rgvSlave.getId()); -// continue; -// } -// -// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾湁鐗�//rgv鍙敤 -// if (rgvProtocol.getStatusType() == RgvStatusType.IDLE -// && rgvProtocol.getModeType() == RgvModeType.AUTO -// && rgvProtocol.getLoaded1()==1 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 -// ) { -// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); -// if (basRgvMap == null) { -// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo()); -// continue; -// } -// basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� -// List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());//鑾峰彇娲诲姩鑼冨洿 -// List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);//鏌ヨ鍙墽琛屼换鍔� -// for (WrkMastSta wrkMastSta : wrkMastStaList){ -// if (wrkMastSta.getType()!=2 || (wrkMastSta.getWrkType()!=2 && wrkMastSta.getWrkType()!=4)){// 2:绌烘澘 2:鏀� 4锛氭媶鐩� -// continue; -// } -// boolean sign = false; -// if (wrkMastSta.getStaStart()==0 && wrkMastSta.getStaEnd()!=0){//鏀� -// sign = rgvPutEmpty(rgvProtocol.getRgvNo(),wrkMastSta); -// }else { -// continue; -// } -// if (sign){ -// boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd()); -// if (signMap){ -// wrkMastSta.setWrkSts(2); -// try{ -// wrkMastStaMapper.updateById(wrkMastSta); -// }catch (Exception e){ -// log.error("鏇存柊灏忚溅浠诲姟澶辫触"); -// } -// return; -// }else { -// log.error("3857琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); -// } -// }else { -// log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); -// } -// break; -// } -// } -// } -// }catch (Exception e){ -// log.error("3933琛屾墽琛屽皬杞︽斁绌烘澘浠诲姟涓嬪彂澶辫触"); -// log.error("3933琛�"+e); -// } -// } -// public synchronized void rgvRunWrkMastEmptyStaTake() {//鍙� -// try{ -// for (RgvSlave rgvSlave:slaveProperties.getRgv()) { -// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); -// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); -// if (rgvProtocol == null) { -// continue; -// } -// BasRgv basRgv = basRgvService.selectById(rgvSlave.getId()); -// if (basRgv == null) { -// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�6", rgvSlave.getId()); -// continue; -// } -// -// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾棤鐗�//rgv鍙敤 -// if (rgvProtocol.getStatusType() == RgvStatusType.IDLE -// && rgvProtocol.getModeType() == RgvModeType.AUTO -// && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 -// ) { -// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); -// if (basRgvMap == null) { -// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo()); -// continue; -// } -// List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); -// basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙� -// List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route); -// for (WrkMastSta wrkMastSta : wrkMastStaList){ -// if (wrkMastSta.getType()!=2 || wrkMastSta.getWrkType()!=1){// 2:绌烘澘 1:鍙� -// continue; -// } -// boolean sign = false; -// if (wrkMastSta.getStaEnd()==0 && wrkMastSta.getStaStart()!=0){//鍙� -// sign = rgvTakeEmpty(rgvProtocol.getRgvNo(),wrkMastSta); -// } else { -// continue; -// } -// if (sign){ -// boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), basRgvMap.getStartRoute()); -// if (signMap){ -// wrkMastSta.setWrkSts(1); -// try{ -// wrkMastStaMapper.updateById(wrkMastSta); -// }catch (Exception e){ -// log.error("鏇存柊灏忚溅浠诲姟澶辫触"); -// } -// return; -// }else { -// log.error("3879琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); -// } -// }else { -// log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); -// } -// break; -// } -// } -// } -// }catch (Exception e){ -// log.error("3989琛屾墽琛屽皬杞﹀彇绌烘澘浠诲姟涓嬪彂澶辫触"); -// log.error("3989琛�"+e); -// } -// } - - /* - * 鏈変换鍔′絾鏈墽琛� 姝ゆ椂闇�瑕佽皟鏁村皬杞︿綅缃� - * */ -// public synchronized void rgvRunWrkMastEmptyStaAvoidance() { -// try{ -// Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//鏌ヨ鐘舵�佷负0鐨勪换鍔� -// if (integer==0){ -// return; -// } -// List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>()); -// for (BasRgvMap rgvSlave:basRgvMaps) { -// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getRgvNo()); -// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); -// if (rgvProtocol == null) { -// continue; -// }else { -// rgvProtocol = rgvProtocol.clone(); -// } -// BasRgv basRgv = basRgvService.selectById(rgvSlave.getRgvNo()); -// if (basRgv == null) { -// log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�1", rgvSlave.getRgvNo()); -// continue; -// } -// -// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 -// if (rgvProtocol.getStatusType() == RgvStatusType.IDLE -// && rgvProtocol.getModeType() == RgvModeType.AUTO -// && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 -// && rgvProtocol.getTaskNo1()==0 -// && rgvProtocol.getStatusType1() == RgvStatusType.IDLE -// && rgvThread.isPakMk() -//// && rgvProtocol.getTaskNo2()==0 -// ){ -// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); -// if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){ -// continue; -// } -//// if (rgvProtocol.getRgvNo()==1 && rgvProtocol.getRgvPosI().equals(100)){ -//// continue; -//// } else if (rgvProtocol.getRgvNo()==2 && rgvProtocol.getRgvPosI().equals(157) ){ -//// continue; -//// } -// rgvAvoidanceXY(rgvProtocol.getRgvNo()); -// rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute(),"2727"); -// } -// } -// }catch (Exception e){ -// log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触"); -// log.error("4109琛�"+e); -// } -// } -// -// /* -// * 灏忚溅XY绉诲姩 閬胯 -// * */ -// public synchronized boolean rgvAvoidanceXY(Integer rgvId){ -// BasRgvMap basRgvMap = basRgvMapService.selectByRgvNo(rgvId); -// if (basRgvMap.getStartRoute() == 100 || basRgvMap.getStartRoute() == 101){ -// try{ -// -// // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- -// RgvCommand rgvCommand = new RgvCommand(); -// rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 -// rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� -// rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙� -// rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍥炲師鐐� -// //basRgvMap.getLockStartRoute().shortValue() -// rgvCommand.setSourceStaNo1(basRgvMap.getStartRoute().shortValue()); -// rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭 -// if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) { -// //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� step=9锛屽洖鍘熺偣 9999浠诲姟鍙� -// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); -// return false; -// } else { -// return true; -// } -// }catch (Exception e){ -// return false; -// -// } -// }else { -// try{ -// // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- -// RgvCommand rgvCommand = new RgvCommand(); -// rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 -// rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� -// rgvCommand.setTaskNo1((short)32222); // 宸ヤ綅1宸ヤ綔鍙� -// rgvCommand.setTaskMode1(RgvTaskModeType.X_MOVE); // 宸ヤ綅1浠诲姟妯″紡: 鍥炲師鐐� -// //basRgvMap.getLockStartRoute().shortValue() -// rgvCommand.setSourceStaNo1(basRgvMap.getStartRoute().shortValue()); -// rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭 -// if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) { -// //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� step=9锛屽洖鍘熺偣 9999浠诲姟鍙� -// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); -// return false; -// } else { -// return true; -// } -// }catch (Exception e){ -// return false; -// -// } -// } -// } -// -// -// /* -// * 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔� -// * */ -// public synchronized boolean rgvTakeFullAll(Integer rgvId,WrkMastSta wrkMastSta){ -// try{ -// // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- -// RgvCommand rgvCommand = new RgvCommand(); -// rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 -// rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� -// rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙� -// rgvCommand.setTaskMode1(RgvTaskModeType.FETCH_PUT); // 宸ヤ綅1浠诲姟妯″紡: 鍙栨斁璐� -// rgvCommand.setSourceStaNo1(wrkMastSta.getStaStart().shortValue()); //宸ヤ綅1璧风偣 -// rgvCommand.setDestinationStaNo1(wrkMastSta.getStaEnd().shortValue()); //宸ヤ綅1鐩爣绔欑偣 -// rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭 -// if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) { -// //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� -// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); -// return false; -// } else { -// return true; -// } -// }catch (Exception e){ -// return false; -// } -// } - - /* - * 灏忚溅鍙栬揣鑷冲伐浣嶄换鍔� - * */ -// public synchronized boolean rgvTakeFull(Integer rgvId,WrkMastSta wrkMastSta){ -// try{ -// // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- -// RgvCommand rgvCommand = new RgvCommand(); -// rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 -// rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� -// rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙� -// rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栬揣 -// rgvCommand.setSourceStaNo1(wrkMastSta.getStaStart().shortValue()); //宸ヤ綅1璧风偣 -// rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭 -// if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) { -// //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� -// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); -// return false; -// } else { -// return true; -// } -// }catch (Exception e){ -// return false; -// } -// } - - /* - * 灏忚溅鏀捐揣鑷宠緭閫佺嚎浠诲姟 - * */ -// public synchronized boolean rgvPutFull(Integer rgvId,WrkMastSta wrkMastSta){ -// try{ -// // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- -// RgvCommand rgvCommand = new RgvCommand(); -// rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 -// rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� -// rgvCommand.setTaskNo1(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙� -// rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣 -// rgvCommand.setDestinationStaNo1(wrkMastSta.getStaEnd().shortValue()); //宸ヤ綅1鐩爣绔欑偣 -// rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭 -// if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(4, rgvCommand))) { -// //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� -// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); -// return false; -// } else { -// return true; -// } -// }catch (Exception e){ -// return false; -// } -// } - - /* - * 灏忚溅鍙栫┖鏉胯嚦宸ヤ綅浠诲姟 - * */ -// public synchronized boolean rgvTakeEmpty(Integer rgvId,WrkMastSta wrkMastSta){ -// try{ -// // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- -// RgvCommand rgvCommand = new RgvCommand(); -// rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 -// rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� -// rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙� -// rgvCommand.setTaskMode2(RgvTaskModeType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栬揣 -// rgvCommand.setSourceStaNo2(wrkMastSta.getStaStart().shortValue()); //宸ヤ綅2璧风偣 -// rgvCommand.setCommand((short) 2); //宸ヤ綅2浠诲姟纭 -// if (!MessageQueue.offer(SlaveType.Crn, rgvId, new Task(5, rgvCommand))) { -// //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� -// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); -// return false; -// } else { -// return true; -// } -// }catch (Exception e){ -// return false; -// } -// } - - /* - * 灏忚溅鏀剧┖鏉胯嚦杈撻�佺嚎浠诲姟 - * */ -// public synchronized boolean rgvPutEmpty(Integer rgvId,WrkMastSta wrkMastSta){ -// try{ -// // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- -// RgvCommand rgvCommand = new RgvCommand(); -// rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 -// rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� -// rgvCommand.setTaskNo2(wrkMastSta.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙� -// rgvCommand.setTaskMode2(RgvTaskModeType.PUT); // 宸ヤ綅2浠诲姟妯″紡: 鏀捐揣 -// rgvCommand.setDestinationStaNo2(wrkMastSta.getStaEnd().shortValue()); //宸ヤ綅2鐩爣绔欑偣 -// rgvCommand.setCommand((short) 2); //宸ヤ綅2浠诲姟纭 -// if (!MessageQueue.offer(SlaveType.Crn, rgvId, new Task(5, rgvCommand))) { -// //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� -// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgvId, JSON.toJSON(rgvCommand)); -// return false; -// } else { -// return true; -// } -// }catch (Exception e){ -// return false; -// } -// } - - /* - * 灏忚溅澶嶄綅 - * */ - public synchronized boolean rgvComplete(Integer rgvId){ - try{ - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(3, new RgvCommand()))) { - //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� - log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}",rgvId); - return false; - } else { - log.info("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}",rgvId); - return true; } + } + + } + + private void getAgvTaskParam(ForwardAGVTaskParam agvTaskCreateParam,WrkMast param,Integer staNo){ + String sourceSite = ""; + if (staNo == 1040 || staNo == 1042) { + sourceSite = "a"; + } else if (staNo == 2010 || staNo == 2012) { + sourceSite = "b"; + } else if(staNo == 3010 || staNo ==3012) { + sourceSite = "c"; + } else if(staNo == 2000 || staNo ==2002) { + sourceSite = "d"; + } + List<ForwardAGVTaskParam.PositionCodePaths> agvTaskParamList = Arrays.asList( + //璧峰浣� + new ForwardAGVTaskParam.PositionCodePaths(staNo.toString(),"05"), + //鐩爣浣� + new ForwardAGVTaskParam.PositionCodePaths(sourceSite,"04") + ); + Date date = new Date(); + DecimalFormat df = new DecimalFormat("0000"); + String wrkNo = "Crn"+df.format(param.getWrkNo())+date.getTime()/1000; + agvTaskCreateParam.setReqCode(wrkNo); + agvTaskCreateParam.setReqTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + agvTaskCreateParam.setTaskTyp("GT4"); +// agvTaskCreateParam.setCtnrCode(param.getBarcode()); + agvTaskCreateParam.setPositionCodePath(agvTaskParamList); + agvTaskCreateParam.setCtnrTyp("2"); + agvTaskCreateParam.setPriority("1"); + agvTaskCreateParam.setTaskCode(wrkNo); + + } + + private String forwardAGVHttpRequest(int sta, Object requestParam, String url, String path){ + // 鍏堢粦瀹� + boolean flag = bindPodAndBerth(String.valueOf(sta)); + if (!flag) { + return "error"; + } + String response = ""; + String success = "error"; + try { + response = new HttpHandler.Builder() + .setUri(url) +// .setHttps(true) + .setPath(path) + .setJson(JSONObject.toJSONString(requestParam)) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + + String message = jsonObject.get("code").toString(); + if(("0").equals(message) || ("璇锋眰缂栧彿宸插瓨鍦�").contains(message)){ + success = "SUCCESS"; + }else { + success = message; + } +// log.info("杞彂agv浠诲姟锛氳姹備綋:"+JSONObject.toJSONString(requestParam)+",杩斿洖鍊�:"+jsonObject); }catch (Exception e){ - log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}銆傚紓甯革細"+e,rgvId); + + } finally { + try { + // 淇濆瓨鎺ュ彛鏃ュ織 + apiLogService.save( + "鍑哄簱鍛煎彨agv", + url + path, + null, + "127.0.0.1", + JSONObject.toJSONString(requestParam), + response, + success.equals("SUCCESS") + ); + } catch (Exception e) { + log.error("", e); + } + } + return success; + } + private boolean bindPodAndBerth(String sta) { + String staMap = AgvSiteConstant.SiteMap.get(sta); + if (staMap == null) { + log.error("娌℃湁鎵惧埌璇ョ珯鐐圭殑鍏ュ簱鏄犲皠:{}",sta); return false; } + JSONObject jsonObject = new JSONObject(); + jsonObject.put("reqCode",UUID.randomUUID().toString().replace("-", "")); // 璇锋眰鍞竴鍊� + jsonObject.put("ctnrTyp","2"); // 瀹瑰櫒绫诲瀷2 + jsonObject.put("stgBinCode",staMap); // 浠撲綅缂栧彿锛屾牴鎹浠撶紪鍙疯浆鎹� + jsonObject.put("indBind","1"); // 1缁戝畾锛�0瑙g粦 + + String body = jsonObject.toJSONString(); + String response = ""; + boolean success = false; + String url = "10.0.100.110:8182"; + String path = "/rcms/services/rest/hikRpcService/bindCtnrAndBin"; + try { + response = new HttpHandler.Builder() + .setUri(url) + .setPath(path) + .setJson(body) + .build() + .doPost(); + JSONObject res = JSON.parseObject(response); + if (res.getInteger("code").equals(0)) { + success = true; + } else { + log.error("鍑哄簱璋冪敤agv缁戝畾浠撲綅澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", url + path, body, response); + } + } catch (Exception e) { + log.error("鍑哄簱璋冪敤agv缁戝畾浠撲綅寮傚父", e); + } finally { +// try { + // 淇濆瓨鎺ュ彛鏃ュ織 +// apiLogService.save( +// "璋冪敤agv缁戝畾浠撲綅", +// ApiInterfaceConstant.AGV_IP + ApiInterfaceConstant.AGV_BIND_PATH, +// null, +// "127.0.0.1", +// body, +// response, +// success +// ); +// } catch (Exception e) { +// log.error("", e); +// } + } + return success; } + + + + } -- Gitblit v1.9.1