| | |
| | | import com.baomidou.mybatisplus.mapper.Wrapper; |
| | | import com.core.common.Cools; |
| | | import com.core.common.DateUtils; |
| | | import com.core.common.R; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.entity.param.ArmOrderAssignmentParam; |
| | |
| | | wrkNo++; |
| | | staProtocol.setStaNo(inSta.getBackSta().shortValue()); |
| | | devpThread.setPakMk(staProtocol.getSiteId(), false); |
| | | staProtocol.setPakMk(false); |
| | | MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); |
| | | System.out.println(staProtocol); |
| | | log.error("输送线下发1:"+wrkNo+","+inSta.getBackSta()); |
| | | } |
| | | |
| | |
| | | int wrkNo1 = basDevpService.selectCount(new EntityWrapper<BasDevp>().eq("wrk_no", wrkMast.getWrkNo())); |
| | | if (wrkNo1 != 0){ |
| | | News.error(barcode + "条码已存在状态为( 2.设备上走 )的数据,请查看WCS输送线界面,工作号={}", wrkMast.getWrkNo()); |
| | | StaProtocol staProtocolNew = new StaProtocol(); |
| | | staProtocolNew.setWorkNo(wrkNo1); |
| | | staProtocolNew.setStaNo(RouteUtils.SouStaEnd(wrkMast.getStaNo(),wrkMast.getSourceStaNo())); |
| | | staProtocolNew.setSiteId(staProtocol.getSiteId()); |
| | | MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocolNew)); |
| | | if (ledThread != null) { |
| | | News.error(methodName + ":扫码失败,请重试"); |
| | | MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, barcode + "条码已存在状态为( 2.设备上走 )的任务,工作号="+ wrkMast.getWrkNo())); |
| | |
| | | // if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y") |
| | | // && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) { |
| | | |
| | | if (staProtocol.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y") |
| | | if (staProtocol.isAutoing() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y") && !staProtocol.isLoading() |
| | | ) { |
| | | // if (slave.getId() == 1 || slave.getId() == 2){ |
| | | // if (staProtocol.isLoading() || staProtocol.getWorkNo() != 0 || !staProtocol.isOutEnable()){ |
| | |
| | | log.error("{}号RGV尚未在数据库进行维护!4", rgv.getId()); |
| | | continue; |
| | | } |
| | | if(rgvProtocol.getStatusType1() == RgvStatusType.WORKING){ |
| | | rgvThread.setPaking(true); |
| | | } |
| | | //小车无任务时跳过 |
| | | if(rgvProtocol.getTaskNo1() ==0 && rgvProtocol.getTaskNo2() == 0 ){ |
| | | continue; |
| | | } |
| | | if(!rgvThread.isPaking()){ |
| | | continue; |
| | | |
| | | } |
| | | List<WrkMastSta> wrkMastStaLock = wrkMastStaService.selectLockWrk(rgv.getId()); |
| | | if(wrkMastStaLock.size() == 1){ |
| | | if(!basRgv.getPakAll().equals("1")){ |
| | | continue; |
| | | } |
| | | if(rgvThread.isPakIn()){ |
| | | if(basRgv.getPakIn().equals("1")){ |
| | | for(RgvSlave.RgvStn rgvStn : rgv.getRgvInPStn()){//入库放货站点 |
| | | boolean flag = false; |
| | | |
| | |
| | | } |
| | | |
| | | } |
| | | basRgv.setPakRgv("1"); |
| | | basRgvService.updateById(basRgv); |
| | | } |
| | | //出库放货 |
| | | if( rgvThread.isPakOut()){ |
| | | if( basRgv.getPakOut().equals("1")){ |
| | | for(RgvSlave.RgvStn rgvStn : rgv.getRgvOutPStn()){//入库放货站点 |
| | | boolean flag = false; |
| | | |
| | |
| | | BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); |
| | | basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //更新小车当前位置站点号 |
| | | Integer workNo = 0; |
| | | if(rgvThread.isPakToCrn()){ |
| | | if(basRgv.getPakToCrn().equals("1")){ |
| | | workNo = rgvProtocol.getTaskNo1() !=0 ? rgvProtocol.getTaskNo1():rgvProtocol.getTaskNo2(); //正常情况出库放货优先工位1放 |
| | | }else{ |
| | | workNo = rgvProtocol.getTaskNo2() !=0 ? rgvProtocol.getTaskNo2():rgvProtocol.getTaskNo1(); //接驳情况优先工位2放 |
| | |
| | | } |
| | | |
| | | } |
| | | basRgv.setPakRgv("1"); |
| | | basRgvService.updateById(basRgv); |
| | | } |
| | | rgvThread.setPakRgv(true);//优先放货完成,开启预调度 |
| | | } |
| | | } |
| | | /** |
| | |
| | | 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尚未在数据库进行维护!4", rgv.getId()); |
| | | continue; |
| | | } |
| | | Long taskNo1 = Long.valueOf(rgvProtocol.getTaskNo1()); |
| | |
| | | && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0 |
| | | && !rgvProtocol.isLoaded1ing() |
| | | && !rgvProtocol.isLoaded2ing()){ |
| | | rgvThread.setPakRgv(true); |
| | | List<WrkMastSta> wrkMastStaLock = wrkMastStaService.selectLockWrk(); |
| | | List<WrkMastSta> wrkMastStaLockT = wrkMastStaService.selectLockWrkT(); |
| | | |
| | | if(wrkMastStaLock.size() > 0 && rgvProtocol.getRgvNo() == 1){ |
| | | continue ; |
| | | } |
| | | if(wrkMastStaLockT.size() > 0 && rgvProtocol.getRgvNo() == 2){ |
| | | continue ; |
| | | } |
| | | basRgv.setPakRgv("1"); |
| | | basRgv.setPakToCrn("1"); |
| | | basRgv.setPakIn("1"); |
| | | basRgv.setPakOut("1"); |
| | | basRgv.setPakAll("1"); |
| | | basRgvService.updateById(basRgv); |
| | | rgvThread.setPakMk(true); |
| | | rgvThread.setPakIn(true); |
| | | rgvThread.setPakOut(true); |
| | | rgvThread.setPakToCrn(true); |
| | | } |
| | | |
| | | } |
| | |
| | | if (rgvProtocol == null) { |
| | | continue; |
| | | } |
| | | |
| | | BasRgv basRgv = basRgvService.selectById(rgv.getId()); |
| | | if (basRgv == null) { |
| | | log.error("{}号RGV尚未在数据库进行维护!4", rgv.getId()); |
| | | continue; |
| | | } |
| | | if(rgvProtocol.getStatusType1() == RgvStatusType.WORKING){ |
| | | // log.error("解锁"); |
| | | rgvThread.setPaking(true); |
| | | } |
| | | if(rgvProtocol.isLoaded1ing() && rgvProtocol.isLoaded2ing()){ |
| | | basRgv.setPakAll("1"); |
| | | basRgvService.updateById(basRgv); |
| | | } |
| | | // 只有当RGV空闲 并且 无任务时才继续执行 |
| | | if (rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getModeType() == RgvModeType.AUTO && rgvThread.isPakMk() && rgvThread.isPakToCrn() && rgvThread.isPaking()) { |
| | | if (rgvProtocol.getStatusType1() == RgvStatusType.IDLE && |
| | | rgvProtocol.getModeType() == RgvModeType.AUTO && rgvThread.isPakMk() |
| | | && basRgv.getPakToCrn().equals("1") && rgvThread.isPaking()) { |
| | | News.warnNoLog(""+mark+" - 0"+" - 开始执行RGV入出库作业下发"); |
| | | // 如果最近一次是入库模式 |
| | | // rgvRunWrkMastInTest(); |
| | | |
| | | if (rgvProtocol.getLastIo().equals("I")) { |
| | | if (basRgv.getInEnable().equals("1") && rgvThread.isPakIn()) { |
| | | if (basRgv.getInEnable().equals("1") && basRgv.getPakIn().equals("1")) { |
| | | //mark - 1 - .... |
| | | this.rgvRunWrkMastIn(rgv, rgvProtocol,mark); // 入库 |
| | | if (rgvProtocol.getTaskNo1()==0){ |
| | | this.rgvRunWrkMastIn(rgv, rgvProtocol,mark); // 入库 |
| | | } |
| | | rgvProtocol.setLastIo("O"); |
| | | } else if (basRgv.getOutEnable().equals("1") && rgvThread.isPakOut()) { |
| | | } else if (basRgv.getOutEnable().equals("1") && basRgv.getPakOut().equals("1")) { |
| | | //mark - 2 - .... |
| | | this.rgvRunWrkMastOut(rgv, rgvProtocol,mark); // 出库 |
| | | if (rgvProtocol.getTaskNo2()==0){ |
| | | this.rgvRunWrkMastOut(rgv, rgvProtocol,mark); // 出库 |
| | | } |
| | | rgvProtocol.setLastIo("I"); |
| | | } |
| | | } |
| | | // 如果最近一次是出库模式 |
| | | else if (rgvProtocol.getLastIo().equals("O")) { |
| | | if (basRgv.getOutEnable().equals("1") && rgvThread.isPakOut()) { |
| | | this.rgvRunWrkMastOut(rgv, rgvProtocol,mark); // 出库 |
| | | if (basRgv.getOutEnable().equals("1") && basRgv.getPakOut().equals("1")) { |
| | | if (rgvProtocol.getTaskNo2()==0){ |
| | | this.rgvRunWrkMastOut(rgv, rgvProtocol,mark); // 出库 |
| | | } |
| | | rgvProtocol.setLastIo("I"); |
| | | } else if (basRgv.getInEnable().equals("1") && rgvThread.isPakIn()) { |
| | | this.rgvRunWrkMastIn(rgv, rgvProtocol,mark); // 入库 |
| | | } else if (basRgv.getInEnable().equals("1") && basRgv.getPakIn().equals("1")) { |
| | | if (rgvProtocol.getTaskNo1()==0){ |
| | | this.rgvRunWrkMastIn(rgv, rgvProtocol,mark); // 入库 |
| | | } |
| | | rgvProtocol.setLastIo("O"); |
| | | } |
| | | } |
| | |
| | | if(wrkMastSta1 != null && wrkMastSta2 != null){ |
| | | rgvThread.setPakMk(false); //小车双工位锁定 |
| | | } |
| | | if(!rgvThread.isPakToCrn()){ |
| | | rgvRunWrkToCrn(rgv, rgvProtocol,mark); //若小车取到一个接驳任务,第二个工位只能取接驳任务 |
| | | } |
| | | // if(!rgvThread.isPakToCrn()){ |
| | | // rgvRunWrkToCrn(rgv, rgvProtocol,mark); //若小车取到一个接驳任务,第二个工位只能取接驳任务 |
| | | // } |
| | | // if(rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getTaskNo1() == 0 && rgvThread.isPakIn() && rgvThread.isPakRgv()){ |
| | | // rgvPreScheduling();//若暂无下发任务预调度提前到取货点 |
| | | // } |
| | |
| | | public synchronized void rgvRunWrkMastIn(RgvSlave slave, RgvProtocol rgvProtocol,Integer mark) { |
| | | for (RgvSlave.RgvStn rgvStn : slave.getRgvInTStn()) {//rgv入库取货站点 |
| | | boolean flag = false; |
| | | BasRgv basRgv = basRgvService.selectById(slave.getId()); |
| | | if (basRgv == null) { |
| | | log.error("{}号RGV尚未在数据库进行维护!4", slave.getId()); |
| | | continue; |
| | | } |
| | | //遍历rgv入库取货站点 |
| | | DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo()); |
| | |
| | | result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta2.getStaEnd(),wrkMastSta.getStaStart());//工位2放货站点,工位1取货站点 |
| | | } |
| | | if(result){//若小车距离放货点距离近于取货点则跳过取货 true跳过取货/false优先取货 |
| | | rgvThread.setPakRgv(false); |
| | | basRgv.setPakRgv("0"); |
| | | basRgvService.updateById(basRgv); |
| | | |
| | | // rgvThread.setPakRgv(false); |
| | | continue; |
| | | } |
| | | wrkMastSta.setWorkSta(wrkMastSta2 !=null ? 1 : 2); |
| | |
| | | if (sign){ |
| | | if(wrkMastSta3 != null){ |
| | | wrkMastSta3.setMk(1); |
| | | basRgv.setPakAll("0"); |
| | | basRgvService.updateById(basRgv); |
| | | |
| | | try{ |
| | | wrkMastStaMapper.updateById(wrkMastSta3); |
| | | log.error("锁定相隔站点任务"); |
| | |
| | | } |
| | | |
| | | } |
| | | basRgv.setPakOut("0"); |
| | | basRgvService.updateById(basRgv); |
| | | rgvThread.setPaking(false); |
| | | rgvThread.setPakOut(false);//出库不允许 |
| | | // rgvThread.setPakOut(false);//出库不允许 |
| | | // basRgvService.updateById(basRgv); |
| | | |
| | | try{ |
| | | wrkMastSta.setWrkSts(1); |
| | | wrkMastStaMapper.updateById(wrkMastSta); |
| | |
| | | DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo()); |
| | | RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo()); |
| | | BasRgv basRgv = basRgvService.selectById(slave.getId()); |
| | | if (basRgv == null) { |
| | | log.error("{}号RGV尚未在数据库进行维护!4", slave.getId()); |
| | | continue; |
| | | } |
| | | StaProtocol staProtocol2 = null; |
| | | WrkMastSta wrkMastSta3 = null; |
| | | |
| | |
| | | result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta1.getStaEnd(),wrkMastSta.getStaStart());//工位2放货站点,工位1取货站点 |
| | | } |
| | | if(result){//若小车距离放货点距离近于取货点则跳过取货 true跳过取货/false优先取货 |
| | | rgvThread.setPakRgv(false); |
| | | basRgv.setPakRgv("0"); |
| | | basRgvService.updateById(basRgv); |
| | | |
| | | // rgvThread.setPakRgv(false); |
| | | continue; |
| | | } |
| | | wrkMastSta.setWorkSta(wrkMastSta1 !=null ? 2 : 1);//若1号工位有任务给2号工位 |
| | |
| | | sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //命令下发 |
| | | if (sign){ |
| | | if(LEFT_POSITION.contains(wrkMastSta.getStaEnd())){ |
| | | rgvThread.setPakToCrn(false); //锁定小车只能接接驳任务 |
| | | basRgv.setPakToCrn("0"); |
| | | basRgvService.updateById(basRgv); |
| | | |
| | | // rgvThread.setPakToCrn(false); //锁定小车只能接接驳任务 |
| | | } |
| | | if(wrkMastSta3 != null){ |
| | | wrkMastSta3.setMk(1); |
| | |
| | | } |
| | | |
| | | } |
| | | basRgv.setPakIn("0"); |
| | | basRgvService.updateById(basRgv); |
| | | |
| | | rgvThread.setPaking(false); |
| | | rgvThread.setPakIn(false);//入库不允许 |
| | | // rgvThread.setPakIn(false);//入库不允许 |
| | | try{ |
| | | wrkMastSta.setWrkSts(1); |
| | | wrkMastStaMapper.updateById(wrkMastSta); |
| | |
| | | /** |
| | | * 小车出库接驳任务取货下发 |
| | | */ |
| | | public synchronized void rgvRunWrkToCrn(RgvSlave slave, RgvProtocol rgvProtocol,Integer mark){ |
| | | for (RgvSlave.RgvStn rgvStn : slave.getRgvOutTStn()) {//rgv出库取货站点 |
| | | boolean flag = false; |
| | | //遍历rgv入库取货站点 |
| | | DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId()); |
| | | StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo()); |
| | | RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo()); |
| | | StaProtocol staProtocol2 = null; |
| | | if(rgvStn.getStaNo2()!= null ){ |
| | | staProtocol2 = devpThread.getStation().get(rgvStn.getStaNo2()); |
| | | if (staProtocol2 == null) { |
| | | News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv入库站信息(staProtocol!=null继续执行):staProtocol=" + staProtocol); |
| | | continue; |
| | | } else { |
| | | staProtocol2 = staProtocol2.clone(); |
| | | } |
| | | BasDevp staDetl2 = basDevpService.selectById(rgvStn.getStaNo2()); |
| | | if (staDetl2 == null) { |
| | | News.error("" + mark + " - 1" + " - 2" + " - 入库 ===>>Rgv站点在数据库不存在, 站点编号={}", rgvStn.getStaNo()); |
| | | continue; |
| | | } |
| | | } |
| | | if (staProtocol == null) { |
| | | News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv出库站信息(staProtocol!=null继续执行):staProtocol=" + staProtocol); |
| | | continue; |
| | | } else { |
| | | staProtocol = staProtocol.clone(); |
| | | } |
| | | |
| | | // 查询站点详细信息 |
| | | BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo()); |
| | | if (staDetl == null) { |
| | | News.error("" + mark + " - 1" + " - 2" + " - 出库 ===>>Rgv站点在数据库不存在, 站点编号={}", rgvStn.getStaNo()); |
| | | continue; |
| | | } |
| | | |
| | | if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 |
| | | && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) { |
| | | flag = true; |
| | | } |
| | | if (!flag) { |
| | | News.errorNoLog("" + mark + " - 1" + " - 3" + " - Rgv出库取货站信息(以下需要全true):" |
| | | + "自动信号" + staProtocol.isAutoing() + "有物信号" + staProtocol.isLoading() |
| | | + "工作号>0" + staProtocol.getWorkNo() + "可入信号" + staProtocol.isOutEnable() |
| | | + "能入信号(wms设置).equals(\"Y\")" + staDetl.getCanouting()); |
| | | continue; |
| | | } |
| | | BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); |
| | | List<Integer> route = new ArrayList<>(); |
| | | switch (rgvProtocol.getRgvNo()){ |
| | | case 1: route = RouteUtils.getRouteOne();break; |
| | | case 2: route = RouteUtils.getRouteTwo();break; |
| | | } |
| | | basRgvMap.setNowRoute(rgvProtocol.getRgvPosI2()); //更新小车当前位置站点号 |
| | | WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfereToCrn(route, route, Long.valueOf(staProtocol.getWorkNo()));//根据站点工作号和小车工作范围检索任务档 |
| | | if( null == wrkMastSta ) { |
| | | News.infoNoLog("" + mark + " - 1" + " - 4" + " - 查询无待入库数据--wrk_sts0, 工作号={}", staProtocol.getWorkNo()); |
| | | continue; |
| | | } |
| | | WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWrkNo( rgvProtocol.getTaskNo1()); |
| | | boolean result = false; |
| | | if(wrkMastSta1!= null && rgvProtocol.getRgvNo() == 1){ //距离计算 2楼单入库口不需要计算 |
| | | result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta1.getStaEnd(),wrkMastSta.getStaStart());//工位2放货站点,工位1取货站点 |
| | | } |
| | | if(result){//若小车距离放货点距离近于取货点则跳过取货 true跳过取货/false优先取货 |
| | | rgvThread.setPakRgv(false); |
| | | continue; |
| | | } |
| | | wrkMastSta.setWorkSta(wrkMastSta1 !=null ? 2 : 1);//若1号工位有任务给2号工位 |
| | | wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo()); |
| | | boolean sign = false; |
| | | sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //命令下发 |
| | | if (sign){ |
| | | rgvThread.setPakIn(false);//入库不允许 |
| | | try{ |
| | | wrkMastSta.setWrkSts(1); |
| | | wrkMastStaMapper.updateById(wrkMastSta); |
| | | log.error("更新小车任务成功"); |
| | | }catch (Exception e){ |
| | | log.error("更新小车任务失败"); |
| | | } |
| | | } else { |
| | | log.error("工作号{}所属任务下发失败",wrkMastSta.getWrkNo()); |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | // public synchronized void rgvRunWrkToCrn(RgvSlave slave, RgvProtocol rgvProtocol,Integer mark){ |
| | | // for (RgvSlave.RgvStn rgvStn : slave.getRgvOutTStn()) {//rgv出库取货站点 |
| | | // boolean flag = false; |
| | | // //遍历rgv入库取货站点 |
| | | // DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, rgvStn.getDevpPlcId()); |
| | | // StaProtocol staProtocol = devpThread.getStation().get(rgvStn.getStaNo()); |
| | | // RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, (int) rgvProtocol.getRgvNo()); |
| | | // StaProtocol staProtocol2 = null; |
| | | // if(rgvStn.getStaNo2()!= null ){ |
| | | // staProtocol2 = devpThread.getStation().get(rgvStn.getStaNo2()); |
| | | // if (staProtocol2 == null) { |
| | | // News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv入库站信息(staProtocol!=null继续执行):staProtocol=" + staProtocol); |
| | | // continue; |
| | | // } else { |
| | | // staProtocol2 = staProtocol2.clone(); |
| | | // } |
| | | // BasDevp staDetl2 = basDevpService.selectById(rgvStn.getStaNo2()); |
| | | // if (staDetl2 == null) { |
| | | // News.error("" + mark + " - 1" + " - 2" + " - 入库 ===>>Rgv站点在数据库不存在, 站点编号={}", rgvStn.getStaNo()); |
| | | // continue; |
| | | // } |
| | | // } |
| | | // if (staProtocol == null) { |
| | | // News.infoNoLog("" + mark + " - 1" + " - 1" + " - Rgv出库站信息(staProtocol!=null继续执行):staProtocol=" + staProtocol); |
| | | // continue; |
| | | // } else { |
| | | // staProtocol = staProtocol.clone(); |
| | | // } |
| | | // |
| | | // // 查询站点详细信息 |
| | | // BasDevp staDetl = basDevpService.selectById(rgvStn.getStaNo()); |
| | | // if (staDetl == null) { |
| | | // News.error("" + mark + " - 1" + " - 2" + " - 出库 ===>>Rgv站点在数据库不存在, 站点编号={}", rgvStn.getStaNo()); |
| | | // continue; |
| | | // } |
| | | // |
| | | // if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 |
| | | // && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y")) { |
| | | // flag = true; |
| | | // } |
| | | // if (!flag) { |
| | | // News.errorNoLog("" + mark + " - 1" + " - 3" + " - Rgv出库取货站信息(以下需要全true):" |
| | | // + "自动信号" + staProtocol.isAutoing() + "有物信号" + staProtocol.isLoading() |
| | | // + "工作号>0" + staProtocol.getWorkNo() + "可入信号" + staProtocol.isOutEnable() |
| | | // + "能入信号(wms设置).equals(\"Y\")" + staDetl.getCanouting()); |
| | | // continue; |
| | | // } |
| | | // BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvProtocol.getRgvNo()); |
| | | // List<Integer> route = new ArrayList<>(); |
| | | // switch (rgvProtocol.getRgvNo()){ |
| | | // case 1: route = RouteUtils.getRouteOne();break; |
| | | // case 2: route = RouteUtils.getRouteTwo();break; |
| | | // } |
| | | // basRgvMap.setNowRoute(rgvProtocol.getRgvPosI2()); //更新小车当前位置站点号 |
| | | // WrkMastSta wrkMastSta = wrkMastStaMapper.selectNoInterfereToCrn(route, route, Long.valueOf(staProtocol.getWorkNo()));//根据站点工作号和小车工作范围检索任务档 |
| | | // if( null == wrkMastSta ) { |
| | | // News.infoNoLog("" + mark + " - 1" + " - 4" + " - 查询无待入库数据--wrk_sts0, 工作号={}", staProtocol.getWorkNo()); |
| | | // continue; |
| | | // } |
| | | // WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWrkNo( rgvProtocol.getTaskNo1()); |
| | | // boolean result = false; |
| | | // if(wrkMastSta1!= null && rgvProtocol.getRgvNo() == 1){ //距离计算 2楼单入库口不需要计算 |
| | | // result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta1.getStaEnd(),wrkMastSta.getStaStart());//工位2放货站点,工位1取货站点 |
| | | // } |
| | | // if(result){//若小车距离放货点距离近于取货点则跳过取货 true跳过取货/false优先取货 |
| | | // rgvThread.setPakRgv(false); |
| | | // continue; |
| | | // } |
| | | // wrkMastSta.setWorkSta(wrkMastSta1 !=null ? 2 : 1);//若1号工位有任务给2号工位 |
| | | // wrkMastSta.setRgvNo((int) rgvProtocol.getRgvNo()); |
| | | // boolean sign = false; |
| | | // sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta); //命令下发 |
| | | // if (sign){ |
| | | // rgvThread.setPakIn(false);//入库不允许 |
| | | // try{ |
| | | // wrkMastSta.setWrkSts(1); |
| | | // wrkMastStaMapper.updateById(wrkMastSta); |
| | | // log.error("更新小车任务成功"); |
| | | // }catch (Exception e){ |
| | | // log.error("更新小车任务失败"); |
| | | // } |
| | | // } else { |
| | | // log.error("工作号{}所属任务下发失败",wrkMastSta.getWrkNo()); |
| | | // } |
| | | // |
| | | // |
| | | // } |
| | | // } |
| | | /** |
| | | * 执行小车搬运任务 |
| | | * |