ChargeBusinessServiceImpl.java
9.27 KB
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
package com.zteits.charge.biz.impl;
import com.alibaba.fastjson.JSON;
import com.clouds.common.utils.DateUtil;
import com.clouds.common.utils.SeqHelper;
import com.zteits.charge.domain.kelin.post.QueryEquipAuthPost;
import com.zteits.charge.domain.kelin.post.QueryEquipChargeStatusPost;
import com.zteits.charge.domain.kelin.post.QueryStartChargePost;
import com.zteits.charge.domain.kelin.post.QueryStopChargePost;
import com.zteits.charge.domain.kelin.result.QueryEquipAuthResult;
import com.zteits.charge.domain.kelin.result.QueryStartChargeResult;
import com.zteits.charge.domain.kelin.result.QueryStopChargeResult;
import com.zteits.charge.service.spi.CallBusinessInfoSpi;
import com.zteits.clouds.api.apibase.bean.BizResult;
import com.zteits.clouds.api.apibase.constants.BasicEnum;
import com.zteits.clouds.api.apibase.constants.ErrorType;
import com.zteits.clouds.api.apibase.constants.charge.enums.ChargeOrderOperatorTypeEnum;
import com.zteits.clouds.api.apibase.constants.charge.enums.ChargeOrderStateEnum;
import com.zteits.clouds.api.apibase.constants.charge.enums.SuccStatEnum;
import com.zteits.clouds.api.apibase.exception.BizException;
import com.zteits.clouds.api.dto.charge.dto.StartStopChargeResultDTO;
import com.zteits.clouds.api.dto.charge.param.QueryChargeOrderStatusRequest;
import com.zteits.clouds.api.dto.charge.param.QueryEquipAuthRequest;
import com.zteits.clouds.api.dto.charge.param.StartStopChargeRequest;
import com.zteits.clouds.api.dto.charge.result.QueryEquipChargeStatusResult;
import com.zteits.clouds.api.dto.order.param.OrderChargeOperateLogRequest;
import com.zteits.clouds.api.service.charge.ChargeBusinessService;
import com.zteits.clouds.api.service.order.chargeOrder.oper.OrderChargeInfoOperService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Date;
/**
* @since 2025-03-18
*/
@Slf4j
@Component
public class ChargeBusinessServiceImpl implements ChargeBusinessService {
@Autowired
private CallBusinessInfoSpi callBusinessInfoSpi;
@Autowired
private OrderChargeInfoOperService orderChargeInfoOperService;
@Override
public BizResult<Boolean> queryEquipAuth(QueryEquipAuthRequest request) {
QueryEquipAuthPost post = new QueryEquipAuthPost();
post.setConnectorId(request.getConnectorId());
// 设置设备流水号
String timestamp = DateUtil.getDateString(new Date(),DateUtil.yyyyMMddHHmmssSSS);
String seq = "E"+ timestamp + SeqHelper.getSequence(timestamp);
post.setEquipAuthSeq(seq);
QueryEquipAuthResult queryEquipAuthResult = callBusinessInfoSpi.queryEquipAuth(request.getOperatorId(), post);
if (queryEquipAuthResult == null) {
return new BizResult<>(ErrorType.CALL_THIRD_SERVICE_EXCEPTION,"设备校验异常");
}
if (SuccStatEnum.SUCCESS.getCode() != queryEquipAuthResult.getSuccStat()){
if (queryEquipAuthResult.getFailReason() == null) {
return new BizResult<>(ErrorType.CALL_THIRD_SERVICE_EXCEPTION,"设备认证异常");
}
if (queryEquipAuthResult.getFailReason() == 1) {
return new BizResult<>(ErrorType.CALL_THIRD_SERVICE_EXCEPTION,"设备尚未插枪");
}
if (queryEquipAuthResult.getFailReason() == 2) {
return new BizResult<>(ErrorType.CALL_THIRD_SERVICE_EXCEPTION,"设备检测失败");
}
return new BizResult<>(ErrorType.CALL_THIRD_SERVICE_EXCEPTION,"设备认证失败");
}
return new BizResult<>(true);
}
@Override
public BizResult<StartStopChargeResultDTO> queryStartCharge(StartStopChargeRequest request) {
OrderChargeOperateLogRequest chargeLog = new OrderChargeOperateLogRequest(request.getOperatorId(), request.getOrderId(), ChargeOrderOperatorTypeEnum.REQUEST_START_CHARGE, JSON.toJSONString(request),request.getsOpName());
try{
StartStopChargeResultDTO dto = startCharge(request);
chargeLog.setSuccess("请求成功。充电状态:"+ ChargeOrderStateEnum.getDescByCode(dto.getChargeOrderState()),JSON.toJSONString(dto));
return new BizResult<>(dto);
} catch (Exception e) {
log.error("请求启动充电异常",e);
chargeLog.setFail("请求失败。失败原因:"+e.getMessage(),null);
return new BizResult<>(ErrorType.CALL_THIRD_SERVICE_EXCEPTION,e.getMessage());
} finally {
log.info("保存启动充电日志:{}",JSON.toJSONString(chargeLog));
orderChargeInfoOperService.saveOrderChargeOperateLog(chargeLog);
}
}
private StartStopChargeResultDTO startCharge(StartStopChargeRequest request) {
QueryStartChargePost post = new QueryStartChargePost();
post.setStartChargeSeq(request.getOrderId());
post.setConnectorId(request.getConnectorId());
post.setChargeMoney(request.getChargeMoney());
QueryStartChargeResult queryStartChargeResult = callBusinessInfoSpi.queryStartCharge(request.getOperatorId(), post);
if (queryStartChargeResult == null) {
throw new BizException(ErrorType.CALL_THIRD_SERVICE_EXCEPTION,"启动充电异常");
}
if (SuccStatEnum.SUCCESS.getCode() != queryStartChargeResult.getSuccStat()){
if (queryStartChargeResult.getFailReason() == null) {
throw new BizException(ErrorType.CALL_THIRD_SERVICE_EXCEPTION,"设备认证异常");
}
if (queryStartChargeResult.getFailReason() == 1) {
throw new BizException(ErrorType.CALL_THIRD_SERVICE_EXCEPTION,"设备不存在");
}
if (queryStartChargeResult.getFailReason() == 2) {
throw new BizException(ErrorType.CALL_THIRD_SERVICE_EXCEPTION,"设备离线");
}
throw new BizException(ErrorType.CALL_THIRD_SERVICE_EXCEPTION,"启动充电失败");
}
StartStopChargeResultDTO dto = new StartStopChargeResultDTO();
dto.setOrderId(request.getOrderId());
dto.setChargeOrderState(queryStartChargeResult.getStartChargeSeqStat());
return dto;
}
@Override
public BizResult<QueryEquipChargeStatusResult> queryEquipChargeStatus(QueryChargeOrderStatusRequest request) {
QueryEquipChargeStatusPost post = new QueryEquipChargeStatusPost();
post.setStartChargeSeq(request.getOrderId());
QueryEquipChargeStatusResult queryEquipChargeStatusResult = callBusinessInfoSpi.queryEquipChargeStatus(request.getOperatorId(), post);
return new BizResult<>(queryEquipChargeStatusResult);
}
@Override
public BizResult<StartStopChargeResultDTO> queryStopCharge(StartStopChargeRequest request) {
OrderChargeOperateLogRequest chargeLog = new OrderChargeOperateLogRequest(request.getOperatorId(), request.getOrderId(), ChargeOrderOperatorTypeEnum.REQUEST_STOP_CHARGE, JSON.toJSONString(request), request.getsOpName());
try{
StartStopChargeResultDTO dto = stopCharge(request);
chargeLog.setSuccess("请求成功。充电状态:"+ ChargeOrderStateEnum.getDescByCode(dto.getChargeOrderState()),JSON.toJSONString(dto));
return new BizResult<>(dto);
} catch (Exception e) {
log.error("请求停止充电异常",e);
chargeLog.setFail("请求失败。失败原因:"+e.getMessage(),null);
return new BizResult<>(ErrorType.CALL_THIRD_SERVICE_EXCEPTION,e.getMessage());
} finally {
orderChargeInfoOperService.saveOrderChargeOperateLog(chargeLog);
}
}
private StartStopChargeResultDTO stopCharge(StartStopChargeRequest request) {
QueryStopChargePost post = new QueryStopChargePost();
post.setConnectorId(request.getConnectorId());
post.setStartChargeSeq(request.getOrderId());
QueryStopChargeResult queryStopChargeResult = callBusinessInfoSpi.queryStopCharge(request.getOperatorId(), post);
if (queryStopChargeResult == null) {
throw new BizException(ErrorType.CALL_THIRD_SERVICE_EXCEPTION,"停止充电异常");
}
if (SuccStatEnum.SUCCESS.getCode() != queryStopChargeResult.getSuccStat()){
if (queryStopChargeResult.getFailReason() == null) {
throw new BizException(ErrorType.CALL_THIRD_SERVICE_EXCEPTION,"停止充电异常");
}
if (queryStopChargeResult.getFailReason() == 1) {
throw new BizException(ErrorType.CALL_THIRD_SERVICE_EXCEPTION,"设备不存在");
}
if (queryStopChargeResult.getFailReason() == 2) {
throw new BizException(ErrorType.CALL_THIRD_SERVICE_EXCEPTION,"设备离线");
}
if (queryStopChargeResult.getFailReason() == 3) {
throw new BizException(ErrorType.CALL_THIRD_SERVICE_EXCEPTION,"设备已停止充电");
}
throw new BizException(ErrorType.CALL_THIRD_SERVICE_EXCEPTION,"停止充电失败");
}
StartStopChargeResultDTO startStopChargeResultDTO = new StartStopChargeResultDTO();
startStopChargeResultDTO.setOrderId(request.getOrderId());
startStopChargeResultDTO.setChargeOrderState(queryStopChargeResult.getStartChargeSeqStat());
return startStopChargeResultDTO;
}
}