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