热门点击
随便看看
来源:职称阁分类:经济论文 时间:2021-03-06 09:56热度:
在以往银行会计部门项目库管理中,由下级部门进行上报纸质版项目计划,经由上级部门审核批准后,再由下级部门具体实施,整个过程流程繁琐、审核不透明、效率底下。通过项目库管理系统的设计,可以实现自动化办公[1]、统计项目的完成状态、当年的预算与实际支出情况,为企业的内部管理提供辅助决策。系统基于SpringSecurity进行人员权限管理[2]和安全登录[3],基于SpringBoot进行系统整体设计,以MySQL为持久化数据库。介绍了该系统的总体架构、技术的对比选型、数据库的设计方案、系统关键技术的实现方式、最终成果。
关键词:项目库管理系统;SpringSecurity;SpringBoot;MySQL
项目库管理系统[4]作为银行会计部门的日常办公系统,包括计划、审核、执行与统计四个核心流程。随着银行业务的不断扩展[5]和自动化办公的发展,为其设计安全、便利、高效、透明的管理系统能够极大地提高工作效率。同时,针对银行缺少专业运维人员的现实性,需要设计系统的运行监控平台和服务器自动化运维策略。南京市人民银行会计部门根据自己的办公流程,希望实现从预算管理、货物工程服务的具体实施、绩效管理到统计分析的流程化管理,最终能够在统计分析模块可视化预算和支出情况。本系统采用SpringSecurity进行人员权限管理和系统安全管理;使用SpringBoot作为后端整体框架;因涉及多个Excel表格的处理,基于poi和反射编写了对应的工具类;统计分析是基于帆软报表实现;运行监控平台基于SpringBootActuator实现。整合上述技术,最终实现一款办公自动化,统计可视化的安全可靠的管理系统。
1系统设计
1.1系统整体架构设计
系统总共由3个级别组成:市分行、中心支行以及县支行,每个级别对应两种角色:管理者和普通用户。由下级银行制定本行的支出规划和采购计划,经由上级银行审核通过后,下级银行负责具体的实施。项目库管理系统的基础框架是基于Spring-Boot实现的MVC三层架构,权限数据库是基于RBAC模型的数据库权限表设计。因为银行统计需求的复杂性和实时性,本系统采用单独的统计表来统计一个项目的完整流程数据,为防止数据丢失或遗漏,统计表是通过触发器的形式构建,为应对不同场景的查询条件以及后期维护方便,使用动态SQL操作数据库。此外,本系统需要能够将所有根据不同条件查询到的数据以Excel的形式下载导出,为此,基于poi和反射编写专门的处理工具以应对不同条件编写不同的处理代码会造成代码大量冗余,基于NIO同步非阻塞IO加快文件的下载速度。
1.2系统功能模块设计
项目库管理系统是一套通过对流程的每一个阶段进行审核驳回自动化的办公系统。通过对整个流程进行分析解耦,设计了5个功能模块:预算管理、项目库管理、统计分析、成果展示、系统设置。1)预算管理:主要用于分行和分支机构开展支出规划、采购计划及采购预算绩效管理。银行普通人员完成支出规划表单的提交,经本行管理者审核后生效,进入下一流程采购计划,在采购计划阶段填写具体的采购内容和金额,完成后提交上级部门审核,通过后进入项目库管理阶段。绩效管理是在所有流程完成后由上级部门或主管人员对完成情况的绩效评分。2)项目库管理:该模块是整个系统的核心模块,采购计划通过后进行具体的实施,根据功能分为三个模块:货物库管理、工程库管理、服务库管理,整个流程如图1所示。3)统计分析:主要用于统计项目的实施和进度情况,为了便于查看,根据不同条件可以动态地以图表的形式显示统计结果。本级银行只能查看本级及下级银行的项目。4)成果展示:展示已经完成的项目。此外,实现了文件库的功能,放置所有的模板文件和重要文件。5)系统设置:分为账号管理和人员管理,账号管理为账号注册、密码修改,人员管理主要是供应商管理和评审人员管理,在项目实施过程中只能使用在系统设置中设置过的供应商和评审人员。使用者可以根据情况对供应商进行评价,对于低于一定阈值的供应商予以剔除。
2系统关键技术的实现
2.1权限管理及安全管理
基于SpringSecurity进行人员权限管理及系统的安全管理。使用SpringSecurity而不是Shiro是由于前者基于Spring开发的,更易与Spring进行结合,功能和社区资源更丰富,便于项目的扩展和维护。SpringSecurity使用内置的User类映射数据库的人员表以实现权限管理的功能;通过使用过滤器在用户访问到具体处理代码之前进行验证授权从而保证系统的安全访问。权限管理方法如下:1)基于RBAC模型创建数据表:用户表、角色表、权限表、用户角色表、角色权限表;2)绑定用户表和实体类。创建实现UserDetails接口的实体类,实现接口中的方法。根据用户名查询数据库,将查询到的数据封装到自定义的实体类;3)进行用户与权限绑定:创建UserDetailsService接口的实现类,根据用户名查询到所有的用户数据,获取角色id,再通过角色id查询所有的权限,最终实现用户与权限的绑定;4)给不同的权限指定能够访问的范围:创建配置类,实现WebSecurityConfigurerAdapter接口,实现configue方法,使用HttpSecurity绑定权限对应的页面。安全管理方法如下:1)实现验证码验证登录,防止批量登录或注册给服务器造成压力;2)实现PasswordEncode接口自定义加密算法。注册账号时对密码进行加密,在登录时对登录者的密码加密后与数据库获取到的密码进行对比,相同则登录成功,否则登录失败;3)跨域请求,实现CorsConfigurationSource接口自定义请求白名单或跨域请求参数设置;4)Session管理:设置会话固定、会话超时检测和经过身份验证的用户可以同时打开的会话数限制。
2.2统计分析实现
针对统计分析,有多种实现方式,常用的有:将数据存在不同的业务表中,在统计时多表联合查询,这种方式的缺点是SQL语句复杂、查询缓慢、优化不便、不利于维护和扩展;还有一种是建立一张专用的统计表,在向业务表中插入更新数据时同时向统计表添加一份,这种方法查询快速、可以使用索引优化,但是会增加很多与业务无关的代码,并且为了防止统计少统或漏统,需要将相关代码放在一个事务中,这样会使整个系统变慢。综合上面的两种方法,本系统采用触发器的形式,在数据库层面进行操作,当业务表中有数据变更时数据自动更新到统计表中,减少应用程序与数据库之间的IO操作且去除应用代码中与业务无关的代码。具体方法如下:1)基于触发器创建统计表;2)利用MyBatis编写动态SQL,因查询条件多,如果针对每一种条件写一个SQL,那将会有上百个SQL,极大地增加应用的复杂度和维护难度;3)使用帆软报表以表格的形式显示查询到的统计结果。2.3Excel表格的处理本系统对于所有查询到的数据都要能够以表格的形式导出,为此,需要构建专门的用于处理Excel的处理程序。对于Excel表格的处理常用两种方法:在前端处理,使用jquery自带的Excel导出插件可以直接导出;在后端处理,使用poi提供的接口可以创建Excel。本系统采用后端处理,主要是因为前端处理动态性不够强,比较死板,且对文件不能直接保存,如需要保存文件需要上传到服务器,会降低系统的流畅度,最重要的是,如果后续有需求变动,更改前端的代码任务量巨大,不利于扩展。采用poi,只需要一个统计表对应的实体类和一个用于创建Excel的工具类即可,代码简单,便于系统维护和扩展。具体方法如下:1)导包:导入org.apache.poi的4.1.0稳定版本;2)创建统计表对应的实体类,不提供getXXX()和setXXX()方法;3)构建生成Excel文件的工具类:根据条件查询出所有的数据,通过反射的方式个上一步骤创建的实体类属性赋值;调用poi提供的API创建Excel,使用实体类的字段名设置表格头部名称,再将查询到的数据填充到表格中;4)使用NIO提供下载Excel文件的接口。
3结束语
本文通过解耦线下办公流程设计了银行项目库管理系统,实现了会计部门职员的自动化办公,使用统计分析可以使管理者能够清晰地了解银行内部支出情况,从而制定更加合理的支出规划。目前该系统已经交付南京市人民银行,正在江苏省所辖83家人民银行试运行,截止目前系统运行良好,响应迅速。
作者:朱彦鹏 张捷
文章名称:银行项目库管理系统设计
文章地址:http://www.zhichengg.com/jjlw/18641.html
上一篇:住房租赁市场现存问题
下一篇:餐饮业发展机遇与挑战趋势
SCISSCIEISCOPUS