修改历史订单详情,结束的订单不能再次被结算
This commit is contained in:
parent
515467d740
commit
7b52ceac8b
@ -227,6 +227,10 @@ public class XhpcPileOrderController extends BaseController {
|
|||||||
CacheOrderData cacheOrderData = (CacheOrderData)cacheMap.get("orderData");
|
CacheOrderData cacheOrderData = (CacheOrderData)cacheMap.get("orderData");
|
||||||
//获取充电订单
|
//获取充电订单
|
||||||
XhpcChargeOrder xhpcChargeOrder = xhpcChargeOrderService.getSerialNumberMessage(orderNo);
|
XhpcChargeOrder xhpcChargeOrder = xhpcChargeOrderService.getSerialNumberMessage(orderNo);
|
||||||
|
if(xhpcChargeOrder.getStatus()==1 || xhpcChargeOrder.getStatus()==3){
|
||||||
|
logger.info("订单已结束不能重复结算>>>>>orderNo:"+orderNo+">>>chargeOrderId:"+xhpcChargeOrder.getChargeOrderId());
|
||||||
|
return R.ok();
|
||||||
|
}
|
||||||
//解析订单编号
|
//解析订单编号
|
||||||
Date date = new Date();
|
Date date = new Date();
|
||||||
//总金额
|
//总金额
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
package com.xhpc.order.service.impl;
|
package com.xhpc.order.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateTime;
|
||||||
|
import cn.hutool.core.date.DateUnit;
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import com.xhpc.common.core.web.domain.AjaxResult;
|
import com.xhpc.common.core.web.domain.AjaxResult;
|
||||||
import com.xhpc.order.domain.XhpcChargeOrder;
|
import com.xhpc.order.domain.XhpcChargeOrder;
|
||||||
@ -12,10 +14,7 @@ import org.springframework.stereotype.Service;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author yuyang
|
* @author yuyang
|
||||||
@ -79,28 +78,58 @@ public class XhpcHistoryOrderServiceImpl implements IXhpcHistoryOrderService {
|
|||||||
Map<String, Object> map =new HashMap<>();
|
Map<String, Object> map =new HashMap<>();
|
||||||
BigDecimal powerPriceTotal =new BigDecimal(0);
|
BigDecimal powerPriceTotal =new BigDecimal(0);
|
||||||
BigDecimal servicePriceTotal =new BigDecimal(0);
|
BigDecimal servicePriceTotal =new BigDecimal(0);
|
||||||
//充电订单信息
|
|
||||||
XhpcChargeOrder chargeOrder = xhpcChargeOrderService.getSerialNumberMessage(serialNumber);
|
|
||||||
|
|
||||||
//累计充电时间、计费模型、开始时间、结束时间、已充金额
|
//累计充电时间、计费模型、开始时间、结束时间、已充金额
|
||||||
|
XhpcChargeOrder chargeOrder = xhpcChargeOrderService.getSerialNumberMessage(serialNumber);
|
||||||
Long rateModelId = chargeOrder.getRateModelId();
|
Long rateModelId = chargeOrder.getRateModelId();
|
||||||
String startTime = DateUtil.formatTime(chargeOrder.getStartTime());
|
Date startTime2 = chargeOrder.getStartTime();
|
||||||
String endTime = DateUtil.formatTime(chargeOrder.getEndTime());
|
Date updateTime2 = chargeOrder.getEndTime();
|
||||||
|
BigDecimal amountCharged = chargeOrder.getAmountCharged();
|
||||||
|
//充电度数
|
||||||
|
BigDecimal chargingDegree = chargeOrder.getChargingDegree();
|
||||||
//每分钟充电度数=累计时间/60
|
//每分钟充电度数=累计时间/60
|
||||||
BigDecimal chargingTimeNumber = chargeOrder.getChargingDegree();
|
BigDecimal chargingTimeNumber = chargeOrder.getChargingDegree();
|
||||||
BigDecimal s = chargingTimeNumber.divide(new BigDecimal(60));
|
|
||||||
List<Map<String, Object>> list =new ArrayList<>();
|
List<Map<String, Object>> list =new ArrayList<>();
|
||||||
//获取费率时段集合
|
//1时间没有跨天
|
||||||
List<Map<String, Object>> reatTimeList = xhpcHistoryOrderMapper.getReatTimeList(startTime, endTime, rateModelId);
|
long betweenDay = DateUtil.between(startTime2, updateTime2, DateUnit.DAY);
|
||||||
|
if(betweenDay==0){
|
||||||
|
return getBigDecimal(actPrice, powerPriceTotal, servicePriceTotal, chargeOrder, rateModelId, startTime2, updateTime2, chargingDegree, list);
|
||||||
|
}else{
|
||||||
|
//跨天
|
||||||
|
String startTime = DateUtil.format(startTime2, "yyyy-MM-dd");
|
||||||
|
Date updateTime = DateUtil.parse(startTime+" 23:59:59");
|
||||||
|
Map<String, Object> map1 = getBigDecimal(actPrice, powerPriceTotal, servicePriceTotal, chargeOrder, rateModelId, startTime2, updateTime, chargingDegree, list);
|
||||||
|
//获取
|
||||||
|
List<Map<String, Object>> list1 = (List<Map<String, Object>>)map1.get("list");
|
||||||
|
BigDecimal powerPriceTotal1 =(BigDecimal)map1.get("powerPriceTotal");
|
||||||
|
BigDecimal servicePriceTotal1 =(BigDecimal)map1.get("servicePriceTotal");
|
||||||
|
//明天
|
||||||
|
DateTime tomorrow = DateUtil.offsetDay(startTime2,1);
|
||||||
|
String startTime1 = DateUtil.format(tomorrow, "yyyy-MM-dd");
|
||||||
|
Date startTime3 = DateUtil.parse(startTime1+" 00:00:00");
|
||||||
|
Map<String, Object> map2 = getBigDecimal(actPrice, powerPriceTotal1, servicePriceTotal1, chargeOrder, rateModelId, startTime3, updateTime2, chargingDegree, list);
|
||||||
|
return map2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<String, Object> getBigDecimal(String actPrice, BigDecimal powerPriceTotal, BigDecimal servicePriceTotal, XhpcChargeOrder chargeOrder, Long rateModelId, Date startTime2, Date updateTime2, BigDecimal chargingDegree, List<Map<String, Object>> list) {
|
||||||
|
Map<String, Object> map =new HashMap<>();
|
||||||
|
//算出相差时间,分
|
||||||
|
double time = (updateTime2.getTime()-startTime2.getTime())/60000;
|
||||||
|
BigDecimal decimal = new BigDecimal(time).setScale(2);
|
||||||
|
//每分钟多少度
|
||||||
|
BigDecimal degree =chargingDegree.divide(decimal,2,BigDecimal.ROUND_HALF_UP);
|
||||||
|
//获取费率时间段
|
||||||
|
String startTime = DateUtil.formatTime(startTime2);
|
||||||
|
String endTime = DateUtil.formatTime(updateTime2);
|
||||||
|
List<Map<String, Object>> reatTimeList = getReatTimeList(startTime, endTime, rateModelId);
|
||||||
if(reatTimeList !=null && reatTimeList.size()>0){
|
if(reatTimeList !=null && reatTimeList.size()>0){
|
||||||
Map<String, Object> map1 =new HashMap<>();
|
Map<String, Object> map1 =new HashMap<>();
|
||||||
int size = reatTimeList.size();
|
int size = reatTimeList.size();
|
||||||
if(size==1){
|
if(size==1){
|
||||||
BigDecimal powerFee = new BigDecimal(reatTimeList.get(0).get("powerFee").toString());
|
BigDecimal powerFee = new BigDecimal(reatTimeList.get(0).get("powerFee").toString());
|
||||||
powerPriceTotal.add(powerFee);
|
powerPriceTotal = powerFee.multiply(chargingDegree).setScale(2, RoundingMode.HALF_UP);
|
||||||
BigDecimal servicePrice = new BigDecimal(reatTimeList.get(0).get("serviceFee").toString());
|
BigDecimal servicePrice = new BigDecimal(reatTimeList.get(0).get("serviceFee").toString());
|
||||||
servicePriceTotal.add(servicePrice);
|
servicePriceTotal=servicePrice.multiply(chargingDegree).setScale(2, RoundingMode.HALF_UP);
|
||||||
map1.put("time",startTime+"-"+endTime);
|
map1.put("time",startTime+"-"+endTime);
|
||||||
map1.put("powerPrice",powerFee);
|
map1.put("powerPrice",powerFee);
|
||||||
map1.put("servicePrice",servicePrice);
|
map1.put("servicePrice",servicePrice);
|
||||||
@ -114,25 +143,24 @@ public class XhpcHistoryOrderServiceImpl implements IXhpcHistoryOrderService {
|
|||||||
BigDecimal servicePrice =new BigDecimal(objectMap.get("serviceFee").toString());
|
BigDecimal servicePrice =new BigDecimal(objectMap.get("serviceFee").toString());
|
||||||
String startTime1 = objectMap.get("startTime").toString();
|
String startTime1 = objectMap.get("startTime").toString();
|
||||||
String endTime1 = objectMap.get("endTime").toString();
|
String endTime1 = objectMap.get("endTime").toString();
|
||||||
powerPriceTotal.add(powerPrice);
|
|
||||||
servicePriceTotal.add(servicePrice);
|
|
||||||
if(i==0){
|
if(i==0){
|
||||||
list.add(getRateTimeList(startTime,endTime1,s,powerPrice,servicePrice));
|
list.add(getRateTimeList(startTime,endTime1,decimal,powerPrice,servicePrice));
|
||||||
}else{
|
}else{
|
||||||
if(size==2){
|
if(size==2){
|
||||||
list.add(getRateTimeList(startTime1,endTime,s,powerPrice,servicePrice));
|
list.add(getRateTimeList(startTime,endTime,decimal,powerPrice,servicePrice));
|
||||||
}else{
|
}else{
|
||||||
//三个时段以上
|
//三个时段以上
|
||||||
if(i<size-1){
|
if(i<size-1){
|
||||||
list.add(getRateTimeList(startTime1,endTime1,s,powerPrice,servicePrice));
|
list.add(getRateTimeList(startTime1,endTime1,decimal,powerPrice,servicePrice));
|
||||||
}else{
|
}else{
|
||||||
list.add(getRateTimeList(startTime1,endTime,s,powerPrice,servicePrice));
|
list.add(getRateTimeList(startTime1,endTime,decimal,powerPrice,servicePrice));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
map.put("list",list);//数据列表
|
map.put("list",list);//数据列表
|
||||||
map.put("chargingTimeTotal",chargeOrder.getChargingTime());//总时长
|
map.put("chargingTimeTotal",chargeOrder.getChargingTime());//总时长
|
||||||
map.put("powerPriceTotal",powerPriceTotal);//总电费单价(元/度)
|
map.put("powerPriceTotal",powerPriceTotal);//总电费单价(元/度)
|
||||||
|
|||||||
@ -111,7 +111,7 @@ public class XhpcRealTimeOrderServiceImpl implements IXhpcRealTimeOrderService {
|
|||||||
XhpcChargeOrder chargeOrder = xhpcChargeOrderService.getChargingOrderId(Long.parseLong(message.get("chargeOrderId").toString()));
|
XhpcChargeOrder chargeOrder = xhpcChargeOrderService.getChargingOrderId(Long.parseLong(message.get("chargeOrderId").toString()));
|
||||||
Long rateModelId = chargeOrder.getRateModelId();
|
Long rateModelId = chargeOrder.getRateModelId();
|
||||||
Date startTime2 = chargeOrder.getStartTime();
|
Date startTime2 = chargeOrder.getStartTime();
|
||||||
Date updateTime2 = chargeOrder.getUpdateTime();
|
Date updateTime2 = chargeOrder.getEndTime();
|
||||||
BigDecimal amountCharged = chargeOrder.getAmountCharged();
|
BigDecimal amountCharged = chargeOrder.getAmountCharged();
|
||||||
//充电度数
|
//充电度数
|
||||||
BigDecimal chargingDegree = chargeOrder.getChargingDegree();
|
BigDecimal chargingDegree = chargeOrder.getChargingDegree();
|
||||||
@ -155,6 +155,9 @@ public class XhpcRealTimeOrderServiceImpl implements IXhpcRealTimeOrderService {
|
|||||||
BigDecimal surplusServicePrice = servicePrice;
|
BigDecimal surplusServicePrice = servicePrice;
|
||||||
|
|
||||||
XhpcChargeOrder xhpcChargeOrder = xhpcChargeOrderService.getChargingOrderId(chargingOrderId);
|
XhpcChargeOrder xhpcChargeOrder = xhpcChargeOrderService.getChargingOrderId(chargingOrderId);
|
||||||
|
if(xhpcChargeOrder.getStatus()==1 || xhpcChargeOrder.getStatus()==3){
|
||||||
|
return AjaxResult.error("订单已结算,请联系技术人员解决");
|
||||||
|
}
|
||||||
xhpcChargeOrder.setStatus(3);
|
xhpcChargeOrder.setStatus(3);
|
||||||
xhpcChargeOrder.setAmountCharged(money);
|
xhpcChargeOrder.setAmountCharged(money);
|
||||||
//生成一条历史订单
|
//生成一条历史订单
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user