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