查询一个月内所有的节假日
@Override
public List<CalendarVO> selectCalendarByMonth(Date date) {
List<CalendarVO> list = new ArrayList<CalendarVO>();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int aa = cal.get(Calendar.YEAR);
int bb = cal.get(Calendar.MONTH) + 1;
CalendarUtils utils = new CalendarUtils();
for (int i = 1; i <= cal.getActualMaximum(Calendar.DAY_OF_MONTH); i++) {
CalendarVO c = new CalendarVO();
cal.set(Calendar.DAY_OF_MONTH, i);
c.setSolarCalendar(DateUtil.format(cal.getTime(), DateUtil.PATTERN_DATE));
String[] lunarDates = utils.getLunarDate(aa,bb,i);
c.setLunarCalendar(lunarDates[0]);
c.setHoliday(lunarDates[1].trim());
c.setSolarTerms(lunarDates[2].trim());
c.setDayOfYear(cal.get(Calendar.DAY_OF_YEAR));
list.add(c);
}
Map<String,Object> key = new HashMap<String,Object>();
cal.set(Calendar.DATE, 1);
key.put("startDate", cal.getTime());
cal.set(Calendar.DATE, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
key.put("endDate", cal.getTime());
List<HolidayVO> holidayList = baseMapper.selectHolidayByMonth(key);
for(Holiday h:holidayList) {
myHoliday(h,list);
}
return list;
}
/**
* 节日填充到日历里面
* @param h 节日
* @param list
*/
private void myHoliday(Holiday h,List<CalendarVO> list) {
LocalDate s = h.getStartDate();
LocalDate e = h.getEndDate();
//获取总共有多少天
int diff = e.getDayOfYear()- s.getDayOfYear();
int[] dates = new int[diff+1];
for(int i=0;i<(diff+1);i++) {
dates[i] = s.getDayOfYear()+i;
}
for(int i=0;i<dates.length;i++) {
for(CalendarVO v:list){
if(dates[i]==v.getDayOfYear()) {
if(StringUtils.isBlank(v.getMyholiday())) {
v.setMyholiday(h.getHolidayName());
}else {
v.setMyholiday(v.getMyholiday()+","+h.getHolidayName());
}
break;
}
}
}
}