| | |
| | | if (jsonObject.getInteger("code").equals(200)) { |
| | | staProtocolOut.setWorkNo(9997); |
| | | devpThread.setPakMk(staProtocolOut.getSiteId(), false); |
| | | boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocolOut)); |
| | | Integer devpId = 1; |
| | | if(staProtocolOut.getSiteId() > 2000){ |
| | | devpId = 2; |
| | | } |
| | | boolean result = MessageQueue.offer(SlaveType.Devp, devpId, new Task(2, staProtocolOut)); |
| | | |
| | | if (!result) { |
| | | throw new CoolException("更新plc站点信息失败"); |
| | |
| | | if (jsonObject.getInteger("code").equals(200)) { |
| | | staProtocolIn.setWorkNo(9996); |
| | | devpThread.setPakMk(staProtocolIn.getSiteId(), false); |
| | | boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocolIn)); |
| | | Integer devpId = 1; |
| | | if(staProtocolIn.getSiteId() > 2000){ |
| | | devpId = 2; |
| | | } |
| | | boolean result = MessageQueue.offer(SlaveType.Devp, devpId, new Task(2, staProtocolIn)); |
| | | |
| | | if (!result) { |
| | | throw new CoolException("更新plc站点信息失败"); |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO |
| | | && crnProtocol.getLoaded() == 0 && crnProtocol.getForkPos() == 0 && crnProtocol.getCrnNo() == 3) { |
| | | News.warnNoLog(""+mark+" - 0"+" - 开始执行堆垛机入出库作业下发"); |
| | | if (crnProtocol.getLastIo().equals("O")) { |
| | | if (basCrnp.getInEnable().equals("Y")) { |
| | | this.locToCrnStn9996(crn, crnProtocol,mark); // 入库 |
| | | } |
| | | } |
| | | // 如果最近一次是出库模式 |
| | | else if (crnProtocol.getLastIo().equals("I")) { |
| | | if (basCrnp.getOutEnable().equals("Y")) { |
| | | this.locToCrnStn9997(crn, crnProtocol,mark); // 出库 |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 库位移转 |
| | | //mark - 3 - .... |
| | | this.locToLoc(crn, crnProtocol,mark); |
| | | //预调度 |
| | | this.crnRebackHp(crn, crnProtocol, crnThread); |
| | | // this.crnRebackHp(crn, crnProtocol, crnThread); |
| | | |
| | | } |
| | | // News.infoNoLog(""+mark+" - 0"+" - 堆垛机入出库作业下发执行完成"); |
| | |
| | | new EntityWrapper<BasCrnp>().eq("crn_no", crnProtocol.getCrnNo()) |
| | | ); |
| | | boolean result = true; |
| | | if(crnProtocol.getCrnNo() != 5){ |
| | | return; |
| | | } |
| | | |
| | | for (CrnSlave.CrnStn crnStn : slave.getCrnInStn()) { |
| | | DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); |
| | | if(crnStn.getStaNo() == 4001){ |
| | | continue; |
| | | } |
| | | StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo2()); |
| | | if (staProtocol == null) { |
| | | News.infoNoLog(" - 堆垛机入库站信息(staProtocol!=null继续执行):staProtocol="+staProtocol); |
| | |
| | | int x=1; |
| | | switch (crnProtocol.getCrnNo()){ |
| | | case 1: x =2; break; |
| | | case 2: x =6; break; |
| | | case 3: x =11; break; |
| | | case 2: x =7; break; |
| | | case 3: x =10; break; |
| | | case 4: x =14; break; |
| | | case 5: x =18; break; |
| | | } |
| | |
| | | return; |
| | | } |
| | | } |
| | | if(crnProtocol.getCrnNo() != 5){ |
| | | return; |
| | | } |
| | | |
| | | // 已经存在吊车执行任务时,则过滤3,12 |
| | | if (wrkMastMapper.selectWorking(crnProtocol.getCrnNo()) != null) { |
| | | return; |
| | |
| | | // 获取工作状态为11(生成出库ID)的出库工作档 |
| | | // WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo()); |
| | | List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep11(slave.getId(), crnStn.getStaNo()); |
| | | WrkMast wrkMast9997 = wrkMastMapper.selectByWrkNo9997(9997); |
| | | WrkMast wrkMast9996 = wrkMastMapper.selectByWrkNo9997(9996); |
| | | |
| | | |
| | | 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); |
| | | break; |
| | | } else { |
| | | staProtocol2 = staProtocol2.clone(); |
| | | } |
| | | SiemensDevpThread devpThread2 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 2); |
| | | StaProtocol staProtocol4004 = devpThread2.getStation().get(4004); |
| | | if (staProtocol4004 == null) { |
| | | News.infoNoLog("" + mark + " - 2" + " - 3" + " - 堆垛机出库站信息(staProtocol!=null继续执行,否则循环终止):staProtocol=" + staProtocol4004); |
| | | break; |
| | | } else { |
| | | staProtocol4004 = staProtocol4004.clone(); |
| | | } |
| | | 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(staProtocol2.isLoading() && staProtocol2.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")){ |
| | | // 堆垛机控制过滤 |
| | | if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { |
| | | // continue; |
| | | break; |
| | | } |
| | | // 已经存在吊车执行任务时,则过滤 |
| | | if (wrkMastMapper.selectWorking(slave.getId()) != null) { |
| | | break; |
| | | // return; |
| | | } |
| | | if(staProtocol4004.isLoading()){ |
| | | continue; |
| | | } |
| | | // 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) 9); // 源库位排 |
| | | crnCommand.setSourcePosY((short) 52); // 源库位列 |
| | | crnCommand.setSourcePosZ((short) 1); // 源库位层 |
| | | 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; |
| | | } |
| | | } |
| | | if(staProtocol3.isLoading() && staProtocol3.isAutoing()){ |
| | | // 堆垛机控制过滤 |
| | | if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { |
| | | // continue; |
| | | break; |
| | | } |
| | | // 已经存在吊车执行任务时,则过滤 |
| | | if (wrkMastMapper.selectWorking(slave.getId()) != null) { |
| | | break; |
| | | // return; |
| | | } |
| | | if(staProtocol4004.isLoading()){ |
| | | continue; |
| | | } |
| | | // 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; |
| | | } |
| | | } |
| | | } |
| | | if (slave.getId() == 3 && wrkMast9996 != null) { |
| | | SiemensDevpThread devpThread1 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); |
| | | |
| | | SiemensDevpThread devpThread2 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 2); |
| | | StaProtocol staProtocol4001 = devpThread2.getStation().get(4001); |
| | | if (staProtocol4001 == null) { |
| | | News.infoNoLog("" + mark + " - 2" + " - 3" + " - 堆垛机出库站信息(staProtocol!=null继续执行,否则循环终止):staProtocol=" + staProtocol4001); |
| | | break; |
| | | } else { |
| | | staProtocol4001 = staProtocol4001.clone(); |
| | | } |
| | | StaProtocol staProtocol2013 = devpThread2.getStation().get(2013); |
| | | if (staProtocol2013 == null) { |
| | | News.infoNoLog("" + mark + " - 2" + " - 3" + " - 堆垛机出库站信息(staProtocol!=null继续执行,否则循环终止):staProtocol=" + staProtocol2013); |
| | | break; |
| | | } else { |
| | | staProtocol2013 = staProtocol2013.clone(); |
| | | } |
| | | StaProtocol staProtocol1019 = devpThread1.getStation().get(1019); |
| | | if (staProtocol1019 == null) { |
| | | News.infoNoLog("" + mark + " - 2" + " - 3" + " - 堆垛机出库站信息(staProtocol!=null继续执行,否则循环终止):staProtocol=" + staProtocol1019); |
| | | break; |
| | | } else { |
| | | staProtocol1019 = staProtocol1019.clone(); |
| | | } |
| | | BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); |
| | | if (staDetl == null) { |
| | | News.error(""+mark+" - 2"+" - 5"+" - 出库 ===>> 堆垛机站点在数据库不存在, 站点编号={}", crnStn.getStaNo()); |
| | | break; |
| | | // continue; |
| | | } |
| | | if(staProtocol4001.isLoading() && staProtocol4001.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")){ |
| | | // 堆垛机控制过滤 |
| | | if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { |
| | | // continue; |
| | | break; |
| | | } |
| | | // 已经存在吊车执行任务时,则过滤 |
| | | if (wrkMastMapper.selectWorking(slave.getId()) != null) { |
| | | break; |
| | | // return; |
| | | } |
| | | if(staProtocol1019.isLoading() && wrkMast9996.getStaNo() < 2000){ |
| | | continue; |
| | | } |
| | | if(staProtocol2013.isLoading() && wrkMast9996.getStaNo() > 2000){ |
| | | continue; |
| | | } |
| | | // 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); // 源库位层 |
| | | if(wrkMast9996.getStaNo()>2000){ |
| | | crnCommand.setDestinationPosX((short) 9); // 目标库位排 |
| | | crnCommand.setDestinationPosY((short) 52); // 目标库位列 |
| | | crnCommand.setDestinationPosZ((short) 2); // 目标库位层 |
| | | }else{ |
| | | crnCommand.setDestinationPosX((short) 11); // 目标库位排 |
| | | crnCommand.setDestinationPosY((short) 52); // 目标库位列 |
| | | crnCommand.setDestinationPosZ((short) 1); // 目标库位层 |
| | | } |
| | | // 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(12L); |
| | | wrkMast9996.setCrnStrTime(now); |
| | | wrkMast9996.setModiTime(now); |
| | | if (wrkMastMapper.updateById(wrkMast9996) == 0) { |
| | | News.error("" + mark + " - 2" + " - 14" + " - 修改工作档状态 11.生成出库ID => 12.吊车出库中 失败!!,工作号={}", wrkMast9996.getWrkNo()); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | for (WrkMast wrkMast : wrkMasts) { |
| | | if (wrkMast == null) { |
| | | continue; |
| | | } |
| | | if (wrkMast.getIoType() == 107){ |
| | | int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("io_type", wrkMast.getIoType()).eq("wrk_sts", 14)); |
| | | if (count >= inventoryNumber) { |
| | | continue; |
| | | } |
| | | // if (count >= inventoryNumber) { |
| | | // continue; |
| | | // } |
| | | } |
| | | // 工作档状态判断 |
| | | if (wrkMast.getIoType() < 100 || wrkMast.getSourceStaNo() == null) { |
| | |
| | | News.infoNoLog(""+mark+" - 2"+" - 0"+" - 堆垛机入出库作业下发 : 出库执行完毕"); |
| | | } |
| | | |
| | | public synchronized void locToCrnStn9996(CrnSlave slave, CrnProtocol crnProtocol,Integer mark) { |
| | | News.warnNoLog(""+mark+" - 2"+" - 0"+" - 堆垛机入出库作业下发:执行出库"); |
| | | for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) { |
| | | // 获取工作状态为11(生成出库ID)的出库工作档 |
| | | // WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo()); |
| | | List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep11(slave.getId(), crnStn.getStaNo()); |
| | | WrkMast wrkMast9996 = wrkMastMapper.selectByWrkNo9997(9996); |
| | | if (slave.getId() == 3 && wrkMast9996 != null) { |
| | | SiemensDevpThread devpThread1 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 1); |
| | | |
| | | SiemensDevpThread devpThread2 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 2); |
| | | StaProtocol staProtocol4001 = devpThread2.getStation().get(4001); |
| | | if (staProtocol4001 == null) { |
| | | News.infoNoLog("" + mark + " - 2" + " - 3" + " - 堆垛机出库站信息(staProtocol!=null继续执行,否则循环终止):staProtocol=" + staProtocol4001); |
| | | break; |
| | | } else { |
| | | staProtocol4001 = staProtocol4001.clone(); |
| | | } |
| | | StaProtocol staProtocol2013 = devpThread2.getStation().get(2013); |
| | | if (staProtocol2013 == null) { |
| | | News.infoNoLog("" + mark + " - 2" + " - 3" + " - 堆垛机出库站信息(staProtocol!=null继续执行,否则循环终止):staProtocol=" + staProtocol2013); |
| | | break; |
| | | } else { |
| | | staProtocol2013 = staProtocol2013.clone(); |
| | | } |
| | | StaProtocol staProtocol1019 = devpThread1.getStation().get(1019); |
| | | if (staProtocol1019 == null) { |
| | | News.infoNoLog("" + mark + " - 2" + " - 3" + " - 堆垛机出库站信息(staProtocol!=null继续执行,否则循环终止):staProtocol=" + staProtocol1019); |
| | | break; |
| | | } else { |
| | | staProtocol1019 = staProtocol1019.clone(); |
| | | } |
| | | BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); |
| | | if (staDetl == null) { |
| | | News.error(""+mark+" - 2"+" - 5"+" - 出库 ===>> 堆垛机站点在数据库不存在, 站点编号={}", crnStn.getStaNo()); |
| | | break; |
| | | // continue; |
| | | } |
| | | if(staProtocol4001.isLoading() && staProtocol4001.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")){ |
| | | // 堆垛机控制过滤 |
| | | if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { |
| | | // continue; |
| | | break; |
| | | } |
| | | // 已经存在吊车执行任务时,则过滤 |
| | | if (wrkMastMapper.selectWorking(slave.getId()) != null) { |
| | | break; |
| | | // return; |
| | | } |
| | | if(staProtocol1019.isLoading() && wrkMast9996.getStaNo() < 2000){ |
| | | continue; |
| | | } |
| | | if(staProtocol2013.isLoading() && wrkMast9996.getStaNo() > 2000){ |
| | | continue; |
| | | } |
| | | // 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); // 源库位层 |
| | | if(wrkMast9996.getStaNo()>2000){ |
| | | crnCommand.setDestinationPosX((short) 9); // 目标库位排 |
| | | crnCommand.setDestinationPosY((short) 52); // 目标库位列 |
| | | crnCommand.setDestinationPosZ((short) 2); // 目标库位层 |
| | | }else{ |
| | | crnCommand.setDestinationPosX((short) 11); // 目标库位排 |
| | | crnCommand.setDestinationPosY((short) 52); // 目标库位列 |
| | | crnCommand.setDestinationPosZ((short) 1); // 目标库位层 |
| | | } |
| | | // 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(12L); |
| | | wrkMast9996.setCrnStrTime(now); |
| | | wrkMast9996.setModiTime(now); |
| | | if (wrkMastMapper.updateById(wrkMast9996) == 0) { |
| | | News.error("" + mark + " - 2" + " - 14" + " - 修改工作档状态 11.生成出库ID => 12.吊车出库中 失败!!,工作号={}", wrkMast9996.getWrkNo()); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | News.infoNoLog(""+mark+" - 2"+" - 0"+" - 堆垛机入出库作业下发 : 出库执行完毕"); |
| | | } |
| | | public synchronized void locToCrnStn9997(CrnSlave slave, CrnProtocol crnProtocol,Integer mark) { |
| | | News.warnNoLog(""+mark+" - 2"+" - 0"+" - 堆垛机入出库作业下发:执行出库"); |
| | | for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) { |
| | | // 获取工作状态为11(生成出库ID)的出库工作档 |
| | | // WrkMast wrkMast = wrkMastMapper.selectPakOutStep1(slave.getId(), crnStn.getStaNo()); |
| | | List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep11(slave.getId(), crnStn.getStaNo()); |
| | | 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); |
| | | break; |
| | | } else { |
| | | staProtocol2 = staProtocol2.clone(); |
| | | } |
| | | SiemensDevpThread devpThread2 = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, 2); |
| | | StaProtocol staProtocol4004 = devpThread2.getStation().get(4004); |
| | | if (staProtocol4004 == null) { |
| | | News.infoNoLog("" + mark + " - 2" + " - 3" + " - 堆垛机出库站信息(staProtocol!=null继续执行,否则循环终止):staProtocol=" + staProtocol4004); |
| | | break; |
| | | } else { |
| | | staProtocol4004 = staProtocol4004.clone(); |
| | | } |
| | | 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 (staProtocol2.isLoading() && staProtocol2.isAutoing() && staProtocol2.getWorkNo() == 9997) { |
| | | // 堆垛机控制过滤 |
| | | if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { |
| | | // continue; |
| | | break; |
| | | } |
| | | // 已经存在吊车执行任务时,则过滤 |
| | | if (wrkMastMapper.selectWorking(slave.getId()) != null) { |
| | | break; |
| | | // return; |
| | | } |
| | | if (staProtocol4004.isLoading()) { |
| | | continue; |
| | | } |
| | | // 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) 9); // 源库位排 |
| | | crnCommand.setSourcePosY((short) 52); // 源库位列 |
| | | crnCommand.setSourcePosZ((short) 1); // 源库位层 |
| | | 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; |
| | | } |
| | | } |
| | | if (staProtocol3.isLoading() && staProtocol3.isAutoing()&& staProtocol3.getWorkNo() == 9997) { |
| | | // 堆垛机控制过滤 |
| | | if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { |
| | | // continue; |
| | | break; |
| | | } |
| | | // 已经存在吊车执行任务时,则过滤 |
| | | if (wrkMastMapper.selectWorking(slave.getId()) != null) { |
| | | break; |
| | | // return; |
| | | } |
| | | if (staProtocol4004.isLoading()) { |
| | | continue; |
| | | } |
| | | // 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; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | News.infoNoLog(""+mark+" - 2"+" - 0"+" - 堆垛机入出库作业下发 : 出库执行完毕"); |
| | | } |
| | | // /** |
| | | // * 出库 ===>> 库位到堆垛机站 |
| | | // */ |
| | |
| | | } else { |
| | | total = locDetl.getAnfme(); |
| | | } |
| | | if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) { |
| | | if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1 ||wrkMast.getIoType() == 57 || wrkMast.getIoType() == 53) { |
| | | ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getOrderNo(), wrkDetl.getBoxType3(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(),wrkDetl.getAnfme(),total)); |
| | | } |
| | | if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) { |
| | |
| | | rgvThread.setPakMk(false); //小车双工位锁定 |
| | | |
| | | } |
| | | } |
| | | } |
| | | |
| | | RgvThread rgvThread1 = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); |
| | | RgvProtocol rgvProtocol1 = rgvThread.getRgvProtocol(); |
| | | if (rgvProtocol1 == null) { |
| | | public synchronized void rgvIoExecuteScheduling() { |
| | | for (RgvSlave rgv : slaveProperties.getRgv()) { |
| | | RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); |
| | | RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); |
| | | if (rgvProtocol == null) { |
| | | continue; |
| | | } |
| | | if(rgvProtocol1.getStatusType1() == RgvStatusType.IDLE && |
| | | rgvProtocol1.getModeType() == RgvModeType.AUTO && rgvThread1.isPakMk() |
| | | && rgvThread1.isPaking() && basRgv.getPakAll().equals("1")){ |
| | | BasRgv basRgv = basRgvService.selectById(rgv.getId()); |
| | | if (basRgv == null) { |
| | | log.error("{}号RGV尚未在数据库进行维护!4", rgv.getId()); |
| | | continue; |
| | | } |
| | | if(rgvProtocol.getStatusType1() == RgvStatusType.WORKING){ |
| | | rgvThread.setPaking(true); |
| | | } |
| | | |
| | | if(rgvProtocol.isLoaded1ing() && rgvProtocol.isLoaded2ing()){ |
| | | basRgv.setPakAll("1"); |
| | | basRgvService.updateById(basRgv); |
| | | } |
| | | if(rgvProtocol.getStatusType1() == RgvStatusType.IDLE && |
| | | rgvProtocol.getModeType() == RgvModeType.AUTO && rgvThread.isPakMk() |
| | | && rgvThread.isPaking() && basRgv.getPakAll().equals("1")){ |
| | | if(basRgv.getPakOut().equals("1") && basRgv.getPakIn().equals("1")){ |
| | | rgvPreSchedulingIn(rgv, rgvProtocol);//若暂无下发任务预调度提前到取货点 |
| | | if (rgvProtocol.getLastIo().equals("I")) { |
| | |
| | | //遍历rgv入库取货站点 |
| | | DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo2()); |
| | | StaProtocol staProtocol2 = devpThread.getStation().get(rgvStn.getStaNo()); |
| | | |
| | | RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo()); |
| | | BasRgv basRgv = basRgvService.selectById(slave.getId()); |
| | | if (basRgv == null) { |
| | |
| | | if(staProtocol.getWorkNo() == 0){ |
| | | continue; |
| | | } |
| | | StaProtocol staProtocol2 = null; |
| | | if(staProtocol2.getWorkNo() != 0 ){ |
| | | continue; |
| | | } |
| | | WrkMastSta wrkMastSta3 = null; |
| | | |
| | | // if(rgvStn.getStaNo2()!= null ){ |
| | |
| | | basArmMast.setArmNo(basArm.getArmNo()); |
| | | basArmMast.setStaNo(basArm.getStaNoSou()); |
| | | basArmMast.setSortingLine(basArm.getSortingLineSou()); |
| | | if(basArmMastList2.size() > num){ |
| | | if(basArmMastList2.size() >= num){ |
| | | basArmMastFinal = basArmMast; |
| | | num = basArmMastList2.size(); |
| | | } |
| | | } |
| | | if(basArmMastFinal != null){ |
| | |
| | | new EntityWrapper<BasArmMast>() |
| | | .eq("status", 2) |
| | | .eq("binding_tags", basArmMast.getBindingTags())); |
| | | if (binding_tags<2){ |
| | | if (binding_tags==1){ |
| | | BasArmMast basArmMastOne = basArmMastService.selectOne( |
| | | new EntityWrapper<BasArmMast>() |
| | | .eq("status", 2) |
| | |
| | | continue; |
| | | } |
| | | |
| | | } else if (binding_tags == 0){ |
| | | boolean signBinding_tags_barcode = false; |
| | | List<BasArmMast> binding_tags_barcodeList = basArmMastService.selectList( |
| | | new EntityWrapper<BasArmMast>() |
| | | .eq("barcode", barcode)); |
| | | for (BasArmMast basArmMastBarcode : binding_tags_barcodeList){ |
| | | Integer selectCountAndBindingTags = basArmMastService.selectCountAndBindingTags(basArmMastBarcode.getArmNo(), basArmMastBarcode.getOrderNo(), basArmMastBarcode.getMatnr(),basArmMastBarcode.getBindingTags()); |
| | | Integer selectCountAndBindingTagsLog = basArmMastService.selectCountAndBindingTagsLog(basArmMastBarcode.getArmNo(),basArmMastBarcode.getOrderNo(), basArmMastBarcode.getMatnr(),basArmMastBarcode.getBindingTags()); |
| | | |
| | | Double anfmeSignOne = basArmMastService.selectBasArmMastSignValue(basArmMastBarcode.getOrderNo(), basArmMastBarcode.getMatnr(),basArmMastBarcode.getBindingTags()); |
| | | if ((selectCountAndBindingTags + selectCountAndBindingTagsLog) != anfmeSignOne.intValue()) { |
| | | // signBinding_tags_barcode = true; ///// |
| | | break; |
| | | } |
| | | } |
| | | if (signBinding_tags_barcode){ |
| | | armTaskAssignmentCallApiLogSave(staProtocol, "数据异常!!!", staProtocol.getSiteId()+"码垛位置,上一个分拣组未全部完成!!!", false); |
| | | continue; |
| | | } |
| | | } |
| | | } |
| | | // OrderDetlValueResultUtil orderDetlValueResultUtil = basArmMastService.selectOrderDetlValue(basArmMast.getOrderNo(), basArmMast.getMatnr()); |
| | |
| | | LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no",dto.getLocNo())); |
| | | locMast.setBarcode(wrkMast.getBarcode()); |
| | | locMastService.updateById(locMast); |
| | | }else{ |
| | | agvBindCtnrAndBinParam.setCtnrTyp("1"); |
| | | ReturnT<String> resultBind = new PostMesDataUtils().postMesDataAgv("AGV容器绑定", AgvConstant.AGV_URL, AgvConstant.AGV_CTNRANDBING, agvBindCtnrAndBinParam); |
| | | } |
| | | agvBindCtnrAndBinParam.setCtnrTyp("1"); |
| | | ReturnT<String> resultBind = new PostMesDataUtils().postMesDataAgv("AGV容器绑定", AgvConstant.AGV_URL, AgvConstant.AGV_CTNRANDBING, agvBindCtnrAndBinParam); |
| | | wrkMast.setTakeNone("2"); |
| | | wrkMastMapper.updateById(wrkMast); |
| | | } else { |