|  |  |  | 
|---|
|  |  |  | 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()); | 
|---|
|  |  |  | 
|---|
|  |  |  | if (barcodeThread == null) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (barcodeThreadMat == null) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String barcode = barcodeThread.getBarcode(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String barcodeMat = barcodeThreadMat.getBarcode(); | 
|---|
|  |  |  | // 尺寸检测异常 | 
|---|
|  |  |  | boolean back = false; | 
|---|
|  |  |  | String errMsg = ""; | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (!back && staProtocol.isBarcodeErr()) { | 
|---|
|  |  |  | errMsg = "扫码失败"; | 
|---|
|  |  |  | back = true; | 
|---|
|  |  |  | log.error("物料码扫码失败"); | 
|---|
|  |  |  | //                    back = true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 退回 | 
|---|
|  |  |  | if (back) { | 
|---|
|  |  |  | 
|---|
|  |  |  | log.error("输送线下发1:"+wrkNo+","+inSta.getBackSta()); | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(Cools.isEmpty(barcodeMat) || "NG".endsWith(barcodeMat) || "NoRead".equals(barcodeMat) || "00000000".equals(barcodeMat)) { | 
|---|
|  |  |  | News.info("{}号条码扫描器检测条码信息:{}", inSta.getBarcodeMat(), barcodeMat); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | staProtocol.setWorkNo(wrkNo); | 
|---|
|  |  |  | News.info("{}入库回退:{},任务号:{}", inSta.getStaNo(), errMsg,wrkNo); | 
|---|
|  |  |  | wrkNo++; | 
|---|
|  |  |  | staProtocol.setStaNo(inSta.getBackSta().shortValue()); | 
|---|
|  |  |  | devpThread.setPakMk(staProtocol.getSiteId(), false); | 
|---|
|  |  |  | MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); | 
|---|
|  |  |  | log.error("输送线下发1:"+wrkNo+","+inSta.getBackSta()); | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 判断重复工作档 | 
|---|
|  |  |  | WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode); | 
|---|
|  |  |  | if (wrkMast != null) { | 
|---|
|  |  |  | News.error(barcode + "条码已存在状态为( 2.设备上走 )的数据,工作号={}", wrkMast.getWrkNo()); | 
|---|
|  |  |  | if (ledThread != null) { | 
|---|
|  |  |  | News.error(methodName + ":扫码失败,请重试"); | 
|---|
|  |  |  | MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, barcode + "条码已存在状态为( 2.设备上走 )的任务,工作号="+ wrkMast.getWrkNo())); | 
|---|
|  |  |  | int wrkNo1 = basDevpService.selectCount(new EntityWrapper<BasDevp>().eq("wrk_no", wrkMast.getWrkNo())); | 
|---|
|  |  |  | if (wrkNo1 != 0){ | 
|---|
|  |  |  | News.error(barcode + "条码已存在状态为( 2.设备上走 )的数据,请查看WCS输送线界面,工作号={}", wrkMast.getWrkNo()); | 
|---|
|  |  |  | if (ledThread != null) { | 
|---|
|  |  |  | News.error(methodName + ":扫码失败,请重试"); | 
|---|
|  |  |  | MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, barcode + "条码已存在状态为( 2.设备上走 )的任务,工作号="+ wrkMast.getWrkNo())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | barcodeThread.setBarcode(""); | 
|---|
|  |  |  | staProtocol.setWorkNo(wrkMast.getWrkNo()); | 
|---|
|  |  |  | staProtocol.setStaNo(RouteUtils.SouStaEnd(null,wrkMast.getSourceStaNo())); | 
|---|
|  |  |  | devpThread.setPakMk(staProtocol.getSiteId(), false); | 
|---|
|  |  |  | boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); | 
|---|
|  |  |  | log.info("输送线下发(存在设备上走的工作档,直接下发!)):"+wrkMast.getWrkNo()+","+wrkMast.getStaNo()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ledThread.errorReset(); | 
|---|
|  |  |  | log.info("组托请求后LED错误清除"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!result) { | 
|---|
|  |  |  | News.error(methodName + ":更新plc站点信息失败"); | 
|---|
|  |  |  | log.error("输送线下发(存在设备上走的工作档,直接下发!)==>更新plc站点信息失败"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //                            throw new CoolException("更新plc站点信息失败"); | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | WrkMast checkPick = wrkMastService.selectOne(new EntityWrapper<WrkMast>() | 
|---|
|  |  |  | .eq("barcode", barcode) | 
|---|
|  |  |  | 
|---|
|  |  |  | devpThread.setPakMk(staProtocol.getSiteId(), false); | 
|---|
|  |  |  | boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); | 
|---|
|  |  |  | log.error("输送线下发2:"+dto.getWorkNo()+","+dto.getStaNo()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ledThread.errorReset(); | 
|---|
|  |  |  | log.error("组托请求后LED错误清除"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!result) { | 
|---|
|  |  |  | News.error(methodName + ":更新plc站点信息失败"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | throw new CoolException("更新plc站点信息失败"); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | ledThread.errorReset(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else if (jsonObject.getInteger("code").equals(700)) { | 
|---|
|  |  |  | SearchLocParam param2 = new SearchLocParam(); | 
|---|
|  |  |  | param2.setBarcode(barcode); | 
|---|
|  |  |  | param2.setBarcodeMat(barcodeMat); | 
|---|
|  |  |  | param2.setSourceStaNo(inSta.getStaNo()); | 
|---|
|  |  |  | param2.setLocType1(locTypeDto.getLocType1()); | 
|---|
|  |  |  | String response2 = new HttpHandler.Builder() | 
|---|
|  |  |  | .setUri(wmsUrl) | 
|---|
|  |  |  | .setPath("/rpc/pakin/yk/loc/v33") | 
|---|
|  |  |  | .setJson(JSON.toJSONString(param2)) | 
|---|
|  |  |  | .build() | 
|---|
|  |  |  | .doPost(); | 
|---|
|  |  |  | JSONObject jsonObject2 = JSON.parseObject(response2); | 
|---|
|  |  |  | if (jsonObject2.getInteger("code").equals(200)) { | 
|---|
|  |  |  | log.info("自动组托成功!!"); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, "自动组托失败!!!barcodeMat==>"+barcodeMat)); | 
|---|
|  |  |  | News.error(methodName + "==>组托失败:请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/rpc/pakin/yk/loc/v33", JSON.toJSONString(param), response); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | try{ | 
|---|
|  |  |  | Thread.sleep(500); | 
|---|
|  |  |  | } catch (Exception e){ | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | staProtocol.setWorkNo(wrkNo); | 
|---|
|  |  |  | 
|---|
|  |  |  | staProtocol.setWorkNo(wrkMast.getWrkNo()); | 
|---|
|  |  |  | staProtocol.setStaNo((short)161); | 
|---|
|  |  |  | devpThread.setPakMk(staProtocol.getSiteId(), false); | 
|---|
|  |  |  | ledThread.errorReset(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); | 
|---|
|  |  |  | if (!result) { | 
|---|
|  |  |  | log.error("发布命令至输送线队列失败!!! [plc编号:{}]", devp.getId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | log.info("任务号"+wrkMast.getWrkNo()+"盘点再入库任务下发成功===>>" + staProtocol); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ledThread.errorReset(); | 
|---|
|  |  |  | log.error("盘点后led错误删除"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | log.error("盘点再入库失败===>>" + e); | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | 
|---|
|  |  |  | if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(wrkMast.getWrkNo().shortValue()) | 
|---|
|  |  |  | && crnProtocol.statusType == CrnStatusType.WAITING | 
|---|
|  |  |  | && crnProtocol.forkPosType == CrnForkPosType.HOME) { | 
|---|
|  |  |  | News.error("堆垛机出库完成 - 开始执行"); | 
|---|
|  |  |  | log.info("堆垛机出库完成 - 开始执行"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 命令下发区 -------------------------------------------------------------------------- | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | staProtocol.setWorkNo(wrkMast.getWrkNo()); | 
|---|
|  |  |  | staProtocol.setStaNo(RouteUtils.CrnStaEnd(wrkMast.getStaNo(),wrkMast.getSourceStaNo())); | 
|---|
|  |  |  | if (!MessageQueue.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) { | 
|---|
|  |  |  | log.info(staProtocol.getWorkNo()+","+staProtocol.getStaNo()+"输送线出库命令下发失败"); | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | log.info(staProtocol.getWorkNo()+","+staProtocol.getStaNo()+"输送线出库命令下发成功"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 更新工作档状态为14失败 | 
|---|
|  |  |  | 
|---|
|  |  |  | wrkMast.setCrnEndTime(new Date()); | 
|---|
|  |  |  | if (wrkMastMapper.updateById(wrkMast) != 0) { | 
|---|
|  |  |  | // 复位堆垛机 | 
|---|
|  |  |  | News.error("出库任务完成下发堆垛机复位", wrkMast.getWrkNo()); | 
|---|
|  |  |  | log.error("出库任务完成下发堆垛机复位,{}", wrkMast.getWrkNo()); | 
|---|
|  |  |  | crnThread.setResetFlag(true); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | News.error(""+mark+" - 1"+" - 更新工作档的工作状态为14失败!!! [工作号:{}]", wrkMast.getWrkNo()); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //  状态:等待确认 并且  任务完成位 = 1 | 
|---|
|  |  |  | if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) { | 
|---|
|  |  |  | News.warnNoLog(""+mark+" - 0"+" - 开始执行对工作档的完成操作"); | 
|---|
|  |  |  | if (crnProtocol.getTaskNo() == 9999) { | 
|---|
|  |  |  | // 堆垛机复位 | 
|---|
|  |  |  | crnThread.setResetFlag(true); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | News.warnNoLog(""+mark+" - 0"+" - 开始执行对工作档的完成操作,任务号:"+crnProtocol.getTaskNo()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 获取入库待确认工作档 | 
|---|
|  |  |  | WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue()); | 
|---|
|  |  |  | if (wrkMast == null) { | 
|---|
|  |  |  | 
|---|
|  |  |  | // 修改成功后复位堆垛机 | 
|---|
|  |  |  | if (wrkMastMapper.updateById(wrkMast) > 0) { | 
|---|
|  |  |  | // 堆垛机复位 | 
|---|
|  |  |  | log.error(wrkMast.getWrkNo()+"任务修改状态4成功,复位堆垛机={}",crnThread.getCrnProtocol().getCrnNo()); | 
|---|
|  |  |  | News.warnNoLog(""+mark+" - 2"+" - 修改成功后复位堆垛机 : 堆垛机号={}",crnThread.getCrnProtocol().getCrnNo()); | 
|---|
|  |  |  | crnThread.setResetFlag(true); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //        News.infoNoLog(""+mark+" - 0"+" - 对工作档的完成操作执行完成"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | // 命令下发 ------------------------------------------------------------------------------- | 
|---|
|  |  |  | if (!commands.isEmpty()) { | 
|---|
|  |  |  | if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(1, commands))) { | 
|---|
|  |  |  | News.error("{}号LED命令下发失败!!![ip:{}] [port:{}]", led.getId(), led.getIp(), led.getPort()); | 
|---|
|  |  |  | News.error("{}号LED显示内容命令下发失败!!![ip:{}] [port:{}]", led.getId(), led.getIp(), led.getPort()); | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | // 获取叉车站点 | 
|---|
|  |  |  | StaProtocol staProtocol = devpThread.getStation().get(staNo); | 
|---|
|  |  |  | if (staProtocol == null) { continue; } | 
|---|
|  |  |  | if (staProtocol.getWorkNo() != 0) { | 
|---|
|  |  |  | if (staProtocol.getWorkNo() != 0 || staProtocol.isErr()) { | 
|---|
|  |  |  | reset = false; | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 获取led线程 | 
|---|
|  |  |  | LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getDevpPlcId()); | 
|---|
|  |  |  | LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, led.getId()); | 
|---|
|  |  |  | // led显示默认内容 | 
|---|
|  |  |  | if (reset) { | 
|---|
|  |  |  | if (ledThread == null) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ledThread.errorReset(); | 
|---|
|  |  |  | if (!MessageQueue.offer(SlaveType.Led, led.getId(), new Task(2, new ArrayList<>()))) { | 
|---|
|  |  |  | News.error("{}号LED命令下发失败!!![ip:{}] [port:{}]", led.getId(), led.getIp(), led.getPort()); | 
|---|
|  |  |  | News.error("{}号LED显示默认命令下发失败!!![ip:{}] [port:{}]", led.getId(), led.getIp(), led.getPort()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | * 小车地图更新  更新锁 | 
|---|
|  |  |  | * */ | 
|---|
|  |  |  | 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)); | 
|---|
|  |  |  | //                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)); | 
|---|
|  |  |  | //                log.error("{}:==>{}:{}号车更新结束位置,{}",sign,new Date(),basRgvMapOther.getRgvNo(),JSON.toJSONString(basRgvMapOther)); | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | return true; | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | log.error("小车地图更新出错!"); | 
|---|
|  |  |  | log.error("小车地图更新出错!异常原因:"+e); | 
|---|
|  |  |  | return false; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | WrkMast wrkMast1 = wrkMastService.selectByWrkNo(rgvProtocol.getTaskNo1().intValue()); | 
|---|
|  |  |  | wrkMast1.setUpdMk("Y"); | 
|---|
|  |  |  | wrkMast1.setPdcType("Y"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | wrkMastService.updateById(wrkMast1); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 执行小车搬运任务 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public synchronized void rgvRunWrkMastFullSta() { | 
|---|
|  |  |  | public synchronized boolean rgvRunWrkMastFullSta() { | 
|---|
|  |  |  | boolean wrkEnable = false; | 
|---|
|  |  |  | try{ | 
|---|
|  |  |  | List<BasRgvMap> basRgvMaps = basRgvMapService.selectList(new EntityWrapper<>()); | 
|---|
|  |  |  | 
|---|
|  |  |  | && rgvProtocol.getModeType() == RgvModeType.AUTO | 
|---|
|  |  |  | && rgvProtocol.getLoaded1()==0 | 
|---|
|  |  |  | && rgvProtocol.getTaskNo1() == 0 | 
|---|
|  |  |  | && rgvThread.isPakMk() | 
|---|
|  |  |  | ) { | 
|---|
|  |  |  | BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); | 
|---|
|  |  |  | if (basRgvMap == null) { | 
|---|
|  |  |  | 
|---|
|  |  |  | basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //更新小车当前位置站点号 | 
|---|
|  |  |  | List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route); | 
|---|
|  |  |  | for (WrkMastSta wrkMastSta : wrkMastStaList){ | 
|---|
|  |  |  | if (wrkMastSta.getType()!=0 || wrkMastSta.getWrkType()!=3){//1:满版   3:取放 | 
|---|
|  |  |  | 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){ | 
|---|
|  |  |  | Thread.sleep(300); | 
|---|
|  |  |  | wrkMastSta.setWrkSts(1); | 
|---|
|  |  |  | try{ | 
|---|
|  |  |  | wrkMastStaMapper.updateById(wrkMastSta); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | log.error("更新小车任务失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | return wrkEnable; | 
|---|
|  |  |  | //                                break; | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | log.error("3864行,货物搬运任务:工作号{}所属任务下发后地图同步失败",wrkMastSta.getWrkNo()); | 
|---|
|  |  |  | Thread.sleep(500); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | log.error("工作号{}所属任务下发失败",wrkMastSta.getWrkNo()); | 
|---|
|  |  |  | Thread.sleep(500); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (!wrkEnable){ | 
|---|
|  |  |  | rgvRunWrkMastEmptyStaAvoidance(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //            if (!wrkEnable){ | 
|---|
|  |  |  | //                rgvRunWrkMastEmptyStaAvoidance(); | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | log.error("3875行执行小车搬运任务下发失败"); | 
|---|
|  |  |  | log.error("3875行"+e); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return wrkEnable; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 执行小车搬运任务 | 
|---|
|  |  |  | 
|---|
|  |  |  | && 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; | 
|---|