新增 0xA1并充相关逻辑

This commit is contained in:
Lemon
2025-06-16 15:59:44 +08:00
parent 0f9fdfb009
commit e9573b3ef2
11 changed files with 452 additions and 5 deletions

View File

@@ -35,6 +35,21 @@ public class OrderBasicInfo {
*/
private String orderStatus;
/**
* 订单类型1-普通订单2-并充订单)
*/
private String orderType;
/**
* 并充订单序号
*/
private String mergeChargeNumber;
/**
* 主枪枪编号
*/
private String mainConnectorCode;
/**
* 会员id
*/

View File

@@ -88,6 +88,26 @@ public class GenerateOrderDTO extends BasicPileDTO{
*/
private MemberPlateNumberRelation MemberPlateNumberRelation;
/**
* 鉴权成功标识
*/
private boolean verifyFlag;
/**
* 订单类型1-普通订单2-并充订单)
*/
private String orderType;
/**
* 并充序号(并充启动时有值)
*/
private String mergeChargeNumber;
/**
* 主枪枪编码(并充启动时有值)
*/
private String mainConnectorCode;
/**
* 车牌号码
*/

View File

@@ -0,0 +1,47 @@
package com.jsowell.pile.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 鉴权并充订单DTO
*
* @author Lemon
* @Date 2025/6/12 14:32:38
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class VerifyMergeChargeOrderDTO {
// 桩编号
private String pileSn;
// 枪号
private String connectorCode;
// 枪口编号
private String pileConnectorCode;
// 启动方式
// 0x01 表示通过刷卡启动充电
// 0x03 表示vin码启动充电
private String startMode;
// 物理卡号
private String physicsCard;
// vin
private String vinCode;
// 主辅枪标记
// 0x00 主枪
// 0x01 辅枪
private String connectorMark;
// 并充序号
// 由桩生成:年月日时分秒,多个枪并充时上送并充序号一致,表示为同一次并充操作
private String mergeChargeNumber;
}

View File

@@ -566,4 +566,11 @@ public interface OrderBasicInfoService{
* @param dto
*/
void setOrderSupplementAmount(OrderSupplementAmountDTO dto);
/**
* 鉴权并充订单
* @param dto
* @return
*/
Map<String, Object> verifyMergeChargeOrder(VerifyMergeChargeOrderDTO dto) throws Exception;
}

View File

@@ -4542,6 +4542,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
.orderCode(orderCode)
.transactionCode(transactionCode)
.orderStatus(OrderStatusEnum.NOT_START.getValue())
.orderType(OrderTypeEnum.NORMAL_ORDER.getValue()) // 订单类型1-普通订单2-并充订单)
.memberId(dto.getMemberId())
.stationId(stationId)
.merchantId(merchantId)
@@ -4558,6 +4559,18 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
.settleAmount(BigDecimal.ZERO)
.startType(dto.getStartType())
.build();
if (StringUtils.equals(OrderTypeEnum.MERGE_CHARGE_ORDER.getValue(), dto.getOrderType())) {
// 并充订单
orderBasicInfo.setOrderType(dto.getOrderType());
if (StringUtils.isNotBlank(dto.getMergeChargeNumber())) {
// 并充订单序号
orderBasicInfo.setMergeChargeNumber(dto.getMergeChargeNumber());
}
if (StringUtils.isNotBlank(dto.getMainConnectorCode())) {
// 主枪枪编号
orderBasicInfo.setMainConnectorCode(dto.getMainConnectorCode());
}
}
if (StringUtils.equals(dto.getStartMode(), StartModeEnum.AUTH_CARD.getValue())) {
// 鉴权卡启动
orderBasicInfo.setLogicCard(dto.getPileAuthCardInfo().getLogicCard());
@@ -5122,5 +5135,55 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
logger.info("设置订单待补缴金额, orderCode:{}, supplementAmount:{}, 备注:{}", dto.getOrderCode(), dto.getSupplementAmount(), dto.getRemark());
}
/**
* 鉴权并充订单
* @param dto
* @return
*/
@Override
public Map<String, Object> verifyMergeChargeOrder(VerifyMergeChargeOrderDTO dto) throws Exception {
Map<String, Object> map = new LinkedHashMap<>();
GenerateOrderDTO generateOrderDTO = new GenerateOrderDTO();
generateOrderDTO.setPileSn(dto.getPileSn());
generateOrderDTO.setConnectorCode(dto.getConnectorCode());
generateOrderDTO.setMergeChargeNumber(dto.getMergeChargeNumber());
// 判断是否为主枪
if (StringUtils.equals(Constants.DOUBLE_ZERO, dto.getConnectorMark())) {
// 主枪
generateOrderDTO.setMainConnectorCode(dto.getPileConnectorCode());
}
// 区分是卡还是vin充电
String startMode = dto.getStartMode();
if (StringUtils.equals(Constants.ZERO_ONE, startMode)) {
// 刷卡鉴权
// 根据卡号查询用户信息
String physicsCard = dto.getPhysicsCard();
PileAuthCard pileAuthCardInfo = pileAuthCardService.selectCardInfoByLogicCard(physicsCard);
if (pileAuthCardInfo == null) {
// 未查到此卡信息
throw new BusinessException(ReturnCodeEnum.CODE_THIS_CARD_HAS_NO_INFO);
}
generateOrderDTO.setPileAuthCardInfo(pileAuthCardInfo);
generateOrderDTO.setStartMode(StartModeEnum.AUTH_CARD.getValue());
generateOrderDTO.setMemberId(pileAuthCardInfo.getMemberId());
}else if (StringUtils.equals(Constants.ZERO_THREE, startMode)) {
// vin鉴权
// 根据vin查询绑定用户信息
String vinCode = dto.getVinCode();
MemberPlateNumberRelation memberInfo = memberPlateNumberRelationService.getMemberPlateInfoByVinCode(vinCode);
if (memberInfo == null) {
throw new BusinessException(ReturnCodeEnum.CODE_THIS_VIN_INFO_IS_NULL);
}
generateOrderDTO.setMemberPlateNumberRelation(memberInfo);
generateOrderDTO.setStartMode(StartModeEnum.VIN_CODE.getValue());
generateOrderDTO.setMemberId(memberInfo.getMemberId());
}
// 鉴权通过,生成订单启动充电
map = generateOrderByCard(generateOrderDTO);
return map;
}
}