Commit d72bd5bd by huangjy

fix:声网token

parent c60328ab
...@@ -7,7 +7,9 @@ import com.makeit.common.page.PageVO; ...@@ -7,7 +7,9 @@ import com.makeit.common.page.PageVO;
import com.makeit.common.response.ApiResponseEntity; import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils; import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.alarm.PlatAlarmRecordQueryDTO; import com.makeit.dto.platform.alarm.PlatAlarmRecordQueryDTO;
import com.makeit.dto.platform.alarm.PlatCallingDeviceDTO;
import com.makeit.global.annotation.AuthIgnore; import com.makeit.global.annotation.AuthIgnore;
import com.makeit.global.aspect.tenant.TenantIdIgnore;
import com.makeit.service.platform.alarm.PlatAlarmRecordService; import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import com.makeit.vo.platform.alarm.PlatAlarmCallDeviceVO; import com.makeit.vo.platform.alarm.PlatAlarmCallDeviceVO;
import com.makeit.vo.platform.alarm.PlatAlarmRecordVO; import com.makeit.vo.platform.alarm.PlatAlarmRecordVO;
...@@ -79,16 +81,16 @@ public class PlatAlarmRecordController { ...@@ -79,16 +81,16 @@ public class PlatAlarmRecordController {
@ApiOperation("呼叫设备rtm") @ApiOperation("呼叫设备rtm")
@PostMapping("callingDeviceAuthRtm") @PostMapping("callingDeviceAuthRtm")
@AuthIgnore public ApiResponseEntity<PlatAlarmCallDeviceVO> callingDeviceAuthRtm(@RequestBody PlatCallingDeviceDTO dto) {
public ApiResponseEntity<PlatAlarmCallDeviceVO> callingDeviceAuthRtm(@RequestBody BaseIdDTO baseIdDTO) throws Exception { return ApiResponseUtils.success(platAlarmRecordService.callingDeviceAuthIgnoreRtm(dto));
return ApiResponseUtils.success(platAlarmRecordService.callingDeviceAuthIgnoreRtm(baseIdDTO.getId()));
} }
@ApiOperation("呼叫设备rtm") @ApiOperation("呼叫设备rtm")
@PostMapping("callingDeviceAuthIgnoreRtm") @PostMapping("callingDeviceAuthIgnoreRtm")
@AuthIgnore @AuthIgnore
public ApiResponseEntity<PlatAlarmCallDeviceVO> callingDeviceAuthIgnoreRtm(@RequestBody BaseIdDTO baseIdDTO) throws Exception { @TenantIdIgnore
return ApiResponseUtils.success(platAlarmRecordService.callingDeviceAuthIgnoreRtm(baseIdDTO.getId())); public ApiResponseEntity<PlatAlarmCallDeviceVO> callingDeviceAuthIgnoreRtm(@RequestBody PlatCallingDeviceDTO dto) {
return ApiResponseUtils.success(platAlarmRecordService.callingDeviceAuthIgnoreRtm(dto));
} }
// @Autowired // @Autowired
......
...@@ -75,6 +75,14 @@ public class PlatElderSleepController { ...@@ -75,6 +75,14 @@ public class PlatElderSleepController {
return ApiResponseUtils.success(); return ApiResponseUtils.success();
} }
@ApiOperation("测试")
@PostMapping("test5")
@AuthIgnore
public ApiResponseEntity<Void> coordinateRecordTask() {
platElderReportTask.coordinateRecordTask();
return ApiResponseUtils.success();
}
@ApiOperation("编辑设备属性") @ApiOperation("编辑设备属性")
@PostMapping("editDeviceProperties") @PostMapping("editDeviceProperties")
@AuthIgnore @AuthIgnore
......
package com.makeit.dto.platform.alarm;
import io.swagger.annotations.ApiModel;
import lombok.Data;
@Data
@ApiModel(value="呼叫设备RTM", description="呼叫设备RTM")
public class PlatCallingDeviceDTO {
private String id;
private String userId;
}
...@@ -48,8 +48,8 @@ public class PlatElderCoordinateRecord extends BaseBusEntity { ...@@ -48,8 +48,8 @@ public class PlatElderCoordinateRecord extends BaseBusEntity {
@ApiModelProperty(value = "跌倒设备轨迹") @ApiModelProperty(value = "跌倒设备轨迹")
private String track; private String track;
@ApiModelProperty(value = "跌倒设备轨迹") @ApiModelProperty(value = "上报时间")
private Integer reportTime; private Long reportTime;
} }
...@@ -6,6 +6,7 @@ import com.makeit.common.page.PageReqDTO; ...@@ -6,6 +6,7 @@ import com.makeit.common.page.PageReqDTO;
import com.makeit.common.page.PageVO; import com.makeit.common.page.PageVO;
import com.makeit.dto.platform.alarm.PlatAlarmCheckDTO; import com.makeit.dto.platform.alarm.PlatAlarmCheckDTO;
import com.makeit.dto.platform.alarm.PlatAlarmRecordQueryDTO; import com.makeit.dto.platform.alarm.PlatAlarmRecordQueryDTO;
import com.makeit.dto.platform.alarm.PlatCallingDeviceDTO;
import com.makeit.entity.platform.alarm.PlatAlarmConfig; import com.makeit.entity.platform.alarm.PlatAlarmConfig;
import com.makeit.entity.platform.alarm.PlatAlarmRecord; import com.makeit.entity.platform.alarm.PlatAlarmRecord;
import com.makeit.entity.platform.elder.PlatElder; import com.makeit.entity.platform.elder.PlatElder;
...@@ -71,5 +72,5 @@ public interface PlatAlarmRecordService extends IService<PlatAlarmRecord> { ...@@ -71,5 +72,5 @@ public interface PlatAlarmRecordService extends IService<PlatAlarmRecord> {
PlatAlarmCallDeviceVO callingDevice(); PlatAlarmCallDeviceVO callingDevice();
PlatAlarmCallDeviceVO callingDeviceAuthIgnoreRtm(String id) throws Exception; PlatAlarmCallDeviceVO callingDeviceAuthIgnoreRtm(PlatCallingDeviceDTO id);
} }
...@@ -16,6 +16,7 @@ import com.makeit.common.page.PageVO; ...@@ -16,6 +16,7 @@ import com.makeit.common.page.PageVO;
import com.makeit.config.ShengwangProperties; import com.makeit.config.ShengwangProperties;
import com.makeit.dto.platform.alarm.PlatAlarmCheckDTO; import com.makeit.dto.platform.alarm.PlatAlarmCheckDTO;
import com.makeit.dto.platform.alarm.PlatAlarmRecordQueryDTO; import com.makeit.dto.platform.alarm.PlatAlarmRecordQueryDTO;
import com.makeit.dto.platform.alarm.PlatCallingDeviceDTO;
import com.makeit.entity.platform.alarm.PlatAlarmConfig; import com.makeit.entity.platform.alarm.PlatAlarmConfig;
import com.makeit.entity.platform.alarm.PlatAlarmRecord; import com.makeit.entity.platform.alarm.PlatAlarmRecord;
import com.makeit.entity.platform.auth.PlatOrg; import com.makeit.entity.platform.auth.PlatOrg;
...@@ -35,6 +36,7 @@ import com.makeit.service.platform.alarm.PlatAlarmConfigService; ...@@ -35,6 +36,7 @@ import com.makeit.service.platform.alarm.PlatAlarmConfigService;
import com.makeit.service.platform.alarm.PlatAlarmRecordService; import com.makeit.service.platform.alarm.PlatAlarmRecordService;
import com.makeit.service.platform.auth.PlatOrgService; import com.makeit.service.platform.auth.PlatOrgService;
import com.makeit.service.platform.auth.PlatUserService; import com.makeit.service.platform.auth.PlatUserService;
import com.makeit.service.platform.device.PlatDeviceService;
import com.makeit.service.platform.elder.PlatElderChildrenInfoService; import com.makeit.service.platform.elder.PlatElderChildrenInfoService;
import com.makeit.service.platform.elder.PlatElderService; import com.makeit.service.platform.elder.PlatElderService;
import com.makeit.service.platform.space.PlatRegionSettingService; import com.makeit.service.platform.space.PlatRegionSettingService;
...@@ -42,7 +44,6 @@ import com.makeit.service.platform.space.PlatRoomBedDeviceService; ...@@ -42,7 +44,6 @@ import com.makeit.service.platform.space.PlatRoomBedDeviceService;
import com.makeit.service.platform.space.PlatRoomService; import com.makeit.service.platform.space.PlatRoomService;
import com.makeit.service.saas.PlatTenantService; import com.makeit.service.saas.PlatTenantService;
import com.makeit.shengwang.agora.media.RtcTokenBuilder2; import com.makeit.shengwang.agora.media.RtcTokenBuilder2;
import com.makeit.shengwang.agora.rtm.RtmTokenBuilder;
import com.makeit.shengwang.agora.rtm.RtmTokenBuilder2; import com.makeit.shengwang.agora.rtm.RtmTokenBuilder2;
import com.makeit.utils.data.convert.BeanDtoVoUtils; import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.data.convert.PageUtil; import com.makeit.utils.data.convert.PageUtil;
...@@ -60,12 +61,15 @@ import lombok.extern.slf4j.Slf4j; ...@@ -60,12 +61,15 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -79,6 +83,8 @@ import java.util.stream.Collectors; ...@@ -79,6 +83,8 @@ import java.util.stream.Collectors;
@Slf4j @Slf4j
public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMapper, PlatAlarmRecord> public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMapper, PlatAlarmRecord>
implements PlatAlarmRecordService { implements PlatAlarmRecordService {
public static final String REDIS_DEVICE_CALL = "device::call";
@Autowired @Autowired
private PlatAlarmConfigService platAlarmConfigService; private PlatAlarmConfigService platAlarmConfigService;
...@@ -104,7 +110,11 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe ...@@ -104,7 +110,11 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
@Autowired @Autowired
private PlatOrgService platOrgService; private PlatOrgService platOrgService;
@Autowired @Autowired
private PlatDeviceService platDeviceService;
@Autowired
private ShengwangProperties shengwangProperties; private ShengwangProperties shengwangProperties;
@Autowired
private StringRedisTemplate redisTemplate;
@Override @Override
...@@ -590,17 +600,30 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe ...@@ -590,17 +600,30 @@ public class PlatAlarmRecordServiceImpl extends ServiceImpl<PlatAlarmRecordMappe
} }
@Override @Override
public PlatAlarmCallDeviceVO callingDeviceAuthIgnoreRtm(String id) throws Exception { public PlatAlarmCallDeviceVO callingDeviceAuthIgnoreRtm(PlatCallingDeviceDTO dto) {
RtmTokenBuilder2 token = new RtmTokenBuilder2(); String redisResult = redisTemplate.opsForValue().get(REDIS_DEVICE_CALL + dto.getUserId());
RtmTokenBuilder token2 = new RtmTokenBuilder(); if (StringUtils.isNotEmpty(redisResult)) {
String result2 = token2.buildToken(shengwangProperties.getAppId(), shengwangProperties.getAppCertificate(), "0", RtmTokenBuilder.Role.Rtm_User, shengwangProperties.getTokenExpirationInSeconds()); return JSON.parseObject(redisResult,PlatAlarmCallDeviceVO.class);
//String result = token.buildToken(shengwangProperties.getAppId(), shengwangProperties.getAppCertificate(), id, shengwangProperties.getTokenExpirationInSeconds()); }
PlatAlarmCallDeviceVO platAlarmCallDeviceVO = new PlatAlarmCallDeviceVO(); PlatAlarmCallDeviceVO platAlarmCallDeviceVO = new PlatAlarmCallDeviceVO();
PlatAlarmRecord platAlarmRecord = getById(dto.getId());
if (platAlarmRecord == null) {
throw new RuntimeException("告警记录为空:" + dto.getId());
}
String deviceId = platAlarmRecord.getDeviceId();
PlatDevice platDevice = platDeviceService.getById(deviceId);
platAlarmCallDeviceVO.setDeviceId(platDevice.getOriDeviceId());
platAlarmCallDeviceVO.setUserId(dto.getUserId());
RtmTokenBuilder2 token = new RtmTokenBuilder2();
String result = token.buildToken(shengwangProperties.getAppId(), shengwangProperties.getAppCertificate(), dto.getUserId(), shengwangProperties.getTokenExpirationInSeconds());
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss"); DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
String format = now.format(dateTimeFormatter); String format = now.format(dateTimeFormatter);
platAlarmCallDeviceVO.setAccessToken(result2); platAlarmCallDeviceVO.setAccessToken(result);
platAlarmCallDeviceVO.setChannelName(format); platAlarmCallDeviceVO.setChannelName(format);
platAlarmCallDeviceVO.setChannelName(shengwangProperties.getAppId());
redisTemplate.opsForValue().set(REDIS_DEVICE_CALL + dto.getUserId(),JSON.toJSONString(platAlarmCallDeviceVO),
shengwangProperties.getTokenExpirationInSeconds(),TimeUnit.SECONDS);
return platAlarmCallDeviceVO; return platAlarmCallDeviceVO;
} }
} }
package com.makeit.service.platform.elder.impl; package com.makeit.service.platform.elder.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.makeit.common.entity.BaseEntity; import com.makeit.common.entity.BaseEntity;
import com.makeit.entity.platform.device.PlatDevice; import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.entity.platform.elder.PlatElder; import com.makeit.entity.platform.elder.PlatElder;
import com.makeit.entity.platform.elder.PlatElderCoordinateRecord; import com.makeit.entity.platform.elder.PlatElderCoordinateRecord;
import com.makeit.entity.platform.space.PlatRegionSetting;
import com.makeit.entity.platform.space.PlatRegionSettingFix;
import com.makeit.mapper.platform.elder.PlatElderCoordinateRecordMapper; import com.makeit.mapper.platform.elder.PlatElderCoordinateRecordMapper;
import com.makeit.service.platform.elder.PlatElderCoordinateRecordService; import com.makeit.service.platform.elder.PlatElderCoordinateRecordService;
import com.makeit.service.platform.elder.PlatElderDayReportDayService; import com.makeit.service.platform.elder.PlatElderDayReportDayService;
import com.makeit.service.platform.elder.PlatElderRealTimeService; import com.makeit.service.platform.elder.PlatElderRealTimeService;
import com.makeit.service.platform.elder.PlatElderService; import com.makeit.service.platform.elder.PlatElderService;
import com.makeit.service.platform.space.PlatRegionSettingFixService; import com.makeit.service.platform.space.PlatRegionSettingFixService;
import com.makeit.service.platform.space.PlatRegionSettingService;
import com.makeit.utils.data.convert.StreamUtil; import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.time.LocalDateTimeUtils; import com.makeit.utils.time.LocalDateTimeUtils;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO; import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* <p> * <p>
...@@ -42,6 +48,8 @@ public class PlatElderCoordinateRecordServiceImpl extends ServiceImpl<PlatElderC ...@@ -42,6 +48,8 @@ public class PlatElderCoordinateRecordServiceImpl extends ServiceImpl<PlatElderC
@Autowired @Autowired
private PlatRegionSettingFixService platRegionSettingFixService; private PlatRegionSettingFixService platRegionSettingFixService;
@Autowired @Autowired
private PlatRegionSettingService platRegionSettingService;
@Autowired
private PlatElderRealTimeService platElderRealTimeService; private PlatElderRealTimeService platElderRealTimeService;
@Override @Override
...@@ -56,14 +64,32 @@ public class PlatElderCoordinateRecordServiceImpl extends ServiceImpl<PlatElderC ...@@ -56,14 +64,32 @@ public class PlatElderCoordinateRecordServiceImpl extends ServiceImpl<PlatElderC
if (CollectionUtils.isEmpty(elderList)) { if (CollectionUtils.isEmpty(elderList)) {
return; return;
} }
List<String> elderIdList = StreamUtil.map(elderList, BaseEntity::getId); PlatElderCoordinateRecord platElderCoordinateRecord;
PlatRegionSettingFix platRegionSettingFix;
List<PlatRegionSetting> platRegionSettingList = platRegionSettingService.list(new QueryWrapper<>());
Map<String, PlatRegionSetting> platRegionSettingMap = StreamUtil.toMap(platRegionSettingList, PlatRegionSetting::getRoomId);
for (PlatElder platElder : elderList) { for (PlatElder platElder : elderList) {
PlatDevice platDevice = platElderRealTimeService.getBreathDevice(platElder.getId(), null);
List<PlatElderCoordinateVO> elderCoordinateVOList = platElderDayReportDayService.coordinateList(platElder.getId(), null, datStart, dayEnd); List<PlatElderCoordinateVO> elderCoordinateVOList = platElderDayReportDayService.coordinateList(platElder.getId(), null, datStart, dayEnd);
for (PlatElderCoordinateVO vo : elderCoordinateVOList) {
platElderCoordinateRecord = new PlatElderCoordinateRecord();
BeanUtils.copyProperties(vo,platElderCoordinateRecord);
platElderCoordinateRecord.setTrack(JSON.toJSONString(vo.getTrack()));
platElderCoordinateRecord.setReportTime(vo.getTimestamp());
platElderCoordinateRecord.setIotDeviceId(vo.getOriDeviceId());
platElderCoordinateRecord.setDeviceId(vo.getDeviceId());
platElderCoordinateRecord.setElderId(platElder.getId());
platElderCoordinateRecord.setTenantId(platElder.getTenantId());
save(platElderCoordinateRecord);
}
PlatRegionSetting platRegionSetting = platRegionSettingMap.get(platElder.getRoomId());
if (platRegionSetting != null) {
platRegionSettingFix = new PlatRegionSettingFix();
BeanUtils.copyProperties(platRegionSetting,platRegionSettingFix);
platRegionSettingFix.setElderId(platElder.getId());
platRegionSettingFix.setHappenDate(yesDate.toString());
platRegionSettingFixService.save(platRegionSettingFix);
}
} }
} }
} }
...@@ -434,7 +434,7 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe ...@@ -434,7 +434,7 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
// vo.setX(new BigDecimal(i.getProperties().getDistance()).multiply(new BigDecimal(Math.cos(i.getProperties().getAngle()) + "")).setScale(2, RoundingMode.HALF_UP)); // vo.setX(new BigDecimal(i.getProperties().getDistance()).multiply(new BigDecimal(Math.cos(i.getProperties().getAngle()) + "")).setScale(2, RoundingMode.HALF_UP));
// vo.setY(new BigDecimal(i.getProperties().getDistance()).multiply(new BigDecimal(Math.sin(i.getProperties().getAngle()) + "")).setScale(2, RoundingMode.HALF_UP)); // vo.setY(new BigDecimal(i.getProperties().getDistance()).multiply(new BigDecimal(Math.sin(i.getProperties().getAngle()) + "")).setScale(2, RoundingMode.HALF_UP));
vo.setTimestamp(i.getTimestamp());
vo.setDistance(i.getProperties().getDistance()); vo.setDistance(i.getProperties().getDistance());
vo.setAngle(i.getProperties().getAngle()); vo.setAngle(i.getProperties().getAngle());
vo.setType(1); vo.setType(1);
...@@ -455,7 +455,7 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe ...@@ -455,7 +455,7 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
voList.addAll(StreamUtil.map(fallList, i -> { voList.addAll(StreamUtil.map(fallList, i -> {
PlatElderCoordinateVO vo = new PlatElderCoordinateVO(); PlatElderCoordinateVO vo = new PlatElderCoordinateVO();
vo.setTimestamp(i.getTimestamp());
vo.setTrack(i.getProperties().getTrack()); vo.setTrack(i.getProperties().getTrack());
vo.setDeviceId(e.getId()); vo.setDeviceId(e.getId());
vo.setType(2); vo.setType(2);
......
...@@ -33,12 +33,12 @@ public class PlatElderReportTask { ...@@ -33,12 +33,12 @@ public class PlatElderReportTask {
log.info("生成长者每日呼吸,异常情况结束"); log.info("生成长者每日呼吸,异常情况结束");
} }
// @Scheduled(cron = "0 0 1 * * ?") @Scheduled(cron = "0 30 1 * * ?")
@TenantIdIgnore @TenantIdIgnore
public void coordinateRecordTask() { public void coordinateRecordTask() {
log.info("开始生成长者每日呼吸,异常情况"); log.info("开始生成长者每日实时定位");
platElderCoordinateRecordService.coordinateRecordTask(); platElderCoordinateRecordService.coordinateRecordTask();
log.info("生成长者每日呼吸,异常情况结束"); log.info("生成长者每日实时定位结束");
} }
......
...@@ -9,4 +9,9 @@ public class PlatAlarmCallDeviceVO { ...@@ -9,4 +9,9 @@ public class PlatAlarmCallDeviceVO {
private String accessToken; private String accessToken;
private String channelName; private String channelName;
private String userId;
private String deviceId;
private String appId;
} }
...@@ -25,6 +25,8 @@ public class PlatElderCoordinateVO { ...@@ -25,6 +25,8 @@ public class PlatElderCoordinateVO {
private Integer angle; private Integer angle;
@ApiModelProperty("安装方式") @ApiModelProperty("安装方式")
private Integer mount; private Integer mount;
@ApiModelProperty("上报时间")
private Long timestamp;
@ApiModelProperty("跌倒设备轨迹") @ApiModelProperty("跌倒设备轨迹")
private List<Integer> track; private List<Integer> track;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment