| | |
| | | //生成日历基础数据 |
| | | LinkedHashMap<String, String> baseCalendar = new LinkedHashMap<>(); |
| | | for (LocalDate date : dates) { |
| | | String dayOfWeekChinese = getChineseDayOfWeek(date.getDayOfWeek()); |
| | | String dayOfWeekEnglish = date.getDayOfWeek().getDisplayName(java.time.format.TextStyle.FULL, Locale.ENGLISH); |
| | | System.out.println(date + " - " + dayOfWeekChinese + " (" + dayOfWeekEnglish + ")"); |
| | | baseCalendar.put(date+"", ""); |
| | | } |
| | | try { |
| | | List<ApsWorkCalendar> list = apsWorkCalendarMapper.selectApsWorkCalendarList(apsWorkCalendar); |
| | | for (ApsWorkCalendar apsWorkCalendarTemp : list) { |
| | | //工作日 |
| | | if("1".equals(apsWorkCalendarTemp.getType())){ |
| | | //获取日历规则 |
| | | org.postgresql.util.PGobject pgObject = (org.postgresql.util.PGobject) apsWorkCalendarTemp.getContent(); |
| | | JSONArray weekdays = (JSON.parseObject(pgObject.getValue())).getJSONArray("weekdays"); |
| | | HashMap<String, String> weekdaysMap = new HashMap<>(); |
| | | for (int i = 0; i < weekdays.size(); i++) { |
| | | weekdaysMap.put(weekdays.getJSONObject(i).getString("day"), weekdays.getJSONObject(i).getString("work")); |
| | | } |
| | | //根据effectiveDate和expiringDate算出日期范围内的每一天 |
| | | List<LocalDate> datesTemp = getDatesBetween(apsWorkCalendarTemp.getEffectiveDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), apsWorkCalendarTemp.getExpiringDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()); |
| | | for (LocalDate dateTemp: datesTemp) { |
| | | if(baseCalendar.containsKey(dateTemp+"")){ |
| | | if ("y".equals(weekdaysMap.get(dateTemp.getDayOfWeek().getDisplayName(java.time.format.TextStyle.FULL, Locale.ENGLISH)))) { |
| | | baseCalendar.put(dateTemp+"", "工作日"); |
| | | } else if("n".equals(weekdaysMap.get(dateTemp.getDayOfWeek().getDisplayName(java.time.format.TextStyle.FULL, Locale.ENGLISH)))) { |
| | | baseCalendar.put(dateTemp+"", "休息日"); |
| | | } |
| | | org.postgresql.util.PGobject pgObjectWeekdays = (org.postgresql.util.PGobject) apsWorkCalendarTemp.getContent(); |
| | | JSONArray weekdays = (JSON.parseObject(pgObjectWeekdays.getValue())).getJSONArray("weekdays"); |
| | | HashMap<String, String> weekdaysMap = new HashMap<>(); |
| | | for (int i = 0; i < weekdays.size(); i++) { |
| | | weekdaysMap.put(weekdays.getJSONObject(i).getString("day"), weekdays.getJSONObject(i).getString("work")); |
| | | } |
| | | List<LocalDate> datesTempWeekdays = getDatesBetween(apsWorkCalendarTemp.getEffectiveDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), apsWorkCalendarTemp.getExpiringDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()); |
| | | for (LocalDate dateTemp: datesTempWeekdays) { |
| | | if(baseCalendar.containsKey(dateTemp+"")){ |
| | | if ("y".equals(weekdaysMap.get(dateTemp.getDayOfWeek().getDisplayName(java.time.format.TextStyle.FULL, Locale.ENGLISH)))) { |
| | | baseCalendar.put(dateTemp+"", "工作日"); |
| | | } else if("n".equals(weekdaysMap.get(dateTemp.getDayOfWeek().getDisplayName(java.time.format.TextStyle.FULL, Locale.ENGLISH)))) { |
| | | baseCalendar.put(dateTemp+"", "休息日"); |
| | | } |
| | | } |
| | | }else if("2".equals(apsWorkCalendarTemp.getType())){ |
| | | //休息日 |
| | | org.postgresql.util.PGobject pgObject = (org.postgresql.util.PGobject) apsWorkCalendarTemp.getContent(); |
| | | JSONObject holidays = (JSON.parseObject(pgObject.getValue())).getJSONObject("holidays"); |
| | | List<LocalDate> datesTemp = getDatesBetween(holidays.getObject("startdate", LocalDate.class), holidays.getObject("enddate", LocalDate.class)); |
| | | for (LocalDate dateTemp: datesTemp) { |
| | | if(baseCalendar.containsKey(dateTemp+"")){ |
| | | baseCalendar.put(dateTemp+"", "节假日"); |
| | | } |
| | | //休息日 |
| | | org.postgresql.util.PGobject pgObjectHolidays = (org.postgresql.util.PGobject) apsWorkCalendarTemp.getHolidays(); |
| | | if(pgObjectHolidays!=null){ |
| | | JSONArray holidays = JSONArray.parse(pgObjectHolidays.getValue()); |
| | | for (int i = 0; i < holidays.size(); i++){ |
| | | JSONObject h = holidays.getJSONObject(i); |
| | | List<LocalDate> datesTempHolidays = getDatesBetween(h.getObject("startdate", LocalDate.class), h.getObject("enddate", LocalDate.class)); |
| | | for (LocalDate dateTemp: datesTempHolidays) { |
| | | if(baseCalendar.containsKey(dateTemp+"")){ |
| | | baseCalendar.put(dateTemp+"", "节假日"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | return res; |
| | | } |
| | | return res; |
| | | } |
| | | |
| | | @Override |
| | | public int deleteApsWorkCalendar(ApsWorkCalendar apsWorkCalendar){ |
| | | return apsWorkCalendarMapper.deleteApsWorkCalendar(apsWorkCalendar); |
| | | } |
| | | |
| | | private List<LocalDate> getCalendarData(int year, int month) { |
| | |
| | | List<LocalDate> dates = getDatesBetween(startDate, endDate); |
| | | |
| | | // 打印结果 |
| | | for (LocalDate date : dates) { |
| | | String dayOfWeekChinese = getChineseDayOfWeek(date.getDayOfWeek()); |
| | | String dayOfWeekEnglish = date.getDayOfWeek().getDisplayName(java.time.format.TextStyle.FULL, Locale.ENGLISH); |
| | | System.out.println(date + " - " + dayOfWeekChinese + " (" + dayOfWeekEnglish + ")"); |
| | | } |
| | | // for (LocalDate date : dates) { |
| | | // String dayOfWeekChinese = getChineseDayOfWeek(date.getDayOfWeek()); |
| | | // String dayOfWeekEnglish = date.getDayOfWeek().getDisplayName(java.time.format.TextStyle.FULL, Locale.ENGLISH); |
| | | // System.out.println(date + " - " + dayOfWeekChinese + " (" + dayOfWeekEnglish + ")"); |
| | | // } |
| | | return dates; |
| | | } |
| | | |