From f1ba120c486048373505acfa74c3943c19be55ca Mon Sep 17 00:00:00 2001 From: wanglizhong <wlz> Date: 星期三, 14 五月 2025 15:23:20 +0800 Subject: [PATCH] feat:优化查看历史轨迹 --- ruoyi-system/src/main/resources/mapper/system/VehicleGpsMapper.xml | 9 ruoyi-system/src/main/java/com/ruoyi/system/domain/VehicleGps.java | 12 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/GpsCollectServiceImpl.java | 88 +++++ ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CleanVehicleGpsTask.java | 31 ++ ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CmsVehicleSyncTask.java | 43 +- ruoyi-system/src/main/java/com/ruoyi/system/domain/GpsTrackQueryRequest.java | 40 ++ ruoyi-system/src/main/java/com/ruoyi/system/service/IVehicleGpsService.java | 7 ruoyi-system/src/main/java/com/ruoyi/system/mapper/VehicleGpsMapper.java | 7 ruoyi-system/src/main/java/com/ruoyi/system/service/ICmsGpsCollectService.java | 19 + ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CmsGpsCollectServiceImpl.java | 80 +++++ ruoyi-system/src/main/java/com/ruoyi/system/domain/CmsTrackDetailResponse.java | 74 ++++ ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleGpsServiceImpl.java | 8 ruoyi-system/src/main/java/com/ruoyi/system/domain/GpsTrackQueryResponse.java | 42 ++ ruoyi-quartz/src/main/resources/sql/vehicle_gps_job.sql | 2 ruoyi-system/src/main/java/com/ruoyi/system/domain/GpsTrackPoint.java | 45 +++ sql/clean_gps.sql | 27 + ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/VehicleGpsController.java | 243 ++++++++++++++- ruoyi-system/src/main/java/com/ruoyi/system/domain/CmsVehicleDeviceListResponse.java | 64 +-- ruoyi-system/src/main/java/com/ruoyi/system/service/IGpsCollectService.java | 8 19 files changed, 762 insertions(+), 87 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 e54c9f9..f966940 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); @@ -92,32 +102,53 @@ return getDataTable(new ArrayList<>()); } - Map<String, Object> params = new HashMap<>(); - params.put("beginTime", dispatchOrd.getDispatchOrdStartDate()); - params.put("endTime", dispatchOrd.getDispatchOrdUpdateTime()); + 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涓哄綋鍓嶆椂闂达紱濡備綍璁㈠崟宸茬粡瀹屾垚浜嗭紝鐢ㄨ鍗曠殑缁撴潫鏃堕棿銆� - vehicleGps.setVehicleNo(tbVehicleOrder.getVehicle()); - startPage(); - // 璁剧疆鎸夋椂闂村�掑簭鎺掑簭 - vehicleGps.setOrderByColumn("collect_time"); - vehicleGps.setIsAsc("desc"); - List<VehicleGps> list = vehicleGpsService.selectVehicleGpsList(vehicleGps); - return getDataTable(list); + 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) { + 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(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); } /** @@ -173,4 +204,162 @@ 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璁惧"); + } + + // 澶勭悊寮�濮嬫椂闂� + 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 diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CleanVehicleGpsTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CleanVehicleGpsTask.java new file mode 100644 index 0000000..321d326 --- /dev/null +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CleanVehicleGpsTask.java @@ -0,0 +1,31 @@ +package com.ruoyi.quartz.task; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import com.ruoyi.system.service.IVehicleGpsService; + +/** + * 娓呯悊杞﹁締GPS鍘嗗彶鏁版嵁浠诲姟 + */ +@Component("cleanVehicleGpsTask") +public class CleanVehicleGpsTask { + private static final Logger log = LoggerFactory.getLogger(CleanVehicleGpsTask.class); + + @Autowired + private IVehicleGpsService vehicleGpsService; + + /** + * 娓呯悊杞﹁締GPS鍘嗗彶鏁版嵁 + */ + public void cleanVehicleGpsData() { + try { + log.info("寮�濮嬫竻鐞嗚溅杈咷PS鍘嗗彶鏁版嵁"); + int count = vehicleGpsService.deleteVehicleGpsBeforeDate(); + log.info("娓呯悊杞﹁締GPS鍘嗗彶鏁版嵁瀹屾垚锛屽叡娓呯悊{}鏉¤褰�", count); + } catch (Exception e) { + log.error("娓呯悊杞﹁締GPS鍘嗗彶鏁版嵁寮傚父", e); + } + } +} \ No newline at end of file diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CmsVehicleSyncTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CmsVehicleSyncTask.java index 6bd3d87..c5abe54 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CmsVehicleSyncTask.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/CmsVehicleSyncTask.java @@ -6,16 +6,13 @@ import java.util.List; import java.util.stream.Collectors; +import com.ruoyi.system.domain.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.system.domain.CmsVehicleDeviceResponse; -import com.ruoyi.system.domain.CmsVehicleLocationResponse; -import com.ruoyi.system.domain.VehicleGps; -import com.ruoyi.system.domain.VehicleInfo; import com.ruoyi.system.service.ICmsGpsCollectService; import com.ruoyi.system.service.IVehicleGpsService; import com.ruoyi.system.service.IVehicleInfoService; @@ -42,7 +39,7 @@ log.info("寮�濮嬪悓姝MS杞﹁締淇℃伅"); try { // 鑾峰彇CMS鎵�鏈夎溅杈嗕俊鎭� - CmsVehicleDeviceResponse response = cmsGpsCollectService.queryVehicleDevices(); + CmsVehicleDeviceListResponse response = cmsGpsCollectService.getDeviceByVehicle(null); if (response.getResult() != 0) { log.error("鑾峰彇CMS杞﹁締淇℃伅澶辫触"); return; @@ -50,10 +47,10 @@ // 鑾峰彇鎵�鏈塁MS杞﹁締鐨勮溅鐗屽彿 List<String> cmsPlateNos = new ArrayList<>(); - response.getVehicles().forEach(vehicle -> { - if (StringUtils.isNotEmpty(vehicle.getNm())) { + response.getDevices().forEach(vehicle -> { + if (StringUtils.isNotEmpty(vehicle.getVid())) { // 浠庤溅杈嗗悕绉颁腑鎻愬彇杞︾墝鍙凤紙鍋囪鏍煎紡涓�"鈽呰溅鐗屽彿锛堝湴鍖猴級"锛� - String plateNo =this.getPlateNo(vehicle.getNm()); + String plateNo =this.getPlateNo(vehicle.getVid()); cmsPlateNos.add(plateNo); } }); @@ -70,17 +67,29 @@ List<String> onlyCms=cmsPlateNos.stream().filter(e->!notCmsVehicles.contains(e)).collect((Collectors.toList())); Integer syncCarCount=0; - for(String e:onlyCms){ - VehicleInfo vehicleInfo = new VehicleInfo(); - vehicleInfo.setVehicleNo(e); - vehicleInfo.setPlatformCode("CMS"); - vehicleInfo.setStatus("0"); - //濡傛灉杞﹁締涓嶅瓨鍦紝鍒欐彃鍏� - if (vehicleInfoService.selectVehicleInfoList(vehicleInfo).size()==0) { + response.getDevices().stream().filter(e->onlyCms.contains(this.getPlateNo(e.getVid()))).forEach(vehicle->{ + String plateNo =this.getPlateNo(vehicle.getVid()); + + VehicleInfo vehicleInfo= vehicleInfoService.selectVehicleInfoByPlateNumber(plateNo); + if (vehicleInfo==null) { + vehicleInfo = new VehicleInfo(); + vehicleInfo.setVehicleNo(plateNo); + vehicleInfo.setDeviceId(vehicle.getDid()); + vehicleInfo.setPlatformCode("CMS"); + vehicleInfo.setStatus("0"); vehicleInfoService.insertVehicleInfo(vehicleInfo); - syncCarCount++; } - } + else{ + vehicleInfo.setVehicleNo(plateNo); + vehicleInfo.setDeviceId(vehicle.getDid()); + vehicleInfo.setPlatformCode("CMS"); + vehicleInfo.setStatus("0"); + vehicleInfoService.updateVehicleInfo(vehicleInfo); + } + + }); + + log.info("鎴愬姛鍚屾{}涓狢MS杞﹁締淇℃伅", syncCarCount); diff --git a/ruoyi-quartz/src/main/resources/sql/vehicle_gps_job.sql b/ruoyi-quartz/src/main/resources/sql/vehicle_gps_job.sql index 7d2de38..0f3f944 100644 --- a/ruoyi-quartz/src/main/resources/sql/vehicle_gps_job.sql +++ b/ruoyi-quartz/src/main/resources/sql/vehicle_gps_job.sql @@ -1,7 +1,7 @@ -- 杞﹁締鍚屾瀹氭椂浠诲姟 INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, update_by, update_time, remark) VALUES ('杞﹁締鍚屾浠诲姟', 'DEFAULT', 'vehicleSyncTask.syncVehicleInfo()', '0 0 */1 * * ?', '3', '1', '1', 'admin', sysdate(), 'admin', sysdate(), '姣忓皬鏃跺悓姝ヤ竴娆¤溅杈嗕俊鎭�'); - + -- GPS鍚屾瀹氭椂浠诲姟 INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, update_by, update_time, remark) VALUES ('GPS鍚屾浠诲姟', 'DEFAULT', 'gpsSyncTask.syncGpsData()', '0 */5 * * * ?', '3', '1', '1', 'admin', sysdate(), 'admin', sysdate(), '姣�5鍒嗛挓鍚屾涓�娆PS浣嶇疆淇℃伅'); \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/CmsTrackDetailResponse.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/CmsTrackDetailResponse.java new file mode 100644 index 0000000..bf33338 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/CmsTrackDetailResponse.java @@ -0,0 +1,74 @@ +package com.ruoyi.system.domain; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +/** + * CMS杞ㄨ抗鏌ヨ鍝嶅簲 + */ +@Data +public class CmsTrackDetailResponse implements Serializable{ + private int result; + private List<CmsTrackPoint> tracks; + private CmsPagination pagination; + + + /** + * CMS杞ㄨ抗鐐� + */ + @Data + public static class CmsTrackPoint implements Serializable{ + private String id; // 璁惧ID + private int lng; // 缁忓害 + private int lat; // 绾害 + private int ft; // 鏂瑰悜 + private int sp; // 閫熷害 + private String ol; // 娌归噺 + private String gt; // GPS鏃堕棿 + private int pt; // 瀹氫綅绫诲瀷 + private int dt; // 鏁版嵁绫诲瀷 + private int ac; // ACC鐘舵�� + private int fdt; // 鐤插姵椹鹃┒ + private int net; // 缃戠粶绫诲瀷 + private String gw; // 缃戝叧 + private String vid; // 杞﹁締杞︾墝 + private long s1; // 鐘舵��1 + private int s2; // 鐘舵��2 + private int s3; // 鐘舵��3 + private int s4; // 鐘舵��4 + private int t1; // 娓╁害1 + private int t2; // 娓╁害2 + private int t3; // 娓╁害3 + private int t4; // 娓╁害4 + private int hx; // 婀垮害 + private String mlng; // 鍦板浘缁忓害 + private String mlat; // 鍦板浘绾害 + private int pk; // 鍋滆溅鐘舵�� + private long lc; // 閲岀▼ + private int yl; // 娌归噺 + private String ps; // 浣嶇疆 + + } + + /** + * CMS鍒嗛〉淇℃伅 + */ + @Data + public static class CmsPagination implements Serializable { + private int totalPages; // 鎬婚〉鏁� + private int currentPage; // 褰撳墠椤� + private int pageRecords; // 姣忛〉璁板綍鏁� + private int totalRecords; // 鎬昏褰曟暟 + private String sortParams; // 鎺掑簭鍙傛暟 + private boolean hasNextPage; // 鏄惁鏈変笅涓�椤� + private boolean hasPreviousPage; // 鏄惁鏈変笂涓�椤� + private int nextPage; // 涓嬩竴椤� + private int previousPage; // 涓婁竴椤� + private int startRecord; // 寮�濮嬭褰� + + + + } +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/CmsVehicleDeviceListResponse.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/CmsVehicleDeviceListResponse.java index df25b7e..120754e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/CmsVehicleDeviceListResponse.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/CmsVehicleDeviceListResponse.java @@ -1,74 +1,60 @@ package com.ruoyi.system.domain; -import com.fasterxml.jackson.annotation.JsonProperty; -import java.io.Serializable; import java.util.List; /** - * CMS杞﹁締璁惧鍒楄〃鏌ヨ鍝嶅簲 + * CMS杞﹁締璁惧鍒楄〃鍝嶅簲 */ -public class CmsVehicleDeviceListResponse implements Serializable { - private static final long serialVersionUID = 1L; +public class CmsVehicleDeviceListResponse { + private int result; + private List<CmsVehicleDevice> devices; - /** 缁撴灉鐮� */ - @JsonProperty("result") - private Integer result; - - /** 璁惧鍒楄〃 */ - @JsonProperty("devices") - private List<VehicleDevice> devices; - - public Integer getResult() { + public int getResult() { return result; } - public void setResult(Integer result) { + public void setResult(int result) { this.result = result; } - public List<VehicleDevice> getDevices() { + public List<CmsVehicleDevice> getDevices() { return devices; } - public void setDevices(List<VehicleDevice> devices) { + public void setDevices(List<CmsVehicleDevice> devices) { this.devices = devices; } - public static class VehicleDevice { - /** 杞︾墝鍙� */ - @JsonProperty("vid") - private String vehicleId; + /** + * CMS杞﹁締璁惧淇℃伅 + */ + public static class CmsVehicleDevice { + private String vid; // 杞︾墝鍙� + private int type; // 璁惧绫诲瀷锛�1锛氳棰戣澶囷紝0锛欸PS璁惧锛� + private String did; // 璁惧鍙� - /** 璁惧绫诲瀷 */ - @JsonProperty("type") - private Integer type; - - /** 璁惧鍙� */ - @JsonProperty("did") - private String deviceId; - - public String getVehicleId() { - return vehicleId; + public String getVid() { + return vid; } - public void setVehicleId(String vehicleId) { - this.vehicleId = vehicleId; + public void setVid(String vid) { + this.vid = vid; } - public Integer getType() { + public int getType() { return type; } - public void setType(Integer type) { + public void setType(int type) { this.type = type; } - public String getDeviceId() { - return deviceId; + public String getDid() { + return did; } - public void setDeviceId(String deviceId) { - this.deviceId = deviceId; + public void setDid(String did) { + this.did = did; } } } \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/GpsTrackPoint.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/GpsTrackPoint.java new file mode 100644 index 0000000..0e19c30 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/GpsTrackPoint.java @@ -0,0 +1,45 @@ +package com.ruoyi.system.domain; + +import lombok.Data; + +import java.io.Serializable; + +/** + * GPS杞ㄨ抗鐐圭粺涓�鍝嶅簲鏍煎紡 + */ +@Data +public class GpsTrackPoint implements Serializable { + private String vehicleNo; // 杞︾墝鍙� + private Double longitude; // 缁忓害 + private Double latitude; // 绾害 + private Double speed; // 閫熷害 + private Integer direction; // 鏂瑰悜 + private String address; // 鍦扮悊浣嶇疆 + private String reportTime; // 涓婃姤鏃堕棿 + private String deviceId; // 璁惧ID + private Integer accStatus; // ACC鐘舵�� + private Integer onlineStatus; // 鍦ㄧ嚎鐘舵�� + private Integer powerStatus; // 鐢垫簮鐘舵�� + private Integer signalStrength;// 淇″彿寮哄害 + private Integer trackCount; // 杞ㄨ抗鐐规暟閲� + private Long starttime; // 寮�濮嬫椂闂� + private Long endtime; // 缁撴潫鏃堕棿 + private Integer trackid; // 杞ㄨ抗ID + private Long arrivedtime; // 鍒拌揪鏃堕棿 + private Long updatetime; // 鏇存柊鏃堕棿 + private Double altitude; // 娴锋嫈 + private Integer radius; // 鍗婂緞 + private Double recorderspeed; // 璁板綍浠�熷害 + private Integer totaldistance; // 鎬昏窛绂� + private Integer course; // 鏂瑰悜 + private Long status; // 鐘舵�� + private String strstatus; // 鐘舵�佹弿杩� + private String strstatusen; // 鐘舵�佽嫳鏂囨弿杩� + private String gotsrc; // 鏁版嵁鏉ユ簮 + private Integer rxlevel; // 淇″彿寮哄害 + private Integer gpsvalidnum; // GPS鏈夋晥鍗槦鏁� + + private Short reportmode; // 涓婃姤妯″紡 + + +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/GpsTrackQueryRequest.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/GpsTrackQueryRequest.java new file mode 100644 index 0000000..0286ddf --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/GpsTrackQueryRequest.java @@ -0,0 +1,40 @@ +package com.ruoyi.system.domain; + +public class GpsTrackQueryRequest { + private String deviceid; + private String begintime; + private String endtime; + private Integer timezone; + + public String getDeviceid() { + return deviceid; + } + + public void setDeviceid(String deviceid) { + this.deviceid = deviceid; + } + + public String getBegintime() { + return begintime; + } + + public void setBegintime(String begintime) { + this.begintime = begintime; + } + + public String getEndtime() { + return endtime; + } + + public void setEndtime(String endtime) { + this.endtime = endtime; + } + + public Integer getTimezone() { + return timezone; + } + + public void setTimezone(Integer timezone) { + this.timezone = timezone; + } +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/GpsTrackQueryResponse.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/GpsTrackQueryResponse.java new file mode 100644 index 0000000..62e2011 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/GpsTrackQueryResponse.java @@ -0,0 +1,42 @@ +package com.ruoyi.system.domain; + +import java.util.List; + +public class GpsTrackQueryResponse { + private int status; + private String cause; + private String deviceid; + private List<GpsTrackPoint> records; + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public String getCause() { + return cause; + } + + public void setCause(String cause) { + this.cause = cause; + } + + public String getDeviceid() { + return deviceid; + } + + public void setDeviceid(String deviceid) { + this.deviceid = deviceid; + } + + public List<GpsTrackPoint> getRecords() { + return records; + } + + public void setRecords(List<GpsTrackPoint> records) { + this.records = records; + } +} \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/VehicleGps.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/VehicleGps.java index a2b492b..daf5d6e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/VehicleGps.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/VehicleGps.java @@ -67,6 +67,9 @@ /** 鎺掑簭鍒� */ private String orderByColumn; + /** 鍦板潃 */ + private String address; + /** 鎺掑簭鐨勬柟鍚慸esc鎴栬�卆sc */ private String isAsc; @@ -211,6 +214,14 @@ return this.orderId; } + public void setAddress(String address) { + this.address = address; + } + + public String getAddress() { + return address; + } + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) @@ -227,6 +238,7 @@ .append("deviceReportTime", getDeviceReportTime()) .append("platformProcessTime", getPlatformProcessTime()) .append("createTime", getCreateTime()) + .append("address", getAddress()) .toString(); } } \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/VehicleGpsMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/VehicleGpsMapper.java index fb1310c..52f64bd 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/VehicleGpsMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/VehicleGpsMapper.java @@ -41,4 +41,11 @@ * 鏍规嵁杞︾墝鍙疯幏鍙栬溅杈咺D */ public Long getVehicleIdByNo(String vehicleNo); + + /** + * 鍒犻櫎鎸囧畾鏃ユ湡涔嬪墠鐨勮溅杈咷PS鏁版嵁 + * + * @return 鍒犻櫎鐨勮褰曟暟 + */ + public int deleteVehicleGpsBeforeDate(); } \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ICmsGpsCollectService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ICmsGpsCollectService.java index 782d0b0..131acd2 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ICmsGpsCollectService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ICmsGpsCollectService.java @@ -4,6 +4,7 @@ import com.ruoyi.system.domain.CmsVehicleDeviceResponse; import com.ruoyi.system.domain.CmsVehicleDeviceListResponse; import com.ruoyi.system.domain.CmsVehicleLocationResponse; +import com.ruoyi.system.domain.CmsTrackDetailResponse; /** * CMS GPS閲囬泦鏈嶅姟鎺ュ彛 @@ -44,4 +45,22 @@ * @return 杞﹁締浣嶇疆淇℃伅鍝嶅簲 */ CmsVehicleLocationResponse getVehicleLocation(String vehicleId, Integer toMap, Integer geoAddress, Integer currentPage, Integer pageRecords); + + /** + * 鑾峰彇璁惧鍘嗗彶杞ㄨ抗 + * + * @param devIdno 璁惧鍙� + * @param begintime 寮�濮嬫椂闂达紙鏍煎紡锛歽yyy-MM-dd HH:mm:ss锛� + * @param endtime 缁撴潫鏃堕棿锛堟牸寮忥細yyyy-MM-dd HH:mm:ss锛� + * @param distance 璺濈锛堝崟浣嶏細KM锛屽彲閫夛級 + * @param parkTime 鍋滆溅鏃堕暱锛堝崟浣嶏細绉掞紝鍙�夛級 + * @param geoaddress 鏄惁瑙f瀽鍦扮悊浣嶇疆锛�1锛氭槸锛屽彲閫夛級 + * @param currentPage 褰撳墠鏌ヨ椤电爜锛堝彲閫夛級 + * @param pageRecords 姣忛〉鏉℃暟锛堝彲閫夛級 + * @param toMap 鍦板浘缁忕含搴﹁浆鎹紙1锛氳胺姝屽湴鍥撅紝2锛氱櫨搴﹀湴鍥撅紝鍙�夛級 + * @return 鍘嗗彶杞ㄨ抗鍝嶅簲 + */ + CmsTrackDetailResponse queryTrackDetail(String devIdno, String begintime, String endtime, + Double distance, Integer parkTime, Integer geoaddress, Integer currentPage, + Integer pageRecords, Integer toMap); } \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IGpsCollectService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IGpsCollectService.java index f89c320..d0512fa 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/IGpsCollectService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IGpsCollectService.java @@ -32,4 +32,12 @@ * @return 璁惧鍙凤紝濡傛灉鏈壘鍒板垯杩斿洖null */ String getDeviceIdByPlateNumber(String plateNumber); + + /** + * 鎸夋椂闂存煡璇㈠巻鍙茶建杩� + * + * @param request 鏌ヨ璇锋眰 + * @return 杞ㄨ抗鏌ヨ鍝嶅簲 + */ + GpsTrackQueryResponse queryTracks(GpsTrackQueryRequest request); } \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/IVehicleGpsService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/IVehicleGpsService.java index 061954d..970c3ac 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/IVehicleGpsService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/IVehicleGpsService.java @@ -36,4 +36,11 @@ * 鍒犻櫎杞﹁締GPS鍧愭爣淇℃伅 */ public int deleteVehicleGpsById(Long gpsId); + + /** + * 鍒犻櫎鎸囧畾鏃ユ湡涔嬪墠鐨勮溅杈咷PS鏁版嵁 + * + * @return 鍒犻櫎鐨勮褰曟暟 + */ + public int deleteVehicleGpsBeforeDate(); } \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CmsGpsCollectServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CmsGpsCollectServiceImpl.java index 493f47d..2c6b036 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CmsGpsCollectServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/CmsGpsCollectServiceImpl.java @@ -6,6 +6,7 @@ import com.ruoyi.system.domain.CmsVehicleDeviceResponse; import com.ruoyi.system.domain.CmsVehicleDeviceListResponse; import com.ruoyi.system.domain.CmsVehicleLocationResponse; +import com.ruoyi.system.domain.CmsTrackDetailResponse; import com.ruoyi.system.domain.SysGpsConfig; import com.ruoyi.system.service.ICmsGpsCollectService; import com.ruoyi.system.service.IGpsConfigService; @@ -15,6 +16,8 @@ import org.springframework.stereotype.Service; import com.alibaba.fastjson.JSONObject; import java.util.Date; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; /** * CMS GPS閲囬泦鏈嶅姟瀹炵幇 @@ -115,13 +118,17 @@ } // 鏋勫缓璇锋眰URL - String url = baseUrlConfig.getDomain() + "/StandardApiAction_getDeviceByVehicle.action?jsession=" + baseUrlConfig.getToken(); + StringBuilder url = new StringBuilder(); + url.append(baseUrlConfig.getDomain()) + .append("/StandardApiAction_getDeviceByVehicle.action?jsession=") + .append(baseUrlConfig.getToken()); + if (vehicleId != null && !vehicleId.isEmpty()) { - url += "&vehiIdno=" + vehicleId; + url.append("&vehiIdno=").append(vehicleId); } // 鍙戦�佹煡璇㈣姹� - String response = HttpUtil.get(url,null); + String response = HttpUtils.sendGet(url.toString()); // 瑙f瀽鍝嶅簲 CmsVehicleDeviceListResponse deviceListResponse = JSONObject.parseObject(response, CmsVehicleDeviceListResponse.class); @@ -196,4 +203,71 @@ throw new RuntimeException("鑾峰彇杞﹁締浣嶇疆淇℃伅寮傚父锛�" + e.getMessage()); } } + + @Override + public CmsTrackDetailResponse queryTrackDetail(String devIdno, String begintime, String endtime, + Double distance, Integer parkTime, Integer geoaddress, Integer currentPage, + Integer pageRecords, Integer toMap) { + + try { + // 浠庢暟鎹簱鑾峰彇CMS閰嶇疆 + SysGpsConfig baseUrlConfig = gpsConfigService.selectGpsConfigByKey("gpscms"); + if (baseUrlConfig == null) { + throw new RuntimeException("鏈厤缃瓹MS绯荤粺鍦板潃"); + } + + // 妫�鏌oken鏄惁杩囨湡 + if (baseUrlConfig.getTokenExpireTime() == null || + baseUrlConfig.getTokenExpireTime().before(new Date())) { + // token杩囨湡锛岄噸鏂扮櫥褰� + login(baseUrlConfig.getUsername(), baseUrlConfig.getPassword()); + baseUrlConfig = gpsConfigService.selectGpsConfigByKey("gpscms"); + } + + // 鏋勫缓璇锋眰URL + StringBuilder url = new StringBuilder(baseUrlConfig.getDomain()) + .append("/StandardApiAction_queryTrackDetail.action?jsession=") + .append(baseUrlConfig.getToken()) + .append("&devIdno=").append(devIdno) + .append("&begintime=").append(begintime) + .append("&endtime=").append(endtime); + + // 娣诲姞鍙�夊弬鏁� + if (distance != null) { + url.append("&distance=").append(distance); + } + if (parkTime != null) { + url.append("&parkTime=").append(parkTime); + } + if (geoaddress != null) { + url.append("&geoaddress=").append(geoaddress); + } + if (currentPage != null) { + url.append("¤tPage=").append(currentPage); + } + if (pageRecords != null) { + url.append("&pageRecords=").append(pageRecords); + } + if (toMap != null) { + url.append("&toMap=").append(toMap); + } + + // 鍙戦�佹煡璇㈣姹� + String response = HttpUtils.sendGet(url.toString()); + + // 瑙f瀽鍝嶅簲 + CmsTrackDetailResponse trackResponse = JSONObject.parseObject(response, CmsTrackDetailResponse.class); + + if (trackResponse.getResult() == 0) { + log.info("鑾峰彇璁惧鍘嗗彶杞ㄨ抗鎴愬姛锛岃澶囧彿锛歿}", devIdno); + } else { + log.error("鑾峰彇璁惧鍘嗗彶杞ㄨ抗澶辫触锛岃澶囧彿锛歿}", devIdno); + } + + return trackResponse; + } catch (Exception e) { + log.error("鑾峰彇璁惧鍘嗗彶杞ㄨ抗寮傚父锛岃澶囧彿锛歿}", devIdno, e); + throw new RuntimeException("鑾峰彇璁惧鍘嗗彶杞ㄨ抗寮傚父锛�" + e.getMessage()); + } + } } \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/GpsCollectServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/GpsCollectServiceImpl.java index f456c36..7c20adb 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/GpsCollectServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/GpsCollectServiceImpl.java @@ -510,4 +510,92 @@ return null; } + + @Override + public GpsTrackQueryResponse queryTracks(GpsTrackQueryRequest request) { + // 鑾峰彇GPS閰嶇疆淇℃伅 + SysGpsConfig config = gpsConfigService.selectGpsConfigByKey("gps51"); + if (config == null) { + GpsTrackQueryResponse response = new GpsTrackQueryResponse(); + response.setStatus(-1); + response.setCause("鏈壘鍒癎PS閰嶇疆淇℃伅"); + return response; + } + + // 鑾峰彇鏈夋晥鐨則oken锛屽鏋滄棤鏁堝垯鑷姩鐧诲綍 + String token = getValidTokenWithAutoLogin(); + if (token == null) { + GpsTrackQueryResponse response = new GpsTrackQueryResponse(); + response.setStatus(-1); + response.setCause("鑾峰彇token澶辫触"); + return response; + } + + // 鏋勫缓璇锋眰URL + String url = config.getDomain() + "/webapi?action=querytracks&token=" + token; + + // 鏋勫缓璇锋眰鍙傛暟 + Map<String, String> params = new HashMap<>(); + params.put("deviceid", request.getDeviceid()); + params.put("begintime", request.getBegintime()); + params.put("endtime", request.getEndtime()); + if (request.getTimezone() != null) { + params.put("timezone", String.valueOf(request.getTimezone())); + } + + try { + // 鍙戦�丠TTP璇锋眰 + String result = HttpUtil.post(url, params); + JSONObject jsonResult = JSON.parseObject(result); + + // 瑙f瀽鍝嶅簲 + GpsTrackQueryResponse response = new GpsTrackQueryResponse(); + response.setStatus(jsonResult.getInteger("status")); + response.setCause(jsonResult.getString("cause")); + response.setDeviceid(jsonResult.getString("deviceid")); + + if (response.getStatus() == 0) { + // 瑙f瀽杞ㄨ抗璁板綍鍒楄〃 + JSONArray recordsArray = jsonResult.getJSONArray("records"); + List<GpsTrackPoint> records = new ArrayList<>(); + + for (int i = 0; i < recordsArray.size(); i++) { + JSONObject recordJson = recordsArray.getJSONObject(i); + GpsTrackPoint record = new GpsTrackPoint(); + record.setTrackCount(recordJson.getInteger("trackCount")); + record.setStarttime(recordJson.getLong("starttime")); + record.setEndtime(recordJson.getLong("endtime")); + record.setTrackid(recordJson.getInteger("trackid")); + record.setArrivedtime(recordJson.getLong("arrivedtime")); + record.setUpdatetime(recordJson.getLong("updatetime")); + record.setLatitude(recordJson.getDouble("callat")); + record.setLongitude(recordJson.getDouble("callon")); + record.setAltitude(recordJson.getDouble("altitude")); + record.setRadius(recordJson.getInteger("radius")); + record.setSpeed(recordJson.getDouble("speed")); + record.setRecorderspeed(recordJson.getDouble("recorderspeed")); + record.setTotaldistance(recordJson.getInteger("totaldistance")); + record.setCourse(recordJson.getInteger("course")); + record.setStatus(recordJson.getLong("status")); + record.setStrstatus(recordJson.getString("strstatus")); + record.setStrstatusen(recordJson.getString("strstatusen")); + record.setGotsrc(recordJson.getString("gotsrc")); + record.setRxlevel(recordJson.getInteger("rxlevel")); + record.setGpsvalidnum(recordJson.getInteger("gpsvalidnum")); + record.setReportmode(recordJson.getShort("reportmode")); + + records.add(record); + } + + response.setRecords(records); + } + + return response; + } catch (Exception e) { + GpsTrackQueryResponse response = new GpsTrackQueryResponse(); + response.setStatus(-1); + response.setCause("鏌ヨ鍘嗗彶杞ㄨ抗澶辫触锛�" + e.getMessage()); + return response; + } + } } \ No newline at end of file diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleGpsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleGpsServiceImpl.java index 8697cbe..ad9eb5a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleGpsServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/VehicleGpsServiceImpl.java @@ -71,4 +71,12 @@ public int deleteVehicleGpsById(Long gpsId) { return vehicleGpsMapper.deleteVehicleGpsById(gpsId); } + + /** + * 鍒犻櫎鎸囧畾鏃ユ湡涔嬪墠鐨勮溅杈咷PS鏁版嵁 + */ + @Override + public int deleteVehicleGpsBeforeDate() { + return vehicleGpsMapper.deleteVehicleGpsBeforeDate(); + } } \ No newline at end of file diff --git a/ruoyi-system/src/main/resources/mapper/system/VehicleGpsMapper.xml b/ruoyi-system/src/main/resources/mapper/system/VehicleGpsMapper.xml index 98a65fe..9e01aae 100644 --- a/ruoyi-system/src/main/resources/mapper/system/VehicleGpsMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/VehicleGpsMapper.xml @@ -110,4 +110,13 @@ <select id="getVehicleIdByNo" parameterType="String" resultType="Long"> select vehicle_id from tb_vehicle_info where vehicle_no = #{vehicleNo} </select> + + <delete id="deleteVehicleGpsBeforeDate"> + delete g from tb_vehicle_gps g + where g.collect_time < ( + select date_sub(max(collect_time), interval 2 day) + from tb_vehicle_gps g2 + where g2.vehicle_id = g.vehicle_id + ) + </delete> </mapper> \ No newline at end of file diff --git a/sql/clean_gps.sql b/sql/clean_gps.sql new file mode 100644 index 0000000..692b8e8 --- /dev/null +++ b/sql/clean_gps.sql @@ -0,0 +1,27 @@ +INSERT INTO sys_job ( + job_name, + job_group, + invoke_target, + cron_expression, + misfire_policy, + concurrent, + status, + create_by, + create_time, + update_by, + update_time, + remark +) VALUES ( + '娓呯悊杞﹁締GPS鍘嗗彶鏁版嵁', + 'DEFAULT', + 'cleanVehicleGpsTask.cleanVehicleGpsData()', + '0 0 1 * * ?', + '1', + '1', + '0', + 'admin', + sysdate(), + 'admin', + sysdate(), + '姣忓ぉ鍑屾櫒1鐐规竻鐞嗚溅杈咷PS鍘嗗彶鏁版嵁锛屽彧淇濈暀姣忓彴杞︽渶鍚�2澶╃殑鏁版嵁' +); \ No newline at end of file -- Gitblit v1.9.1