zhanghl
2025-05-23 dec8951aae400e54f6ee83a8f95867dba9da8af1
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsWorkCalendarServiceImpl.java
@@ -158,33 +158,33 @@
            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 = (JSON.parseObject(pgObjectHolidays.getValue())).getJSONArray("holidays");
                    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+"", "节假日");
                            }
                        }
                    }
                }
@@ -202,6 +202,11 @@
        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)