优化申请异常订单
This commit is contained in:
parent
2195ca2caa
commit
704af8f6bb
@ -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<String, Object> map = new HashMap<>();
|
||||
|
||||
@ -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<size-1){
|
||||
list.add(getRateTimeList(startTime1, endTime1, degree, powerPrice, servicePrice));
|
||||
}else{
|
||||
list.add(getRateTimeList(startTime1, endTime, degree, powerPrice, servicePrice));
|
||||
} else {
|
||||
//三个时段以上
|
||||
if (i < size - 1) {
|
||||
list.add(getRateTimeList(startTime1, endTime1, degree, powerPrice, servicePrice));
|
||||
} else {
|
||||
list.add(getRateTimeList(startTime1, endTime, degree, powerPrice, servicePrice));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -185,7 +185,7 @@ public class XhpcRealTimeOrderServiceImpl implements IXhpcRealTimeOrderService {
|
||||
message.put("chargingTime",new BigDecimal(mins).setScale(0) + "分");
|
||||
chargeOrder.setChargingTime(new BigDecimal(mins).setScale(0) + "分");
|
||||
}
|
||||
Integer chargingDegree = endData.getChargingDegree();
|
||||
BigDecimal chargingDegree = new BigDecimal(endData.getChargingDegree()).divide(new BigDecimal(10000), 2, BigDecimal.ROUND_DOWN);
|
||||
message.put("chargingDegree",chargingDegree);
|
||||
|
||||
chargeOrder.setStartTime(startTime);
|
||||
@ -193,7 +193,7 @@ public class XhpcRealTimeOrderServiceImpl implements IXhpcRealTimeOrderService {
|
||||
chargeOrder.setStartSoc(startData.getSoc().toString());
|
||||
chargeOrder.setEndSoc(endData.getSoc().toString());
|
||||
chargeOrder.setChargingTimeNumber(tiem);
|
||||
chargeOrder.setChargingDegree(new BigDecimal(chargingDegree));
|
||||
chargeOrder.setChargingDegree(chargingDegree);
|
||||
chargeOrder.setType(0);
|
||||
chargeOrder.setAmountCharged(new BigDecimal(endData.getAmountCharged()).divide(new BigDecimal(10000),2,BigDecimal.ROUND_DOWN));
|
||||
}else{
|
||||
@ -244,15 +244,17 @@ public class XhpcRealTimeOrderServiceImpl implements IXhpcRealTimeOrderService {
|
||||
powerPriceTotal = getBigDecimal(rateModelId,DateUtil.formatTime(startTime2), DateUtil.formatTime(updateTime2), powerPriceTotal, divide);
|
||||
}else{
|
||||
//跨天
|
||||
powerPriceTotal = getBigDecimal(rateModelId, DateUtil.formatTime(startTime2), "23:59:59", chargingDegree, powerPriceTotal);
|
||||
powerPriceTotal = getBigDecimal(rateModelId, DateUtil.formatTime(startTime2), "23:59:59", powerPriceTotal, divide);
|
||||
System.out.println(">>>>>>跨天前>>>>>>>"+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<Map<String, Object>> reatTimeList = xhpcHistoryOrderService.getReatTimeList(startTime,updateTime, rateModelId);
|
||||
for (int i = 0; i <reatTimeList.size() ; i++) {
|
||||
int size = reatTimeList.size();
|
||||
Map<String, Object> 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<size-1){
|
||||
powerPriceTotal = powerPriceTotal.add(getRateTimeList(startTime1,endTime1,divide,powerFee));
|
||||
}else{
|
||||
powerPriceTotal = powerPriceTotal.add(getRateTimeList(startTime1,updateTime,divide,powerFee));
|
||||
}
|
||||
}
|
||||
}
|
||||
return powerPriceTotal;
|
||||
}
|
||||
|
||||
private BigDecimal getRateTimeList(String startTime, String endTime, BigDecimal degree, BigDecimal powerPrice) {
|
||||
System.out.println("startTime>>"+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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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}
|
||||
</select>
|
||||
|
||||
|
||||
@ -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
|
||||
<if test="internetId !=null">
|
||||
and co.source =1
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user