|
@@ -1,6 +1,7 @@
|
|
|
package com.kym.service.miniapp.impl;
|
|
package com.kym.service.miniapp.impl;
|
|
|
|
|
|
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
|
|
|
+import com.alibaba.fastjson2.JSONObject;
|
|
|
import com.baomidou.dynamic.datasource.annotation.DS;
|
|
import com.baomidou.dynamic.datasource.annotation.DS;
|
|
|
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
|
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
|
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
|
@@ -29,6 +30,8 @@ import org.springframework.context.annotation.Lazy;
|
|
|
import org.springframework.scheduling.annotation.Async;
|
|
import org.springframework.scheduling.annotation.Async;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
|
|
+import java.io.IOException;
|
|
|
|
|
+import java.net.SocketTimeoutException;
|
|
|
import java.time.Duration;
|
|
import java.time.Duration;
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
@@ -129,7 +132,6 @@ public class ChargeServiceImpl implements ChargeService {
|
|
|
var chargeOrder = chargeOrderService.lambdaQuery()
|
|
var chargeOrder = chargeOrderService.lambdaQuery()
|
|
|
.eq(ChargeOrder::getUserId, userId)
|
|
.eq(ChargeOrder::getUserId, userId)
|
|
|
.eq(ChargeOrder::getIsBooking, ChargeOrder.IS_BOOKING_是)
|
|
.eq(ChargeOrder::getIsBooking, ChargeOrder.IS_BOOKING_是)
|
|
|
- .eq(ChargeOrder::getOrderStatus, ChargeOrder.ORDER_STATUS_未知)
|
|
|
|
|
.eq(ChargeOrder::getChargeStatus, ChargeOrder.CHARGE_STATUS_预约中)
|
|
.eq(ChargeOrder::getChargeStatus, ChargeOrder.CHARGE_STATUS_预约中)
|
|
|
.one();
|
|
.one();
|
|
|
cancelBookByChargeOrder(chargeOrder);
|
|
cancelBookByChargeOrder(chargeOrder);
|
|
@@ -144,7 +146,6 @@ public class ChargeServiceImpl implements ChargeService {
|
|
|
var chargeOrder = chargeOrderService.lambdaQuery()
|
|
var chargeOrder = chargeOrderService.lambdaQuery()
|
|
|
.eq(ChargeOrder::getConnectorId, connectorId)
|
|
.eq(ChargeOrder::getConnectorId, connectorId)
|
|
|
.eq(ChargeOrder::getIsBooking, ChargeOrder.IS_BOOKING_是)
|
|
.eq(ChargeOrder::getIsBooking, ChargeOrder.IS_BOOKING_是)
|
|
|
- .eq(ChargeOrder::getOrderStatus, ChargeOrder.ORDER_STATUS_未知)
|
|
|
|
|
.eq(ChargeOrder::getChargeStatus, ChargeOrder.CHARGE_STATUS_预约中)
|
|
.eq(ChargeOrder::getChargeStatus, ChargeOrder.CHARGE_STATUS_预约中)
|
|
|
.one();
|
|
.one();
|
|
|
cancelBookByChargeOrder(chargeOrder);
|
|
cancelBookByChargeOrder(chargeOrder);
|
|
@@ -157,10 +158,9 @@ public class ChargeServiceImpl implements ChargeService {
|
|
|
stopDelayService.removeFromDelayQueue(chargeOrder.getStartChargeSeq());
|
|
stopDelayService.removeFromDelayQueue(chargeOrder.getStartChargeSeq());
|
|
|
// 修改订单状态为取消
|
|
// 修改订单状态为取消
|
|
|
chargeOrderService.lambdaUpdate()
|
|
chargeOrderService.lambdaUpdate()
|
|
|
- .eq(ChargeOrder::getStartChargeSeq, chargeOrder.getStartChargeSeq())
|
|
|
|
|
- .eq(ChargeOrder::getIsBooking, ChargeOrder.IS_BOOKING_是)
|
|
|
|
|
.set(ChargeOrder::getOrderStatus, ChargeOrder.ORDER_STATUS_取消)
|
|
.set(ChargeOrder::getOrderStatus, ChargeOrder.ORDER_STATUS_取消)
|
|
|
.set(ChargeOrder::getChargeStatus, ChargeOrder.CHARGE_STATUS_已取消)
|
|
.set(ChargeOrder::getChargeStatus, ChargeOrder.CHARGE_STATUS_已取消)
|
|
|
|
|
+ .eq(ChargeOrder::getStartChargeSeq, chargeOrder.getStartChargeSeq())
|
|
|
.update();
|
|
.update();
|
|
|
} else {
|
|
} else {
|
|
|
LOGGER.info("用户没有预约中的订单");
|
|
LOGGER.info("用户没有预约中的订单");
|
|
@@ -179,16 +179,20 @@ public class ChargeServiceImpl implements ChargeService {
|
|
|
* @return
|
|
* @return
|
|
|
*/
|
|
*/
|
|
|
@Override
|
|
@Override
|
|
|
- @DSTransactional(noRollbackFor = java.net.SocketTimeoutException.class)
|
|
|
|
|
public Map<String, String> queryStartCharge(Long userId, String connectorId, Long userRechargeRightsId, Boolean isBooking, LocalDateTime startTime, LocalDateTime endTime) {
|
|
public Map<String, String> queryStartCharge(Long userId, String connectorId, Long userRechargeRightsId, Boolean isBooking, LocalDateTime startTime, LocalDateTime endTime) {
|
|
|
var map = getConnectorIdAndStationId(connectorId);
|
|
var map = getConnectorIdAndStationId(connectorId);
|
|
|
connectorId = map.get("connectorId");
|
|
connectorId = map.get("connectorId");
|
|
|
|
|
+
|
|
|
|
|
+ if (CommUtil.isEmptyOrNull(connectorId)) {
|
|
|
|
|
+ throw new BusinessException("请输入正确的设备编号");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
var stationId = map.get("stationId");
|
|
var stationId = map.get("stationId");
|
|
|
|
|
|
|
|
LOGGER.info("用户:{},站点:{},设备:{}请求充电", userId, stationId, connectorId);
|
|
LOGGER.info("用户:{},站点:{},设备:{}请求充电", userId, stationId, connectorId);
|
|
|
|
|
|
|
|
// 设备是否插枪
|
|
// 设备是否插枪
|
|
|
- if (ConnectorStatusCache.INSTANCE.get(connectorId) != EquipmentInfo.SERVICE_STATUS_已连接) {
|
|
|
|
|
|
|
+ if (ConnectorStatusCache.INSTANCE.get(connectorId) == EquipmentInfo.SERVICE_STATUS_空闲) {
|
|
|
throw new BusinessException("请插入充电枪");
|
|
throw new BusinessException("请插入充电枪");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -235,6 +239,7 @@ public class ChargeServiceImpl implements ChargeService {
|
|
|
|
|
|
|
|
// 组装订单数据
|
|
// 组装订单数据
|
|
|
order = new ChargeOrder();
|
|
order = new ChargeOrder();
|
|
|
|
|
+ order.setIsBooking(isBooking ? ChargeOrder.IS_BOOKING_是 : ChargeOrder.IS_BOOKING_否);
|
|
|
order.setUserId(userId);
|
|
order.setUserId(userId);
|
|
|
order.setStationId(stationId);
|
|
order.setStationId(stationId);
|
|
|
order.setStartChargeSeq(startChargeSeq);
|
|
order.setStartChargeSeq(startChargeSeq);
|
|
@@ -288,9 +293,14 @@ public class ChargeServiceImpl implements ChargeService {
|
|
|
if (equipAuth.containsKey("SuccStat") && equipAuth.getIntValue("SuccStat") == 0) {
|
|
if (equipAuth.containsKey("SuccStat") && equipAuth.getIntValue("SuccStat") == 0) {
|
|
|
// 启动充电
|
|
// 启动充电
|
|
|
var startCharge = enPlusService.queryStartCharge(order.getStartChargeSeq(), connectorId, qrCode, amount);
|
|
var startCharge = enPlusService.queryStartCharge(order.getStartChargeSeq(), connectorId, qrCode, amount);
|
|
|
|
|
+
|
|
|
if (startCharge.containsKey("SuccStat") && startCharge.getIntValue("SuccStat") == 0) {
|
|
if (startCharge.containsKey("SuccStat") && startCharge.getIntValue("SuccStat") == 0) {
|
|
|
// 启动成功,更新充电订单状态
|
|
// 启动成功,更新充电订单状态
|
|
|
- chargeOrderService.lambdaUpdate().set(ChargeOrder::getChargeStatus, startCharge.getIntValue("StartChargeSeqStat")).eq(ChargeOrder::getStartChargeSeq, order.getStartChargeSeq()).update();
|
|
|
|
|
|
|
+ chargeOrderService.lambdaUpdate()
|
|
|
|
|
+ .set(ChargeOrder::getIsBooking, ChargeOrder.IS_BOOKING_否)
|
|
|
|
|
+ .set(ChargeOrder::getChargeStatus, startCharge.getIntValue("StartChargeSeqStat"))
|
|
|
|
|
+ .eq(ChargeOrder::getStartChargeSeq, order.getStartChargeSeq())
|
|
|
|
|
+ .update();
|
|
|
return Map.of("startChargeSeq", order.getStartChargeSeq());
|
|
return Map.of("startChargeSeq", order.getStartChargeSeq());
|
|
|
} else {
|
|
} else {
|
|
|
// 启动充电失败
|
|
// 启动充电失败
|
|
@@ -369,6 +379,7 @@ public class ChargeServiceImpl implements ChargeService {
|
|
|
.set(ChargeOrder::getSumPeriod, (int) (data.getIntValue("SumPeriod")))
|
|
.set(ChargeOrder::getSumPeriod, (int) (data.getIntValue("SumPeriod")))
|
|
|
.set(ChargeOrder::getChargeDetail, data.getString("ChargeDetails"))
|
|
.set(ChargeOrder::getChargeDetail, data.getString("ChargeDetails"))
|
|
|
.set(ChargeOrder::getChargeStatus, data.getIntValue("StartChargeSeqStat"))
|
|
.set(ChargeOrder::getChargeStatus, data.getIntValue("StartChargeSeqStat"))
|
|
|
|
|
+ .eq(ChargeOrder::getStartChargeSeq, startChargeSeq)
|
|
|
.update();
|
|
.update();
|
|
|
|
|
|
|
|
chargeOrder.setSoc(data.getDoubleValue("Soc"));
|
|
chargeOrder.setSoc(data.getDoubleValue("Soc"));
|