feat:完成app统计报表
parent
29567d00af
commit
6923984f8f
@ -0,0 +1,71 @@
|
|||||||
|
package cn.iocoder.yudao.module.iot.controller.admin.device.enums;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.temporal.TemporalAdjusters;
|
||||||
|
|
||||||
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
|
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.DEVICE_RATE_TREND_PERIOD_INVALID;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public enum DeviceRateTrendPeriodEnum {
|
||||||
|
|
||||||
|
LAST_WEEK("LAST_WEEK", "上周") {
|
||||||
|
@Override
|
||||||
|
public DateRange resolve(LocalDate today) {
|
||||||
|
LocalDate start = today.minusWeeks(1).with(java.time.DayOfWeek.MONDAY);
|
||||||
|
return new DateRange(start, start.plusDays(6));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
THIS_WEEK("THIS_WEEK", "本周") {
|
||||||
|
@Override
|
||||||
|
public DateRange resolve(LocalDate today) {
|
||||||
|
LocalDate start = today.with(java.time.DayOfWeek.MONDAY);
|
||||||
|
return new DateRange(start, today.minusDays(1));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
LAST_7_DAYS("LAST_7_DAYS", "近7日") {
|
||||||
|
@Override
|
||||||
|
public DateRange resolve(LocalDate today) {
|
||||||
|
return new DateRange(today.minusDays(7), today.minusDays(1));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
LAST_MONTH("LAST_MONTH", "上月") {
|
||||||
|
@Override
|
||||||
|
public DateRange resolve(LocalDate today) {
|
||||||
|
LocalDate start = today.minusMonths(1).withDayOfMonth(1);
|
||||||
|
return new DateRange(start, start.with(TemporalAdjusters.lastDayOfMonth()));
|
||||||
|
}
|
||||||
|
},
|
||||||
|
THIS_MONTH("THIS_MONTH", "本月") {
|
||||||
|
@Override
|
||||||
|
public DateRange resolve(LocalDate today) {
|
||||||
|
LocalDate start = today.withDayOfMonth(1);
|
||||||
|
return new DateRange(start, today.minusDays(1));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
private final String code;
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
public abstract DateRange resolve(LocalDate today);
|
||||||
|
|
||||||
|
public static DeviceRateTrendPeriodEnum valueOfCode(String code) {
|
||||||
|
for (DeviceRateTrendPeriodEnum value : values()) {
|
||||||
|
if (value.code.equalsIgnoreCase(code)) {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
throw exception(DEVICE_RATE_TREND_PERIOD_INVALID);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@AllArgsConstructor
|
||||||
|
public static class DateRange {
|
||||||
|
private final LocalDate start;
|
||||||
|
private final LocalDate end;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
package cn.iocoder.yudao.module.iot.controller.admin.device.vo;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Schema(description = "管理后台 - 设备开机率/稼动率趋势点 Response VO")
|
||||||
|
public class DeviceRateTrendPointRespVO {
|
||||||
|
|
||||||
|
@Schema(description = "日期")
|
||||||
|
private String day;
|
||||||
|
|
||||||
|
@Schema(description = "当天整体开机率")
|
||||||
|
private String powerOnRate;
|
||||||
|
|
||||||
|
@Schema(description = "当天整体稼动率")
|
||||||
|
private String utilizationRate;
|
||||||
|
|
||||||
|
@Schema(description = "当天参与统计设备数")
|
||||||
|
private Integer deviceCount;
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue