优化申请异常订单
This commit is contained in:
parent
2195ca2caa
commit
704af8f6bb
@ -377,7 +377,7 @@ public class XhpcPileOrderController extends BaseController {
|
|||||||
xhpcHistoryOrder.setOperatorId3rdptyEvcs((String) pushOrder.get("operatorId3rdpty"));
|
xhpcHistoryOrder.setOperatorId3rdptyEvcs((String) pushOrder.get("operatorId3rdpty"));
|
||||||
xhpcChargeOrder.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);
|
xhpcRealTimeOrderService.addSettlement(powerPrice,servicePrice,money,surplusPowerPrice,surplusServicePrice,xhpcChargeOrder,userId,userMessage,1,cacheOrderData.getVinNormal(),xhpcHistoryOrder);
|
||||||
Map<String, Object> map = new HashMap<>();
|
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);
|
BigDecimal servicePrice = new BigDecimal(objectMap.get("serviceFee").toString()).setScale(2, BigDecimal.ROUND_DOWN);
|
||||||
String startTime1 = objectMap.get("startTime").toString();
|
String startTime1 = objectMap.get("startTime").toString();
|
||||||
String endTime1 = objectMap.get("endTime").toString();
|
String endTime1 = objectMap.get("endTime").toString();
|
||||||
if (i == 0) {
|
if("00:00:00".equals(endTime1)){
|
||||||
list.add(getRateTimeList(startTime, endTime1, degree, powerPrice, servicePrice));
|
endTime1="23:59:59";
|
||||||
} else {
|
}
|
||||||
if (size == 2) {
|
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));
|
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) + "分");
|
message.put("chargingTime",new BigDecimal(mins).setScale(0) + "分");
|
||||||
chargeOrder.setChargingTime(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);
|
message.put("chargingDegree",chargingDegree);
|
||||||
|
|
||||||
chargeOrder.setStartTime(startTime);
|
chargeOrder.setStartTime(startTime);
|
||||||
@ -193,7 +193,7 @@ public class XhpcRealTimeOrderServiceImpl implements IXhpcRealTimeOrderService {
|
|||||||
chargeOrder.setStartSoc(startData.getSoc().toString());
|
chargeOrder.setStartSoc(startData.getSoc().toString());
|
||||||
chargeOrder.setEndSoc(endData.getSoc().toString());
|
chargeOrder.setEndSoc(endData.getSoc().toString());
|
||||||
chargeOrder.setChargingTimeNumber(tiem);
|
chargeOrder.setChargingTimeNumber(tiem);
|
||||||
chargeOrder.setChargingDegree(new BigDecimal(chargingDegree));
|
chargeOrder.setChargingDegree(chargingDegree);
|
||||||
chargeOrder.setType(0);
|
chargeOrder.setType(0);
|
||||||
chargeOrder.setAmountCharged(new BigDecimal(endData.getAmountCharged()).divide(new BigDecimal(10000),2,BigDecimal.ROUND_DOWN));
|
chargeOrder.setAmountCharged(new BigDecimal(endData.getAmountCharged()).divide(new BigDecimal(10000),2,BigDecimal.ROUND_DOWN));
|
||||||
}else{
|
}else{
|
||||||
@ -244,15 +244,17 @@ public class XhpcRealTimeOrderServiceImpl implements IXhpcRealTimeOrderService {
|
|||||||
powerPriceTotal = getBigDecimal(rateModelId,DateUtil.formatTime(startTime2), DateUtil.formatTime(updateTime2), powerPriceTotal, divide);
|
powerPriceTotal = getBigDecimal(rateModelId,DateUtil.formatTime(startTime2), DateUtil.formatTime(updateTime2), powerPriceTotal, divide);
|
||||||
}else{
|
}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);
|
DateTime tomorrow = DateUtil.offsetDay(startTime2,1);
|
||||||
Date startTime3 = DateUtil.beginOfDay(tomorrow);
|
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);
|
BigDecimal servicePriceTotal =amountCharged.subtract(powerPriceTotal);
|
||||||
message.put("powerPriceTotal",powerPriceTotal);
|
message.put("powerPriceTotal",powerPriceTotal);
|
||||||
message.put("servicePriceTotal",servicePriceTotal);
|
message.put("servicePriceTotal",servicePriceTotal);
|
||||||
@ -303,7 +305,11 @@ public class XhpcRealTimeOrderServiceImpl implements IXhpcRealTimeOrderService {
|
|||||||
//生成一条历史订单
|
//生成一条历史订单
|
||||||
XhpcHistoryOrder xhpcHistoryOrder = new XhpcHistoryOrder();
|
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);
|
addSettlement(powerPrice, servicePrice, money, surplusPowerPrice, surplusServicePrice, xhpcChargeOrder, userId, userMessage,0,null,xhpcHistoryOrder);
|
||||||
|
|
||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
@ -495,7 +501,6 @@ public class XhpcRealTimeOrderServiceImpl implements IXhpcRealTimeOrderService {
|
|||||||
xhpcHistoryOrder.setStartSoc(xhpcChargeOrder.getStartSoc());
|
xhpcHistoryOrder.setStartSoc(xhpcChargeOrder.getStartSoc());
|
||||||
xhpcHistoryOrder.setReconciliationStatus(0);
|
xhpcHistoryOrder.setReconciliationStatus(0);
|
||||||
xhpcHistoryOrder.setSortingStatus(0);
|
xhpcHistoryOrder.setSortingStatus(0);
|
||||||
xhpcHistoryOrder.setType(1);
|
|
||||||
//订单总价---运维服务费抽成
|
//订单总价---运维服务费抽成
|
||||||
xhpcHistoryOrder.setTotalPrice(money.setScale(2, BigDecimal.ROUND_DOWN));
|
xhpcHistoryOrder.setTotalPrice(money.setScale(2, BigDecimal.ROUND_DOWN));
|
||||||
xhpcHistoryOrder.setPromotionDiscount(promotionDiscount.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) {
|
private BigDecimal getBigDecimal(Long rateModelId, String startTime, String updateTime, BigDecimal powerPriceTotal, BigDecimal divide) {
|
||||||
|
|
||||||
List<Map<String, Object>> reatTimeList = xhpcHistoryOrderService.getReatTimeList(startTime,updateTime, rateModelId);
|
List<Map<String, Object>> reatTimeList = xhpcHistoryOrderService.getReatTimeList(startTime,updateTime, rateModelId);
|
||||||
for (int i = 0; i <reatTimeList.size() ; i++) {
|
for (int i = 0; i <reatTimeList.size() ; i++) {
|
||||||
|
int size = reatTimeList.size();
|
||||||
Map<String, Object> map = reatTimeList.get(i);
|
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){
|
if(size==1){
|
||||||
BigDecimal powerFee =new BigDecimal(map.get("powerFee").toString());
|
powerPriceTotal = powerPriceTotal.add(getRateTimeList(startTime,updateTime,divide,powerFee));
|
||||||
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));
|
|
||||||
}else{
|
}else{
|
||||||
BigDecimal powerFee =new BigDecimal(map.get("powerFee").toString());
|
if(i==0){
|
||||||
powerPriceTotal = powerPriceTotal.add(powerFee.multiply(divide).setScale(2, BigDecimal.ROUND_DOWN));
|
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;
|
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_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_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
|
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}
|
limit 0,#{number}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
|||||||
@ -409,7 +409,18 @@
|
|||||||
left join xhpc_charging_pile as cp on cp.charging_pile_id = ter.charging_pile_id
|
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_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 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
|
where co.status=#{status} and co.del_flag=0
|
||||||
<if test="internetId !=null">
|
<if test="internetId !=null">
|
||||||
and co.source =1
|
and co.source =1
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user