diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/api/HxpcPileOrderController.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/api/HxpcPileOrderController.java index 112ea7c5..d5a771fc 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/api/HxpcPileOrderController.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/api/HxpcPileOrderController.java @@ -218,7 +218,6 @@ public class HxpcPileOrderController extends BaseController { //充电时长 Long tiem = (endTime.getTime()-startTime.getTime())%1000; - if(tiem>60){ long mins = tiem % 60; long hours = tiem / 60; @@ -227,6 +226,7 @@ public class HxpcPileOrderController extends BaseController { long mins = tiem % 60; hxpcChargeOrder.setChargingTime(mins+"分"); } + hxpcChargeOrder.setChargingTimeNumber(tiem.intValue()); BigDecimal divide = new BigDecimal(cacheOrderData.getTotalPowerQuantity()).divide(bigDecimal); hxpcChargeOrder.setChargingDegree(divide.toString()); hxpcChargeOrder.setAmountCharged(money.toString()); diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/XhpcHistoryOrderController.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/XhpcHistoryOrderController.java index 4cb25955..f6129f29 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/XhpcHistoryOrderController.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/XhpcHistoryOrderController.java @@ -50,5 +50,13 @@ public class XhpcHistoryOrderController extends BaseController { return getDataTable(listPage); } - + /** + * 历史订单详情 + * @param historyOrderId 历史订单id + * @return + */ + @GetMapping("/getById") + public AjaxResult getById(@RequestParam("historyOrderId")Long historyOrderId){ + return xhpcHistoryOrderService.getById(historyOrderId); + } } diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/domain/HxpcChargeOrder.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/domain/HxpcChargeOrder.java index 6ead727a..edef375c 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/domain/HxpcChargeOrder.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/domain/HxpcChargeOrder.java @@ -82,6 +82,9 @@ public class HxpcChargeOrder extends BaseEntity { /** 充电时长 */ private String chargingTime; + /** 充电时长(分) */ + private Integer chargingTimeNumber; + /** 充电度数 */ private String chargingDegree; @@ -307,4 +310,14 @@ public class HxpcChargeOrder extends BaseEntity { this.power = power; } + public Integer getChargingTimeNumber() { + + return chargingTimeNumber; + } + + public void setChargingTimeNumber(Integer chargingTimeNumber) { + + this.chargingTimeNumber = chargingTimeNumber; + } + } diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/domain/XhpcHistoryOrder.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/domain/XhpcHistoryOrder.java index 6951f284..92f99154 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/domain/XhpcHistoryOrder.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/domain/XhpcHistoryOrder.java @@ -137,6 +137,17 @@ public class XhpcHistoryOrder extends BaseEntity { */ private Integer delFlag; + /** + * 总电费 + */ + private BigDecimal powerPriceTotal; + + /** + * 总服务费 + */ + private BigDecimal servicePriceTotal; + + public Long getHistoryOrderId() { return historyOrderId; } @@ -338,4 +349,25 @@ public class XhpcHistoryOrder extends BaseEntity { public void setDelFlag(Integer delFlag) { this.delFlag = delFlag; } + + public BigDecimal getPowerPriceTotal() { + + return powerPriceTotal; + } + + public void setPowerPriceTotal(BigDecimal powerPriceTotal) { + + this.powerPriceTotal = powerPriceTotal; + } + + public BigDecimal getServicePriceTotal() { + + return servicePriceTotal; + } + + public void setServicePriceTotal(BigDecimal servicePriceTotal) { + + this.servicePriceTotal = servicePriceTotal; + } + } diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcHistoryOrderMapper.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcHistoryOrderMapper.java index 80ea8386..d4f538dc 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcHistoryOrderMapper.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcHistoryOrderMapper.java @@ -75,4 +75,20 @@ public interface XhpcHistoryOrderMapper { * @return */ List> getListPage(@Param("phone")String phone,@Param("transactionNumber")String transactionNumber,@Param("status")Integer status,@Param("chargingStationName")String chargingStationName,@Param("operatorId")Long operatorId,@Param("source")Integer source,@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("userId")Long userId,@Param("type")Integer type,@Param("number")Integer number); + + /** + * 获取费率时段 + * @param startTime 开始时间 + * @param endTime 结束时间 + * @param rateModelId 计费模型 + * @return + */ + List> getReatTimeList(@Param("startTime")String startTime,@Param("endTime")String endTime,@Param("rateModelId")Long rateModelId); + + /** + * 历史订单详情(PC) + * @param historyOrderId 历史订单id + * @return + */ + Map getById(@Param("historyOrderId")Long historyOrderId); } diff --git a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcHistoryOrderService.java b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcHistoryOrderService.java index a503b45d..3c6642cf 100644 --- a/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcHistoryOrderService.java +++ b/xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcHistoryOrderService.java @@ -2,7 +2,6 @@ package com.xhpc.order.service; import com.xhpc.common.core.web.domain.AjaxResult; import com.xhpc.order.domain.XhpcHistoryOrder; -import org.springframework.web.bind.annotation.RequestParam; import java.util.List; import java.util.Map; @@ -44,4 +43,11 @@ public interface IXhpcHistoryOrderService { */ List> getListPage(String phone,String transactionNumber,Integer status,String chargingStationName,Long operatorId,Integer source,String startTime,String endTime,Long userId,Integer type); + /** + * 历史订单详情(PC) + * @param historyOrderId 历史订单id + * @return + */ + AjaxResult getById(Long historyOrderId); + } 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 97a83160..a635a5f6 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 @@ -1,5 +1,6 @@ package com.xhpc.order.service.impl; +import cn.hutool.core.date.DateUtil; import com.xhpc.common.core.web.domain.AjaxResult; import com.xhpc.order.domain.HxpcChargeOrder; import com.xhpc.order.domain.XhpcHistoryOrder; @@ -10,10 +11,8 @@ import org.apache.poi.ss.formula.functions.T; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.math.BigDecimal; +import java.util.*; /** * @author yuyang @@ -56,28 +55,95 @@ public class XhpcHistoryOrderServiceImpl implements IXhpcHistoryOrderService { return xhpcHistoryOrderMapper.getListPage(phone,transactionNumber,status,chargingStationName,operatorId,source,startTime,endTime,userId,type,number); } + @Override + public AjaxResult getById(Long historyOrderId) { + Map byId = xhpcHistoryOrderMapper.getById(historyOrderId); + if(byId !=null){ + byId.putAll(getRateTime(byId.get("serialNumber").toString(),byId.get("actPrice").toString())); + } + return AjaxResult.success(byId); + } + /** * 历史信息费率时段 */ - private void getRateTime(){ - String serialNumber=""; + private Map getRateTime(String serialNumber,String actPrice){ + Map map =new HashMap<>(); + BigDecimal powerPriceTotal =new BigDecimal(0); + BigDecimal servicePriceTotal =new BigDecimal(0); //充电订单信息 HxpcChargeOrder chargeOrder = xhpcChargeOrderService.getSerialNumberMessage(serialNumber); //累计充电时间、计费模型、开始时间、结束时间、已充金额 - int i = Integer.valueOf(chargeOrder.getChargingTime()).intValue(); Long rateModelId = chargeOrder.getRateModelId(); - Date startTime = chargeOrder.getStartTime(); - Date endTime = chargeOrder.getEndTime(); - String amountCharged = chargeOrder.getAmountCharged(); + String startTime = DateUtil.formatTime(chargeOrder.getStartTime()); + String endTime = DateUtil.formatTime(chargeOrder.getEndTime()); //每分钟充电度数=累计时间/60 - //Double rate =(Double) i%60; + Integer chargingTimeNumber = chargeOrder.getChargingTimeNumber(); + double s = (double) (chargingTimeNumber / 60); + List> list =new ArrayList<>(); //获取费率时段集合 - - + List> reatTimeList = xhpcHistoryOrderMapper.getReatTimeList(startTime, endTime, rateModelId); + if(reatTimeList !=null && reatTimeList.size()>0){ + Map map1 =new HashMap<>(); + int size = reatTimeList.size(); + if(size==1){ + BigDecimal powerFee = new BigDecimal(reatTimeList.get(0).get("powerFee").toString()); + powerPriceTotal.add(powerFee); + BigDecimal servicePrice = new BigDecimal(reatTimeList.get(0).get("servicePrice").toString()); + servicePriceTotal.add(servicePrice); + map1.put("time",startTime+"-"+endTime); + map1.put("powerPrice",powerFee); + map1.put("servicePrice",servicePrice); + map1.put("chargingDegree",chargeOrder.getChargingDegree()); + map1.put("actPrice",actPrice); + list.add(map1); + }else{ + for (int i = 0; i objectMap = reatTimeList.get(i); + BigDecimal powerPrice =new BigDecimal(objectMap.get("powerFee").toString()); + BigDecimal servicePrice =new BigDecimal(objectMap.get("servicePrice").toString()); + String startTime1 = objectMap.get("startTime").toString(); + String endTime1 = objectMap.get("endTime").toString(); + powerPriceTotal.add(powerPrice); + servicePriceTotal.add(servicePrice); + if(i==0){ + list.add(getRateTimeList(startTime,endTime1,s,powerPrice,servicePrice)); + }else{ + if(size==2){ + list.add(getRateTimeList(startTime1,endTime,s,powerPrice,servicePrice)); + }else{ + //三个时段以上 + if(i getRateTimeList(String startTime,String endTime,double s,BigDecimal powerPrice,BigDecimal servicePrice){ + Map map =new HashMap<>(); + double v = (DateUtil.parse(endTime).getTime() - DateUtil.parse(startTime).getTime()) * s; + BigDecimal multiply = powerPrice.add(servicePrice).multiply(new BigDecimal(v)); + map.put("time",startTime+"-"+endTime); + map.put("powerPrice",powerPrice); + map.put("servicePrice",servicePrice); + map.put("chargingDegree",v); + map.put("actPrice",multiply); + return map; + } } diff --git a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcChargeOrderMapper.xml b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcChargeOrderMapper.xml index 32cd40fe..e6c3b981 100644 --- a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcChargeOrderMapper.xml +++ b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcChargeOrderMapper.xml @@ -31,6 +31,7 @@ + @@ -249,7 +250,8 @@ type = #{type}, power = #{power}, erro_remark = #{erroRemark}, - amount_charged = #{amountCharged} + amount_charged = #{amountCharged}, + charging_time_number = #{chargingTimeNumber} where charge_order_id = #{chargeOrderId} 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 27d515d7..d6348fa2 100644 --- a/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcHistoryOrderMapper.xml +++ b/xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcHistoryOrderMapper.xml @@ -34,6 +34,8 @@ + + - remark + remark, + + + power_price_total, + + + service_price_total @@ -214,7 +222,13 @@ #{updateBy}, - #{remark} + #{remark}, + + + #{powerPriceTotal}, + + + #{servicePriceTotal} @@ -270,7 +284,9 @@ create_by = #{createBy}, update_time = #{updateTime}, update_by = #{updateBy}, - remark = #{remark} + remark = #{remark}, + power_price_total = #{powerPriceTotal}, + service_price_total = #{servicePriceTotal} WHERE history_order_id = #{historyOrderId} @@ -350,6 +366,7 @@ + + + \ No newline at end of file