From 9488dcebc30dcdb5234af62976475f5c8b4e27da Mon Sep 17 00:00:00 2001 From: huangjiayang <5265313@qq.com> Date: 星期五, 25 四月 2025 17:02:15 +0800 Subject: [PATCH] 【UPDATE】修改日历模块相关问题 --- aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsWorkCalendarServiceImpl.java | 38 ++++++++++++++++++++++++++++++++++++++ aps-modules/aps-core/src/main/resources/mapper/core/ApsWorkCalendarMapper.xml | 4 ++-- aps-modules/aps-core/src/main/java/com/aps/core/service/IApsWorkCalendarService.java | 9 +++++++++ 3 files changed, 49 insertions(+), 2 deletions(-) diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsWorkCalendarService.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsWorkCalendarService.java index bd2cb96..65e0b50 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsWorkCalendarService.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/IApsWorkCalendarService.java @@ -1,5 +1,6 @@ package com.aps.core.service; +import com.alibaba.fastjson2.JSONArray; import com.aps.core.domain.ApsWorkCalendar; import java.util.List; @@ -59,4 +60,12 @@ * @return 缁撴灉 */ public int deleteApsWorkCalendarById(Long id); + + /** + * 鑾峰彇鏃ュ巻瑙嗗浘 + * @param applicableFactory + * @param datetime + * @return + */ + public JSONArray getWorkCalendar(String applicableFactory, String datetime); } diff --git a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsWorkCalendarServiceImpl.java b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsWorkCalendarServiceImpl.java index 1a152b9..758a32c 100644 --- a/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsWorkCalendarServiceImpl.java +++ b/aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsWorkCalendarServiceImpl.java @@ -1,5 +1,7 @@ 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; @@ -8,6 +10,9 @@ 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; /** @@ -97,4 +102,37 @@ { 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<ApsWorkCalendar> 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; + } } diff --git a/aps-modules/aps-core/src/main/resources/mapper/core/ApsWorkCalendarMapper.xml b/aps-modules/aps-core/src/main/resources/mapper/core/ApsWorkCalendarMapper.xml index dc81ab9..1552fe3 100644 --- a/aps-modules/aps-core/src/main/resources/mapper/core/ApsWorkCalendarMapper.xml +++ b/aps-modules/aps-core/src/main/resources/mapper/core/ApsWorkCalendarMapper.xml @@ -29,8 +29,8 @@ <where> <if test="description != null and description != ''"> and description like '%' || #{description} || '%'</if> <if test="type != null and type != ''"> and type = #{type}</if> - <if test="effectiveDate != null "> and effective_date = #{effectiveDate}</if> - <if test="expiringDate != null "> and expiring_date = #{expiringDate}</if> + <if test="effectiveDate != null "> and effective_date >= #{effectiveDate}</if> + <if test="expiringDate != null "> and expiring_date <= #{expiringDate}</if> <if test="content != null and content != ''"> and content = #{content}</if> <if test="applicableFactory != null and applicableFactory != ''"> and applicable_factory = #{applicableFactory}</if> <if test="applicableWorkshop != null and applicableWorkshop != ''"> and applicable_workshop = #{applicableWorkshop}</if> -- Gitblit v1.9.3