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<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() {
|
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<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;
|
}
|
|
}
|