讲解请假审批UI原型
webapp下新建audit.html
tableData是我们添加的静态数据,el-table是element-plus封装的
this.dialogFormVisible = true;
表示是否弹出对话框
开发待审批表单Model层
将上面的静态数据改为动态
打开leave_form.xml文件,新增方法
请假单表和员工表是主外键关联,和流程表也是主外键关联,与部门表也是主外键关联,相当于多表查询,无法使用一个实体类存储下来,所以使用集合LinkedHashMap,采用键值对方式存储
引入流程表是因为我们需要通过pf_state、pf_operator_id才能拿到当前登陆的经理待审批请假单数据
LeaveFormMapper.java新增接口拓展
使用@Param简化put的操作
进行单元测试LeaveFormMapperTest.java
向上推进,在LeaveFormService.java中添加
实现查询待审批请假单
上一节开发了请假单获取工作getLeaveFormList(),向上开发controller层
在LeaveFormServlet.java中添加与查询有关方法,像create方法一样添加list查询方法
登陆王美美账号t6,密码test,申请原因为事假,申请成功后打开部门经理齐紫陌账号localhost/api/leave/list?eid=2
得到请假单
查看数据库,是同一部门
下一步进行界面绑定输出,在audit.html下进行绑定
objApp.tableData.splice(0, objApp.tableData.length);
表示删除掉我们的原始静态数据
objApp.tableData.push(item);
将数据重新压入到tableData中
switch是为了将数字类型转化为对应的文本
然后通过调用audit.html里函数完成日期格式化
进行格式化
输入齐紫陌账号t7,密码test登陆
然后修改url为http://localhost/audit.html回车访问
可以看到,上面我们添加的申请原因为事假的数据显示出来了,而静态数据没有显示
点击数据,可以看到数据也回填到弹出窗口上
开发请假审批Mapper层
审核过程就是一个数据更新过程,核心是update语句
在我们申请请假单时,审核流程已经根据时间是否大于72小时创建好流程表了,接下来的审批只是在这流程表上进行更新操作而已
打开leave_form.xml,添加语句,根据id号更新请假单
向上推到接口LeaveFormMapper.java中,继续添加方法语句
处理流程process_flow..xml也要添加update
打开ProcessFlowMapper.java添加对应方法
为了实现请假单审批,还需要添加查询方法
leave_form.xml中
process_flow.xml中
剩下mapper接口代码在上面给出代码进行补充
开发请假审批Service层
LeaveFormService.java添加
如果表单没有对应流程数据时,processList.size() == 0
需要我们自定义异常,中断流程,在service下的exception文件下新建LeaveFormException.java
进行测试
情况一运行
查看请假单与请假状态
查看审批流程
三种情况运行请假单结果
以及审批流程
实现请假审批功能
完成sevlet层和view层
LeaveFormServlet.java下新增方法
继续向上推进,打开audit.html页面
实现提交表单按钮,在method里面书写
运行tomcat,登陆王美美账号创建大于72小时的请假单
然后登陆部门经理齐紫陌账号进行审批
再登陆总经理账号,进行审批即可
查看数据库流程信息
开发系统通知Service功能
我们已将开发了NoticeMapper,系统通知主要用来创建请假单后和审核后
在LeaveFormService,java中,添加创建请假单通知
一条用来通知自己创建成功,一条通知别人等待审核
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH时");
表示对时间进行格式化
然后运行三种情况的测试用例
实现系统通知功能
打开接口NoticeMapper.java,新增方法,根据接收人不同显示通知
打开notice.xml
显示30条即可,没必要全部显示出来,消息太多
向上推进,新建NoticeService类
继续向上推进,新建NoticeServlet.java文件
后台工作完成,切换到前台上
webapp下新建notice.html
记得在index.html下将我们原来添加的哔哩哔哩网页改掉,改成通知页面
运行tomcat
记住点击redeploy,而不是restart server,点击redeploy才能将java代码进行编译输出到target文件夹字节流文件夹下
实现系统登陆拦截功能
输入后台的某一网址,可以不登陆而直接进入
在每个页面添加验证,若没登陆过需要先登陆
在webapp的assets的oa目录下新建security.js文件
然后在每个页面进行引入,记住登陆界面不需要,登陆界面是产生这两个值的地方
每个html界面前进行引入
关闭浏览器(不是关闭网页,为了清空登陆数据),重新打开输入链接访问
目前还有一个问题,就是设计的接口可以访问到我们的敏感数据,比如localhost/api/leave/list?eid=2
这个现在我们暂时无法解决,需要学习架构层面的东西,后面会有所涉猎,这里暂时不做处理