| | |
| | | return R.ok(); |
| | | } |
| | | |
| | | @PostMapping("/hand/control/empOut") |
| | | @Transactional |
| | | @ManagerAuth(memo = "空架离场") |
| | | @Synchronized |
| | | public R empOut(@RequestBody AgvMobileStartPakin param){ |
| | | agvMobileService.empOut(param, getUserId()); |
| | | return R.ok(); |
| | | } |
| | | |
| | | @PostMapping("/hand/control/empIn") |
| | | @Transactional |
| | | @ManagerAuth(memo = "空架进场") |
| | | @Synchronized |
| | | public R empIn(@RequestBody AgvMobileStartPakin param){ |
| | | agvMobileService.empIn(param, getUserId()); |
| | | return R.ok(); |
| | | } |
| | | |
| | | @PostMapping("/hand/control/doBack") |
| | | @Transactional |
| | | @ManagerAuth(memo = "站点回退") |
| | |
| | | */ |
| | | String handBack(AgvMobileStartPakin param, Long userId); |
| | | |
| | | /** |
| | | * 空架离场 |
| | | */ |
| | | String empOut(AgvMobileStartPakin param, Long userId); |
| | | |
| | | /** |
| | | * 空架进场 |
| | | */ |
| | | String empIn(AgvMobileStartPakin param, Long userId); |
| | | |
| | | } |
| | |
| | | if (agvWrkMast.getCrnNo() != agvBasDevp.getFloor()) { |
| | | throw new CoolException("请移动到->" + agvWrkMast.getCrnNo() + "楼入库点入库"); |
| | | } |
| | | AgvLocMast locNo = agvCommonService.getLocNo(3, 1); |
| | | //工作状态 |
| | | agvWrkMast.setWrkSts(211L); |
| | | //入出库类型 |
| | |
| | | return "ok"; |
| | | } |
| | | /* |
| | | 空架离场 |
| | | */ |
| | | @Override |
| | | @Transactional |
| | | @Synchronized |
| | | public String empOut(AgvMobileStartPakin param, Long userId) { |
| | | Date now = new Date(); |
| | | AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", param.getDevNo())); |
| | | Integer oldWrkNo = agvWrkMast.getWrkNo(); |
| | | if (Cools.isEmpty(agvWrkMast)) { |
| | | throw new CoolException("工作档中没有此站点任务"); |
| | | } |
| | | agvWrkMast.setWrkSts(213L); |
| | | agvWrkMast.setSourceLocNo(""); |
| | | if (!agvWrkMastService.update(agvWrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no",agvWrkMast.getWrkNo()))) { |
| | | throw new CoolException("更新工作档失败"); |
| | | } |
| | | // 更新源库位状态 |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getDevNo(),"O","",agvWrkMast.getWhsType().shortValue()); |
| | | return "ok"; |
| | | } |
| | | /* |
| | | 空架进场 |
| | | */ |
| | | @Override |
| | | @Transactional |
| | | @Synchronized |
| | | public String empIn(AgvMobileStartPakin param, Long userId) { |
| | | Date now = new Date(); |
| | | AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("barcode", param.getBarcode())); |
| | | if (Cools.isEmpty(agvWrkMast)) { |
| | | throw new CoolException("工作档中没有此站点任务"); |
| | | } |
| | | agvWrkMast.setWrkSts(214L); |
| | | agvWrkMast.setSourceLocNo(param.getDevNo()); |
| | | if (!agvWrkMastService.update(agvWrkMast,new EntityWrapper<AgvWrkMast>().eq("wrk_no",agvWrkMast.getWrkNo()))) { |
| | | throw new CoolException("更新工作档失败"); |
| | | } |
| | | // 更新源库位状态 |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(param.getDevNo(),"F",param.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | return "ok"; |
| | | } |
| | | /* |
| | | * 站点回退 |
| | | */ |
| | | @Override |
| | |
| | | //目标站点 |
| | | String devNo = wrkMast.getLocNo(); |
| | | if (wrkMast.getIoType() == 110 || wrkMast.getIoType() == 109) { |
| | | agvLocMastService.updateLocStsByLocNo(locNo,"D",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo)); |
| | | } else { |
| | | agvLocMastService.updateLocStsByLocNo(locNo,"F",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo)); |
| | | } |
| | | if (wrkMast.getIoType() == 109){ |
| | | if (Cools.isEmpty(wrkMast.getLocNo())) { |
| | | if (wrkMast.getIoType() == 109){ |
| | | // 源库位是站点 |
| | | if ("DB".equals(locNo.substring(0,2))) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(locNo,"F",wrkMast.getBarcode(),wrkMast.getWhsType().shortValue()); |
| | | agvLocMastService.updateLocStsByLocNo(devNo,"O","",null); |
| | | // 源库位是库位 目标库位是站点 |
| | | } else if ("DB".equals(devNo.substring(0,2))) { |
| | | agvLocMastService.updateLocStsByLocNo(locNo,"D",wrkMast.getBarcode(),wrkMast.getWhsType().shortValue()); |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(locNo,"O","",null); |
| | | // 源库位是库位 |
| | | } else { |
| | | agvLocMastService.updateLocStsByLocNo(locNo,"D",wrkMast.getBarcode(),wrkMast.getWhsType().shortValue()); |
| | | agvLocMastService.updateLocStsByLocNo(devNo,"O","",null); |
| | | } |
| | | |
| | | }else { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"O","",null); |
| | | } |
| | | } else if (wrkMast.getIoType() == 113) { |
| | | if (wrkMast.getWrkSts() == 212 || wrkMast.getWrkSts() == 213) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(locNo,"F",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo)); |
| | | } else { |
| | | agvLocMastService.updateLocStsByLocNo(devNo,"O","",(short)getContainerTypeByloc(devNo)); |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(locNo,"F",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo)); |
| | | if (!Cools.isEmpty(devNo)) { |
| | | agvLocMastService.updateLocStsByLocNo(devNo,"0","",null); |
| | | } |
| | | } |
| | | |
| | | }else { |
| | | } else { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"O","",null); |
| | | agvLocMastService.updateLocStsByLocNo(locNo,"F",wrkMast.getBarcode(),(short)getContainerTypeByloc(locNo)); |
| | | } |
| | | |
| | | } |
| | | |
| | | if(wrkMast.getIoType() != 1 && wrkMast.getIoType() != 10 && wrkMast.getIoType()!=111 && wrkMast.getIoType()!=108 && wrkMast.getIoType() != 12){ |
| | |
| | | agvWrkDetlLogService.save(wrkMast.getWrkNo()); |
| | | |
| | | |
| | | |
| | | //删除工作档以及明细 |
| | | if(!agvWrkMastService.deleteByWrkNo(wrkMast.getWrkNo()) || !agvWrkDetlService.deleteByWrkNo(wrkMast.getWrkNo())){ |
| | | throw new CoolException("删除失败,请联系管理员"); |
| | | } |
| | | |
| | | if (type == 2) { |
| | | //调用agv取消任务接口 |
| | | agvWrkMastService.callCancelTask(wrkMast.getWrkNo()); |
| | |
| | | agvWrkMast.setWrkNo(-agvWrkMast.getWrkNo()); |
| | | } |
| | | agvTaskCreateParam.setTaskCode(agvWrkMast.getWrkNo().toString()); |
| | | if (agvWrkMast.getIoType() == 108 || (agvWrkMast.getIoType() == 109 && agvWrkMast.getWrkSts() == 201) || agvWrkMast.getIoType() == 12) { |
| | | if (agvWrkMast.getIoType() == 108 || (agvWrkMast.getIoType() == 109 && agvWrkMast.getWrkSts() == 201) || agvWrkMast.getIoType() == 12) { |
| | | agvTaskCreateParam.setTaskTyp("F06"); |
| | | } else { |
| | | agvTaskCreateParam.setTaskTyp("F01"); |
| | |
| | | .or().eq("io_type",12) |
| | | .or().eq("io_type",108) |
| | | .or().eq("io_type",109) |
| | | .or().eq("io_type",112)); |
| | | .or().eq("io_type",112) |
| | | .or().eq("io_type",113)); |
| | | if(!Cools.isEmpty(agvWrkMastList)){ |
| | | agvWrkMastList.stream().forEach(agvWrkMast -> { |
| | | agvWrkMastHandler.completedPutWayWrk(agvWrkMast); |
| | |
| | | .or().eq("io_type", 12) |
| | | .or().eq("io_type", 109) |
| | | .or().eq("io_type", 108) |
| | | .or().eq("io_type", 112)).getRecords(); |
| | | .or().eq("io_type", 112) |
| | | .or().eq("io_type", 113)).getRecords(); |
| | | |
| | | if(!Cools.isEmpty(agvWrkMastList)){ |
| | | agvWrkMastList.forEach(agvWrkMast -> { |
| | |
| | | |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.zy.asrs.entity.AgvBasDevp; |
| | | import com.zy.asrs.entity.AgvLocMast; |
| | | import com.zy.asrs.entity.AgvWrkMast; |
| | | import com.zy.asrs.service.AgvBasDevpService; |
| | | import com.zy.asrs.service.AgvLocMastService; |
| | | import com.zy.asrs.service.AgvWrkMastService; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | |
| | | private AutoMoveHandler autoMoveHandler; |
| | | @Autowired |
| | | private AgvWrkMastService agvWrkMastService; |
| | | @Autowired |
| | | private AgvBasDevpService agvBasDevpService; |
| | | |
| | | // 调拨出库 |
| | | @Scheduled(cron = "0/2 * * * * ? ") |
| | |
| | | } |
| | | } |
| | | // 空板自动回库 接驳点 - 1楼库位 |
| | | //@Scheduled(cron = "0/2 * * * * ? ") |
| | | @Scheduled(cron = "0/2 * * * * ? ") |
| | | private void autoEmptyBack3(){ |
| | | // 工作档为201 且 入出库类型为109 |
| | | List<AgvWrkMast> agvWrkMastList = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>() |
| | | .eq("wrk_sts", 201) |
| | | .eq("wrk_sts", 214) |
| | | .eq("loc_no","") |
| | | .eq("io_type",109) |
| | | .or().eq("io_type",112)); |
| | | .eq("io_type",113)); |
| | | if (agvWrkMastList.isEmpty()) { |
| | | return; |
| | | } |
| | |
| | | } |
| | | |
| | | // 空板自动回库 |
| | | @Scheduled(cron = "0/2 * * * * ? ") |
| | | // @Scheduled(cron = "0/2 * * * * ? ") |
| | | private void autoEmptyBack2(){ |
| | | // 查询 不为1楼的空货架 |
| | | List<AgvLocMast> agvLocMasts = agvLocMastService.selectList( |
| | |
| | | for (AgvLocMast agvLocMast : agvLocMasts) { |
| | | ReturnT<String> returnT = autoMoveHandler.autoEmptyBack2(agvLocMast); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 空板自动回库 |
| | | * 库位-接驳点 库位-吸塑车间 |
| | | * 每层最大 在 回库数量限制5条 |
| | | * 优先选择先到接驳位(接驳位可入) 后选择直接回库 |
| | | */ |
| | | @Scheduled(cron = "0/2 * * * * ? ") |
| | | private void autoEmptyBack4(){ |
| | | // 查询 不为1楼的空货架 |
| | | List<AgvLocMast> agvLocMasts = agvLocMastService.selectList( |
| | | new EntityWrapper<AgvLocMast>() |
| | | .ne("floor", 1) |
| | | .eq("loc_sts","D") |
| | | .eq("loc_type1",3)); |
| | | if (agvLocMasts.isEmpty()) { |
| | | return; |
| | | } |
| | | for (AgvLocMast agvLocMast : agvLocMasts) { |
| | | ReturnT<String> returnT = autoMoveHandler.autoEmptyBack4(agvLocMast); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 站点是否自动 |
| | | * 自动: 生成 109 自动回流 |
| | | * 手动: 生成 113 手动回流 |
| | | * 优先选择先到接驳位(接驳位可入) 后选择直接回库 |
| | | */ |
| | | @Scheduled(cron = "0/2 * * * * ? ") |
| | | private void autoEmptyBack5(){ |
| | | List<AgvBasDevp> agvBasDevps = agvBasDevpService.selectList(new EntityWrapper<AgvBasDevp>() |
| | | .ne("floor", 1) |
| | | .eq("loc_sts", "F") |
| | | .like("dev_no", "DB")); |
| | | if (agvBasDevps.isEmpty()) { |
| | | return; |
| | | } |
| | | for (AgvBasDevp agvBasDevp : agvBasDevps) { |
| | | ReturnT<String> returnT = autoMoveHandler.autoEmptyBack5(agvBasDevp); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 检测1楼接驳点 |
| | | * 手动: 生成 113 手动回流 |
| | | */ |
| | | @Scheduled(cron = "0/2 * * * * ? ") |
| | | private void autoEmptyBack6(){ |
| | | List<AgvBasDevp> agvBasDevps = agvBasDevpService.selectList(new EntityWrapper<AgvBasDevp>() |
| | | .eq("floor", 1) |
| | | .eq("loc_sts", "F") |
| | | .like("dev_no", "DB")); |
| | | if (agvBasDevps.isEmpty()) { |
| | | return; |
| | | } |
| | | for (AgvBasDevp agvBasDevp : agvBasDevps) { |
| | | ReturnT<String> returnT = autoMoveHandler.autoEmptyBack6(agvBasDevp); |
| | | } |
| | | } |
| | | } |
| | |
| | | agvWrkMastService.updateById(agvWrkMast); |
| | | // 空板入库 设置库位状态为D.空桶/空栈板 |
| | | String locSts = agvWrkMast.getIoType() == 10 ? "D" : "F"; |
| | | if (agvWrkMast.getIoType() == 10 || agvWrkMast.getIoType() == 109) { |
| | | //if (agvWrkMast.getIoType() == 109 && agvWrkMast.getLocNo().substring(0,2).equals("DB")) { |
| | | // agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"R",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | //} else { |
| | | // agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | //} |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | if (agvWrkMast.getIoType() == 10 || agvWrkMast.getIoType() == 109 ) { |
| | | // 库位 -- 接驳位 / 库位 |
| | | if (agvWrkMast.getIoType() == 109 && agvWrkMast.getLocNo().substring(0,2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | // 接驳位 -- 库位 |
| | | } else { |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | } |
| | | } else { |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); |
| | | } |
| | |
| | | } |
| | | |
| | | if(agvWrkMast.getIoType() == 109){ |
| | | // 接驳位 -- 库位 |
| | | if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) { |
| | | agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0); |
| | | // 库位 -- 接驳位 / 库位 |
| | | } else { |
| | | //修改源库位状态为O |
| | | agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0); |
| | | // 新建工作档 |
| | | Date now = new Date(); |
| | | // createWrkMast(109, 201L, agvWrkMast.getLocNo(), "", agvWrkMast.getBarcode(), now, 9527L, agvWrkMast.getWhsType(), 0); |
| | | } |
| | | } |
| | | if (agvWrkMast.getIoType() == 58) { |
| | |
| | | public ReturnT<String> autoEmptyBack3(AgvWrkMast agvWrkMast) { |
| | | Date now = new Date(); |
| | | AgvBasDevp agvBasDevp = agvBasDevpService.selectByDevNo(agvWrkMast.getSourceLocNo()); |
| | | if (agvBasDevp.getAutoing() == "N") { |
| | | throw new CoolException("当前站点为手动"); |
| | | } |
| | | //检索空闲接驳位,选择合适的接驳位 |
| | | AgvLocMast locMast = agvCommonService.getLocNo(3, 1); |
| | | if (Cools.isEmpty(locMast)) { |
| | | throw new CoolException("1楼暂无空库位"); |
| | | } |
| | | //目标站点 |
| | | agvWrkMast.setWrkSts(201L); |
| | | agvWrkMast.setLocNo(locMast.getLocNo()); |
| | | agvWrkMast.setModiUser(9527L); |
| | | agvWrkMast.setModiTime(now); |
| | |
| | | } |
| | | //更新目标库位状态 |
| | | updateAgvLocMast(locMast,"S"); |
| | | updateAgvBasDevp(agvBasDevp,"R"); |
| | | return SUCCESS; |
| | | } |
| | | public ReturnT<String> autoEmptyBack2(AgvLocMast agvLocMast) { |
| | |
| | | updateAgvLocMast(LocMast,"S"); |
| | | return SUCCESS; |
| | | } |
| | | |
| | | public ReturnT<String> autoEmptyBack4(AgvLocMast agvLocMast) { |
| | | Date now = new Date(); |
| | | //查询工作档 |
| | | AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(agvLocMast.getBarcode()); |
| | | if(!Cools.isEmpty(agvWrkMast)){ |
| | | throw new CoolException("当前"+agvLocMast.getBarcode()+"货架码已在工作档中"); |
| | | } |
| | | String floor = ""; |
| | | String locNo = ""; |
| | | Long wrkSts = 0L; |
| | | Integer ioType = 0; |
| | | AgvLocMast locMast = new AgvLocMast(); |
| | | if (agvLocMast.getFloor() == 3) { |
| | | floor = "F3"; |
| | | } else if(agvLocMast.getFloor() == 2) { |
| | | floor = "F2"; |
| | | } |
| | | List<AgvWrkMast> agvWrkMasts = agvWrkMastService.selectList(new EntityWrapper<AgvWrkMast>().eq("io_type", 109).or().eq("io_type", 113).like("source_loc_no", floor)); |
| | | if (agvWrkMasts.size() >= 5) { |
| | | throw new CoolException("暂停回流"); |
| | | } |
| | | //检索空闲可入接驳位 没有空闲可入接驳位 直接找库位 |
| | | AgvBasDevp devpNo = agvCommonService.getDevpNo(3, agvLocMast.getFloor(),"Y","Y"); |
| | | if (!Cools.isEmpty(devpNo)) { |
| | | locNo = devpNo.getDevNo(); |
| | | wrkSts = 21L; |
| | | ioType = 109; |
| | | } else { |
| | | //检索库位,选择合适的库位 |
| | | locMast = agvCommonService.getLocNo(3,1); |
| | | locNo = locMast.getLocNo(); |
| | | wrkSts = 201L; |
| | | ioType = 109; |
| | | } |
| | | |
| | | //生成工作档 |
| | | AgvWrkMast mast = new AgvWrkMast(); |
| | | //工作状态 |
| | | mast.setWrkSts(wrkSts); |
| | | //入出库类型 |
| | | mast.setIoType(ioType); |
| | | mast.setIoTime(now); |
| | | //优先级 |
| | | mast.setIoPri(300.0); |
| | | //源站点 |
| | | mast.setSourceLocNo(agvLocMast.getLocNo()); |
| | | //目标站点 |
| | | mast.setLocNo(locNo); |
| | | //货架编码 |
| | | mast.setBarcode(agvLocMast.getBarcode()); |
| | | //货架类型 |
| | | mast.setWhsType(30); |
| | | |
| | | mast.setAppeUser(9527L); |
| | | mast.setAppeTime(now); |
| | | mast.setModiUser(9527L); |
| | | mast.setModiTime(now); |
| | | if (!agvWrkMastService.insertByIncrease(mast)) { |
| | | throw new CoolException("保存工作档失败"); |
| | | } |
| | | |
| | | //更新目标库位状态 |
| | | updateAgvLocMast(agvLocMast,"R"); |
| | | if (wrkSts == 21L) { |
| | | updateAgvBasDevp(devpNo,"S",agvLocMast.getLocType2(),agvLocMast.getBarcode()); |
| | | } else { |
| | | updateAgvLocMast(locMast,"S"); |
| | | } |
| | | |
| | | |
| | | return SUCCESS; |
| | | } |
| | | |
| | | public ReturnT<String> autoEmptyBack5(AgvBasDevp agvBasDevp) { |
| | | //查询工作档 |
| | | AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(agvBasDevp.getBarcode()); |
| | | if(!Cools.isEmpty(agvWrkMast)){ |
| | | throw new CoolException("当前"+agvBasDevp.getBarcode()+"货架码已在工作档中"); |
| | | } |
| | | Date now = new Date(); |
| | | //生成工作档 |
| | | AgvWrkMast mast = new AgvWrkMast(); |
| | | mast.setIoTime(now); |
| | | //优先级 |
| | | mast.setIoPri(300.0); |
| | | //源站点 |
| | | mast.setSourceLocNo(agvBasDevp.getDevNo()); |
| | | //货架编码 |
| | | mast.setBarcode(agvBasDevp.getBarcode()); |
| | | //货架类型 |
| | | mast.setWhsType(30); |
| | | mast.setAppeUser(9527L); |
| | | mast.setAppeTime(now); |
| | | mast.setModiUser(9527L); |
| | | mast.setModiTime(now); |
| | | // 判断 接驳点是否自动 |
| | | if ("Y".equals(agvBasDevp.getAutoing())) { |
| | | //工作状态 |
| | | mast.setWrkSts(201L); |
| | | //入出库类型 |
| | | mast.setIoType(109); |
| | | //检索库位,选择合适的库位 |
| | | AgvLocMast locMast = agvCommonService.getLocNo(3,1); |
| | | mast.setLocNo(locMast.getLocNo()); |
| | | updateAgvLocMast(locMast,"S"); |
| | | } else { |
| | | //工作状态 |
| | | mast.setWrkSts(212L); |
| | | //入出库类型 |
| | | mast.setIoType(113); |
| | | //目标站点 |
| | | mast.setLocNo(""); |
| | | } |
| | | if (!agvWrkMastService.insertByIncrease(mast)) { |
| | | throw new CoolException("保存工作档失败"); |
| | | } |
| | | //更新目标库位状态 |
| | | updateAgvBasDevp(agvBasDevp,"R"); |
| | | |
| | | |
| | | return SUCCESS; |
| | | } |
| | | |
| | | public ReturnT<String> autoEmptyBack6(AgvBasDevp agvBasDevp) { |
| | | //查询工作档 |
| | | AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(agvBasDevp.getBarcode()); |
| | | if(!Cools.isEmpty(agvWrkMast)){ |
| | | throw new CoolException("当前"+agvBasDevp.getBarcode()+"货架码已在工作档中"); |
| | | } |
| | | Date now = new Date(); |
| | | //生成工作档 |
| | | AgvWrkMast mast = new AgvWrkMast(); |
| | | //工作状态 |
| | | mast.setWrkSts(214L); |
| | | //入出库类型 |
| | | mast.setIoType(113); |
| | | //目标站点 |
| | | mast.setLocNo(""); |
| | | mast.setIoTime(now); |
| | | //优先级 |
| | | mast.setIoPri(300.0); |
| | | //源站点 |
| | | mast.setSourceLocNo(agvBasDevp.getDevNo()); |
| | | //货架编码 |
| | | mast.setBarcode(agvBasDevp.getBarcode()); |
| | | //货架类型 |
| | | mast.setWhsType(30); |
| | | mast.setAppeUser(9527L); |
| | | mast.setAppeTime(now); |
| | | mast.setModiUser(9527L); |
| | | mast.setModiTime(now); |
| | | if (!agvWrkMastService.insertByIncrease(mast)) { |
| | | throw new CoolException("保存工作档失败"); |
| | | } |
| | | //更新目标库位状态 |
| | | updateAgvBasDevp(agvBasDevp,"R"); |
| | | |
| | | |
| | | return SUCCESS; |
| | | } |
| | | } |
| | |
| | | throw new CoolException("楼层号:"+floor+";该楼层没有空接驳位"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 检索库位号 |
| | | * @return locNo 检索到的库位号 |
| | | * @return locNo 检索自动接驳位 |
| | | */ |
| | | public AgvBasDevp getDevpNo(int type, int floor, String auto) { |
| | | // 目标库位 |
| | |
| | | |
| | | //找不到库位,抛出异常 |
| | | throw new CoolException("楼层号:"+floor+";该楼层没有空接驳位"); |
| | | } |
| | | |
| | | /** |
| | | * 检索库位号 |
| | | * @return locNo 检索可入接驳位 |
| | | */ |
| | | public AgvBasDevp getDevpNo(int type, int floor, String auto ,String inEable) { |
| | | // 目标库位 |
| | | AgvBasDevp basDevp = null; |
| | | |
| | | // 开始查找库位 ==============================>> |
| | | basDevp = getDevpNoInEable(type,floor,inEable); |
| | | if (basDevp != null) { |
| | | return basDevp; |
| | | } |
| | | |
| | | //找不到库位,抛出异常 |
| | | return basDevp; |
| | | } |
| | | |
| | | //随机取一个货位 |
| | |
| | | .like("dev_no","DB")); |
| | | } |
| | | |
| | | //随机取一个货位 |
| | | private AgvBasDevp getDevpNoInEable(int type,int floor,String inEable){ |
| | | return agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>() |
| | | .eq("loc_sts","O") |
| | | .eq("floor",floor) |
| | | .eq("loc_type1",type) |
| | | .eq("in_enable",inEable) |
| | | .like("dev_no","DB")); |
| | | } |
| | | |
| | | } |