基于SpringBoot的“银行OA系统的设计与实现”的设计与实现(源码+数据库+文档+PPT)
-
开发语言:Java
-
数据库:MySQL
-
技术:SpringBoot
-
工具:IDEA/Ecilpse、Navicat、Maven
系统展示
用户登录界面
管理员主界面
员工基本档案模块
部门经理管理界面
日常工作管理界面
工作任务管理界面
请假信息申请界面
请假审批界面
摘要
在互联网信息技术时代中,企业管理更多的是使用管理系统进行智能化控制,提高单位的核心竞争力,适应快节奏的生产活动。银行OA系统是为企业提供的一整套便于企业管理的应用软件,是目前企业管理的必备系统。通过走访了解,市面上许多现成的银行OA系统无法满足中小企业发展的现状,无论是系统架构还是业务流程都比较落后,只有重新开发一套全新的银行OA系统才能适应企业需求。
银行OA系统基于JAVA编写,使用SpringBoot架构,数据库选择轻量级的关系型Mysql数据库,系统前台使用H5、CSS3、JS和DIV等技术开发。系统包括管理员、经理、员工三个角色,分别进行员工管理、办公管理、请假管理、任务管理等操作。本文首先阐述银行OA系统的背景和意义,然后对系统的技术进行分析,接着进行系统需求分析,功能设计和系统实现,最后进行系统测试,完善系统功能和操作流程。
研究意义
银行OA系统包括多个功能模块,各个功能都存在于一个系统内,数据库存储了系统所有数据。而各功能模块也可以自由拓展,为管理者预留足够的升级空间,提高维护效率;系统模块间也相对独立,有效控制用户访问权限,保障银行OA系统的数据安全。
银行OA系统可以使公司的人事干部从繁重琐碎的人事工作中解脱出来,把主要精力投入到日常工作中。同时,这也是企业的科学化、信息化、正规化管理与世界先进管理技术接轨的重要条件。
银行OA系统通过数据库服务来进行对各部门之间需要进行的信息交互进行整合,从而使得服务的调用来替代各信息系统之间功能的调用,提高了企业信息系统的可扩展性和复用性,同时还可以有效的整合企业内部个信息系统的功能,为企业用户提供一个资源统一办公的平台,有效解决企业各信息系统之间的信息孤岛问题。
国内外研究现状
在高速发展的经济环境中,随着信息技术飞速发展和不断完善,人们的需求也产生了质的变化,普遍认识到企业的发挥在那不再是仅仅是产品竞争,已转向人才与服务的竞争,只有在此类竞争在取胜,才能提升企业的市场地位。激烈的市场竞争也给企业企业办公管理提出了更高的要求,使得银行OA系统在功能上也不断完善,功能的层次结构也日益清晰。
以人才竞争为主的企业竞争也导致了银行OA系统中的企业办公数据逐渐成为了企业经营的数据中心,也要求银行OA系统在保证银行OA系统基本功能的同时,还需要更加具有战略性,不仅能够满足企业企业办公管理基本要求,还需具备一定的统计分析功能,使企业更加适应激烈的市场竞争。
随着企业对企业办公管理的愈加重视,国外企业的银行OA系统得到了广泛的应用,由于其受到长期的重视,得到了长足的发展。相比于国内而言,国外大企业的企业办公管理已经趋于成熟,形成了各自较为完整的企业办公管理体系,诸如“世界500强”的跨国公司,像苹果公司、福特公司等。
部分源码
/**
* 工作日常信息
* 后端接口
* @author
* @email
* @date
*/
@RestController
@RequestMapping("/gongzuorichangxinxi")
public class GongzuorichangxinxiController {
@Autowired
private GongzuorichangxinxiService gongzuorichangxinxiService;
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,GongzuorichangxinxiEntity gongzuorichangxinxi,
HttpServletRequest request){
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yuangong")) {
gongzuorichangxinxi.setZhanghao((String)request.getSession().getAttribute("username"));
}
EntityWrapper<GongzuorichangxinxiEntity> ew = new EntityWrapper<GongzuorichangxinxiEntity>();
PageUtils page = gongzuorichangxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, gongzuorichangxinxi), params), params));
return R.ok().put("data", page);
}
/**
* 前端列表
*/
@RequestMapping("/list")
public R list(@RequestParam Map<String, Object> params,GongzuorichangxinxiEntity gongzuorichangxinxi,
HttpServletRequest request){
EntityWrapper<GongzuorichangxinxiEntity> ew = new EntityWrapper<GongzuorichangxinxiEntity>();
PageUtils page = gongzuorichangxinxiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, gongzuorichangxinxi), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/lists")
public R list( GongzuorichangxinxiEntity gongzuorichangxinxi){
EntityWrapper<GongzuorichangxinxiEntity> ew = new EntityWrapper<GongzuorichangxinxiEntity>();
ew.allEq(MPUtil.allEQMapPre( gongzuorichangxinxi, "gongzuorichangxinxi"));
return R.ok().put("data", gongzuorichangxinxiService.selectListView(ew));
}
/**
* 查询
*/
@RequestMapping("/query")
public R query(GongzuorichangxinxiEntity gongzuorichangxinxi){
EntityWrapper< GongzuorichangxinxiEntity> ew = new EntityWrapper< GongzuorichangxinxiEntity>();
ew.allEq(MPUtil.allEQMapPre( gongzuorichangxinxi, "gongzuorichangxinxi"));
GongzuorichangxinxiView gongzuorichangxinxiView = gongzuorichangxinxiService.selectView(ew);
return R.ok("查询工作日常信息成功").put("data", gongzuorichangxinxiView);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
GongzuorichangxinxiEntity gongzuorichangxinxi = gongzuorichangxinxiService.selectById(id);
return R.ok().put("data", gongzuorichangxinxi);
}
/**
* 前端详情
*/
@RequestMapping("/detail/{id}")
public R detail(@PathVariable("id") Long id){
GongzuorichangxinxiEntity gongzuorichangxinxi = gongzuorichangxinxiService.selectById(id);
return R.ok().put("data", gongzuorichangxinxi);
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody GongzuorichangxinxiEntity gongzuorichangxinxi, HttpServletRequest request){
gongzuorichangxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(gongzuorichangxinxi);
gongzuorichangxinxiService.insert(gongzuorichangxinxi);
return R.ok();
}
/**
* 前端保存
*/
@RequestMapping("/add")
public R add(@RequestBody GongzuorichangxinxiEntity gongzuorichangxinxi, HttpServletRequest request){
gongzuorichangxinxi.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
//ValidatorUtils.validateEntity(gongzuorichangxinxi);
gongzuorichangxinxiService.insert(gongzuorichangxinxi);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody GongzuorichangxinxiEntity gongzuorichangxinxi, HttpServletRequest request){
//ValidatorUtils.validateEntity(gongzuorichangxinxi);
gongzuorichangxinxiService.updateById(gongzuorichangxinxi);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
gongzuorichangxinxiService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 提醒接口
*/
@RequestMapping("/remind/{columnName}/{type}")
public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request,
@PathVariable("type") String type,@RequestParam Map<String, Object> map) {
map.put("column", columnName);
map.put("type", type);
if(type.equals("2")) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
Date remindStartDate = null;
Date remindEndDate = null;
if(map.get("remindstart")!=null) {
Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindStart);
remindStartDate = c.getTime();
map.put("remindstart", sdf.format(remindStartDate));
}
if(map.get("remindend")!=null) {
Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
c.setTime(new Date());
c.add(Calendar.DAY_OF_MONTH,remindEnd);
remindEndDate = c.getTime();
map.put("remindend", sdf.format(remindEndDate));
}
}
Wrapper<GongzuorichangxinxiEntity> wrapper = new EntityWrapper<GongzuorichangxinxiEntity>();
if(map.get("remindstart")!=null) {
wrapper.ge(columnName, map.get("remindstart"));
}
if(map.get("remindend")!=null) {
wrapper.le(columnName, map.get("remindend"));
}
String tableName = request.getSession().getAttribute("tableName").toString();
if(tableName.equals("yuangong")) {
wrapper.eq("zhanghao", (String)request.getSession().getAttribute("username"));
}
int count = gongzuorichangxinxiService.selectCount(wrapper);
return R.ok().put("count", count);
}
}
结论
毕业设计现在已经接近尾声了,回想起来,感觉收获颇多。我这次毕业设计的任务是开发OA管理,它用到的开发工具是Myeclipse,数据库是MySql。
经过近两个多月的设计和开发,银行OA系统基本开发并通过实践测试,其功能符合系统用户的基本需求,实现了用户登录,基本信息的修改,人事基本信息管理等功能的实现。系统使用简洁明快的界面风格设计,具备了友好性,灵活性和可靠性,实现了预期目标和功能。但是由于毕业设计时间较短,所以该系统还有许多不尽如人意的地方。数据库设计过程中表的结构和字段的设计还不够优化,表仍然存在冗余问题,没有将数据的冗余降低到最小,因而本系统的运行效率的提高也是在今后的程序设计过程中的新课题。