订单出行费用

This commit is contained in:
曹磊 2024-07-23 14:45:05 +08:00
parent 5658293357
commit 9a050aa76d
4 changed files with 81 additions and 16 deletions

View File

@ -221,6 +221,17 @@ public class Orders implements Serializable {
* 出行费用
*/
private BigDecimal taxiMoney;
/**
* 正常出行费用
*/
private BigDecimal usualTravelMoney;
/**
* 夜间出行费用
*/
private BigDecimal nightTravelMoney;
//技师打车费
private BigDecimal artificerTaxiMoney;
//平台扣除打车费

View File

@ -818,6 +818,8 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
taxiMoney = taxiMoney.setScale(0,BigDecimal.ROUND_UP);
orders.setTaxiMoney(taxiMoney);
orders.setKm(travelPriceVo.getKilometerNum());
orders.setUsualTravelMoney(travelPriceVo.getUsualTravelMoney());
orders.setNightTravelMoney(travelPriceVo.getNightTravelMoney());
} else {
if ("".equals(value1)) {
ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper<ArtificerTime>().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 "));
@ -999,7 +1001,8 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
taxiMoney = new BigDecimal(travelPriceVo.getTravelPrice());
orders.setTaxiMoney(taxiMoney);
orders.setKm(travelPriceVo.getKilometerNum());
orders.setUsualTravelMoney(travelPriceVo.getUsualTravelMoney());
orders.setNightTravelMoney(travelPriceVo.getNightTravelMoney());
if (orders.getParentId() == null || orders.getParentId() == 0) {
String serveTime = orders.getServeTime();
String date = serveTime.substring(0, 10);
@ -1233,6 +1236,8 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
taxiMoney = taxiMoney.setScale(0,BigDecimal.ROUND_UP);
orders.setTaxiMoney(taxiMoney);
orders.setKm(travelPriceVo.getKilometerNum());
orders.setUsualTravelMoney(travelPriceVo.getUsualTravelMoney());
orders.setNightTravelMoney(travelPriceVo.getNightTravelMoney());
orders.setPayMoney(taxiMoney);
orders.setStatus(1);
orders.setCreateTime(DateUtils.format(new Date()));
@ -1447,6 +1452,8 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
orders.setTripWay(oldOrders.getTripWay());
orders.setTaxiMoney(oldOrders.getTaxiMoney());
orders.setKm(oldOrders.getKm());
orders.setUsualTravelMoney(oldOrders.getUsualTravelMoney());
orders.setNightTravelMoney(oldOrders.getNightTravelMoney());
orders.setStartAddress(oldOrders.getStartAddress());
orders.setStartTime(oldOrders.getStartTime());
orders.setCouponId(oldOrders.getCouponId());
@ -1743,15 +1750,26 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
}
}
taxiMoney = new BigDecimal(travelPriceVo.getTravelPrice());
BigDecimal usualTravelMoney = travelPriceVo.getUsualTravelMoney();
BigDecimal nightTravelMoney = travelPriceVo.getNightTravelMoney();
taxiMoney = taxiMoney.setScale(0,BigDecimal.ROUND_UP);
BigDecimal oldTaxiMoney = oldOrders.getTaxiMoney();
BigDecimal oldUsualTravelMoney = oldOrders.getUsualTravelMoney();
BigDecimal oldNightTravelMoney = oldOrders.getNightTravelMoney();
if (taxiMoney.compareTo(oldTaxiMoney) < 0) {
taxiMoney = oldTaxiMoney;
usualTravelMoney = oldUsualTravelMoney;
nightTravelMoney = oldNightTravelMoney;
}
orders.setTaxiMoney(taxiMoney);
orders.setKm(travelPriceVo.getKilometerNum());
orders.setUsualTravelMoney(usualTravelMoney);
orders.setNightTravelMoney(nightTravelMoney);
//出行交通费差价
BigDecimal cxchajia = taxiMoney.subtract(oldTaxiMoney);
// BigDecimal cxchajia = taxiMoney.subtract(oldTaxiMoney);
BigDecimal pccxchajia = usualTravelMoney.subtract(oldUsualTravelMoney);
BigDecimal yjcxchajia = nightTravelMoney.subtract(oldNightTravelMoney);
BigDecimal cxchajia = pccxchajia.subtract(yjcxchajia);
//总差价
BigDecimal chajia = xmchajia.add(cxchajia);
@ -1859,6 +1877,8 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
//新增单据xmchajia
orders.setPayMoney(chajia);
orders.setTaxiMoney(cxchajia);
orders.setUsualTravelMoney(pccxchajia);
orders.setNightTravelMoney(yjcxchajia);
BigDecimal artificerPrice = BigDecimal.ZERO;
BigDecimal artificerTaxiPrice = BigDecimal.ZERO;
//查询是否计算出租车扣费
@ -3172,6 +3192,8 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
//此笔单子退车费并改为取消再将原单改成待补单
orders.setRefusalContent("");
orders.setTaxiMoney(BigDecimal.ZERO);
orders.setUsualTravelMoney(BigDecimal.ZERO);
orders.setNightTravelMoney(BigDecimal.ZERO);
orders.setStatus(4);
baseMapper.updateById(orders);
cancelSupplementOrders(userId, orders.getOldOrdersId(), isAuto, 1);//退原单原单的车费已被退/所以只退项目
@ -3180,6 +3202,8 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
BigDecimal artificerMoney = orders.getArtificerMoney().subtract(taxiMoney);
orders.setRefusalContent("");
orders.setTaxiMoney(BigDecimal.ZERO);
orders.setUsualTravelMoney(BigDecimal.ZERO);
orders.setNightTravelMoney(BigDecimal.ZERO);
orders.setStatus(10);
orders.setArtificerMoney(artificerMoney);
orders.setSumArtificerMoney(artificerMoney);
@ -3585,6 +3609,8 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
//此笔单子退车费并改为取消再将原单改成待补单
orders.setRefusalContent("");
orders.setTaxiMoney(BigDecimal.ZERO);
orders.setUsualTravelMoney(BigDecimal.ZERO);
orders.setNightTravelMoney(BigDecimal.ZERO);
orders.setStatus(4);
baseMapper.updateById(orders);
cancelSupplementOrders(userId, orders.getOldOrdersId(), isAuto, 1);//退原单原单的车费已被退/所以只退项目
@ -3593,6 +3619,8 @@ public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements
BigDecimal artificerMoney = orders.getArtificerMoney().subtract(taxiMoney);
orders.setRefusalContent("");
orders.setTaxiMoney(BigDecimal.ZERO);
orders.setUsualTravelMoney(BigDecimal.ZERO);
orders.setNightTravelMoney(BigDecimal.ZERO);
orders.setStatus(10);
orders.setArtificerMoney(artificerMoney);
orders.setSumArtificerMoney(artificerMoney);

View File

@ -270,24 +270,32 @@ public class TravelConfServiceImpl extends ServiceImpl<TravelConfDao, TravelConf
BigDecimal kilometerNum = NumberUtil.div(distances, new BigDecimal("1000"));
vo.setKilometerNum(NumberUtil.decimalFormat("0.00", kilometerNum));
BigDecimal usualTravelMoney = BigDecimal.ZERO;
BigDecimal nightTravelMoney = BigDecimal.ZERO;
if(TravelEnum.PricingType.FIXED.getValue().equals(pricingType)) {
//固定的
BigDecimal fixedPrice = conf.getFixedPrice();
// BigDecimal fixedPrice = conf.getFixedPrice();//单程
// if(TravelEnum.FixedType.RETURN.getValue().equals(fixedType)) {
// //往返
// fixedPrice = NumberUtil.mul(fixedPrice, 2);
// }
//正常出行
usualTravelMoney = conf.getFixedPrice();
usualTravelMoney = usualTravelMoney.setScale(0,BigDecimal.ROUND_UP);
vo.setUsualTravelMoney(usualTravelMoney);
//夜间出行
if(TravelEnum.TimeIntervalType.NIGHT.getValue().equals(timeIntervalType)) {
//夜间
nightTravelMoney = conf.getNightTravelExpenses();
}
nightTravelMoney = nightTravelMoney.setScale(0,BigDecimal.ROUND_UP);
vo.setNightTravelMoney(nightTravelMoney);
//最终价格
// vo.setTravelPrice(NumberUtil.decimalFormat("0", fixedPrice));
BigDecimal fixedPrice = usualTravelMoney.add(nightTravelMoney);
fixedPrice = fixedPrice.setScale(0,BigDecimal.ROUND_UP);
vo.setTravelPrice(fixedPrice.toString());
}else if(TravelEnum.PricingType.TRENDS.getValue().equals(pricingType)){
//动态的
BigDecimal nightTravelExpenses = new BigDecimal("0");//白天
if(TravelEnum.TimeIntervalType.NIGHT.getValue().equals(timeIntervalType)) {
//夜间
nightTravelExpenses = conf.getNightTravelExpenses();
nightTravelMoney = conf.getNightTravelExpenses();
nightTravelMoney = nightTravelMoney.setScale(0,BigDecimal.ROUND_UP);
}
//起步公里数
BigDecimal startKilometers = conf.getFreeKilometers();
@ -302,19 +310,27 @@ public class TravelConfServiceImpl extends ServiceImpl<TravelConfDao, TravelConf
BigDecimal travelPrice = BigDecimal.ZERO;
//公里数<免费公里数车费=夜间出行费
if(kilometerNum.compareTo(freeKilometers)<0){
travelPrice = nightTravelExpenses;
vo.setUsualTravelMoney(BigDecimal.ZERO);
vo.setNightTravelMoney(nightTravelMoney);
travelPrice = nightTravelMoney;
travelPrice = travelPrice.setScale(0,BigDecimal.ROUND_UP);
vo.setTravelPrice(travelPrice.toString());
}else{
BigDecimal kilometers = kilometerNum.subtract(freeKilometers);
//公里数>免费公里数公里数-免费公里数<起步公里数时车费=夜间出行费+起步价
if(kilometers.compareTo(startKilometers)<0){
travelPrice = nightTravelExpenses.add(startingPrice);
startingPrice = startingPrice.setScale(0,BigDecimal.ROUND_UP);
}else{
//公里数>免费公里数公里数-免费公里数>起步公里数时车费=夜间出行费+起步价+(公里数-免费公里数-起步公里数)*每公里价格
travelPrice = nightTravelExpenses.add(startingPrice).add(kilometers.subtract(startKilometers).multiply(pricePerKilometer));
startingPrice = startingPrice.add(kilometers.subtract(startKilometers).multiply(pricePerKilometer));
startingPrice = startingPrice.setScale(0,BigDecimal.ROUND_UP);
}
vo.setUsualTravelMoney(startingPrice);
vo.setNightTravelMoney(nightTravelMoney);
travelPrice = nightTravelMoney.add(startingPrice);
travelPrice = travelPrice.setScale(0,BigDecimal.ROUND_UP);
vo.setTravelPrice(travelPrice.toString());
}
travelPrice = travelPrice.setScale(0,BigDecimal.ROUND_UP);
vo.setTravelPrice(travelPrice.toString());
}
return vo;
}

View File

@ -18,6 +18,14 @@ import java.math.BigDecimal;
@Data
public class TravelPriceVo {
/**正常出行费用(元)*/
@ApiModelProperty("正常出行费用(元)")
private BigDecimal usualTravelMoney;
/**夜间出行费用(元)*/
@ApiModelProperty("夜间出行费用(元)")
private BigDecimal nightTravelMoney;
/**出行价格(元)*/
@ApiModelProperty("出行价格(元)")
private String travelPrice;
@ -37,4 +45,6 @@ public class TravelPriceVo {
/**出行配置具体参数*/
@ApiModelProperty("出行配置具体参数")
private TravelConf conf;
}