| | |
| | | } |
| | | |
| | | /** |
| | | * 绑定小车方法 |
| | | */ |
| | | public synchronized void rgvBindSte() { |
| | | for (RgvSlave rgv : slaveProperties.getRgv()) { |
| | | // 获取RGV信息 |
| | | RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); |
| | | RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); |
| | | if (rgvProtocol == null) { |
| | | continue; |
| | | } |
| | | BasRgv basRgv = basRgvService.selectById(rgv.getId()); |
| | | if (basRgv == null) { |
| | | log.error("{}号RGV尚未在数据库进行维护!", rgv.getId()); |
| | | continue; |
| | | } |
| | | |
| | | // 只有当RGV空闲、自动, 并且无任务、无物时才继续执行 |
| | | if (rgvProtocol.getStatusType() == RgvStatusType.IDLE |
| | | && rgvProtocol.getModeType() == RgvModeType.AUTO |
| | | && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0 |
| | | && rgvProtocol.getLoaded1() == 0 && rgvProtocol.getLoaded2() == 0 |
| | | ) { |
| | | // 如果最近一次是入库模式 |
| | | if (rgvProtocol.getLastIo().equals("I")) { |
| | | if (basRgv.getInEnable().equals("Y")) { |
| | | this.rgvBindSteIn(rgv, rgvProtocol); // 入库 |
| | | rgvProtocol.setLastIo("O"); |
| | | } else if (basRgv.getOutEnable().equals("Y")) { |
| | | this.rgvBindSteOut(rgv, rgvProtocol); // 出库 |
| | | rgvProtocol.setLastIo("I"); |
| | | } |
| | | } |
| | | // 如果最近一次是出库模式 |
| | | else if (rgvProtocol.getLastIo().equals("O")) { |
| | | if (basRgv.getOutEnable().equals("Y")) { |
| | | this.rgvBindSteOut(rgv, rgvProtocol); // 出库 |
| | | rgvProtocol.setLastIo("I"); |
| | | } else if (basRgv.getInEnable().equals("Y")) { |
| | | this.rgvBindSteIn(rgv, rgvProtocol); // 入库 |
| | | rgvProtocol.setLastIo("O"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 绑定小车入库方法 |
| | | */ |
| | | public synchronized void rgvBindSteIn(RgvSlave slave, RgvProtocol rgvProtocol) { |
| | | for (RgvSlave.RgvStn rgvStn: slave.getRgvInSStn()){ |
| | | Integer staNo = rgvStn.getStaNo(); |
| | | BasDevp basDevp = basDevpService.selectById(rgvStn.getDevpPlcId()); |
| | | if (Cools.isEmpty(basDevp) || basDevp.getWrkNo()==0){ |
| | | continue; |
| | | }else { |
| | | WrkMast wrkMast = wrkMastMapper.selectRgvInSteWrkNo(basDevp.getWrkNo()); |
| | | if (!Cools.isEmpty(wrkMast)){ |
| | | wrkMast.setRgvNo(wrkMast.getCrnNo()>3 ? 2 : 1); |
| | | wrkMast.setAppeTime(new Date()); |
| | | if (wrkMastMapper.updateById(wrkMast)==0){ |
| | | log.error("绑定小车更新工作档失败!!! [工作号:{}]", wrkMast.getWrkNo()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 绑定小车出库方法 |
| | | */ |
| | | public synchronized void rgvBindSteOut(RgvSlave slave, RgvProtocol rgvProtocol) { |
| | | for (RgvSlave.RgvStn rgvStn: slave.getRgvOutSStn()){ |
| | | BasDevp basDevp = basDevpService.selectById(rgvStn.getDevpPlcId()); |
| | | if (Cools.isEmpty(basDevp) || basDevp.getWrkNo()==0){ |
| | | continue; |
| | | }else { |
| | | WrkMast wrkMast = wrkMastMapper.selectRgvOutSteWrkNo(basDevp.getWrkNo()); |
| | | if (!Cools.isEmpty(wrkMast)){ |
| | | wrkMast.setRgvNo(rgvStn.getStaNo()); |
| | | wrkMast.setAppeTime(new Date()); |
| | | if (wrkMastMapper.updateById(wrkMast)==0){ |
| | | log.error("绑定小车更新工作档失败!!! [工作号:{}]", wrkMast.getWrkNo()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | /** |
| | | * 入出库 ===>> RGV入出库作业下发 |
| | | */ |
| | | public synchronized void rgvIoExecute() { |