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); } } }