| | |
| | | if(null == orderPrivateCar.getEndServiceTime()){ |
| | | orderPrivateCar.setEndServiceTime(new Date()); |
| | | } |
| | | //使用原始里程计算费用 |
| | | orderPrivateCar = this.setMoney(orderPrivateCar, 0D, 0D);//计算费用 |
| | | Double mileage = orderPrivateCar.getMileage(); |
| | | Double orderMoney1 = orderPrivateCar.getOrderMoney(); |
| | | //使用预估里程计算费用 |
| | | //实际里程小于预估里程95%或者大于5%,则使用预估里程进行计算价格 |
| | | Double startLat = orderPrivateCar.getStartLat(); |
| | | Double startLon = orderPrivateCar.getStartLon(); |
| | | Double getoffLon = orderPrivateCar.getGetoffLon(); |
| | | Double getoffLat = orderPrivateCar.getGetoffLat(); |
| | | DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(startLat, startLon, getoffLat, getoffLon, orderPrivateCar.getTripId()); |
| | | orderPrivateCar.setMileage(distancematrix.getDistance().doubleValue()); |
| | | orderPrivateCar = this.setMoney(orderPrivateCar, 0D, 0D); |
| | | Double orderMoney2 = orderPrivateCar.getOrderMoney(); |
| | | //如果原始金额小于预估金额,且比例小于95%,则使用预估金额 |
| | | if(orderMoney1.compareTo(orderMoney2) >= 0 || orderMoney1 / orderMoney2 >= 0.95){ |
| | | //原始金额大于预估金额或者比例大于0.95,则使用原始里程重新计算费用 |
| | | orderPrivateCar.setMileage(mileage); |
| | | orderPrivateCar = this.setMoney(orderPrivateCar, 0D, 0D);//计算费用 |
| | | double ce = orderPrivateCar.getMileage() / distancematrix.getDistance().doubleValue(); |
| | | if(ce < 0.95 || ce > 1.05){ |
| | | orderPrivateCar.setMileage(distancematrix.getDistance().doubleValue()); |
| | | } |
| | | |
| | | orderPrivateCar = this.setMoney(orderPrivateCar, 0D, 0D);//计算费用 |
| | | orderPrivateCar.setPayManner(type); |
| | | orderPrivateCar.setParkMoney(null == parkingFee ? 0D : parkingFee); |
| | | orderPrivateCar.setRoadTollMoney(null == crossingFee ? 0D : crossingFee); |