xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/model/dto/QualificationReviewDTO.java
@@ -17,4 +17,7 @@ @ApiModelProperty(value = "审核状态 1待审核 2审核通过 3审核驳回") private Integer auditStatus; @ApiModelProperty(value = "审核备注") private String auditRemarks; } xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpAppUserCouponServiceImpl.java
@@ -570,7 +570,7 @@ } } if(2 == effectiveRules){ String format = acticityStrategy.getEffectiveDays().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); String format = acticityStrategy.getEffectiveDays().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); if(1 == expireRules){ vo.setEffectAndInvalid("生效失效:领取后" + format + "生效,未使用、次日零点失效。"); } xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpQualificationAuditServiceImpl.java
@@ -51,7 +51,7 @@ public PageInfo<XpQualificationAuditVO> pageList(XpQualificationAuditQuery query) throws UnsupportedEncodingException { PageInfo<XpQualificationAuditVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<XpQualificationAuditVO> list = this.baseMapper.pageList(pageInfo, query); if(CollectionUtils.isEmpty(list)){ if (CollectionUtils.isEmpty(list)) { return pageInfo; } @@ -62,12 +62,12 @@ List<XpOperationsRole> xpOperationsRoles = xpOperationsRoleMapper.selectList(Wrappers.lambdaQuery(XpOperationsRole.class) .in(XpOperationsRole::getOperationsUserId, operationsUserIds)); if(!CollectionUtils.isEmpty(xpOperationsRoles)){ if (!CollectionUtils.isEmpty(xpOperationsRoles)) { List<Long> roleIds = xpOperationsRoles.stream().map(XpOperationsRole::getRoleId).collect(Collectors.toList()); // 查询列表关联的所有角色 List<SysRole> sysRoles = sysRoleMapper.selectList(Wrappers.lambdaQuery(SysRole.class) .in(SysRole::getId, roleIds)); if(!CollectionUtils.isEmpty(sysRoles)){ if (!CollectionUtils.isEmpty(sysRoles)) { // 角色匹配账号id Map<Long, List<SysRole>> map = new HashMap<>(); @@ -88,7 +88,7 @@ for (XpQualificationAuditVO xpQualificationAuditVO : list) { xpQualificationAuditVO.setPhoneNumber(sysGroupService.getPhoneDesensitization(xpQualificationAuditVO.getPhoneNumber())); String certificateOfNoCriminalRecord = xpQualificationAuditVO.getCertificateOfNoCriminalRecord(); if(certificateOfNoCriminalRecord!=null){ if (certificateOfNoCriminalRecord != null) { JSONObject jsonObject = JSONObject.parseObject(certificateOfNoCriminalRecord); // 1 String downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true); @@ -97,7 +97,7 @@ } String driverLicense = xpQualificationAuditVO.getDriverLicense(); if(driverLicense!=null){ if (driverLicense != null) { JSONObject jsonObject = JSONObject.parseObject(driverLicense); //1 String downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true); @@ -107,7 +107,7 @@ String trainingGraduationCertificate = xpQualificationAuditVO.getTrainingGraduationCertificate(); if(trainingGraduationCertificate!=null){ if (trainingGraduationCertificate != null) { JSONObject jsonObject = JSONObject.parseObject(trainingGraduationCertificate); //1 String downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true); @@ -116,7 +116,7 @@ } String idCardFront = xpQualificationAuditVO.getIdCardFront(); if(idCardFront!=null){ if (idCardFront != null) { JSONObject jsonObject = JSONObject.parseObject(idCardFront); //1 String downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true); @@ -125,7 +125,7 @@ } String idCardBack = xpQualificationAuditVO.getIdCardBack(); if(idCardBack!=null){ if (idCardBack != null) { JSONObject jsonObject = JSONObject.parseObject(idCardBack); //1 String downloadUrl = aliOssService.getDownloadUrl(jsonObject.getString("id"), jsonObject.getString("name"), true); @@ -146,7 +146,7 @@ qualificationAudit.setAuditUserId(userid); qualificationAudit.setAuditTime(LocalDateTime.now()); qualificationAudit.setAuditStatus(dto.getAuditStatus()); // qualificationAudit.setAuditRemarks(dto.getAuditRemarks()); qualificationAudit.setAuditRemark(dto.getAuditRemarks()); } this.updateBatchById(qualificationAudits); } xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/account/XpQualificationAudit.java
@@ -63,6 +63,6 @@ private Integer auditStatus; @ApiModelProperty(value = "审核备注") private Integer auditRemark; private String auditRemark; } xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/operation/XpActicityStrategy.java
@@ -57,7 +57,8 @@ private Integer effectiveRules; @ApiModelProperty(value = "领取后指定日期生效") private LocalDateTime effectiveDays; @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private LocalDate effectiveDays; @ApiModelProperty(value = "失效规则(1=次日0点失效,2=指定有效天数,3=指定日期失效)") private Integer expireRules; xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/vehicleConvoy/VehicleDoorStatusVo.java
@@ -8,18 +8,72 @@ @Data @ApiModel public class VehicleDoorStatusVo { @ApiModelProperty("前左门状态(开=1/关=0)") @ApiModelProperty("主驾车门关闭状态(开=1/关=0)") private Integer frontLeftDoor; @ApiModelProperty("前右门状态(开=1/关=0)") @ApiModelProperty("副驾车门关闭状态(开=1/关=0)") private Integer frontRightDoor; @ApiModelProperty("后左门状态(开=1/关=0)") @ApiModelProperty("左后车门关闭状态(开=1/关=0)") private Integer rearLeftDoor; @ApiModelProperty("后右门状态(开=1/关=0)") @ApiModelProperty("右后车门关闭状态(开=1/关=0)") private Integer rearRightDoor; @ApiModelProperty("后备箱盖状态(开=1/关=0)") @ApiModelProperty("新车型后备箱状态 0-异常停止,关闭\n" + "1-关 \n" + "2-正在运动中 \n" + "3-运动中异常停止,可开可关 \n" + "4-运动中异常停止,可开可关 \n" + "5-已打开 \n" + "6-正在运动中 \n" + "7-运动中异常停止,可开可关 \n" + "8-运动中异常停止,可开可关 \n" + "9-无效非关闭状态 \n" + "10-异常停止,仅允许开启") private Integer trunk; @ApiModelProperty("前备箱盖状态(开=1/关=0)") @ApiModelProperty("前舱盖开关状态:0-关闭,1-开 ,2-有障碍物 3、开路 (代表的是电路故障)") private Integer frunk; @ApiModelProperty("充电口盖状态(开=1/关=0)") private Integer chargePort; @ApiModelProperty("空调开启状态:1-on,0-off") private Integer hvacOn; @ApiModelProperty("车内实际温度(保留一位小数)") private Double hvacInnerTempFloat; @ApiModelProperty("空调设定温度(保留一位小数)") private Double hvacTempFloat; @ApiModelProperty("后排左侧空调设定温度,保留一位小数") private Double rearLeftHvacTempFloat; @ApiModelProperty("副驾空调设定温度,保留一位小数") private Double passengerHvacTempFloat; @ApiModelProperty("驾驶位状态:0-无人,1-有人 (BCM_DriverSeat占用)") private Integer driverSeatState; @ApiModelProperty("副驾座椅占位 0:未占用 1:占用;") private Integer psngrSeatOccupancyStatus; @ApiModelProperty("二排左座椅占位 0:未占用 1:占用;") private Integer secRowLeftSeatOccupancyStatus; @ApiModelProperty("二排中座椅占位 0:未占用 1:占用;") private Integer secRowMidSeatOccupancyStatus; @ApiModelProperty("二排右座椅占位 0:未占用 1:占用;") private Integer secRowRightSeatOccupancyStatus; @ApiModelProperty("三排左座椅占位 0:未占用 1:占用;") private Integer thirdRowLeftSeatOccupancyStatus; @ApiModelProperty("三排中座椅占位 0:未占用 1:占用;") private Integer thirdRowMidSeatOccupancyStatus; @ApiModelProperty("三排右座椅占位 0:未占用 1:占用;") private Integer thirdRowRightSeatOccupancyStatus; @ApiModelProperty("主驾安全带卡扣状态 0:已解开 1:未解开;") private Integer drvSeatBeltBuckleSt; @ApiModelProperty("副驾安全带卡扣状态 0:已解开 1:未解开;") private Integer psngrSeatBeltBuckleSt; @ApiModelProperty("二排左侧安全带卡扣状态 0:已解开 1:未解开;") private Integer secRowLtSeatBeltBuckleSt; @ApiModelProperty("二排中部安全带未卡扣状态 0:已解开 1:未解开;") private Integer secRowMidSeatBeltBuckleSt; @ApiModelProperty("二排右侧安全带未卡扣状态 0:已解开 1:未解开;") private Integer secRowRtSeatBeltBuckleSt; @ApiModelProperty("三排左侧安全带未卡扣状态 0:已解开 1:未解开;") private Integer trdRowLtSeatBeltBuckleSt; @ApiModelProperty("三排中部安全带未卡扣状态 0:已解开 1:未解开;") private Integer trdRowMidSeatBeltBuckleSt; @ApiModelProperty("三排右侧安全带未卡扣状态 0:已解开 1:未解开;") private Integer trdRowRtSeatBeltBuckleSt; @ApiModelProperty("(慢充)交流充电口状态:0-开启,1-中间状态(开启或关闭过程中),2-关闭,3-错误(E28开始支持)") private Integer slowChargePortStatus; @ApiModelProperty("(快充)直流充电口状态:0-开启,1-中间状态(开启或关闭过程中),2-关闭,3-错误(E28开始支持)") private Integer fastChargePortStatus; } xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpMapController.java
@@ -28,7 +28,9 @@ import org.bson.Document; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.geo.Point; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.geo.GeoJsonPolygon; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.validation.annotation.Validated; @@ -143,13 +145,12 @@ String fenceId = null; if(!operatingArea.isEmpty()){ fenceId = operatingArea.get(0); List<Document> pointsInFence = xpGeoFencingPolygonService.findPointsByParentId(fenceId, "fenceId", "prohibited_area"); for (Document document : pointsInFence) { List<GeoPoint> points = document.getList("points", GeoPoint.class); List<XpGeoFencingPolygon> pointsInFence = mongoTemplate.find(Query.query(Criteria.where("fenceId").is(fenceId)), XpGeoFencingPolygon.class); for (XpGeoFencingPolygon xpGeoFencingPolygon : pointsInFence) { GeoJsonPolygon points = xpGeoFencingPolygon.getPoints(); List<String> coordinatesList = new ArrayList<>(); // 一个区域的点位 for (GeoPoint point : points) { coordinatesList.add(point.getLongitude()+","+point.getLatitude()); for (Point point : points) { coordinatesList.add(point.getX()+","+point.getY()); } JSONObject jsonObject = new JSONObject(); jsonObject.put("coordinates", coordinatesList); xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpPointManagementController.java
@@ -283,7 +283,7 @@ /** * 点位详情 */ @GetMapping("/api/v1/point/queryById") @GetMapping("/queryById") @ApiOperation(value = "点位详情") public R<XpPoint> queryById(@RequestParam Long id) { return R.ok(xpPointService.getById(id)); xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpActicityServiceImpl.java
@@ -259,7 +259,8 @@ } // 指定日期生效 if(2 == effectiveRules){ xpAppUserCoupon.setEffectiveTime(xpActicityStrategy.getEffectiveDays()); String format = xpActicityStrategy.getEffectiveDays().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); xpAppUserCoupon.setEffectiveTime(LocalDateTime.parse(format + " 23:59:59", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); } Integer expireRules = xpActicityStrategy.getExpireRules(); xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/controller/CustomerServiceController.java
@@ -217,20 +217,23 @@ /** * 10. 根据 VIN 查询剩余电量及预估续航 * @param vin * @return */ @GetMapping("/getVehicleRange/{vin}") @ApiOperation(value = "根据 VIN 查询剩余电量及预估续航", notes = "客服系统对接") @ApiImplicitParam(name = "vin", value = "vin码", required = true, dataType = "string", paramType = "path") public R<VehicleRangeVo> getVehicleRange(@PathVariable String vin){ VehiclePosition vehiclePositions = mongoTemplate.findOne(Query.query(Criteria.where("vin").is(vin)), VehiclePosition.class); if(null == vehiclePositions){ return R.ok(); } @GetMapping("/getVehicleRange/{orderId}") @ApiOperation(value = "根据 订单id 查询剩余电量及预估续航", notes = "客服系统对接") @ApiImplicitParam(name = "orderId", value = "订单id", required = true, dataType = "string", paramType = "path") public R<VehicleRangeVo> getVehicleRange(@PathVariable String orderId){ XpOrder xpOrder = xpOrderService.getById(orderId); VehicleRangeVo vo = new VehicleRangeVo(); vo.setBatteryLevel(vehiclePositions.getCurrentElectricity()); vo.setEstimatedRange(Double.valueOf(vehiclePositions.getMileageRange())); if(null != xpOrder.getVehicleId()){ XpVehicle xpVehicle = xpVehicleClient.queryById(xpOrder.getVehicleId()).getData(); VehiclePosition vehiclePositions = mongoTemplate.findOne(Query.query(Criteria.where("vin").is(xpVehicle.getVehicleVin())), VehiclePosition.class); if(null == vehiclePositions){ return R.ok(); } vo.setBatteryLevel(vehiclePositions.getCurrentElectricity()); vo.setEstimatedRange(Double.valueOf(vehiclePositions.getMileageRange())); } return R.ok(vo); } @@ -297,6 +300,7 @@ @ApiOperation(value = "根据订单号查询订单日志", notes = "客服系统对接") @ApiImplicitParam(name = "orderId", value = "订单ID", required = true, dataType = "Long", paramType = "path") public R<UserOrderInfoVo> getOrderInfo(@PathVariable Long orderId){ return R.ok(new UserOrderInfoVo()); UserOrderInfoVo orderHistoryInfo = xpOrderService.getOrderHistoryInfo(orderId); return R.ok(orderHistoryInfo); } } xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/IXpOrderService.java
@@ -25,10 +25,7 @@ import com.xiaopeng.order.model.vo.XpOrderDetailVO; import com.xiaopeng.order.model.vo.XpOrderHistoryVO; import com.xiaopeng.order.model.vo.XpOrderPageVO; import com.xiaopeng.order.vo.OrderDetailVo; import com.xiaopeng.order.vo.OrderInfoVo; import com.xiaopeng.order.vo.UpdateOrderStatusVo; import com.xiaopeng.order.vo.UserOrderListVo; import com.xiaopeng.order.vo.*; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; @@ -273,4 +270,12 @@ * @param vo */ R<?> officialPartnerUpdateOrderStatus(UpdateOrderStatusVo vo, Integer officialPartnerId); /** * 获取订单历史信息 * @param orderId * @return */ UserOrderInfoVo getOrderHistoryInfo(Long orderId); } xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -56,6 +56,7 @@ import com.xiaopeng.api.vo.operation.NearestNextVo; import com.xiaopeng.api.vo.operation.RouteVo; import com.xiaopeng.api.vo.order.*; import com.xiaopeng.api.vo.order.FareBreakdownVo; import com.xiaopeng.api.vo.vehicleConvoy.AddTaxiPassengerVo; import com.xiaopeng.api.vo.vehicleConvoy.BluetoothDeliverVo; import com.xiaopeng.api.vo.vehicleConvoy.CancelTaxiPassengerVo; @@ -94,10 +95,7 @@ import com.xiaopeng.order.service.*; import com.xiaopeng.order.utils.*; import com.xiaopeng.order.utils.holiday.HolidayUtil; import com.xiaopeng.order.vo.OrderDetailVo; import com.xiaopeng.order.vo.OrderInfoVo; import com.xiaopeng.order.vo.UpdateOrderStatusVo; import com.xiaopeng.order.vo.UserOrderListVo; import com.xiaopeng.order.vo.*; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType; @@ -4483,4 +4481,39 @@ return R.ok(); } @Override public UserOrderInfoVo getOrderHistoryInfo(Long orderId) { XpOrder xpOrder = this.getById(orderId); UserOrderInfoVo vo = new UserOrderInfoVo(); vo.setOrderId(xpOrder.getId()); vo.setOrderCreatedAt(xpOrder.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); vo.setDispatchStartAt(""); vo.setDispatchSuccessAt(xpOrder.getAcceptanceTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); vo.setVehicleArrivedAt(xpOrder.getArrivalTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); vo.setFreeWaitExpiredAt(""); vo.setVehicleUnlockedAt(""); vo.setDoorOpenedAt(Arrays.asList("")); vo.setDoorClosedAt(Arrays.asList("")); vo.setTripConfirmedAt(xpOrder.getTripBegin().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); vo.setSafetybeltUnlockedAt(Arrays.asList("")); vo.setArrivedDestinationAt(""); vo.setDropoffDoorOpenedAt(Arrays.asList("")); vo.setDropoffTrunkOpenedAt(Arrays.asList("")); vo.setDropoffDoorClosedAt(Arrays.asList("")); vo.setTripEndedAt(xpOrder.getTripEnd().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); vo.setPaymentCompletedAt(""); XpOrderEvaluate orderEvaluate = xpOrderEvaluateService.getOne(new QueryWrapper<XpOrderEvaluate>().eq("order_id", xpOrder.getId())); if(null != orderEvaluate){ vo.setUserRatedAt(orderEvaluate.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); } XpOrderCancel xpOrderCancel = xpOrderCancelService.getOne(new QueryWrapper<XpOrderCancel>().eq("order_id", xpOrder.getId())); if(null != xpOrderCancel){ vo.setOrderCancelledAt(xpOrderCancel.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); vo.setCancelReasonType(xpOrderCancel.getCancelSource() == 1 ? "用户取消" : xpOrderCancel.getCancelSource() == 4 ? "超时取消" : "系统取消"); } vo.setSafetyAlertTriggeredAt(""); vo.setRemoteTakeoverAt(""); return vo; } } xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/controller/CarControlCallbackController.java
@@ -114,6 +114,24 @@ log.info("解析到后备箱状态: msgId={}, trunk_ajar_st_new={}", callback.getMsgRef(), trunkAjarStNewObj); } } // 解析hvac信息 Map<String, Object> hvac = (Map<String, Object>) instant.get("hvac"); if (hvac != null) { //存入缓存用于后续使用 redisService.setCacheObject("HVAC:" + callback.getMsgId(), JSON.toJSONString(hvac), 30L, TimeUnit.SECONDS); } // 解析seat信息 Map<String, Object> seat = (Map<String, Object>) instant.get("seat"); if (seat != null) { //存入缓存用于后续使用 redisService.setCacheObject("SEAT:" + callback.getMsgId(), JSON.toJSONString(seat), 30L, TimeUnit.SECONDS); } // 解析charge信息 Map<String, Object> charge = (Map<String, Object>) instant.get("charge"); if (charge != null) { //存入缓存用于后续使用 redisService.setCacheObject("CHARGE:" + callback.getMsgId(), JSON.toJSONString(charge), 30L, TimeUnit.SECONDS); } stateData.setStateMap(stateMap); return stateData; xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java
@@ -1280,14 +1280,13 @@ */ @Override public List<XpVehicle> getServiceVehicleList(ServiceVehicleListDto dto) { List<XpVehicle> list = this.list(new QueryWrapper<XpVehicle>().eq("vehicle_type", 2) PageInfo<XpVehicle> pageInfo = new PageInfo<>(dto.getPageNo(), dto.getPageSize()); PageInfo<XpVehicle> page = this.page(pageInfo, new QueryWrapper<XpVehicle>().eq("vehicle_type", 2) .eq("status", 2).eq("operating_status", 1) .eq("is_deleted", 0).like(StringUtils.isNotBlank(dto.getPlateNumber()), "plate_number", dto.getPlateNumber()) .like(StringUtils.isNotBlank(dto.getVin()), "vehicle_vin", dto.getVin()) .last(" order by create_time desc limit " + dto.getPageNo() + "," + dto.getPageSize()) ); return list; .last(" order by create_time desc")); return page.getRecords(); } @@ -1498,7 +1497,6 @@ if(StringUtils.isEmpty(cacheObject)){ return null; } // todo 待文档补充后再更新代码 VehicleDoorStatusVo vo = new VehicleDoorStatusVo(); JSONObject jsonObject = JSON.parseObject(cacheObject); Integer driver_door_ajar_st = jsonObject.getInteger("driver_door_ajar_st"); @@ -1506,7 +1504,65 @@ Integer rear_left_door_ajar_st = jsonObject.getInteger("rear_left_door_ajar_st"); Integer rear_right_door_ajar_st = jsonObject.getInteger("rear_right_door_ajar_st"); Integer trunk_ajar_st_new = jsonObject.getInteger("trunk_ajar_st_new"); vo.setTrunk(trunk_ajar_st_new == 5 ? 1 : 0); Integer bonnet_ajar_st = jsonObject.getInteger("bonnet_ajar_st"); vo.setFrontLeftDoor(driver_door_ajar_st); vo.setFrontRightDoor(passenger_door_ajar_st); vo.setRearLeftDoor(rear_left_door_ajar_st); vo.setRearRightDoor(rear_right_door_ajar_st); vo.setTrunk(trunk_ajar_st_new); vo.setFrunk(bonnet_ajar_st); String hvac = redisService.getCacheObject("HVAC:" + msgId); JSONObject hvacJsonObject = JSON.parseObject(hvac); Integer hvac_on = hvacJsonObject.getInteger("hvac_on"); Double hvac_inner_temp_float = hvacJsonObject.getDouble("hvac_inner_temp_float"); Double hvac_temp_float = hvacJsonObject.getDouble("hvac_temp_float"); Double rear_left_hvac_temp_float = hvacJsonObject.getDouble("rear_left_hvac_temp_float"); Double passenger_hvac_temp_float = hvacJsonObject.getDouble("passenger_hvac_temp_float"); vo.setHvacOn(hvac_on); vo.setHvacInnerTempFloat(hvac_inner_temp_float); vo.setHvacTempFloat(hvac_temp_float); vo.setRearLeftHvacTempFloat(rear_left_hvac_temp_float); vo.setPassengerHvacTempFloat(passenger_hvac_temp_float); String seat = redisService.getCacheObject("SEAT:" + msgId); JSONObject seatJsonObject = JSON.parseObject(seat); Integer driver_seat_state = seatJsonObject.getInteger("driver_seat_state"); Integer psngr_seat_occupancy_status = seatJsonObject.getInteger("psngr_seat_occupancy_status"); Integer sec_row_left_seat_occupancy_status = seatJsonObject.getInteger("sec_row_left_seat_occupancy_status"); Integer sec_row_mid_seat_occupancy_status = seatJsonObject.getInteger("sec_row_mid_seat_occupancy_status"); Integer sec_row_right_seat_occupancy_status = seatJsonObject.getInteger("sec_row_right_seat_occupancy_status"); Integer third_row_left_seat_occupancy_status = seatJsonObject.getInteger("third_row_left_seat_occupancy_status"); Integer third_row_mid_seat_occupancy_status = seatJsonObject.getInteger("third_row_mid_seat_occupancy_status"); Integer third_row_right_seat_occupancy_status = seatJsonObject.getInteger("third_row_right_seat_occupancy_status"); Integer drv_seat_belt_buckle_st = seatJsonObject.getInteger("drv_seat_belt_buckle_st"); Integer psngr_seat_belt_buckle_st = seatJsonObject.getInteger("psngr_seat_belt_buckle_st"); Integer sec_row_lt_seat_belt_buckle_st = seatJsonObject.getInteger("sec_row_lt_seat_belt_buckle_st"); Integer sec_row_mid_seat_belt_buckle_st = seatJsonObject.getInteger("sec_row_mid_seat_belt_buckle_st"); Integer sec_row_rt_seat_belt_buckle_st = seatJsonObject.getInteger("sec_row_rt_seat_belt_buckle_st"); Integer trd_row_lt_seat_belt_buckle_st = seatJsonObject.getInteger("trd_row_lt_seat_belt_buckle_st"); Integer trd_row_mid_seat_belt_buckle_st = seatJsonObject.getInteger("trd_row_mid_seat_belt_buckle_st"); Integer trd_row_rt_seat_belt_buckle_st = seatJsonObject.getInteger("trd_row_rt_seat_belt_buckle_st"); vo.setDriverSeatState(driver_seat_state); vo.setPsngrSeatOccupancyStatus(psngr_seat_occupancy_status); vo.setSecRowLeftSeatOccupancyStatus(sec_row_left_seat_occupancy_status); vo.setSecRowMidSeatOccupancyStatus(sec_row_mid_seat_occupancy_status); vo.setSecRowRightSeatOccupancyStatus(sec_row_right_seat_occupancy_status); vo.setThirdRowLeftSeatOccupancyStatus(third_row_left_seat_occupancy_status); vo.setThirdRowMidSeatOccupancyStatus(third_row_mid_seat_occupancy_status); vo.setThirdRowRightSeatOccupancyStatus(third_row_right_seat_occupancy_status); vo.setDrvSeatBeltBuckleSt(drv_seat_belt_buckle_st); vo.setPsngrSeatBeltBuckleSt(psngr_seat_belt_buckle_st); vo.setSecRowLtSeatBeltBuckleSt(sec_row_lt_seat_belt_buckle_st); vo.setSecRowMidSeatBeltBuckleSt(sec_row_mid_seat_belt_buckle_st); vo.setSecRowRtSeatBeltBuckleSt(sec_row_rt_seat_belt_buckle_st); vo.setTrdRowLtSeatBeltBuckleSt(trd_row_lt_seat_belt_buckle_st); vo.setTrdRowMidSeatBeltBuckleSt(trd_row_mid_seat_belt_buckle_st); vo.setTrdRowRtSeatBeltBuckleSt(trd_row_rt_seat_belt_buckle_st); String charge = redisService.getCacheObject("CHARGE:" + msgId); JSONObject chargeJsonObject = JSON.parseObject(charge); Integer slow_charge_port_status = chargeJsonObject.getInteger("slow_charge_port_status"); Integer fast_charge_port_status = chargeJsonObject.getInteger("fast_charge_port_status"); vo.setSlowChargePortStatus(slow_charge_port_status); vo.setFastChargePortStatus(fast_charge_port_status); return vo; }