package cn.com.goldenwater.dcproj.util; import cn.com.goldenwater.dcproj.utils.DateUtils; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang.StringUtils; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.Calendar; import java.util.Map; public class StatisticalUtil { private static final String STTM = "sttm"; private static final String ENTM = "entm"; private static final String DATE_FORMAT = "yyyy-MM-dd"; /** * 设置时间 * * @param paramMap */ public static void setDate(Map paramMap) { // 1. 判断 String sttmStr = MapUtils.getString(paramMap, STTM, ""); String entmStr = MapUtils.getString(paramMap, ENTM, ""); boolean check = StringUtils.isNotBlank(sttmStr) || StringUtils.isNotBlank(entmStr); if (check) { paramMap.put(STTM, sttmStr.length() > 10 ? sttmStr.substring(0, 10) : sttmStr); paramMap.put(ENTM, entmStr.length() > 10 ? entmStr.substring(0, 10) : entmStr); return; } // 2. 判断 时间类别 String timeType = MapUtils.getString(paramMap, "timeType"); if (StringUtils.isBlank(timeType)) { return; } if(timeType.contains("_")){ //自定义时间段 String[] dateStr = timeType.split("_"); if( 2 == dateStr.length){ paramMap.put(STTM, dateStr[0]); paramMap.put(ENTM, dateStr[1]); return ; } } Calendar sttm = Calendar.getInstance(); switch (timeType) { // 近一个月 case "1": sttm.add(Calendar.MONTH, -1); break; // 近三个月 case "2": sttm.add(Calendar.MONTH, -3); break; // 近半年 case "3": sttm.add(Calendar.MONTH, -6); break; // 近一年 case "4": sttm.add(Calendar.YEAR, -1); break; case "6": sttm.set(Integer.parseInt(DateUtils.getToday("yyyy")), Calendar.JANUARY, 1); break; case "7": // 按年度 break; default: return; } paramMap.put(STTM, DateUtils.Calendar2Str(sttm, DATE_FORMAT)); paramMap.put(ENTM, DateUtils.getToday(DATE_FORMAT)); if("7".equals(timeType)){ // 福建省 督查首页 按年份统计 Object year = paramMap.get("year"); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate startDate = null ; if(null != year){ try { startDate = LocalDate.parse(year.toString()+"-01-01", dtf); } catch (Exception e) { startDate = LocalDate.now().withMonth(1).withDayOfMonth(1); } } if(null == startDate){ startDate = LocalDate.now().withMonth(1).withDayOfMonth(1); } LocalDate endDate = startDate.plusYears(1L).minusDays(1L) ; paramMap.put(STTM, startDate.format(dtf)); paramMap.put(ENTM, endDate.format(dtf)); paramMap.put("year",startDate.getYear()); } } }