功能完善的企业资产管理系统,基于Java 、SSM、Spring Security、AdminLte开发
账号 | 角色 | 密码 |
---|---|---|
00001 | 管理员 | 0000 |
00002 | 人事管理员 | 0000 |
00003 | 资产管理员 | 0000 |
00004 | 普通用户 | 0000 |
这一节是对系统设计的描述和系统实现的展示,因本系统功能复杂,此处仅对部分重要细节做相关展示,其余不再赘述。
在系统的实现中,将各个模块分为了Controller层(控制层)、Dao层(持久层)、Domain层(实体类层)、Service层(服务层),多层结构设计使程序结构更加清晰,便于错误定位,代码复用等,项目结构如图2所示:
图2登陆流程图
Figure 2 login flow chart
控制器是前台与后台进行交互的地方,用于接收与响应前台请求。
Dao层属于SSM框架的Mybatis部分,负责与数据库的交互,用于处理数据持久化。
实体类存放层,用于放置与数据库一一对应的实体类。
服务层业务逻辑的封装提高了业务逻辑的独立性和可重用性,并使程序非常简洁。
数据库的设计从某种程度上决定了程序的编码过程,一个合理的数据库设计,不仅能简化系统逻辑代码,同时也避免数据冗余,减轻系统负载。本系统中采用MySQL数据库进行开发,下面是对数据库表总体结构和部分重要表的展示,因数据表众多,此处仅选出部分关键表进行描述。
数据库表设计如表1所示:
表1 数据库表信息展示
Table 1 Database table information display
Allot | 资产移交信息表 |
---|---|
Asset | 资产信息表 |
Department | 部门信息表 |
Inventory | 盘点信息表 |
Message | 消息信息表 |
Message_Receiver | 消息-接收者信息表 |
Modify | 资产变更信息表 |
Repair | 资产维修信息表 |
Role | 角色信息表 |
Scrap | 报废信息表 |
Syslog | 日志信息表 |
Users | 用户信息表 |
User_role | 用户-角色信息表 |
Permission | 权限信息表 |
Role-Permission | 角色-权限表 |
用户表(如表2所示)与角色表(如表3所示)之间是多对多的关系,通过用户-角色表(如表4所示)进行连接,实现一个用户可拥有多个角色,一个角色可以分配给多个用户。
表2 用户表展示
Table 2 User table display
字段 | 类型 | 长度 | 是否为空 | 是否为主键 | 描述 |
---|---|---|---|---|---|
Id | Int | 50 | 否 | 是 | 用户id |
account | int | 50 | 否 | 否 | 用户账户 |
username | varchar | 50 | 否 | 否 | 用户名 |
Password | varchar | 50 | 否 | 否 | 密码 |
表3 角色表展示
Table 3 Role table display
字段 | 类型 | 长度 | 是否为空 | 是否为主键 | 描述 |
---|---|---|---|---|---|
Id | Int | 50 | 否 | 是 | 角色id |
RoleName | varchar | 50 | 否 | 否 | 角色名 |
表4 用户-角色表展示
Table 4 User-Role table display
字段 | 类型 | 长度 | 是否为空 | 是否为主键 | 描述 |
---|---|---|---|---|---|
UserID | Int | 50 | 否 | 是 | 用户id |
RoleID | varchar | 50 | 否 | 否 | 角色id |
部门表中包含一个父级部门id字段,表现出部门间的层级关系。如表5所示
表5 角色表展示
Table 5 Role table display
字段 | 类型 | 长度 | 是否为空 | 是否为主键 | 描述 |
---|---|---|---|---|---|
Id | Int | 50 | 否 | 是 | 部门id |
Name | varchar | 50 | 否 | 否 | 部门名称 |
ParentId | Int | 50 | 是 | 否 | 父级部门ID |
资产表中包含所属部门id字段,包含资产状态字段Status,用数字表示不同的状态(0:正常;1:维修;2:报废;3:移交;4:盘点)。如表6所示
表6 资产表展示
Table 6 Role table display
字段 | 类型 | 长度 | 是否为空 | 是否为主键 | 描述 |
---|---|---|---|---|---|
Id | Int | 50 | 否 | 是 | 资产id |
assetName | varchar | 50 | 否 | 否 | 资产名称 |
DepartmentId | Int | 50 | 否 | 否 | 资产所属部门 |
Status | Int | 4 | 否 | 否 | 资产状态 |
消息表中的type字段用于表示消息的不同类型(0:一般消息;1:紧急消息;2:通知消息)。如表7所示
表7消息表展示
Table 7 Message table display
字段 | 类型 | 长度 | 是否为空 | 是否为主键 | 描述 |
---|---|---|---|---|---|
Id | Int | 50 | 否 | 是 | 消息id |
SenderId | Int | 50 | 否 | 否 | 发件人Id |
type | Int | 50 | 否 | 否 | 消息类型 |
用户表(如表2所示)与消息表(如表7所示)之间是多对多的关系,通过消息-接收者表(如表8所示)进行连接,实现一个用户可拥有多条消息,一个消息可以发送给多个用户。其中Status字段用于表示当前消息的状态(0:未读;1:已读;2:收藏;3:删除)
表8 消息-接收人表展示
Table 8 Message-Receiver table display
字段 | 类型 | 长度 | 是否为空 | 是否为主键 | 描述 |
---|---|---|---|---|---|
MessageId | Int | 50 | 否 | 是 | 消息id |
ReceiverId | Int | 50 | 否 | 是 | 接收人Id |
Status | Int | 4 | 否 | 否 | 消息状态 |
维修表中包含资产ID与用户ID字段,是维修表的两个外键,其中checkStatus字段用于表示当前的维修审核状态(0:待审核;1:一级审核通过;2:驳回;3:二级审核通过)。如表9所示:
表9 维修表展示
Table 9 Asset repair table display
字段 | 类型 | 长度 | 是否为空 | 是否为主键 | 描述 |
---|---|---|---|---|---|
id | Int | 50 | 否 | 是 | 维修id |
assetId | Int | 50 | 否 | 否 | 资产Id |
userId | Int | 50 | 否 | 否 | 发起人Id |
checkStatus | Int | 4 | 否 | 否 | 审核状态 |
报废表中包含资产ID与用户ID字段,是报废表的两个外键,其中checkStatus字段用于表示当前的报废审核状态(0:待审核;1:一级审核通过;2:驳回;3:二级审核通过)。如表10所示:
表10 报废表展示
Table 10 Asset scrap table display
字段 | 类型 | 长度 | 是否为空 | 是否为主键 | 描述 |
---|---|---|---|---|---|
id | Int | 50 | 否 | 是 | 报废id |
assetId | Int | 50 | 否 | 否 | 资产Id |
userId | Int | 50 | 否 | 否 | 发起人Id |
checkStatus | Int | 4 | 否 | 否 | 审核状态 |
移交表中包含资产ID与用户ID字段,是移交表的两个外键,其中checkStatus字段用于表示当前的移交审核状态(0:待审核;1:一级审核通过;2:驳回;3:二级审核通过)。如表11所示:
表11 移交表展示
Table 11 Asset allot table display
字段 | 类型 | 长度 | 是否为空 | 是否为主键 | 描述 |
---|---|---|---|---|---|
id | Int | 50 | 否 | 是 | 移交id |
assetId | Int | 50 | 否 | 否 | 资产Id |
userId | Int | 50 | 否 | 否 | 发起人Id |
checkStatus | Int | 4 | 否 | 否 | 审核状态 |
盘点表中包含资产ID与用户ID字段,是盘点表的两个外键,其中checkStatus字段用于表示当前的盘点审核状态(0:待审核;1:一级审核通过;2:驳回;3:二级审核通过)。如表12所示:
表12 盘点表展示
Table 12 Asset inventory table display
字段 | 类型 | 长度 | 是否为空 | 是否为主键 | 描述 |
---|---|---|---|---|---|
id | Int | 50 | 否 | 是 | 盘点id |
assetId | Int | 50 | 否 | 否 | 资产Id |
userId | Int | 50 | 否 | 否 | 发起人Id |
checkStatus | Int | 4 | 否 | 否 | 审核状态 |
本节将详细介绍资产管理系统的具体实现。由于本系统实现复杂,所以对界面及实现代码仅作部分展示。
本系统的功能模块众多,下面将对系统中各功能模块的设计及实现流程进行说明。
在本系统中采用Spring Security 接管登陆,用户输入账户密码后,密码将利用Spring Security中BCryptPasswordEncoderUtils进行加密,之后通过Mybatis与数据库中数据进行比较,如果信息正确,则从角色表中查出当前登陆用户角色,之后便可根据用户角色分配系统访问权限。
登陆流程及登陆界面如图3与图4所示:
图3登陆流程图
Figure 3 login flow chart
图4 前台登陆页
Figure 4 login page
根据登陆后Spring Security所取得的用户角色信息,在前端添加标签或是在后端接口处添加注解,控制页面元素仅对限定角色可见图5和图6所示:
图5 普通用户显示界面
Figure 5 Common user interface
图6 管理员显示界面
Figure 6 Administrator interface
拥有管理员角色权限的账户可以增删权限,并且可以给其他员工分配权限。如图7所示:
图7 角色管理页面
Figure 7 role management page
管理员用户可以对人员信息进行增删改查,支持批量操作、模糊搜索、查看详情、导出信息到excel,添加用户角色等操作。如图8所示:
图8 员工管理页面
Figure 8 Employee management page
用户可以对资产信息进行增删改查,支持批量操作、模糊搜索、查看详情、导出信息到excel等操作,同时可以在这一页面选中特定资产进行维修、报废、变更、盘点等操作。如图9所示:
图9 资产管理页面
Figure 9 Asset management page