diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseCalendarController.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseCalendarController.java index d510e00..e081894 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseCalendarController.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseCalendarController.java @@ -7,6 +7,7 @@ import javax.servlet.http.HttpServletResponse; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.base.service.IBaseCalendarEventService; import com.ruoyi.base.vo.BaseCalendarVO; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.beans.factory.annotation.Autowired; @@ -39,6 +40,8 @@ import com.ruoyi.common.core.page.TableDataInfo; public class BaseCalendarController extends BaseController { @Autowired private IBaseCalendarService baseCalendarService; + @Autowired + private IBaseCalendarEventService eventService; /** * 分页查询日历列表 @@ -62,31 +65,42 @@ public class BaseCalendarController extends BaseController { /** - * 通过当前日期生成近5年的日历 + * 生成日历以及中国的节假日 * * @return com.ruoyi.common.core.domain.AjaxResult * @author PQZ * @date 10:46 2025/11/3 **/ @GetMapping("/generateCalendar") - public AjaxResult generateCalendar() { - baseCalendarService.generateCalendar(); + public AjaxResult generateCalendar(BaseCalendarVO calendarVO) { + if (calendarVO.getSyncType() == 1) { + //生成日历 + baseCalendarService.generateCalendar(calendarVO.getYear()); + //生成中国节日 + eventService.syncEvent(calendarVO.getYear()); + } else if (calendarVO.getSyncType() == 2) { + //生成中国节日 + eventService.syncEvent(calendarVO.getYear()); + } else if (calendarVO.getSyncType() == 3) { + //生成日历 + baseCalendarService.generateCalendar(calendarVO.getYear()); + } return success(); } - /** - * 导出日历列表 - */ - @PreAuthorize("@ss.hasPermi('base:calendar:export')") - @Log(title = "日历", businessType = BusinessType.EXPORT) - @PostMapping("/export") - public void export(HttpServletResponse response, BaseCalendar baseCalendar) { - List list = baseCalendarService.list(); - ExcelUtil util = new ExcelUtil(BaseCalendar.class); - util.exportExcel(response, list, "日历数据"); + * 获取已生成日历和中国节假日的年份 + * + * @return com.ruoyi.common.core.domain.AjaxResult + * @author PQZ + * @date 15:49 2025/11/12 + **/ + @GetMapping("/getGeneraYear") + public AjaxResult getGeneraYear() { + return success(baseCalendarService.getGeneraYear()); } + /** * 获取日历详细信息 */ @@ -96,34 +110,5 @@ public class BaseCalendarController extends BaseController { return success(baseCalendarService.getById(id)); } - /** - * 新增日历 - */ - @PreAuthorize("@ss.hasPermi('base:calendar:add')") - @Log(title = "日历", businessType = BusinessType.INSERT) - @PostMapping - public AjaxResult add(@RequestBody BaseCalendar baseCalendar) { - return toAjax(baseCalendarService.save(baseCalendar)); - } - /** - * 修改日历 - */ - @PreAuthorize("@ss.hasPermi('base:calendar:edit')") - @Log(title = "日历", businessType = BusinessType.UPDATE) - @PutMapping - public AjaxResult edit(@RequestBody BaseCalendar baseCalendar) { - return toAjax(baseCalendarService.updateById(baseCalendar)); - } - - /** - * 删除日历 - */ - @PreAuthorize("@ss.hasPermi('base:calendar:remove')") - @Log(title = "日历", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable String[] ids) { - List list = new ArrayList<>(Arrays.asList(ids)); - return toAjax(baseCalendarService.removeByIds(list)); - } } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseCalendarEventController.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseCalendarEventController.java index fe118fe..99725df 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseCalendarEventController.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/controller/BaseCalendarEventController.java @@ -53,17 +53,6 @@ public class BaseCalendarEventController extends BaseController return success(list); } - /** - * 同步中国节假日 - * @author PQZ - * @date 17:18 2025/11/3 - * @return com.ruoyi.common.core.domain.AjaxResult - **/ - @GetMapping("/syncEvent") - public AjaxResult syncEvent() { - baseCalendarEventService.syncEvent(); - return success(); - } /** * 导出节日列表 diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/domain/BaseCalendar.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/domain/BaseCalendar.java index bd77451..2bcea2f 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/domain/BaseCalendar.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/domain/BaseCalendar.java @@ -29,15 +29,15 @@ public class BaseCalendar /** 公历年份(如2025) */ @Excel(name = "公历年份(如2025)") - private Long year; + private Integer year; /** 公历月份(1-12) */ @Excel(name = "公历月份(1-12)") - private Long month; + private Integer month; /** 公历日期(1-31) */ @Excel(name = "公历日期(1-31)") - private Long day; + private Integer day; /** 农历日期(“初八”“十二”“九月”) */ @Excel(name = "农历日期", readConverterExp = "“=初八”“十二”“九月”") @@ -45,11 +45,11 @@ public class BaseCalendar /** 星期(1 = 周一,2 = 周二,...,7 = 周日) */ @Excel(name = "星期", readConverterExp = "1=,==,周=一,2,==,周=二,...,7,==,周=日") - private Long weekday; + private Integer weekday; /** 第几周(全年) */ @Excel(name = "第几周", readConverterExp = "全=年") - private Long week; + private Integer week; /** 法定作息状态(休-休息、班-加班、空-正常) */ @Excel(name = "法定作息状态", readConverterExp = "休=-休息、班-加班、空-正常") diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/domain/BaseCalendarEvent.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/domain/BaseCalendarEvent.java index e5215bb..a5c0a31 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/domain/BaseCalendarEvent.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/domain/BaseCalendarEvent.java @@ -39,4 +39,20 @@ public class BaseCalendarEvent @Excel(name = "节日名称") private String eventName; + /** 公历年份(如2025) */ + @Excel(name = "公历年份(如2025)") + private Integer year; + + /** 公历月份(1-12) */ + @Excel(name = "公历月份(1-12)") + private Integer month; + + /** 公历日期(1-31) */ + @Excel(name = "公历日期(1-31)") + private Integer day; + + /** 是否是中国 */ + @Excel(name = "是否是中国") + private String isChina; + } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/mapper/BaseCalendarEventMapper.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/mapper/BaseCalendarEventMapper.java index 02c0933..6df08e9 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/mapper/BaseCalendarEventMapper.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/mapper/BaseCalendarEventMapper.java @@ -1,6 +1,7 @@ package com.ruoyi.base.mapper; import java.util.List; + import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.base.domain.BaseCalendarEvent; @@ -10,12 +11,19 @@ import org.apache.ibatis.annotations.Mapper; /** * 节日Mapper接口 - * + * * @author pqz * @date 2025-10-31 */ @Mapper -public interface BaseCalendarEventMapper extends BaseMapper -{ +public interface BaseCalendarEventMapper extends BaseMapper { IPage queryListPage(@Param("entity") BaseCalendarEvent entity, Page page); + + /** + * 获取节假日年份 + * @author PQZ + * @date 15:34 2025/11/12 + * @return java.util.List + **/ + List getEventYear(); } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/mapper/BaseCalendarMapper.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/mapper/BaseCalendarMapper.java index 4fb3a47..5d670c5 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/mapper/BaseCalendarMapper.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/mapper/BaseCalendarMapper.java @@ -29,4 +29,12 @@ public interface BaseCalendarMapper extends BaseMapper { * @date 18:19 2025/11/11 **/ IPage queryListPage(@Param("entity") BaseCalendar entity, Page page); + + /** + * 获取已经生成日历的年份 + * @author PQZ + * @date 15:27 2025/11/12 + * @return java.util.List + **/ + List getCalendarYear(); } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/IBaseCalendarEventService.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/IBaseCalendarEventService.java index aec2395..78d0ec7 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/IBaseCalendarEventService.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/IBaseCalendarEventService.java @@ -1,6 +1,7 @@ package com.ruoyi.base.service; import java.util.List; + import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; @@ -8,18 +9,27 @@ import com.ruoyi.base.domain.BaseCalendarEvent; /** * 节日Service接口 - * + * * @author pqz * @date 2025-10-31 */ -public interface IBaseCalendarEventService extends IService -{ +public interface IBaseCalendarEventService extends IService { IPage queryListPage(BaseCalendarEvent pageReqVO, Page page); /** * 同步国内节假日 + * * @author PQZ * @date 17:55 2025/11/11 - **/ - void syncEvent(); + **/ + void syncEvent(Integer year); + + /** + * 获取中国节假日的年份 + * + * @return java.util.List + * @author PQZ + * @date 15:33 2025/11/12 + **/ + List getEventYear(); } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/IBaseCalendarService.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/IBaseCalendarService.java index a83248f..2461f9b 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/IBaseCalendarService.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/IBaseCalendarService.java @@ -34,7 +34,7 @@ public interface IBaseCalendarService extends IService { * @author PQZ * @date 10:47 2025/11/3 **/ - void generateCalendar(); + void generateCalendar(Integer year); /** * 根据集合修改法定作息状态 @@ -45,4 +45,12 @@ public interface IBaseCalendarService extends IService { * @date 17:52 2025/11/11 **/ void updateWorkStatus(List> dateList, String workStatus); + + /** + * 获取已经生成日历的年份以及生成中国节假日的年份 + * @author PQZ + * @date 15:26 2025/11/12 + * @return java.util.Map> + **/ + Map> getGeneraYear(); } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/impl/BaseCalendarEventServiceImpl.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/impl/BaseCalendarEventServiceImpl.java index 4685639..750f484 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/impl/BaseCalendarEventServiceImpl.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/impl/BaseCalendarEventServiceImpl.java @@ -15,8 +15,10 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.fasterxml.jackson.databind.ObjectMapper; import com.ruoyi.base.domain.BaseCalendar; +import com.ruoyi.base.mapper.BaseCalendarMapper; import com.ruoyi.base.service.IBaseCalendarService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.http.HttpHeaders; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -39,9 +41,11 @@ public class BaseCalendarEventServiceImpl extends ServiceImpl queryListPage(BaseCalendarEvent pageReqVO, Page page) { return baseCalendarEventMapper.queryListPage(pageReqVO, page); @@ -49,15 +53,16 @@ public class BaseCalendarEventServiceImpl extends ServiceImpl holiday = new HashMap<>(); - holiday.put("year", 2025); + holiday.put("year", year); holiday.put("month", month); holiday.put("day", day); holiday.put("name", name); @@ -132,24 +137,37 @@ public class BaseCalendarEventServiceImpl extends ServiceImpl + * @author PQZ + * @date 15:33 2025/11/12 + **/ + @Override + public List getEventYear() { + return baseCalendarEventMapper.getEventYear(); + } + /** * 保存节假日数据 - * @author PQZ - * @date 18:09 2025/11/11 + * * @param holidayList List> * @return void - **/ - void saveCalendarEvent(List> holidayList){ + * @author PQZ + * @date 18:09 2025/11/11 + **/ + void saveCalendarEvent(List> holidayList) { if (holidayList == null || holidayList.isEmpty()) { return; } @@ -176,6 +194,10 @@ public class BaseCalendarEventServiceImpl extends ServiceImpl calendarList = new ArrayList<>(); - // 遍历从开始日期到结束日期的每一天 for (LocalDate date = startDate; !date.isAfter(endDate); date = date.plusDays(1)) { BaseCalendar calendar = new BaseCalendar(); - calendar.setYear((long) date.getYear()); - calendar.setMonth((long) date.getMonthValue()); - calendar.setDay((long) date.getDayOfMonth()); - calendar.setWeek((long) date.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR)); - calendar.setWeekday((long) date.getDayOfWeek().getValue()); + calendar.setYear( date.getYear()); + calendar.setMonth(date.getMonthValue()); + calendar.setDay( date.getDayOfMonth()); + calendar.setWeek(date.get(IsoFields.WEEK_OF_WEEK_BASED_YEAR)); + calendar.setWeekday(date.getDayOfWeek().getValue()); // 使用Hutool计算农历日期 calendar.setLunarDate(calculateLunarDate(date)); // 设置工作状态:周六(6)和周日(7)设置为"休" @@ -112,9 +115,9 @@ public class BaseCalendarServiceImpl extends ServiceImpl updateWrapper = new UpdateWrapper<>(); - updateWrapper.eq("year", year.longValue()) - .eq("month", month.longValue()) - .eq("day", day.longValue()) + updateWrapper.eq("year", year) + .eq("month", month) + .eq("day", day) .set("work_status", workStatus); this.update(updateWrapper); } @@ -122,6 +125,23 @@ public class BaseCalendarServiceImpl extends ServiceImpl> + * @author PQZ + * @date 15:26 2025/11/12 + **/ + @Override + public Map> getGeneraYear() { + List calendarYear = baseCalendarMapper.getCalendarYear(); + List eventYear = eventService.getEventYear(); + Map> result = new java.util.HashMap<>(); + result.put("calendarYear", calendarYear); + result.put("eventYear", eventYear); + return result; + } + /** * 使用Hutool计算农历日期 * diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/vo/BaseCalendarVO.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/vo/BaseCalendarVO.java index 63f5e12..6a8e234 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/vo/BaseCalendarVO.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/vo/BaseCalendarVO.java @@ -13,4 +13,6 @@ import lombok.Data; public class BaseCalendarVO extends BaseCalendar { /**节日*/ String eventName; + /**同步类型*/ + Integer syncType; } diff --git a/dl_admin/ruoyi-admin/src/main/resources/mapper/base/BaseCalendarEventMapper.xml b/dl_admin/ruoyi-admin/src/main/resources/mapper/base/BaseCalendarEventMapper.xml index b5c62ba..e18d674 100644 --- a/dl_admin/ruoyi-admin/src/main/resources/mapper/base/BaseCalendarEventMapper.xml +++ b/dl_admin/ruoyi-admin/src/main/resources/mapper/base/BaseCalendarEventMapper.xml @@ -23,4 +23,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and event_name like concat('%', #{entity.eventName}, '%') + \ No newline at end of file diff --git a/dl_admin/ruoyi-admin/src/main/resources/mapper/base/BaseCalendarMapper.xml b/dl_admin/ruoyi-admin/src/main/resources/mapper/base/BaseCalendarMapper.xml index 8c1eb4a..30ffed8 100644 --- a/dl_admin/ruoyi-admin/src/main/resources/mapper/base/BaseCalendarMapper.xml +++ b/dl_admin/ruoyi-admin/src/main/resources/mapper/base/BaseCalendarMapper.xml @@ -22,7 +22,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + \ No newline at end of file diff --git a/dl_vue/src/api/base/calendar.js b/dl_vue/src/api/base/calendar.js index a080346..208205a 100644 --- a/dl_vue/src/api/base/calendar.js +++ b/dl_vue/src/api/base/calendar.js @@ -10,10 +10,19 @@ export function listCalendar(query) { } // 生成日历 -export function generateCalendar() { +export function generateCalendar(query) { return request({ url: '/base/calendar/generateCalendar', method: 'get', + params: query + }) +} + +// 获取已生成日历和中国节假日的年份 +export function getGeneraYear() { + return request({ + url: '/base/calendar/getGeneraYear', + method: 'get', }) } @@ -24,29 +33,3 @@ export function getCalendar(id) { method: 'get' }) } - -// 新增日历 -export function addCalendar(data) { - return request({ - url: '/base/calendar', - method: 'post', - data: data - }) -} - -// 修改日历 -export function updateCalendar(data) { - return request({ - url: '/base/calendar', - method: 'put', - data: data - }) -} - -// 删除日历 -export function delCalendar(id) { - return request({ - url: '/base/calendar/' + id, - method: 'delete' - }) -} diff --git a/dl_vue/src/views/base/calendar/index.vue b/dl_vue/src/views/base/calendar/index.vue index bf63557..964cc6a 100644 --- a/dl_vue/src/views/base/calendar/index.vue +++ b/dl_vue/src/views/base/calendar/index.vue @@ -7,9 +7,10 @@ type="primary" plain size="mini" - @click="generate" + @click="getYear" v-hasPermi="['base:calendar:add']" - >日历同步 + >日历同步 + @@ -26,18 +27,66 @@ + + + + + + + + {{ item }} + + + + {{ item }} + + + + + *已生成年份请勿重复生成 + + + + + 全部同步 + 国内节假日 + 日历 + + + + + + + +