| | |
| | | private BasCrnErrorMapper basCrnErrorMapper; |
| | | @Autowired |
| | | private EmptyBarrelInService emptyBarrelInService; |
| | | @Autowired |
| | | private WrkMastStaService wrkMastStaService; |
| | | @Autowired |
| | | private MatnrCodeService matnrCodeService; |
| | | |
| | | @Value("${wms.url}") |
| | | private String wmsUrl; |
| | |
| | | } |
| | | |
| | | |
| | | if (crnStn.getStaNo() == 1016 || crnStn.getStaNo() == 1019) { |
| | | if (crnStn.getStaNo() > 1013) { |
| | | // 更新工作档状态为13.RGV搬运中 |
| | | wrkMast.setWrkSts(13L); |
| | | }else { |
| | |
| | | |
| | | // 站点条件判断 |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() |
| | | && staProtocol.isEmptyMk() && (staProtocol.getWorkNo() >= 9990 |
| | | && staProtocol.getWorkNo() <= 9999) && staProtocol.isPakMk()) { |
| | | && (staProtocol.isEmptyMk() || staProtocol.getStaNo() == 9999) |
| | | // && (staProtocol.getWorkNo() >= 9990 && staProtocol.getWorkNo() <= 9999) |
| | | && staProtocol.isPakMk()) { |
| | | List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() |
| | | .eq("sta_no", emptyInSta.getStaNo()) |
| | | .eq("io_type", 10) |
| | |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()) { |
| | | // if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()) { |
| | | // 查询工作档 |
| | | WrkMast wrkMast = wrkMastMapper.selectPakOutStep2(crnStn.getStaNo()); |
| | | if (wrkMast == null) { |
| | |
| | | |
| | | } |
| | | |
| | | } |
| | | // } |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | public synchronized void RGVTaskPut(){ |
| | | public synchronized void RGVTaskCreate(){ |
| | | for (RgvSlave rgvSlave:slaveProperties.getRgv()){ |
| | | ZyRgvThread rgvThread = (ZyRgvThread)SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); |
| | | RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); |
| | | if (rgvProtocol.getModeType() != RgvModeType.AUTO){ |
| | | if (Cools.isEmpty(rgvProtocol)){ |
| | | continue; |
| | | } |
| | | |
| | | |
| | | int workNo1 = 0; |
| | | int workNo2 = 0; |
| | | short souSta1 = 0; |
| | | short sta1 = 0; |
| | | short souSta2 = 0; |
| | | short sta2 = 0; |
| | | |
| | | //工位一任务 |
| | | for (RgvSlave.Sta inStn : rgvSlave.getInStn()){ |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo()); |
| | | if (staProtocol == null) { |
| | | break; |
| | | // continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | if (staProtocol.isLoading() && staProtocol.isLoading() && staProtocol.isInEnable()){ |
| | | if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9900){ |
| | | WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo()); |
| | | if (Cools.isEmpty(wrkMast)){ |
| | | log.error("未找到工作档"); |
| | | continue; |
| | | } |
| | | workNo1 = wrkMast.getWrkNo(); |
| | | souSta1 = inStn.getSourceStaNo().shortValue(); |
| | | sta1 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo()); |
| | | break; |
| | | } |
| | | workNo1 = workNo++; |
| | | souSta1 = inStn.getSourceStaNo().shortValue(); |
| | | sta1 = inStn.getStaNo().shortValue(); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | |
| | | //工位二任务 |
| | | for (RgvSlave.Sta inStn : rgvSlave.getInStn()){ |
| | | if (souSta1 == inStn.getSourceStaNo()){ |
| | | continue; |
| | | } |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo()); |
| | | if (staProtocol == null) { |
| | | break; |
| | | // continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | if (staProtocol.isLoading() && staProtocol.isLoading() && staProtocol.isInEnable()){ |
| | | if (staProtocol.getWorkNo() > 0 && staProtocol.getWorkNo() <9900){ |
| | | WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo()); |
| | | if (Cools.isEmpty(wrkMast)){ |
| | | log.error("未找到工作档"); |
| | | continue; |
| | | } |
| | | workNo2 = wrkMast.getWrkNo(); |
| | | souSta2 = inStn.getSourceStaNo().shortValue(); |
| | | sta2 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo()); |
| | | break; |
| | | } |
| | | workNo2 = workNo++; |
| | | souSta2 = inStn.getSourceStaNo().shortValue(); |
| | | sta2 = inStn.getStaNo().shortValue(); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | //rgv任务下发-------------------------------------------------------------- |
| | | RgvCommand command = new RgvCommand(); |
| | | command.setRgvNo(rgvSlave.getId()); // RGV编号 |
| | | //工位1 |
| | | command.setTaskNo1(workNo1); // 工作号 |
| | | command.setSourceStaNo1(souSta1); // 源站 |
| | | command.setDestinationStaNo1(sta1); // 目标站 |
| | | command.setAckFinish1(false); // 任务完成确认位 |
| | | |
| | | //工位2 |
| | | command.setTaskNo2(workNo2); // 工作号 |
| | | command.setSourceStaNo2(souSta2); // 源站 |
| | | command.setDestinationStaNo2(sta2); // 目标站 |
| | | command.setAckFinish2(false); // 任务完成确认位 |
| | | |
| | | if (workNo1 != 0 && workNo2 ==0){ |
| | | command.setTaskMode(RgvTaskModeType.FETCH_PUT2); // 任务模式: 取放货 |
| | | } else if (workNo1 == 0 && workNo2 !=0) { |
| | | command.setTaskMode(RgvTaskModeType.FETCH_PUT1); // 任务模式: 取放货 |
| | | }else { |
| | | command.setTaskMode(RgvTaskModeType.FETCH_PUT_ALL); // 任务模式: 取放货 |
| | | rgvProtocol = rgvProtocol.clone(); |
| | | } |
| | | command.setCommand(false); |
| | | MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(2, command)); |
| | | log.info("rgv任务下发:"+JSON.toJSONString(command)); |
| | | if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.IDLE && rgvProtocol.getLoaded1() == 0){ |
| | | boolean work1 = false; |
| | | boolean work2 = false; |
| | | int workNo1 = 0; |
| | | int workNo2 = 0; |
| | | short souSta1 = 0; |
| | | short sta1 = 0; |
| | | short souSta2 = 0; |
| | | short sta2 = 0; |
| | | Integer matnr = 0; |
| | | Integer matnr2 = 0; |
| | | String batch = ""; |
| | | String batch2 = ""; |
| | | short type = 0; |
| | | short type2 = 0; |
| | | short anfme = 0; |
| | | short anfme2 = 0; |
| | | |
| | | //工位一任务 |
| | | for (RgvSlave.Sta inStn : rgvSlave.getInStn()){ |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo()); |
| | | if (staProtocol == null) { |
| | | break; |
| | | // continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.isPakMk() && staProtocol.getWorkNo()>0){ |
| | | |
| | | WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo()); |
| | | if (Cools.isEmpty(wrkMast)){ |
| | | log.error("未找到工作档"); |
| | | continue; |
| | | } |
| | | workNo1 = wrkMast.getWrkNo(); |
| | | souSta1 = Utils.getRgvStaNo(rgvSlave.getId(),staProtocol.getSiteId()); |
| | | sta1 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo()); |
| | | work1 = true; |
| | | devpThread.setPakMk(inStn.getSourceStaNo(),false); |
| | | break; |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | if (rgvSlave.getId() != 3){ |
| | | //工位二任务 |
| | | for (RgvSlave.Sta inStn : rgvSlave.getInStn()){ |
| | | if (souSta1 == inStn.getSourceStaNo()){ |
| | | continue; |
| | | } |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, inStn.getSourcePlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(inStn.getSourceStaNo()); |
| | | if (staProtocol == null) { |
| | | break; |
| | | // continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()&& staProtocol.isPakMk() && staProtocol.getWorkNo()>0){ |
| | | |
| | | WrkMast wrkMast = wrkMastService.selectByworkNo(staProtocol.getWorkNo()); |
| | | if (Cools.isEmpty(wrkMast)){ |
| | | log.error("未找到工作档"); |
| | | continue; |
| | | } |
| | | workNo2 = wrkMast.getWrkNo(); |
| | | souSta2 = inStn.getSourceStaNo().shortValue(); |
| | | sta2 = Utils.getRgvEndStaNo(rgvSlave.getId(),wrkMast.getStaNo()); |
| | | work2 = true; |
| | | devpThread.setPakMk(inStn.getSourceStaNo(),false); |
| | | break; |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | if (work1 || work2){ |
| | | //rgv任务下发-------------------------------------------------------------- |
| | | RgvCommand command = new RgvCommand(); |
| | | command.setRgvNo(rgvSlave.getId()); // RGV编号 |
| | | //工位1 |
| | | command.setTaskNo1(workNo1); // 工作号 |
| | | command.setSourceStaNo1(souSta1); // 源站 |
| | | command.setDestinationStaNo1(sta1); // 目标站 |
| | | command.setAckFinish1(false); // 任务完成确认位 |
| | | |
| | | //工位2 |
| | | command.setTaskNo2(workNo2); // 工作号 |
| | | command.setSourceStaNo2(souSta2); // 源站 |
| | | command.setDestinationStaNo2(sta2); // 目标站 |
| | | command.setAckFinish2(false); // 任务完成确认位 |
| | | |
| | | command.setMatnr(matnr); |
| | | command.setMatnr2(matnr2); |
| | | command.setBatch(batch); |
| | | command.setBatch2(batch2); |
| | | command.setAnfme(anfme); |
| | | command.setAnfme2(anfme2); |
| | | |
| | | command.setType(type); |
| | | command.setType2(type2); |
| | | |
| | | if (workNo1 == 0 && workNo2 !=0){ |
| | | command.setTaskMode(RgvTaskModeType.FETCH_PUT2); // 任务模式: 2取放货 |
| | | } else if (workNo1 != 0 && workNo2 ==0) { |
| | | command.setTaskMode(RgvTaskModeType.FETCH_PUT1); // 任务模式: 1取放货 |
| | | }else { |
| | | command.setTaskMode(RgvTaskModeType.FETCH_PUT_ALL); // 任务模式: all取放货 |
| | | } |
| | | command.setCommand(false); |
| | | rgvTaskSave(command); |
| | | MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(2, command)); |
| | | log.info("rgv任务下发:"+JSON.toJSONString(command)); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | public synchronized void RGVTaskOver() { |
| | | for (RgvSlave rgvSlave:slaveProperties.getRgv()) { |
| | | if (rgvSlave.getId() ==2){ |
| | | continue; |
| | | } |
| | | ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); |
| | | RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); |
| | | if (Cools.isEmpty(rgvProtocol)){ |
| | | continue; |
| | | }else { |
| | | rgvProtocol = rgvProtocol.clone(); |
| | | } |
| | | |
| | | //工位一任务完成 |
| | | if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING && rgvProtocol.getLoaded1() == 0) { |
| | | |
| | | try { |
| | | Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", rgvProtocol.getRgvNo()).eq("wrk_no", rgvProtocol.getTaskNo1()); |
| | | WrkMastSta wrkMastSta1 = wrkMastStaService.selectOne(wrkMastStaWrapper); |
| | | if (Cools.isEmpty(wrkMastSta1)){ |
| | | log.error("完成{}号车工位一任务未找到对应rgv任务,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); |
| | | }else { |
| | | if (wrkMastSta1.getWrkType() == 8 ){ |
| | | wrkMastSta1.setWrkSts(3); |
| | | wrkMastStaService.update(wrkMastSta1,wrkMastStaWrapper); |
| | | } |
| | | } |
| | | |
| | | }catch (Exception e){ |
| | | log.error("完成{}号车工位一任务出错!!!!!!!!!!!!!!!!,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); |
| | | continue; |
| | | } |
| | | |
| | | |
| | | MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(3,new RgvCommand())); |
| | | log.info("{}号rgv工位一工作完成复位,工作号:{}",rgvSlave.getId(),rgvProtocol.getTaskNo1()); |
| | | } |
| | | |
| | | //工位二任务完成 |
| | | if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING2 && rgvProtocol.getLoaded2() == 0) { |
| | | try { |
| | | Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", rgvProtocol.getRgvNo()).eq("wrk_no", rgvProtocol.getTaskNo2()); |
| | | WrkMastSta wrkMastSta1 = wrkMastStaService.selectOne(wrkMastStaWrapper); |
| | | if (Cools.isEmpty(wrkMastSta1)){ |
| | | log.error("完成{}号车工位二任务未找到对应工作任务,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2()); |
| | | }else { |
| | | if (wrkMastSta1.getWrkType() == 9 ){ |
| | | wrkMastSta1.setWrkSts(3); |
| | | wrkMastStaService.update(wrkMastSta1,wrkMastStaWrapper); |
| | | }else if (wrkMastSta1.getWrkType() == 1){ |
| | | wrkMastSta1.setWrkSts(3); |
| | | wrkMastStaService.update(wrkMastSta1,wrkMastStaWrapper); |
| | | } |
| | | } |
| | | }catch (Exception e){ |
| | | log.error("完成{}号车工位一任务出错!!!!!!!!!!!!!!!!,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); |
| | | continue; |
| | | } |
| | | |
| | | |
| | | |
| | | MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(4,new RgvCommand())); |
| | | log.info("{}号rgv工位二工作完成复位,工作号:{}",rgvSlave.getId(),rgvProtocol.getTaskNo2()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | //二号rgv输送线命令下发 |
| | | public synchronized void RGVTaskput() { |
| | | for (RgvSlave rgvSlave:slaveProperties.getRgv()) { |
| | | if (rgvSlave.getId() ==2){ |
| | | continue; |
| | | } |
| | | ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); |
| | | RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); |
| | | if (Cools.isEmpty(rgvProtocol)){ |
| | | continue; |
| | | }else { |
| | | rgvProtocol = rgvProtocol.clone(); |
| | | } |
| | | |
| | | //工位一任务完成 |
| | | if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.OUTSTN1 && rgvProtocol.getLoaded1() == 1) { |
| | | WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo1()); |
| | | WrkMast wrkMast = wrkMastService.selectByworkNo(rgvProtocol.getTaskNo1()); |
| | | if (Cools.isEmpty(wrkMastSta)){ |
| | | log.error("未查询到rgv工作任务,rgv编号{},工作号{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); |
| | | continue; |
| | | } |
| | | for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){ |
| | | if (!Objects.equals(Utils.getStaNo(rgvSlave.getId(), wrkMastSta.getWrkEnd()), outStn.getStaNo())){ |
| | | continue; |
| | | } |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo()); |
| | | if (staProtocol == null) { |
| | | continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.isPakMk()){ |
| | | staProtocol.setWorkNo(wrkMastSta.getWrkNo().shortValue()); |
| | | staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); |
| | | MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol)); |
| | | } |
| | | } |
| | | } |
| | | |
| | | //工位二任务完成 |
| | | if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.OUTSTN8 && rgvProtocol.getLoaded2() == 1) { |
| | | WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo2()); |
| | | WrkMast wrkMast = wrkMastService.selectByworkNo(rgvProtocol.getTaskNo2()); |
| | | if (Cools.isEmpty(wrkMastSta)){ |
| | | log.error("未查询到rgv工作任务,rgv编号{},工作号{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2()); |
| | | continue; |
| | | } |
| | | for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){ |
| | | if (wrkMastSta.getStaEnd() != outStn.getStaNo()){ |
| | | continue; |
| | | } |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo()); |
| | | if (staProtocol == null) { |
| | | continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.isPakMk()){ |
| | | staProtocol.setWorkNo(wrkMastSta.getWrkNo2().shortValue()); |
| | | staProtocol.setStaNo(wrkMast.getStaNo().shortValue()); |
| | | MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol)); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | //二号rgv输送线命令下发 |
| | | public synchronized void RGV2Taskput() { |
| | | for (RgvSlave rgvSlave:slaveProperties.getRgv()) { |
| | | if (rgvSlave.getId() !=2){ |
| | | continue; |
| | | } |
| | | ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); |
| | | RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); |
| | | if (Cools.isEmpty(rgvProtocol)){ |
| | | continue; |
| | | }else { |
| | | rgvProtocol = rgvProtocol.clone(); |
| | | } |
| | | |
| | | //工位一任务完成 |
| | | if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.OUTSTN1 && rgvProtocol.getLoaded1() == 1) { |
| | | WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo1()); |
| | | if (Cools.isEmpty(wrkMastSta)){ |
| | | log.error("未查询到rgv工作任务,rgv编号{},工作号{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); |
| | | continue; |
| | | } |
| | | for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){ |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo()); |
| | | if (staProtocol == null) { |
| | | continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | |
| | | if (outStn.getStaPlcId() == 2){ |
| | | if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.isPakMk()){ |
| | | staProtocol.setWorkNo(wrkMastSta.getWrkNo().shortValue()); |
| | | if (wrkMastSta.getType() == 1){ |
| | | staProtocol.setStaNo((short) 9999); |
| | | }else { |
| | | staProtocol.setStaNo((short) 2106); |
| | | } |
| | | staProtocol.setMatnr(wrkMastSta.getMatnr1()); |
| | | |
| | | if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) { |
| | | continue; |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | //工位二任务完成 |
| | | if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.OUTSTN8 && rgvProtocol.getLoaded2() == 1) { |
| | | WrkMastSta wrkMastSta = wrkMastStaService.selectByRgvNoandWrkNo2(rgvProtocol.getRgvNo(), rgvProtocol.getTaskNo2()); |
| | | if (Cools.isEmpty(wrkMastSta)){ |
| | | log.error("未查询到rgv工作任务,rgv编号{},工作号{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2()); |
| | | continue; |
| | | } |
| | | for (RgvSlave.Sta outStn :rgvSlave.getOutStn()){ |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, outStn.getStaPlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(outStn.getStaNo()); |
| | | if (staProtocol == null) { |
| | | continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | if (outStn.getStaPlcId() == 2){ |
| | | if (staProtocol.isAutoing() && !staProtocol.isLoading() && staProtocol.isPakMk()){ |
| | | staProtocol.setWorkNo(wrkMastSta.getWrkNo2().shortValue()); |
| | | if (wrkMastSta.getType2() == 1){ |
| | | staProtocol.setStaNo((short) 9999); |
| | | }else { |
| | | staProtocol.setStaNo((short) 2106); |
| | | } |
| | | |
| | | staProtocol.setMatnr(wrkMastSta.getMatnr2()); |
| | | |
| | | if (!MessageQueue.offer(SlaveType.Devp, outStn.getStaPlcId(), new Task(2, staProtocol))) { |
| | | continue; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | public synchronized void RGV2TaskOver() { |
| | | for (RgvSlave rgvSlave:slaveProperties.getRgv()) { |
| | | if (rgvSlave.getId() !=2){ |
| | | continue; |
| | | } |
| | | ZyRgvThread rgvThread = (ZyRgvThread) SlaveConnection.get(SlaveType.Rgv, rgvSlave.getId()); |
| | | RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); |
| | | if (Cools.isEmpty(rgvProtocol)){ |
| | | continue; |
| | | }else { |
| | | rgvProtocol = rgvProtocol.clone(); |
| | | } |
| | | |
| | | //工位一任务完成 |
| | | if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING && rgvProtocol.getLoaded1() == 0) { |
| | | |
| | | try { |
| | | Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", rgvProtocol.getRgvNo()).eq("wrk_no", rgvProtocol.getTaskNo1()); |
| | | WrkMastSta wrkMastSta1 = wrkMastStaService.selectOne(wrkMastStaWrapper); |
| | | if (Cools.isEmpty(wrkMastSta1)){ |
| | | log.error("完成{}号车工位一任务未找到对应rgv任务,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); |
| | | }else { |
| | | if (wrkMastSta1.getWrkType() == 8 ){ |
| | | wrkMastSta1.setWrkSts(3); |
| | | wrkMastStaService.update(wrkMastSta1,wrkMastStaWrapper); |
| | | } |
| | | } |
| | | |
| | | }catch (Exception e){ |
| | | log.error("完成{}号车工位一任务出错!!!!!!!!!!!!!!!!,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); |
| | | continue; |
| | | } |
| | | |
| | | |
| | | MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(3,new RgvCommand())); |
| | | log.info("{}号rgv工位一工作完成复位,工作号:{}",rgvSlave.getId(),rgvProtocol.getTaskNo1()); |
| | | } |
| | | |
| | | //工位二任务完成 |
| | | if (rgvProtocol.getModeType() == RgvModeType.AUTO && rgvProtocol.getStatusType() == RgvStatusType.WAITING2 && rgvProtocol.getLoaded2() == 0) { |
| | | try { |
| | | Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", rgvProtocol.getRgvNo()).eq("wrk_no", rgvProtocol.getTaskNo2()); |
| | | WrkMastSta wrkMastSta1 = wrkMastStaService.selectOne(wrkMastStaWrapper); |
| | | if (Cools.isEmpty(wrkMastSta1)){ |
| | | log.error("完成{}号车工位二任务未找到对应工作任务,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo2()); |
| | | }else { |
| | | if (wrkMastSta1.getWrkType() == 9 ){ |
| | | wrkMastSta1.setWrkSts(3); |
| | | wrkMastStaService.update(wrkMastSta1,wrkMastStaWrapper); |
| | | }else if (wrkMastSta1.getWrkType() == 1){ |
| | | wrkMastSta1.setWrkSts(3); |
| | | wrkMastStaService.update(wrkMastSta1,wrkMastStaWrapper); |
| | | } |
| | | } |
| | | |
| | | }catch (Exception e){ |
| | | log.error("完成{}号车工位一任务出错!!!!!!!!!!!!!!!!,{}",rgvProtocol.getRgvNo(),rgvProtocol.getTaskNo1()); |
| | | continue; |
| | | } |
| | | |
| | | |
| | | |
| | | MessageQueue.offer(SlaveType.Rgv, rgvSlave.getId(), new Task(4,new RgvCommand())); |
| | | log.info("{}号rgv工位二工作完成复位,工作号:{}",rgvSlave.getId(),rgvProtocol.getTaskNo2()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | public boolean rgvTaskSave(RgvCommand command){ |
| | | Wrapper<WrkMastSta> wrkMastStaWrapper = new EntityWrapper<WrkMastSta>().eq("wrk_crn", command.getRgvNo()).eq("wrk_no", command.getTaskNo1()); |
| | | WrkMastSta wrkMastSta1 = wrkMastStaService.selectOne(wrkMastStaWrapper); |
| | | if (!Cools.isEmpty(wrkMastSta1)){ |
| | | wrkMastStaService.delete(wrkMastStaWrapper); |
| | | } |
| | | WrkMastSta wrkMastSta = new WrkMastSta(); |
| | | wrkMastSta.setWrkNo(Long.valueOf(command.getTaskNo1())); |
| | | wrkMastSta.setWrkNo2(Long.valueOf(command.getTaskNo2())); |
| | | wrkMastSta.setWrkStart(command.getSourceStaNo1().intValue()); |
| | | wrkMastSta.setWrkEnd(command.getDestinationStaNo1().intValue()); |
| | | wrkMastSta.setStaStart(command.getSourceStaNo2().intValue()); |
| | | wrkMastSta.setStaEnd(command.getDestinationStaNo2().intValue()); |
| | | wrkMastSta.setWrkSts(1); |
| | | Date now = new Date(); |
| | | wrkMastSta.setCreateTime(now); |
| | | wrkMastSta.setUpdateTime(now); |
| | | wrkMastSta.setWrkCrn(command.getRgvNo()); |
| | | wrkMastSta.setWrkType(command.getTaskMode().intValue()); |
| | | wrkMastSta.setMatnr1(command.getMatnr().intValue()); |
| | | wrkMastSta.setMatnr2(command.getMatnr2().intValue()); |
| | | wrkMastSta.setType(command.getType().intValue()); |
| | | wrkMastSta.setType2(command.getType2().intValue()); |
| | | wrkMastSta.setBatch(command.getBatch()); |
| | | wrkMastSta.setBatch2(command.getBatch2()); |
| | | wrkMastSta.setAnfme(command.getAnfme().intValue()); |
| | | wrkMastSta.setAnfme2(command.getAnfme2().intValue()); |
| | | return wrkMastStaService.insert(wrkMastSta); |
| | | } |
| | | |
| | | //二期组托 |
| | | public synchronized void generateStoreWrkFile2() { |
| | | // 根据输送线plc遍历 |
| | | for (DevpSlave devp : slaveProperties.getDevp()) { |
| | | if (devp.getId() != 2){ |
| | | continue; |
| | | } |
| | | // 遍历入库口 |
| | | for (DevpSlave.Sta inSta : devp.getInSta()) { |
| | | // 获取条码扫描仪信息 |
| | | BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode()); |
| | | if (barcodeThread == null) { |
| | | continue; |
| | | } |
| | | String barcode = barcodeThread.getBarcode(); |
| | | // 获取入库站信息 |
| | | SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); |
| | | if (staProtocol == null) { |
| | | continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | if (!Cools.isEmpty(barcode)) { |
| | | log.info("{}号条码扫描器检测条码信息:{}", inSta.getBarcode(), barcode); |
| | | if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) { |
| | | continue; |
| | | } |
| | | } else { |
| | | // led 异常显示 |
| | | // LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); |
| | | // if (ledThread != null) { |
| | | // String errorMsg = "扫码失败,请重试"; |
| | | // MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); |
| | | // } |
| | | continue; |
| | | } |
| | | // 判断是否满足入库条件 |
| | | if (staProtocol.isAutoing() |
| | | && staProtocol.isLoading() |
| | | && staProtocol.isInEnable() |
| | | && !staProtocol.isEmptyMk() |
| | | && staProtocol.getStaNo() != 9999 |
| | | && staProtocol.isPakMk()) { |
| | | |
| | | if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode)) { |
| | | log.info("{}号条码扫描器检测条码信息:{}", inSta.getBarcode(), barcode); |
| | | //条码为空或者不符合,退库到 |
| | | LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); |
| | | if (ledThread != null) { |
| | | String errorMsg = "扫码失败,请重试"; |
| | | MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); |
| | | } |
| | | continue; |
| | | } |
| | | |
| | | // 判断重复工作档 |
| | | WrkMast wrkMast = new WrkMast(); |
| | | if (barcode.length() == 8) { |
| | | wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode); |
| | | if (wrkMast != null) { |
| | | log.error("工作档中已存在该站状态为( 2.设备上走 )的数据,工作号={}", wrkMast.getWrkNo()); |
| | | continue; |
| | | } |
| | | } |
| | | // 获取入库通知档 |
| | | List<WaitPakin> waitPakins = waitPakinMapper.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", barcode).eq("io_status", "N")); |
| | | if (waitPakins.isEmpty()) { |
| | | try { |
| | | CreateComb(barcode,staProtocol.getMatnr().intValue(),staProtocol.getWorkNo().intValue()); |
| | | }catch (IOException e) { |
| | | throw new CoolException(e); |
| | | } |
| | | }else { |
| | | try { |
| | | LocTypeDto locTypeDto = new LocTypeDto(staProtocol); |
| | | SearchLocParam param = new SearchLocParam(); |
| | | param.setBarcode(barcode); |
| | | param.setIoType(1); |
| | | param.setSourceStaNo(inSta.getStaNo()); |
| | | param.setLocType1(locTypeDto.getLocType1()); |
| | | String response = new HttpHandler.Builder() |
| | | .setUri(wmsUrl) |
| | | .setPath("/rpc/pakin/loc/v1") |
| | | .setJson(JSON.toJSONString(param)) |
| | | .build() |
| | | .doPost(); |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); |
| | | if (jsonObject.getInteger("code").equals(200)) { |
| | | StartupDto dto = jsonObject.getObject("data", StartupDto.class); |
| | | |
| | | barcodeThread.setBarcode(""); |
| | | staProtocol.setWorkNo(dto.getWorkNo().shortValue()); |
| | | staProtocol.setStaNo(dto.getStaNo().shortValue()); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | ledThread.errorReset(); |
| | | boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | if (!result) { |
| | | throw new CoolException("更新plc站点信息失败"); |
| | | } |
| | | } else if(jsonObject.getInteger("code").equals(700)) { |
| | | log.error(barcode + "托盘识别异常,请先进行组托!"); |
| | | // led 异常显示 |
| | | ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); |
| | | if (ledThread != null) { |
| | | String errorMsg = barcode + "托盘识别异常,请先进行组托!"; |
| | | MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errorMsg)); |
| | | } |
| | | } else { |
| | | log.error("请求接口失败!!!url:{};request:{};response:{}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | public void CreateComb(String barcode,Integer code,Integer wrkNo) throws IOException { |
| | | String batch = ""; |
| | | Double anfme = 0D; |
| | | |
| | | WrkMastSta wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>().eq("wrk_no", wrkNo)); |
| | | if (Cools.isEmpty(wrkMastSta)){ |
| | | wrkMastSta = wrkMastStaService.selectOne(new EntityWrapper<WrkMastSta>().eq("wrk_no2", wrkNo)); |
| | | if (Cools.isEmpty(wrkMastSta)){ |
| | | throw new CoolException("未找到对应的任务信息"); |
| | | } |
| | | batch = wrkMastSta.getBatch2(); |
| | | anfme = wrkMastSta.getAnfme2().doubleValue(); |
| | | code = wrkMastSta.getMatnr2(); |
| | | }else { |
| | | batch = wrkMastSta.getBatch(); |
| | | anfme = wrkMastSta.getAnfme().doubleValue(); |
| | | code = wrkMastSta.getMatnr1(); |
| | | } |
| | | MatnrCode matnrCode = matnrCodeService.selectByCode(code); |
| | | if (Cools.isEmpty(matnrCode)){ |
| | | throw new CoolException("未找到对应的物料信息"); |
| | | } |
| | | CombParam combParam = new CombParam(); |
| | | ArrayList<CombParam.CombMat> combMats = new ArrayList<>(); |
| | | CombParam.CombMat combMat = new CombParam.CombMat(); |
| | | combParam.setBarcode(barcode); |
| | | combMat.setMatnr(matnrCode.getMatnr()); |
| | | combMat.setBatch(batch); |
| | | combMat.setAnfme(anfme); |
| | | |
| | | combMats.add(combMat); |
| | | combParam.setCombMats(combMats); |
| | | |
| | | String response = new HttpHandler.Builder() |
| | | .setUri(wmsUrl) |
| | | .setPath("/mobile/comb/auth") |
| | | .setJson(JSON.toJSONString(combParam)) |
| | | .build() |
| | | .doPost(); |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | if (jsonObject.getInteger("code").equals(200)) { |
| | | |
| | | } |
| | | } |
| | | |
| | | } |