zhang
2025-05-20 1313906bb1eb983d3beece810035e7fc28d6a92f
zy-acs-manager/src/main/java/com/zy/acs/manager/core/constant/AgvAreaDispatcher.java
@@ -1,8 +1,15 @@
package com.zy.acs.manager.core.constant;
import org.springframework.stereotype.Component;
import com.zy.acs.manager.manager.entity.Loc;
import com.zy.acs.manager.manager.entity.Sta;
import com.zy.acs.manager.manager.entity.Task;
import com.zy.acs.manager.manager.service.LocService;
import com.zy.acs.manager.manager.service.StaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -10,11 +17,16 @@
import static com.zy.acs.manager.core.constant.AreaConstant.*;
import static com.zy.acs.manager.core.constant.AreaDisableConstant.*;
@Component
@Service
public class AgvAreaDispatcher {
    public static final Map<String, List<String>> AGV_AREA = new ConcurrentHashMap<>();
    public static final Map<String, List<String>> AGV_DISABLE_AREA = new ConcurrentHashMap<>();
    @Autowired
    private LocService locService;
    @Autowired
    private StaService staService;
    @PostConstruct
    public void init() {
@@ -58,4 +70,97 @@
        }
    }
    public List<String> getAgvNosByTask(Task task) {
        if (null == task) {
            return null;
        }
        Loc oriLoc = null;
        Sta oriSta = null;
        Loc destLoc = null;
        Sta destSta = null;
        if (null != task.getOriLoc()) {
            oriLoc = locService.getById(task.getOriLoc());
            return this.getAgvNosByRow(oriLoc.getRow());
        }
        if (null != task.getOriSta()) {
            oriSta = staService.getById(task.getOriSta());
            return this.getAgvNosByStaNo(oriSta.getStaNo());
        }
        if (null != task.getDestLoc()) {
            destLoc = locService.getById(task.getDestLoc());
            return this.getAgvNosByRow(destLoc.getRow());
        }
        if (null != task.getDestSta()) {
            destSta = staService.getById(task.getDestSta());
            return this.getAgvNosByStaNo(destSta.getStaNo());
        }
        return null;
    }
    public List<String> getAgvNosByRow(Integer row) {
        if (LocGroupConstant.FAR_LEFT_LOC_ROW_LIST.contains(row)) {
            return AgvGroupConstant.FIRST_AGV_GROUP;
        }
        if (LocGroupConstant.LEFT_LOC_ROW_LIST.contains(row)) {
            return AgvGroupConstant.SECOND_AGV_GROUP;
        }
        if (LocGroupConstant.MIDDLE_LOC_ROW_LIST.contains(row)) {
            return AgvGroupConstant.THIRD_AGV_GROUP;
        }
        if (LocGroupConstant.RIGHT_LOC_ROW_LIST.contains(row)) {
            return AgvGroupConstant.FOURTH_AGV_GROUP;
        }
        if (LocGroupConstant.FAR_RIGHT_LOC_ROW_LIST.contains(row)) {
            return AgvGroupConstant.FIFTH_AGV_GROUP;
        }
        return null;
    }
    public List<String> getAgvNosByStaNo(String staNo) {
        if (StaGroupConstant.FAR_LEFT_STA_ROW_LIST.contains(staNo)) {
            return AgvGroupConstant.FIRST_AGV_GROUP;
        }
        if (StaGroupConstant.LEFT_STA_ROW_LIST.contains(staNo)) {
            return AgvGroupConstant.SECOND_AGV_GROUP;
        }
        if (StaGroupConstant.MIDDLE_STA_ROW_LIST.contains(staNo)) {
            return AgvGroupConstant.THIRD_AGV_GROUP;
        }
        if (StaGroupConstant.RIGHT_STA_ROW_LIST.contains(staNo)) {
            return AgvGroupConstant.FOURTH_AGV_GROUP;
        }
        if (StaGroupConstant.FAR_RIGHT_STA_ROW_LIST.contains(staNo)) {
            return AgvGroupConstant.FIFTH_AGV_GROUP;
        }
        return null;
    }
    public List<String> getAreaCodeListByAgvNo(String agvNo) {
        List<String> areaCodeList = new ArrayList<>();
        if (null == agvNo) {
            return areaCodeList;
        }
        if (AgvGroupConstant.FIRST_AGV_GROUP.contains(agvNo)) {
            areaCodeList = FAR_LEFT_AREA;
            areaCodeList.addAll(FAR_LEFT_DISABLE_AREA);
        }
        if (AgvGroupConstant.SECOND_AGV_GROUP.contains(agvNo)) {
            areaCodeList = LEFT_AREA;
            areaCodeList.addAll(LEFT_DISABLE_AREA);
        }
        if (AgvGroupConstant.THIRD_AGV_GROUP.contains(agvNo)) {
            areaCodeList = MIDDLE_AREA;
            areaCodeList.addAll(MIDDLE_DISABLE_AREA);
        }
        if (AgvGroupConstant.FOURTH_AGV_GROUP.contains(agvNo)) {
            areaCodeList = RIGHT_AREA;
            areaCodeList.addAll(RIGHT_DISABLE_AREA);
        }
        if (AgvGroupConstant.FIFTH_AGV_GROUP.contains(agvNo)) {
            areaCodeList = FAR_RIGHT_AREA;
            areaCodeList.addAll(FAR_RIGHT_DISABLE_AREA);
        }
        return areaCodeList;
    }
}