
1. 获取地址https://fifteen.xiaobias.com/source/1972. 项目简介科研工作量管理系统旨在帮助高校或科研机构对教师的科研项目、科研论文、科研获奖以及对应的工作量进行规范化管理。系统支持三种角色管理员、秘书和教师。教师可以申报科研项目、科研论文、科研获奖并提交工作量记录。秘书对教师提交的科研项目、论文、获奖及工作量进行审核与查询。管理员管理系统的基础数据包括字典类型如项目类型、论文类型、获奖类型、审核状态等、教师信息、秘书信息并可查看所有数据报表。系统通过逻辑删除、审核流程等机制保证数据的有效性和流程的完整性。3. 技术栈层次技术/框架说明后端框架Spring Boot 2.2.2.RELEASE提供IoC、Web模块等ORM框架MyBatis-Plus 2.3简化数据库访问支持分页、条件构造器数据库MySQL 5.7.32关系型数据库前端框架Vue.js Element UI后台管理界面采用Vue CLI构建Element UI组件库权限控制Apache Shiro 1.3.2 自定义Token身份认证与授权Token存储在token表工具库Hutool、Fastjson、Commons-lang3、Poi等简化开发支持Excel导入导出、JSON处理等4. 详细介绍4.1 数据库设计数据库名称keyangongzuoliang主要表结构如下表名说明关键字段jiaoshi教师信息工号、姓名、手机号、身份证号、头像、性别、邮箱mishu秘书信息工号、姓名、手机号、头像、性别、邮箱xiangmu科研项目项目名称、类型、相关文件、介绍、逻辑删除、审核状态、审核意见keyanlunwen科研论文论文名称、类型、相关文件、详情、逻辑删除、审核状态keyanhuojiang科研获奖获奖名称、类型、相关文件、详情、审核状态gongzuoliang工作量关联项目、工作量详情、提交总数、总工作量自动计算 提交总数 × 项目类型对应的工作量标准dictionary字典表存储各种类型枚举性别、项目类型、论文类型、获奖类型、审核状态等users管理员用户名、密码、角色tokenToken表用户id、token、过期时间config配置文件存储轮播图路径等系统配置其中工作量总工作量通过字典表中xiangmu_types的备注字段beizhu存储单个工作量标准值保存时自动计算。4.2 核心功能教师端登录、个人信息管理科研项目申报填写名称、类型、上传文件等→ 提交后状态为“待审核”科研论文、科研获奖的申报同样需审核工作量申报选择已审核通过的项目填写提交总数系统自动计算总工作量查看自己的申报记录及审核反馈秘书端登录、个人信息管理审核教师提交的科研项目、论文、获奖同意/拒绝填写意见审核工作量记录查看所有数据可按条件筛选、导出管理员端管理教师、秘书账号增删改查、重置密码管理字典数据如添加/修改项目类型、获奖类型等动态影响工作量标准管理轮播图配置查看全系统数据统计报表4.3 业务规则科研项目、论文、获奖提交后默认审核状态为“待审核”yesno_types1秘书审核通过后状态变为“同意”2拒绝为“拒绝”3。科研项目、论文采用逻辑删除delete字段1表示未删除2表示已删除前端列表默认只显示未删除的记录。工作量计算根据所选项目对应的类型xiangmu_types从字典表中匹配该类型的工作量标准beizhu乘以教师提交的“提交总数”自动生成总工作量。教师工号、手机号、身份证号在系统中唯一秘书工号、手机号唯一。5. 部分代码5.1 工作量保存时的自动计算GongzuoliangController.javaRequestMapping(/save)publicRsave(RequestBodyGongzuoliangEntitygongzuoliang,HttpServletRequestrequest){// 省略角色判断XiangmuEntityxiangmuEntityxiangmuService.selectById(gongzuoliang.getXiangmuId());if(xiangmuEntitynull)returnR.error(查不到该项目);DictionaryEntitydictionaryEntitydictionaryService.selectOne(newEntityWrapperDictionaryEntity().eq(dic_code,xiangmu_types).eq(code_index,xiangmuEntity.getXiangmuTypes()));if(dictionaryEntitynull)returnR.error(查不到该项目的工作量标准);gongzuoliang.setZonggongzuoliang(Integer.valueOf(dictionaryEntity.getBeizhu())*gongzuoliang.getTijiaozongshu());gongzuoliang.setInsertTime(newDate());gongzuoliang.setCreateTime(newDate());gongzuoliangService.insert(gongzuoliang);returnR.ok();}5.2 字典表转换工具方法DictionaryServiceImpl.javapublicvoiddictionaryConvert(Objectobj,HttpServletRequestrequest){// 通过反射获取对象中所有以 Types 结尾的 Integer 字段// 从 ServletContext 中获取预加载的字典Map// 将对应的 code_index 转换为 index_name 并设置到对应的 Value 字段}5.3 教师登录接口JiaoshiController.javaIgnoreAuthRequestMapping(value/login)publicRlogin(Stringusername,Stringpassword,HttpServletRequestrequest){JiaoshiEntityjiaoshijiaoshiService.selectOne(newEntityWrapperJiaoshiEntity().eq(username,username));if(jiaoshinull||!jiaoshi.getPassword().equals(password))returnR.error(账号或密码不正确);StringtokentokenService.generateToken(jiaoshi.getId(),username,jiaoshi,教师);RrR.ok();r.put(token,token);r.put(role,教师);r.put(username,jiaoshi.getJiaoshiName());r.put(tableName,jiaoshi);r.put(userId,jiaoshi.getId());returnr;}5.4 MyBatis-Plus 分页查询配置GongzuoliangDao.xmlselectidselectListViewresultTypecom.entity.view.GongzuoliangViewSELECT ... FROM gongzuoliang a left JOIN xiangmu xiangmu ON a.xiangmu_id xiangmu.id left JOIN dictionary dictionary ON xiangmu.xiangmu_types dictionary.code_indexwhere!-- 动态条件 --/whereorder by a.${params.orderBy} desc/select6. 部分截图7. 项目总结该“科研工作量管理系统”是一个基于 Spring Boot MyBatis-Plus Vue 的全栈项目完整实现了科研管理中常见的项目、论文、获奖申报及工作量核算流程。系统具有以下特点角色分明管理员、秘书、教师各司其职权限控制清晰。数据字典驱动所有分类枚举通过字典表动态管理工作量标准可配置提高了系统的灵活性。自动计算工作量根据项目类型标准和教师提交数量自动生成减少人工错误。审核流程教师提交内容后需经秘书审核保证数据质量。逻辑删除重要数据不物理删除便于追溯和恢复。前端组件化使用 Element UI 和 Vue 组件后台管理界面美观易用。该项目可扩展性强未来可增加更多统计图表、消息通知、与学校现有系统对接等功能是一套完整的科研工作量管理解决方案。