新增 鉴权卡启动充电,订单信息存入数据库

This commit is contained in:
Lemon
2023-03-23 15:08:53 +08:00
parent 0c927941e3
commit dcc438a87a

View File

@@ -6,7 +6,9 @@ import com.jsowell.common.constant.Constants;
import com.jsowell.common.core.domain.ykc.YKCDataProtocol; import com.jsowell.common.core.domain.ykc.YKCDataProtocol;
import com.jsowell.common.core.domain.ykc.YKCFrameTypeCode; import com.jsowell.common.core.domain.ykc.YKCFrameTypeCode;
import com.jsowell.common.enums.ykc.OrderStatusEnum; import com.jsowell.common.enums.ykc.OrderStatusEnum;
import com.jsowell.common.enums.ykc.PayModeEnum;
import com.jsowell.common.enums.ykc.ReturnCodeEnum; import com.jsowell.common.enums.ykc.ReturnCodeEnum;
import com.jsowell.common.enums.ykc.StartModeEnum;
import com.jsowell.common.exception.BusinessException; import com.jsowell.common.exception.BusinessException;
import com.jsowell.common.util.BytesUtil; import com.jsowell.common.util.BytesUtil;
import com.jsowell.common.util.StringUtils; import com.jsowell.common.util.StringUtils;
@@ -16,17 +18,23 @@ import com.jsowell.netty.factory.YKCOperateFactory;
import com.jsowell.pile.domain.OrderBasicInfo; import com.jsowell.pile.domain.OrderBasicInfo;
import com.jsowell.pile.domain.OrderDetail; import com.jsowell.pile.domain.OrderDetail;
import com.jsowell.pile.domain.PileAuthCard; import com.jsowell.pile.domain.PileAuthCard;
import com.jsowell.pile.domain.PileBasicInfo;
import com.jsowell.pile.service.IPileAuthCardService; import com.jsowell.pile.service.IPileAuthCardService;
import com.jsowell.pile.service.IPileBasicInfoService;
import com.jsowell.pile.service.IPileBillingTemplateService;
import com.jsowell.pile.service.impl.MemberBasicInfoServiceImpl; import com.jsowell.pile.service.impl.MemberBasicInfoServiceImpl;
import com.jsowell.pile.transaction.dto.OrderTransactionDTO; import com.jsowell.pile.transaction.dto.OrderTransactionDTO;
import com.jsowell.pile.transaction.service.TransactionService; import com.jsowell.pile.transaction.service.TransactionService;
import com.jsowell.pile.vo.uniapp.CurrentTimePriceDetails;
import com.jsowell.pile.vo.uniapp.MemberVO; import com.jsowell.pile.vo.uniapp.MemberVO;
import com.jsowell.pile.vo.web.BillingTemplateVO;
import io.netty.channel.Channel; import io.netty.channel.Channel;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
/** /**
* 充电桩主动申请启动充电 0x31 * 充电桩主动申请启动充电 0x31
@@ -49,6 +57,12 @@ public class ConfirmStartChargingRequestHandler extends AbstractHandler{
@Autowired @Autowired
private TransactionService pileTransactionService; private TransactionService pileTransactionService;
@Autowired
private IPileBasicInfoService pileBasicInfoService;
@Autowired
private IPileBillingTemplateService pileBillingTemplateService;
@Override @Override
public void afterPropertiesSet() throws Exception { public void afterPropertiesSet() throws Exception {
YKCOperateFactory.register(type, this); YKCOperateFactory.register(type, this);
@@ -109,6 +123,7 @@ public class ConfirmStartChargingRequestHandler extends AbstractHandler{
String logicCard = ""; String logicCard = "";
byte[] authenticationFlagByteArr = Constants.zeroByteArray; byte[] authenticationFlagByteArr = Constants.zeroByteArray;
byte[] accountBalanceByteArr = Constants.zeroByteArray; byte[] accountBalanceByteArr = Constants.zeroByteArray;
String transactionCode = IdUtils.generateTransactionCode(pileSn, connectorCode);
try { try {
if (StringUtils.equals("01", startMode)) { if (StringUtils.equals("01", startMode)) {
// 刷卡启动充电 // 刷卡启动充电
@@ -138,39 +153,43 @@ public class ConfirmStartChargingRequestHandler extends AbstractHandler{
// 鉴权成功标识 0x00 失败 0x01 成功 // 鉴权成功标识 0x00 失败 0x01 成功
authenticationFlagByteArr = Constants.oneByteArray; authenticationFlagByteArr = Constants.oneByteArray;
} }
// 通过桩号查询所属站点
PileBasicInfo pileBasicInfo = pileBasicInfoService.selectPileBasicInfoBySN(pileSn);
Long stationId = pileBasicInfo.getStationId();
// TODO 个人桩站点不计费
// TODO 将此订单信息存入订单表 // 将此订单信息存入订单表
String orderCode = IdUtils.getOrderCode(); String orderCode = IdUtils.getOrderCode();
String transactionCode = IdUtils.generateTransactionCode(dto.getPileSn(), dto.getConnectorCode());
// 订单基本信息 // 订单基本信息
OrderBasicInfo orderBasicInfo = OrderBasicInfo.builder() OrderBasicInfo orderBasicInfo = OrderBasicInfo.builder()
.orderCode(orderCode) .orderCode(orderCode)
.transactionCode(transactionCode) .transactionCode(transactionCode)
.orderStatus(OrderStatusEnum.NOT_START.getValue()) .orderStatus(OrderStatusEnum.NOT_START.getValue())
.memberId(memberVO.getMemberId()) .memberId(memberVO.getMemberId())
.stationId(dto.getPileConnector().getStationId()) .stationId(String.valueOf(stationId))
.pileSn(dto.getPileSn()) .pileSn(pileSn)
.connectorCode(dto.getConnectorCode()) .connectorCode(connectorCode)
.pileConnectorCode(dto.getPileSn() + dto.getConnectorCode()) .pileConnectorCode(pileSn + connectorCode)
.startMode(dto.getStartMode()) .startMode(StartModeEnum.CARD.getValue())
.payStatus(Constants.ZERO) .payStatus(Constants.ZERO)
.payAmount(dto.getChargeAmount()) .payAmount(new BigDecimal(String.valueOf(accountBalance)))
.payMode(dto.getPayMode()) .payTime(new Date())
.payMode(PayModeEnum.PAYMENT_OF_BALANCE.getValue())
.orderAmount(BigDecimal.ZERO) .orderAmount(BigDecimal.ZERO)
.build(); .build();
// 根据桩编码查询当前计费模板
BillingTemplateVO billingTemplateVO = pileBillingTemplateService.selectBillingTemplateDetailByPileSn(pileSn);
// 订单详情 // 订单详情
OrderDetail orderDetail = OrderDetail.builder() OrderDetail orderDetail = OrderDetail.builder()
.orderCode(orderCode) .orderCode(orderCode)
.sharpElectricityPrice(dto.getBillingTemplate().getSharpElectricityPrice()) .sharpElectricityPrice(billingTemplateVO.getSharpElectricityPrice())
.sharpServicePrice(dto.getBillingTemplate().getSharpServicePrice()) .sharpServicePrice(billingTemplateVO.getSharpServicePrice())
.peakElectricityPrice(dto.getBillingTemplate().getPeakElectricityPrice()) .peakElectricityPrice(billingTemplateVO.getPeakElectricityPrice())
.peakServicePrice(dto.getBillingTemplate().getPeakServicePrice()) .peakServicePrice(billingTemplateVO.getPeakServicePrice())
.flatElectricityPrice(dto.getBillingTemplate().getFlatElectricityPrice()) .flatElectricityPrice(billingTemplateVO.getFlatElectricityPrice())
.flatServicePrice(dto.getBillingTemplate().getFlatServicePrice()) .flatServicePrice(billingTemplateVO.getFlatServicePrice())
.valleyElectricityPrice(dto.getBillingTemplate().getValleyElectricityPrice()) .valleyElectricityPrice(billingTemplateVO.getValleyElectricityPrice())
.valleyServicePrice(dto.getBillingTemplate().getValleyServicePrice()) .valleyServicePrice(billingTemplateVO.getValleyServicePrice())
.build(); .build();
OrderTransactionDTO createOrderTransactionDTO = OrderTransactionDTO.builder() OrderTransactionDTO createOrderTransactionDTO = OrderTransactionDTO.builder()
@@ -178,8 +197,6 @@ public class ConfirmStartChargingRequestHandler extends AbstractHandler{
.orderDetail(orderDetail) .orderDetail(orderDetail)
.build(); .build();
pileTransactionService.doCreateOrder(createOrderTransactionDTO); pileTransactionService.doCreateOrder(createOrderTransactionDTO);
} }
} catch (BusinessException e){ } catch (BusinessException e){
log.error("刷卡启动充电鉴权 error:{}, {}", e.getCode(), e.getMessage()); log.error("刷卡启动充电鉴权 error:{}, {}", e.getCode(), e.getMessage());
@@ -189,7 +206,7 @@ public class ConfirmStartChargingRequestHandler extends AbstractHandler{
// 应答 // 应答
// 交易流水号 // 交易流水号
String transactionCode = IdUtils.generateTransactionCode(pileSn, connectorCode); // String transactionCode = IdUtils.generateTransactionCode(pileSn, connectorCode);
byte[] serialNumByteArr = BytesUtil.str2Bcd(transactionCode); byte[] serialNumByteArr = BytesUtil.str2Bcd(transactionCode);
// 逻辑卡号 // 逻辑卡号