From 8f329481c1122ae2d2fe37f76898654a487c9b88 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期一, 25 十一月 2024 15:37:41 +0800
Subject: [PATCH] 修改bug
---
DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java | 159 +++++++++++++++++++++++++++--------------------------
1 files changed, 81 insertions(+), 78 deletions(-)
diff --git a/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java b/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
index 3f162df..c26438b 100644
--- a/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
+++ b/DriverZYTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/specialTrain/server/impl/OrderPrivateCarServiceImpl.java
@@ -323,101 +323,104 @@
// 结束服务时查询轨迹,计算距离
Driver driver = driverService.selectById(orderPrivateCar.getDriverId());
- String tid = gdFalconUtil.selectTerminal(driver.getPhone());
- String result = gdFalconUtil.selectTrack(tid, orderPrivateCar.getTrackId(),1);
-
- JSONObject jsonObject = JSONObject.parseObject(result);
- JSONArray tracks = jsonObject.getJSONArray("tracks");
- Integer counts = jsonObject.getInteger("counts");
- JSONArray points = new JSONArray();
- // 如果一单轨迹点数大于999,需进行分页查询,将所有的点查询出
- if(counts > 999){
- int i = counts%999;
- for (int j = 1; j < i + 1; j++) {
- String res = gdFalconUtil.selectTrack(tid, orderPrivateCar.getTrackId(),1);
- JSONObject jsonObject1 = JSONObject.parseObject(res);
- JSONArray tracks1 = jsonObject1.getJSONArray("tracks");
- Object ob = tracks1.get(0);
+ double sum = 0;
+ try {
+ String tid = gdFalconUtil.selectTerminal(driver.getPhone());
+ String result = gdFalconUtil.selectTrack(tid, orderPrivateCar.getTrackId(),1);
+
+ JSONObject jsonObject = JSONObject.parseObject(result);
+ JSONArray tracks = jsonObject.getJSONArray("tracks");
+ Integer counts = jsonObject.getInteger("counts");
+ JSONArray points = new JSONArray();
+ // 如果一单轨迹点数大于999,需进行分页查询,将所有的点查询出
+ if(counts > 999){
+ int i = counts%999;
+ for (int j = 1; j < i + 1; j++) {
+ String res = gdFalconUtil.selectTrack(tid, orderPrivateCar.getTrackId(),1);
+ JSONObject jsonObject1 = JSONObject.parseObject(res);
+ JSONArray tracks1 = jsonObject1.getJSONArray("tracks");
+ Object ob = tracks1.get(0);
+ String obs = JSONObject.toJSONString(ob);
+ JSONObject object = JSONObject.parseObject(obs);
+ JSONArray point = object.getJSONArray("points");
+ points.addAll(point);
+ }
+ }
+ // 轨迹点数小于999,一页查询出即可
+ if(counts > 0 && counts < 999){
+ Object ob = tracks.get(0);
String obs = JSONObject.toJSONString(ob);
JSONObject object = JSONObject.parseObject(obs);
JSONArray point = object.getJSONArray("points");
points.addAll(point);
}
- }
- // 轨迹点数小于999,一页查询出即可
- if(counts > 0 && counts < 999){
- Object ob = tracks.get(0);
- String obs = JSONObject.toJSONString(ob);
- JSONObject object = JSONObject.parseObject(obs);
- JSONArray point = object.getJSONArray("points");
- points.addAll(point);
- }
-
- System.out.println("轨迹坐标点=====:"+points);
- String toLonLat = "";
- double sum = 0;
- List<OrderPosition> orderPositions = new ArrayList<>();
- for (Object o : points) {
- String s = JSONObject.toJSONString(o);
- JSONObject obj = JSONObject.parseObject(s);
- String fromLonLat = obj.getString("location");
- String[] split = fromLonLat.split(",");
- Long locatetime = obj.getLong("locatetime");
- Date date = new Date(locatetime);
- if(date.after(orderPrivateCar.getStartServiceTime()) && date.before(orderPrivateCar.getEndServiceTime())){
- // 封装定位文件里的单个定位对象
- OrderPosition orderPosition = new OrderPosition();
- orderPosition.setOrderId(orderId);
- orderPosition.setOrderType(1);
- orderPosition.setDriverId(orderPrivateCar.getDriverId());
- orderPosition.setLat(split[1]);
- orderPosition.setLon(split[0]);
- orderPosition.setAltitude("0");
- orderPosition.setDirectionAngle("0");
- //先计算里程,在存储最新位置
- orderPosition.setInsertTime(new Date());
- orderPositions.add(orderPosition);
+
+ String toLonLat = "";
+ List<OrderPosition> orderPositions = new ArrayList<>();
+ for (Object o : points) {
+ String s = JSONObject.toJSONString(o);
+ JSONObject obj = JSONObject.parseObject(s);
+ String fromLonLat = obj.getString("location");
+ String[] split = fromLonLat.split(",");
+ Long locatetime = obj.getLong("locatetime");
+ Date date = new Date(locatetime);
+ if(date.after(orderPrivateCar.getStartServiceTime()) && date.before(orderPrivateCar.getEndServiceTime())){
+ // 封装定位文件里的单个定位对象
+ OrderPosition orderPosition = new OrderPosition();
+ orderPosition.setOrderId(orderId);
+ orderPosition.setOrderType(1);
+ orderPosition.setDriverId(orderPrivateCar.getDriverId());
+ orderPosition.setLat(split[1]);
+ orderPosition.setLon(split[0]);
+ orderPosition.setAltitude("0");
+ orderPosition.setDirectionAngle("0");
+ //先计算里程,在存储最新位置
+ orderPosition.setInsertTime(new Date());
+ orderPositions.add(orderPosition);
+ if(StringUtils.hasLength(fromLonLat) && StringUtils.hasLength(toLonLat)){
+ String[] from = fromLonLat.split(",");
+ String[] to = toLonLat.split(",");
+ GlobalCoordinates source = new GlobalCoordinates(Double.valueOf(from[1]), Double.valueOf(from[0]));
+ GlobalCoordinates target = new GlobalCoordinates(Double.valueOf(to[1]), Double.valueOf(to[0]));
+ double WGS84 = getDistanceMeter(source, target, Ellipsoid.WGS84);
+ sum += WGS84;
+ }
+ toLonLat = fromLonLat;
+ }
+ }
+
+ //存储轨迹
+ // 将数据存储到文件中
+ File file = new File(filePath + orderId + "_" + 1 + ".txt");
+ if(!file.exists()){
+ file.getParentFile().mkdirs();
+ file.createNewFile();
+ }
+ //写入相应的文件
+ PrintWriter out = new PrintWriter(new FileWriter(file));
+ out.write(JSON.toJSONString(orderPositions));
+ out.flush();
+ out.close();
+ }catch (Exception e){
+ e.printStackTrace();
+ System.err.println("查询高德轨迹出错,使用本地轨迹计算");
+ List<OrderPosition> list = orderPositionService.queryPosition(orderId, 1);
+ String fromLonLat = "";
+ for (OrderPosition orderPosition : list) {
+ String toLonLat = orderPosition.getLon() + "," + orderPosition.getLat();
if(StringUtils.hasLength(fromLonLat) && StringUtils.hasLength(toLonLat)){
String[] from = fromLonLat.split(",");
String[] to = toLonLat.split(",");
GlobalCoordinates source = new GlobalCoordinates(Double.valueOf(from[1]), Double.valueOf(from[0]));
GlobalCoordinates target = new GlobalCoordinates(Double.valueOf(to[1]), Double.valueOf(to[0]));
double WGS84 = getDistanceMeter(source, target, Ellipsoid.WGS84);
- System.err.println("WGS84坐标系计算结果:"+WGS84 + "米");
sum += WGS84;
}
- toLonLat = fromLonLat;
+ fromLonLat = toLonLat;
}
}
-
- //存储轨迹
- // 将数据存储到文件中
- File file = new File(filePath + orderId + "_" + 1 + ".txt");
- if(!file.exists()){
- file.getParentFile().mkdirs();
- file.createNewFile();
- }
- //写入相应的文件
- PrintWriter out = new PrintWriter(new FileWriter(file));
- out.write(JSON.toJSONString(orderPositions));
- out.flush();
- out.close();
-
orderPrivateCar.setMileage(sum);
orderPrivateCar.setIsAbnormal(0);
-
- //获取预估里程,使用预估里程作为行驶里程计算金额
-// String origins = orderPrivateCar.getStartLon() + "," + orderPrivateCar.getStartLat();
-// String destination = orderPrivateCar.getGetoffLon() + "," + orderPrivateCar.getGetoffLat();
-// Map<String, String> distance = gdMapElectricFenceUtil.getDistance(origins, destination, 1);
-// Double distance1 = Double.valueOf(distance.get("distance"));
-// if(distance1 - sum > 1000){
-// orderPrivateCar.setMileage(distance1);
-// orderPrivateCar.setIsAbnormal(1);
-// }else{
-// orderPrivateCar.setMileage(sum);
-// orderPrivateCar.setIsAbnormal(0);
-// }
break;
}
this.updateById(orderPrivateCar);
--
Gitblit v1.7.1