From 9be8d4744aba93087c8ddb7202029047e9144bf8 Mon Sep 17 00:00:00 2001 From: lsh <lsh@163.com> Date: 星期三, 09 四月 2025 13:52:27 +0800 Subject: [PATCH] * --- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 1698 ++++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 1,302 insertions(+), 396 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 046a07a..6972a29 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -6,16 +6,14 @@ import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.controller.CrnController; -import com.zy.asrs.controller.OpenController; -import com.zy.asrs.controller.SiteController; import com.zy.asrs.domain.enums.TaskStatusType; import com.zy.asrs.domain.enums.WorkNoType; import com.zy.asrs.domain.param.CrnOperatorParam; import com.zy.asrs.entity.*; -import com.zy.asrs.entity.param.TaskOverToWms; import com.zy.asrs.mapper.*; import com.zy.asrs.service.*; import com.zy.asrs.utils.CommandUtils; +import com.zy.asrs.utils.RouteUtils; import com.zy.asrs.utils.Utils; import com.zy.common.service.CommonService; import com.zy.common.utils.HttpHandler; @@ -26,16 +24,17 @@ import com.zy.core.enums.*; import com.zy.core.model.CrnSlave; import com.zy.core.model.DevpSlave; +import com.zy.core.model.RgvSlave; import com.zy.core.model.Task; -import com.zy.core.model.command.CommandPackage; import com.zy.core.model.command.CrnCommand; +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.RgvThread; import com.zy.core.thread.SiemensDevpThread; -import com.zy.system.entity.Config; -import com.zy.system.service.ConfigService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -54,8 +53,6 @@ @Service("mainService") @Transactional public class MainServiceImpl { - - public static final long COMMAND_TIMEOUT = 5 * 1000; @Autowired private SlaveProperties slaveProperties; @@ -76,14 +73,8 @@ @Autowired private TaskWrkService taskWrkService; @Autowired - private ConfigService configService; - @Autowired private StaDescMapper staDescMapper; - @Autowired - private CommandInfoService commandInfoService; - @Autowired - private OpenServiceImpl openServiceImpl; @Autowired private StaDescService staDescService; @@ -91,6 +82,12 @@ private ApiLogService apiLogService; @Autowired private CommonService commonService; + @Autowired + private BasRgvService basRgvService; + @Autowired + private WrkMastStaMapper wrkMastStaMapper; + @Autowired + private BasRgvMapMapper basRgvMapMapper; @Value("${wms.url}") private String wmsUrl; @@ -102,9 +99,9 @@ private String taskStatusFeedbackPath; @Autowired private CrnController crnController; - @Autowired - private SiteController siteController; + @Value("${wms.rgvOpen}") + private boolean rgvOpen; public void generateStoreWrkFile() throws IOException, InterruptedException { try { @@ -122,8 +119,8 @@ } else { staProtocol = staProtocol.clone(); } - Short workNo = staProtocol.getWorkNo(); - Short stano = staProtocol.getStaNo(); + Integer workNo = staProtocol.getWorkNo(); + Integer stano = staProtocol.getStaNo(); // 灏哄妫�娴嬪紓甯� boolean back = false; @@ -169,12 +166,13 @@ } // News.warn("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg); staProtocol.setWorkNo(workNo); - staProtocol.setStaNo(inSta.getBackSta().shortValue()); + staProtocol.setStaNo(inSta.getStaNo()); devpThread.setPakMk(staProtocol.getSiteId(), false); - MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, staProtocol)); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); TaskWrk taskWrk = taskWrkMapper.selectByWrkNo(Integer.valueOf(workNo)); if (taskWrk != null) { taskWrk.setMemo(errMsg);//灏嗛敊璇爜瀛樺叆澶囨敞瀛楁杩涜灞曠ず + taskWrk.setModiTime(new Date()); taskWrkMapper.updateById(taskWrk); } continue; @@ -182,7 +180,7 @@ // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() - && !staProtocol.isEmptyMk() && (workNo >= 0) + && !staProtocol.isEmptyMk() && (workNo == 9991 ) && staProtocol.isPakMk()) { // 鑾峰彇鏉$爜鎵弿浠俊鎭� BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode()); @@ -196,18 +194,57 @@ TaskWrk taskWrk1=taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("barcode",barcode)); if(!Cools.isEmpty(taskWrk1)){ log.info("鎵樼洏鐮侊細"+barcode+"浠诲姟妗e瓨鍦�"); - continue; + if (taskWrk1.getIoType()==1 && taskWrk1.getStartPoint().equals(staProtocol.getSiteId().toString())){ + StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() + .eq("crn_no", taskWrk1.getCrnNo()).eq("type_no",1).eq("stn_no",staProtocol.getSiteId())); + if (Cools.isEmpty(staDesc)){ + log.info("鎵樼洏鐮侊細"+barcode+"浠诲姟妗e瓨鍦�"); + return; + }else { + staProtocol.setWorkNo(taskWrk1.getWrkNo()); + staProtocol.setStaNo(staDesc.getCrnStn()); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + } + } + return; } HashMap<String, Object> headParam = new HashMap<>(); headParam.put("Content-Type","application/json"); String response; - response = new HttpHandler.Builder() - // .setHeaders(headParam) - .setUri(wmsUrl) - .setPath(inboundTaskApplyPath) - .setJson(JSON.toJSONString(toWmsDTO)) - .build() - .doPost(); + try{ + response = new HttpHandler.Builder() + // .setHeaders(headParam) + .setUri(wmsUrl) + .setPath(inboundTaskApplyPath) + .setJson(JSON.toJSONString(toWmsDTO)) + .build() + .doPost(); + }catch (Exception e){ + log.error("璇锋眰鍏ュ簱璋冪敤鎺ュ彛澶辫触"); + log.error("寮傚父淇℃伅鎵撳嵃锛�"+e); + try{ + BasDevp basDevp = basDevpService.selectById(inSta.getStaNo()); + if (Cools.isEmpty(basDevp)){ + log.error("绔欑偣鍙峰紓甯�"+inSta.getStaNo()); + } else if (basDevp.getStaErr()!=0){ + basDevp.setStaErr(2); + basDevpService.updateById(basDevp); + } + }catch (Exception e1){ + // 閫�鍥� + log.error("鎵爜妫�娴嬬▼搴忓紓甯�"+inSta.getStaNo()+"寮傚父淇℃伅"+e1); + } + staProtocol.setWorkNo(9999); + staProtocol.setStaNo(inSta.getStaNo()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); +// TaskWrk taskWrk = taskWrkMapper.selectByWrkNo(Integer.valueOf(workNo)); +// if (taskWrk != null) { +// taskWrk.setMemo(errMsg);//灏嗛敊璇爜瀛樺叆澶囨敞瀛楁杩涜灞曠ず +// taskWrkMapper.updateById(taskWrk); +// } + continue; + } JSONObject jsonObject = JSON.parseObject(response); apiLogService.save("wms璇锋眰鍏ュ簱璐т綅鎺ュ彛" @@ -219,9 +256,49 @@ ,true ); log.info("鍏ュ簱璇锋眰鍙傛暟{}" + JSON.toJSONString(toWmsDTO)); + log.info("鍏ュ簱璇锋眰杩斿洖鍙傛暟{}" + JSON.toJSONString(response)); if (jsonObject.getInteger("code").equals(200) && !Cools.isEmpty(jsonObject.get("data").toString())) { GetWmsDto getWmsDto = JSON.parseObject(jsonObject.get("data").toString(), GetWmsDto.class); + try{ + BasDevp basDevp = basDevpService.selectById(inSta.getStaNo()); + if (Cools.isEmpty(basDevp)){ + log.error("绔欑偣鍙峰紓甯�1"+inSta.getStaNo()); + throw new CoolException("绔欑偣鍙峰紓甯�1,鏈煡璇㈠埌绔欑偣淇℃伅"+inSta.getStaNo()); + } + Integer staNoCrnNo = Utils.StaNoCrnNo(inSta.getStaNo()); + if (staNoCrnNo==0){ + basDevp.setStaErr(1); + basDevpService.updateById(basDevp); + log.error("绔欑偣鍙峰紓甯�2"+inSta.getStaNo()); + throw new CoolException("绔欑偣鍙峰紓甯�2,绔欑偣鍙蜂笉瀛樺湪"+inSta.getStaNo()); + }else { + LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>() + .eq("crn_no", staNoCrnNo.longValue()) + .eq("loc_no", getWmsDto.getLocNo())); + if (Cools.isEmpty(locMast)){ + basDevp.setStaErr(1); + basDevpService.updateById(basDevp); + log.error("绔欑偣鍙峰紓甯�3"+inSta.getStaNo()); + throw new CoolException("绔欑偣鍙峰紓甯�3锛氭宸烽亾涓嶅瓨鍦ㄧ洰鏍囧簱浣�"+inSta.getStaNo()); + } + } + } catch (Exception e){ +// log.error("鎵爜妫�娴嬬▼搴忓紓甯�"+inSta.getStaNo()+"寮傚父淇℃伅"+e); + // 閫�鍥� + log.error("鎵爜妫�娴嬬▼搴忓紓甯�"+inSta.getStaNo()+errMsg); + log.error("鎵爜妫�娴嬬▼搴忓紓甯�,寮傚父淇℃伅"+e); + staProtocol.setWorkNo(9999); + staProtocol.setStaNo(inSta.getStaNo()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); +// TaskWrk taskWrk = taskWrkMapper.selectByWrkNo(Integer.valueOf(workNo)); +// if (taskWrk != null) { +// taskWrk.setMemo(errMsg);//灏嗛敊璇爜瀛樺叆澶囨敞瀛楁杩涜灞曠ず +// taskWrkMapper.updateById(taskWrk); +// } + continue; + } //鏌ョ湅璇ュ簱浣嶆槸鍚︿负绌哄簱浣� LocMast locMast=locMastService.selectOne(new EntityWrapper<LocMast>() .eq("loc_sts","O") @@ -242,7 +319,7 @@ .build() .doPost(); JSONObject jsonObject1 = JSON.parseObject(response2); - apiLogService.save("wcs娲惧彂搴撲綅涓嶄负绌轰笂鎶ms" + apiLogService.save("wcs娲惧彂搴撲綅==銆嬩笉涓虹┖銆�==涓婃姤wms" ,wmsUrl+taskStatusFeedbackPath ,null ,"127.0.0.1" @@ -251,8 +328,8 @@ ,true ); }catch (Exception e){ - log.error("wcs娲惧彂搴撲綅涓嶄负绌轰笂鎶ms", getWmsDto.getWrkNo()); - throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触"); + log.error("wcs娲惧彂搴撲綅==銆嬩笉涓虹┖銆�==涓婃姤wms", getWmsDto.getWrkNo()); + throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触,娲惧彂搴撲綅==銆嬩笉涓虹┖銆�==锛屽紓甯镐俊鎭細"+e); } } @@ -266,8 +343,8 @@ taskWrkService.insert(taskWrk); StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() .eq("crn_no", taskWrk.getCrnNo()).eq("type_no",1).eq("stn_no",staProtocol.getSiteId())); - staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue()); - staProtocol.setStaNo(staDesc.getCrnStn().shortValue()); + staProtocol.setWorkNo(taskWrk.getWrkNo()); + staProtocol.setStaNo(staDesc.getCrnStn()); MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); } } @@ -276,79 +353,20 @@ continue; } -// StaDescService staDescService = SpringUtils.getBean(StaDescService.class); -// -// ToWmsDTO toWmsDTO = new ToWmsDTO(); -// Map<String, Object> map = new HashMap<>(); -// map.put("x-api-key","7a15b5db-29b6-552c-8cff-0cfec3756da2"); -// List<Integer> list = openServiceImpl.getInEnableRoadway(); -// TaskWrk taskWrk = taskWrkService.selectOne(new EntityWrapper<TaskWrk>().eq("barcode", barcode)); -// -// if (Cools.isEmpty(taskWrk)){ -// continue; -// } -// //StaDesc staDesc1 = staDescService.selectOne(new EntityWrapper<StaDesc>().eq("stn_no",inSta.getBackSta())); -// if (taskWrk.getTargetPoint() != null && taskWrk.getStartPoint() != null){ -// if ( taskWrk.getWrkNo() != null && taskWrk.getWrkNo().shortValue() == workNo ){ -// continue; -// } -// //鑾峰彇鍫嗗灈鏈虹珯鐐� -// StaDesc staDesc = new StaDesc(); -// if (devp.getId() <= 1){ -// staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() -// .eq("crn_no", taskWrk.getCrnNo()).eq("type_no",1).lt("stn_no", 200)); -// }else { -// staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() -// .eq("crn_no", taskWrk.getCrnNo()).eq("type_no",1).lt("stn_no", 400).ge("stn_no", 250)); -// } -// staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue()); -// staProtocol.setStaNo(staDesc.getCrnStn().shortValue()); -// MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(3, staProtocol)); -// Thread.sleep(500); -// }else { -// //TaskWrk taskWrk = taskWrkService.selectByTaskNo(param.getTaskNo()); -// toWmsDTO.setWarehouseId("1688469798893297665"); -// toWmsDTO.setContainerCode(barcode); -// toWmsDTO.setApplyType("TUNNEL_LOCATION"); -// toWmsDTO.setTaskTunnel(taskWrk.getCrnNo()); -// toWmsDTO.setCanInboundTunnels(list); -// String response = null; -// try { -// response = new HttpHandler.Builder() -// .setHeaders(map) -// .setUri(wmsUrl) -// .setPath(inboundTaskApplyPath) -// .setJson(JSON.toJSONString(toWmsDTO)) -// .build() -// .doPost(); -// }catch (Exception e){ -// log.error("wms閫氳澶辫触,"+e.getMessage()); -// continue; -// } -// apiLogService.save("wms璇锋眰鍏ュ簱璐т綅鎺ュ彛" -// ,wmsUrl+"wcsManager/wcsInterface/inboundTaskApply" -// ,null -// ,"127.0.0.1" -// ,JSON.toJSONString(toWmsDTO) -// ,response -// ,true -// ); -// JSONObject jsonObject = JSON.parseObject(response); -// if (jsonObject.getInteger("code").equals(200)) { -// GetWmsDto getWmsDto = JSON.parseObject(jsonObject.get("data").toString(), GetWmsDto.class); -// taskWrk.setOriginTargetPoint(getWmsDto.getTargetLocationCode()); -// taskWrk.setTargetPoint(Utils.getWcsLocNo(getWmsDto.getTargetLocationCode())); -// taskWrk.setStartPoint(String.valueOf(inSta.getBackSta())); -// if (!taskWrkService.updateById(taskWrk)){ -// log.error("淇濆瓨wms搴撲綅鍙峰け璐�"); -// } -// -// }else { -// log.error("wms閫氳澶辫触,"+jsonObject.get("msg")); -// -// } -// } + } else { + // 閫�鍥� + log.error("鎵爜鍏ュ簱澶辫触锛寋}鍏ュ簱绔欏洜{}寮傚父锛屾墭鐩樺凡琚��鍥�", inSta.getStaNo(), errMsg); + staProtocol.setWorkNo(9999); + staProtocol.setStaNo(inSta.getStaNo()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + TaskWrk taskWrk = taskWrkMapper.selectByWrkNo(Integer.valueOf(workNo)); + if (taskWrk != null) { + taskWrk.setMemo(errMsg);//灏嗛敊璇爜瀛樺叆澶囨敞瀛楁杩涜灞曠ず + taskWrk.setModiTime(new Date()); + taskWrkMapper.updateById(taskWrk); + } } } @@ -371,24 +389,48 @@ for (CrnSlave.CrnStn crnStn : crnSlave.getCrnOutStn()) { List<StaDesc> staDescs = staDescMapper.selectList(new EntityWrapper<StaDesc>().eq("crn_no", crnSlave.getId()).eq("crn_stn", crnStn.getStaNo())); for (StaDesc staDesc : staDescs){ - // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 - DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); - StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); - if (staProtocol == null) { - continue; - } else { - staProtocol = staProtocol.clone(); - } - if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == 0)) { - // 鏌ヨ宸ヤ綔妗� - TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnSlave.getId(), staDesc.getStnNo().toString()); - if (taskWrk == null) { + try{ + // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); + if (staProtocol == null) { continue; + } else { + staProtocol = staProtocol.clone(); } - siteController.siteDetlUpdate(Integer.valueOf(taskWrk.getTargetPoint()),taskWrk.getWrkNo().shortValue(),(short)0,"Y",false,false); - taskWrk.setStatus(5); - taskWrk.setWrkSts(14); - taskWrkService.updateById(taskWrk); + if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == 0)) { + // 鏌ヨ宸ヤ綔妗� + TaskWrk taskWrk = taskWrkMapper.selectCrnStaWorking(crnSlave.getId(), staDesc.getStnNo().toString()); + if (taskWrk == null) { + continue; + } + log.info("涓嬪彂杈撻�佺嚎浠诲姟锛歵askWrk:"+JSON.toJSONString(taskWrk)); +// R r = siteController.siteDetlUpdate(Integer.valueOf(taskWrk.getTargetPoint()), taskWrk.getWrkNo().shortValue(), (short) 0, "Y", false, false); + staProtocol.setWorkNo(taskWrk.getWrkNo()); + staProtocol.setStaNo(staDesc.getCrnStn()); + boolean offer = false; + try{ + offer = MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol)); + }catch (Exception e){ + log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:"+e); + log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯�:offer:"+offer); + } +// JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(r)); + if (offer){ + log.info("涓嬪彂杈撻�佺嚎浠诲姟鎴愬姛锛歵askWrk:"+JSON.toJSONString(taskWrk)); + Date now = new Date(); + taskWrk.setStatus(5); + taskWrk.setWrkSts(14); + taskWrk.setModiTime(now); + taskWrk.setCompleteTime(now); + taskWrkService.updateById(taskWrk); + }else { + log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛歵askWrk:"+JSON.toJSONString(taskWrk)); +// log.error("涓嬪彂杈撻�佺嚎浠诲姟澶辫触锛氬紓甯镐俊鎭�:"+JSON.toJSONString(r)); + } + } + }catch (Exception e){ + log.error("鍑哄簱鍒板嚭搴撶珯寮傚父:寮傚父淇℃伅锛�"+e); } } @@ -410,6 +452,9 @@ log.error("{}鍙峰爢鍨涙満灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", crn.getId()); continue; } + + // 搴撲綅绉昏浆 + this.locToLoc(crn, crnProtocol); // 鍙湁褰撳爢鍨涙満绌洪棽 骞朵笖 鏃犱换鍔℃椂鎵嶇户缁墽琛� if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO @@ -435,8 +480,6 @@ } } } - // 搴撲綅绉昏浆 - this.locToLoc(crn, crnProtocol); } } @@ -487,15 +530,16 @@ continue; } - int workNo = commonService.getWorkNo(WorkNoType.PAKIN.type);//鑾峰彇鍏ュ簱宸ヤ綔鍙� - taskWrk.setWrkNo(workNo);//宸ヤ綔鍙� +// int workNo = commonService.getWorkNo(WorkNoType.PAKIN.type);//鑾峰彇鍏ュ簱宸ヤ綔鍙� +// taskWrk.setWrkNo(workNo);//宸ヤ綔鍙� + Date now = new Date(); taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//娲惧彂鐘舵�� - taskWrk.setAssignTime(new Date());//娲惧彂鏃堕棿 +// taskWrk.setAssignTime(now);//娲惧彂鏃堕棿 + taskWrk.setExecuteTime(now); taskWrk.setWrkSts(3);//宸ヤ綔鐘舵�� 3.鍚婅溅鍏ュ簱 taskWrk.setCrnNo(staDesc.getCrnNo());//鍫嗗灈鏈哄彿 - taskWrk.setModiTime(new Date()); + taskWrk.setModiTime(now); taskWrk.setModiUser(9988L); - taskWrkService.updateById(taskWrk); // //鍙栧嚭鍛戒护 // List<CommandInfo> commandInfos = commandInfoService.selectByTaskNo(taskWrk.getTaskNo()); @@ -546,6 +590,12 @@ throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�"); }else{ try{ + taskWrkService.updateById(taskWrk); + }catch (Exception e){ + log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo()); + log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽紓甯革細"+e); + } + try{ HashMap<String, Object> headParam = new HashMap<>(); headParam.put("taskNo",taskWrk.getTaskNo()); headParam.put("status",taskWrk.getStatus()); @@ -568,9 +618,9 @@ ,response ,true ); - }catch (Exception e){ - log.error("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触", taskWrk); - throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触"); + } catch (Exception e){ + log.error("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触", JSON.toJSONString(taskWrk)); +// throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触"); } } @@ -634,15 +684,6 @@ break; } - - // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� - Date now = new Date(); - taskWrk.setWrkSts(12); - taskWrk.setStatus(2); - taskWrk.setModiTime(now); - if (taskWrkMapper.updateById(taskWrk) == 0) { - log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo()); - } CrnCommand command = new CrnCommand(); command.setCrnNo(taskWrk.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� command.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙� @@ -660,6 +701,20 @@ throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�"); }else{ try{ + // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� + Date now = new Date(); + taskWrk.setWrkSts(12); + taskWrk.setStatus(2); + taskWrk.setModiTime(now); + taskWrk.setExecuteTime(now); + if (taskWrkMapper.updateById(taskWrk) == 0) { + log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo()); + } + }catch (Exception e){ + log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo()); + log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽紓甯革細"+e); + } + try{ HashMap<String, Object> headParam = new HashMap<>(); headParam.put("taskNo",taskWrk.getTaskNo()); headParam.put("status",taskWrk.getStatus()); @@ -674,7 +729,7 @@ .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); - apiLogService.save("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms" + apiLogService.save("wcs娲惧彂鍑哄簱浠诲姟涓婃姤wms" ,wmsUrl+taskStatusFeedbackPath ,null ,"127.0.0.1" @@ -683,60 +738,10 @@ ,true ); }catch (Exception e){ - log.error("wcs娲惧彂鍑哄簱浠诲姟涓婃姤wms澶辫触", taskWrk); - throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触"); + log.error("wcs娲惧彂鍑哄簱浠诲姟涓婃姤wms澶辫触", JSON.toJSONString(taskWrk)); +// throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触"); } - } - -// // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� -// if (Utils.isDeepLoc(slaveProperties, taskWrk.getStartPoint())) { -// -// taskWrkMapper.selectPakOutIoType(taskWrk.getCrnNo()); -// -// List<TaskWrk> taskWrks1 = taskWrkMapper.selectPakOutIoType(taskWrk.getCrnNo()); -// if (Cools.isEmpty(taskWrks1) && taskWrks1.size()!=0){ -// continue; -// } -// String shallowLocNo = Utils.getShallowLoc(slaveProperties, taskWrk.getStartPoint()); -// TaskWrk hallowLocNoTask = taskWrkMapper.selectByStartPoint(shallowLocNo); -// if (!Cools.isEmpty(hallowLocNoTask)){ -// continue; -// } -// } -// -// //鍙栧嚭鍛戒护 -// List<CommandInfo> commandInfos = commandInfoService.selectByTaskNo(taskWrk.getTaskNo()); -// Integer commandStep = taskWrk.getCommandStep(); -// if (commandInfos.isEmpty()) { -// continue;//鍛戒护绌� -// } -// -// //鍒ゆ柇鏈鍛戒护鏄惁鎵ц -// CommandInfo commandInfo2 = commandInfos.get(commandInfos.size() - 1); -// if (commandInfo2.getCommandStatus() != CommandStatusType.CREATE.id) { -// continue;//鎸囦护宸叉墽琛� -// } -// -// CommandInfo commandInfo = commandInfos.get(commandStep); -// CommandPackage commandPackage = JSON.parseObject(commandInfo.getCommand(), CommandPackage.class);//鍙栧嚭鍛戒护鎶ユ枃 -// CrnCommand crnCommand = JSON.parseObject(commandPackage.getCommand().toString(), CrnCommand.class); -// -// if (!MessageQueue.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) { -// log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand)); -// } else { -// -// //寮�濮嬭繍琛� -// String response = CrnStartRunning(taskWrk); -// JSONObject jsonObject = JSON.parseObject(response); -// if (jsonObject.getInteger("code").equals(200)) { -// -// }else { -// log.error("鍑哄簱寮�濮嬭繍琛岄�氳澶辫触,"+jsonObject.get("msg")); -// -// } -// } - } } } @@ -749,10 +754,12 @@ public void locToLoc(CrnSlave slave, CrnProtocol crnProtocol){ for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) { // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑绉诲簱宸ヤ綔妗� - List<TaskWrk> taskWrks = taskWrkMapper.selectList(new EntityWrapper<TaskWrk>() - .eq("crn_no",slave.getId()) - .eq("wrk_sts",11) - .eq("io_type",3)); + List<TaskWrk> taskWrks = taskWrkMapper.selectList( + new EntityWrapper<TaskWrk>() + .eq("CRN_NO",slave.getId()) + .eq("WRK_STS",11) + .eq("IO_TYPE",3) + .orderBy("IO_PRI",false)); for (TaskWrk taskWrk : taskWrks){ // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� @@ -808,6 +815,7 @@ taskWrk.setWrkSts(12); taskWrk.setStatus(2); taskWrk.setModiTime(now); + taskWrk.setExecuteTime(now); if (taskWrkMapper.updateById(taskWrk) == 0) { log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo()); } @@ -835,8 +843,8 @@ ,true ); }catch (Exception e){ - log.error("wcs娲惧彂鍑哄簱浠诲姟涓婃姤wms澶辫触", taskWrk); - throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触"); + log.error("wcs娲惧彂绉诲簱搴撲换鍔′笂鎶ms澶辫触", taskWrk); +// throw new CoolException("wcs娲惧彂绉诲簱搴撲换鍔′笂鎶ms澶辫触"); } } @@ -849,54 +857,6 @@ /** * 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣� */ -// public void storeFinished() { -// for (CrnSlave crn : slaveProperties.getCrn()) { -// // 鑾峰彇鍫嗗灈鏈轰俊鎭� -// CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId()); -// CrnProtocol crnProtocol = crnThread.getCrnProtocol(); -// if (crnProtocol == null) { continue; } -// -// // 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1 -// if (crnProtocol.getTaskFinish() == 0 && crnProtocol.statusType == CrnStatusType.HANDLING_COMPLETED && crnProtocol.getTaskNo() != 0) { -// //鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。 -// TaskWrk taskWrk = taskWrkMapper.selectCrnNoInWorking(crn.getId(),crnProtocol.getTaskNo().intValue()); -// if (Cools.isEmpty(taskWrk)) { -//// log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo()); -// continue; -// } -// -// //鑾峰彇鎸囦护ID -// Integer commandId = crnProtocol.getCommandId(); -// CommandInfo commandInfo = new CommandInfo(); -// if (Cools.isEmpty(commandId)){ -// commandInfo = commandInfoService.selectOne(new EntityWrapper<CommandInfo>() -// .eq("wrk_no",crnProtocol.getTaskNo()) -// .eq("device","Crn")); -// }else { -// commandInfo = commandInfoService.selectById(commandId); -// } -// -// -// if (commandInfo == null) { -// //鎸囦护涓嶅瓨鍦� -// continue; -// } -// if (commandInfo.getCommandStatus() == 3){ -// continue; -// } -// commandInfo.setCommandStatus(CommandStatusType.COMPLETE.id);//鎸囦护瀹屾垚 -// commandInfo.setCompleteTime(new Date());//鎸囦护瀹屾垚鏃堕棿 -// if (commandInfoService.updateById(commandInfo)) {//淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 -// // 鍫嗗灈鏈哄浣� -// crnThread.setResetFlag(true); -// } -// } -// } -// } - - /** - * 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣� - */ public void storeFinished() throws InterruptedException { for (CrnSlave crn : slaveProperties.getCrn()) { // 鑾峰彇鍫嗗灈鏈轰俊鎭� @@ -905,7 +865,7 @@ if (crnProtocol == null) { continue; } // 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1 - if (crnProtocol.getTaskFinish() == 0 && crnProtocol.statusType == CrnStatusType.HANDLING_COMPLETED && crnProtocol.getTaskNo() != 0) { + if (!Cools.isEmpty(crnProtocol.getTaskFinish()) && crnProtocol.getTaskFinish() == 0 && crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) { //鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。 TaskWrk taskWrk = taskWrkMapper.selectCrnNoInWorking(crn.getId(),crnProtocol.getTaskNo().intValue()); if (Cools.isEmpty(taskWrk)&&crnProtocol.getTaskNo() !=999) { @@ -916,17 +876,18 @@ //纭瀹屾垚淇″彿 CrnOperatorParam crnOperatorParam=new CrnOperatorParam(); crnOperatorParam.setCrnNo(crn.getId()); + Date now = new Date(); crnController.crnTaskComplete(crnOperatorParam); if(!Cools.isEmpty(taskWrk)){ - if(taskWrk.getIoType()==1&&taskWrk.getWrkSts()==3){ + if(taskWrk.getIoType()==1 && taskWrk.getWrkSts()==3){ taskWrk.setWrkSts(4);//鍏ュ簱瀹屾垚 taskWrk.setStatus(5);//瀹岀粨 //鏇存柊搴撲綅鐘舵�� LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint()); locMast.setLocSts("F");//F.鍦ㄥ簱 locMast.setBarcode(taskWrk.getBarcode());//鎵樼洏鐮� - locMast.setModiTime(new Date()); + locMast.setModiTime(now); locMast.setModiUser(9999L); locMastService.updateById(locMast); }else if(taskWrk.getIoType()==2&&taskWrk.getWrkSts()==12){ @@ -936,7 +897,7 @@ LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint()); locMast.setLocSts("O");//O.绌哄簱浣� locMast.setBarcode("");//鎵樼洏鐮� - locMast.setModiTime(new Date()); + locMast.setModiTime(now); locMast.setModiUser(9999L); locMastService.updateById(locMast); }else if(taskWrk.getIoType()==3&&taskWrk.getWrkSts()==12){ @@ -946,17 +907,19 @@ LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint()); locMast.setLocSts("F");//F.鍦ㄥ簱 locMast.setBarcode(taskWrk.getBarcode());//鎵樼洏鐮� - locMast.setModiTime(new Date()); + locMast.setModiTime(now); locMast.setModiUser(9999L); locMastService.updateById(locMast); LocMast locMast1 = locMastService.selectByLocNo(taskWrk.getStartPoint()); locMast1.setLocSts("O");//O.绌哄簱浣� locMast1.setBarcode("");//鎵樼洏鐮� - locMast1.setModiTime(new Date()); + locMast1.setModiTime(now); locMast1.setModiUser(9999L); locMastService.updateById(locMast1); } + taskWrk.setModiTime(now); + taskWrk.setCompleteTime(now); taskWrkService.updateById(taskWrk); @@ -967,6 +930,8 @@ headParam.put("ioType",taskWrk.getIoType()); headParam.put("barcode",taskWrk.getBarcode()); String response; + log.error("wcs瀹岀粨浠诲姟涓婃姤wms==銆�", headParam); + response = new HttpHandler.Builder() // .setHeaders(headParam) .setUri(wmsUrl) @@ -974,7 +939,11 @@ .setJson(JSON.toJSONString(headParam)) .build() .doPost(); - JSONObject jsonObject = JSON.parseObject(response); + log.error("wcs瀹岀粨浠诲姟涓婃姤wms==銆�", response); + +// JSONObject jsonObject = JSON.parseObject(response); +// log.error("wcs瀹岀粨浠诲姟涓婃姤wms==銆�", jsonObject); + apiLogService.save("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms" ,wmsUrl+taskStatusFeedbackPath ,null @@ -985,7 +954,8 @@ ); }catch (Exception e){ log.error("wcs瀹岀粨浠诲姟涓婃姤wms澶辫触", taskWrk); - throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触"); + log.error("wcs瀹岀粨浠诲姟涓婃姤wms澶辫触,鎶ラ敊淇℃伅锛�", e); +// throw new CoolException("wcs娲惧彂鍏ュ簱浠诲姟涓婃姤wms澶辫触"); } } @@ -1033,7 +1003,7 @@ wrkMast.getSourceStaNo(), // 婧愮珯 wrkMast.getSourceLocNo(), // 婧愬簱浣� wrkMast.getBarcode(), // 鏉$爜 - (int) crnProtocol.getAlarm1(), // 寮傚父鐮� + (int) crnProtocol.getAlarm(), // 寮傚父鐮� errName, // 寮傚父 1, // 寮傚父鎯呭喌 now, // 娣诲姞鏃堕棿 @@ -1048,7 +1018,7 @@ } } else { // 寮傚父淇 - if (crnProtocol.getAlarm1() == null || crnProtocol.getAlarm1() == 0) { + if (crnProtocol.getAlarm() == null || crnProtocol.getAlarm() == 0) { latest.setEndTime(now); latest.setUpdateTime(now); latest.setStatus(2); @@ -1061,7 +1031,7 @@ } else { BasErrLog latest = basErrLogService.findLatest(crn.getId()); // 鏈夊紓甯� - if (crnProtocol.getAlarm1() != null && crnProtocol.getAlarm() > 0) { + if (crnProtocol.getAlarm() != null && crnProtocol.getAlarm() > 0) { // 璁板綍鏂板紓甯� if (latest == null || (latest.getErrCode() != crnProtocol.getAlarm().intValue())) { BasCrnError crnError = basCrnErrorMapper.selectById(crnProtocol.getAlarm()); @@ -1080,7 +1050,7 @@ null, // 婧愮珯 null, // 婧愬簱浣� null, // 鏉$爜 - (int)crnProtocol.getAlarm1(), // 寮傚父鐮� + (int)crnProtocol.getAlarm(), // 寮傚父鐮� errName, // 寮傚父 1, // 寮傚父鎯呭喌 now, // 娣诲姞鏃堕棿 @@ -1111,142 +1081,6 @@ } } - //鑷姩娲惧彂浠诲姟 - public void autoDistribute() { - Config config = configService.selectByCode("autoDistribute"); - if (config == null) { - return; - } - - if (config.getValue().equals("false")) {//鍒ゆ柇鏄惁寮�鍚嚜鍔ㄦ淳鍙戜换鍔� - return; - } - - for (TaskWrk taskWrk : taskWrkService.selectReceive()) { - - try { - taskWrkService.distribute(taskWrk.getTaskNo(), 9527L); - } catch (CoolException e) { - log.info(e.getMessage()); - } - } - } - - //鑷姩瀹屾垚浠诲姟 - public synchronized void autoCompleteTask() { - List<TaskWrk> taskWrks = taskWrkMapper.selectWorkingTask(); - for (TaskWrk taskWrk : taskWrks) { - //鑾峰彇鍛戒护闆嗗悎 - List<CommandInfo> commandInfos = commandInfoService.selectByTaskNo(taskWrk.getTaskNo()); - if (taskWrk.getCommandStep() < commandInfos.size()) { - continue;//褰撳墠姝ュ簭娌℃湁鍒拌揪鏈�鍚庝竴鏉″懡浠� - } - - //鍒ゆ柇鏈鍛戒护鏄惁鎵ц瀹屾垚 - CommandInfo commandInfo = commandInfos.get(commandInfos.size() - 1); - if (commandInfo.getCommandStatus() != CommandStatusType.COMPLETE.id) { - continue;//鎸囦护鏈畬鎴� - } - - Date now = new Date(); - //鎸囦护宸插畬鎴愶紝鏇存柊浠诲姟 - if (taskWrk.getIoType() == 1) { - //鍏ュ簱浠诲姟 - taskWrk.setWrkSts(4);//3.鍚婅溅鍏ュ簱涓� => 4.鍏ュ簱瀹屾垚 - //taskWrk.setStatus(TaskStatusType.COMPLETE.id); - taskWrk.setModiTime(now); - taskWrkService.updateById(taskWrk); - - //鏇存柊搴撲綅鐘舵�� - LocMast locMast = locMastService.selectByLocNo(taskWrk.getTargetPoint()); - locMast.setLocSts("F");//F.鍦ㄥ簱 - locMast.setBarcode(taskWrk.getBarcode());//鎵樼洏鐮� - locMast.setModiTime(now); - locMast.setModiUser(9999L); - locMastService.updateById(locMast); - } else if (taskWrk.getIoType() == 2) { - //鍑哄簱浠诲姟 - taskWrk.setWrkSts(14);//12.鍚婅溅鍑哄簱涓� => 14.鍑哄簱瀹屾垚 -// taskWrk.setStatus(TaskStatusType.COMPLETE.id); - taskWrk.setModiTime(now); - taskWrkService.updateById(taskWrk); - - //鏇存柊搴撲綅鐘舵�� - LocMast locMast = locMastService.selectByLocNo(taskWrk.getStartPoint()); - locMast.setLocSts("O");//O.绌哄簱浣� - locMast.setBarcode("");//鎵樼洏鐮� - locMast.setModiTime(now); - locMast.setModiUser(9999L); - locMastService.updateById(locMast); - } - } - } - - - public synchronized String CrnStartRunning(TaskWrk taskWrk){ - String tasktype = null; - switch (taskWrk.getIoType()){ - case 1: - tasktype= "RK"; - break; - case 2: - tasktype= "CK"; - break; - case 3: - tasktype= "YK"; - break; - default: - tasktype= "鏈煡"; - } - Map<String, Object> map = new HashMap<>(); - map.put("x-api-key","7a15b5db-29b6-552c-8cff-0cfec3756da2"); - TaskOverToWms taskOverToWms = new TaskOverToWms(); - taskOverToWms.setFeedbackFrom("WCS"); //鏉ユ簮 - taskOverToWms.setWarehouseId("1688469798893297665"); //浠撳簱鏍囪瘑 - taskOverToWms.setTaskNo(taskWrk.getTaskNo()); //浠诲姟鍙� - taskOverToWms.setTaskType(tasktype); // 浠诲姟绫诲瀷 - taskOverToWms.setContainerCode(taskWrk.getBarcode()); // 瀹瑰櫒缂栫爜 - if (taskWrk.getIoType() ==1 || taskWrk.getIoType() == 3){ - taskOverToWms.setEquipmentCode(String.valueOf(taskWrk.getCrnNo())); //璁惧缂栫爜 - taskOverToWms.setTargetLocationCode(taskWrk.getOriginTargetPoint()); //鐩爣搴撲綅 - }else if (taskWrk.getIoType() ==2){ - Map<Integer,String> map1 = new HashMap<>(); - map1.put(102,"J-1101"); - map1.put(106,"J-1103"); - map1.put(110,"J-1105"); - map1.put(114,"J-1107"); - map1.put(118,"J-1109"); - map1.put(122,"J-1111"); - map1.put(305,"H-1101"); - map1.put(405,"G-1101"); - taskOverToWms.setEquipmentCode(map1.get(taskWrk.getTargetPoint())); //璁惧缂栫爜 - taskOverToWms.setSourceLocationCode(taskWrk.getOriginStartPoint()); //婧愬簱浣� - } - - taskOverToWms.setTaskStatus("executing"); //浠诲姟鐘舵�� - String response = null; - try { - response = new HttpHandler.Builder() - .setHeaders(map) - .setUri(wmsUrl) - .setPath("wcsManager/wcsInterface/taskStatusFeedback") - .setJson(JSON.toJSONString(taskOverToWms)) - .build() - .doPost(); - }catch (Exception e){ - log.error("鍫嗗灈鏈轰换鍔″畬鎴愶紝璇锋眰wms浠诲姟瀹屾垚鎺ュ彛澶辫触"); - } - apiLogService.save("鍫嗗灈鏈哄紑濮嬭繍琛�" - ,wmsUrl+"wcsManager/wcsInterface/taskStatusFeedback" - ,null - ,"127.0.0.1" - ,JSON.toJSONString(taskOverToWms) - ,response - ,true - ); - return response; - } - private TaskWrk createTask(GetWmsDto dto, String barcode){ String wcsLocNo = dto.getLocNo(); if(Cools.isEmpty(wcsLocNo)){ @@ -1259,6 +1093,9 @@ taskWrk.setWrkNo(workNo1); taskWrk.setStatus(TaskStatusType.RECEIVE.id);//浠诲姟鐘舵�侊細鎺ユ敹 taskWrk.setCreateTime(now); + taskWrk.setAssignTime(now); + taskWrk.setModiTime(now); + taskWrk.setModiUser(5555L); taskWrk.setIoType(1);//浠诲姟绫诲瀷 taskWrk.setIoPri(Cools.isEmpty(dto.getTaskPriority()) ? 300 : Integer.parseInt(dto.getTaskPriority()));//浼樺厛绾� taskWrk.setBarcode(barcode);//鏉$爜 @@ -1288,6 +1125,1075 @@ } return taskWrk; } + /** + * 瀹屾垚灏忚溅浠诲姟 + */ + public synchronized void rgvCompleteWrkMastSta() { + 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灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId()); + continue; + } + // 鍙湁褰揜GV绛夊緟WCS纭銆佽嚜鍔� + if (rgvProtocol.getStatusType() == RgvStatusType.WORKING + && rgvProtocol.getModeType() == RgvModeType.AUTO + && ((rgvProtocol.getStatusType1()==RgvStatusType.WAITING || rgvProtocol.getStatusType2()==RgvStatusType.WAITING ) || + (rgvProtocol.getStatusType1()==RgvStatusType.FETCHWAITING || rgvProtocol.getStatusType2()==RgvStatusType.FETCHWAITING )) + ) { + log.info("{}鍙峰皬杞︾瓑寰厀cs纭锛岀姸鎬亄}锛屽弬鏁皗}",rgvProtocol.getRgvNo(),rgvProtocol.getStatusType(),rgvProtocol); + if (rgvProtocol.getTaskNo1()!=0 && (rgvProtocol.getStatusType1()==RgvStatusType.WAITING || rgvProtocol.getStatusType1()==RgvStatusType.FETCHWAITING)){ + if (rgvProtocol.getTaskNo1()==(short)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()); + break; + } + WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo1().longValue()); + if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getType()!=1 || wrkMastSta.getWrkSts()!=1){ + log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta); + continue; + } + /* WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue()); + if (!Cools.isEmpty(wrkMast) && wrkMastSta.getWrkType()!=5){ + Thread.sleep(200); + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); + StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + if (!staProtocol.isAutoing() || !staProtocol.isLoading()){ + continue; + } + // 涓嬪彂绔欑偣淇℃伅 + staProtocol.setWorkNo(wrkMast.getWrkNo()); + staProtocol.setStaNo(wrkMast.getStaNo()); + if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol))) { + continue; + } + log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟锛�"+staProtocol); +// try{ +// Thread.sleep(1000); +// DevpThread devpThreadEnd = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1); +// StaProtocol staProtocolEnd = devpThreadEnd.getStation().get(wrkMastSta.getStaEnd()); +// log.error("灏忚溅浠诲姟瀹屾垚璇诲彇杈撻�佺嚎浠诲姟锛�"+staProtocolEnd); +// if (staProtocolEnd.getWorkNo()==0 ){ //|| !staProtocolEnd.getWorkNo().equals(wrkMast.getWrkNo()) +// staProtocolEnd.setWorkNo(wrkMast.getWrkNo()); +// staProtocolEnd.setStaNo(wrkMast.getStaNo()); +// if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocolEnd))) { +// continue; +// } +// log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟绗簩娆★細"+staProtocolEnd); +// } +// }catch (Exception e){ +// +// } + }*/ + boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo()); + if (!rgvComplete){ + log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); + break; + } + wrkMastSta.setWrkSts(3); + wrkMastStaMapper.updateById(wrkMastSta); + BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); + basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); + rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute()); + }else if (rgvProtocol.getTaskNo2()!=0 && (rgvProtocol.getStatusType2()==RgvStatusType.WAITING || rgvProtocol.getStatusType2()==RgvStatusType.FETCHWAITING)){ + if (rgvProtocol.getTaskNo2()==(short)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()); + break; + } + WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(rgvProtocol.getTaskNo2().longValue()); + if (Cools.isEmpty(wrkMastSta) || wrkMastSta.getType()!=2){ + log.error("鏈煡鍒板皬杞︽墽琛屼换鍔℃垨鑰呮墽琛屼换鍔$姸鎬佷笉绗﹀悎锛�"+wrkMastSta); + continue; + } + /*WrkMast wrkMast = wrkMastMapper.selectPakInStep3(wrkMastSta.getWrkNo().intValue()); + if (!Cools.isEmpty(wrkMast) && wrkMastSta.getWrkType()!=5){ + Thread.sleep(200); + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1); + StaProtocol staProtocol = devpThread.getStation().get(wrkMastSta.getStaEnd()); + if (!staProtocol.isAutoing() || !staProtocol.isLoading()){ + continue; + } + // 涓嬪彂绔欑偣淇℃伅 + staProtocol.setWorkNo(wrkMast.getWrkNo()); + staProtocol.setStaNo(wrkMast.getStaNo()); + if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocol))) { + continue; + } + log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟锛�"+staProtocol); +// try{ +// Thread.sleep(1000); +// DevpThread devpThreadEnd = (DevpThread) SlaveConnection.get(SlaveType.Devp, 1); +// StaProtocol staProtocolEnd = devpThreadEnd.getStation().get(wrkMastSta.getStaEnd()); +// log.error("灏忚溅浠诲姟瀹屾垚璇诲彇杈撻�佺嚎浠诲姟锛�"+staProtocolEnd); +// if (staProtocolEnd.getWorkNo()==0 ){ //|| !staProtocolEnd.getWorkNo().equals(wrkMast.getWrkNo()) +// staProtocolEnd.setWorkNo(wrkMast.getWrkNo()); +// staProtocolEnd.setStaNo(wrkMast.getStaNo()); +// if (!MessageQueue.offer(SlaveType.Devp, 1, new Task(2, staProtocolEnd))) { +// continue; +// } +// log.error("灏忚溅浠诲姟瀹屾垚涓嬪彂杈撻�佺嚎浠诲姟绗簩娆★細"+staProtocolEnd); +// } +// }catch (Exception e){ +// +// } + }*/ + boolean rgvComplete = rgvComplete(rgvProtocol.getRgvNo()); + if (!rgvComplete){ + log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{}锛�",rgvProtocol.getRgvNo()); + break; + } + wrkMastSta.setWrkSts(3); + wrkMastStaMapper.updateById(wrkMastSta); + BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); + basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); + rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute()); + }else { + log.error("灏忚溅澶嶄綅澶辫触锛屽皬杞﹀彿{},绛夊緟wcs纭浣嗘槸娌℃湁宸ヤ綔鍙凤紒",rgvProtocol.getRgvNo()); + } + } + } + }catch (Exception e){ + log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e); + } + } + /** + * 鍏ュ嚭搴� ===>> 灏忚溅浣滀笟涓嬪彂 + */ + public synchronized boolean rgvIoExecute(Integer sign) { + boolean rgvIoExecuteSign = false; + try{ + for (RgvSlave rgvSlave:slaveProperties.getRgv()) { + // 鑾峰彇灏忚溅淇℃伅 + boolean signWork = false; + 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灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId()); + continue; + } + + // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 + if (rgvProtocol.getStatusType() == RgvStatusType.IDLE + && rgvProtocol.getStatusType1() == RgvStatusType.IDLE + && rgvProtocol.getStatusType2() == RgvStatusType.IDLE + && rgvProtocol.getModeType() == RgvModeType.AUTO + && rgvProtocol.getLoaded1()==0 + && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0 + ) { + switch (sign){ + //鎵ц灏忚溅璐х墿鎼繍浠诲姟 + case 1: + signWork = rgvRunWrkMastFullSta(rgvSlave); + break; + //鎵ц灏忚溅绌烘澘鎼繍浠诲姟 + case 2://鏀�//鎷嗙洏 + signWork = rgvRunWrkMastEmptyStaPut(rgvSlave); + break; + case 3://婊℃斁 + signWork = rgvRunWrkMastEmptyStaPutFull(rgvSlave); + break; + case 4://鍙栧彔鐩� + signWork = rgvRunWrkMastEmptyStaTake(rgvSlave); + break; + case 6:////鎻愬崌 +// signWork = qwe(); + break; + default: + break; + } + for (int signCount = 1;!signWork && signCount<7;signCount++){ + switch (signCount){ + case 1://鎵ц灏忚溅璐х墿鎼繍浠诲姟 + signWork = rgvRunWrkMastFullSta(rgvSlave); + break; + case 2://鏀�//鎷嗙洏 + signWork = rgvRunWrkMastEmptyStaPut(rgvSlave); + break; + case 3://婊℃斁 + signWork = rgvRunWrkMastEmptyStaPutFull(rgvSlave); + break; + case 4://鍙栧彔鐩� + signWork = rgvRunWrkMastEmptyStaTake(rgvSlave); + break; + case 6:////鎻愬崌 +// signWork = rgvRunWrkMastEmptyStaPut(); + break; + default: + break; + } + } + }else { + continue; + } + if (!rgvIoExecuteSign){ + rgvIoExecuteSign = signWork; + } + } +// if (!rgvIoExecuteSign){ +// if (sign>6){ +// +// } +// } + }catch (Exception e){ + log.error("RGV灏忚溅浠诲姟涓嬪彂鎶ラ敊"+e); + } + return rgvIoExecuteSign; + } + + /** + * 鎵ц灏忚溅鎼繍浠诲姟 + */ + public synchronized boolean rgvRunWrkMastFullSta(RgvSlave rgvSlave) { + try{ +// for (RgvSlave rgvSlave:slaveProperties.getRgv()) { + RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (rgvProtocol == null) { + return false; + } + BasRgv basRgv = basRgvService.selectById(rgvSlave.getId()); + if (basRgv == null) { + log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId()); + return false; + } + + // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 + if (rgvProtocol.getStatusType() == RgvStatusType.IDLE + && rgvProtocol.getStatusType1() == RgvStatusType.IDLE + && rgvProtocol.getStatusType2() == RgvStatusType.IDLE + && rgvProtocol.getModeType() == RgvModeType.AUTO + && rgvProtocol.getLoaded1()==0 + && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0 + ) { + BasRgvMap basRgvMap = basRgvMapMapper.selectById(basRgv.getRgvNo()); + if (basRgvMap == null) { + log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo()); + return false; + } + 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()!=1 || wrkMastSta.getWrkType()!=3){//1:婊$増 3锛氬彇鏀� + continue; + } + BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaEnd()); + if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y") || basDevp.getWrkNo()!=0){ + continue; + } + Date date = new Date(); + + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo()); + if (staProtocol == null) { + log.info(date+"鍙栨斁浠诲姟涓嬪彂锛氭湭鏌ヨ鍒扮珯鐐逛俊鎭細"+wrkMastSta); + continue; + } + if (!staProtocol.isAutoing() || staProtocol.isLoading() || staProtocol.getWorkNo() != 0){ + continue; + } + if (basDevp.getDevNo()>117 && basDevp.getDevNo()<124){ + if (staProtocol.isLoadingSuper()){ + continue; + } + } + if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){ + if (!staProtocol.isEmptyMk()){ + continue; + } + } + BasDevp basDevpS = basDevpService.selectById(wrkMastSta.getStaStart()); + if (!basDevpS.getAutoing().equals("Y") || !basDevpS.getLoading().equals("Y") || basDevpS.getWrkNo()!=wrkMastSta.getWrkNo().intValue()){ + continue; + } + StaProtocol staProtocols = devpThread.getStation().get(basDevpS.getDevNo()); + if (staProtocols == null) { + log.info(date+"鍙栨斁浠诲姟涓嬪彂锛氭湭鏌ヨ鍒扮珯鐐逛俊鎭細"+wrkMastSta); + continue; + } + if (!staProtocols.isAutoing() || !staProtocols.isLoading() || staProtocols.getWorkNo() != wrkMastSta.getWrkNo().intValue()){ + continue; + } + + + log.info(date+"鍙栨斁浠诲姟涓嬪彂锛氬皬杞﹀伐浣滄。锛�"+wrkMastSta); + log.info(date+"鍙栨斁浠诲姟涓嬪彂锛氱洰鏍囩珯鐘舵�侊細"+basDevp); + boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); + if (sign){ + boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd()); + if (signMap){ + wrkMastSta.setWrkSts(1); + try{ + wrkMastStaMapper.updateById(wrkMastSta); + }catch (Exception e){ + log.error("鏇存柊灏忚溅浠诲姟澶辫触"); + } + return true; + }else { + log.error("3864琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); + } + }else { + log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); + } + break; + } + } +// } + }catch (Exception e){ + log.error("3875琛屾墽琛屽皬杞︽惉杩愪换鍔′笅鍙戝け璐�"); + log.error("3875琛�"+e); + } + return false; + } + /** + * 鎵ц灏忚溅鎼繍浠诲姟//鎷嗙洏 + */ + public synchronized boolean rgvRunWrkMastEmptyStaPut(RgvSlave rgvSlave) {//鎷嗙洏 + try{ +// for (RgvSlave rgvSlave:slaveProperties.getRgv()) { + RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (rgvProtocol == null) { + return false; + } + BasRgv basRgv = basRgvService.selectById(rgvSlave.getId()); + if (basRgv == null) { + log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId()); + return false; + } + + // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾湁鐗�//rgv鍙敤//鎷嗙洏 + if (rgvProtocol.getStatusType() == RgvStatusType.IDLE + && rgvProtocol.getStatusType1() == RgvStatusType.IDLE + && rgvProtocol.getStatusType2() == RgvStatusType.IDLE + && rgvProtocol.getModeType() == RgvModeType.AUTO + && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0 + && (rgvProtocol.getLoaded2()==3 || rgvProtocol.getLoaded2()==1 || rgvProtocol.getLoaded2()==4)////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗� 锛堝彧鑳芥媶鍙狅級 锛�2涓�灞傛湁鐗╀簩灞傛棤鐗�() 锛�3 1銆�2灞傞兘鏈夌墿 4锛氾紙锛夊彧鍏佽鎷嗙洏 + ) { + BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); + if (basRgvMap == null) { + log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo()); + return false; + } + 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){// 2:绌烘澘 || 宸ヤ綔绫诲瀷 1:鍙栵紙鍙犵洏锛� 2锛氭媶鐩� 5锛氭弧鍙� 6锛氭弧鏀� + continue; + } + boolean sign = false; + if ( wrkMastSta.getStaEnd()!=0){//鏀� + BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaEnd()); + if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y") || basDevp.getWrkNo()!=0){ + continue; + } + Date date = new Date(); + + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo()); + if (staProtocol == null) { + log.info(date+"鎷嗙洏浠诲姟涓嬪彂锛氭湭鏌ヨ鍒扮珯鐐逛俊鎭細"+wrkMastSta); + continue; + } + if (!staProtocol.isAutoing() || staProtocol.isLoading() || staProtocol.getWorkNo() != 0){ + continue; + } + if (basDevp.getDevNo()>117 && basDevp.getDevNo()<124){ + if (staProtocol.isLoadingSuper()){ + continue; + } + } + if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){ + if (!staProtocol.isEmptyMk()){ + continue; + } + } + + log.info(date+"鎷嗙洏浠诲姟涓嬪彂锛氬皬杞﹀伐浣滄。锛�"+wrkMastSta); + log.info(date+"鎷嗙洏浠诲姟涓嬪彂锛氱洰鏍囩珯鐘舵�侊細"+basDevp); + 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 true; + }else { + log.error("3857琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); + } + }else { + log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); + } + break; + } + } +// } + }catch (Exception e){ + log.error("3933琛屾墽琛屽皬杞︽斁绌烘澘浠诲姟涓嬪彂澶辫触"); + log.error("3933琛�"+e); + } + return false; + } + + /** + * 鎵ц灏忚溅鎼繍浠诲姟 + */ + public synchronized boolean rgvRunWrkMastEmptyStaPutFull(RgvSlave rgvSlave) {//婊℃斁 + try{ +// for (RgvSlave rgvSlave:slaveProperties.getRgv()) { + RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (rgvProtocol == null) { + return false; + } + BasRgv basRgv = basRgvService.selectById(rgvSlave.getId()); + if (basRgv == null) { + log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId()); + return false; + } + + // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾湁鐗�//rgv鍙敤 + if (rgvProtocol.getStatusType() == RgvStatusType.IDLE + && rgvProtocol.getStatusType1() == RgvStatusType.IDLE + && rgvProtocol.getStatusType2() == RgvStatusType.IDLE + && rgvProtocol.getModeType() == RgvModeType.AUTO + && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0 + && (rgvProtocol.getLoaded2()==2 || rgvProtocol.getLoaded2()==3 ) ////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗� 锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛堝彧鑳芥弧鏀撅級锛�3 1銆�2灞傞兘鏈夌墿 4锛氾紙锛夊彧鍏佽鎷嗙洏 + ) { + BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); + if (basRgvMap == null) { + log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo()); + return false; + } + 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()!=6){// 2:绌烘澘 || 宸ヤ綔绫诲瀷 1:鍙栵紙鍙犵洏锛� 2锛氭媶鐩� 5锛氭弧鍙� 6锛氭弧鏀� 7:鎻愬崌 + continue; + } + boolean sign = false; + if ( wrkMastSta.getStaEnd()!=0){//婊℃斁 + BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaEnd()); + if (!basDevp.getAutoing().equals("Y") || basDevp.getLoading().equals("Y") || basDevp.getWrkNo()!=0){ + continue; + } + Date date = new Date(); + + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo()); + if (staProtocol == null) { + log.info(date+"婊℃斁浠诲姟涓嬪彂锛氭湭鏌ヨ鍒扮珯鐐逛俊鎭細"+wrkMastSta); + continue; + } + if (!staProtocol.isAutoing() || staProtocol.isLoading() || staProtocol.getWorkNo() != 0){ + continue; + } + if (basDevp.getDevNo()>117 && basDevp.getDevNo()<124){ + if (staProtocol.isLoadingSuper()){ + continue; + } + } + if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){ + if (!staProtocol.isEmptyMk()){ + continue; + } + } + + log.info(date+"婊℃斁浠诲姟涓嬪彂锛氬皬杞﹀伐浣滄。锛�"+wrkMastSta); + log.info(date+"婊℃斁浠诲姟涓嬪彂锛氱洰鏍囩珯鐘舵�侊細"+basDevp); + sign = rgvPutEmptyFull(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 true; + }else { + log.error("3857琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); + } + }else { + log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); + } + break; + } + } +// } + }catch (Exception e){ + log.error("3933琛屾墽琛屽皬杞︽斁绌烘澘浠诲姟涓嬪彂澶辫触"); + log.error("3933琛�"+e); + } + return false; + } + + public synchronized boolean rgvRunWrkMastEmptyStaTake(RgvSlave rgvSlave) {//鍙犵洏 + try{ +// for (RgvSlave rgvSlave:slaveProperties.getRgv()) { + RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (rgvProtocol == null) { + return false; + } + BasRgv basRgv = basRgvService.selectById(rgvSlave.getId()); + if (basRgv == null) { + log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId()); + return false; + } + + // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅浜屾棤鐗�//rgv鍙敤 + if (rgvProtocol.getStatusType() == RgvStatusType.IDLE + && rgvProtocol.getStatusType1() == RgvStatusType.IDLE + && rgvProtocol.getStatusType2() == RgvStatusType.IDLE + && rgvProtocol.getModeType() == RgvModeType.AUTO + && rgvProtocol.getTaskNo1()==0 && rgvProtocol.getTaskNo2()==0 + && (rgvProtocol.getLoaded2()==0 || rgvProtocol.getLoaded2()==1 ) //鐜板満淇敼锛氬彔鐩樻満锛�////0 鏃犵墿锛�1 涓�灞傛棤鐗╀簩灞傛湁鐗╋紙鍙兘鎷嗗彔锛� 锛�2涓�灞傛湁鐗╀簩灞傛棤鐗� 锛堝彧鑳芥弧鏀撅級锛�3 1銆�2灞傞兘鏈夌墿 4锛氾紙锛夊彧鍏佽鎷嗙洏 + ) { + BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); + if (basRgvMap == null) { + log.error("{}鍙稲GV灏氭湭鍦ㄦ暟鎹簱鍦板浘涓繘琛岀淮鎶わ紒", rgvProtocol.getRgvNo()); + return false; + } + 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:鍙栵紙鍙犵洏锛� 2锛氭媶鐩� 5锛氭弧鍙� 6锛氭弧鏀� + continue; + } + boolean sign = false; + if ( wrkMastSta.getStaStart()!=0){//鍙� + BasDevp basDevp = basDevpService.selectById(wrkMastSta.getStaStart()); + if (!basDevp.getAutoing().equals("Y") || !basDevp.getLoading().equals("Y")){ + continue; + } + Date date = new Date(); + + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, rgvSlave.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(basDevp.getDevNo()); + if (staProtocol == null) { + log.info(date+"鍙犵洏浠诲姟涓嬪彂锛氭湭鏌ヨ鍒扮珯鐐逛俊鎭細"+wrkMastSta); + continue; + } + if (!staProtocol.isAutoing() || !staProtocol.isLoading()){ + continue; + } + if (basDevp.getDevNo()>=118 && basDevp.getDevNo()<=123){ + if (!staProtocol.isEmptyMk()){ + continue; + } + } + + log.info(date+"鍙犵洏浠诲姟涓嬪彂锛氬皬杞﹀伐浣滄。锛�"+wrkMastSta); + log.info(date+"鍙犵洏浠诲姟涓嬪彂锛氱洰鏍囩珯鐘舵�侊細"+basDevp); + 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 true; + }else { + log.error("3879琛岋紝璐х墿鎼繍浠诲姟锛氬伐浣滃彿{}鎵�灞炰换鍔′笅鍙戝悗鍦板浘鍚屾澶辫触",wrkMastSta.getWrkNo()); + } + }else { + log.error("宸ヤ綔鍙穥}鎵�灞炰换鍔′笅鍙戝け璐�",wrkMastSta.getWrkNo()); + } + break; + } + } +// } + }catch (Exception e){ + log.error("3989琛屾墽琛屽皬杞﹀彇绌烘澘浠诲姟涓嬪彂澶辫触"); + log.error("3989琛�"+e); + } + return false; + } + + /* + * 鏈変换鍔′絾鏈墽琛� 姝ゆ椂闇�瑕佽皟鏁村皬杞︿綅缃� + * */ + public synchronized void rgvRunWrkMastEmptyStaAvoidance() { + try{ +// Integer integer = wrkMastStaMapper.selectAllWrkStsCount(null,0);//鏌ヨ鐘舵�佷负0鐨勪换鍔� +// if (integer==0){ +// return; +// } + WrkMastSta wrkMastSta = wrkMastStaMapper.selectAllWrkStsCountWrkMastSta(null, 0); + if (Cools.isEmpty(wrkMastSta)){ + return; + } + boolean signRgv = true; + boolean signRgv1 = true; + boolean signRgv2 = true; + 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灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId()); + continue; + } + + // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 + if (rgvProtocol.getStatusType() == RgvStatusType.IDLE + && rgvProtocol.getModeType() == RgvModeType.AUTO + && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 + && rgvProtocol.getTaskNo1()==0 + && rgvProtocol.getTaskNo2()==0 + && rgvProtocol.getStatusType1() == RgvStatusType.IDLE + && rgvProtocol.getStatusType2() == RgvStatusType.IDLE + ) { + if (rgvProtocol.getRgvNo()!=1){ + if (!rgvProtocol.getRgvPosI().equals(120) && !rgvProtocol.getRgvPosI().equals(110)){ + continue; + } + rgvAvoidanceXY(rgvProtocol.getRgvNo()); +// return; + continue; + } + if (!rgvProtocol.getRgvPosI().equals(110) && !rgvProtocol.getRgvPosI().equals(108) && !rgvProtocol.getRgvPosI().equals(119)){ + continue; + } + Integer count108Y = wrkMastStaMapper.selectAllWrkCount108Y(); + if (count108Y!=0){ + continue; + } +// Integer count108 = wrkMastStaMapper.selectAllWrkCount108(); +// if (count108!=0){ +// continue; +// } + rgvAvoidanceXY(rgvProtocol.getRgvNo()); + continue; +// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); +// Integer fallMerge = RouteUtils.RouteIndexFarMas(basRgvMap.getRgvNo(), basRgvMap.getEndRoute()); //鑾峰彇鍚堝苟骞叉秹椤� +// List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(),fallMerge); +// List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route ,route); +// if (!wrkMastStaList.isEmpty()){ +// log.info("灏忚溅瀛樺湪鍙墽琛屼换鍔★紝璺宠繃閬胯锛侊紒4214"); +// return; +// } +// if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){ +//// if (!RouteUtils.RgvRunStaSign(rgvProtocol.getRgvPosI(),RouteUtils.RouteIndexFarMas(rgvProtocol.getRgvNo(),rgvRunSta[rgvProtocol.getRgvNo()-1]),rgvProtocol.getRgvNo())){ +//// if (!RouteUtils.RgvRunStaSign(rgvProtocol.getRgvPosI(),rgvRunSta[rgvProtocol.getRgvNo()-1],rgvProtocol.getRgvNo())){ +// if (rgvProtocol.getRgvNo()==1){ +// signRgv1 = false; +// }else { +// signRgv2 = false; +// } +// } +// if (rgvProtocol.getRgvNo()==1 && (rgvProtocol.getRgvPosI().equals(101) || rgvProtocol.getRgvPosI().equals(102) )){ +// signRgv1 = false; +// continue; +// } else if (rgvProtocol.getRgvNo()==2 && (rgvProtocol.getRgvPosI().equals(116) || rgvProtocol.getRgvPosI().equals(117) ) ){ +// signRgv2 = false; +// continue; +// } + }else { + signRgv = false; + break; + } + } +// if (signRgv && (signRgv1 || signRgv2)){ +// for (RgvSlave rgvSlave:slaveProperties.getRgv()) { +// RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); +// RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); +// if (rgvProtocol == null) { +// continue; +// } +// +// // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 +// if (rgvProtocol.getStatusType() == RgvStatusType.IDLE +// && rgvProtocol.getModeType() == RgvModeType.AUTO +// && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 +// && rgvProtocol.getTaskNo1()==0 +// && rgvProtocol.getTaskNo2()==0 +// && rgvProtocol.getStatusType1() == RgvStatusType.IDLE +// && rgvProtocol.getStatusType2() == RgvStatusType.IDLE +// ) { +// if (rgvProtocol.getRgvNo()==1 && (rgvProtocol.getRgvPosI().equals(101) || rgvProtocol.getRgvPosI().equals(102) )){ +// continue; +// } else if (rgvProtocol.getRgvNo()==2 && (rgvProtocol.getRgvPosI().equals(116) || rgvProtocol.getRgvPosI().equals(117) ) ){ +// continue; +// } +// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); +// rgvAvoidanceXY(rgvProtocol.getRgvNo()); +// rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute()); +// +// } +// } +// } + }catch (Exception e){ + log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触"); + log.error("4109琛�"+e); + } + } + + /* + * 鍒锋柊鍦板浘鏁版嵁 + * */ + public synchronized void refreshRgvMap() { + 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灏氭湭鍦ㄦ暟鎹簱杩涜缁存姢锛�", rgvSlave.getId()); + continue; + } + + // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�,宸ヤ綅涓�鏃犵墿//rgv鍙敤 + if (rgvProtocol.getStatusType() == RgvStatusType.IDLE + && rgvProtocol.getModeType() == RgvModeType.AUTO + && rgvProtocol.getLoaded1()==0 //鐜板満淇敼锛氬彔鐩樻満锛屼笉婊¢兘绠楁棤鐗╋紝鎬庝箞鍒ゆ柇闇�瑕佽窡鐢垫帶瀵规帴 + && rgvProtocol.getTaskNo1()==0 + && rgvProtocol.getTaskNo2()==0 + ) { + BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvSlave.getId()); + basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); + rgvMapUpdate(basRgvMap,basRgvMap.getStartRoute(),basRgvMap.getStartRoute()); + } + } + }catch (Exception e){ + log.error("4109琛屾墽琛屽皬杞﹀垵濮嬪寲浠诲姟涓嬪彂澶辫触"); + log.error("4109琛�"+e); + } + } + + /* + * 灏忚溅XY绉诲姩 閬胯 + * */ + public synchronized boolean rgvAvoidanceXY(Integer rgvId){ + if (rgvId==1){ + try{ + BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvId); + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + 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( (short)104); + 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{ + BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvId); + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + RgvCommand rgvCommand = new RgvCommand(); + rgvCommand.setRgvNo(rgvId); // RGV缂栧彿 + rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� + rgvCommand.setTaskNo2((short)32222); // 宸ヤ綅2宸ヤ綔鍙� + rgvCommand.setTaskMode2(RgvTaskModeType.X_MOVE); // 宸ヤ綅2浠诲姟妯″紡: 鍥炲師鐐� + rgvCommand.setSourceStaNo2((short)114); + rgvCommand.setCommand((short) 2); //宸ヤ綅2浠诲姟纭 + if (!MessageQueue.offer(SlaveType.Rgv, rgvId, new Task(5, 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.Rgv, 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.Rgv, 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 rgvTakeEmptyFull(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_5); // 宸ヤ綅2浠诲姟妯″紡: 婊″彇 + rgvCommand.setSourceStaNo2(wrkMastSta.getStaStart().shortValue()); //宸ヤ綅2璧风偣 + rgvCommand.setCommand((short) 2); //宸ヤ綅2浠诲姟纭 + if (!MessageQueue.offer(SlaveType.Rgv, 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 rgvPutEmptyFull(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_6); // 宸ヤ綅2浠诲姟妯″紡: 婊℃斁 + rgvCommand.setDestinationStaNo2(wrkMastSta.getStaEnd().shortValue()); //宸ヤ綅2鐩爣绔欑偣 + rgvCommand.setCommand((short) 2); //宸ヤ綅2浠诲姟纭 + if (!MessageQueue.offer(SlaveType.Rgv, 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; + } + }catch (Exception e){ + log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}銆傚紓甯革細"+e,rgvId); + return false; + } + } + + /* + * 灏忚溅鍦板浘鏇存柊 鏇存柊閿� + * */ + public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd){ + if (rgvOpen){ + return true; + } + +// List<Integer> integers = RouteUtils.RouteMapCurrentFar(basRgvMapCurrent.getNowRoute(),staStart,staEnd, basRgvMapCurrent.getLockStartRoute()); + //鏇存柊褰撳墠灏忚溅閿� + try{ + Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getNowRoute(), staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//鑾峰彇鏈�杩滅珯鐐� +// Integer farCurrentStaNo = RouteUtils.RouteIndexFarMas(staEnd, staStart, staEnd, basRgvMapCurrent.getLockStartRoute());//鑾峰彇鏈�杩滅珯鐐� + Integer fallMerge = RouteUtils.RouteIndexFarMas(basRgvMapCurrent.getRgvNo(), farCurrentStaNo); //鑾峰彇鍚堝苟骞叉秹椤� + basRgvMapCurrent.setLockEndRoute(fallMerge); + basRgvMapMapper.updateById(basRgvMapCurrent); + + //鏇存柊鍙︿竴鍙板皬杞﹀湴鍥� + Integer rgvNoOther = basRgvMapCurrent.getRgvNoOther(); + BasRgvMap basRgvMapOther = basRgvMapMapper.selectById(rgvNoOther); + List<Integer> integers = RouteUtils.RouteMapCurrentFar(fallMerge, basRgvMapCurrent.getLockStartRoute()); + Integer lockEndRoute = RouteUtils.RouteMapOtherFarStnNo(integers, basRgvMapCurrent.getLockStartRoute());//鍙︿竴鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃� + Integer lockEndRouteL = RouteUtils.RouteIndexFarMasL(rgvNoOther, lockEndRoute);//鍙︿竴鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃� + basRgvMapOther.setEndRoute(lockEndRouteL); + basRgvMapMapper.updateById(basRgvMapOther); + return true; + }catch (Exception e){ + log.error("灏忚溅鍦板浘鏇存柊鍑洪敊锛�"); + return false; + } + } } -- Gitblit v1.9.1