From 228ad2f5121d03b5ed60ef2bb3ccc0fb56139e9a Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期五, 28 二月 2025 12:53:46 +0800 Subject: [PATCH] jtt808初始化 --- server/platform/src/main/java/com/doumee/api/business/LocksController.java | 2 server/services/src/main/resources/application-pro.yml | 1 server/web/src/main/java/com/doumee/jtt808/web/service/Jtt808Service.java | 10 +++ server/services/src/main/java/com/doumee/core/dingding/DingDingNotice.java | 12 --- server/services/src/main/java/com/doumee/core/utils/PositionUtil.java | 123 ++++++++++++++++++++++++++++++++++++++++- server/services/src/main/java/com/doumee/service/business/impl/LocksServiceImpl.java | 1 6 files changed, 134 insertions(+), 15 deletions(-) diff --git a/server/platform/src/main/java/com/doumee/api/business/LocksController.java b/server/platform/src/main/java/com/doumee/api/business/LocksController.java index dc1dab7..1b0282a 100644 --- a/server/platform/src/main/java/com/doumee/api/business/LocksController.java +++ b/server/platform/src/main/java/com/doumee/api/business/LocksController.java @@ -120,7 +120,7 @@ @ApiOperation("鑾峰彇閿佹鍣ㄥ皬绋嬪簭浜岀淮鐮�") @GetMapping("/findLockBase") - public ApiResponse<List<Locks>> findLockBase64List(@RequestParam String siteId,@RequestParam Integer fouce){ + public ApiResponse<List<Locks>> findLockBase64List(@RequestParam String siteId,@RequestParam(required = false) Integer fouce){ Locks locks = new Locks(); locks.setSiteId(siteId); locks.setFource(fouce); diff --git a/server/services/src/main/java/com/doumee/core/dingding/DingDingNotice.java b/server/services/src/main/java/com/doumee/core/dingding/DingDingNotice.java index 59cf41b..190910f 100644 --- a/server/services/src/main/java/com/doumee/core/dingding/DingDingNotice.java +++ b/server/services/src/main/java/com/doumee/core/dingding/DingDingNotice.java @@ -99,16 +99,8 @@ return; } desc= desc.replace("{杞﹁締缂栧彿}",bikeCode); - if(StringUtils.isNotBlank(place)){ - desc= desc.replace("{瀹氫綅浣嶇疆}",place); - }else{ - desc=desc.replace("{瀹氫綅浣嶇疆}","鏈煡"); - } - if(StringUtils.isNotBlank(siteName)){ - desc= desc.replace("{绔欑偣鍚嶇О}",siteName); - }else{ - desc=desc.replace("{绔欑偣鍚嶇О}","鏈煡"); - } + desc= desc.replace("{瀹氫綅浣嶇疆}",StringUtils.defaultString(place,"鏈煡")); + desc= desc.replace("{绔欑偣鍚嶇О}",StringUtils.defaultString(siteName,"鏈煡")); sendNoticeNew(desc,token,robotCode,chatToken); } diff --git a/server/services/src/main/java/com/doumee/core/utils/PositionUtil.java b/server/services/src/main/java/com/doumee/core/utils/PositionUtil.java index d311bd5..2985e3c 100644 --- a/server/services/src/main/java/com/doumee/core/utils/PositionUtil.java +++ b/server/services/src/main/java/com/doumee/core/utils/PositionUtil.java @@ -39,18 +39,135 @@ } return null; } + /** + * 妞悆鍙傛暟 + */ + private static double pi = 3.14159265358979324; + /** + * 鍗槦妞悆鍧愭爣鎶曞奖鍒板钩闈㈠湴鍥惧潗鏍囩郴鐨勬姇褰卞洜瀛� + */ + private static double a = 6378245.0; + /** + * 妞悆鐨勫亸蹇冪巼 + */ + private static double ee = 0.00669342162296594323; + /** + * 缁忕含搴� GPS杞珮寰� + * + * @param wgLon GPS缁忓害 + * @param wgLat GPS缁村害 + * @return 杞寲鍚庣殑缁忕含搴﹀潗鏍� + */ + public static AMap transform(double wgLon, double wgLat) { + if (outOfChina(wgLat, wgLon)) { + return new AMap(wgLon, wgLat); + } + + double dLat = transformLat(wgLon - 105.0, wgLat - 35.0); + double dLon = transformLon(wgLon - 105.0, wgLat - 35.0); + double radLat = wgLat / 180.0 * pi; + double magic = Math.sin(radLat); + magic = 1 - ee * magic * magic; + double sqrtMagic = Math.sqrt(magic); + dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi); + dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi); + double transLat = wgLat + dLat; + double transLon = wgLon + dLon; + return new AMap(transLon, transLat); + } + + /** + * 鍒ゆ柇鏄惁涓哄浗澶栧潗鏍囷紝锛屼笉鍦ㄥ浗鍐呬笉鍋氬亸绉� + * + * @param lat + * @param lon + * @return + */ + private static Boolean outOfChina(double lat, double lon) { + if (lon < 72.004 || lon > 137.8347) + return true; + if (lat < 0.8293 || lat > 55.8271) + return true; + return false; + } + + /** + * 绾害杞崲 + * + * @param x + * @param y + * @return + */ + private static double transformLat(double x, double y) { + double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x)); + ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0; + ret += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0; + ret += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0; + return ret; + } + + /** + * 缁忓害杞崲 + * + * @param x + * @param y + * @return + */ + private static double transformLon(double x, double y) { + double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x)); + ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0; + ret += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0; + ret += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0 * pi)) * 2.0 / 3.0; + return ret; + } + + /** + * 楂樺痉缁忕含搴︾被 + */ + public static class AMap { + /** + * 缁忓害 + */ + private double longitude; + + /** + * 缁村害 + */ + private double latitude; + + public AMap(double longitude, double latitude) { + this.longitude = longitude; + this.latitude = latitude; + } + + public double getLongitude() { + return longitude; + } + + public double getLatitude() { + return latitude; + } + } public static void main(String[] args) { - String str ="[{\"lat\": 31.71383446224521, \"lng\": 117.39342857107226, \"height\": 0}, {\"lat\": 31.71393087373135, \"lng\": 117.39402357524818, \"height\": 0}, {\"lat\": 31.713593433089077, \"lng\": 117.39433170240886, \"height\": 0}, {\"lat\": 31.713280450806966, \"lng\": 117.39358710879355, \"height\": 0}]"; + String str ="[{\"lat\": 31.71383446224521, \"lng\": 117.39342857107226, \"height\": 0}, " + + "{\"lat\": 31.71393087373135, \"lng\": 117.39402357524818, \"height\": 0}, " + + "{\"lat\": 31.713593433089077, \"lng\": 117.39433170240886, \"height\": 0}," + + " {\"lat\": 31.713280450806966, \"lng\": 117.39358710879355, \"height\": 0}]"; TypeReference typeReference = new TypeReference<List<LocaltionDTO>>(){}; List<LocaltionDTO> array = JSONObject.parseObject(str, typeReference.getType()); if(array == null || array.size() ==0){ System.out.println("================="); } - System.out.println(isInPolygon(117.39, 31.71551600,array)); + System.out.println(isInPolygon( 117.393962,31.713690,array)); + AMap aMap = transform( 117.38823300, 31.71550000); + System.out.println(aMap.getLatitude()+""+aMap.getLongitude()); + System.out.println(isInPolygon( aMap.getLongitude(),aMap.getLatitude(),array)); } - /* "latitude": 31.71551600, + /* "latitude": 31.71553300, "longitude": 117.39, +117.393962,31.713690 + 31.71550000 117.38823300 */ /** * 鍒ゆ柇鍧愭爣鐐规槸鍚﹀湪澶氳竟褰㈠尯鍩熷唴 * diff --git a/server/services/src/main/java/com/doumee/service/business/impl/LocksServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/LocksServiceImpl.java index 59f4148..f789565 100644 --- a/server/services/src/main/java/com/doumee/service/business/impl/LocksServiceImpl.java +++ b/server/services/src/main/java/com/doumee/service/business/impl/LocksServiceImpl.java @@ -216,6 +216,7 @@ try { wxMiniUtilService.generateEbikeWXMiniCode(bikes, WxMiniConfig.wxMaService.getAccessToken(),prePath,code); }catch (Exception e){ + e.printStackTrace(); } if (StringUtils.isNotBlank(bikes.getImgurl())){ bikes.setEditor(loginUserInfo.getId()); diff --git a/server/services/src/main/resources/application-pro.yml b/server/services/src/main/resources/application-pro.yml index ac7e77f..acd8368 100644 --- a/server/services/src/main/resources/application-pro.yml +++ b/server/services/src/main/resources/application-pro.yml @@ -38,7 +38,6 @@ enabled: true # 绂佺敤swagger鏃剁殑閲嶅畾鍚戝湴鍧� redirect-uri: / - ########################寰俊鏀粯鐩稿叧閰嶇疆######################## wx: pay: diff --git a/server/web/src/main/java/com/doumee/jtt808/web/service/Jtt808Service.java b/server/web/src/main/java/com/doumee/jtt808/web/service/Jtt808Service.java index c77a7a0..a09a25e 100644 --- a/server/web/src/main/java/com/doumee/jtt808/web/service/Jtt808Service.java +++ b/server/web/src/main/java/com/doumee/jtt808/web/service/Jtt808Service.java @@ -330,6 +330,7 @@ if(m.getLongitude()!=0){ bike.setLongitude(new BigDecimal(m.getLongitude()).divide(new BigDecimal(1000000),8,BigDecimal.ROUND_HALF_UP)); } + updateMapLocation(bike); bike.setHeartDate(DateUtil.getDateFromLocalDateTime(m.getDeviceTime())); if(m.getAttributes()!=null ){ Battery battery= (Battery) m.getAttributes().get(AttributeKey.Battery); @@ -375,6 +376,15 @@ } } + private void updateMapLocation(Bikes bike) { + if(bike.getLatitude() == null || bike.getLongitude() == null){ + return; + } + PositionUtil.AMap aMap =PositionUtil.transform(bike.getLongitude().doubleValue() ,bike.getLatitude().doubleValue()); + bike.setLatitude(new BigDecimal(aMap.getLatitude())); + bike.setLongitude(new BigDecimal(aMap.getLongitude())); + } + public ConcurrentMap<String,Integer> cacheOpenLock = new ConcurrentReferenceHashMap<>(); -- Gitblit v1.9.3