|  |  |  | 
|---|
|  |  |  | basRgvService.updateById(basRgv); | 
|---|
|  |  |  | rgvThread.setPakMk(true); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | List<WrkMastSta> wrkMastStaPakingNum = wrkMastStaService.selectPakingWrkNum(basRgv.getRgvNo()); | 
|---|
|  |  |  | if(wrkMastStaPakingNum.size() <1){ | 
|---|
|  |  |  | basRgv.setPakAll("1"); //防止无其他任务时,连续取货无法恢复 | 
|---|
|  |  |  | basRgvService.updateById(basRgv); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | basRgv.setPakAll("1"); | 
|---|
|  |  |  | basRgvService.updateById(basRgv); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 只有当RGV空闲 并且 无任务时才继续执行 | 
|---|
|  |  |  | if (rgvProtocol.getStatusType1() == RgvStatusType.IDLE && | 
|---|
|  |  |  | rgvProtocol.getModeType() == RgvModeType.AUTO && rgvThread.isPakMk() | 
|---|
|  |  |  | 
|---|
|  |  |  | rgvThread.setPakMk(false);  //小车双工位锁定 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //            if(basRgv.getPakToCrn().equals("0")){ | 
|---|
|  |  |  | //                rgvRunWrkToCrn(rgv, rgvProtocol,mark); //若小车取到一个接驳任务,第二个工位只能取接驳任务 | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //            if(rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getTaskNo1() == 0 && rgvThread.isPakIn() && rgvThread.isPakRgv()){ | 
|---|
|  |  |  | //                rgvPreScheduling();//若暂无下发任务预调度提前到取货点 | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //            if (rgvProtocol.getStatusType1() == RgvStatusType.IDLE && rgvProtocol.getModeType() == RgvModeType.AUTO) { | 
|---|
|  |  |  | //                //小车执行放货任务 | 
|---|
|  |  |  | //                rgvOutExecute(); | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //            } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | public synchronized void rgvRunWrkMastInTest(){ | 
|---|
|  |  |  | BasRgvMap basRgvMap = basRgvMapMapper.selectById(1); | 
|---|
|  |  |  | List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute()); | 
|---|
|  |  |  | basRgvMap.setNowRoute(1021); //更新小车当前位置站点号 | 
|---|
|  |  |  | WrkMastSta wrkMastSta = wrkMastStaMapper.selectByWrkNo(342);//根据站点工作号和小车工作范围检索任务档 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //        WrkMastSta wrkMastSta2 = wrkMastStaMapper.selectByWorkSta(2, 1); | 
|---|
|  |  |  | boolean result = false; | 
|---|
|  |  |  | //        if(wrkMastSta2 != null && rgvProtocol.getRgvNo() == 1){ //距离计算   2楼单入库口不需要计算 | 
|---|
|  |  |  | //            result = rgvCalcDistance((int) rgvProtocol.getRgvNo(),wrkMastSta2.getStaEnd(),wrkMastSta.getStaStart());//工位2放货站点,工位1取货站点 | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | //        if(result){//若小车距离放货点距离近于取货点则跳过取货 true跳过取货/false优先取货 | 
|---|
|  |  |  | //            rgvThread.setPakRgv(false); | 
|---|
|  |  |  | //            continue; | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | wrkMastSta.setWorkSta(1); | 
|---|
|  |  |  | wrkMastSta.setRgvNo(1); | 
|---|
|  |  |  | wrkMastSta.setStaStart(1035); | 
|---|
|  |  |  | Short direction = 2;//双工位最终抵达位置 | 
|---|
|  |  |  | boolean sign = false; | 
|---|
|  |  |  | //        sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta,direction,); //命令下发 | 
|---|
|  |  |  | if (sign){ | 
|---|
|  |  |  | wrkMastSta.setWrkSts(1); | 
|---|
|  |  |  | try{ | 
|---|
|  |  |  | wrkMastStaMapper.updateById(wrkMastSta); | 
|---|
|  |  |  | log.error("更新小车任务成功"); | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | log.error("更新小车任务失败"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //            rgvThread.setPakOut(false);//出库不允许 | 
|---|
|  |  |  | boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),"2526"); | 
|---|
|  |  |  | if (!signMap){ | 
|---|
|  |  |  | log.error("货物搬运任务:工作号{}所属任务下发后地图同步失败",wrkMastSta.getWrkNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | log.error("工作号{}所属任务下发失败",wrkMastSta.getWrkNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(wrkMastSta3 != null ){ | 
|---|
|  |  |  | List<WrkMastSta> wrkMastStaPaking = wrkMastStaService.selectPakingWrk(wrkMastSta3.getStaStart()); | 
|---|
|  |  |  | if(wrkMastStaPaking.size() < 1){//已有标记不再标记 | 
|---|
|  |  |  | if(wrkMastStaPaking.size() < 1 ){//已有标记不再标记 | 
|---|
|  |  |  | wrkMastSta3.setMk(1); | 
|---|
|  |  |  | basRgv.setPakAll("0"); | 
|---|
|  |  |  | basRgvService.updateById(basRgv); | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | WrkMastSta wrkMastSta1 = wrkMastStaMapper.selectByWrkNo( rgvProtocol.getTaskNo1()); | 
|---|
|  |  |  | if(basRgv.getPakToCrn().equals("0")){ | 
|---|
|  |  |  | wrkMastSta = wrkMastStaMapper.selectNoInterfereCrn(route, route, Long.valueOf(staProtocol.getWorkNo())); | 
|---|
|  |  |  | wrkMastSta = wrkMastStaMapper.selectNoInterfereCrn(route, route, Long.valueOf(staProtocol.getWorkNo()));//处理接驳任务时,连续只取接驳任务 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | boolean result = false; | 
|---|
|  |  |  | if(wrkMastSta1!= null && rgvProtocol.getRgvNo() == 1){ //距离计算   2楼单入库口不需要计算 | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public void armTaskAssignmentCallApiLogSave(StaProtocol staProtocol ,String tableName, String response, Boolean bool) { | 
|---|
|  |  |  | ApiLog apiLog = apiLogService.selectOne(new EntityWrapper<ApiLog>() | 
|---|
|  |  |  | public void armTaskAssignmentCallApiLogSave(StaProtocol staProtocol, String tableName, String response, Boolean bool) { | 
|---|
|  |  |  | // 查询符合条件的所有 ApiLog | 
|---|
|  |  |  | List<ApiLog> apiLogs = apiLogService.selectList(new EntityWrapper<ApiLog>() | 
|---|
|  |  |  | .eq("namespace", "机械臂任务相关") | 
|---|
|  |  |  | .eq("request", "站点号:" + staProtocol.getSiteId()) | 
|---|
|  |  |  | .eq("response", response) | 
|---|
|  |  |  | 
|---|
|  |  |  | .orderBy("create_time", false) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!Cools.isEmpty(apiLog)){ | 
|---|
|  |  |  | // 遍历结果集,检查时间戳差值是否小于 5 分钟 | 
|---|
|  |  |  | for (ApiLog apiLog : apiLogs) { | 
|---|
|  |  |  | long parseLong = Long.parseLong(apiLog.getTimestamp()); | 
|---|
|  |  |  | if (new Date().getTime()-parseLong<5*1000*60){ | 
|---|
|  |  |  | if (new Date().getTime() - parseLong < 5 * 1000 * 60) { | 
|---|
|  |  |  | // 如果找到符合条件的记录且时间差小于 5 分钟,则不保存新记录,直接返回 | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 如果没有符合条件的记录,或者所有记录时间差大于 5 分钟,保存新的日志 | 
|---|
|  |  |  | apiLogService.save("机械臂任务相关", tableName, "null", staProtocol.getBarcode(), | 
|---|
|  |  |  | "站点号:" + staProtocol.getSiteId() , | 
|---|
|  |  |  | "站点号:" + staProtocol.getSiteId(), | 
|---|
|  |  |  | response, bool); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /* | 
|---|
|  |  |  | * agv任务下发:AGV库位==》输送线站点 | 
|---|
|  |  |  | * */ | 
|---|