58dc8ea8942fac26f7d6e9e40d614812e5844060.svn-base 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package cn.com.goldenwater.dcproj.util;
  2. import cn.com.goldenwater.dcproj.utils.DateUtils;
  3. import org.apache.commons.collections.MapUtils;
  4. import org.apache.commons.lang.StringUtils;
  5. import java.time.LocalDate;
  6. import java.time.format.DateTimeFormatter;
  7. import java.util.Calendar;
  8. import java.util.Map;
  9. public class StatisticalUtil {
  10. private static final String STTM = "sttm";
  11. private static final String ENTM = "entm";
  12. private static final String DATE_FORMAT = "yyyy-MM-dd";
  13. /**
  14. * 设置时间
  15. *
  16. * @param paramMap
  17. */
  18. public static void setDate(Map<String, Object> paramMap) {
  19. // 1. 判断
  20. String sttmStr = MapUtils.getString(paramMap, STTM, "");
  21. String entmStr = MapUtils.getString(paramMap, ENTM, "");
  22. boolean check = StringUtils.isNotBlank(sttmStr) || StringUtils.isNotBlank(entmStr);
  23. if (check) {
  24. paramMap.put(STTM, sttmStr.length() > 10 ? sttmStr.substring(0, 10) : sttmStr);
  25. paramMap.put(ENTM, entmStr.length() > 10 ? entmStr.substring(0, 10) : entmStr);
  26. return;
  27. }
  28. // 2. 判断 时间类别
  29. String timeType = MapUtils.getString(paramMap, "timeType");
  30. if (StringUtils.isBlank(timeType)) {
  31. return;
  32. }
  33. if(timeType.contains("_")){
  34. //自定义时间段
  35. String[] dateStr = timeType.split("_");
  36. if( 2 == dateStr.length){
  37. paramMap.put(STTM, dateStr[0]);
  38. paramMap.put(ENTM, dateStr[1]);
  39. return ;
  40. }
  41. }
  42. Calendar sttm = Calendar.getInstance();
  43. switch (timeType) {
  44. // 近一个月
  45. case "1":
  46. sttm.add(Calendar.MONTH, -1);
  47. break;
  48. // 近三个月
  49. case "2":
  50. sttm.add(Calendar.MONTH, -3);
  51. break;
  52. // 近半年
  53. case "3":
  54. sttm.add(Calendar.MONTH, -6);
  55. break;
  56. // 近一年
  57. case "4":
  58. sttm.add(Calendar.YEAR, -1);
  59. break;
  60. case "6":
  61. sttm.set(Integer.parseInt(DateUtils.getToday("yyyy")), Calendar.JANUARY, 1);
  62. break;
  63. case "7":
  64. // 按年度
  65. break;
  66. default:
  67. return;
  68. }
  69. paramMap.put(STTM, DateUtils.Calendar2Str(sttm, DATE_FORMAT));
  70. paramMap.put(ENTM, DateUtils.getToday(DATE_FORMAT));
  71. if("7".equals(timeType)){
  72. // 福建省 督查首页 按年份统计
  73. Object year = paramMap.get("year");
  74. DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
  75. LocalDate startDate = null ;
  76. if(null != year){
  77. try {
  78. startDate = LocalDate.parse(year.toString()+"-01-01", dtf);
  79. } catch (Exception e) {
  80. startDate = LocalDate.now().withMonth(1).withDayOfMonth(1);
  81. }
  82. }
  83. if(null == startDate){
  84. startDate = LocalDate.now().withMonth(1).withDayOfMonth(1);
  85. }
  86. LocalDate endDate = startDate.plusYears(1L).minusDays(1L) ;
  87. paramMap.put(STTM, startDate.format(dtf));
  88. paramMap.put(ENTM, endDate.format(dtf));
  89. paramMap.put("year",startDate.getYear());
  90. }
  91. }
  92. }