From aa72a1d1d8c792b322281f5ab01996bc62820b13 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期二, 16 九月 2025 15:31:07 +0800 Subject: [PATCH] 修改bug及数据加密传输 --- UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ServerCarModelServiceImpl.java | 80 +++++++++++++++++++++++++++++++++++++-- 1 files changed, 75 insertions(+), 5 deletions(-) diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ServerCarModelServiceImpl.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ServerCarModelServiceImpl.java index 03f0c2a..a42183a 100644 --- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ServerCarModelServiceImpl.java +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/ServerCarModelServiceImpl.java @@ -1,6 +1,7 @@ package com.stylefeng.guns.modular.system.service.impl; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.stylefeng.guns.modular.system.dao.ServerCarModelMapper; @@ -15,11 +16,13 @@ import com.stylefeng.guns.modular.system.util.ResultUtil; import com.stylefeng.guns.modular.system.warpper.BaseWarpper; import com.stylefeng.guns.modular.system.warpper.ServerCarModelWarpper; +import lombok.Data; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; @@ -97,7 +100,9 @@ first = baseWarppers.stream().filter(s->s.getId() == 2).findFirst(); if(first.isPresent()){ serverCarModelWarpper = this.getTextPrice(query.getId(), distance1_, duration_, 0, 2, geocode); - price.add(serverCarModelWarpper); + if(serverCarModelWarpper!=null){ + price.add(serverCarModelWarpper); + } } return ResultUtil.success(price); } @@ -127,15 +132,19 @@ * @throws Exception */ public List<ServerCarModelWarpper> getPrice(Integer companyId, double distance, long duration, long wait, Integer type, Map<String, String> geocode) throws Exception { + System.err.println("预估里程:" + distance); + System.err.println("预估时间:" + duration); String provinceCode = geocode.get("provinceCode"); String cityCode = geocode.get("cityCode"); String districtCode = geocode.get("districtCode"); //获取匹配的城市价格配置 SystemPriceCity systemPriceCity = systemPriceCityService.queryOne(provinceCode, cityCode, districtCode); + System.err.println("获取匹配的城市价格配置:" + systemPriceCity); if (null == systemPriceCity) { return new ArrayList<>(); } List<Map<String, Object>> list = serverCarModelMapper.queryServerCarModel(type); + System.err.println("获取匹配的城市价格配置111:" + list); List<ServerCarModelWarpper> data = new ArrayList<>(); for (Map<String, Object> map : list) { Map<String, Object> query1 = systemPriceMapper.query(companyId, type, Integer.valueOf(map.get("id").toString()), systemPriceCity.getId()); @@ -220,13 +229,12 @@ JSONObject jsonObject = JSON.parseObject(query1.get("content").toString());//等待费 Double num1 = jsonObject.getDouble("num1"); Double num2 = jsonObject.getDouble("num2"); - Double num3 = jsonObject.getDouble("num3"); + JSONArray mileageList = jsonObject.getJSONArray("mileageList"); Double num4 = jsonObject.getDouble("num4"); Double num5 = jsonObject.getDouble("num5"); String num6 = jsonObject.getString("num6"); Double num7 = jsonObject.getDouble("num7"); Double num8 = jsonObject.getDouble("num8"); - Double num9 = jsonObject.getDouble("num9"); String[] split = num6.split(" - "); Integer time1 = Integer.valueOf(split[0].replace(":", "")); @@ -271,7 +279,34 @@ BigDecimal multiply = BigDecimal.ZERO; BigDecimal yt = BigDecimal.ZERO; if (d > num8) { - multiply = new BigDecimal(d).subtract(new BigDecimal(num8)).multiply(new BigDecimal(num9)); + + if(null != mileageList){ + List<MileageObject> list = new ArrayList<>(); + for (int i = 0; i < mileageList.size(); i++) { + MileageObject mileageObject = mileageList.getObject(i, MileageObject.class); + list.add(mileageObject); + } + //根据配置的里程倒序排序 + list.sort(new Comparator<MileageObject>() { + @Override + public int compare(MileageObject o1, MileageObject o2) { + return o1.getMileage().compareTo(o2.getMileage()) * -1; + } + }); + //计算每个阶段的增加费用 + Double last = new BigDecimal(d).setScale(0, RoundingMode.DOWN).doubleValue(); + for (int i = 0; i < list.size(); i++) { + Double mileage = list.get(i).getMileage(); + Double price = list.get(i).getPrice(); + if(d > mileage){ + if(last <= num2){ + break; + } + multiply = multiply.add((new BigDecimal(last).subtract(new BigDecimal(mileage))).multiply(new BigDecimal(price))); + last = mileage; + } + } + } if (d > num4) { yt = new BigDecimal(d).subtract(new BigDecimal(num4)).multiply(new BigDecimal(num5)); } @@ -286,7 +321,34 @@ BigDecimal multiply = BigDecimal.ZERO; BigDecimal yt = BigDecimal.ZERO; if (d > num2) { - multiply = new BigDecimal(d).subtract(new BigDecimal(num2)).multiply(new BigDecimal(num3)); + if(null != mileageList){ + List<MileageObject> list = new ArrayList<>(); + for (int i = 0; i < mileageList.size(); i++) { + MileageObject mileageObject = mileageList.getObject(i, MileageObject.class); + list.add(mileageObject); + } + //根据配置的里程倒序排序 + list.sort(new Comparator<MileageObject>() { + @Override + public int compare(MileageObject o1, MileageObject o2) { + return o1.getMileage().compareTo(o2.getMileage()) * -1; + } + }); + //计算每个阶段的增加费用 + Double last = new BigDecimal(d).setScale(0, RoundingMode.DOWN).doubleValue(); + for (int i = 0; i < list.size(); i++) { + Double mileage = list.get(i).getMileage(); + Double price = list.get(i).getPrice(); + if(d > mileage){ + if(last <= num2){ + break; + } + multiply = multiply.add((new BigDecimal(last).subtract(new BigDecimal(mileage))).multiply(new BigDecimal(price))); + last = mileage; + } + } + } + if (d > num4) { yt = new BigDecimal(d).subtract(new BigDecimal(num4)).multiply(new BigDecimal(num5)); } @@ -422,4 +484,12 @@ } return map; } + + + @Data + public static class MileageObject{ + private Double mileage; + private Double price; + + } } -- Gitblit v1.7.1