From 35aa3fecf6fd3c58b2f004a6ef0c13238dd65e5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E7=A3=8A?= <45566618@qq.com> Date: Fri, 5 Jul 2024 11:24:11 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=A2=9E=E5=8A=A0=E4=BB=A3?= =?UTF-8?q?=E9=87=91=E5=88=B8=E4=B9=8B=E5=89=8D=E7=9A=84=E9=87=91=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sqx/modules/artificer/entity/Orders.java | 6 + .../artificer/service/OrdersService.java | 2 +- .../service/impl/OrdersServiceImpl.java | 174 +++++++++--------- 3 files changed, 97 insertions(+), 85 deletions(-) diff --git a/src/main/java/com/sqx/modules/artificer/entity/Orders.java b/src/main/java/com/sqx/modules/artificer/entity/Orders.java index c907859..4d8515f 100644 --- a/src/main/java/com/sqx/modules/artificer/entity/Orders.java +++ b/src/main/java/com/sqx/modules/artificer/entity/Orders.java @@ -356,6 +356,12 @@ public class Orders implements Serializable { * 项目金额或项目差额 */ private BigDecimal massageMoney; + + /** + * 项目金额减代金卷之前 + */ + private BigDecimal massageCouponMoney; + /** * 拒单内容 */ diff --git a/src/main/java/com/sqx/modules/artificer/service/OrdersService.java b/src/main/java/com/sqx/modules/artificer/service/OrdersService.java index 8fc3800..8b504c4 100644 --- a/src/main/java/com/sqx/modules/artificer/service/OrdersService.java +++ b/src/main/java/com/sqx/modules/artificer/service/OrdersService.java @@ -12,7 +12,7 @@ import java.util.Map; public interface OrdersService extends IService { -// Map selectTaxiMoney(Long artificerId, String latitude, String longitude, String city); + Map selectTaxiMoney(Long artificerId, String latitude, String longitude, String city); Result insertOrders(Orders orders); diff --git a/src/main/java/com/sqx/modules/artificer/service/impl/OrdersServiceImpl.java b/src/main/java/com/sqx/modules/artificer/service/impl/OrdersServiceImpl.java index dbd715e..a31c00f 100644 --- a/src/main/java/com/sqx/modules/artificer/service/impl/OrdersServiceImpl.java +++ b/src/main/java/com/sqx/modules/artificer/service/impl/OrdersServiceImpl.java @@ -165,90 +165,90 @@ public class OrdersServiceImpl extends ServiceImpl implements new LinkedBlockingQueue<>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy()); -// @Override -// public Map selectTaxiMoney(Long artificerId, String latitude, String longitude, String city) { -// -// Artificer artificer = artificerService.getById(artificerId); -// GlobalCoordinates source = new GlobalCoordinates(Double.parseDouble(latitude), Double.parseDouble(longitude)); -// GlobalCoordinates target = new GlobalCoordinates(Double.parseDouble(artificer.getLatitude()), Double.parseDouble(artificer.getLongitude())); -// Integer distances = (int) LonLatUtil.getDistanceMeter(source, target, Ellipsoid.Sphere); -// -// //起步价 -// String tripPrice; -// //每公里价格 -// String tripMoney; -// //起步公里数 -// String tripNum; -// Trip trip = tripService.getOne(new QueryWrapper().like("city", city)); -// if (trip == null) { -// return Result.error("当前地址暂无出行方式,请更换其他地址!"); -// } -// -// //获取城市名称 -// JSONObject mapRes = CommonMapUtils.calcTaxiMoneyInfo(artificer.getTripWay(), longitude, latitude, artificer.getLongitude(), artificer.getLatitude());//根据出行方式计算距离 -// -// //判断技师的出行方式 -// if (artificer.getTripWay() == null || artificer.getTripWay() == 1) { -// //公交 -// tripPrice = trip.getBusStartingFare(); -// tripMoney = trip.getBusKmMoney(); -// tripNum = trip.getBusStartingKm(); -// distances = mapRes.getInteger("distance"); -// } else if (artificer.getTripWay() == 2) { -// //出租 -// tripPrice = trip.getTaxiStartingFare(); -// tripMoney = trip.getTaxiKmMoney(); -// tripNum = trip.getTaxiStartingKm(); -// distances = mapRes.getInteger("distance"); -// } else { -// tripPrice = "0"; -// tripMoney = "0"; -// tripNum = "1"; -// } -// -// -// int i = Integer.parseInt(tripNum); -// i = i * 1000; -// BigDecimal taxiMoney = new BigDecimal(tripPrice); -// if (artificer.getTripWay() == null || artificer.getTripWay() == 1 || artificer.getTripWay() == 2) { -// if (distances > i) { -// int distancess = distances; -// //大于起步公里 -// distances = distances - i; -// BigDecimal bigDecimal = BigDecimal.valueOf(distances).divide(BigDecimal.valueOf(1000), 0, BigDecimal.ROUND_UP); -// double downd = Math.ceil(bigDecimal.doubleValue()); -// distances = new Double(downd).intValue(); -// BigDecimal xuMoney = BigDecimal.valueOf(distances).multiply(new BigDecimal(tripMoney)); -// taxiMoney = taxiMoney.add(xuMoney); -// distances = distancess; -// bigDecimal = BigDecimal.valueOf(distances).divide(BigDecimal.valueOf(1000), 0, BigDecimal.ROUND_UP); -// downd = Math.ceil(bigDecimal.doubleValue()); -// distances = new Double(downd).intValue(); -// } else { -// BigDecimal bigDecimal = BigDecimal.valueOf(distances).divide(BigDecimal.valueOf(1000), 0, BigDecimal.ROUND_UP); -// double downd = Math.ceil(bigDecimal.doubleValue()); -// distances = new Double(downd).intValue(); -// } -// } else { -// BigDecimal bigDecimal = BigDecimal.valueOf(distances).divide(BigDecimal.valueOf(1000), 0, BigDecimal.ROUND_UP); -// double downd = Math.ceil(bigDecimal.doubleValue()); -// distances = new Double(downd).intValue(); -// } -// -// String value = commonInfoService.findOne(426).getValue(); -// if ("是".equals(value)) { -// distances = distances * 2; -// taxiMoney = taxiMoney.multiply(BigDecimal.valueOf(2)); -// } -// -// Map result = new HashMap<>(); -// result.put("tripPrice", tripPrice); -// result.put("tripNum", tripNum); -// result.put("distances", distances); -// result.put("xuMoney", tripMoney); -// result.put("taxiMoney", taxiMoney); -// return result; -// } + @Override + public Map selectTaxiMoney(Long artificerId, String latitude, String longitude, String city) { + + Artificer artificer = artificerService.getById(artificerId); + GlobalCoordinates source = new GlobalCoordinates(Double.parseDouble(latitude), Double.parseDouble(longitude)); + GlobalCoordinates target = new GlobalCoordinates(Double.parseDouble(artificer.getLatitude()), Double.parseDouble(artificer.getLongitude())); + Integer distances = (int) LonLatUtil.getDistanceMeter(source, target, Ellipsoid.Sphere); + + //起步价 + String tripPrice; + //每公里价格 + String tripMoney; + //起步公里数 + String tripNum; + Trip trip = tripService.getOne(new QueryWrapper().like("city", city)); + if (trip == null) { + return Result.error("当前地址暂无出行方式,请更换其他地址!"); + } + + //获取城市名称 + JSONObject mapRes = CommonMapUtils.calcTaxiMoneyInfo(artificer.getTripWay(), longitude, latitude, artificer.getLongitude(), artificer.getLatitude());//根据出行方式计算距离 + + //判断技师的出行方式 + if (artificer.getTripWay() == null || artificer.getTripWay() == 1) { + //公交 + tripPrice = trip.getBusStartingFare(); + tripMoney = trip.getBusKmMoney(); + tripNum = trip.getBusStartingKm(); + distances = mapRes.getInteger("distance"); + } else if (artificer.getTripWay() == 2) { + //出租 + tripPrice = trip.getTaxiStartingFare(); + tripMoney = trip.getTaxiKmMoney(); + tripNum = trip.getTaxiStartingKm(); + distances = mapRes.getInteger("distance"); + } else { + tripPrice = "0"; + tripMoney = "0"; + tripNum = "1"; + } + + + int i = Integer.parseInt(tripNum); + i = i * 1000; + BigDecimal taxiMoney = new BigDecimal(tripPrice); + if (artificer.getTripWay() == null || artificer.getTripWay() == 1 || artificer.getTripWay() == 2) { + if (distances > i) { + int distancess = distances; + //大于起步公里 + distances = distances - i; + BigDecimal bigDecimal = BigDecimal.valueOf(distances).divide(BigDecimal.valueOf(1000), 0, BigDecimal.ROUND_UP); + double downd = Math.ceil(bigDecimal.doubleValue()); + distances = new Double(downd).intValue(); + BigDecimal xuMoney = BigDecimal.valueOf(distances).multiply(new BigDecimal(tripMoney)); + taxiMoney = taxiMoney.add(xuMoney); + distances = distancess; + bigDecimal = BigDecimal.valueOf(distances).divide(BigDecimal.valueOf(1000), 0, BigDecimal.ROUND_UP); + downd = Math.ceil(bigDecimal.doubleValue()); + distances = new Double(downd).intValue(); + } else { + BigDecimal bigDecimal = BigDecimal.valueOf(distances).divide(BigDecimal.valueOf(1000), 0, BigDecimal.ROUND_UP); + double downd = Math.ceil(bigDecimal.doubleValue()); + distances = new Double(downd).intValue(); + } + } else { + BigDecimal bigDecimal = BigDecimal.valueOf(distances).divide(BigDecimal.valueOf(1000), 0, BigDecimal.ROUND_UP); + double downd = Math.ceil(bigDecimal.doubleValue()); + distances = new Double(downd).intValue(); + } + + String value = commonInfoService.findOne(426).getValue(); + if ("是".equals(value)) { + distances = distances * 2; + taxiMoney = taxiMoney.multiply(BigDecimal.valueOf(2)); + } + + Map result = new HashMap<>(); + result.put("tripPrice", tripPrice); + result.put("tripNum", tripNum); + result.put("distances", distances); + result.put("xuMoney", tripMoney); + result.put("taxiMoney", taxiMoney); + return result; + } @Override public Result insertOrders(Orders orders) { @@ -4056,6 +4056,12 @@ public class OrdersServiceImpl extends ServiceImpl implements public Result selectOrdersDetails(Long ordersId) { Integer minutes = Integer.valueOf(commonInfoService.findOne(452).getValue()); Orders orders = baseMapper.selectById(ordersId); + BigDecimal couponMoney = orders.getCouponMoney(); + if(couponMoney != null){ + orders.setMassageCouponMoney(orders.getMassageMoney().add(couponMoney)); + }else{ + orders.setMassageCouponMoney(orders.getMassageMoney()); + } String serveTime = orders.getServeTime(); Date serveTimeDate = DateUtils.stringToDate(serveTime,"yyyy-MM-dd HH:mm"); serveTimeDate = DateUtils.addDateMinutes(serveTimeDate,minutes);