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