自动化立体仓库 - WCS系统
Junjie
2023-07-27 84a9e3a9a624526116b42ab15e27ec852eaa7c21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package com.zy.core.enums;
 
import com.core.exception.CoolException;
import com.zy.asrs.utils.Utils;
import com.zy.core.model.protocol.SteProtocol;
 
public enum SteTaskModeType {
 
    INIT(0, "初始"),    // 初始
    OUT_RIGHT(1, "右出库"),    // 右出库
    OUT_LEFT(2, "左出库"),    // 左出库
    IN_RIGHT(3, "右入库"),    // 右入库
    IN_LEFT(4, "左入库"),    // 左入库
    MOVE_LEFT(5, "左移库"),    // 左移库
    MOVE_RIGHT(6, "右移库"),    // 右移库
    GO_ORIGIN(7, "去右端"),    // 回原点
    BACK_ORIGIN(8, "去左端"),      // 回反原点
    WAITING_RIGHT(9, "右待机"),        // A点
    WAITING_LEFT(10, "左待机"),       // B点
//    FIT_LEFT(11, "左搬移"),   // 左搬移
//    FIT_RIGHT(12, "右搬移"),      // 右搬移
    CHARGE_LEFT(13, "左充电"),         // 左充电
    CHARGE_RIGHT(14, "右充电"),         // 左充电
//    CHECK_LEFT(14, "左盘点"),     // 左盘点
//    CHECK_RIGHT(15, "右盘点"),    // 右盘点
    CLOSE_CHARGE(17, "断开充电"),   // 断开充电
    ;
 
    public Integer id;
    public String desc;
    SteTaskModeType(Integer id, String desc) {
        this.id = id;
        this.desc = desc;
    }
 
    public static SteTaskModeType get(Short id) {
        if (null == id) {
            return null;
        }
        for (SteTaskModeType type : SteTaskModeType.values()) {
            if (type.id.equals(id.intValue())) {
                return type;
            }
        }
        return null;
    }
 
    public static SteTaskModeType get(SteTaskModeType type) {
        if (null == type) {
            return null;
        }
        for (SteTaskModeType crnTaskModeType : SteTaskModeType.values()) {
            if (crnTaskModeType == type) {
                return crnTaskModeType;
            }
        }
        return null;
    }
 
    public static SteTaskModeType findInByLoc(String locNo) {
        switch (Utils.getGroupRow(locNo, true)) {
            case 4:
                return SteTaskModeType.IN_LEFT;   // 左
            case 5:
                return SteTaskModeType.IN_RIGHT;    // 右
            default:
                throw new CoolException("解析穿梭车原点定位失败");
        }
    }
 
    public static SteTaskModeType findOutByLoc(String locNo) {
        switch (Utils.getGroupRow(locNo, false)) {
            case 4:
                return SteTaskModeType.OUT_LEFT;   // 右
            case 5:
                return SteTaskModeType.OUT_RIGHT;    // 左
            default:
                throw new CoolException("解析穿梭车原点定位失败");
        }
    }
 
 
    // -----------------------------------------------
 
    // 去待搬点
    public static SteTaskModeType findOriginByLoc(SteProtocol steProtocol) {
        int row = steProtocol.getRow().intValue();
        if (Utils.FIRST_GROUP_ROW_LIST.contains(row)) {
            return SteTaskModeType.GO_ORIGIN;
        } else if (Utils.SECOND_GROUP_ROW_LIST.contains(row)) {
            return SteTaskModeType.BACK_ORIGIN;
        } else {
            throw new CoolException("解析穿梭车原点定位失败");
        }
    }
 
    public static SteTaskModeType findOriginByLoc(Integer row) {
        if (Utils.FIRST_GROUP_ROW_LIST.contains(row)) {
            return SteTaskModeType.GO_ORIGIN;
        } else if (Utils.SECOND_GROUP_ROW_LIST.contains(row)) {
            return SteTaskModeType.BACK_ORIGIN;
        } else {
            throw new CoolException("解析穿梭车原点定位失败");
        }
    }
 
 
    public static SteTaskModeType findWaiting(Integer row) {
        if (Utils.FIRST_GROUP_ROW_LIST.contains(row)) {
            return SteTaskModeType.WAITING_RIGHT;
        } else if (Utils.SECOND_GROUP_ROW_LIST.contains(row)) {
            return SteTaskModeType.WAITING_LEFT;
        } else {
            throw new CoolException("解析穿梭车原点定位失败");
        }
    }
 
    public static SteTaskModeType findChargeByLoc(Integer row) {
        if (Utils.FIRST_GROUP_ROW_LIST.contains(row)) {
            return SteTaskModeType.CHARGE_RIGHT;
        } else if (Utils.SECOND_GROUP_ROW_LIST.contains(row)) {
            return SteTaskModeType.CHARGE_LEFT;
        } else {
            throw new CoolException("解析穿梭车原点定位失败");
        }
    }
 
}