| | |
| | | staProtocolNew.setWorkNo(wrkMast.getWrkNo()); |
| | | staProtocolNew.setStaNo(RouteUtils.SouStaEnd(wrkMast.getStaNo(),wrkMast.getSourceStaNo())); |
| | | staProtocolNew.setSiteId(staProtocol.getSiteId()); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | staProtocolNew.setBarcode(barcode); |
| | | MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocolNew)); |
| | | if (ledThread != null) { |
| | |
| | | if (!result) { |
| | | News.error(methodName + ":更新plc站点信息失败"); |
| | | log.error("输送线下发(存在设备上走的工作档,直接下发!)==>更新plc站点信息失败"); |
| | | |
| | | // throw new CoolException("更新plc站点信息失败"); |
| | | continue; |
| | | } |
| | | continue; |
| | | |
| | | } |
| | | WrkMast checkPick = wrkMastService.selectOne(new EntityWrapper<WrkMast>() |
| | |
| | | |
| | | throw new CoolException("更新plc站点信息失败"); |
| | | } |
| | | } |
| | | // 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("自动组托成功!!"); |
| | | // MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, "自动组托成功")); |
| | | // } 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), response2); |
| | | // } |
| | | // try{ |
| | | // Thread.sleep(500); |
| | | // } catch (Exception e){ |
| | | // |
| | | // } |
| | | // } |
| | | else { |
| | | } else { |
| | | News.error(JSON.toJSONString(staProtocol)); |
| | | staProtocol.setWorkNo(wrkNo); |
| | | wrkNo++; |
| | | staProtocol.setStaNo(inSta.getBackSta().shortValue()); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | News.info("任务下发判断{}入库回退:{},任务号:{}", inSta.getStaNo(), errMsg,wrkNo); |
| | | News.info("任务下发判断{}入库回退:{},错误编号{},任务号:{}", inSta.getStaNo(), errMsg,jsonObject.getInteger("code"),wrkNo); |
| | | wrkNo++; |
| | | // if (ledThread != null) { |
| | | String errorMsg = jsonObject.getString("msg"); |
| | | if (!Cools.isEmpty(errorMsg)) { |
| | |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && (staProtocol.getWorkNo() == 0 || staProtocol.getStaNo() == null)) { |
| | | WrkMast wrkMast9997 = wrkMastMapper.selectPakOutStep9997(staProtocol.getSiteId()); |
| | | WrkMast wrkMast9996 = wrkMastMapper.selectPakOutStep9996(staProtocol.getSiteId()); |
| | | |
| | | if(crnSlave.getId() == 3 && wrkMast9997 != null){ |
| | | WrkMast wrkMast107 = wrkMastMapper.selectPakOutStep107(wrkMast9997.getBarcode()); |
| | | // 判断吊车是否实际已完成,且电脑状态在move中,以备电脑进行更新工作档 |
| | | CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkMast107.getCrnNo()); |
| | | CrnProtocol crnProtocol = crnThread.getCrnProtocol(); |
| | | if (crnProtocol.statusType == CrnStatusType.FETCHING || crnProtocol.statusType == CrnStatusType.PUTTING) { |
| | | // 移动中 |
| | | continue; |
| | | } |
| | | // 判断堆垛机状态等待确认 |
| | | if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(wrkMast107.getWrkNo().shortValue()) |
| | | && crnProtocol.statusType == CrnStatusType.WAITING |
| | | && crnProtocol.forkPosType == CrnForkPosType.HOME) { |
| | | log.info("堆垛机出库完成 - 开始执行"); |
| | | |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | |
| | | // 下发站点信息 |
| | | staProtocol.setWorkNo(wrkMast107.getWrkNo()); |
| | | staProtocol.setStaNo(RouteUtils.CrnStaEnd(wrkMast107.getStaNo(),wrkMast107.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失败 |
| | | wrkMast9997.setWrkSts(14L); |
| | | wrkMast9997.setCrnEndTime(new Date()); |
| | | if (wrkMastMapper.updateById(wrkMast9997) != 0) { |
| | | // 复位堆垛机 |
| | | log.error("出库任务完成下发堆垛机复位,{}", wrkMast9997.getWrkNo()); |
| | | crnThread.setResetFlag(true); |
| | | } else { |
| | | News.error(""+mark+" - 1"+" - 更新工作档的工作状态为14失败!!! [工作号:{}]", wrkMast9997.getWrkNo()); |
| | | } |
| | | |
| | | }else { |
| | | News.errorNoLog(""+mark+" - 6"+" - 堆垛机信息不符合入库条件!!!" |
| | | +" 堆垛机状态:"+crnProtocol.modeType+"==自动AUTO:" + CrnModeType.AUTO |
| | | +"、堆垛机任务号:"+crnProtocol.getTaskNo()+"==工作档任务号:" + wrkMast9997.getWrkNo().shortValue() |
| | | +"、状态枚举:"+crnProtocol.statusType+"==WAITING:90 //任务完成等待WCS确认):" + CrnStatusType.WAITING |
| | | +"、货叉位置:"+crnProtocol.forkPosType+"==HOME:0 // 货叉原位:" + CrnForkPosType.HOME); |
| | | } |
| | | } |
| | | if(crnSlave.getId() == 3 && wrkMast9996 != null){ |
| | | WrkMast wrkMast107 = wrkMastMapper.selectPakOutStep107(wrkMast9996.getBarcode()); |
| | | // 判断吊车是否实际已完成,且电脑状态在move中,以备电脑进行更新工作档 |
| | | CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, wrkMast107.getCrnNo()); |
| | | CrnProtocol crnProtocol = crnThread.getCrnProtocol(); |
| | | if (crnProtocol.statusType == CrnStatusType.FETCHING || crnProtocol.statusType == CrnStatusType.PUTTING) { |
| | | // 移动中 |
| | | continue; |
| | | } |
| | | // 判断堆垛机状态等待确认 |
| | | if (crnProtocol.modeType == CrnModeType.AUTO && crnProtocol.getTaskNo().equals(wrkMast107.getWrkNo().shortValue()) |
| | | && crnProtocol.statusType == CrnStatusType.WAITING |
| | | && crnProtocol.forkPosType == CrnForkPosType.HOME) { |
| | | log.info("堆垛机出库完成 - 开始执行"); |
| | | |
| | | // 命令下发区 -------------------------------------------------------------------------- |
| | | |
| | | // 下发站点信息 |
| | | staProtocol.setWorkNo(wrkMast107.getWrkNo()); |
| | | staProtocol.setStaNo(RouteUtils.CrnStaEnd(wrkMast107.getStaNo(),wrkMast107.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失败 |
| | | wrkMast9996.setWrkSts(14L); |
| | | wrkMast9996.setCrnEndTime(new Date()); |
| | | if (wrkMastMapper.updateById(wrkMast9996) != 0) { |
| | | // 复位堆垛机 |
| | | log.error("出库任务完成下发堆垛机复位,{}", wrkMast9996.getWrkNo()); |
| | | crnThread.setResetFlag(true); |
| | | } else { |
| | | News.error(""+mark+" - 1"+" - 更新工作档的工作状态为14失败!!! [工作号:{}]", wrkMast9996.getWrkNo()); |
| | | } |
| | | |
| | | }else { |
| | | News.errorNoLog(""+mark+" - 6"+" - 堆垛机信息不符合入库条件!!!" |
| | | +" 堆垛机状态:"+crnProtocol.modeType+"==自动AUTO:" + CrnModeType.AUTO |
| | | +"、堆垛机任务号:"+crnProtocol.getTaskNo()+"==工作档任务号:" + wrkMast9996.getWrkNo().shortValue() |
| | | +"、状态枚举:"+crnProtocol.statusType+"==WAITING:90 //任务完成等待WCS确认):" + CrnStatusType.WAITING |
| | | +"、货叉位置:"+crnProtocol.forkPosType+"==HOME:0 // 货叉原位:" + CrnForkPosType.HOME); |
| | | } |
| | | } |
| | | // 查询工作档 |
| | | WrkMast wrkMast = wrkMastMapper.selectPakOutStep2(staProtocol.getSiteId()); |
| | | if (wrkMast == null) { |
| | |
| | | } else { |
| | | staProtocolIn = staProtocolIn.clone(); |
| | | } |
| | | int[] outStaNos = {1015, 2016}; |
| | | int[] outStaNos = {1015, 2016}; //衔接入库点 |
| | | for (int outStaNo : outStaNos) { |
| | | StaProtocol staProtocolOut = devpThread.getStation().get(outStaNo);// 盘点出库衔接站点(可能是 1015,也可能是 2016) |
| | | if (staProtocolOut == null) { |
| | |
| | | staProtocolOut = staProtocolOut.clone(); |
| | | } |
| | | |
| | | if (staProtocolOut.getWorkNo() != null && staProtocolOut.getStaNo() == 4006) { |
| | | WrkMast wrkMastOut = wrkMastMapper.selectByWrkNo(staProtocolOut.getWorkNo()); |
| | | WrkMast wrkMastOut = wrkMastMapper.selectByWrkNo(staProtocolOut.getWorkNo()); |
| | | if(wrkMastOut == null ){ |
| | | continue; |
| | | } |
| | | if (staProtocolOut.getWorkNo() != null && wrkMastOut.getStaNo() == 4006) { |
| | | WrkMast wrkMast = wrkMastMapper.selectByWrkNo(9997); |
| | | if (wrkMastOut == null) { |
| | | continue; |
| | | } |
| | | if (wrkMast != null) { |
| | | News.info("已存在斜街任务,等待任务完成"); |
| | | // News.info("已存在斜街任务,等待任务完成"); |
| | | continue; |
| | | } |
| | | try { |
| | |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | // if (slave.getId() == 3) { |
| | | // SiemensDevpThread devpThread1 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); |
| | | // StaProtocol staProtocol2 = devpThread1.getStation().get(4001); |
| | | // if (staProtocol2 == null) { |
| | | // News.infoNoLog("" + mark + " - 2" + " - 3" + " - 堆垛机出库站信息(staProtocol!=null继续执行,否则循环终止):staProtocol=" + staProtocol2); |
| | | // break; |
| | | // } else { |
| | | // staProtocol2 = staProtocol2.clone(); |
| | | // } |
| | | // WrkMast wrkMast9999 = wrkMastMapper.selectByWrkNo(9996); |
| | | // BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); |
| | | // if (staDetl == null) { |
| | | // News.error(""+mark+" - 2"+" - 5"+" - 出库 ===>> 堆垛机站点在数据库不存在, 站点编号={}", crnStn.getStaNo()); |
| | | // break; |
| | | //// continue; |
| | | // } |
| | | // if(wrkMast9999 != null && staProtocol2.isAutoing() && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")){ |
| | | // // 堆垛机控制过滤 |
| | | // if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { |
| | | //// continue; |
| | | // break; |
| | | // } |
| | | // // 已经存在吊车执行任务时,则过滤 |
| | | // if (wrkMastMapper.selectWorking(slave.getId()) != null) { |
| | | // break; |
| | | //// return; |
| | | // } |
| | | // // 1.堆垛机开始移动 |
| | | // CrnCommand crnCommand = new CrnCommand(); |
| | | // crnCommand.setCrnNo(slave.getId()); // 堆垛机编号 |
| | | // crnCommand.setTaskNo((short) 9996); // 工作号 |
| | | //// crnCommand.setAckFinish((short) 0); // 任务完成确认位 |
| | | // crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 任务模式: 库位移转 |
| | | // crnCommand.setSourcePosX((short) 5); // 源库位排 |
| | | // crnCommand.setSourcePosY((short) 1); // 源库位列 |
| | | // crnCommand.setSourcePosZ((short) 4); // 源库位层 |
| | | // crnCommand.setDestinationPosX((short) 6); // 目标库位排 |
| | | // crnCommand.setDestinationPosY((short) 1); // 目标库位列 |
| | | // crnCommand.setDestinationPosZ((short) 1); // 目标库位层 |
| | | //// crnCommand.setTraySize(sourceSta.getLocType1() == 2); //库位类型 |
| | | // if (!MessageQueue.offer(SlaveType.Crn, wrkMast9999.getCrnNo(), new Task(2, crnCommand))) { |
| | | // News.error("" + mark + " - 2" + " - 13" + " - 堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast9999.getCrnNo(), JSON.toJSON(crnCommand)); |
| | | // } else { |
| | | // // 修改工作档状态 11.生成出库ID => 12.吊车出库中 |
| | | // Date now = new Date(); |
| | | // wrkMast9999.setWrkSts(3L); |
| | | // wrkMast9999.setCrnStrTime(now); |
| | | // wrkMast9999.setModiTime(now); |
| | | // if (wrkMastMapper.updateById(wrkMast9999) == 0) { |
| | | // News.error("" + mark + " - 2" + " - 14" + " - 修改工作档状态 11.生成出库ID => 12.吊车出库中 失败!!,工作号={}", wrkMast9999.getWrkNo()); |
| | | // } |
| | | // break; |
| | | // } |
| | | // } |
| | | // } |
| | | WrkMast wrkMast9996 = wrkMastMapper.selectByWrkNo9996(9996); |
| | | |
| | | if (slave.getId() == 3 && wrkMast9996 != null) { |
| | | SiemensDevpThread devpThread1 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); |
| | | StaProtocol staProtocol2 = devpThread1.getStation().get(4001); |
| | | if (staProtocol2 == null) { |
| | | News.infoNoLog("" + mark + " - 2" + " - 3" + " - 堆垛机出库站信息(staProtocol!=null继续执行,否则循环终止):staProtocol=" + staProtocol2); |
| | | break; |
| | | } else { |
| | | staProtocol2 = staProtocol2.clone(); |
| | | } |
| | | BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); |
| | | if (staDetl == null) { |
| | | News.error(""+mark+" - 2"+" - 5"+" - 出库 ===>> 堆垛机站点在数据库不存在, 站点编号={}", crnStn.getStaNo()); |
| | | break; |
| | | // continue; |
| | | } |
| | | if( staProtocol2.isAutoing() && staProtocol2.isLoading() && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")){ |
| | | // 堆垛机控制过滤 |
| | | if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { |
| | | // continue; |
| | | break; |
| | | } |
| | | // 已经存在吊车执行任务时,则过滤 |
| | | if (wrkMastMapper.selectWorking(slave.getId()) != null) { |
| | | break; |
| | | // return; |
| | | } |
| | | // 1.堆垛机开始移动 |
| | | CrnCommand crnCommand = new CrnCommand(); |
| | | crnCommand.setCrnNo(slave.getId()); // 堆垛机编号 |
| | | crnCommand.setTaskNo((short) 9996); // 工作号 |
| | | // crnCommand.setAckFinish((short) 0); // 任务完成确认位 |
| | | crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 任务模式: 库位移转 |
| | | crnCommand.setSourcePosX((short) 9); // 源库位排 |
| | | crnCommand.setSourcePosY((short) 52); // 源库位列 |
| | | crnCommand.setSourcePosZ((short) 3); // 源库位层 |
| | | crnCommand.setDestinationPosX((short) 9); // 目标库位排 |
| | | crnCommand.setDestinationPosY((short) 52); // 目标库位列 |
| | | crnCommand.setDestinationPosZ((short) 2); // 目标库位层 |
| | | // crnCommand.setTraySize(sourceSta.getLocType1() == 2); //库位类型 |
| | | if (!MessageQueue.offer(SlaveType.Crn, wrkMast9996.getCrnNo(), new Task(2, crnCommand))) { |
| | | News.error("" + mark + " - 2" + " - 13" + " - 堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast9996.getCrnNo(), JSON.toJSON(crnCommand)); |
| | | } else { |
| | | // 修改工作档状态 11.生成出库ID => 12.吊车出库中 |
| | | Date now = new Date(); |
| | | wrkMast9996.setWrkSts(3L); |
| | | wrkMast9996.setCrnStrTime(now); |
| | | wrkMast9996.setModiTime(now); |
| | | if (wrkMastMapper.updateById(wrkMast9996) == 0) { |
| | | News.error("" + mark + " - 2" + " - 14" + " - 修改工作档状态 11.生成出库ID => 12.吊车出库中 失败!!,工作号={}", wrkMast9996.getWrkNo()); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | // 查询站点详细信息 |
| | | BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); |
| | | if (staDetl == null) { |
| | |
| | | // 获取工作状态为11(生成出库ID)的出库工作档 |
| | | // WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo()); |
| | | List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep11(slave.getId(), crnStn.getStaNo()); |
| | | if (slave.getId() == 3) { |
| | | SiemensDevpThread devpThread1 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); |
| | | WrkMast wrkMast9997 = wrkMastMapper.selectByWrkNo9997(9997); |
| | | |
| | | if (slave.getId() == 3 && wrkMast9997 != null) { |
| | | SiemensDevpThread devpThread1 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); |
| | | StaProtocol staProtocol2 = devpThread1.getStation().get(1015); |
| | | if (staProtocol2 == null) { |
| | | News.infoNoLog("" + mark + " - 2" + " - 3" + " - 堆垛机出库站信息(staProtocol!=null继续执行,否则循环终止):staProtocol=" + staProtocol2); |
| | |
| | | } else { |
| | | staProtocol2 = staProtocol2.clone(); |
| | | } |
| | | WrkMast wrkMast9999 = wrkMastMapper.selectByWrkNo(9997); |
| | | SiemensDevpThread devpThread2 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 2); |
| | | StaProtocol staProtocol3 = devpThread2.getStation().get(2016); |
| | | if (staProtocol3 == null) { |
| | | News.infoNoLog("" + mark + " - 2" + " - 3" + " - 堆垛机出库站信息(staProtocol!=null继续执行,否则循环终止):staProtocol=" + staProtocol2); |
| | | break; |
| | | } else { |
| | | staProtocol3 = staProtocol3.clone(); |
| | | } |
| | | BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); |
| | | if (staDetl == null) { |
| | | News.error(""+mark+" - 2"+" - 5"+" - 出库 ===>> 堆垛机站点在数据库不存在, 站点编号={}", crnStn.getStaNo()); |
| | | break; |
| | | // continue; |
| | | } |
| | | if(wrkMast9999 != null && staProtocol2.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")){ |
| | | if(staProtocol2.isLoading() && staProtocol2.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")){ |
| | | // 堆垛机控制过滤 |
| | | if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { |
| | | // continue; |
| | |
| | | crnCommand.setTaskNo((short) 9997); // 工作号 |
| | | // crnCommand.setAckFinish((short) 0); // 任务完成确认位 |
| | | crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 任务模式: 库位移转 |
| | | crnCommand.setSourcePosX((short) 5); // 源库位排 |
| | | crnCommand.setSourcePosY((short) 1); // 源库位列 |
| | | crnCommand.setSourcePosX((short) 9); // 源库位排 |
| | | crnCommand.setSourcePosY((short) 52); // 源库位列 |
| | | crnCommand.setSourcePosZ((short) 1); // 源库位层 |
| | | crnCommand.setDestinationPosX((short) 6); // 目标库位排 |
| | | crnCommand.setDestinationPosY((short) 1); // 目标库位列 |
| | | crnCommand.setDestinationPosZ((short) 4); // 目标库位层 |
| | | crnCommand.setDestinationPosX((short) 11); // 目标库位排 |
| | | crnCommand.setDestinationPosY((short) 52); // 目标库位列 |
| | | crnCommand.setDestinationPosZ((short) 3); // 目标库位层 |
| | | // crnCommand.setTraySize(sourceSta.getLocType1() == 2); //库位类型 |
| | | if (!MessageQueue.offer(SlaveType.Crn, wrkMast9999.getCrnNo(), new Task(2, crnCommand))) { |
| | | News.error("" + mark + " - 2" + " - 13" + " - 堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast9999.getCrnNo(), JSON.toJSON(crnCommand)); |
| | | if (!MessageQueue.offer(SlaveType.Crn, wrkMast9997.getCrnNo(), new Task(2, crnCommand))) { |
| | | News.error("" + mark + " - 2" + " - 13" + " - 堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast9997.getCrnNo(), JSON.toJSON(crnCommand)); |
| | | } else { |
| | | // 修改工作档状态 11.生成出库ID => 12.吊车出库中 |
| | | Date now = new Date(); |
| | | wrkMast9999.setWrkSts(12L); |
| | | wrkMast9999.setCrnStrTime(now); |
| | | wrkMast9999.setModiTime(now); |
| | | if (wrkMastMapper.updateById(wrkMast9999) == 0) { |
| | | News.error("" + mark + " - 2" + " - 14" + " - 修改工作档状态 11.生成出库ID => 12.吊车出库中 失败!!,工作号={}", wrkMast9999.getWrkNo()); |
| | | wrkMast9997.setWrkSts(12L); |
| | | wrkMast9997.setCrnStrTime(now); |
| | | wrkMast9997.setModiTime(now); |
| | | if (wrkMastMapper.updateById(wrkMast9997) == 0) { |
| | | News.error("" + mark + " - 2" + " - 14" + " - 修改工作档状态 11.生成出库ID => 12.吊车出库中 失败!!,工作号={}", wrkMast9997.getWrkNo()); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | if(staProtocol3.isLoading() && staProtocol3.isAutoing()){ |
| | | // 堆垛机控制过滤 |
| | | if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { |
| | | // continue; |
| | | break; |
| | | } |
| | | // 已经存在吊车执行任务时,则过滤 |
| | | if (wrkMastMapper.selectWorking(slave.getId()) != null) { |
| | | break; |
| | | // return; |
| | | } |
| | | // 1.堆垛机开始移动 |
| | | CrnCommand crnCommand = new CrnCommand(); |
| | | crnCommand.setCrnNo(slave.getId()); // 堆垛机编号 |
| | | crnCommand.setTaskNo((short) 9997); // 工作号 |
| | | // crnCommand.setAckFinish((short) 0); // 任务完成确认位 |
| | | crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 任务模式: 库位移转 |
| | | crnCommand.setSourcePosX((short) 11); // 源库位排 |
| | | crnCommand.setSourcePosY((short) 52); // 源库位列 |
| | | crnCommand.setSourcePosZ((short) 2); // 源库位层 |
| | | crnCommand.setDestinationPosX((short) 11); // 目标库位排 |
| | | crnCommand.setDestinationPosY((short) 52); // 目标库位列 |
| | | crnCommand.setDestinationPosZ((short) 3); // 目标库位层 |
| | | // crnCommand.setTraySize(sourceSta.getLocType1() == 2); //库位类型 |
| | | if (!MessageQueue.offer(SlaveType.Crn, wrkMast9997.getCrnNo(), new Task(2, crnCommand))) { |
| | | News.error("" + mark + " - 2" + " - 13" + " - 堆垛机命令下发失败,堆垛机号={},任务数据={}", wrkMast9997.getCrnNo(), JSON.toJSON(crnCommand)); |
| | | } else { |
| | | // 修改工作档状态 11.生成出库ID => 12.吊车出库中 |
| | | Date now = new Date(); |
| | | wrkMast9997.setWrkSts(12L); |
| | | wrkMast9997.setCrnStrTime(now); |
| | | wrkMast9997.setModiTime(now); |
| | | if (wrkMastMapper.updateById(wrkMast9997) == 0) { |
| | | News.error("" + mark + " - 2" + " - 14" + " - 修改工作档状态 11.生成出库ID => 12.吊车出库中 失败!!,工作号={}", wrkMast9997.getWrkNo()); |
| | | } |
| | | break; |
| | | } |
| | |
| | | public synchronized void autoEmptyOut() { |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); |
| | | List<Integer> list = new ArrayList<>(); |
| | | list.add(1109);list.add(2031); |
| | | list.add(1108);list.add(2031); |
| | | for (Integer site:list){ |
| | | Integer emptyCount = wrkMastMapper.countPakOutEmpty(site); |
| | | StaProtocol staProtocol = null; |
| | | if(emptyCount >= 2 && site == 1109){ |
| | | if(emptyCount >= 1 && site == 1108){ |
| | | continue; |
| | | }else if(emptyCount == 1 && site == 2031){ |
| | | continue; |
| | | } |
| | | //如果站点可出禁用,则不生成空盘出库任务 |
| | | switch (site){ |
| | | case 1109:staProtocol = devpThread.getStation().get(site - 2);break; |
| | | case 1108:staProtocol = devpThread.getStation().get(site - 2);break; |
| | | case 2031:staProtocol = devpThread.getStation().get(site);break; |
| | | } |
| | | if (staProtocol == null) { |
| | |
| | | } |
| | | if (staProtocol.isAutoing() //自动 |
| | | && !staProtocol.isLoading() //无物 |
| | | && staProtocol.isOutEnable() //可出信号 |
| | | // && staProtocol.isOutEnable() //可出信号 |
| | | && staProtocol.getWorkNo() == 0 |
| | | ) { |
| | | Short loctype1 = 1; |
| | |
| | | if(wrkMastSta1 != null && wrkMastSta2 != null){ |
| | | rgvThread.setPakMk(false); //小车双工位锁定 |
| | | } |
| | | // if(!rgvThread.isPakToCrn()){ |
| | | // if(basRgv.getPakToCrn().equals("0")){ |
| | | // rgvRunWrkToCrn(rgv, rgvProtocol,mark); //若小车取到一个接驳任务,第二个工位只能取接驳任务 |
| | | // } |
| | | // if(rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getTaskNo1() == 0 && rgvThread.isPakIn() && rgvThread.isPakRgv()){ |
| | |
| | | continue; |
| | | } |
| | | WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWrkNo( rgvProtocol.getTaskNo1()); |
| | | if(basRgv.getPakToCrn().equals("0")){ |
| | | wrkMastSta = wrkMastStaMapper.selectNoInterfereCrn(route, route, Long.valueOf(staProtocol.getWorkNo())); |
| | | } |
| | | boolean result = false; |
| | | if(wrkMastSta1!= null && rgvProtocol.getRgvNo() == 1){ //距离计算 2楼单入库口不需要计算 |
| | | result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta1.getStaEnd(),wrkMastSta.getStaStart());//工位2放货站点,工位1取货站点 |
| | |
| | | basRgv.setPakRgv("0"); |
| | | basRgvService.updateById(basRgv); |
| | | |
| | | // rgvThread.setPakRgv(false); |
| | | continue; |
| | | } |
| | | wrkMastSta.setWorkSta(wrkMastSta1 !=null ? 2 : 1);//若1号工位有任务给2号工位 |
| | |
| | | if(LEFT_POSITION.contains(wrkMastSta.getStaEnd())){ |
| | | basRgv.setPakToCrn("0"); |
| | | basRgvService.updateById(basRgv); |
| | | |
| | | // rgvThread.setPakToCrn(false); //锁定小车只能接接驳任务 |
| | | if(wrkMastSta3 != null){ |
| | | if(!LEFT_POSITION.contains(wrkMastSta3.getStaEnd())){ |
| | | wrkMastSta3 = null;//若接驳第二位不接驳时取消连续取货 |
| | | } |
| | | } |
| | | } |
| | | |
| | | if(wrkMastSta3 != null ){ |
| | |
| | | List<BasArmMast> basArmMastListRuning3 = basArmMastService.selectList( |
| | | new EntityWrapper<BasArmMast>() |
| | | .eq("arm_no", basArm.getArmNo()) |
| | | .eq("sorting_line", basArm.getSortingLineSou()) |
| | | .eq( |
| | | |
| | | "sorting_line", basArm.getSortingLineSou()) |
| | | .eq("status", 3) |
| | | ); |
| | | if (basArmMastListRuning.isEmpty() && basArmMastListRuning3.isEmpty()){ |
| | |
| | | continue; |
| | | } |
| | | if (basArmMastList.size()>1){ |
| | | armTaskAssignmentCallApiLogSave(staProtocol, "任务待执行数量大于1", "arm编号:"+basArm.getArmNo()+"====》拆码垛任务异常禁止下发!!!任务待执行数量大于1!!!", false); |
| | | armTaskAssignmentCallApiLogSave(staProtocol, "任务待执行数量大于1,无法分辨待执行任务", "arm编号:"+basArm.getArmNo()+"====》拆码垛任务异常禁止下发!!!任务待执行数量大于1!!!", false); |
| | | |
| | | // log.error("arm编号:"+basArm.getArmNo()+"====》拆码垛任务异常禁止下发!!!任务待执行数量大于1!!!"); |
| | | continue; |
| | |
| | | .eq("sorting_line", basArm.getSortingLineSou()) |
| | | .eq("sku", basArmMast.getSku()) |
| | | .eq("order_no", basArmMast.getOrderNo()) |
| | | .eq("binding_tags", basArmMast.getBindingTags()) |
| | | ); |
| | | if (basArmMastListOrder.size()==1){ |
| | | Thread.sleep(100); |
| | | |
| | | |
| | | List<BasArmMast> basArmMastListRuningBarCode2 = basArmMastService.selectList( |
| | | new EntityWrapper<BasArmMast>() |
| | | .eq("barcode", barcode) |
| | | ); |
| | | if (!basArmMastListRuningBarCode2.isEmpty()){ |
| | | int binding_tags = basArmMastService.selectCount( |
| | | new EntityWrapper<BasArmMast>() |
| | | .eq("status", 2) |
| | | .eq("binding_tags", basArmMast.getBindingTags()) |
| | | ); |
| | | if (binding_tags<2){ |
| | | armTaskAssignmentCallApiLogSave(staProtocol, "条码数据已存在!!!", staProtocol.getSiteId()+"码垛位置,条码数据正在自动组托===>>" + barcode, false); |
| | | continue; |
| | | } |
| | | } |
| | | OrderDetlValueResultUtil orderDetlValueResultUtil = basArmMastService.selectOrderDetlValue(basArmMast.getOrderNo(), basArmMast.getSku()); |
| | | |
| | | if (Cools.isEmpty(orderDetlValueResultUtil)){ |
| | | continue; |
| | | } |
| | | Double anfmeSign = basArmMastService.selectBasArmMastSignValue(basArmMast.getOrderNo(), basArmMast.getSku(),basArmMast.getBindingTags()); |
| | | orderDetlValueResultUtil.setAnfme(anfmeSign); |
| | | //订单下发 |
| | | try{ |
| | | ArmOrderAssignmentParam armOrderAssignmentParam = new ArmOrderAssignmentParam(basArmMast,orderDetlValueResultUtil); |