项目编号:
一,环境介绍
语言环境:Java: jdk1.8
数据库:Mysql: mysql5.7
应用服务器:Tomcat: tomcat8.5.31
开发工具:IDEA或eclipse
二,项目简介
研究背景:
科研课题项目管理是科研工作中非常重要的一环。在科研过程中,研究者需要承担项目申报、资金管理、进度跟踪、成果展示等多个任务,这些任务繁琐且容易出错,给科研工作带来很大的困扰。传统的手工管理方式存在信息不透明、效率低下、易出错等问题,需要一种高效、智能的管理系统来提升科研项目管理的效率和质量。
研究意义:
- 提高科研项目管理效率:科研课题项目管理系统可以将研究者的工作流程自动化,实现项目申报、资金管理、任务分配、进度跟踪等多个环节的无缝连接,大大提高项目管理的效率。
- 提升项目管理的质量:科研课题项目管理系统可以对项目管理过程进行规范化和标准化,确保项目遵循科研管理的规定和流程,从而提高项目管理的质量和可控性。
- 加强项目团队协作:科研课题项目管理系统可以提供一个统一的平台,方便项目团队成员之间的沟通和协作,实时共享项目进展、成果和资料,促进团队合作和知识共享。
- 提升科研成果的可见性和传播效果:科研课题项目管理系统可以将项目成果和研究成果进行整理和展示,方便科研人员和相关机构了解和评估项目的价值和贡献,提高科研成果的可见性和传播效果。
- 数据分析和决策支持:科研课题项目管理系统可以对项目数据进行统计和分析,提供科学决策依据,帮助管理者进行项目评估和决策。
综上所述,基于Spring Boot+Vue的科研课题项目管理系统具有重要的研究意义和实际应用价值,可以提高科研项目管理的效率和质量,加强团队协作,提升科研成果的可见性和传播效果,为科研工作者提供更好的科研管理工具。
三,系统展示
登录 /注销
用户管理
项目管理
刷新列表、添加项目、编辑项目、查看详情、项目申报、申请变更、申请结题、项目删除
申报管理
刷新列表、查看申请、查看项目、申请通过、申请驳回
变更管理
刷新列表、查看申请、查看项目、申请通过、申请驳回
结题管理
刷新列表、查看申请、查看项目、申请通过、申请驳回
角色管理
刷新列表、添加角色、编辑角色、分配权限、删除角色
权限管理
[管理员功能]刷新列表、添加权限、编辑权限、删除权限
数据字典
刷新列表、添加类别、编辑类别、删除类别
四,核心代码展示
4.1 权限相关
import java.util.List; /** * @Date 2021-12-12 * @Description * @Version 1.0 */ @Service public class PermissionServiceImpl extends BaseServiceImpl<Permission> implements IPermissionService { @Autowired private PermissionRepository permissionRepository; @Autowired private RolePermissionRepository rolePermissionRepository; public PermissionServiceImpl(BaseRepository<Permission> repository) { super(repository); } @Override public Permission saveValidate(String name, String code, String parentId) { return permissionRepository.saveValidate(name, code, parentId); } @Override public List<JsonTreeData> findPermissionTree() { List<Permission> permissionList = permissionRepository.findAll(); return new JsonTreeCreater<Permission>(permissionList, item -> item.getId(), a -> StringUtils.isEmpty(a.getParentId()) ? "0" : a.getParentId(), a -> a.getName(), a -> false, a -> null ).create(); } @Override @Transactional public void deldete(String id) { // 删除权限 permissionRepository.delete(id); // 删除角色权限中间关系表 rolePermissionRepository.deleteByPermissionIds(id); } @Override public int updateValidate(Permission permission) { return permissionRepository.updateValidate(permission.getId(),permission.getName(),permission.getCode(),permission. getParentId()); } @Override public Permission update(Permission permission){ Permission oldPermission = this.findById(permission.getId()); Assert.notNull(oldPermission,"你要修改的权限不存在"); oldPermission.setName(permission.getName()); oldPermission.setCode(permission.getCode()); return permissionRepository.save(oldPermission); } }
4.2 用户管理
/** * @Date 2021-12-12 * @Description * @Version 1.0 */ @Service public class UserServiceImpl extends BaseServiceImpl<User> implements IUserService { @Autowired private UserRepository userRepository; @Autowired private BaseRepository<User> baseRepository; @Autowired private UserPermissionRepository userPermissionRepository; @Autowired private UserRoleRepository userRoleRepository; public UserServiceImpl(BaseRepository<User> repository) { super(repository); } private RandomNumberGenerator randomNumberGenerator = new SecureRandomNumberGenerator(); @Override public SecurityUserDto login(String loginName, String password){ SecurityUserDto securityUserDto = new SecurityUserDto(); User user = userRepository.findByUserName(loginName); //账号不存在 if(user == null) { throw new UnknownAccountException("账号不存在!"); } password = new Md5Hash(password, user.getSalt()).toString(); //密码错误 if(!password.equals(user.getPassword())) { throw new IncorrectCredentialsException("密码错误!"); } //账号锁定 if(user.getStatus().equals(UserStatus.LOCK.getCode())){ throw new LockedAccountException("账号已经被锁定,请联系管理员!"); } try { securityUserDto = BeanCopyUtils.copy(user,SecurityUserDto.class); }catch (Exception e){ throw new CopyFailedException(e.getMessage()); } return securityUserDto; } @Override public User save(User user){ User oUser = this.findByUserName(user.getUserName()); Assert.isNull(oUser,"用户名已经存在!"); //设置用户状态 开启 user.setStatus(UserStatus.UNLOCK.getCode()); user.setCreateTime(new Date()); if(StringUtils.isEmpty(user.getType())) { //设置用户类型 默认为普通用户 user.setType(UserType.USER.getCode()); } //对密码进行加盐 String password = user.getPassword(); String salt = randomNumberGenerator.nextBytes().toHex(); user.setSalt(salt); password = new Md5Hash(password, salt).toString(); user.setPassword(password); return userRepository.save(user); } public User findByUserName(String userName){ return userRepository.findByUserName(userName); } @Override @Transactional public void deleteByUserName(String name) { User user = userRepository.findByUserName(name); // 删除用户 userRepository.deleteByUserName(name); // 删除用户角色中间关系表 userRoleRepository.deleteByUserId(user.getId()); } @Override public void updateStatusById(String id, String status) { User user = userRepository.findById(id); Assert.isTrue(!UserType.isAdmin(user.getType()),"超级管理员无法禁用"); userRepository.updateStatusById(id,status); } @Override public void updatePassword(User user, String password) { String salt = user.getSalt(); password = new Md5Hash(password, salt).toString(); user.setPassword(password); baseRepository.save(user); } @Override public List<Role> findRoleByUserId(String id) { return userRepository.findRoleByUserId(id); } @Override public Set<String> findPerByUserId(String id) { return userRepository.findPerByUserId(id); } @Override @Transactional public void assignmentRole(String id, String[] roleIds) { User user = userRepository.findById(id); Assert.notNull(user,"用户不存在!"); // 删除之前的用户角色关系 userRoleRepository.deleteByUserId(id); // 分配新的角色 if(roleIds.length>0) { List<UserRole> userRoleList = UserRole.getUserRoleList(id, roleIds); userRoleRepository.save(userRoleList); } } @Override public User update(User user){ User oldUser = userRepository.findById(user.getId()); Assert.notNull(oldUser,"用户不存在!"); oldUser = UserUtil.updateUser(user,oldUser); return baseRepository.save(oldUser); } }
五,相关作品展示
基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目
基于Nodejs、Vue等前端技术开发的前端实战项目
基于微信小程序和安卓APP应用开发的相关作品
基于51单片机等嵌入式物联网开发应用
基于各类算法实现的AI智能应用
基于大数据实现的各类数据管理和推荐系统