package com.aps.core.service.impl; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.aps.common.core.utils.DateUtils; import com.aps.common.security.utils.SecurityUtils; import com.aps.core.domain.ApsWorkCalendar; import com.aps.core.mapper.ApsWorkCalendarMapper; import com.aps.core.service.IApsWorkCalendarService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.time.DayOfWeek; import java.time.LocalDate; import java.time.YearMonth; import java.util.List; /** * 日历管理Service业务层处理 * * @author hjy * @date 2025-04-22 */ @Service public class ApsWorkCalendarServiceImpl implements IApsWorkCalendarService { @Autowired private ApsWorkCalendarMapper apsWorkCalendarMapper; /** * 查询日历管理 * * @param id 日历管理主键 * @return 日历管理 */ @Override public ApsWorkCalendar selectApsWorkCalendarById(Long id) { return apsWorkCalendarMapper.selectApsWorkCalendarById(id); } /** * 查询日历管理列表 * * @param apsWorkCalendar 日历管理 * @return 日历管理 */ @Override public List selectApsWorkCalendarList(ApsWorkCalendar apsWorkCalendar) { return apsWorkCalendarMapper.selectApsWorkCalendarList(apsWorkCalendar); } /** * 新增日历管理 * * @param apsWorkCalendar 日历管理 * @return 结果 */ @Override public int insertApsWorkCalendar(ApsWorkCalendar apsWorkCalendar) { apsWorkCalendar.setCreateTime(DateUtils.getNowDate()); apsWorkCalendar.setCreateBy(SecurityUtils.getUsername()); return apsWorkCalendarMapper.insertApsWorkCalendar(apsWorkCalendar); } /** * 修改日历管理 * * @param apsWorkCalendar 日历管理 * @return 结果 */ @Override public int updateApsWorkCalendar(ApsWorkCalendar apsWorkCalendar) { apsWorkCalendar.setUpdateTime(DateUtils.getNowDate()); apsWorkCalendar.setUpdateBy(SecurityUtils.getUsername()); return apsWorkCalendarMapper.updateApsWorkCalendar(apsWorkCalendar); } /** * 批量删除日历管理 * * @param ids 需要删除的日历管理主键 * @return 结果 */ @Override public int deleteApsWorkCalendarByIds(Long[] ids) { return apsWorkCalendarMapper.deleteApsWorkCalendarByIds(ids); } /** * 删除日历管理信息 * * @param id 日历管理主键 * @return 结果 */ @Override public int deleteApsWorkCalendarById(Long id) { return apsWorkCalendarMapper.deleteApsWorkCalendarById(id); } public JSONArray getWorkCalendar(String applicableFactory, String datetime) { JSONArray res = new JSONArray(); // 获取年份和月份 String[] parts = datetime.split("-"); int year = Integer.parseInt(parts[0]); int month = Integer.parseInt(parts[1]); // 获取指定年份和月份的天数 YearMonth yearMonth = YearMonth.of(year, month); int daysInMonth = yearMonth.lengthOfMonth(); ApsWorkCalendar apsWorkCalendar = new ApsWorkCalendar(); apsWorkCalendar.setApplicableFactory(applicableFactory); apsWorkCalendar.setEffectiveDate(DateUtils.parseDate(datetime+" 00:00:00")); apsWorkCalendar.setExpiringDate(DateUtils.parseDate(datetime+" 23:59:59")); List list = apsWorkCalendarMapper.selectApsWorkCalendarList(apsWorkCalendar); if (list.isEmpty()) { // 循环遍历当月的每一天,获取星期信息 for (int day = 1; day <= daysInMonth; day++) { LocalDate date = LocalDate.of(year, month, day); DayOfWeek dayOfWeek = date.getDayOfWeek(); JSONObject dayInfo = new JSONObject(); dayInfo.put("date", date.toString()); dayInfo.put("dayOfWeek", dayOfWeek.toString()); if (dayOfWeek == DayOfWeek.SATURDAY || dayOfWeek == DayOfWeek.SUNDAY) { dayInfo.put("isWorkDay", false); } else { dayInfo.put("isWorkDay", true); } res.add(dayInfo); } } return res; } }