| | |
| | | order.setStatus(8); |
| | | order.setAppUserId(null); |
| | | order.setTripEnd(LocalDateTime.now()); |
| | | order.setMileageKilometers(80.0); |
| | | baseMapper.updateById(order); |
| | | // 解绑用户与车辆关系 |
| | | CancelTaxiPassengerVo cancelTaxiPassengerVo = new CancelTaxiPassengerVo(); |
| | |
| | | // 3. 超过 num7(35) 以后, 加收 num8(3.5) -> numEnd 传个极大值 |
| | | config.longSteps.add(new TaxiPricingDemoService.LongRangeStep(Double.parseDouble(basicPricingJson.getString("num12")), 999999, Double.parseDouble(basicPricingJson.getString("num13")))); |
| | | } |
| | | for (Object o : startingFareJsonArray) { |
| | | // 转化为jsonObject |
| | | JSONObject jsonObject = (JSONObject) o; |
| | | for (int i = 0; i < startingFareJsonArray.size(); i++) { |
| | | com.alibaba.fastjson.JSONObject jsonObject = startingFareJsonArray.getJSONObject(i); |
| | | String num1 = jsonObject.getString("num1"); |
| | | String num2 = jsonObject.getString("num2"); |
| | | String num3 = jsonObject.getString("num3"); |
| | |
| | | String num7 = jsonObject.getString("num7"); |
| | | config.normals.add(new TaxiPricingDemoService.PricingRule("普通时段", num1, num2, Double.parseDouble(num3), Double.parseDouble(num4), Double.parseDouble(num5), Double.parseDouble(num6), Double.parseDouble(num7))); |
| | | } |
| | | |
| | | |
| | | TaxiPricingDemoService.TaxiPricingService service = new TaxiPricingDemoService.TaxiPricingService(); |
| | | Map<String, BigDecimal> bill = service.calculateOrderPrice(DateUtils.toDate(order.getCreateTime()), order.getMileageKilometers(), gpsPoints, config); |
| | |
| | | } else if (key.contains("节假")) { |
| | | startDetail.setType(4); |
| | | } |
| | | startDetail.setDuration(Double.valueOf(key.split("=")[1])); |
| | | startDetail.setMileage(new BigDecimal(key.split("&")[1])); |
| | | String durationAndMileage = key.split("\\|")[2]; |
| | | startDetail.setDuration(Double.valueOf(durationAndMileage.split("&")[0])); |
| | | startDetail.setMileage(new BigDecimal(durationAndMileage.split("&")[1])); |
| | | start.add(startDetail); |
| | | } |
| | | // 封装里程费 |
| | |
| | | FareBreakdownDetailVo mileageDetail = new FareBreakdownDetailVo(); |
| | | if (key.contains("普通时段")) { |
| | | mileageDetail.setType(1); |
| | | String key1 = "distance普通时段" + key.split("\\|")[1]; |
| | | String key2 = "普通时段" + key.split("\\|")[1]; |
| | | String key1 = "distance普通时段|" + key.split("\\|")[1]; |
| | | String key2 = "普通时段|" + key.split("\\|")[1]; |
| | | BigDecimal distance = bill.get(key1); |
| | | BigDecimal money = bill.get(key2); |
| | | mileageDetail.setMileage(distance); |
| | |
| | | mileageDetail.setMoney(money.multiply(BigDecimal.valueOf(priceRate))); |
| | | } else if (key.contains("夜间行驶")) { |
| | | mileageDetail.setType(2); |
| | | String key1 = "distance夜间行驶" + key.split("\\|")[1]; |
| | | String key2 = "夜间行驶" + key.split("\\|")[1]; |
| | | String key1 = "distance夜间行驶|" + key.split("\\|")[1]; |
| | | String key2 = "夜间行驶|" + key.split("\\|")[1]; |
| | | BigDecimal distance = bill.get(key1); |
| | | BigDecimal money = bill.get(key2); |
| | | mileageDetail.setMileage(distance); |
| | |
| | | mileageDetail.setMoney(money.multiply(BigDecimal.valueOf(priceRate))); |
| | | } else if (key.contains("高峰期")) { |
| | | mileageDetail.setType(3); |
| | | String key1 = "distance高峰期" + key.split("\\|")[1]; |
| | | String key2 = "高峰期" + key.split("\\|")[1]; |
| | | String key1 = "distance高峰期|" + key.split("\\|")[1]; |
| | | String key2 = "高峰期|" + key.split("\\|")[1]; |
| | | BigDecimal distance = bill.get(key1); |
| | | BigDecimal money = bill.get(key2); |
| | | mileageDetail.setMileage(distance); |
| | |
| | | mileageDetail.setMoney(money.multiply(BigDecimal.valueOf(priceRate))); |
| | | } else if (key.contains("节假")) { |
| | | mileageDetail.setType(4); |
| | | String key1 = "distance节假日" + key.split("\\|")[1]; |
| | | String key2 = "节假日" + key.split("\\|")[1]; |
| | | String key1 = "distance节假日|" + key.split("\\|")[1]; |
| | | String key2 = "节假日|" + key.split("\\|")[1]; |
| | | BigDecimal distance = bill.get(key1); |
| | | BigDecimal money = bill.get(key2); |
| | | mileageDetail.setMileage(distance); |
| | |
| | | for (XpOrderDetail xpOrderDetail : xpOrderDetails) { |
| | | xpOrderDetailMapper.insert(xpOrderDetail); |
| | | } |
| | | for (FareBreakdownDetailVo fareBreakdownDetailVo : duration) { |
| | | order.setDurationType(fareBreakdownDetailVo.getType()); |
| | | order.setDurationMoney(fareBreakdownDetailVo.getMoney()); |
| | | order.setDuration(Double.parseDouble(fareBreakdownDetailVo.getDuration() + "")); |
| | | for (XpOrderDetail xpOrderDetail : xpOrderDetails) { |
| | | if (xpOrderDetail.getDetailType() == 1){ |
| | | order.setDurationType(xpOrderDetail.getType()); |
| | | order.setDurationMoney(xpOrderDetail.getMoney()); |
| | | order.setDuration(Double.parseDouble(xpOrderDetail.getDuration() + "")); |
| | | }else{ |
| | | order.setLongDistanceType(order.getDurationType()); |
| | | order.setLongDistance(xpOrderDetail.getMileage().doubleValue()); |
| | | order.setLongDistancemoney(xpOrderDetail.getMoney()); |
| | | } |
| | | |
| | | } |
| | | for (FareBreakdownDetailVo fareBreakdownDetailVo : longDistance) { |
| | | order.setLongDistanceType(fareBreakdownDetailVo.getType()); |
| | | order.setLongDistance(fareBreakdownDetailVo.getMileage().doubleValue()); |
| | | order.setLongDistancemoney(fareBreakdownDetailVo.getMoney()); |
| | | } |
| | | |
| | | BigDecimal orderMoney = startMoney.add(mileageMoney).add(order.getDurationMoney() != null ? order.getDurationMoney() : BigDecimal.ZERO) |
| | | .add(order.getLongDistancemoney() != null ? order.getLongDistancemoney() : BigDecimal.ZERO) |
| | | .add(order.getWaitMoney()!=null?order.getWaitMoney():BigDecimal.ZERO); |
| | |
| | | detail.setTime(xpOrderDetail.getTime()); |
| | | detail.setMileage(xpOrderDetail.getMileage()); |
| | | detail.setDuration(xpOrderDetail.getDuration()); |
| | | if (xpOrderDetail.getType() == 1){ |
| | | if (xpOrderDetail.getDetailType() == 1){ |
| | | start.add(detail); |
| | | }else{ |
| | | mileage.add(detail); |
| | |
| | | durationDetail.setType(order.getDurationType()); |
| | | durationDetail.setDuration(order.getDuration()); |
| | | durationDetail.setMoney(order.getDurationMoney()); |
| | | duration.add(durationDetail); |
| | | } |
| | | List<FareBreakdownDetailVo> longDistance = new ArrayList<>(); |
| | | |
| | |
| | | // mvp版本不做支付 使用优惠券抵扣为0元订单处理 处理订单状态即可 |
| | | XpOrder order = this.getById(dto.getOrderId()); |
| | | order.setStatus(9); |
| | | order.setAppUserId(null); |
| | | baseMapper.updateById(order); |
| | | return R.ok(); |
| | | } |