场景
接口状态字段响应是个字符串, 使用一个枚举值接受,但是switch的时候 提示: constant expression required
解决
switch转化成枚举值,然后比较枚举值
转化成枚举值的方式可以自定义
@Getter
@AllArgsConstructor
public enum TopDaiDaDistributeStatusEnum {
DISTRIBUTE("DISTRIBUTE", "已分配"),
CANCEL("CANCEL", "取消分配"),
CONSIGN("CONSIGN", "已回传");
private String code;
private String desc;
public static TopDaiDaDistributeStatusEnum get(String code){
for (TopDaiDaDistributeStatusEnum value : TopDaiDaDistributeStatusEnum.values()) {
if (code.equals(value.getCode())) {
return value;
}
}
return null;
}
}
public static Integer getTradeStatus(DaifaSupplierOrderQueryResponse.DaifaScpOrderModel order) {
// 10未确认
int tradeStatus;
switch (Objects.requireNonNull(TopDaiDaDistributeStatusEnum.get(order.getDistributeStatus()))) {
case DISTRIBUTE:
// 未分配
tradeStatus = TradeStatus.WAITING_DELIVERING_GOODS.getCode();
break;
case CONSIGN:
// 已回传
tradeStatus = TradeStatus.ALL_DELIVERED.getCode();
break;
case CANCEL:
// 取消分配
tradeStatus = TradeStatus.CLOSED.getCode();
break;
default:
{
tradeStatus = TradeStatus.ERROR_MAPPING.getCode();
log.error("top_daida tid:{} error not supported distributeStatus:{} ", order.getScpOrderId(), order.getDistributeStatus());
}
}
return tradeStatus;
}