update 地锁逻辑修改

This commit is contained in:
2023-09-09 15:53:49 +08:00
parent 594a56e03f
commit 5b6f1c24ad
5 changed files with 184 additions and 144 deletions

View File

@@ -48,7 +48,7 @@ public class PileController extends BaseController {
/** /**
* 查询充电站信息列表(主页) * 查询充电站信息列表(主页)
* * <p>
* http://localhost:8080/uniapp/pile/queryStationInfos * http://localhost:8080/uniapp/pile/queryStationInfos
*/ */
@PostMapping("/queryStationInfos") @PostMapping("/queryStationInfos")
@@ -80,6 +80,7 @@ public class PileController extends BaseController {
/** /**
* 通过站点id查询计费模板列表 * 通过站点id查询计费模板列表
* http://localhost:8080/uniapp/pile/queryBillingPrice/{stationId} * http://localhost:8080/uniapp/pile/queryBillingPrice/{stationId}
*
* @param stationId * @param stationId
* @return * @return
*/ */
@@ -100,7 +101,7 @@ public class PileController extends BaseController {
/** /**
* 通过前端参数查询充电枪口列表 * 通过前端参数查询充电枪口列表
* * <p>
* http://localhost:8080/uniapp/pile/selectConnectorListByParams * http://localhost:8080/uniapp/pile/selectConnectorListByParams
* *
* @param dto * @param dto
@@ -123,6 +124,7 @@ public class PileController extends BaseController {
/** /**
* 根据充电站id查询枪口列表 * 根据充电站id查询枪口列表
*
* @param request * @param request
* @param dto * @param dto
* @return * @return
@@ -159,8 +161,11 @@ public class PileController extends BaseController {
dto.setMemberId(getMemberIdByAuthorization(request)); dto.setMemberId(getMemberIdByAuthorization(request));
orderPileOccupyService.remoteGroundLock(dto); orderPileOccupyService.remoteGroundLock(dto);
response = new RestApiResponse<>(); response = new RestApiResponse<>();
} catch (BusinessException e) {
logger.error("遥控地锁指令 warn", e);
response = new RestApiResponse<>(e.getCode(), e.getMessage());
} catch (Exception e) { } catch (Exception e) {
logger.error("遥控地锁指令 error, ", e); logger.error("遥控地锁指令 error", e);
response = new RestApiResponse<>(e); response = new RestApiResponse<>(e);
} }
logger.info("遥控地锁指令 result:{}", response); logger.info("遥控地锁指令 result:{}", response);

View File

@@ -35,6 +35,9 @@ public class CacheConstants {
// 地锁数据 // 地锁数据
public static final String GROUND_LOCK_DATA = "ground_lock_data:"; public static final String GROUND_LOCK_DATA = "ground_lock_data:";
// 地锁订单数据
public static final String GROUND_LOCK_OCCUPY_ORDER = "ground_lock_occupy_order:";
// 根据站点id查询充电桩列表 // 根据站点id查询充电桩列表
public static final String GET_PILE_LIST_BY_STATION_ID = "get_pile_list_by_station_id:"; public static final String GET_PILE_LIST_BY_STATION_ID = "get_pile_list_by_station_id:";

View File

@@ -122,6 +122,9 @@ public enum ReturnCodeEnum {
CODE_GET_FIRST_LEVEL_MERCHANT_BY_APP_ID("00100058", "根据小程序appId未查询到一级运营商信息"), CODE_GET_FIRST_LEVEL_MERCHANT_BY_APP_ID("00100058", "根据小程序appId未查询到一级运营商信息"),
// 地锁存在未完成的占桩订单
CODE_HAS_OCCUPY_PILE_ORDER_ERROR("00100059", "当前地锁存在未完成的占桩订单"),
/* 个人桩 start */ /* 个人桩 start */
CODE_PILE_HAS_BEEN_BINDING_ERROR("00400001", "此桩已被绑定,请联系管理员!"), CODE_PILE_HAS_BEEN_BINDING_ERROR("00400001", "此桩已被绑定,请联系管理员!"),

View File

@@ -174,5 +174,8 @@ public class GroundLockDataUploadHandler extends AbstractHandler{
// 关闭占桩订单 // 关闭占桩订单
orderPileOccupyService.closeOccupyPileOrder(pileSn, connectorCode); orderPileOccupyService.closeOccupyPileOrder(pileSn, connectorCode);
} }
String occupyOrderKey = CacheConstants.GROUND_LOCK_OCCUPY_ORDER + pileSn + connectorCode;
redisCache.deleteObject(occupyOrderKey);
} }
} }

View File

@@ -4,8 +4,10 @@ import com.alibaba.fastjson2.JSON;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.jsowell.adapay.service.AdapayService; import com.jsowell.adapay.service.AdapayService;
import com.jsowell.common.constant.CacheConstants;
import com.jsowell.common.constant.Constants; import com.jsowell.common.constant.Constants;
import com.jsowell.common.core.page.PageResponse; import com.jsowell.common.core.page.PageResponse;
import com.jsowell.common.core.redis.RedisCache;
import com.jsowell.common.enums.DelFlagEnum; import com.jsowell.common.enums.DelFlagEnum;
import com.jsowell.common.enums.MemberWalletEnum; import com.jsowell.common.enums.MemberWalletEnum;
import com.jsowell.common.enums.uniapp.OccupyOrderPayStatusEnum; import com.jsowell.common.enums.uniapp.OccupyOrderPayStatusEnum;
@@ -70,6 +72,9 @@ public class OrderPileOccupyServiceImpl implements OrderPileOccupyService {
@Autowired @Autowired
private OrderPileOccupyService orderPileOccupyService; private OrderPileOccupyService orderPileOccupyService;
@Autowired
private RedisCache redisCache;
@Override @Override
public int deleteByPrimaryKey(Integer id) { public int deleteByPrimaryKey(Integer id) {
return orderPileOccupyMapper.deleteByPrimaryKey(id); return orderPileOccupyMapper.deleteByPrimaryKey(id);
@@ -166,6 +171,13 @@ public class OrderPileOccupyServiceImpl implements OrderPileOccupyService {
String memberId = dto.getMemberId(); String memberId = dto.getMemberId();
String pileSn = dto.getPileSn(); String pileSn = dto.getPileSn();
String connectorCode = dto.getConnectorCode(); String connectorCode = dto.getConnectorCode();
String redisKey = CacheConstants.GROUND_LOCK_OCCUPY_ORDER + pileSn + connectorCode;
String cacheObject = redisCache.getCacheObject(redisKey);
if (StringUtils.isNotBlank(cacheObject)) {
throw new BusinessException(ReturnCodeEnum.CODE_HAS_OCCUPY_PILE_ORDER_ERROR);
}
// 创建占桩订单 // 创建占桩订单
OrderPileOccupy orderPileOccupy = new OrderPileOccupy(); OrderPileOccupy orderPileOccupy = new OrderPileOccupy();
String occupyCode = "OP" + IdUtils.getOrderCode(); String occupyCode = "OP" + IdUtils.getOrderCode();
@@ -184,6 +196,9 @@ public class OrderPileOccupyServiceImpl implements OrderPileOccupyService {
orderPileOccupy.setDelFlag(DelFlagEnum.NORMAL.getValue()); orderPileOccupy.setDelFlag(DelFlagEnum.NORMAL.getValue());
orderPileOccupyMapper.insertSelective(orderPileOccupy); orderPileOccupyMapper.insertSelective(orderPileOccupy);
// 放缓存
redisCache.setCacheObject(redisKey, occupyCode, CacheConstants.cache_expire_time_10d);
return orderPileOccupy.getOccupyCode(); return orderPileOccupy.getOccupyCode();
} }
@@ -381,27 +396,29 @@ public class OrderPileOccupyServiceImpl implements OrderPileOccupyService {
* @return * @return
*/ */
public OrderPileOccupy getOccupiedOrder(String pileSn, String connectorCode) { public OrderPileOccupy getOccupiedOrder(String pileSn, String connectorCode) {
OrderPileOccupy result = null;
// 查缓存中的占桩订单编号
String redisKey = CacheConstants.GROUND_LOCK_OCCUPY_ORDER + pileSn + connectorCode;
String orderCode = redisCache.getCacheObject(redisKey);
if (StringUtils.isNotBlank(orderCode)) {
result = queryByOccupyCode(orderCode);
} else {
List<OrderPileOccupy> list = orderPileOccupyMapper.queryOccupiedOrder(pileSn, connectorCode); List<OrderPileOccupy> list = orderPileOccupyMapper.queryOccupiedOrder(pileSn, connectorCode);
if (CollectionUtils.isEmpty(list)) { if (CollectionUtils.isNotEmpty(list)) {
return null;
}
if (list.size() > 1) { if (list.size() > 1) {
List<Integer> collect = list.stream().map(OrderPileOccupy::getId).collect(Collectors.toList()); List<Integer> collect = list.stream().map(OrderPileOccupy::getId).collect(Collectors.toList());
log.info("根据pileSn:{}, connectorCode:{}, 查询出多条占桩中的占桩订单, ids:{}", pileSn, connectorCode, collect); log.info("根据pileSn:{}, connectorCode:{}, 查询出多条占桩中的占桩订单, ids:{}", pileSn, connectorCode, collect);
} }
return list.get(0); result = list.get(0);
}
}
return result;
} }
@Override @Override
public void remoteGroundLock(RemoteGroundLockDTO dto) { public void remoteGroundLock(RemoteGroundLockDTO dto) {
log.info("控制地锁升降并生成占桩订单 params:{}", JSON.toJSONString(dto)); log.info("控制地锁升降并生成占桩订单 params:{}", JSON.toJSONString(dto));
// 控制地锁升降
RemoteControlGroundLockCommand command = new RemoteControlGroundLockCommand();
command.setPileSn(dto.getPileSn());
command.setConnectorCode(dto.getConnectorCode());
command.setOperate(dto.getOperate());
ykcPushCommandService.pushRemoteControlGroundLock(command);
// 如果是降锁生成占桩订单 // 如果是降锁生成占桩订单
if (StringUtils.equals(dto.getOperate(), Constants.ZERO)) { if (StringUtils.equals(dto.getOperate(), Constants.ZERO)) {
// 生成占桩订单 // 生成占桩订单
@@ -412,6 +429,13 @@ public class OrderPileOccupyServiceImpl implements OrderPileOccupyService {
// 生成占桩订单(草稿单) // 生成占桩订单(草稿单)
orderPileOccupyService.generateOccupyPileOrder(generateOccupyOrderDTO); orderPileOccupyService.generateOccupyPileOrder(generateOccupyOrderDTO);
} }
// 控制地锁升降
RemoteControlGroundLockCommand command = new RemoteControlGroundLockCommand();
command.setPileSn(dto.getPileSn());
command.setConnectorCode(dto.getConnectorCode());
command.setOperate(dto.getOperate());
ykcPushCommandService.pushRemoteControlGroundLock(command);
} }
/** /**
@@ -465,10 +489,12 @@ public class OrderPileOccupyServiceImpl implements OrderPileOccupyService {
// 查询草稿状态的占桩订单 // 查询草稿状态的占桩订单
OrderPileOccupy draftOccupyOrder = getDraftOccupyOrder(pileSn, connectorCode); OrderPileOccupy draftOccupyOrder = getDraftOccupyOrder(pileSn, connectorCode);
// 关闭草稿订单 // 关闭草稿订单
if (draftOccupyOrder != null) {
draftOccupyOrder.setStatus(Constants.ONE); draftOccupyOrder.setStatus(Constants.ONE);
draftOccupyOrder.setPayStatus(Constants.TWO); draftOccupyOrder.setPayStatus(Constants.TWO);
updateByPrimaryKey(draftOccupyOrder); updateByPrimaryKey(draftOccupyOrder);
} }
}
/* /*
* 支付占桩订单 * 支付占桩订单