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 7d6dc53..886183a 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 @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import javax.servlet.http.HttpServletResponse; + import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springframework.security.access.prepost.PreAuthorize; @@ -28,14 +29,13 @@ import com.ruoyi.common.core.page.TableDataInfo; /** * 日历Controller - * + * * @author pqz * @date 2025-10-31 */ @RestController @RequestMapping("/base/calendar") -public class BaseCalendarController extends BaseController -{ +public class BaseCalendarController extends BaseController { @Autowired private IBaseCalendarService baseCalendarService; @@ -45,22 +45,35 @@ public class BaseCalendarController extends BaseController @PreAuthorize("@ss.hasPermi('base:calendar:list')") @GetMapping("/list") public AjaxResult list(BaseCalendar baseCalendar, - @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, - @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) - { + @RequestParam(name = "pageNum", defaultValue = "1") Integer pageNum, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { Page page = new Page<>(pageNum, pageSize); - IPage list = baseCalendarService.queryListPage(baseCalendar,page); + IPage list = baseCalendarService.queryListPage(baseCalendar, page); return success(list); } + + /** + * 通过当前日期生成近5年的日历 + * + * @return com.ruoyi.common.core.domain.AjaxResult + * @author PQZ + * @date 10:46 2025/11/3 + **/ + @GetMapping("/generateCalendar") + public AjaxResult generateCalendar() { + baseCalendarService.generateCalendar(); + return success(); + } + + /** * 导出日历列表 */ @PreAuthorize("@ss.hasPermi('base:calendar:export')") @Log(title = "日历", businessType = BusinessType.EXPORT) @PostMapping("/export") - public void export(HttpServletResponse response, BaseCalendar baseCalendar) - { + public void export(HttpServletResponse response, BaseCalendar baseCalendar) { List list = baseCalendarService.list(); ExcelUtil util = new ExcelUtil(BaseCalendar.class); util.exportExcel(response, list, "日历数据"); @@ -71,8 +84,7 @@ public class BaseCalendarController extends BaseController */ @PreAuthorize("@ss.hasPermi('base:calendar:query')") @GetMapping(value = "/{id}") - public AjaxResult getInfo(@PathVariable("id") String id) - { + public AjaxResult getInfo(@PathVariable("id") String id) { return success(baseCalendarService.getById(id)); } @@ -82,8 +94,7 @@ public class BaseCalendarController extends BaseController @PreAuthorize("@ss.hasPermi('base:calendar:add')") @Log(title = "日历", businessType = BusinessType.INSERT) @PostMapping - public AjaxResult add(@RequestBody BaseCalendar baseCalendar) - { + public AjaxResult add(@RequestBody BaseCalendar baseCalendar) { return toAjax(baseCalendarService.save(baseCalendar)); } @@ -93,8 +104,7 @@ public class BaseCalendarController extends BaseController @PreAuthorize("@ss.hasPermi('base:calendar:edit')") @Log(title = "日历", businessType = BusinessType.UPDATE) @PutMapping - public AjaxResult edit(@RequestBody BaseCalendar baseCalendar) - { + public AjaxResult edit(@RequestBody BaseCalendar baseCalendar) { return toAjax(baseCalendarService.updateById(baseCalendar)); } @@ -103,9 +113,8 @@ public class BaseCalendarController extends BaseController */ @PreAuthorize("@ss.hasPermi('base:calendar:remove')") @Log(title = "日历", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@PathVariable String[] ids) - { + @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/domain/BaseCalendar.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/domain/BaseCalendar.java index 410eafd..bd77451 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 @@ -15,12 +15,11 @@ import com.ruoyi.common.core.domain.DlBaseEntity; */ @TableName("base_calendar") @Data -@EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) @Builder @NoArgsConstructor @AllArgsConstructor -public class BaseCalendar extends DlBaseEntity +public class BaseCalendar { private static final long serialVersionUID = 1L; 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 f2f132b..05e250b 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 @@ -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,11 +9,19 @@ import com.ruoyi.base.domain.BaseCalendar; /** * 日历Service接口 - * + * * @author pqz * @date 2025-10-31 */ -public interface IBaseCalendarService extends IService -{ +public interface IBaseCalendarService extends IService { IPage queryListPage(BaseCalendar pageReqVO, Page page); + + /** + * 通过当前时间生成近5年的日历 + * + * @return void + * @author PQZ + * @date 10:47 2025/11/3 + **/ + void generateCalendar(); } diff --git a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/impl/BaseCalendarServiceImpl.java b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/impl/BaseCalendarServiceImpl.java index 92eae8c..f3f6b4e 100644 --- a/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/impl/BaseCalendarServiceImpl.java +++ b/dl_admin/ruoyi-admin/src/main/java/com/ruoyi/base/service/impl/BaseCalendarServiceImpl.java @@ -1,6 +1,15 @@ package com.ruoyi.base.service.impl; +import cn.hutool.core.date.ChineseDate; + +import java.time.LocalDate; + +import java.time.ZoneId; +import java.time.temporal.IsoFields; +import java.util.ArrayList; +import java.util.Date; import java.util.List; + import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springframework.beans.factory.annotation.Autowired; @@ -12,13 +21,12 @@ import com.ruoyi.base.service.IBaseCalendarService; /** * 日历Service业务层处理 - * + * * @author pqz * @date 2025-10-31 */ @Service -public class BaseCalendarServiceImpl extends ServiceImpl implements IBaseCalendarService -{ +public class BaseCalendarServiceImpl extends ServiceImpl implements IBaseCalendarService { @Autowired private BaseCalendarMapper baseCalendarMapper; @@ -26,4 +34,69 @@ public class BaseCalendarServiceImpl extends ServiceImpl queryListPage(BaseCalendar pageReqVO, Page page) { return baseCalendarMapper.queryListPage(pageReqVO, page); } + + /** + * 通过当前时间生成近5年的日历 + * + * @return void + * @author PQZ + * @date 10:47 2025/11/3 + **/ + @Override + public void generateCalendar() { + + // 获取当前年份 + int currentYear = LocalDate.now().getYear(); + // 从当前年份的1月1日开始计算 + LocalDate startDate = LocalDate.of(currentYear, 1, 1); + // 结束日期为当前年的12月31日 + LocalDate endDate = LocalDate.of(currentYear, 12, 31); + + List 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()); + + // 使用Hutool计算农历日期 + calendar.setLunarDate(calculateLunarDate(date)); + + // 默认工作状态为空(正常工作日) + calendar.setWorkStatus(""); + + calendarList.add(calendar); + } + //批量保存到数据库 + this.saveBatch(calendarList); + + } + + /** + * 使用Hutool计算农历日期 + * + * @param date 公历日期 + * @return 农历日期字符串 + */ + private String calculateLunarDate(LocalDate date) { + try { + // 使用Hutool将LocalDate转换为Date + Date utilDate = Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant()); + ChineseDate chineseDate = new ChineseDate(utilDate); + + // 如果是农历初一,返回月份名称;否则返回日期名称 + if (chineseDate.getDay() == 1) { + return chineseDate.getChineseMonth(); + } else { + return chineseDate.getChineseDay(); + } + } catch (Exception e) { + e.printStackTrace(); + return "未知"; + } + } } diff --git a/dl_vue/src/api/base/calendar.js b/dl_vue/src/api/base/calendar.js index 57df003..a080346 100644 --- a/dl_vue/src/api/base/calendar.js +++ b/dl_vue/src/api/base/calendar.js @@ -9,6 +9,14 @@ export function listCalendar(query) { }) } +// 生成日历 +export function generateCalendar() { + return request({ + url: '/base/calendar/generateCalendar', + method: 'get', + }) +} + // 查询日历详细 export function getCalendar(id) { return request({ diff --git a/dl_vue/src/views/base/calendar/index.vue b/dl_vue/src/views/base/calendar/index.vue index fa25f0e..1081441 100644 --- a/dl_vue/src/views/base/calendar/index.vue +++ b/dl_vue/src/views/base/calendar/index.vue @@ -1,318 +1,97 @@ + +