# Calendar **Repository Path**: jsboss/calendar ## Basic Information - **Project Name**: Calendar - **Description**: 企业日历系统 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-27 - **Last Updated**: 2025-09-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 企业日历系统 一套支持多公司自定义工作日与节假日管理的企业日历系统,使用SpringBoot后端和Vue3+Element Plus前端实现。 ## 功能特性 ### 核心功能 - ✅ 多公司管理:支持多个公司的独立日历配置 - ✅ 工作日配置:灵活配置每周的工作日规则 - ✅ 节假日管理:支持法定节假日、公司节假日等 - ✅ 自定义日期类型:可自定义特殊日期类型 - ✅ Excel导入导出:支持节假日数据的批量导入导出 - ✅ 日历展示:直观的月历视图,标注工作日/节假日 - ✅ API查询:提供API查询某天是否为工作日 ### 技术特性 - 🚀 SpringBoot 3.2.0 + Java 17 - 🗄️ MySQL 8.0 + JPA/Hibernate - 📊 Apache POI 处理Excel文件 - 🎨 Vue 3 + Element Plus 前端界面 - 📱 响应式设计,支持移动端 ## 系统架构 ### 数据库设计 - `companies` - 公司信息表 - `workday_configs` - 工作日配置表 - `workday_rules` - 工作日规则表 - `holiday_types` - 节假日类型表 - `holidays` - 节假日表 - `date_types` - 日期类型表 - `custom_dates` - 自定义日期表 - `import_history` - 导入历史表 ### API接口设计 #### 公司管理 - `POST /api/companies` - 创建公司 - `GET /api/companies` - 获取所有公司 - `GET /api/companies/{id}` - 获取公司详情 - `PUT /api/companies/{id}` - 更新公司信息 - `DELETE /api/companies/{id}` - 删除公司 #### 日历查询 - `POST /api/calendar/data` - 获取日历数据 - `GET /api/calendar/workday/{companyId}` - 查询某天是否为工作日 - `GET /api/calendar/day/{companyId}` - 获取某天详细信息 - `GET /api/calendar/month/{companyId}` - 获取月份日历 - `GET /api/calendar/year/{companyId}` - 获取年份日历 #### 节假日管理 - `POST /api/holidays` - 创建节假日 - `GET /api/holidays/company/{companyId}` - 获取公司节假日 - `GET /api/holidays/company/{companyId}/year/{year}` - 获取年份节假日 - `PUT /api/holidays/{id}` - 更新节假日 - `DELETE /api/holidays/{id}` - 删除节假日 #### Excel操作 - `POST /api/excel/import/holidays` - 导入节假日Excel - `GET /api/excel/export/holidays` - 导出节假日Excel - `GET /api/excel/template/holidays` - 下载导入模板 ## 快速开始 ### 环境要求 - Java 17+ - MySQL 8.0+ - Maven 3.6+ ### 数据库配置 1. 创建数据库: ```sql CREATE DATABASE enterprise_calendar CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 2. 执行数据库脚本: ```bash mysql -u root -p enterprise_calendar < database_design.sql ``` ### 后端启动 1. 修改数据库配置(`src/main/resources/application.yml`): ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/enterprise_calendar?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai username: your_username password: your_password ``` 2. 启动应用: ```bash mvn spring-boot:run ``` ### 前端访问 打开浏览器访问:`http://localhost:8080/frontend/index.html` ## 使用说明 ### 1. 公司管理 - 系统启动后会自动创建默认公司 - 可以通过API或前端界面添加新公司 - 每个公司有独立的日历配置 ### 2. 工作日配置 - 默认配置:周一到周五为工作日,周六周日为休息日 - 支持自定义每周的工作日规则 - 可设置工作开始和结束时间 ### 3. 节假日管理 - 支持法定节假日、公司节假日等类型 - 可设置节假日为工作日或休息日 - 支持调休工作日(如春节调休) ### 4. Excel导入导出 - 支持批量导入节假日数据 - 提供标准导入模板 - 支持按年份导出节假日数据 ### 5. 日历展示 - 月历视图显示工作日/节假日状态 - 不同颜色标识不同类型的日期 - 支持月份切换和年份切换 ## 开发说明 ### 项目结构 ``` enterprise-calendar/ ├── src/main/java/com/company/calendar/ │ ├── entity/ # 实体类 │ ├── repository/ # 数据访问层 │ ├── service/ # 业务逻辑层 │ ├── controller/ # 控制器层 │ └── dto/ # 数据传输对象 ├── src/main/resources/ │ └── application.yml # 配置文件 ├── frontend/ │ └── index.html # 前端页面 ├── database_design.sql # 数据库设计 └── pom.xml # Maven配置 ``` ### 扩展开发 1. **添加新的日期类型**:在`DateType`实体中添加字段 2. **自定义工作日规则**:扩展`WorkdayRule`实体 3. **增加API接口**:在对应的Controller中添加方法 4. **前端功能扩展**:修改`frontend/index.html`中的Vue组件 ## 注意事项 1. **数据库连接**:确保MySQL服务正常运行,数据库连接配置正确 2. **文件上传**:Excel文件大小限制为10MB 3. **日期格式**:支持多种日期格式的解析 4. **并发处理**:系统支持多用户同时操作 5. **数据备份**:建议定期备份数据库数据 ## 常见问题 ### Q: 如何添加新的节假日类型? A: 在`holiday_types`表中添加新记录,或通过API接口创建。 ### Q: 如何配置特殊的工作日规则? A: 通过`workday_configs`和`workday_rules`表配置,或使用自定义日期功能。 ### Q: Excel导入失败怎么办? A: 检查文件格式是否正确,数据是否符合模板要求,查看错误日志获取详细信息。 ### Q: 如何查询某天是否为工作日? A: 使用API接口`GET /api/calendar/workday/{companyId}?date=2024-01-01`。 ## 许可证 MIT License