diff --git a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java index 4db3f7cbc..92c07eda9 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -422,6 +422,7 @@ public class OrderService { order.setStartTime(DateUtils.formatDateTime(orderBasicInfo.getChargeStartTime())); order.setEndTime(DateUtils.formatDateTime(orderBasicInfo.getChargeEndTime())); order.setCreateTime(DateUtils.formatDateTime(orderBasicInfo.getCreateTime())); + order.setStopReasonCode(orderBasicInfo.getStopReasonCode()); order.setStopReasonMsg(orderBasicInfo.getReason()); order.setStartSOC(orderBasicInfo.getStartSoc()); order.setEndSOC(orderBasicInfo.getEndSoc()); @@ -580,6 +581,7 @@ public class OrderService { } PileStationVO stationInfo = pileStationInfoService.getStationInfo(orderBasicInfo.getStationId()); vo.setStationName(stationInfo.getStationName()); + vo.setStopReasonCode(orderBasicInfo.getStopReasonCode()); vo.setReason(orderBasicInfo.getReason()); vo.setOrderAmount(String.valueOf(orderBasicInfo.getOrderAmount())); vo.setPayAmount(String.valueOf(orderBasicInfo.getPayAmount())); diff --git a/jsowell-common/src/main/java/com/jsowell/common/core/domain/ykc/TransactionRecordsData.java b/jsowell-common/src/main/java/com/jsowell/common/core/domain/ykc/TransactionRecordsData.java index a69fc6aa7..e4b6a8d78 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/core/domain/ykc/TransactionRecordsData.java +++ b/jsowell-common/src/main/java/com/jsowell/common/core/domain/ykc/TransactionRecordsData.java @@ -115,6 +115,9 @@ public class TransactionRecordsData { // 交易时间 CP56Time2a 格式 private String transactionTime; + // 停止原因码(16进制) + private String stopReasonCode; + // 停止原因 private String stopReasonMsg; diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/TransactionRecordsRequestHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/TransactionRecordsRequestHandler.java index d02dc002a..88cf9c33b 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/TransactionRecordsRequestHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/TransactionRecordsRequestHandler.java @@ -81,251 +81,253 @@ public class TransactionRecordsRequestHandler extends AbstractYkcHandler { private PersonalChargingRecordService personalChargingRecordService; - /*public static void main(String[] args) { - BigDecimal totalElectricity = new BigDecimal("23.73"); - if (totalElectricity.compareTo(BigDecimal.TEN) > 0) { - // 充电度数大于10度 - System.out.println("123"); - } - - - // 获取消息体 - String msg = "000000000000000000000000000000008823000000030601a08c2e0d0404170000380d0404170000000000000000000000000000000000000000000000000000000000000000400d0300ee250000ee250000c84b000000000000000000000000000000000000e0bb040000cee1040000ee250000ee250000c84b00000000000000000000000000000000000000010000380d04041745a511101970000000"; - byte[] msgBody = BytesUtil.str2Bcd(msg); - - int startIndex = 0; - int length = 16; - - // 交易流水号 - byte[] orderCodeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String transactionCode = BytesUtil.bcd2Str(orderCodeByteArr); - - // 桩编码 - startIndex += length; - length = 7; - byte[] pileSnByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String pileSn = BytesUtil.bcd2Str(pileSnByteArr); - - // 枪号 - startIndex += length; - length = 1; - byte[] connectorCodeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String connectorCode = BytesUtil.bcd2Str(connectorCodeByteArr); - - - // 开始时间 CP56Time2a 格式 - startIndex += length; - length = 7; - byte[] startTimeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - // String binary = BytesUtil.binary(startTimeByteArr, 16); - Date startDate = Cp56Time2aUtil.byte2Hdate(startTimeByteArr); - String startTime = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, startDate); - - - // 结束时间 CP56Time2a 格式 - startIndex += length; - byte[] endTimeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - Date endDate = Cp56Time2aUtil.byte2Hdate(endTimeByteArr); - String endTime = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, endDate); - - // 尖单价 精确到小数点后五位(尖电费+尖服务费,见费率帧) - startIndex += length; - length = 4; - byte[] sharpPriceByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String sharpPrice = YKCUtils.convertDecimalPoint(sharpPriceByteArr, 5); - - // 尖电量 精确到小数点后四位 - startIndex += length; - length = 4; - byte[] sharpUsedElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String sharpUsedElectricity = YKCUtils.convertDecimalPoint(sharpUsedElectricityByteArr, 4); - - // 计损尖电量 - startIndex += length; - byte[] sharpPlanLossElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String sharpPlanLossElectricity = YKCUtils.convertDecimalPoint(sharpPlanLossElectricityByteArr, 4); - - // 尖金额 - startIndex += length; - byte[] sharpAmountByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String sharpAmount = YKCUtils.convertDecimalPoint(sharpAmountByteArr, 4); - - // 峰单价 精确到小数点后五位(峰电费+峰服务费) - startIndex += length; - byte[] peakPriceByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String peakPrice = YKCUtils.convertDecimalPoint(peakPriceByteArr, 5); - - // 峰电量 - startIndex += length; - byte[] peakUsedElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String peakUsedElectricity = YKCUtils.convertDecimalPoint(peakUsedElectricityByteArr, 4); - - // 计损峰电量 - startIndex += length; - byte[] peakPlanLossElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String peakPlanLossElectricity = YKCUtils.convertDecimalPoint(peakPlanLossElectricityByteArr, 4); - - // 峰金额 - startIndex += length; - byte[] peakAmountByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String peakAmount = YKCUtils.convertDecimalPoint(peakAmountByteArr, 4); - - // 平单价 精确到小数点后五位(平电费+平服务费) - startIndex += length; - byte[] flatPriceByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String flatPrice = YKCUtils.convertDecimalPoint(flatPriceByteArr, 5); - - // 平电量 - startIndex += length; - byte[] flatUsedElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String flatUsedElectricity = YKCUtils.convertDecimalPoint(flatUsedElectricityByteArr, 4); - - // 计损平电量 - startIndex += length; - byte[] flatPlanLossElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String flatPlanLossElectricity = YKCUtils.convertDecimalPoint(flatPlanLossElectricityByteArr, 4); - - // 平金额 - startIndex += length; - byte[] flatAmountByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String flatAmount = YKCUtils.convertDecimalPoint(flatAmountByteArr, 4); - - // 谷单价 精确到小数点后五位(谷电费+谷 服务费) - startIndex += length; - byte[] valleyPriceByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String valleyPrice = YKCUtils.convertDecimalPoint(valleyPriceByteArr, 5); - - // 谷电量 - startIndex += length; - byte[] valleyUsedElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String valleyUsedElectricity = YKCUtils.convertDecimalPoint(valleyUsedElectricityByteArr, 4); - - // 计损谷电量 - startIndex += length; - byte[] valleyPlanLossElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String valleyPlanLossElectricity = YKCUtils.convertDecimalPoint(valleyPlanLossElectricityByteArr, 4); - - // 谷金额 - startIndex += length; - byte[] valleyAmountByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String valleyAmount = YKCUtils.convertDecimalPoint(valleyAmountByteArr, 4); - - // 电表总起值 - startIndex += length; - length = 5; - byte[] ammeterTotalStartByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String ammeterTotalStart = YKCUtils.convertDecimalPoint(ammeterTotalStartByteArr, 4); - - // 电表总止值 - startIndex += length; - byte[] ammeterTotalEndByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String ammeterTotalEnd = YKCUtils.convertDecimalPoint(ammeterTotalEndByteArr, 4); - - // 总电量 - startIndex += length; - length = 4; - byte[] totalElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - // String totalElectricity = YKCUtils.convertDecimalPoint(totalElectricityByteArr, 4); - - // 计损总电量 - startIndex += length; - byte[] planLossTotalElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String planLossTotalElectricity = YKCUtils.convertDecimalPoint(planLossTotalElectricityByteArr, 4); - - // 消费金额 精确到小数点后四位,包含电费、 服务费 - startIndex += length; - byte[] consumptionAmountByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String consumptionAmount = YKCUtils.convertDecimalPoint(consumptionAmountByteArr, 4); - - // VIN 码 VIN 码,此处 VIN 码和充电时 VIN 码不同, 正序直接上传, 无需补 0 和反序 - startIndex += length; - length = 17; - byte[] vinCodeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String vinCode = BytesUtil.ascii2Str(vinCodeByteArr); - - *//** - * 交易标识 - * 0x01: app 启动 - * 0x02:卡启动 - * 0x04:离线卡启动 - * 0x05: vin 码启动充电 - *//* - startIndex += length; - length = 1; - byte[] transactionIdentifierByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String transactionIdentifier = BytesUtil.bcd2Str(transactionIdentifierByteArr); - - // 交易时间 CP56Time2a 格式 - startIndex += length; - length = 7; - byte[] transactionTimeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - Date transactionDate = Cp56Time2aUtil.byte2Hdate(transactionTimeByteArr); - String transactionTime = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, transactionDate); - - // 停止原因 - startIndex += length; - length = 1; - byte[] stopReasonByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - String stopReason = BytesUtil.bin2HexStr(stopReasonByteArr); - String stopReasonMsg = YKCChargingStopReasonEnum.getMsgByCode(Integer.parseInt(stopReason, 16)); - - // 物理卡号 不足 8 位补 0 - startIndex += length; - length = 8; - byte[] cardNumByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); - // byte[] logicCardNum = BytesUtil.checkLengthAndBehindAppendZero(cardNumByteArr, 16); - String logicCard = BytesUtil.binary(cardNumByteArr, 16); - log.info("桩号:{}, 发送交易记录物理卡号:{}", pileSn, logicCard); - - log.info("[===交易记录===]交易流水号:{}, 桩编号:{}, 枪号:{}, 开始时间:{}, 结束时间:{}, 尖单价:{}, 尖电量:{}, 计损尖电量:{}, 尖金额:{}, " + - "峰单价:{}, 峰电量:{}, 计损峰电量:{}, 峰金额:{}, 平单价:{}, 平电量:{}, 计损平电量:{}, 平金额:{}, " + - "谷单价:{}, 谷电量:{}, 计损谷电量:{}, 谷金额:{}, 电表总起值:{}, 电表总止值:{}, 总电量:{}, 计损总电量:{}, 消费金额:{}, " + - "电动汽车唯一标识:{}, 交易标识:{}, 交易日期、时间:{}, 停止原因码:{}, 停止原因描述:{}, 物理卡号:{}", - transactionCode, pileSn, connectorCode, startTime, endTime, sharpPrice, sharpUsedElectricity, sharpPlanLossElectricity, sharpAmount, - peakPrice, peakUsedElectricity, peakPlanLossElectricity, peakAmount, flatPrice, flatUsedElectricity, flatPlanLossElectricity, flatAmount, - valleyPrice, valleyUsedElectricity, valleyPlanLossElectricity, valleyAmount, ammeterTotalStart, ammeterTotalEnd, totalElectricity, planLossTotalElectricity, - consumptionAmount, vinCode, transactionIdentifier, transactionTime, stopReason, stopReasonMsg, logicCard); - - // 交易记录封装到对象里 - TransactionRecordsData data = TransactionRecordsData.builder() - // .orderCode(transactionCode) - .transactionCode(transactionCode) - .pileSn(pileSn) - .connectorCode(connectorCode) - .startTime(startTime) - .endTime(endTime) - .sharpPrice(sharpPrice) - .sharpUsedElectricity(sharpUsedElectricity) - .sharpPlanLossElectricity(sharpPlanLossElectricity) - .sharpAmount(sharpAmount) - .peakPrice(peakPrice) - .peakUsedElectricity(peakUsedElectricity) - .peakPlanLossElectricity(peakPlanLossElectricity) - .peakAmount(peakAmount) - .flatPrice(flatPrice) - .flatUsedElectricity(flatUsedElectricity) - .flatPlanLossElectricity(flatPlanLossElectricity) - .flatAmount(flatAmount) - .valleyPrice(valleyPrice) - .valleyUsedElectricity(valleyUsedElectricity) - .valleyPlanLossElectricity(valleyPlanLossElectricity) - .valleyAmount(valleyAmount) - .ammeterTotalStart(ammeterTotalStart) - .ammeterTotalEnd(ammeterTotalEnd) - // .totalElectricity(totalElectricity) - .planLossTotalElectricity(planLossTotalElectricity) - .consumptionAmount(consumptionAmount) - .vinCode(vinCode) - .transactionIdentifier(transactionIdentifier) - .transactionTime(transactionTime) - .stopReasonMsg(stopReasonMsg) - .logicCard(logicCard) - .build(); - - boolean flag = !StringUtils.equals("0000000000000000", "a511101970000000"); - System.out.println(flag); - - }*/ + // public static void main(String[] args) { + // // BigDecimal totalElectricity = new BigDecimal("23.73"); + // // if (totalElectricity.compareTo(BigDecimal.TEN) > 0) { + // // // 充电度数大于10度 + // // System.out.println("123"); + // // } + // + // + // // 获取消息体 + // // String msg = "000000000000000000000000000000008823000000030601a08c2e0d0404170000380d0404170000000000000000000000000000000000000000000000000000000000000000400d0300ee250000ee250000c84b000000000000000000000000000000000000e0bb040000cee1040000ee250000ee250000c84b00000000000000000000000000000000000000010000380d04041745a511101970000000"; + // // byte[] msgBody = BytesUtil.str2Bcd(msg); + // // + // // int startIndex = 0; + // // int length = 16; + // // + // // // 交易流水号 + // // byte[] orderCodeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String transactionCode = BytesUtil.bcd2Str(orderCodeByteArr); + // // + // // // 桩编码 + // // startIndex += length; + // // length = 7; + // // byte[] pileSnByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String pileSn = BytesUtil.bcd2Str(pileSnByteArr); + // // + // // // 枪号 + // // startIndex += length; + // // length = 1; + // // byte[] connectorCodeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String connectorCode = BytesUtil.bcd2Str(connectorCodeByteArr); + // // + // // + // // // 开始时间 CP56Time2a 格式 + // // startIndex += length; + // // length = 7; + // // byte[] startTimeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // // String binary = BytesUtil.binary(startTimeByteArr, 16); + // // Date startDate = Cp56Time2aUtil.byte2Hdate(startTimeByteArr); + // // String startTime = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, startDate); + // // + // // + // // // 结束时间 CP56Time2a 格式 + // // startIndex += length; + // // byte[] endTimeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // Date endDate = Cp56Time2aUtil.byte2Hdate(endTimeByteArr); + // // String endTime = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, endDate); + // // + // // // 尖单价 精确到小数点后五位(尖电费+尖服务费,见费率帧) + // // startIndex += length; + // // length = 4; + // // byte[] sharpPriceByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String sharpPrice = YKCUtils.convertDecimalPoint(sharpPriceByteArr, 5); + // // + // // // 尖电量 精确到小数点后四位 + // // startIndex += length; + // // length = 4; + // // byte[] sharpUsedElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String sharpUsedElectricity = YKCUtils.convertDecimalPoint(sharpUsedElectricityByteArr, 4); + // // + // // // 计损尖电量 + // // startIndex += length; + // // byte[] sharpPlanLossElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String sharpPlanLossElectricity = YKCUtils.convertDecimalPoint(sharpPlanLossElectricityByteArr, 4); + // // + // // // 尖金额 + // // startIndex += length; + // // byte[] sharpAmountByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String sharpAmount = YKCUtils.convertDecimalPoint(sharpAmountByteArr, 4); + // // + // // // 峰单价 精确到小数点后五位(峰电费+峰服务费) + // // startIndex += length; + // // byte[] peakPriceByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String peakPrice = YKCUtils.convertDecimalPoint(peakPriceByteArr, 5); + // // + // // // 峰电量 + // // startIndex += length; + // // byte[] peakUsedElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String peakUsedElectricity = YKCUtils.convertDecimalPoint(peakUsedElectricityByteArr, 4); + // // + // // // 计损峰电量 + // // startIndex += length; + // // byte[] peakPlanLossElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String peakPlanLossElectricity = YKCUtils.convertDecimalPoint(peakPlanLossElectricityByteArr, 4); + // // + // // // 峰金额 + // // startIndex += length; + // // byte[] peakAmountByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String peakAmount = YKCUtils.convertDecimalPoint(peakAmountByteArr, 4); + // // + // // // 平单价 精确到小数点后五位(平电费+平服务费) + // // startIndex += length; + // // byte[] flatPriceByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String flatPrice = YKCUtils.convertDecimalPoint(flatPriceByteArr, 5); + // // + // // // 平电量 + // // startIndex += length; + // // byte[] flatUsedElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String flatUsedElectricity = YKCUtils.convertDecimalPoint(flatUsedElectricityByteArr, 4); + // // + // // // 计损平电量 + // // startIndex += length; + // // byte[] flatPlanLossElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String flatPlanLossElectricity = YKCUtils.convertDecimalPoint(flatPlanLossElectricityByteArr, 4); + // // + // // // 平金额 + // // startIndex += length; + // // byte[] flatAmountByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String flatAmount = YKCUtils.convertDecimalPoint(flatAmountByteArr, 4); + // // + // // // 谷单价 精确到小数点后五位(谷电费+谷 服务费) + // // startIndex += length; + // // byte[] valleyPriceByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String valleyPrice = YKCUtils.convertDecimalPoint(valleyPriceByteArr, 5); + // // + // // // 谷电量 + // // startIndex += length; + // // byte[] valleyUsedElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String valleyUsedElectricity = YKCUtils.convertDecimalPoint(valleyUsedElectricityByteArr, 4); + // // + // // // 计损谷电量 + // // startIndex += length; + // // byte[] valleyPlanLossElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String valleyPlanLossElectricity = YKCUtils.convertDecimalPoint(valleyPlanLossElectricityByteArr, 4); + // // + // // // 谷金额 + // // startIndex += length; + // // byte[] valleyAmountByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String valleyAmount = YKCUtils.convertDecimalPoint(valleyAmountByteArr, 4); + // // + // // // 电表总起值 + // // startIndex += length; + // // length = 5; + // // byte[] ammeterTotalStartByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String ammeterTotalStart = YKCUtils.convertDecimalPoint(ammeterTotalStartByteArr, 4); + // // + // // // 电表总止值 + // // startIndex += length; + // // byte[] ammeterTotalEndByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String ammeterTotalEnd = YKCUtils.convertDecimalPoint(ammeterTotalEndByteArr, 4); + // // + // // // 总电量 + // // startIndex += length; + // // length = 4; + // // byte[] totalElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // // String totalElectricity = YKCUtils.convertDecimalPoint(totalElectricityByteArr, 4); + // // + // // // 计损总电量 + // // startIndex += length; + // // byte[] planLossTotalElectricityByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String planLossTotalElectricity = YKCUtils.convertDecimalPoint(planLossTotalElectricityByteArr, 4); + // // + // // // 消费金额 精确到小数点后四位,包含电费、 服务费 + // // startIndex += length; + // // byte[] consumptionAmountByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String consumptionAmount = YKCUtils.convertDecimalPoint(consumptionAmountByteArr, 4); + // // + // // // VIN 码 VIN 码,此处 VIN 码和充电时 VIN 码不同, 正序直接上传, 无需补 0 和反序 + // // startIndex += length; + // // length = 17; + // // byte[] vinCodeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String vinCode = BytesUtil.ascii2Str(vinCodeByteArr); + // // + // // /** + // // * 交易标识 + // // * 0x01: app 启动 + // // * 0x02:卡启动 + // // * 0x04:离线卡启动 + // // * 0x05: vin 码启动充电 + // // */ + // // startIndex += length; + // // length = 1; + // // byte[] transactionIdentifierByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String transactionIdentifier = BytesUtil.bcd2Str(transactionIdentifierByteArr); + // // + // // // 交易时间 CP56Time2a 格式 + // // startIndex += length; + // // length = 7; + // // byte[] transactionTimeByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // Date transactionDate = Cp56Time2aUtil.byte2Hdate(transactionTimeByteArr); + // // String transactionTime = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, transactionDate); + // // + // // // 停止原因 + // // startIndex += length; + // // length = 1; + // // byte[] stopReasonByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // String stopReason = BytesUtil.bin2HexStr(stopReasonByteArr); + // // int i = Integer.parseInt(stopReason, 16); + // // String stopReasonMsg = YKCChargingStopReasonEnum.getMsgByCode(i); + // + // + // // 物理卡号 不足 8 位补 0 + // // startIndex += length; + // // length = 8; + // // byte[] cardNumByteArr = BytesUtil.copyBytes(msgBody, startIndex, length); + // // // byte[] logicCardNum = BytesUtil.checkLengthAndBehindAppendZero(cardNumByteArr, 16); + // // String logicCard = BytesUtil.binary(cardNumByteArr, 16); + // // log.info("桩号:{}, 发送交易记录物理卡号:{}", pileSn, logicCard); + // // + // // log.info("[===交易记录===]交易流水号:{}, 桩编号:{}, 枪号:{}, 开始时间:{}, 结束时间:{}, 尖单价:{}, 尖电量:{}, 计损尖电量:{}, 尖金额:{}, " + + // // "峰单价:{}, 峰电量:{}, 计损峰电量:{}, 峰金额:{}, 平单价:{}, 平电量:{}, 计损平电量:{}, 平金额:{}, " + + // // "谷单价:{}, 谷电量:{}, 计损谷电量:{}, 谷金额:{}, 电表总起值:{}, 电表总止值:{}, 总电量:{}, 计损总电量:{}, 消费金额:{}, " + + // // "电动汽车唯一标识:{}, 交易标识:{}, 交易日期、时间:{}, 停止原因码:{}, 停止原因描述:{}, 物理卡号:{}", + // // transactionCode, pileSn, connectorCode, startTime, endTime, sharpPrice, sharpUsedElectricity, sharpPlanLossElectricity, sharpAmount, + // // peakPrice, peakUsedElectricity, peakPlanLossElectricity, peakAmount, flatPrice, flatUsedElectricity, flatPlanLossElectricity, flatAmount, + // // valleyPrice, valleyUsedElectricity, valleyPlanLossElectricity, valleyAmount, ammeterTotalStart, ammeterTotalEnd, totalElectricity, planLossTotalElectricity, + // // consumptionAmount, vinCode, transactionIdentifier, transactionTime, stopReason, stopReasonMsg, logicCard); + // // + // // // 交易记录封装到对象里 + // // TransactionRecordsData data = TransactionRecordsData.builder() + // // // .orderCode(transactionCode) + // // .transactionCode(transactionCode) + // // .pileSn(pileSn) + // // .connectorCode(connectorCode) + // // .startTime(startTime) + // // .endTime(endTime) + // // .sharpPrice(sharpPrice) + // // .sharpUsedElectricity(sharpUsedElectricity) + // // .sharpPlanLossElectricity(sharpPlanLossElectricity) + // // .sharpAmount(sharpAmount) + // // .peakPrice(peakPrice) + // // .peakUsedElectricity(peakUsedElectricity) + // // .peakPlanLossElectricity(peakPlanLossElectricity) + // // .peakAmount(peakAmount) + // // .flatPrice(flatPrice) + // // .flatUsedElectricity(flatUsedElectricity) + // // .flatPlanLossElectricity(flatPlanLossElectricity) + // // .flatAmount(flatAmount) + // // .valleyPrice(valleyPrice) + // // .valleyUsedElectricity(valleyUsedElectricity) + // // .valleyPlanLossElectricity(valleyPlanLossElectricity) + // // .valleyAmount(valleyAmount) + // // .ammeterTotalStart(ammeterTotalStart) + // // .ammeterTotalEnd(ammeterTotalEnd) + // // // .totalElectricity(totalElectricity) + // // .planLossTotalElectricity(planLossTotalElectricity) + // // .consumptionAmount(consumptionAmount) + // // .vinCode(vinCode) + // // .transactionIdentifier(transactionIdentifier) + // // .transactionTime(transactionTime) + // // .stopReasonMsg(stopReasonMsg) + // // .logicCard(logicCard) + // // .build(); + // // + // // boolean flag = !StringUtils.equals("0000000000000000", "a511101970000000"); + // // System.out.println(flag); + // + // } @Override public byte[] supplyProcess(YKCDataProtocol ykcDataProtocol, ChannelHandlerContext channel) { @@ -559,6 +561,7 @@ public class TransactionRecordsRequestHandler extends AbstractYkcHandler { .vinCode(vinCode) .transactionIdentifier(transactionIdentifier) .transactionTime(transactionTime) + .stopReasonCode(stopReason) .stopReasonMsg(stopReasonMsg) .logicCard(logicCard) .build(); @@ -635,6 +638,9 @@ public class TransactionRecordsRequestHandler extends AbstractYkcHandler { orderBasicInfo.setChargeEndTime(new Date()); } + // 将停止原因码存库 + orderBasicInfo.setStopReasonCode("0x" + data.getStopReasonCode()); + orderBasicInfoService.updateOrderBasicInfo(orderBasicInfo); // 重新查询订单信息 diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/OrderVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/OrderVO.java index 0b2bd1f6e..c52c5779b 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/OrderVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/OrderVO.java @@ -95,6 +95,11 @@ public class OrderVO { */ private String orderStatus; + /** + * 停止原因码 + */ + private String stopReasonCode; + /** * 订单异常原因 */ diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/UniAppOrderVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/UniAppOrderVO.java index 4790a918d..619db8fb1 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/UniAppOrderVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/uniapp/customer/UniAppOrderVO.java @@ -39,6 +39,11 @@ public class UniAppOrderVO { */ private String pileConnectorCode; + /** + * 停止充电原因码 + */ + private String stopReasonCode; + /** * 异常原因 */ diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderDetailInfoVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderDetailInfoVO.java index 2169a264c..f4da82191 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderDetailInfoVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/OrderDetailInfoVO.java @@ -62,6 +62,7 @@ public class OrderDetailInfoVO { private String vinCode; // vin号 private String startTime; // 充电开始时间 private String endTime; // 充电结束时间 + private String stopReasonCode; // 停止原因码 private String stopReasonMsg; // 停止原因 private String createTime; // 订单创建时间 private String startSOC; // 开始SOC diff --git a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml index ea684dcfb..2ee887b49 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml @@ -2433,6 +2433,7 @@ t1.order_code as orderCode, t1.transaction_code as transactionCode, t1.order_status as orderStatus, + t1.stop_reason_code as stopReasonCode, t1.reason, t1.station_id as stationId, t3.station_name as stationName,