From 0ee0703b50febb33ab328b8eea851e7246fde6b4 Mon Sep 17 00:00:00 2001 From: 18650502300 <18650502300@163.com> Date: Wed, 29 May 2024 16:05:48 +0800 Subject: [PATCH] =?UTF-8?q?1.=E8=81=94=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../iot/receive/ReceiveController.java | 51 ++++++++++--------- .../com/ruoyi/common/utils/map/GeoUtils.java | 28 ++++++++++ .../service/impl/EtOrderServiceImpl.java | 2 +- .../resources/mapper/system/EtOrderMapper.xml | 4 +- 4 files changed, 59 insertions(+), 26 deletions(-) diff --git a/electripper-admin/src/main/java/com/ruoyi/web/controller/iot/receive/ReceiveController.java b/electripper-admin/src/main/java/com/ruoyi/web/controller/iot/receive/ReceiveController.java index 7fb480d..b555a38 100644 --- a/electripper-admin/src/main/java/com/ruoyi/web/controller/iot/receive/ReceiveController.java +++ b/electripper-admin/src/main/java/com/ruoyi/web/controller/iot/receive/ReceiveController.java @@ -160,33 +160,36 @@ public class ReceiveController { Integer status = value.getStatus(); if(status == 1){//上电运行 log.info("上电运行:" +logEntry.getDevName()); - //获取当前正在骑行中的订单 - EtOrder etOrder = etOrderService.getCurrentOrder(device.getSn()); - JSONArray jsonArray; - if(StrUtil.isNotBlank(etOrder.getTripRouteStr())){ - jsonArray = JSON.parseArray(etOrder.getTripRouteStr()); - }else{ - jsonArray = new JSONArray(); - } - JSONArray newPoint = new JSONArray(); - newPoint.add(value.getLon()); - newPoint.add(value.getLat()); - jsonArray.add(newPoint); - jsonArray.toJSONString(); + String lon = value.getLon(); + String lat = value.getLat(); + if(StrUtil.isNotBlank(lon) && StrUtil.isNotBlank(lat)){ + //获取当前正在骑行中的订单 + EtOrder etOrder = etOrderService.getCurrentOrder(device.getSn()); + JSONArray jsonArray; + if(StrUtil.isNotBlank(etOrder.getTripRouteStr())){ + jsonArray = JSON.parseArray(etOrder.getTripRouteStr()); + }else{ + jsonArray = new JSONArray(); + } + JSONArray newPoint = new JSONArray(); + newPoint.add(new BigDecimal(lon)); + newPoint.add(new BigDecimal(lat)); + jsonArray.add(newPoint); + jsonArray.toJSONString(); - log.info("更新行程jsonArray:" +jsonArray.toJSONString()); - etOrder.setTripRouteStr(jsonArray.toJSONString()); - Geometry geometry = GeoUtils.toGeometry(jsonArray.toJSONString()); - String wkt = GeoUtils.wkt(geometry); - etOrder.setTripRoute(wkt); - int updateEtOrder = etOrderService.updateEtOrder(etOrder); - if (updateEtOrder > 0) { - log.info("更新行程线路成功==========================>" +logEntry.getDevName()); - }else{ - log.info("更新行程线路失败==========================>" +logEntry.getDevName()); + log.info("更新行程jsonArray:" +jsonArray.toJSONString()); + etOrder.setTripRouteStr(jsonArray.toJSONString()); + Geometry geometry = GeoUtils.toGeometryByLinearRing(jsonArray.toJSONString()); + String wkt = GeoUtils.wkt(geometry); + etOrder.setTripRoute(wkt); + int updateEtOrder = etOrderService.updateEtOrder(etOrder); + if (updateEtOrder > 0) { + log.info("更新行程线路成功==========================>" +logEntry.getDevName()); + }else{ + log.info("更新行程线路失败==========================>" +logEntry.getDevName()); + } } } - /** 5.低于电量(%)不得骑行,声音播报 */ if(electricQuantity <= model.getLowBatteryReminder()){ //发送低电量播报指令 diff --git a/electripper-common/src/main/java/com/ruoyi/common/utils/map/GeoUtils.java b/electripper-common/src/main/java/com/ruoyi/common/utils/map/GeoUtils.java index 87c8afa..95a0fa4 100644 --- a/electripper-common/src/main/java/com/ruoyi/common/utils/map/GeoUtils.java +++ b/electripper-common/src/main/java/com/ruoyi/common/utils/map/GeoUtils.java @@ -125,6 +125,34 @@ public class GeoUtils { } } + /** + * json转Geometry对象 直线 + * 格式:[[120.356267,26.941506],[120.357168,26.941262],[120.35697,26.940564]] + * */ + public Geometry toGeometryByLinearRing(String json) { + if (StringUtils.isBlank(json)) { + return null; + } + try { + // 将json转成二位数组 + double[][] coordinates = transform(json); + log.info("coordinates:{}", JSON.toJSONString(coordinates)); + // 构建坐标数组 + Coordinate[] points = new Coordinate[coordinates.length]; + for (int i = 0; i < coordinates.length; i++) { + double lon = coordinates[i][0]; + double lat = coordinates[i][1]; + points[i] = new Coordinate(lon, lat); + } + // 创建LineString对象 + LineString lineString = GEOMETRY_FACTORY.createLineString(points); + return lineString; + } catch (Exception e) { + log.warn(e.getMessage(), e); + return null; + } + } + /** * 将json转成二位数组 * */ diff --git a/electripper-system/src/main/java/com/ruoyi/system/service/impl/EtOrderServiceImpl.java b/electripper-system/src/main/java/com/ruoyi/system/service/impl/EtOrderServiceImpl.java index 5f1a1c1..10a142c 100644 --- a/electripper-system/src/main/java/com/ruoyi/system/service/impl/EtOrderServiceImpl.java +++ b/electripper-system/src/main/java/com/ruoyi/system/service/impl/EtOrderServiceImpl.java @@ -267,7 +267,7 @@ public class EtOrderServiceImpl implements IEtOrderService */ @Override public EtOrder getCurrentOrder(String sn) { - if(ObjectUtil.isNotNull(asDeviceService.selectAsDeviceBySn(sn))){ + if(ObjectUtil.isNotNull(asDeviceMapper.selectAsDeviceBySn(sn))){ EtOrder etOrder = new EtOrder(); etOrder.setSn(sn); etOrder.setStatus(ServiceConstants.ORDER_STATUS_RIDING); diff --git a/electripper-system/src/main/resources/mapper/system/EtOrderMapper.xml b/electripper-system/src/main/resources/mapper/system/EtOrderMapper.xml index c74b61f..894fcbe 100644 --- a/electripper-system/src/main/resources/mapper/system/EtOrderMapper.xml +++ b/electripper-system/src/main/resources/mapper/system/EtOrderMapper.xml @@ -76,7 +76,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" o.unlock_time, o.return_time, o.rule_end_time, - o.return_type + o.return_type, + AsText(o.trip_route), + o.trip_route_str FROM et_order o LEFT JOIN