src/main/java/com/zy/asrs/controller/AgvBasDevpController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/task/AutoMoveScheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/task/handler/AutoMoveHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/common/service/AgvCommonService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/AgvBasDevpController.java
@@ -34,6 +34,8 @@ AgvWaitPakinService agvWaitPakinService; @Autowired AgvWorkService agvWorkService; @Autowired AgvLocDetlService agvLocDetlService; @RequestMapping(value = "/basDevp/list/auth") @ManagerAuth @@ -177,6 +179,15 @@ AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>() .eq("loc_no", agvBasDevp.getDevNo()) .or().eq("source_loc_no",agvBasDevp.getDevNo())); if (Cools.isEmpty(agvWrkMast)) { Page<AgvLocDetl> agvLocDetlPage = agvLocDetlService.selectPage(new Page<>(curr, limit), new EntityWrapper<AgvLocDetl>() .eq("supp_code", agvBasDevp.getBarcode())); if (agvLocDetlPage.getRecords().size() > 0) { return R.ok(agvLocDetlPage); } else { return R.error("当前货架码异常!"); } } Page<AgvWrkDetl> agvWrkDetlPage = agvWrkDetlService.selectPage(new Page<>(curr, limit), new EntityWrapper<AgvWrkDetl>() .eq("wrk_no", agvWrkMast.getWrkNo())); src/main/java/com/zy/asrs/task/AutoMoveScheduler.java
@@ -22,7 +22,7 @@ @Autowired private AutoMoveHandler autoMoveHandler; // 调拨出库 @Scheduled(cron = "0/2 * * * * ? ") private void execute(){ List<AgvLocMast> agvLocMasts = agvLocMastService.selectList( @@ -40,6 +40,7 @@ } // 空板自动回库 @Scheduled(cron = "0/2 * * * * ? ") private void autoEmptyBack(){ // 查询 不为1楼的空货架 src/main/java/com/zy/asrs/task/handler/AutoMoveHandler.java
@@ -5,10 +5,7 @@ import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.service.AgvLocDetlService; import com.zy.asrs.service.AgvLocMastService; import com.zy.asrs.service.AgvWrkDetlService; import com.zy.asrs.service.AgvWrkMastService; import com.zy.asrs.service.*; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; import com.zy.common.service.AgvCommonService; @@ -35,6 +32,8 @@ private AgvLocDetlService agvLocDetlService; @Autowired private AgvWrkDetlService agvWrkDetlService; @Autowired AgvBasDevpService agvBasDevpService; public ReturnT<String> start(AgvLocMast agvLocMast) { // locType 1. 自动, 2. 手动 @@ -107,6 +106,65 @@ } private ReturnT<String> doHandMove(AgvLocMast agvLocMast) { Date now = new Date(); //查询工作档 AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(agvLocMast.getBarcode()); if(!Cools.isEmpty(agvWrkMast)){ throw new CoolException("当前"+agvLocMast.getBarcode()+"货架码已在工作档中"); } // //检索库位,选择合适的库位 // AgvLocMast LocMast = agvCommonService.getLocNo(3,agvLocMast.getLocType3()); // 检索agv接驳位 AgvBasDevp devpNo = agvCommonService.getDevpNo(3, 1); //生成工作档 AgvWrkMast mast = new AgvWrkMast(); //工作状态 mast.setWrkSts(201L); //入出库类型 mast.setIoType(111); mast.setIoTime(now); //优先级 mast.setIoPri(300.0); //源站点 mast.setSourceLocNo(agvLocMast.getLocNo()); //目标站点 mast.setLocNo(devpNo.getDevNo()); //容器编码 mast.setBarcode(agvLocMast.getBarcode()); //容器类型 mast.setWhsType(30); // 目标楼层 mast.setPreHave(agvLocMast.getLocType3().toString()); mast.setAppeUser(9527L); mast.setAppeTime(now); mast.setModiUser(9527L); mast.setModiTime(now); if (!agvWrkMastService.insertByIncrease(mast)) { throw new CoolException("保存工作档失败"); } AgvWrkMast mast1 = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", devpNo.getDevNo()).eq("source_loc_no",agvLocMast.getLocNo())); //生成工作档明细 List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvLocMast.getLocNo())); agvLocDetls.forEach(agvLocDetl -> { AgvWrkDetl wrkDetl = new AgvWrkDetl(); wrkDetl.setWrkNo(mast1.getWrkNo()); wrkDetl.sync(agvLocDetl); wrkDetl.setSpecs("1-" + agvLocMast.getLocType3()); wrkDetl.setSuppCode(agvLocDetl.getSuppCode()); wrkDetl.setIoTime(now); wrkDetl.setAppeUser(9527L); wrkDetl.setAppeTime(now); wrkDetl.setModiUser(9527L); wrkDetl.setModiTime(now); if (!agvWrkDetlService.insert(wrkDetl)) { throw new CoolException("保存工作明细失败"); } }); //更新目标库位状态 updateAgvLocMast(agvLocMast,"R"); updateAgvBasDevp(devpNo,"S"); return SUCCESS; } @@ -117,6 +175,15 @@ locMast.setLocSts(locSts); agvLocMastService.updateById(locMast); } /* 更新源站点信息 */ private void updateAgvBasDevp(AgvBasDevp agvBasDevp, String locSts){ if(!Cools.isEmpty(agvBasDevp)){ agvBasDevp.setLocSts(locSts); agvBasDevpService.updateById(agvBasDevp); } } public ReturnT<String> autoEmptyBack(AgvLocMast agvLocMast) { Date now = new Date(); src/main/java/com/zy/common/service/AgvCommonService.java
@@ -31,6 +31,8 @@ private MatService matService; @Autowired private LocRuleService locRuleService; @Autowired AgvBasDevpService agvBasDevpService; public int getWorkNo(Integer wrkMk) { AgvWrkLastno wrkLastno = agvWrkLastnoService.selectById(wrkMk); @@ -233,6 +235,31 @@ .eq("floor",floor) .eq("loc_type1",type)); } /** * 检索库位号 * @return locNo 检索到的库位号 */ public AgvBasDevp getDevpNo(int type, int floor) { // 目标库位 AgvBasDevp basDevp = null; // 开始查找库位 ==============================>> basDevp = getDevpNoRule(type,floor); if (basDevp != null) { return basDevp; } //找不到库位,抛出异常 throw new CoolException("该楼层没有空库位"); } //随机取一个货位 private AgvBasDevp getDevpNoRule(int type,int floor){ return agvBasDevpService.selectOne(new EntityWrapper<AgvBasDevp>() .eq("loc_sts","O") .eq("floor",floor) .eq("loc_type1",type) .like("dev_no","DB")); } }