package com.zy.acs.manager.core.constant; 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; import static com.zy.acs.manager.core.constant.AreaConstant.*; import static com.zy.acs.manager.core.constant.AreaDisableConstant.*; @Service public class AgvAreaDispatcher { public static final Map> AGV_AREA = new ConcurrentHashMap<>(); public static final Map> AGV_DISABLE_AREA = new ConcurrentHashMap<>(); @Autowired private LocService locService; @Autowired private StaService staService; @PostConstruct public void init() { this.initEnableArea(); this.initDisableArea(); } public void initEnableArea() { for (String agv : AgvGroupConstant.FIRST_AGV_GROUP) { AGV_AREA.put(agv, FAR_LEFT_AREA); } for (String agv : AgvGroupConstant.SECOND_AGV_GROUP) { AGV_AREA.put(agv, LEFT_AREA); } for (String agv : AgvGroupConstant.THIRD_AGV_GROUP) { AGV_AREA.put(agv, MIDDLE_AREA); } for (String agv : AgvGroupConstant.FOURTH_AGV_GROUP) { AGV_AREA.put(agv, RIGHT_AREA); } for (String agv : AgvGroupConstant.FIFTH_AGV_GROUP) { AGV_AREA.put(agv, FAR_RIGHT_AREA); } } public void initDisableArea() { for (String agv : AgvGroupConstant.FIRST_AGV_GROUP) { AGV_DISABLE_AREA.put(agv, FAR_LEFT_DISABLE_AREA); } for (String agv : AgvGroupConstant.SECOND_AGV_GROUP) { AGV_DISABLE_AREA.put(agv, LEFT_DISABLE_AREA); } for (String agv : AgvGroupConstant.THIRD_AGV_GROUP) { AGV_DISABLE_AREA.put(agv, MIDDLE_DISABLE_AREA); } for (String agv : AgvGroupConstant.FOURTH_AGV_GROUP) { AGV_DISABLE_AREA.put(agv, RIGHT_DISABLE_AREA); } for (String agv : AgvGroupConstant.FIFTH_AGV_GROUP) { AGV_DISABLE_AREA.put(agv, FAR_RIGHT_DISABLE_AREA); } } public List 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 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 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 getAreaCodeListByAgvNo(String agvNo) { List 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; } }