package com.xy.dto;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.util.StrUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xy.utils.PageBean;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
/**
*
* 设备统计数据
*
*
* @author lijin
* @since 2023-01-11
*/
public class DeviceDataDto {
@Data
@Accessors(chain = true)
public static class DayChartDto {
@ApiModelProperty(value = "商户ID")
private Long mercId;
@ApiModelProperty(value = "统计类型(day,month,year)", required = true)
@NotNull(message = "统计类型不能为空")
private String type;
@NotNull(message = "开始时间不能为空")
@ApiModelProperty(value = "开始时间", required = true)
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate beginDate;
@NotNull(message = "结束时间不能为空")
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "结束时间", required = true)
private LocalDate endDate;
public Integer getBeginInt() {
return Integer.valueOf(StrUtil.replace(beginDate.toString(), "-", ""));
}
public Integer getEndDateInt() {
return Integer.valueOf(StrUtil.replace(endDate.toString(), "-", ""));
}
}
@Data
@Accessors(chain = true)
public static class DayChartVo {
@ApiModelProperty("时间")
private Integer time;
@ApiModelProperty("笔数")
private Integer num;
@ApiModelProperty("销售额(分)")
private Integer totalMoney;
@ApiModelProperty("销售额(元)")
private BigDecimal totalMoneyYuan;
public BigDecimal getTotalMoneyYuan() {
return BigDecimal.valueOf(totalMoney).divide(new BigDecimal(100));
}
}
@Data
@Accessors(chain = true)
public static class SumCountVo {
@ApiModelProperty(value = "营业额;单位分")
private Integer salesMoney;
@ApiModelProperty(value = "销售笔数")
private Integer salesCount;
@ApiModelProperty(value = "销售商品数")
private Integer goodsCount;
@ApiModelProperty(value = "退款金额;单位分")
private Integer refundMoney;
@ApiModelProperty(value = "退款笔数")
private Integer refundCount;
@ApiModelProperty(value = "风险订单数")
private Integer riskCount;
@ApiModelProperty(value = "0元订单笔数")
private Integer zeroCount;
}
@Data
@Accessors(chain = true)
public static class SumCountDto {
@ApiModelProperty(value = "商户ID", required = true)
private Long mercId;
@NotNull(message = "统计类型不能为空")
@ApiModelProperty(value = "统计类型", required = true)
private String type;
@NotNull(message = "排序字段不能为空")
@ApiModelProperty(value = "排序字段", required = true)
private String orderByKey;
@NotNull(message = "排序方式不能为空")
@ApiModelProperty(value = "排序方式", required = true)
private String orderBy;
@ApiModelProperty("开始时间")
private String beginDate;
@ApiModelProperty("结束时间")
private String endDate;
@ApiModelProperty(value = "商户拥有的设备ID")
private List mercDeviceIds;
public String getBeginDate() {
return StrUtil.replace(beginDate, "-", "");
}
public String getEndDate() {
return StrUtil.replace(endDate, "-", "");
}
}
@Data
@Accessors(chain = true)
public static class SumPageDto extends SumCountDto {
@NotNull(message = "分页信息不能为空")
@ApiModelProperty(value = "分页信息", required = true)
private PageBean page;
@ApiModelProperty(value = "商户拥有的设备ID")
private List mercDeviceIds;
}
@Data
@Accessors(chain = true)
public static class SumPageVo {
@ApiModelProperty(value = "平台商品id")
private Long deviceId;
@ApiModelProperty(value = "设备名称")
private String deviceName;
@ApiModelProperty(value = "营业额;单位分")
private Integer salesMoney;
@ApiModelProperty(value = "销售笔数")
private Integer salesCount;
@ApiModelProperty(value = "销售商品数")
private Integer goodsCount;
@ApiModelProperty(value = "退款金额;单位分")
private Integer refundMoney;
@ApiModelProperty(value = "退款笔数")
private Integer refundCount;
@ApiModelProperty(value = "风险订单数")
private Integer riskCount;
@ApiModelProperty(value = "0元订单笔数")
private Integer zeroCount;
}
@Data
@Accessors(chain = true)
public static class Page extends Vo {
@ApiModelProperty(value = "分页对象", required = true)
private PageBean page;
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "创建时间-起")
private LocalDate beginCreateTime;
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "创建时间-始")
private LocalDate endCreateTime;
public LocalDateTime getBeginCreateTime() {
return beginCreateTime == null ? null : beginCreateTime.atTime(0, 0, 0);
}
public LocalDateTime getEndCreateTime() {
return endCreateTime == null ? null : endCreateTime.atTime(23, 59, 59);
}
}
@Data
@Accessors(chain = true)
public static class SaveOrAccum extends Vo {
@NotNull(message = "deviceId不能为空")
@ApiModelProperty(value = "设备ID")
private Long deviceId;
}
@Data
@Accessors(chain = true)
public static class Vo {
@ApiModelProperty(value = "id")
private Integer id;
@ApiModelProperty(value = "商户ID")
private Long mercId;
@ApiModelProperty(value = "设备ID")
private Long deviceId;
@ApiModelProperty(value = "统计类型;year|month|day")
private String type;
@ApiModelProperty(value = "统计日期;2022|202206|20220603")
private Integer dateValue;
@ApiModelProperty(value = "营业额;单位分")
private Integer salesMoney;
@ApiModelProperty(value = "销售笔数")
private Integer salesCount;
@ApiModelProperty(value = "销售商品数")
private Integer goodsCount;
@ApiModelProperty(value = "退款金额;单位分")
private Integer refundMoney;
@ApiModelProperty(value = "退款笔数")
private Integer refundCount;
@ApiModelProperty(value = "风险订单数")
private Integer riskCount;
@ApiModelProperty(value = "0元订单笔数")
private Integer zeroCount;
@ApiModelProperty(value = "设备故障数")
private Integer deviceFaultCount;
@ApiModelProperty(value = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
@ApiModelProperty(value = "更新时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
}
@Data
@Accessors(chain = true)
public static class ListDTO {
@ApiModelProperty(value = "商户ID")
private Long mercId;
@ApiModelProperty(value = "设备ID")
private Long deviceId;
@ApiModelProperty(value = "设备ID们")
private List deviceIds;
@ApiModelProperty(value = "统计类型;year|month|day")
private String type;
@ApiModelProperty(value = "统计日期;2022|202206|20220603")
private Integer dateValue;
@ApiModelProperty(value = "营业额;单位分")
private Integer salesMoney;
@ApiModelProperty(value = "销售笔数")
private Integer salesCount;
@ApiModelProperty(value = "销售商品数")
private Integer goodsCount;
@ApiModelProperty(value = "退款金额;单位分")
private Integer refundMoney;
@ApiModelProperty(value = "退款笔数")
private Integer refundCount;
@ApiModelProperty(value = "风险订单数")
private Integer riskCount;
@ApiModelProperty(value = "0元订单笔数")
private Integer zeroCount;
@ApiModelProperty(value = "设备故障数")
private Integer deviceFaultCount;
}
/**
* B端小程序订单分页统计 按天
*/
@Data
@Accessors(chain = true)
public static class MercOrdersDayCountVO {
@ApiModelProperty(value = "总订单数")
private Integer orderNum;
@ApiModelProperty(value = "订单总金额")
private Integer orderTotalAmount;
}
@Data
@Accessors(chain = true)
public static class MercOrdersDayCountDTO {
@JsonFormat(pattern = "yyyy-MM-dd")
@ApiModelProperty(value = "日期(yyyy-MM-dd)")
private DateTime orderDate;
}
@Data
@Accessors(chain = true)
public static class CountByDay {
@ApiModelProperty(value = "设备ID")
private Long deviceId;
@ApiModelProperty(value = "商户ID")
private Long mercId;
@ApiModelProperty(value = "日期")
private String dateValue;
}
@Data
@Accessors(chain = true)
public static class CountByMonth {
@ApiModelProperty(value = "设备ID")
private Long deviceId;
@ApiModelProperty(value = "商户ID")
private Long mercId;
@ApiModelProperty(value = "日期")
private String dateValue;
}
@Data
@Accessors(chain = true)
public static class PageByMercAndDate {
@ApiModelProperty(value = "分页信息", required = true)
private PageBean page;
@NotNull(message = "mercId不能为空")
@ApiModelProperty(value = "商户ID")
private Long mercId;
@NotBlank(message = "type不能为空")
@ApiModelProperty(value = "统计类型;year|month|day")
private String type;
@NotNull(message = "beginDateValue不能为空")
@ApiModelProperty(value = "统计开始日期")
private Integer beginDateValue;
@NotNull(message = "beginDateValue不能为空")
@ApiModelProperty(value = "统计结束日期")
private Integer endDateValue;
@ApiModelProperty(value = "设备ID")
private List deviceId;
}
}