我的生成4条记录

我的生成4条记录

http://img1.sycdn.imooc.com//climg/60126e1b094c7f2916670835.jpg

​package com.imooc.oa.service;

import com.imooc.oa.dao.EmployeeDao;
import com.imooc.oa.dao.LeaveFormDao;
import com.imooc.oa.dao.ProcessFlowDao;
import com.imooc.oa.entity.Employee;
import com.imooc.oa.entity.LeaveForm;
import com.imooc.oa.entity.ProcessFlow;
import com.imooc.oa.utils.MybatisUtils;

import java.util.Date;

/**
* 请假单呢流程服务
*/
public class LeaveFormService {

/**
* 创建请假单
*
* @param form 前端输入的请假单数据
* @return 持久化后的请假单对象
*/
public LeaveForm createLeaveForm(LeaveForm form) {
LeaveForm saveForm = (LeaveForm) MybatisUtils.executeUpdate(sqlSession -> {
//1、持久化form表单数据,8级以下员工表单状态为processing,8级(总经理)状态为approved
EmployeeDao employeeDao = sqlSession.getMapper(EmployeeDao.class);
Employee employee = employeeDao.selectById(form.getEmployeeId());
if (employee.getLevel() == 8) {
form.setState("approved");
} else {
form.setState("processing");
}
LeaveFormDao leaveFormDao = sqlSession.getMapper(LeaveFormDao.class);
leaveFormDao.insert(form);
//2、增加第一条流程数据,说明表单已提交,状态为complate
ProcessFlowDao processFlowDao = sqlSession.getMapper(ProcessFlowDao.class);
ProcessFlow flow1 = new ProcessFlow();
flow1.setFormId(form.getFormId());
flow1.setOperatorId(employee.getEmployeeId());
flow1.setAction("apply");
flow1.setCreateTime(new Date());
flow1.setOrderNo(1);
flow1.setState("complete");
flow1.setIsLast(0);
processFlowDao.insert(flow1);
//3、分情况创建其余流程数据
//3.1 7级以下员工,生产部门经理审批任务,请假时间大于36小时,还需生产总经理审批任务
if (employee.getLevel() < 7) {
Employee dmapper = employeeDao.selectLeader(employee);
ProcessFlow flow2 = new ProcessFlow();
flow2.setFormId(form.getFormId());
flow2.setOperatorId(dmapper.getEmployeeId());
flow2.setAction("audit");
flow2.setCreateTime(new Date());
flow2.setOrderNo(2);
flow2.setState("process");
long diff = form.getEndTime().getTime() - form.getStartTime().getTime();
float hours = diff / (1000 * 60 * 60) * 1f;
if (hours >= BussinessConstants.MANAGER_AUDIT_HOURS) {
flow2.setIsLast(0);
processFlowDao.insert(flow2);
Employee manager = employeeDao.selectLeader(dmapper);
ProcessFlow flow3 = new ProcessFlow();
flow3.setFormId(form.getFormId());
flow3.setOperatorId(manager.getEmployeeId());
flow3.setAction("audit");
flow3.setCreateTime(new Date());
flow3.setState("ready");
flow3.setOrderNo(3);
flow3.setIsLast(1);
processFlowDao.insert(flow3);
} else {
flow2.setIsLast(1);
processFlowDao.insert(flow2);
}
//3.2 7级员工,生产总经理审批任务
} else if (employee.getLevel() == 7) {//部门经理
Employee manager = employeeDao.selectLeader(employee);
ProcessFlow flow = new ProcessFlow();
flow.setFormId(form.getFormId());
flow.setOperatorId(manager.getEmployeeId());
flow.setAction("audit");
flow.setCreateTime(new Date());
flow.setState("process");
flow.setOrderNo(2);
flow.setIsLast(1);
processFlowDao.insert(flow);
} else if (employee.getLevel() == 8) {
//3.3 8级员工,生产总经理审批任务,系统自动通过
ProcessFlow flow = new ProcessFlow();
flow.setFormId(form.getFormId());
flow.setOperatorId(employee.getEmployeeId());
flow.setAction("audit");
flow.setResult("approved");
flow.setCreateTime(new Date());
flow.setAuditTime(new Date());
flow.setState("complete");
flow.setReason("自动通过");
flow.setOrderNo(2);
flow.setIsLast(1);
processFlowDao.insert(flow);
}
return form;
});
return saveForm;
}
}


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,经测试运行上述代码是可以正确生成数据的,这里并不能准确定位同学所咨询的问题是指什么,建议同学重新描述

祝学习愉快~

  • 叶锦辉 提问者 #1

    就是我的数据库出现了4条记录,但是视频中的显示只有3条记录


    2021-01-28 17:49:57
  • 好帮手慕小脸 回复 提问者 叶锦辉 #2

    同学你好,测试运行上述贴出的代码生成的是3条数据,效果如下:

    http://img1.sycdn.imooc.com//climg/6012985c09eba20409980108.jpg

    而同学给出的效果图中,四条数据的后三条为同一时间,第一条数据猜测是同学之前的测试数据,这里同学可以将该表中所有数据删除,重新执行代码再试试

    http://img1.sycdn.imooc.com//climg/601298d5097f889012460331.jpg

    祝学习愉快~

    2021-01-28 18:59:56
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师