package com.doumee.dao.dto; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.util.Calendar; import java.util.Date; @Data @ApiModel("数据看板查询条件") public class DataBoardQueryDTO implements Serializable { @ApiModelProperty(value = "日期段类型:0=今日,1=近七天,2=近30天,3=近半年,4=近一年,5=自定义", required = true) private Integer dateType; @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "自定义开始日期(dateType=5时必传)") private Date startDate; @JsonFormat(pattern = "yyyy-MM-dd") @ApiModelProperty(value = "自定义结束日期(dateType=5时必传)") private Date endDate; @ApiModelProperty(value = "门店主键(可选)") private Integer shopId; public void resolveDateRange() { if (dateType != null && dateType == 5) { if (startDate != null) { Calendar start = Calendar.getInstance(); start.setTime(startDate); start.set(Calendar.HOUR_OF_DAY, 0); start.set(Calendar.MINUTE, 0); start.set(Calendar.SECOND, 0); start.set(Calendar.MILLISECOND, 0); this.startDate = start.getTime(); } if (endDate != null) { Calendar end = Calendar.getInstance(); end.setTime(endDate); end.set(Calendar.HOUR_OF_DAY, 23); end.set(Calendar.MINUTE, 59); end.set(Calendar.SECOND, 59); end.set(Calendar.MILLISECOND, 999); this.endDate = end.getTime(); } return; } Calendar now = Calendar.getInstance(); now.set(Calendar.MINUTE, 0); now.set(Calendar.SECOND, 0); now.set(Calendar.MILLISECOND, 0); now.set(Calendar.HOUR_OF_DAY, 0); Calendar start = Calendar.getInstance(); start.set(Calendar.MINUTE, 0); start.set(Calendar.SECOND, 0); start.set(Calendar.MILLISECOND, 0); start.set(Calendar.HOUR_OF_DAY, 0); switch (dateType != null ? dateType : 0) { case 1: start.add(Calendar.DAY_OF_MONTH, -6); break; case 2: start.add(Calendar.DAY_OF_MONTH, -29); break; case 3: start.add(Calendar.MONTH, -6); break; case 4: start.add(Calendar.YEAR, -1); break; default: // 0=今日,start 已经是今天 break; } this.startDate = start.getTime(); Calendar end = Calendar.getInstance(); end.set(Calendar.HOUR_OF_DAY, 23); end.set(Calendar.MINUTE, 59); end.set(Calendar.SECOND, 59); end.set(Calendar.MILLISECOND, 999); this.endDate = end.getTime(); } }