Commit 2c8f92ba by 罗志长

fix: 平台端长者日报周报坐标

parent e38e0d05
package com.makeit.module.controller.space;
import com.makeit.common.response.ApiResponseEntity;
import com.makeit.common.response.ApiResponseUtils;
import com.makeit.dto.platform.space.PlatRegionSettingDTO;
import com.makeit.dto.platform.space.PlatRegionSettingFixQueryDTO;
import com.makeit.dto.platform.space.PlatRegionSettingQueryDTO;
import com.makeit.service.platform.space.PlatRegionSettingFixService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Api(tags = "区域设置固化")
@RestController
@RequestMapping("/plat/region/setting/fix")
public class PlatRegionSettingFixController {
@Autowired
private PlatRegionSettingFixService platRegionSettingFixService;
@ApiOperation("列表")
@PostMapping("list")
public ApiResponseEntity<List<PlatRegionSettingDTO>> list(@RequestBody PlatRegionSettingFixQueryDTO dto) {
List<PlatRegionSettingDTO> data = platRegionSettingFixService.list(dto);
return ApiResponseUtils.success(data);
}
}
package com.makeit.dto.platform.space;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDate;
import java.time.LocalDateTime;
@Data
@ApiModel("PlatRegionSettingFixQueryDTO")
public class PlatRegionSettingFixQueryDTO {
@ApiModelProperty("报告类型 0:日报 1:周报")
private String reportType;
@ApiModelProperty("长者ID")
private String elderId;
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty("日期 yyyy-MM-dd")
private LocalDate now;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("开始时间 yyyy-MM-dd HH:mm:ss")
private LocalDateTime startTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("结束时间 yyyy-MM-dd HH:mm:ss")
private LocalDateTime endTime;
}
......@@ -41,6 +41,8 @@ public interface PlatElderDayReportDayService {
List<String> failRecordList(PlatElderReportDTO platElderIdDTO);
List<PlatElderCoordinateVO> coordinateList(String elderId, long start, long end);
List<PlatElderCoordinateVO> coordinateList(String elderId, String deviceId, LocalDateTime start, LocalDateTime end);
List<PlatElderCoordinateVO> coordinateList(PlatElderReportDTO platElderIdDTO);
......
package com.makeit.service.platform.elder.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.collect.Lists;
import com.makeit.common.entity.BaseEntity;
......@@ -7,10 +9,7 @@ import com.makeit.dto.platform.elder.PlatElderReportDTO;
import com.makeit.entity.platform.alarm.PlatAlarmRecord;
import com.makeit.entity.platform.alarm.PlatDayDurationRecord;
import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.entity.platform.elder.PlatElder;
import com.makeit.entity.platform.elder.PlatElderBreatheAnalysis;
import com.makeit.entity.platform.elder.PlatElderSleep;
import com.makeit.entity.platform.elder.PlatElderSleepAnalysis;
import com.makeit.entity.platform.elder.*;
import com.makeit.enums.CommonEnum;
import com.makeit.enums.platform.alarm.PlatAlarmConfigEnum;
import com.makeit.module.iot.service.IotProductDeviceService;
......@@ -23,6 +22,7 @@ import com.makeit.service.platform.alarm.PlatDayDurationRecordService;
import com.makeit.service.platform.elder.*;
import com.makeit.service.saas.SaasSleepEvaluateReportService;
import com.makeit.utils.LongTimestampUtil;
import com.makeit.utils.data.convert.BeanDtoVoUtils;
import com.makeit.utils.data.convert.MathUtil;
import com.makeit.utils.data.convert.StreamUtil;
import com.makeit.utils.data.validate.CollectionUtils;
......@@ -31,12 +31,14 @@ import com.makeit.utils.time.LocalDateTimeUtils;
import com.makeit.vo.platform.elder.realtime.PlatElderCoordinateVO;
import com.makeit.vo.platform.elder.realtime.PlatElderRealTimeHeartRespiratoryVO;
import com.makeit.vo.platform.elder.report.day.*;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
......@@ -68,6 +70,8 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
private PlatElderService platElderService;
@Autowired
private SaasSleepEvaluateReportService sleepEvaluateReportService;
@Autowired
private PlatElderCoordinateRecordService platElderCoordinateRecordService;
private static LocalDateTime dayStartNow(LocalDate now) {
return LocalDateTimeUtils.getDayStart(now);
......@@ -380,6 +384,25 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
}
@Override
public List<PlatElderCoordinateVO> coordinateList(String elderId, long start, long end) {
LambdaQueryWrapper<PlatElderCoordinateRecord> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PlatElderCoordinateRecord::getElderId, elderId);
queryWrapper.ge(PlatElderCoordinateRecord::getReportTime, start);
queryWrapper.le(PlatElderCoordinateRecord::getReportTime, end);
List<PlatElderCoordinateRecord> list = platElderCoordinateRecordService.list(queryWrapper);
return list.stream().map(r -> {
PlatElderCoordinateVO platElderCoordinateVO = new PlatElderCoordinateVO();
BeanUtils.copyProperties(r, platElderCoordinateVO);
platElderCoordinateVO.setTimestamp(r.getReportTime());
platElderCoordinateVO.setOriDeviceId(r.getIotDeviceId());
if (StringUtils.isNotBlank(r.getTrack())) {
platElderCoordinateVO.setTrack(JSON.parseArray(r.getTrack(), Integer.class));
}
return platElderCoordinateVO;
}).collect(Collectors.toList());
}
@Override
public List<PlatElderCoordinateVO> coordinateList(String elderId, String deviceId, LocalDateTime start, LocalDateTime end) {
List<PlatDevice> platDeviceListSpace = platElderRealTimeService.getSpaceDevice(elderId, deviceId);
......@@ -445,7 +468,10 @@ public class PlatElderDayReportDayServiceImpl implements PlatElderDayReportDaySe
LocalDateTime start = dayStartNow(now);
LocalDateTime end = dayEndNow(now);
return coordinateList(platElderIdDTO.getElderId(), platElderIdDTO.getDeviceId(), start, end);
long reportTimeStart = start.toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
long reportTimeEnd = end.toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
return coordinateList(platElderIdDTO.getElderId(), reportTimeStart, reportTimeEnd);
}
......
......@@ -29,10 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.time.DayOfWeek;
import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.ArrayList;
......@@ -477,7 +474,11 @@ public class PlatElderDayReportWeekServiceImpl implements PlatElderDayReportWeek
@Override
public List<PlatElderCoordinateVO> coordinateList(PlatElderReportDTO platElderIdDTO) {
return platElderDayReportDayService.coordinateList(platElderIdDTO.getElderId(), platElderIdDTO.getDeviceId(), weekStartDateTime(platElderIdDTO.getStartTime()), weekEndDateTime(platElderIdDTO.getEndTime()));
LocalDateTime start = weekStartDateTime(platElderIdDTO.getStartTime());
LocalDateTime end = weekEndDateTime(platElderIdDTO.getEndTime());
long reportTimeStart = start.toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
long reportTimeEnd = end.toInstant(ZoneOffset.ofHours(8)).toEpochMilli();
return platElderDayReportDayService.coordinateList(platElderIdDTO.getElderId(), reportTimeStart, reportTimeEnd);
}
@Override
......
package com.makeit.service.platform.space;
import com.baomidou.mybatisplus.extension.service.IService;
import com.makeit.dto.platform.space.PlatRegionSettingDTO;
import com.makeit.dto.platform.space.PlatRegionSettingFixQueryDTO;
import com.makeit.entity.platform.space.PlatRegionSettingFix;
import java.util.List;
/**
* <p>
* 区域设置固化 服务类
......@@ -13,4 +17,6 @@ import com.makeit.entity.platform.space.PlatRegionSettingFix;
*/
public interface PlatRegionSettingFixService extends IService<PlatRegionSettingFix> {
List<PlatRegionSettingDTO> list(PlatRegionSettingFixQueryDTO dto);
}
package com.makeit.service.platform.space.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.common.collect.Lists;
import com.makeit.dto.platform.space.PlatRegionSettingDTO;
import com.makeit.dto.platform.space.PlatRegionSettingFixQueryDTO;
import com.makeit.entity.platform.device.PlatDevice;
import com.makeit.entity.platform.space.PlatRegionSettingFix;
import com.makeit.mapper.platform.space.PlatRegionSettingFixMapper;
import com.makeit.service.platform.device.PlatDeviceService;
import com.makeit.service.platform.space.PlatRegionSettingFixService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
/**
* <p>
* 区域设置固化 服务实现类
......@@ -18,4 +34,41 @@ import org.springframework.stereotype.Service;
@Service
public class PlatRegionSettingFixServiceImpl extends ServiceImpl<PlatRegionSettingFixMapper, PlatRegionSettingFix> implements PlatRegionSettingFixService {
@Autowired
private PlatDeviceService platDeviceService;
@Override
public List<PlatRegionSettingDTO> list(PlatRegionSettingFixQueryDTO dto) {
if (StringUtils.isAnyBlank(dto.getReportType(), dto.getElderId())) {
return Lists.newArrayList();
}
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LambdaQueryWrapper<PlatRegionSettingFix> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PlatRegionSettingFix::getElderId, dto.getElderId());
if ("0".equals(dto.getReportType())) {
queryWrapper.eq(PlatRegionSettingFix::getHappenDate, dateTimeFormatter.format(dto.getNow()));
} else {
queryWrapper.ge(PlatRegionSettingFix::getHappenDate, dateTimeFormatter.format(dto.getStartTime()));
queryWrapper.le(PlatRegionSettingFix::getHappenDate, dateTimeFormatter.format(dto.getEndTime()));
}
List<PlatRegionSettingFix> list = this.list(queryWrapper);
list = list.stream().filter(distinctByKey(PlatRegionSettingFix::getDeviceId)).collect(Collectors.toList());
List<String> deviceIds = list.stream().map(PlatRegionSettingFix::getDeviceId).collect(Collectors.toList());
Map<String, PlatDevice> deviceMap = platDeviceService.listByIds(deviceIds).stream().collect(Collectors.toMap(PlatDevice::getId, Function.identity()));
return list.stream().map(p -> {
PlatRegionSettingDTO platRegionSettingDTO = new PlatRegionSettingDTO();
BeanUtils.copyProperties(p, platRegionSettingDTO);
PlatDevice device = deviceMap.getOrDefault(p.getDeviceId(), new PlatDevice());
platRegionSettingDTO.setOriDeviceId(device.getOriDeviceId());
platRegionSettingDTO.setDeviceName(device.getName());
platRegionSettingDTO.setCategory(device.getCategory());
return platRegionSettingDTO;
}).collect(Collectors.toList());
}
private static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) {
Map<Object, Boolean> seen = new ConcurrentHashMap<>();
return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}
}
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