毕业设计实战:基于SpringBoot的企业内管信息化系统设计与实现全攻略

0 阅读12分钟

毕业设计实战:基于SpringBoot的企业内管信息化系统设计与实现全攻略

在开发“基于SpringBoot的企业内管信息化系统”毕业设计时,曾因“任务分配与薪资核算数据脱节”踩过关键坑——初期未设计清晰的任务状态机和薪资关联机制,导致员工完成任务后薪资模块未同步更新、任务完成情况无法追溯绩效,耗费4天重构任务管理模块、引入任务状态流转和薪资联动机制才解决问题📝。基于此次实战经验,本文精简拆解核心开发流程,附避坑要点与实操细节,为同类毕设提供可落地的实施参考。

一、需求分析:聚焦任务+薪资双核心,避免功能冗余

部分同学易陷入“功能堆砌”误区,比如我曾耗时3天开发“企业内部地图导航”模块,最终因偏离“部门管理、任务分配、薪资核算、请假审批”核心需求被导师要求删减。明确“部门设置→任务分配→员工执行→请假审批→薪资核算”的业务闭环,是降低返工率的关键。

1. 核心角色与功能(精简版)

角色核心功能
管理员部门管理、部门经理管理、用户管理、任务管理、任务分配审核、薪资管理、公告发布、资料管理
部门经理任务发布、任务分配、员工请假审批、薪资查看、公告查看
员工任务接收/反馈、请假申请、薪资查看、个人信息维护(基本信息)、资料下载、公告查看

2. 需求避坑要点

  • 拒绝空想调研:邀请10名同学模拟“部门经理发布任务→分配员工→员工执行→经理确认完成→薪资核算关联绩效”完整流程,基于“员工需要知道任务进度和薪资明细”需求,增设“任务进度跟踪”和“薪资明细拆解”模块,实用性远大于冗余的“企业地图”;
  • 明确约束条件:提前规定“任务编号自动生成(格式:RW+年月日+序号)”“任务分配需确认完成才能计入绩效”“请假需经理审批”“薪资自动计算应扣小计和实发金额”,为系统实现提供明确依据。

二、技术选型:稳定框架+事务控制,新手可上手

前期曾尝试引入Redis缓存任务状态,因数据一致性难保证且学习成本高,调试耗时4天。最终确定“成熟框架+数据库事务”组合:

技术工具选型理由避坑提醒
Spring Boot 2.x + MyBatis-Plus快速开发,简化配置,高效实现CRUD和业务逻辑,声明式事务管理方便事务注解@Transactional记得在Service层添加;任务完成和薪资核算必须加事务
Vue 2.x + ElementUI组件丰富,快速构建前后台界面,表格和表单组件好用任务状态用标签展示;薪资明细用表格拆解显示
MySQL 5.7存储部门、用户、任务、薪资等核心业务数据金额字段用Decimal类型;事务要保证任务状态和薪资数据一致性
Thymeleaf(可选)服务端模板引擎,适合快速开发后台管理界面毕设时间充裕可统一用Vue

三、数据库设计:业务关联清晰,支撑部门-任务-薪资闭环

数据库设计直接影响后续开发效率。前期因未设计“任务进度字段”和“薪资明细拆解机制”,导致员工完成任务后绩效无法自动计入薪资。

1. 核心表结构(精选11张表)

  • 管理员表(users):id、username、password(MD5加密)、role、addtime;
  • 用户表(yonghu):id、yonghu_uuid_number(用户编号)、yonghu_name、yonghu_phone、yonghu_id_number、yonghu_photo、yonghu_email、create_time;
  • 部门表(bumen):id、bumen_uuid_number(部门编号)、bumen_name、bumen_address(部门位置)、bumen_content、insert_time、create_time;
  • 部门经理表(jingli):id、jingli_uuid_number(部门经理编号)、jingli_name、jingli_phone、jingli_id_number、jingli_photo、jingli_email、create_time;
  • 基本信息表(xinxi):id、yonghu_id(关联用户)、xinxi_name、xinxi_uuid_number(基本信息编号)、xinxi_yuanxiao(毕业院校)、xinxi_zhuanye(专业)、xinxi_xuewei(最终学位)、xinxi_address(家庭住址)、xinxi_chepai(车牌号)、xinxi_didian(办公地点)、xinxi_types(健康状况)、xinxi_time(入职时间)、xinxi_content、xinxi_delete(逻辑删除)、insert_time、create_time;
  • 任务表(renwu):id、jingli_id(发布经理)、renwu_name、renwu_uuid_number(任务编号)、renwu_photo、renwu_types(任务类型)、renwu_file(任务文件)、renwu_content、renwu_delete、insert_time、create_time;
  • 任务分配表(fenpei):id、renwu_id(关联任务)、yonghu_id(执行员工)、fenpei_time(分配时间)、fenpei_types(任务进度:0待接收/1进行中/2已完成/3延期)、fenpei_content、fenpei_delete、insert_time、create_time;
  • 员工请假表(qingjia):id、yonghu_id(请假员工)、jingli_id(审批经理)、qingjia_text(请假缘由)、qingjia_types(请假类型)、insert_time(申请时间)、qingjia_time(请假时间)、qingjia_number(请假天数)、qingjia_yesno_types(申请状态:0待审批/1通过/2拒绝)、qingjia_yesno_text(处理意见)、qingjia_shenhe_time(审核时间)、create_time;
  • 薪资表(xinzi):id、yonghu_id(关联用户)、xinzi_uuid_number(薪资编号)、xinzi_name(标题)、xinzi_month(月份)、jiben_jine(岗位工资)、jiangjin_jine(薪级工资)、jiangjin_fangtie(房帖)、jiangjin_jijin(公积金)、jixiao_jine(业绩津贴)、jixiao_gongjijin(扣公积金)、jixiao_yibao(扣医保)、jixiao_yanglao(扣养老保险)、jixiao_shibao(扣失保金)、jixiao_koushui(扣税款)、jixiao_shijia(事假扣款)、jixiao_bingjia(病假扣款)、xiaoji_yingkou(应扣小计)、xiaoji_yingfa(应发小计)、shifa_jine(实发)、xinzi_content(备注)、insert_time、create_time;
  • 资料表(ziliao):id、ziliao_name、ziliao_uuid_number(资料编号)、ziliao_photo、ziliao_types(资料类型)、ziliao_video(资料视频)、ziliao_file(资料文件)、ziliao_content、ziliao_delete、insert_time、create_time;
  • 公告资讯表(gonggao):id、gonggao_name、gonggao_photo、gonggao_types(公告类型)、insert_time、gonggao_content、create_time。

2. 关键业务SQL示例

示例SQL(查询员工薪资明细及当月任务完成情况):

-- 查询员工指定月份的薪资明细
SELECT 
    x.*,
    u.yonghu_name,
    u.yonghu_phone,
    (SELECT COUNT(*) FROM fenpei f 
     WHERE f.yonghu_id = u.id 
     AND f.fenpei_types = 2 
     AND DATE_FORMAT(f.fenpei_time, '%Y-%m') = x.xinzi_month) as task_completed
FROM xinzi x
LEFT JOIN yonghu u ON x.yonghu_id = u.id
WHERE x.yonghu_id = #{yonghuId}
AND x.xinzi_month = #{month}

关键避坑:任务进度用整数表示(0待接收/1进行中/2已完成/3延期);请假状态用整数表示(0待审批/1通过/2拒绝);薪资字段需拆分明细;任务完成情况可关联绩效计算。

四、核心功能实现:8大模块满足答辩需求

无需复杂功能,优先完成以下8个核心模块,其中任务分配与薪资核算联动是答辩重点。

1. 部门管理(基础架构模块)

  • 核心逻辑:管理员管理企业部门信息(增删改查);
  • 页面设计:部门列表显示名称、位置、备注;支持模糊查询;
  • 代码要点:部门编号自动生成;部门与经理关联。

2. 用户/经理管理(人员模块)

  • 核心逻辑:管理员管理员工和部门经理信息;
  • 页面设计:用户列表显示姓名、手机号、身份证;经理列表显示所属部门;
  • 代码要点:用户与基本信息表一对一关联;经理与部门关联。

3. 基本信息管理(员工档案)

  • 核心逻辑:员工完善个人信息(毕业院校、专业、家庭住址、车牌号等);
  • 页面设计:表单式填写页面,包含学历信息、联系方式、办公信息等;
  • 代码要点(基本信息新增/更新):
public void saveOrUpdateXinxi(Xinxi xinxi) {
    // 生成基本信息编号:XX+年月日+随机4位
    if (xinxi.getId() == null) {
        String uuid = "XX" + new SimpleDateFormat("yyyyMMdd").format(new Date()) 
                      + String.format("%04d", new Random().nextInt(10000));
        xinxi.setXinxiUuidNumber(uuid);
        xinxi.setXinxiDelete(0);
        xinxi.setInsertTime(new Date());
        xinxi.setCreateTime(new Date());
        xinxiMapper.insert(xinxi);
    } else {
        xinxi.setUpdateTime(new Date());
        xinxiMapper.updateById(xinxi);
    }
}

4. 任务管理(核心业务模块)

  • 核心逻辑:部门经理发布任务(任务名称、类型、附件)→管理员可管理所有任务;
  • 页面设计:任务列表显示名称、类型、发布人、发布时间;支持附件下载;
  • 代码要点:任务与经理关联;支持文件上传。

5. 任务分配管理(关键业务流程)

  • 核心逻辑:部门经理分配任务给员工→员工接收任务→更新任务进度→经理确认完成;
  • 页面设计:分配列表显示任务名称、员工、进度状态标签;员工端可更新进度;
  • 代码要点(任务进度更新):
@Transactional
public void updateFenpeiProgress(Long fenpeiId, Integer progress, String remarks) {
    // 1. 查询分配记录
    Fenpei fenpei = fenpeiMapper.selectById(fenpeiId);
    
    // 2. 更新任务进度
    fenpei.setFenpeiTypes(progress);
    fenpei.setFenpeiContent(remarks);
    fenpei.setUpdateTime(new Date());
    fenpeiMapper.updateById(fenpei);
    
    // 3. 如果任务完成,记录完成时间(可用于薪资绩效计算)
    if (progress == 2) { // 已完成
        fenpei.setFinishTime(new Date());
        fenpeiMapper.updateById(fenpei);
        
        // 这里可以触发绩效计算逻辑(可选)
        log.info("员工 {} 完成任务 {}", fenpei.getYonghuId(), fenpei.getRenwuId());
    }
}

6. 员工请假管理(审批流程)

  • 核心逻辑:员工提交请假申请(类型、天数、缘由)→部门经理审批→更新请假状态;
  • 页面设计:请假列表显示申请人、类型、天数、状态标签;审批弹窗带意见输入;
  • 代码要点(请假审批):
@Transactional
public void auditQingjia(Long qingjiaId, Integer status, String reply) {
    Qingjia qingjia = qingjiaMapper.selectById(qingjiaId);
    
    // 更新审批状态
    qingjia.setQingjiaYesnoTypes(status);
    qingjia.setQingjiaYesnoText(reply);
    qingjia.setQingjiaShenheTime(new Date());
    qingjiaMapper.updateById(qingjia);
    
    // 如果审批通过,记录请假天数(用于薪资扣款)
    if (status == 1) { // 通过
        // 这里可以将请假天数同步到薪资模块(可选)
        log.info("员工 {} 请假 {} 天已批准", qingjia.getYonghuId(), qingjia.getQingjiaNumber());
    }
}

7. 薪资管理(核心财务模块)

  • 核心逻辑:管理员/财务人员每月生成员工薪资(岗位工资+绩效+扣款)→员工查看薪资明细;
  • 页面设计:薪资列表显示姓名、月份、应发、实发;详情页拆显示各项明细;
  • 代码要点(薪资自动计算):
@Transactional
public BigDecimal calculateSalary(Long yonghuId, String month) {
    // 1. 查询员工基本信息(岗位工资等)
    Xinxi xinxi = xinxiMapper.selectOne(
        new LambdaQueryWrapper<Xinxi>().eq(Xinxi::getYonghuId, yonghuId)
    );
    
    // 2. 查询当月完成任务数(绩效)
    Long taskCount = fenpeiMapper.selectCount(
        new LambdaQueryWrapper<Fenpei>()
            .eq(Fenpei::getYonghuId, yonghuId)
            .eq(Fenpei::getFenpeiTypes, 2) // 已完成
            .apply("DATE_FORMAT(fenpei_time, '%Y-%m') = {0}", month)
    );
    
    // 3. 查询当月请假天数
    Long qingjiaDays = qingjiaMapper.selectQingjiaDays(yonghuId, month);
    
    // 4. 构建薪资对象
    Xinzi xinzi = new Xinzi();
    xinzi.setYonghuId(yonghuId);
    xinzi.setXinziUuidNumber("XZ" + System.currentTimeMillis());
    xinzi.setXinziName(yonghuId + "-" + month + "薪资");
    xinzi.setXinziMonth(month);
    xinzi.setJibenJine(new BigDecimal(5000)); // 岗位工资
    xinzi.setJiangjinJine(new BigDecimal(2000)); // 薪级工资
    xinzi.setJixiaoJine(new BigDecimal(taskCount * 100)); // 绩效:每任务100元
    xinzi.setJixiaoShijia(new BigDecimal(qingjiaDays * 200)); // 事假扣款:每天200
    xinzi.setXiaojiYingfa(
        xinzi.getJibenJine()
            .add(xinzi.getJiangjinJine())
            .add(xinzi.getJixiaoJine())
    );
    xinzi.setXiaojiYingkou(xinzi.getJixiaoShijia());
    xinzi.setShifaJine(xinzi.getXiaojiYingfa().subtract(xinzi.getXiaojiYingkou()));
    xinzi.setInsertTime(new Date());
    xinzi.setCreateTime(new Date());
    
    xinziMapper.insert(xinzi);
    
    return xinzi.getShifaJine();
}

8. 资料库管理(文档模块)

  • 核心逻辑:管理员上传企业资料(制度文档、培训视频等)→员工下载查看;
  • 页面设计:资料列表显示名称、类型、上传时间;支持在线预览/下载;
  • 代码要点:文件上传使用MultipartFile;支持视频和文档格式。 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

五、企业内管特色功能设计(关键加分项)

企业内管信息化系统的核心在于“管理流程闭环”,即部门设置、任务分配、请假审批、薪资核算全流程自动化,以下是实测有效的设计方案:

1. 部门-任务-薪资全流程追溯

环节记录内容可追溯信息
部门设置部门编号、名称、位置、经理什么部门、谁负责
任务发布任务编号、名称、类型、发布经理什么任务、谁发布的
任务分配分配记录、执行员工、进度、完成时间任务分配给谁了、完成了吗
请假审批请假记录、天数、审批状态谁请假了、批了吗、扣款了吗
薪资核算薪资明细、岗位工资、绩效、扣款钱怎么算的、发了多少

2. 任务完成自动关联绩效

// 任务完成时自动更新绩效(可定时或实时)
@EventListener
public void handleTaskComplete(TaskCompleteEvent event) {
    // 获取完成的任务信息
    Fenpei fenpei = event.getFenpei();
    
    // 查询当月薪资记录
    String month = new SimpleDateFormat("yyyy-MM").format(new Date());
    Xinzi xinzi = xinziMapper.selectOne(
        new LambdaQueryWrapper<Xinzi>()
            .eq(Xinzi::getYonghuId, fenpei.getYonghuId())
            .eq(Xinzi::getXinziMonth, month)
    );
    
    if (xinzi != null) {
        // 更新绩效金额
        xinzi.setJixiaoJine(xinzi.getJixiaoJine().add(new BigDecimal(100)));
        xinzi.setShifaJine(xinzi.getXiaojiYingfa().subtract(xinzi.getXiaojiYingkou()));
        xinziMapper.updateById(xinzi);
    }
}

3. 薪资明细可视化

-- 查询员工年度薪资汇总
SELECT 
    xinzi_month as month,
    SUM(jiben_jine) as base_salary,
    SUM(jixiao_jine) as performance,
    SUM(jixiao_shijia) as leave_deduction,
    SUM(shifa_jine) as net_salary
FROM xinzi
WHERE yonghu_id = #{yonghuId}
AND xinzi_month LIKE CONCAT(#{year}, '%')
GROUP BY xinzi_month
ORDER BY xinzi_month

六、测试与答辩:流程演示为主,突出管理闭环

1. 核心测试用例

测试场景操作步骤预期结果
部门管理全流程管理员新增部门→设置部门经理部门信息正确显示;经理关联成功
任务分配全流程经理发布任务→分配给员工→员工完成→经理确认任务进度更新;完成时间记录
请假审批流程员工提交请假→经理审批通过请假状态更新;薪资扣款关联
薪资计算功能生成员工当月薪资各项金额计算正确;实发金额正确
资料下载功能员工点击资料下载文件正常下载

2. 答辩准备技巧

  • 演示流程:分角色演示(管理员端 + 经理端 + 员工端)→ 管理员设置部门 → 经理发布任务 → 经理分配任务 → 员工接收任务 → 员工更新进度 → 经理确认完成 → 员工提交请假 → 经理审批 → 管理员生成薪资 → 员工查看薪资明细 → 展示完整的部门-任务-请假-薪资管理闭环;
  • 业务讲解:准备一页PPT展示系统功能结构图(图4.1),说明每个模块的作用和角色定位;
  • 技术亮点:重点讲解任务分配与薪资核算的事务一致性、请假扣款自动计算、薪资明细拆解机制;
  • 突出问题解决:讲清“如何保证任务完成情况计入绩效”(任务完成事件监听+薪资更新)、“请假天数如何影响薪资”(请假审批通过后记录扣款)、“薪资明细如何拆解”(分项字段存储+明细展示);提前预判“为什么要设计逻辑删除”,回答“防止重要数据被物理删除,便于数据恢复和追溯”。

结语

本文核心是“聚焦部门-任务-薪资核心业务、实现管理流程自动化、设计完整的企业内管闭环”。毕设无需复杂系统,把部门管理+任务分配+请假审批+薪资核算的业务逻辑讲透、实现一个可运行的企业内管信息化系统、展示完整的管理闭环,即可成为答辩亮点。

若需完整项目源码(带详细注释)、测试数据SQL脚本、薪资自动计算完整代码,可在评论区留言“SpringBoot企业内管系统”获取;开发中遇问题(如事务一致性、任务状态流转、薪资计算公式),也可留言咨询~ 祝毕设顺利!🎉