1
zhang
2 天以前 2a6e27f1c0064690d6fc6ab137d64c02fc0742da
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/AgvServiceImpl.java
@@ -80,7 +80,12 @@
    @Override
    public Long getAgvId(String uuid) {
        if (Cools.isEmpty(uuid)) {
            return null;
            Agv agv = this.selectByUuid(uuid);
            if (agv != null) {
                AGV_ID_MAP.put(uuid, agv.getId());
            } else {
                return null;
            }
        }
        return AGV_ID_MAP.get(uuid);
    }
@@ -88,7 +93,12 @@
    @Override
    public String getAgvNo(Long agvId) {
        if (Cools.isEmpty(agvId)) {
            return null;
            Agv agv = this.getById(agvId);
            if (agv != null) {
                AGV_NO_MAP.put(agvId, agv.getUuid());
            } else {
                return null;
            }
        }
        return AGV_NO_MAP.get(agvId);
    }
@@ -96,22 +106,29 @@
    @Override
    public Boolean judgeEnable(Long agvId) {
        return this.judgeEnable(agvId, false);
        return this.judgeEnable(agvId, false,false);
    }
    /**
     * 判断AGV是否可用
     * @param agvId
     * @param isLowBattery 低电量判断
     * @param force 是否强制操作
     * @return
     */
    @Override
    public Boolean judgeEnable(Long agvId, Boolean isLowBattery) {
    public Boolean judgeEnable(Long agvId, Boolean isLowBattery, Boolean force) {
        String agvNo = this.getAgvNo(agvId);
        AgvModel agvModel = agvModelService.getByAgvId(agvId);
        if (0 < segmentService.count(new LambdaQueryWrapper<Segment>()
                        .eq(Segment::getAgvId, agvId)
                        .eq(Segment::getState, SegmentStateType.RUNNING.toString())
        )) {
            log.warn("[{}]号Agv正在忙碌 - segment......", agvNo);
//            log.warn("[{}]号Agv正在忙碌 - segment......", agvNo);
            return false;
        }
        if (!this.judgeOnline(agvId)) {
            log.warn("[{}]号Agv不是在线状态......", agvNo);
//            log.warn("[{}]号Agv不是在线状态......", agvNo);
            return false;
        }
        AgvDetail agvDetail = agvDetailService.selectMajorByAgvId(agvId);
@@ -127,8 +144,14 @@
            return false;
        }
        if (agvDetail.getAgvStatus().equals(AgvStatusType.CHARGE)) {
            if (agvDetail.getVol() < agvModel.getQuaBattery()) {
                return false;
            if (force){
                if (agvDetail.getVol() < agvModel.getLowBattery()) {
                    return false;
                }
            }else {
                if (agvDetail.getVol() < agvModel.getQuaBattery()) {
                    return false;
                }
            }
        }
        if (!agvDetail.getAgvStatus().equals(AgvStatusType.CHARGE)) {
@@ -152,6 +175,8 @@
        return true;
    }
    @Override
    public Boolean judgeOnline(Long agvId) {
@@ -210,9 +235,8 @@
    @Override
    public int getBackpackRemainingCapacity(Long agvId) {
        int usedSlots = 0;
        Integer backpackCache = CoreCache.AGV_BACKPACK_CACHE.get(agvId);
        if (null != backpackCache) {
        Integer usedSlots = CoreCache.AGV_BACKPACK_USED_CACHE.get(agvId);
        if (null == usedSlots) {
            usedSlots = taskService.findTransportTasksCountByAgv(agvId);
        }