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

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