zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java
@@ -75,6 +75,8 @@ private PatrolService patrolService; @Autowired private StaReserveService staReserveService; @Autowired private AgvAreaDispatcher agvAreaDispatcher; @PreAuthorize("hasAuthority('manager:agv:update')") @OperationLog("Locate All Agv") @@ -193,6 +195,9 @@ if (null == endCode) { return R.error(); } if (!agvAreaDispatcher.match(agv.getId(), endCode.getId())) { throw new BusinessException("AGV " + agv.getUuid() + " failed to reach target code " + endCode.getData()); } if (!taskService.removeById(task.getId())) { throw new BusinessException("failed to remove task"); } @@ -222,6 +227,10 @@ if (null == oriLoc) { return R.error(); } if (!agvAreaDispatcher.match(agv.getId(), oriLoc.getCode())) { // throw new BusinessException("AGV " + agv.getUuid() + " failed to reach target code " + oriLoc.getCode$()); throw new BusinessException("AGV【" + agv.getUuid() + "】无法到达起始库位【" + oriLoc.getLocNo() + "】"); } if (!oriLoc.getLocSts().equals(LocStsType.STOCK.val())) { throw new BusinessException("oriLoc:" + oriLoc.getLocNo() + " 不是在库状态"); } @@ -240,6 +249,10 @@ } if (null == destLoc) { return R.error(); } if (!agvAreaDispatcher.match(agv.getId(), destLoc.getCode())) { // throw new BusinessException("AGV " + agv.getUuid() + " failed to reach target code " + destLoc.getCode$()); throw new BusinessException("AGV【" + agv.getUuid() + "】无法到达目标库位【" + destLoc.getLocNo() + "】"); } if (!destLoc.getLocSts().equals(LocStsType.IDLE.val())) { throw new BusinessException("destLoc:" + destLoc.getLocNo() + " 不是空闲状态"); @@ -267,6 +280,10 @@ if (null == oriLoc) { return R.error(); } if (!agvAreaDispatcher.match(agv.getId(), oriLoc.getCode())) { // throw new BusinessException("AGV " + agv.getUuid() + " failed to reach target code " + oriLoc.getCode$()); throw new BusinessException("AGV【" + agv.getUuid() + "】无法到达起始库位【" + oriLoc.getLocNo() + "】"); } if (!oriLoc.getLocSts().equals(LocStsType.STOCK.val())) { throw new BusinessException("oriLoc:" + oriLoc.getLocNo() + " 不是在库状态"); } @@ -285,6 +302,10 @@ } if (null == destSta) { return R.error(); } if (!agvAreaDispatcher.match(agv.getId(), destSta.getCode())) { // throw new BusinessException("AGV " + agv.getUuid() + " failed to reach target code " + destSta.getCode$()); throw new BusinessException("AGV【" + agv.getUuid() + "】无法到达目标站点【" + destSta.getStaNo() + "】"); } if (null == staReserveService.reserveStaIn(destSta, task, 1)) { throw new BusinessException("destSta:" + destSta.getStaNo() + " 预约失败"); @@ -308,6 +329,10 @@ if (null == oriSta) { return R.error(); } if (!agvAreaDispatcher.match(agv.getId(), oriSta.getCode())) { // throw new BusinessException("AGV " + agv.getUuid() + " failed to reach target code " + oriSta.getCode$()); throw new BusinessException("AGV【" + agv.getUuid() + "】无法到达起始站点【" + oriSta.getStaNo() + "】"); } if (null == staReserveService.reserveStaOut(oriSta, task, 1)) { throw new BusinessException("oriSta:" + oriSta.getStaNo() + " 预约失败"); } @@ -321,6 +346,10 @@ } if (null == destLoc) { return R.error(); } if (!agvAreaDispatcher.match(agv.getId(), destLoc.getCode())) { // throw new BusinessException("AGV " + agv.getUuid() + " failed to reach target code " + destLoc.getCode$()); throw new BusinessException("AGV【" + agv.getUuid() + "】无法到达目标库位【" + destLoc.getLocNo() + "】"); } if (!destLoc.getLocSts().equals(LocStsType.IDLE.val())) { throw new BusinessException("destLoc:" + destLoc.getLocNo() + " 不是空闲状态"); @@ -350,6 +379,10 @@ if (null == oriSta) { return R.error(); } if (!agvAreaDispatcher.match(agv.getId(), oriSta.getCode())) { // throw new BusinessException("AGV " + agv.getUuid() + " failed to reach target code " + oriSta.getCode$()); throw new BusinessException("AGV【" + agv.getUuid() + "】无法到达起始站点【" + oriSta.getStaNo() + "】"); } if (null == staReserveService.reserveStaOut(oriSta, task, 1)) { throw new BusinessException("oriSta:" + oriSta.getStaNo() + " 预约失败"); } @@ -365,6 +398,10 @@ if (null == destSta) { return R.error(); } if (!agvAreaDispatcher.match(agv.getId(), destSta.getCode())) { // throw new BusinessException("AGV " + agv.getUuid() + " failed to reach target code " + destSta.getCode$()); throw new BusinessException("AGV【" + agv.getUuid() + "】无法到达目标站点【" + destSta.getStaNo() + "】"); } if (null == staReserveService.reserveStaIn(destSta, task, 1)) { throw new BusinessException("destSta:" + destSta.getStaNo() + " 预约失败"); } zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AgvAreaDispatcher.java
@@ -36,7 +36,7 @@ public void init() { } public List<Long> getAgvNosByTask(Task task) { public List<Long> getAgvIdsByTask(Task task) { if (null == task) { return null; } @@ -67,11 +67,11 @@ return null; } public List<Long> getAgvIdsByCode(String code) { if (Cools.isEmpty(code)) { public List<Long> getAgvIdsByCode(String codeData) { if (Cools.isEmpty(codeData)) { return new ArrayList<>(); } List<Long> areaIds = areaGovernService.queryAreas(code); List<Long> areaIds = areaGovernService.queryAreas(codeData); List<Long> agvIds = areaAgvService.queryAgvIdsByAreaIds(areaIds); agvIds.addAll(areaAgvService.findAgvIdsWithoutAreaAgv()); return agvIds; @@ -81,6 +81,21 @@ return null; } public Boolean match(Long agvId, Long codeId) { Code code = codeService.getCacheById(codeId); if (Cools.isEmpty(agvId, code)) { return false; } List<Long> agvIds = this.getAgvIdsByCode(code.getData()); if (Cools.isEmpty(agvIds)) { return false; } if (!agvIds.contains(agvId)) { return false; } return true; } // 如果都没有命中,就返回全部code public List<String> getCodesByAgvId(Long agvId) { List<Long> areaIds = areaAgvService.queryAreaIdsByAgvId(agvId); zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AllocateService.java
@@ -121,7 +121,7 @@ return null; } List<String> availableAgvNos = this.getAvailableAgvNos(agvAreaDispatcher.getAgvNosByTask(task), true); List<String> availableAgvNos = this.getAvailableAgvNos(agvAreaDispatcher.getAgvIdsByTask(task), true); FilterLaneDto filterLaneDto = this.filterThroughLane(task, availableAgvNos); if (filterLaneDto == null) { return null; @@ -155,7 +155,7 @@ * it can break the limit of the number of agv backpack */ public synchronized String normalExecute(Task task) { List<String> availableAgvNos = this.getAvailableAgvNos(agvAreaDispatcher.getAgvNosByTask(task), false); List<String> availableAgvNos = this.getAvailableAgvNos(agvAreaDispatcher.getAgvIdsByTask(task), false); // List<String> availableAgvNos = this.getAvailableAgvNos(null); if (Cools.isEmpty(availableAgvNos)) { // log.warn("No available agv to assign the task[{}]", task.getSeqNum()); zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Loc.java
@@ -7,8 +7,6 @@ import com.zy.acs.framework.common.SpringUtils; import com.zy.acs.manager.manager.service.CodeService; import com.zy.acs.manager.manager.service.LocStsService; import com.zy.acs.manager.manager.service.LocTypeService; import com.zy.acs.manager.manager.service.ZoneService; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -208,32 +206,32 @@ // null // 备注 // ); public String getZoneId$(){ ZoneService service = SpringUtils.getBean(ZoneService.class); Zone zone = service.getById(this.zoneId); if (!Cools.isEmpty(zone)){ return String.valueOf(zone.getName()); } return null; } // public String getZoneId$(){ // ZoneService service = SpringUtils.getBean(ZoneService.class); // Zone zone = service.getById(this.zoneId); // if (!Cools.isEmpty(zone)){ // return String.valueOf(zone.getName()); // } // return null; // } public String getCode$(){ CodeService service = SpringUtils.getBean(CodeService.class); Code code = service.getById(this.code); Code code = service.getCacheById(this.code); if (!Cools.isEmpty(code)){ return String.valueOf(code.getData()); } return null; } public String getLocSts$(){ LocStsService service = SpringUtils.getBean(LocStsService.class); LocSts locSts = service.getById(this.locSts); if (!Cools.isEmpty(locSts)){ return String.valueOf(locSts.getName()); } return null; } // public String getLocSts$(){ // LocStsService service = SpringUtils.getBean(LocStsService.class); // LocSts locSts = service.getById(this.locSts); // if (!Cools.isEmpty(locSts)){ // return String.valueOf(locSts.getName()); // } // return null; // } public String getLocStsEl(){ LocStsService service = SpringUtils.getBean(LocStsService.class); @@ -244,36 +242,22 @@ return null; } public String getLocType$(){ LocTypeService service = SpringUtils.getBean(LocTypeService.class); LocType locType = service.getById(this.locType); if (!Cools.isEmpty(locType)){ return String.valueOf(locType.getName()); } return null; } public String getStatus$(){ if (null == this.status){ return null; } switch (this.status){ case 1: return "正常"; case 0: return "冻结"; default: return String.valueOf(this.status); } } // public String getLocType$(){ // LocTypeService service = SpringUtils.getBean(LocTypeService.class); // LocType locType = service.getById(this.locType); // if (!Cools.isEmpty(locType)){ // return String.valueOf(locType.getName()); // } // return null; // } public String getCompDirect$(){ if (null == this.compDirect){ return null; } switch (this.compDirect){ case 1: return "大于"; return "RIGHT"; case 0: return "小于"; return "LEFT"; default: return String.valueOf(this.deleted); } zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Sta.java
@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.zy.acs.framework.common.Cools; import com.zy.acs.framework.common.SpringUtils; import com.zy.acs.manager.manager.service.CodeService; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -116,14 +118,14 @@ // return null; // } // // public String getCode$(){ // CodeService service = SpringUtils.getBean(CodeService.class); // Code code = service.getById(this.code); // if (!Cools.isEmpty(code)){ // return String.valueOf(code.getUuid()); // } // return null; // } public String getCode$(){ CodeService service = SpringUtils.getBean(CodeService.class); Code code = service.getCacheById(this.code); if (!Cools.isEmpty(code)){ return String.valueOf(code.getData()); } return null; } // // public String getStaSts$(){ // StaStsService service = SpringUtils.getBean(StaStsService.class);