# OA **Repository Path**: knight-013/oa ## Basic Information - **Project Name**: OA - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-09 - **Last Updated**: 2026-01-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 南京OA管理系统 基于 Spring Boot + MyBatis + MySQL 的办公自动化管理系统。 ## 1. 项目环境准备 * **Java**: JDK 1.8+ * **数据库**: MySQL 5.7+ 或 8.0+ * **构建工具**: Maven 3.6+ ## 2. 数据库配置 ### 2.1 创建数据库 在 MySQL 中创建名为 `agc` 的数据库: ```sql CREATE DATABASE IF NOT EXISTS agc DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ``` ### 2.2 建表 SQL ```sql -- 1. 部门表 CREATE TABLE `t_dept` ( `dept_id` int(11) NOT NULL AUTO_INCREMENT, `dept_no` varchar(20) DEFAULT NULL COMMENT '部门编号', `dept_name` varchar(50) DEFAULT NULL COMMENT '部门名称', `dept_pid` int(11) DEFAULT '0' COMMENT '上级部门ID', `dept_user` varchar(50) DEFAULT NULL COMMENT '部门负责人', `dept_address` varchar(255) DEFAULT NULL COMMENT '部门地址', PRIMARY KEY (`dept_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 2. 员工表 CREATE TABLE `t_employee` ( `emp_id` int(11) NOT NULL AUTO_INCREMENT, `emp_no` varchar(20) NOT NULL COMMENT '员工工号', `emp_name` varchar(50) NOT NULL COMMENT '员工姓名', `emp_dept_id` int(11) DEFAULT NULL COMMENT '部门ID', `emp_sex` varchar(2) DEFAULT NULL COMMENT '性别', `emp_education` varchar(20) DEFAULT NULL COMMENT '学历', `emp_email` varchar(50) DEFAULT NULL COMMENT '邮箱', `emp_phone` varchar(20) DEFAULT NULL COMMENT '手机号', `emp_entry_time` datetime DEFAULT NULL COMMENT '入职时间', `emp_create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`emp_id`), UNIQUE KEY `uk_emp_no` (`emp_no`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 3. 角色表 CREATE TABLE `t_role` ( `Role_id` int(11) NOT NULL AUTO_INCREMENT, `role_name` varchar(50) DEFAULT NULL COMMENT '角色名称', `role_create_time` datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`Role_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 4. 用户表 CREATE TABLE `t_user` ( `User_id` int(11) NOT NULL AUTO_INCREMENT, `user_account` varchar(50) NOT NULL COMMENT '登录账号', `user_pwd` varchar(100) NOT NULL COMMENT '登录密码', `user_salt` varchar(50) DEFAULT NULL, `user_salt_index` int(11) DEFAULT '0', `user_status` int(11) DEFAULT '1' COMMENT '状态 1:正常 0:禁用', `user_error` int(11) DEFAULT '0' COMMENT '登录错误次数', `user_emp_no` varchar(20) DEFAULT NULL COMMENT '关联员工编号', `user_role_id` int(11) DEFAULT NULL COMMENT '角色ID', `user_create_time` datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`User_id`), UNIQUE KEY `uk_user_account` (`user_account`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 5. 菜单表 CREATE TABLE `t_menu` ( `Menu_id` int(11) NOT NULL AUTO_INCREMENT, `menu_name` varchar(50) DEFAULT NULL COMMENT '菜单名称', `Menu_href_url` varchar(100) DEFAULT NULL COMMENT '链接地址', `menu_parent_id` int(11) DEFAULT '0' COMMENT '上级菜单ID', `menu_create_time` datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`Menu_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 6. 权限关联表 CREATE TABLE `t_permissions` ( `per_id` int(11) NOT NULL AUTO_INCREMENT, `per_role_id` int(11) DEFAULT NULL COMMENT '角色ID', `per_menu_id` int(11) DEFAULT NULL COMMENT '菜单ID', `per_use` int(11) DEFAULT '1' COMMENT '是否启用 1:启用 0:禁用', `per_create_time` datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`per_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 7. 请假表 CREATE TABLE `t_holiday` ( `Holiday_id` int(11) NOT NULL AUTO_INCREMENT, `holiday_no` varchar(30) DEFAULT NULL COMMENT '请假单号', `holiday_user_no` varchar(50) DEFAULT NULL COMMENT '申请人账号', `holiday_type_id` int(11) DEFAULT NULL COMMENT '请假类型(1:事假 2:婚假 3:年假 4:调休 5:病假 6:丧假)', `holiday_bz` text COMMENT '请假理由', `Holiday_start_time` datetime DEFAULT NULL COMMENT '开始时间', `Holiday_end_time` datetime DEFAULT NULL COMMENT '结束时间', `holiday_status` int(11) DEFAULT '1' COMMENT '状态(1:草稿 2:提交 3:通过 4:驳回)', `holiday_no_agreen` varchar(255) DEFAULT NULL COMMENT '审批意见', `holiday_create_time` datetime DEFAULT CURRENT_TIMESTAMP, `holiday_update_time` datetime DEFAULT NULL, PRIMARY KEY (`Holiday_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- 8. 报销表 CREATE TABLE `t_reimburse` ( `reimburse_id` int(11) NOT NULL AUTO_INCREMENT, `reimburse_no` varchar(30) DEFAULT NULL COMMENT '报销单号', `reimburse_user_no` varchar(50) DEFAULT NULL COMMENT '申请人账号', `reimburse_type_id` int(11) DEFAULT NULL COMMENT '报销类型', `reimburse_bz` text COMMENT '报销事由', `reimburse_status` int(11) DEFAULT '1' COMMENT '状态', `reimburse_no_agreen` varchar(255) DEFAULT NULL COMMENT '审批意见', `reimburse_create_time` datetime DEFAULT CURRENT_TIMESTAMP, `reimburse_update_time` datetime DEFAULT NULL, PRIMARY KEY (`reimburse_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` ### 2.3 初始化管理数据 ```sql -- 初始化部门 INSERT INTO `t_dept` (dept_no, dept_name, dept_pid) VALUES ('D001', '总经办', 0); -- 初始化初始化员工 (关联管理员) INSERT INTO `t_employee` (emp_no, emp_name, emp_dept_id, emp_sex) VALUES ('E001', '超级管理员', 1, '男'); -- 初始化角色 INSERT INTO `t_role` (Role_id, role_name) VALUES (1, '管理员'); INSERT INTO `t_role` (Role_id, role_name) VALUES (2, '普通员工'); -- 初始化管理员账号 (用户名: admin, 密码: admin123) INSERT INTO `t_user` (user_account, user_pwd, user_emp_no, user_role_id) VALUES ('admin', 'admin123', 'E001', 1); -- 初始化菜单 INSERT INTO `t_menu` (Menu_id, menu_name, Menu_href_url) VALUES (1, '个人资料', 'account_list.html'); INSERT INTO `t_menu` (Menu_id, menu_name, Menu_href_url) VALUES (2, '部门管理', 'dept_list.html'); INSERT INTO `t_menu` (Menu_id, menu_name, Menu_href_url) VALUES (3, '员工管理', 'emp_list.html'); INSERT INTO `t_menu` (Menu_id, menu_name, Menu_href_url) VALUES (4, '角色管理', 'role_list.html'); INSERT INTO `t_menu` (Menu_id, menu_name, Menu_href_url) VALUES (5, '权限设置', 'permission_list.html'); INSERT INTO `t_menu` (Menu_id, menu_name, Menu_href_url) VALUES (6, '请假管理', 'holiday_list.html'); INSERT INTO `t_menu` (Menu_id, menu_name, Menu_href_url) VALUES (7, '报销管理', 'reimburse_list.html'); -- 为管理员分配所有权限 INSERT INTO `t_permissions` (per_role_id, per_menu_id, per_use) SELECT 1, Menu_id, 1 FROM t_menu; -- 为普通员工分配权限 (个人中心、请假、报销) INSERT INTO `t_permissions` (per_role_id, per_menu_id, per_use) VALUES (2, 1, 1), (2, 6, 1), (2, 7, 1); ``` ## 3. 启动项目 1. **修改配置**: 编辑 `src/main/resources/application.properties`,确保 MySQL 用户名和密码正确。 2. **编译打包**: ```bash mvn clean install ``` 3. **运行程序**: 运行 `DemoApplication.java` 或使用 Maven 命令: ```bash mvn spring-boot:run ``` 4. **访问地址**: 在浏览器打开 `http://localhost:9090/index.html`。 * **初始管理员**: `admin` / `admin123`