From 704af8f6bb4877e4e935334bad5ccba5792ba9f6 Mon Sep 17 00:00:00 2001 From: yuyang Date: Thu, 2 Dec 2021 17:15:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=94=B3=E8=AF=B7=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/api/XhpcPileOrderController.java | 2 +- .../impl/XhpcHistoryOrderServiceImpl.java | 22 ++++---- .../impl/XhpcRealTimeOrderServiceImpl.java | 56 +++++++++++++------ .../mapper/XhpcHistoryOrderMapper.xml | 2 +- .../mapper/XhpcRealTimeOrderMapper.xml | 13 ++++- 5 files changed, 65 insertions(+), 30 deletions(-) diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/api/XhpcPileOrderController.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/api/XhpcPileOrderController.java index aa327038..6c499825 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/api/XhpcPileOrderController.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/api/XhpcPileOrderController.java @@ -377,7 +377,7 @@ public class XhpcPileOrderController extends BaseController { xhpcHistoryOrder.setOperatorId3rdptyEvcs((String) pushOrder.get("operatorId3rdpty")); xhpcChargeOrder.setOperatorId3rdptyEvcs((String) pushOrder.get("operatorId3rdpty")); } - + xhpcHistoryOrder.setType(1); //结算 xhpcRealTimeOrderService.addSettlement(powerPrice,servicePrice,money,surplusPowerPrice,surplusServicePrice,xhpcChargeOrder,userId,userMessage,1,cacheOrderData.getVinNormal(),xhpcHistoryOrder); Map map = new HashMap<>(); diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcHistoryOrderServiceImpl.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcHistoryOrderServiceImpl.java index cce8aa18..32100728 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcHistoryOrderServiceImpl.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcHistoryOrderServiceImpl.java @@ -580,18 +580,18 @@ public class XhpcHistoryOrderServiceImpl implements IXhpcHistoryOrderService { BigDecimal servicePrice = new BigDecimal(objectMap.get("serviceFee").toString()).setScale(2, BigDecimal.ROUND_DOWN); String startTime1 = objectMap.get("startTime").toString(); String endTime1 = objectMap.get("endTime").toString(); - if (i == 0) { - list.add(getRateTimeList(startTime, endTime1, degree, powerPrice, servicePrice)); - } else { - if (size == 2) { + if("00:00:00".equals(endTime1)){ + endTime1="23:59:59"; + } + if(size==1){ + list.add(getRateTimeList(startTime, endTime, degree, powerPrice, servicePrice)); + }else{ + if(i==0){ + list.add(getRateTimeList(startTime, endTime1, degree, powerPrice, servicePrice)); + } else if(i>>>>>跨天前>>>>>>>"+powerPriceTotal); //明天 DateTime tomorrow = DateUtil.offsetDay(startTime2,1); Date startTime3 = DateUtil.beginOfDay(tomorrow); - powerPriceTotal = getBigDecimal(rateModelId, DateUtil.formatTime(startTime3), DateUtil.formatTime(updateTime2), chargingDegree, powerPriceTotal); + powerPriceTotal = getBigDecimal(rateModelId, DateUtil.formatTime(startTime3), DateUtil.formatTime(updateTime2), powerPriceTotal, divide); + System.out.println(">>>>>>跨天后>>>>>>>"+powerPriceTotal); } //算服务费和电费 - if(amountCharged.compareTo(powerPriceTotal)==1){ + if(amountCharged.compareTo(powerPriceTotal)>-1){ BigDecimal servicePriceTotal =amountCharged.subtract(powerPriceTotal); message.put("powerPriceTotal",powerPriceTotal); message.put("servicePriceTotal",servicePriceTotal); @@ -303,7 +305,11 @@ public class XhpcRealTimeOrderServiceImpl implements IXhpcRealTimeOrderService { //生成一条历史订单 XhpcHistoryOrder xhpcHistoryOrder = new XhpcHistoryOrder(); - + xhpcHistoryOrder.setEndTime(xhpcChargeOrder.getEndTime()); + xhpcHistoryOrder.setStartSoc(xhpcChargeOrder.getStartSoc()); + xhpcHistoryOrder.setEndSoc(xhpcChargeOrder.getEndSoc()); + xhpcHistoryOrder.setTotalPower(xhpcChargeOrder.getChargingDegree().doubleValue()); + xhpcHistoryOrder.setType(2); addSettlement(powerPrice, servicePrice, money, surplusPowerPrice, surplusServicePrice, xhpcChargeOrder, userId, userMessage,0,null,xhpcHistoryOrder); return AjaxResult.success(); @@ -495,7 +501,6 @@ public class XhpcRealTimeOrderServiceImpl implements IXhpcRealTimeOrderService { xhpcHistoryOrder.setStartSoc(xhpcChargeOrder.getStartSoc()); xhpcHistoryOrder.setReconciliationStatus(0); xhpcHistoryOrder.setSortingStatus(0); - xhpcHistoryOrder.setType(1); //订单总价---运维服务费抽成 xhpcHistoryOrder.setTotalPrice(money.setScale(2, BigDecimal.ROUND_DOWN)); xhpcHistoryOrder.setPromotionDiscount(promotionDiscount.setScale(2, BigDecimal.ROUND_DOWN)); @@ -791,22 +796,41 @@ public class XhpcRealTimeOrderServiceImpl implements IXhpcRealTimeOrderService { } private BigDecimal getBigDecimal(Long rateModelId, String startTime, String updateTime, BigDecimal powerPriceTotal, BigDecimal divide) { - List> reatTimeList = xhpcHistoryOrderService.getReatTimeList(startTime,updateTime, rateModelId); for (int i = 0; i map = reatTimeList.get(i); + String startTime1 = map.get("startTime").toString(); + String endTime1 = map.get("endTime").toString(); + BigDecimal powerFee =new BigDecimal(map.get("powerFee").toString()); + if("00:00:00".equals(endTime1)){ + endTime1="23:59:59"; + } //获取费率 - if(reatTimeList.size()==1){ - BigDecimal powerFee =new BigDecimal(map.get("powerFee").toString()); - powerPriceTotal = powerPriceTotal.add(powerFee.multiply(divide).setScale(2, BigDecimal.ROUND_DOWN)); - }else if(i!=reatTimeList.size()-1){ - BigDecimal powerFee =new BigDecimal(map.get("powerFee").toString()); - powerPriceTotal = powerPriceTotal.add(powerFee.multiply(divide).setScale(2, BigDecimal.ROUND_DOWN)); + if(size==1){ + powerPriceTotal = powerPriceTotal.add(getRateTimeList(startTime,updateTime,divide,powerFee)); }else{ - BigDecimal powerFee =new BigDecimal(map.get("powerFee").toString()); - powerPriceTotal = powerPriceTotal.add(powerFee.multiply(divide).setScale(2, BigDecimal.ROUND_DOWN)); + if(i==0){ + powerPriceTotal = powerPriceTotal.add(getRateTimeList(startTime,endTime1,divide,powerFee)); + } else if(i>"+startTime); + System.out.println("endTime>>"+endTime); + long time = DateUtil.parse(endTime).getTime(); + long time1= DateUtil.parse(startTime).getTime(); + BigDecimal multiply = new BigDecimal(time-time1).divide(new BigDecimal(60000),2, BigDecimal.ROUND_DOWN).multiply(degree).setScale(2,BigDecimal.ROUND_DOWN); + BigDecimal bigDecimal = multiply.multiply(powerPrice).setScale(2, BigDecimal.ROUND_DOWN); + System.out.println("bigDecimal>>"+bigDecimal); + return bigDecimal; + } + } diff --git a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcHistoryOrderMapper.xml b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcHistoryOrderMapper.xml index a0486576..0b5e6352 100644 --- a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcHistoryOrderMapper.xml +++ b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcHistoryOrderMapper.xml @@ -833,7 +833,7 @@ left join xhpc_charge_order co on co.charge_order_id = ho.charge_order_id left join xhpc_charging_station cs on cs.charging_station_id = co.charging_station_id left join xhpc_terminal as te on te.terminal_id = ho.terminal_id - where ho.state = #{state} and ho.total_price >0 and ho.end_time > ho.start_time and ho.vin_normal !="2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D" and ho.power_price_total !=0 + where ho.state = #{state} and ho.total_price >0 and ho.end_time > ho.start_time and ho.power_price_total !=0 limit 0,#{number} diff --git a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcRealTimeOrderMapper.xml b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcRealTimeOrderMapper.xml index 1ad0939f..f439fd61 100644 --- a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcRealTimeOrderMapper.xml +++ b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcRealTimeOrderMapper.xml @@ -409,7 +409,18 @@ left join xhpc_charging_pile as cp on cp.charging_pile_id = ter.charging_pile_id left join xhpc_internet_user as inu on inu.internet_user_id = co.user_id and co.source =1 left join xhpc_app_user as apu on apu.app_user_id = co.user_id and co.source =0 - left join (select charging_order_id, real_time_order_id, soc, charging_degree, charging_time from xhpc_real_time_order ro0 order by ro0.real_time_order_id desc limit 1) ro on ro.charging_order_id = co.charge_order_id + LEFT JOIN ( + SELECT + charging_order_id, + real_time_order_id, + soc, + charging_degree, + charging_time + FROM + xhpc_real_time_order + WHERE + real_time_order_id IN ( SELECT max( real_time_order_id ) FROM xhpc_real_time_order GROUP BY charging_order_id ) + ) ro ON ro.charging_order_id = co.charge_order_id where co.status=#{status} and co.del_flag=0 and co.source =1