private TrackGps convertEntityGpsToTrackGps(GpsHistory gps) { if (gps == null) { return null; } TrackGps track = new TrackGps(); track.setId(gps.getId().toString()); // gps id track.setTime( gps.getTime() != null ? DateUtil.dateTime2String(new Date(gps.getTime())) : null); // track.setVehicleId(gps.getHcVehicleId()); // if (gps.getCardNo() != null) gps.setCardNo(gps.getCardNo().replaceAll("\\u0000", "")); track.setCardNo(gps.getCardNo()); // track.setCardBalance(null); // track.setPlateNo(gps.getPlateNo()); // track.setSpeed(gps.getSpeed()); // track.setMileageDayCumulative(gps.getCurrentMileageCumulative()); // 当日累积里程 track.setOilDayCumulative(gps.getCurrentOilCumulative()); // 当日累积油耗 track.setAltitude(gps.getAltitude()); // if (gps.getCardStatus() != null) { switch (gps.getCardStatus()) { case OFF_LINE: track.setCardStatus(CardStatus.OFFLINE); break; case ON_LINE: track.setCardStatus(CardStatus.ONLINE); break; default: track.setCardStatus(null); } } if (gps.getAccStatus() != null) { switch (gps.getAccStatus()) { case IGNITION: track.setAccStatus(AccStatus.IGNITION); break; case FLAMEOUT: track.setAccStatus(AccStatus.STALL); break; default: track.setAccStatus(null); } } track.setLongitude(gps.getLongitude()); // track.setLatitude(gps.getLatitude()); // if (gps.getVehicleStatus() != null) { track.setVehicleStatus(VehicleStatus.valueOf(gps.getVehicleStatus().name())); } else if (gps.getAccStatus() != null) { switch (gps.getAccStatus()) { case IGNITION: track.setVehicleStatus(VehicleStatus.IGNITION); break; case FLAMEOUT: track.setVehicleStatus(VehicleStatus.STALL); break; default: track.setAccStatus(null); } } track.setDeviceId(gps.getDeviceId()); // HSBOX 编号 if (gps.getEnableGps() == null) { track.setTag(gps.getEnableGps() ? GpsTag.VALID : GpsTag.INVALID); // gps 是否有效A有效V无效 } track.setSatelliteNum(gps.getSatelliteNum()); // 卫星数量 track.setOilCumulative(gps.getOilCumulative()); track.setMileageCumulative( gps.getMileageCumulative() != null ? gps.getMileageCumulative() / 1000D : null); return track; }
// TRUCK_HS,//HS货车协议MOBILE_HS,//HS手机协议 private void calculateHS(List<GpsHistory> gpsList) { if (gpsList == null || gpsList.size() == 0) { return; } for (Iterator<GpsHistory> it = gpsList.iterator(); it.hasNext(); ) { GpsHistory gps = it.next(); if (gps == null) { it.remove(); continue; } if (gps.getTime() == null) { it.remove(); } } // 排序 Collections.sort(gpsList); // 根据注册基准表计算基准值 this.calculateBaseValue(gpsList); for (int i = 0; i < gpsList.size(); i++) { GpsHistory gps = gpsList.get(i); GpsHistory lastGps = null; gps.setOilCumulative(null); gps.setMileageCumulative(null); if (i == 0) { gps.setOilCumulative(0D); gps.setMileageCumulative(0); continue; } else { lastGps = gpsList.get(i - 1); } // 基准值相同,没有重新注册的情况 if ((gps.getOilBaseValue() != null && lastGps.getOilBaseValue() != null && gps.getOilBaseValue().equals(lastGps.getOilBaseValue())) || (gps.getOilBaseValue() == null && lastGps.getOilBaseValue() == null)) { // 都能采集到油耗值 if (gps.getCurrentOilCumulative() != null && lastGps.getCurrentOilCumulative() != null) { gps.setOilCumulative(gps.getCurrentOilCumulative() - lastGps.getCurrentOilCumulative()); } else { // 当前点没有采集到油耗 if (gps.getCurrentOilCumulative() == null) { gps.setOilCumulative(0D); } // 上一个点没有采集到油耗值 if (gps.getCurrentOilCumulative() != null && lastGps.getCurrentOilCumulative() == null) { // gps.setOilCumulative(gps.getCurrentOilCumulative()-gps.getOilBaseValue()); gps.setOilCumulative(0D); } } } else { // 基值不同有重新注册的情况 // 当前点没有采集到油耗 if (gps.getCurrentOilCumulative() == null) { // 南京说一定会有当前油耗值,所以这种情况基本不会存在 gps.setOilCumulative(0D); } else { // 采集到油耗,当前点减去基值 if (gps.getOilBaseValue() == null) { gps.setOilCumulative(0D); } else { gps.setOilCumulative(gps.getCurrentOilCumulative() - gps.getOilBaseValue()); } } } // 基准值相同,没有重新注册的情况 if ((gps.getMileageBaseValue() != null && lastGps.getMileageBaseValue() != null && gps.getMileageBaseValue().equals(lastGps.getMileageBaseValue())) || (gps.getMileageBaseValue() == null && lastGps.getMileageBaseValue() == null)) { // 都能采集到里程值 if (gps.getCurrentMileageCumulative() != null && lastGps.getCurrentMileageCumulative() != null) { gps.setMileageCumulative( gps.getCurrentMileageCumulative() - lastGps.getCurrentMileageCumulative()); if (!gps.getCurrentMileageCumulative().equals(lastGps.getCurrentMileageCumulative())) { gps.setMileageCumulative( gps.getCurrentMileageCumulative() - lastGps.getCurrentMileageCumulative()); } } else { // 当前点没有采集到里程 if (gps.getCurrentMileageCumulative() == null) { gps.setMileageCumulative(0); } // 上一个点没有采集到里程值 if (gps.getCurrentMileageCumulative() != null && lastGps.getCurrentMileageCumulative() == null) { // gps.setMileageCumulative(gps.getCurrentMileageCumulative()-gps.getMileageBaseValue()); gps.setMileageCumulative(0); } } } else { // 基值不同有重新注册的情况 // 当前点没有采集到里程 if (gps.getCurrentMileageCumulative() == null) { // 南京说一定会有当前里程值,所以这种情况基本不会存在 gps.setMileageCumulative(0); } else { // 采集到里程,当前点减去基值 if (gps.getMileageBaseValue() == null) { gps.setMileageCumulative(0); } else { gps.setMileageCumulative(gps.getCurrentMileageCumulative() - gps.getMileageBaseValue()); } } } } }