package com.zy.acs.manager.core.constant; import com.zy.acs.manager.manager.entity.Loc; import com.zy.acs.manager.manager.entity.Task; import com.zy.acs.manager.manager.service.LocService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; 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; @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; Loc destLoc = null; if (null != task.getOriLoc()) { oriLoc = locService.getById(task.getOriLoc()); return this.getAgvNosByRow(oriLoc.getRow()); } if (null != task.getDestLoc()) { destLoc = locService.getById(task.getDestLoc()); return this.getAgvNosByRow(destLoc.getRow()); } 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; } }