一,vhr项目宏观分析

目的:实现机关和事业单位的人事管理信息系统

软件使用的对象:面向机关和事业单位内人事信息管理人员和在职开发人员。

【架构选型】

vhr面向的群体范围并不大,并非属于互联网应用,所以市面上鼓吹的高并发,高性能对于这个项目来说并不适用。

盲目上微服务只会徒增成本。

系统业务流程设计

1.管理员对员工信息的操作

首先,管理人员登陆进入系统,对员工信息进行增删改查,进而对奖罚、工资、考评等信息进行增删改查,然后实现对部门员工部分信息的统计及修改

2.操作员对自己信息的操作

可对自己的信息进行操作

系统功能设计

员工资料

员工资料包括基本资料和高级资料。

  • 基本资料

    员工编号、员工姓名、性别、出生日期、身份证号、婚姻状况、名族、机关、政治面貌、电子邮箱、联系电话、联系地址、部门、职位、职称、基本工资、聘用形式、最高学历、所属专业、毕业院校、入职日期、在职状态、工号、合同期限。

  • 高级资料

    (1). 奖惩资料:奖惩日期、奖惩分数、奖惩原因。

    (2). 培训资料:培训日期、培训内容。

    (3). 考评资料:考评日期、考评内容、考评结果。

    (4). 调薪资料:调薪日期、调前薪资、调后薪资、调薪原因。

    (5). 调动资料:调动日期、调前部门、调前职位、调动原因、调后部门、调后职位、备注。

    (6). 工资信息:账套名称、工资月份、应发工资、备注。

    (7). 其他信息:管理员可任意备注其他信息。

人事管理

主要用于对员工奖惩、培训、考评、调薪、调动、工资信息的管理。

1.员工资料

即员工的基本资料,显示员工资料,并且可对员工进行模糊查询,即实现员工资料的增删改查。

2.员工奖惩

对员工奖励模块的增删改查的实现。

3.员工培训

对员工培训模块的增删改查的实现。

4.员工好评

对员工好评模块的增删改查的实现。

5.员工调薪

对员工调薪模块的增删改查的实现。

6.员工调动

对员工调动模块的增删改查的实现。

工资管理

实现对员工工资账套管理、员工账套设置、工资表管理、月末处理、工资表查询一系列对员工工资管理的功能。

1 工资账套管理

对员工奖金、基本工资、提成等各项的增删改查。

2 员工账套设置

根据公司账套(即各部门),查看相应的员工的工资信息,并实现其增删功能。

3 工资表管理

集中对同一部门员工工资进行增删改查的功能。

4 月末处理

对该月该部门员工工资进行增删改查的功能。

5 工资表查询

是一种历史记录查询,可查询某员工在某月的工资情况。

统计管理

对员工资料的统一查询管理,包括综合信息统计、员工积分统计、人事信息统、人事记录统计。

1 综合信息统计

根据员工出生月份、转正信息等统一管理。

2 员工积分统计

根据日期查找员工的积分情况。

3 人事信息统计

对员工进行的同一查询管理,可根据性别、工资、职称等查询员工的信息。

4 人事记录统计

对员工积分的统一管理,可根据部门、月份等查询其积分信息。

系统管理

对系统、管理员等一些操作,包括基础信息设置、系统管理、操作员管理、备份恢复数据、初始化数据库。

1 基础信息设置

对部门、职位、职称、奖惩规则和权限组的设置管理,及其个项目的增删改查。

2 系统管理

对系统本身的一些设置。

3 操作日志管理

记录管理员对数据的操作信息。

4 操作员管理

管理员基本信息的管理,及其增删改功能。

5 备份恢复数据

可对员工资料数据进行备份,并在适当的时候还原。

6 初始化数据库

对整个数据库资料初始化的操作。

二,数据库表设计

vhr系统使用者大致可分为两类,一种是系统管理员,另外一种是拥有各种权限的hr员工。

vhr一共有21张表,其中核心的五张表:

hr表

role角色表

用户角色关联表【hr_role】

前面三张表定义了vhr使用的对象及所拥有的权限,

比如hr中第一个id为3的系统管理员对于用户角色关联表中rid为6,而6在role表中对应的是系统管理员权限。


下面两张菜单表和菜单角色关联表定义了角色具体拥有的权限。

menu表

menu_role表

这两张表需要结合role表来分析,还是以hr表中id为3的用户举例,在menu_role中rid为3对应的mid为7,7在menu表中的访问内容只有基本资料,那么这个用户可能是个普通员工。以此类推,作者在文档里画了一个图非常形象生动的诠释了这五张表的关系:

剩下的表在往下看功能的时候再慢慢了解吧。

三,拆解项目

登录模块

不知道面对整个项目该如何下手,还好在图书馆借了SpringBoot+Vue的书,实战介绍完数据库就到登录模块了。

在没有思路的时候,姑且先从这里开始吧。

在研究登录模块之前,当然是先把程序跑起来先。

clone,然后用IDEA打开。

第一步就是修改数据库相关配置

首先建库,把vhr.sql在MySQL里创建出来。【MySQL版本:8.0】

出于个人习惯,

将properties改为yaml,

SpringBoot版本换到了2.1.8,

Druid版本换到了1.1.20,顺带配置Druid监控。

  • 关于application.yaml
  1. spring:
  2. datasource:
  3. # 数据源基本配置
  4. username: noneplus
  5. password: Noneplus564925080!
  6. driver-class-name: com.mysql.cj.jdbc.Driver
  7. url: jdbc:mysql://xx.xxx.xxx.xx:3306/vhr?serverTimezone=UTC
  8. type: com.alibaba.druid.pool.DruidDataSource
  9. # Druid数据源配置
  10. initialSize: 5
  11. minIdle: 5
  12. maxActive: 20
  13. maxWait: 60000
  14. timeBetweenEvictionRunsMillis: 60000
  15. minEvictableIdleTimeMillis: 300000
  16. validationQuery: SELECT 1 FROM DUAL
  17. testWhileIdle: true
  18. testOnBorrow: false
  19. testOnReturn: false
  20. poolPreparedStatements: true
  21. # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
  22. filters: stat,wall,log4j
  23. maxPoolPreparedStatementPerConnectionSize: 20
  24. useGlobalDataSourceStat: true
  25. connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500
  26. mail:
  27. host: smtp.qq.com
  28. port: 465
  29. username: 1510161612@qq.com
  30. password: fhmvfkwxjwmzhhjd
  31. default-encoding: UTF-8
  32. properties:
  33. mail:
  34. debug: true
  35. stmp:
  36. socketFactory:
  37. class: javax.net.ssl.SSLSocketFactory
  38. pagehelper:
  39. helperDialect: mysql
  40. reasonable: true
  41. supportMethodsArguments: true
  42. pageSizeZero: false
  43. server:
  44. port: 8082
  45. ######################################################################################
  46. # 原application.properties
  47. ##MySQL配置
  48. # spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
  49. # spring.datasource.url=jdbc:mysql://47.103.6.247:3306/vhr?useUnicode=true&characterEncoding=UTF-8
  50. # spring.datasource.username=noneplus
  51. # spring.datasource.password=Noneplus564925080!
  52. # #MyBatis日志配置
  53. # mybatis.config-location=classpath:/mybatis-config.xml
  54. # #Redis配置
  55. # spring.redis.database=0
  56. # spring.redis.host=192.168.66.130
  57. # spring.redis.port=6379
  58. # spring.redis.password=123@456
  59. # spring.redis.jedis.pool.max-active=8
  60. # spring.redis.jedis.pool.max-idle=8
  61. # spring.redis.jedis.pool.max-wait=-1ms
  62. # spring.redis.jedis.pool.min-idle=0
  63. # #缓存配置
  64. # spring.cache.cache-names=menus_cache
  65. # spring.cache.redis.time-to-live=1800s
  66. # #端口配置
  67. # server.port=8082
  68. #
  69. # spring.mail.host=smtp.qq.com
  70. # spring.mail.port=465
  71. # spring.mail.username=1510161612@qq.com
  72. # spring.mail.password=fhmvfkwxjwmzhhjd
  73. # spring.mail.default-encoding=UTF-8
  74. # spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
  75. # spring.mail.properties.mail.debug=true
  • pom修改的部分
  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>2.1.8.RELEASE</version>
  5. <relativePath/> <!-- lookup parent from repository -->
  6. </parent>
  7. <dependency>
  8. <groupId>com.alibaba</groupId>
  9. <artifactId>druid</artifactId>
  10. <version>1.1.20</version>
  11. </dependency>
  • 配置DruidConfig监控

    在config包下新增一个DruidConfig

    1. package org.sang.config;
    2. import com.alibaba.druid.pool.DruidDataSource;
    3. import com.alibaba.druid.support.http.StatViewServlet;
    4. import com.alibaba.druid.support.http.WebStatFilter;
    5. import org.springframework.boot.context.properties.ConfigurationProperties;
    6. import org.springframework.boot.web.servlet.FilterRegistrationBean;
    7. import org.springframework.boot.web.servlet.ServletRegistrationBean;
    8. import org.springframework.context.annotation.Bean;
    9. import org.springframework.context.annotation.Configuration;
    10. import javax.sql.DataSource;
    11. import java.util.Arrays;
    12. import java.util.HashMap;
    13. import java.util.Map;
    14. @Configuration
    15. public class DruidConfig {
    16. //加载application.yaml中的Druid配置
    17. @ConfigurationProperties(prefix = "spring.datasource")
    18. @Bean
    19. public DataSource druid(){
    20. return new DruidDataSource();
    21. }
    22. //配置Druid的监控
    23. //1、配置一个管理后台的Servlet
    24. @Bean
    25. public ServletRegistrationBean statViewServlet(){
    26. ServletRegistrationBean bean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
    27. Map<String,String> initParams = new HashMap<>();
    28. initParams.put("loginUsername","hq");
    29. initParams.put("loginPassword","564925080");
    30. initParams.put("allow","");//默认就是允许所有访问
    31. initParams.put("deny","192.168.15.21");
    32. bean.setInitParameters(initParams);
    33. return bean;
    34. }
    35. //2、配置一个web监控的filter
    36. @Bean
    37. public FilterRegistrationBean webStatFilter(){
    38. FilterRegistrationBean bean = new FilterRegistrationBean();
    39. bean.setFilter(new WebStatFilter());
    40. Map<String,String> initParams = new HashMap<>();
    41. initParams.put("exclusions","*.js,*.css,/druid/*");
    42. bean.setInitParameters(initParams);
    43. bean.setUrlPatterns(Arrays.asList("/*"));
    44. return bean;
    45. }
    46. }
  • 配置Druid监控,还需要配置log4j依赖

    1. <dependency>
    2. <groupId>log4j</groupId>
    3. <artifactId>log4j</artifactId>
    4. <version>1.2.17</version>
    5. </dependency>

    log4j.properties【配置在resource路径下】

    1. # Configure logging for testing: optionally with log file
    2. log4j.rootLogger=WARN, stdout
    3. # log4j.rootLogger=WARN, stdout, logfile
    4. log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    5. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    6. log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
    7. log4j.appender.logfile=org.apache.log4j.FileAppender
    8. log4j.appender.logfile.File=target/spring.log
    9. log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
    10. log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

启动项目测试

访问:http://localhost:8082/index.html#/

测试Druid监控,访问:http://localhost:8082/druid/

【注:访问Druid监控之前需要先登录获取权限,之后再访问Druid】

代码参考

【tips:后续会更新代码,为了方便测试,会打下不同的节点】

https://github.com/Noneplus/vhr/releases/tag/v1.0

VHR配置数据库开发环境的更多相关文章

  1. Ubuntu 配置数据库开发环境(mysql oracle mssqlserver sybase)

    1.mysql sudo apt-get install libmysql++-dev //mysql连接库 2.ms sql server/sybase ./configure --prefix=/ ...

  2. DELPHI10.2的LINUX数据库开发环境配置

    DELPHI10.2的LINUX数据库开发环境配置 ubuntu使用firedac访问mysql1.安装mysql-client包sudo apt-get install mysql-client m ...

  3. Linux下配置PHP开发环境

    转载于: http://www.uxtribe.com/php/405.html 该站下有系列PHP文章. 在Linux下搭建PHP环境比Windows下要复杂得多.除了安装Apache,PHP等软件 ...

  4. Visual Studio下SQLite数据库开发环境设置

    由于我们介绍的内容都是基于微软的Visual Studio下开发的Win32平台,所以下边我们介绍Visual Studio下SQLite数据库开发环境设置.具体而言我们有两种方式可以在Visual ...

  5. 配置wamp开发环境【2】 配置wamp开发环境之mysql的配置

    此前我已经将wamp配置的Apache.PHP.phpmyadmin全部配置完成,以上三种配置参照 配置wamp开发环境 下面我们来看看mysql的配置,这里用的是mysql5.5.20,下载地址: ...

  6. Ubuntu 配置 Android 开发 环境

    . 果断换Ubuntu了, Ubuntu的截图效果不好, 不能设置阴影 ... 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article ...

  7. 配置wamp开发环境之mysql的配置

    此前我已经将wamp配置的Apache.PHP.phpmyadmin全部配置完成,以上三种配置参照 配置wamp开发环境 下面我们来看看mysql的配置,这里用的是mysql5.5.20,下载地址: ...

  8. Mac上通过docker配置PHP开发环境

    这篇文章介绍的内容是关于Mac上通过docker配置PHP开发环境,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 更多PHP相关知识请关注我的专栏PHP​zhuanlan.zhihu. ...

  9. Notepad++ 使用nppexec插件配置简易开发环境

    notepad++  采用nppexec插件来配置简易开发环境,而不需要笨重的IDE以及麻烦.重复的命令行.控制台输入: 以下为本人最近用到的脚本配置: //编程语言脚本中$(NAME_PART).x ...

随机推荐

  1. Python简单的get和post请求

    1.json 模块提供了一种很简单的方式来编码和解码JSON数据. 其中两个主要的函数是 json.dumps() 和 json.loads() , 要比其他序列化函数库如pickle的接口少得多. ...

  2. 尝试在iOS上使用gRPC

    简介 gRPC,google的远程过程调用框架,传输协议使用 HTTP2, 序列化协议使用 protobuf.gRPC 使用 HTTP2 传输协议传输 protobuf 序列化的二进制数据,有极高的效 ...

  3. xshell 远程登陆CentOS7 免密登陆

    首先说一下大体的思路: 1. 以密码登陆CentOS系统 2. 配置ssh 3. xshell 生成秘钥 4. 进行免密登陆 软件.设备: xshell(下载地址(免费版),也可以自行百度下载) Ce ...

  4. 主成分分析(PCA)原理与实现

    主成分分析原理与实现   主成分分析是一种矩阵的压缩算法,在减少矩阵维数的同时尽可能的保留原矩阵的信息,简单来说就是将 \(n×m\)的矩阵转换成\(n×k\)的矩阵,仅保留矩阵中所存在的主要特性,从 ...

  5. pytest_前置后置

    今天总结下pytest,pytest简直就是python自动化中的高富帅,各种操作,哈哈 这次总结主要涉及到了以下几点: 1.unittest中的setUp.tearDown.setUpClass.t ...

  6. CMS垃圾收集器深入详解

    上一次[https://www.cnblogs.com/webor2006/p/11048407.html]对安全点和安全区进行了理论化的了解,接下来继续对CMS进行其它理论的了解,还是纯理论!!坚持 ...

  7. pdfium去掉v8支持

    GYP_DEFINES='pdf_enable_v8=0 pdf_enable_xfa=0' build/gyp_pdfium 未测试  ???????????

  8. 20187101035 张玉晶《面向对象程序设计(java)》第八周学习总结

    201871010135   张玉晶 <面向对象程序设计(java)>第八周学习总结> 项目 内容 这个作业属于哪个课程 <任课教师博客主页链接> https://www ...

  9. 16-numpy笔记-莫烦pandas-4

    代码 import pandas as pd import numpy as np dates = pd.date_range('20130101', periods=6) df=pd.DataFra ...

  10. 编译安装PHP以及需要的基本扩展库(php7.4)

    安装配置选项1: ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-curl --with-freety ...