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 61bb694ab..7920e6dd1 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -148,6 +148,9 @@ public class OrderService { @Autowired private PersonalChargingRecordService personalChargingRecordService; + @Autowired + private PileMsgRecordService pileMsgRecordService; + @Autowired private RabbitTemplate rabbitTemplate; @@ -765,17 +768,52 @@ public class OrderService { List merchantDeptIds = authorizedMap.getMerchantDeptIds(); } + // 初始化data + TransactionRecordsData data = null; // 充电金额 String chargingAmount = dto.getChargingAmount(); // 充电度数 String chargingDegree = dto.getChargingDegree(); - if (StringUtils.equals(chargingAmount, Constants.ZERO) || StringUtils.equals(chargingDegree, Constants.ZERO)) { - // 获取最后一次实时数据 - List chargingRealTimeData = orderBasicInfoService.getChargingRealTimeData(orderBasicInfo.getTransactionCode()); - if (CollectionUtils.isNotEmpty(chargingRealTimeData)) { - RealTimeMonitorData realTimeMonitorData = chargingRealTimeData.get(0); - chargingAmount = realTimeMonitorData.getChargingAmount(); - chargingDegree = realTimeMonitorData.getChargingDegree(); + + // 先查交易记录 + LocalDateTime localDateTime = DateUtils.date2LocalDateTime(orderBasicInfo.getSettlementTime()); + // 开始时间为localDateTime减30秒 + LocalDateTime startTime = localDateTime.minusSeconds(30); + // 结束时间为localDateTime加30秒 + LocalDateTime endTime = localDateTime.plusSeconds(30); + // 查询这笔订单的交易记录原始数据 + List pileFeedListV2 = pileMsgRecordService.getPileFeedListV2(orderBasicInfo.getPileSn(), "0x3B", startTime, endTime); + if (CollectionUtils.isEmpty(pileFeedListV2)) { + // 如果没有交易记录原始数据,则使用停止充电时间作为开始时间和结束时间再查一次 + localDateTime = DateUtils.date2LocalDateTime(orderBasicInfo.getChargeEndTime()); + startTime = localDateTime.minusSeconds(30); + endTime = localDateTime.plusSeconds(30); + pileFeedListV2 = pileMsgRecordService.getPileFeedListV2(orderBasicInfo.getPileSn(), "0x3B", startTime, endTime); + } + + for (PileMsgRecord pileMsgRecord : pileFeedListV2) { + TransactionRecordsData parse = JSONObject.parseObject(pileMsgRecord.getJsonMsg(), TransactionRecordsData.class); + if (StringUtils.equals(parse.getTransactionCode(), orderBasicInfo.getTransactionCode())) { + data = parse; + data.setVinCode(""); + } + } + + // 如果订单的交易记录为空 + if (data == null) { + data = new TransactionRecordsData(); + if (StringUtils.equals(chargingAmount, Constants.ZERO) || StringUtils.equals(chargingDegree, Constants.ZERO)) { + // 获取最后一次实时数据 + List chargingRealTimeData = orderBasicInfoService.getChargingRealTimeData(orderBasicInfo.getTransactionCode()); + if (CollectionUtils.isNotEmpty(chargingRealTimeData)) { + RealTimeMonitorData realTimeMonitorData = chargingRealTimeData.get(0); + chargingAmount = realTimeMonitorData.getChargingAmount(); + chargingDegree = realTimeMonitorData.getChargingDegree(); + + data.setConsumptionAmount(chargingAmount); // 总消费金额 + data.setTotalElectricity(chargingDegree); // 总用电量 + data.setStopReasonMsg("人工结算订单,操作人:" + SecurityUtils.getUsername()); // 停止原因 + } } } @@ -805,10 +843,10 @@ public class OrderService { } else { // 汽车桩 // 组装交易记录数据 - TransactionRecordsData data = new TransactionRecordsData(); - data.setConsumptionAmount(chargingAmount); // 总消费金额 - data.setTotalElectricity(chargingDegree); // 总用电量 - data.setStopReasonMsg("人工结算订单,操作人:" + SecurityUtils.getUsername()); // 停止原因 + // TransactionRecordsData data = new TransactionRecordsData(); + // data.setConsumptionAmount(chargingAmount); // 总消费金额 + // data.setTotalElectricity(chargingDegree); // 总用电量 + // data.setStopReasonMsg("人工结算订单,操作人:" + SecurityUtils.getUsername()); // 停止原因 orderLogic.settleOrder(data, orderBasicInfo); }