From e961d2daa7f0fab9257ec411491cb23ab8a6c919 Mon Sep 17 00:00:00 2001 From: wzp <2040239371@qq.com> Date: 星期四, 22 五月 2025 17:42:55 +0800 Subject: [PATCH] fix: 修复地址不显示的问题 --- ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleGpsController.java | 265 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 230 insertions(+), 35 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleGpsController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleGpsController.java index beaa2d0..145b63d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleGpsController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleGpsController.java @@ -1,13 +1,11 @@ package com.ruoyi.web.controller.system; import java.util.*; +import java.text.SimpleDateFormat; +import java.text.ParseException; -import com.ruoyi.system.domain.DispatchOrd; -import com.ruoyi.system.domain.TbOrders; -import com.ruoyi.system.domain.TbVehicleOrder; -import com.ruoyi.system.service.IDispatchOrdService; -import com.ruoyi.system.service.ITbOrdersService; -import com.ruoyi.system.service.ITbVehicleOrderService; +import com.ruoyi.system.domain.*; +import com.ruoyi.system.service.*; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; @@ -24,8 +22,6 @@ import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; -import com.ruoyi.system.domain.VehicleGps; -import com.ruoyi.system.service.IVehicleGpsService; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; @@ -47,6 +43,15 @@ @Autowired private ITbOrdersService tbOrdersService; + @Autowired + private IGpsCollectService gpsCollectService; + + @Autowired + private IVehicleInfoService vehicleInfoService; + + @Autowired + private ICmsGpsCollectService cmsGpsCollectService; + /** * 鏌ヨ杞﹁締GPS鍧愭爣鍒楄〃 */ @@ -55,7 +60,12 @@ public TableDataInfo list(VehicleGps vehicleGps) { startPage(); - // 璁剧疆鎸夋椂闂村�掑簭鎺掑簭 +// String vehicleNo=vehicleGps.getVehicleNo(); +// String beginTime=vehicleGps.getBeginTime(); +// String endTime=vehicleGps.getEndTime(); +// return this.getAnonymousTracks(vehicleNo,beginTime,endTime); +// +// // 璁剧疆鎸夋椂闂村�掑簭鎺掑簭 vehicleGps.setOrderByColumn("collect_time"); vehicleGps.setIsAsc("desc"); List<VehicleGps> list = vehicleGpsService.selectVehicleGpsList(vehicleGps); @@ -80,40 +90,65 @@ if(!Objects.equals(tbVehicleOrder.getStatus(), "0")) { //闈�0琛ㄧず璁㈠崟瀹屾垚浜嗐�� + try { + TbOrders tbOrders = tbOrdersService.selectTbOrdersByOrderID(vehicleGps.getOrderId()); + if (tbOrders == null) { + return getDataTable(new ArrayList<>()); + } + + DispatchOrd dispatchOrd = dispatchOrdService.selectDispatchOrdByServiceOrdIDDt(tbOrders.getServiceOrdID()); + if (dispatchOrd == null) { + return getDataTable(new ArrayList<>()); + } + + String vehicleNo = tbVehicleOrder.getVehicle(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String beginTime= sdf.format(dispatchOrd.getDispatchOrdStartDate()); + String endTime= sdf.format(dispatchOrd.getDispatchOrdUpdateTime()); + //濡傛灉璁㈠崟娌″畬鎴愶紝 endTime涓哄綋鍓嶆椂闂达紱濡備綍璁㈠崟宸茬粡瀹屾垚浜嗭紝鐢ㄨ鍗曠殑缁撴潫鏃堕棿銆� + + return this.getAnonymousTracks(vehicleNo,beginTime,endTime); +// Map<String, Object> params = new HashMap<>(); +// params.put("beginTime", dispatchOrd.getDispatchOrdStartDate()); +// params.put("endTime", dispatchOrd.getDispatchOrdUpdateTime()); +// +// vehicleGps.setVehicleNo(tbVehicleOrder.getVehicle()); +// startPage(); +// // 璁剧疆鎸夋椂闂村�掑簭鎺掑簭 +// vehicleGps.setOrderByColumn("collect_time"); +// vehicleGps.setIsAsc("desc"); +// List<VehicleGps> list = vehicleGpsService.selectVehicleGpsList(vehicleGps); +// return getDataTable(list); + } + catch (Exception ex) + { + logger.error("宸插畬鎴愮殑璁㈠崟鏌ヨ鍦板浘寮傚父锛歿}",ex.getMessage()); + return getDataTable(new ArrayList<>()); + } + }else{ TbOrders tbOrders = tbOrdersService.selectTbOrdersByOrderID(vehicleGps.getOrderId()); - if(tbOrders==null) - { + if (tbOrders == null) { return getDataTable(new ArrayList<>()); } - - DispatchOrd dispatchOrd = dispatchOrdService.selectDispatchOrdByServiceOrdIDDt(tbOrders.getServiceOrdID()); - if(dispatchOrd==null) - { + if (dispatchOrd == null) { return getDataTable(new ArrayList<>()); } - - Map<String, Object> params = new HashMap<>(); - params.put("beginTime",dispatchOrd.getDispatchOrdStartDate()); - params.put("endTime",dispatchOrd.getDispatchOrdUpdateTime()); - - vehicleGps.setVehicleNo(tbVehicleOrder.getVehicle()); - startPage(); - // 璁剧疆鎸夋椂闂村�掑簭鎺掑簭 - vehicleGps.setOrderByColumn("collect_time"); - vehicleGps.setIsAsc("desc"); - List<VehicleGps> list = vehicleGpsService.selectVehicleGpsList(vehicleGps); - return getDataTable(list); + String vehicleNo = tbVehicleOrder.getVehicle(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String beginTime= sdf.format(dispatchOrd.getDispatchOrdStartDate()); + String endTime= sdf.format(new Date()); + return this.getAnonymousTracks(vehicleNo,beginTime,endTime); +// +// vehicleGps.setVehicleNo(tbVehicleOrder.getVehicle()); +// startPage(); +// // 璁剧疆鎸夋椂闂村�掑簭鎺掑簭 +// vehicleGps.setOrderByColumn("collect_time"); +// vehicleGps.setIsAsc("desc"); +// List<VehicleGps> list = vehicleGpsService.selectVehicleGpsList(vehicleGps); +// return getDataTable(list); } - - vehicleGps.setVehicleNo(tbVehicleOrder.getVehicle()); - startPage(); - // 璁剧疆鎸夋椂闂村�掑簭鎺掑簭 - vehicleGps.setOrderByColumn("collect_time"); - vehicleGps.setIsAsc("desc"); - List<VehicleGps> list = vehicleGpsService.selectVehicleGpsList(vehicleGps); - return getDataTable(list); } /** @@ -169,4 +204,164 @@ public AjaxResult remove(@PathVariable Long[] gpsIds) { return toAjax(vehicleGpsService.deleteVehicleGpsByIds(gpsIds)); } + + /** + * 鏌ヨ杞﹁締鍘嗗彶杞ㄨ抗 + */ + @PreAuthorize("@ss.hasPermi('system:gps:query')") + @GetMapping("/tracks") + public TableDataInfo getTracks(String vehicleNo, String beginTime, String endTime) { + return getAnonymousTracks(vehicleNo, beginTime, endTime); + } + + + /** + * 鍖垮悕鏌ヨ杞﹁締鍘嗗彶杞ㄨ抗 + */ + @Anonymous() + @GetMapping("/anonymousTracks") + public TableDataInfo getAnonymousTracks(String vehicleNo, String beginTime, String endTime) { + try { + // 閫氳繃杞︾墝鍙疯幏鍙栬澶嘔D + VehicleInfo vehicleInfo = vehicleInfoService.selectVehicleInfoByPlateNumber(vehicleNo); + if (vehicleInfo == null) { + + // throw new Error("鏈壘鍒拌杞﹁締瀵瑰簲鐨凣PS璁惧"); + return getDataTable(new ArrayList<>()); + } + + // 澶勭悊寮�濮嬫椂闂� + beginTime = beginTime.replace("T", " ").replace(" ","%20"); + if (beginTime.split(":").length == 2) { // 鍙湁灏忔椂鍜屽垎閽� + beginTime += ":00"; + } + + // 澶勭悊缁撴潫鏃堕棿 + endTime = endTime.replace("T", " ").replace(" ","%20"); + if (endTime.split(":").length == 2) { // 鍙湁灏忔椂鍜屽垎閽� + endTime += ":59"; + } + + List<GpsTrackPoint> trackPoints = new ArrayList<>(); + + //濡傛灉骞冲彴鏄痗ms锛屽垯璋冪敤cms鐨勬帴鍙� + if(vehicleInfo.getPlatformCode().equals("CMS")) + { + + CmsTrackDetailResponse response = cmsGpsCollectService.queryTrackDetail( + vehicleInfo.getDeviceId(), // 璁惧鍙� + beginTime, // 寮�濮嬫椂闂� + endTime, // 缁撴潫鏃堕棿 + null, // 璺濈锛堝彲閫夛級 + null, // 鍋滆溅鏃堕暱锛堝彲閫夛級 + 1, // 瑙f瀽鍦扮悊浣嶇疆 + null, // 褰撳墠椤电爜锛堝彲閫夛級 + null, // 姣忛〉璁板綍鏁帮紙鍙�夛級 + 2 // 鍦板浘绫诲瀷锛�2锛氱櫨搴﹀湴鍥撅級 + ); + + if (response.getResult() != 0) { + throw new Error("鏌ヨCMS杞ㄨ抗澶辫触"); + } + + // 杞崲CMS杞ㄨ抗鐐逛负缁熶竴鏍煎紡 + if (response.getTracks() != null) { + for (CmsTrackDetailResponse.CmsTrackPoint point : response.getTracks()) { + GpsTrackPoint trackPoint = new GpsTrackPoint(); + trackPoint.setVehicleNo(point.getVid()); + trackPoint.setDeviceId(point.getId()); + + //缁忓害绾害涓虹┖鏃讹紝璺宠繃 + if(point.getMlng()==null || point.getMlat()==null) + { + continue; + } + + // 缁忓害锛屼娇鐢ㄤ笁鍏冭繍绠楃 + trackPoint.setLongitude(point.getMlng() != null ? Double.parseDouble(point.getMlng()) : 0.0); + + // 绾害锛屼娇鐢ㄤ笁鍏冭繍绠楃 + trackPoint.setLatitude(point.getMlat() != null ? Double.parseDouble(point.getMlat()) : 0.0); + + // 閫熷害锛岀洿鎺ヤ娇鐢╥nt杞琩ouble + trackPoint.setSpeed(point.getSp() > 0 ? (double)point.getSp() : 0.0); + + // 鏂瑰悜锛屼娇鐢ㄤ笁鍏冭繍绠楃澶勭悊 + trackPoint.setCourse(point.getFt() > 0 ? point.getFt() : 0); + + // ACC鐘舵�侊紝浣跨敤涓夊厓杩愮畻绗﹀鐞� + trackPoint.setAccStatus(point.getAc() > 0 ? point.getAc() : 0); + + // 鍦ㄧ嚎鐘舵�侊紝浣跨敤涓夊厓杩愮畻绗﹀鐞� + trackPoint.setOnlineStatus(point.getNet() > 0 ? point.getNet() : 0); + trackPoint.setAddress(point.getPs()); + + // 涓婃姤鏃堕棿锛岀洿鎺ヤ娇鐢ㄥ瓧绗︿覆 + trackPoint.setReportTime(point.getGt() != null ? point.getGt() : new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); + + trackPoints.add(trackPoint); + } + } + } + else { + + // 鏋勫缓鏌ヨ璇锋眰 + GpsTrackQueryRequest request = new GpsTrackQueryRequest(); + request.setDeviceid(vehicleInfo.getDeviceId()); + request.setBegintime(beginTime); + request.setEndtime(endTime); + request.setTimezone(8); // 涓浗鏃跺尯 + + // 鏌ヨ杞ㄨ抗 + GpsTrackQueryResponse response = gpsCollectService.queryTracks(request); + if (response.getStatus() != 0) { + throw new Error("鏌ヨ杞ㄨ抗澶辫触锛�" + response.getCause()); + } + + // 杞崲GPS51杞ㄨ抗鐐逛负缁熶竴鏍煎紡 + if (response.getRecords() != null) { + for (GpsTrackPoint point : response.getRecords()) { + GpsTrackPoint trackPoint = new GpsTrackPoint(); + trackPoint.setVehicleNo(vehicleNo); + trackPoint.setDeviceId(vehicleInfo.getDeviceId()); + trackPoint.setLongitude(point.getLongitude()); // 缁忓害 + trackPoint.setLatitude(point.getLatitude()); // 绾害 + trackPoint.setSpeed(point.getSpeed()); // 閫熷害 + trackPoint.setCourse(point.getCourse()); // 鏂瑰悜 + trackPoint.setReportTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(point.getUpdatetime()))); // 涓婃姤鏃堕棿 + trackPoints.add(trackPoint); + } + } + } + //杞崲鎴怢ist<VehicleGps> + List<VehicleGps> vehicleGpsList = new ArrayList<>(); + for(GpsTrackPoint trackPoint : trackPoints) + { + VehicleGps vehicleGps = new VehicleGps(); + vehicleGps.setVehicleNo(trackPoint.getVehicleNo()); + vehicleGps.setDeviceId(trackPoint.getDeviceId()); + vehicleGps.setLongitude(trackPoint.getLongitude()); + vehicleGps.setLatitude(trackPoint.getLatitude()); + vehicleGps.setSpeed(trackPoint.getSpeed()); + //鏂瑰悜 + vehicleGps.setDirection(Double.valueOf(trackPoint.getCourse())); + //鍦板潃 + vehicleGps.setAddress(trackPoint.getAddress()); + vehicleGps.setCollectTime(trackPoint.getReportTime()); + //GPS骞冲彴澶勭悊鏃堕棿 + vehicleGps.setPlatformProcessTime(trackPoint.getReportTime()); + vehicleGps.setDeviceReportTime(trackPoint.getReportTime()); + vehicleGpsList.add(vehicleGps); + } + //鏃堕棿鍊掑簭鎺掑簭 + vehicleGpsList.sort(Comparator.comparing(VehicleGps::getDeviceReportTime).reversed()); + + //杩斿洖杞﹁締Gps鍒楄〃 + return getDataTable(vehicleGpsList); + // return success(vehicleGpsList); + } catch (Exception e) { + logger.error("鏌ヨ杞﹁締杞ㄨ抗寮傚父", e); + throw new Error("鏌ヨ杞﹁締杞ㄨ抗澶辫触锛�" + e.getMessage()); + } + } } \ No newline at end of file -- Gitblit v1.9.1