| | |
| | | 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; |
| | | } |
| | | |
| | | @Override |
| | | public int deleteApsWorkCalendar(ApsWorkCalendar apsWorkCalendar){ |
| | | return apsWorkCalendarMapper.deleteApsWorkCalendar(apsWorkCalendar); |
| | | } |
| | | |
| | | private List<LocalDate> getCalendarData(int year, int month) { |
| | | // 获取4月1号的当周的周日 |
| | | LocalDate startDate = LocalDate.of(year, month, 1) |