吉安感知网项目-后端
linwei
2026-01-26 a39dc5b34f8d49d6a3b40e9dd9e71faa2fac12d8
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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
package org.sxkj.gd.workorder.enums;
 
/**
 * 工单状态枚举
 * @author lw
 * @since 2026-01-17
 */
public enum WorkOrderStatusEnum {
 
    /**
     * 工单阶段:工单发布
     */
    STAGE_WORK_ORDER_RELEASE("工单发布"),
 
    /**
     * 工单阶段:接单响应
     */
    STAGE_ORDER_RESPONSE("接单响应"),
 
    /**
     * 工单阶段:执行中
     */
    STAGE_IN_EXECUTION("执行中"),
 
    /**
     * 工单阶段:完成待验
     */
    STAGE_COMPLETED_PENDING_INSPECTION("完成待验"),
 
    /**
     * 工单阶段:验收通过
     */
    STAGE_ACCEPTED("验收通过"),
 
    /**
     * 工单阶段:结算完成
     */
    STAGE_SETTLEMENT_COMPLETED("结算完成"),
 
    // ------------------ 以下是工单状态 ------------------
 
    /**
     * 草稿
     */
    DRAFT("0", "草稿", null),
 
    /**
     * 发布中_接单中
     */
    PUBLISHING_ACCEPTING("10", "发布中_接单中", "工单发布"),
 
    /**
     * 发布中_拒绝接单
     */
    PUBLISHING_REJECTING("11", "发布中_拒绝接单", "拒绝接单"),
 
    /**
     * 响应中_待拆分
     */
    RESPONDING_TO_BE_SPLIT("20", "响应中_待拆分", "接单响应"),
 
    /**
     * 响应中_申请取消
     */
    RESPONDING_APPLY_CANCEL("21", "响应中_申请取消", "申请取消"),
 
    /**
     * 响应中_申请修改
     */
    RESPONDING_APPLY_MODIFY("22", "响应中_申请修改", "申请修改"),
 
    /**
     * 响应中_已取消
     */
    RESPONDING_CANCELED("23", "响应中_已取消", "已取消"),
 
    /**
     * 响应中_拒绝取消
     */
    RESPONDING_REJECT_CANCEL("24", "响应中_拒绝取消", "拒绝取消"),
 
    /**
     * 响应中_拒绝修改
     */
    RESPONDING_REJECT_MODIFY("25", "响应中_拒绝修改", "拒绝修改"),
 
    /**
     * 执行中_待全部完成
     */
    EXECUTING_TO_BE_COMPLETED("30", "执行中_待全部完成", "执行中"),
 
    /**
     * 执行中_协商修改
     */
    EXECUTING_NEGOTIATE_MODIFY("31", "执行中_协商修改", "执行中"),
 
    /**
     * 完成待验_待全部验收
     */
    COMPLETED_TO_BE_INSPECTED("40", "完成待验_待全部验收", "完成待验"),
 
    /**
     * 验收通过_待结算
     */
    ACCEPTED_TO_BE_SETTLED("50", "验收通过_待结算", "验收通过"),
 
    /**
     * 结算完成_已结算
     */
    SETTLEMENT_COMPLETED("60", "结算完成_已结算", "结算完成");
 
    private final String code;
    private final String desc;
    private final String stageDesc;
    private final boolean isStage;
 
    /**
     * 工单阶段构造函数
     */
    WorkOrderStatusEnum(String stageDesc) {
        this.code = null;
        this.desc = null;
        this.stageDesc = stageDesc;
        this.isStage = true;
    }
 
    /**
     * 工单状态构造函数
     */
    WorkOrderStatusEnum(String code, String desc, String stageDesc) {
        this.code = code;
        this.desc = desc;
        this.stageDesc = stageDesc;
        this.isStage = false;
    }
 
    /**
     * 获取状态码
     * @return 状态码
     */
    public String getCode() {
        return code;
    }
 
    /**
     * 获取状态描述
     * @return 状态描述
     */
    public String getDesc() {
        return desc;
    }
 
    /**
     * 获取工单阶段描述
     * @return 工单阶段描述
     */
    public String getStageDesc() {
        return stageDesc;
    }
 
    /**
     * 是否为工单阶段
     * @return 是否为工单阶段
     */
    public boolean isStage() {
        return isStage;
    }
 
    /**
     * 是否为工单状态
     * @return 是否为工单状态
     */
    public boolean isStatus() {
        return !isStage;
    }
 
    /**
     * 根据状态码获取枚举对象
     * @param code 状态码
     * @return 枚举对象
     */
    public static WorkOrderStatusEnum getByCode(String code) {
        if (code == null) {
            return null;
        }
        for (WorkOrderStatusEnum status : values()) {
            if (code.equals(status.getCode())) {
                return status;
            }
        }
        return null;
    }
 
    /**
     * 根据状态码获取状态描述
     * @param code 状态码
     * @return 状态描述
     */
    public static String getDescByCode(String code) {
        WorkOrderStatusEnum status = getByCode(code);
        return status != null ? status.getDesc() : null;
    }
 
    /**
     * 判断状态码是否有效
     * @param code 状态码
     * @return 是否有效
     */
    public static boolean isValid(String code) {
        return getByCode(code) != null;
    }
 
    /**
     * 检查当前状态是否允许指定的操作类型
     * @param operationType 操作类型:1接单,2拒接接单,3申请取消,4申请修改, 5同意取消  6不同意取消 7.同意修改 8.不同意修改 9.协商修改 10.同意修改 11.结算
     * @return 是否允许操作
     */
    public boolean isAllowedOperation(Integer operationType) {
        if (operationType == null) {
            return false;
        }
 
        switch (this) {
            case PUBLISHING_ACCEPTING:
                // 发布中_接单中状态允许:1接单,2拒接接单
                return operationType == 1 || operationType == 2;
            case RESPONDING_TO_BE_SPLIT:
                // 响应中_待拆分状态允许:3申请取消,4申请修改
                return operationType == 3 || operationType == 4 ;
            case RESPONDING_APPLY_CANCEL:
                // 响应中_申请取消状态允许:5同意取消,6不同意取消
                return operationType == 5 || operationType == 6;
            case RESPONDING_APPLY_MODIFY:
                // 响应中_申请修改状态允许:7同意修改,8不同意修改
                return operationType ==7 || operationType == 8 ;
            case RESPONDING_REJECT_CANCEL:
                // 响应中_拒绝取消状态允许:3申请取消
                return operationType == 3;
            case RESPONDING_REJECT_MODIFY:
                // 响应中_拒绝修改状态允许:4申请修改
                return operationType == 4 || operationType == 3;
            case ACCEPTED_TO_BE_SETTLED:
                // 验收通过_待结算状态允许:11结算完成
                return operationType == 11;
            case EXECUTING_TO_BE_COMPLETED:
                // 执行中_待全部完成状态允许:9.协商修改
                return operationType == 9;
            default:
                // 其他状态不允许操作
                return false;
        }
    }
}