package com.moral.api.pojo.form.aqi;
|
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.moral.constant.Constants;
|
import com.moral.util.DateUtils;
|
import lombok.Data;
|
import org.springframework.format.annotation.DateTimeFormat;
|
|
import java.util.Date;
|
|
/**
|
* @ClassName AirQualityForm
|
* @Description 空气质量同期对比实体
|
* @Author 陈凯裕
|
* @Date 2022/1/12 15:11
|
* @Version TODO
|
**/
|
@Data
|
public class AirQualityComparisonForm {
|
/*
|
* 地区码 查询28城市无需传入
|
* */
|
Integer regionCode;
|
|
/*
|
* 地区类型 city为市内城市,province为省内城市,28为28城市
|
* */
|
String regionType;
|
|
/*
|
* 对比类型,yoy为同比 mom为环比
|
* */
|
String comparisonType;
|
|
/*
|
* 查询年份数据的时候需要传递,非必传
|
* */
|
String dateType;
|
|
/*
|
* 查询年份数据的时候需要传递,非必传
|
* */
|
String time;
|
|
/*
|
* 自定义开始时间,非必传
|
* */
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
|
Date startDate;
|
|
/*
|
* 自定义结束时间,非必传
|
* */
|
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
|
Date endDate;
|
|
/*
|
* 对比开始时间
|
* */
|
Date comparisonStartDate;
|
|
/*
|
* 对比结束时间
|
* */
|
Date comparisonEndDate;
|
|
public boolean valid() {
|
//校验地区类型对应的地区码
|
if(regionType==null||comparisonType==null)
|
return false;
|
if (!regionType.equals(Constants.TWENTY_EIGHT_CITIES) && regionCode == null)
|
return false;
|
if (regionType.equals(Constants.CITY_TYPE)) {
|
String regionCodeStr = regionCode.toString();
|
if (!regionCodeStr.substring(regionCodeStr.length() - 2, regionCodeStr.length()).equals("00"))
|
return false;
|
}
|
if (regionType.equals(Constants.PROVINCE_TYPE)) {
|
String regionCodeStr = regionCode.toString();
|
regionCode = Integer.parseInt(regionCodeStr.substring(0,regionCodeStr.length()-4)+"0000");
|
}
|
//时间转换
|
if(dateType.equals(Constants.MONTH)){
|
Date date = DateUtils.getDate(time, "yyyy-MM");
|
startDate = DateUtils.getFirstDayOfMonth(date);
|
endDate = DateUtils.getLastDayOfMonth(date);
|
}
|
|
if(dateType.equals(Constants.YEAR)){
|
Date date = DateUtils.getDate(time, "yyyy");
|
startDate = DateUtils.getFirstDayOfYear(date);
|
endDate = DateUtils.getLastDayOfYear(date);
|
}
|
|
if(startDate==null||endDate==null)
|
return false;
|
|
calculateComparisonDate();
|
|
return true;
|
}
|
|
/**
|
* @Description: 计算对比时间
|
* @Param: [startDate, endDate]
|
* @return: void
|
* @Author: 陈凯裕
|
* @Date: 2022/1/14
|
*/
|
private void calculateComparisonDate(){
|
if(comparisonType.equals(Constants.MOM)){
|
comparisonStartDate = DateUtils.addMonths(startDate,-1);
|
comparisonEndDate = DateUtils.addMonths(endDate,-1);
|
}else{
|
comparisonStartDate = DateUtils.addMonths(startDate,-12);
|
comparisonEndDate = DateUtils.addMonths(endDate,-12);
|
}
|
}
|
}
|