#
vincentlu
22 小时以前 43412c20ac444392471ea8ea8bc4a93af39efe87
#
5个文件已修改
152 ■■■■■ 已修改文件
zy-acs-manager/src/main/java/com/zy/acs/manager/core/HandlerController.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AgvAreaDispatcher.java 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AllocateService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Loc.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Sta.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);