我的生成4条记录
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;
}
}
16
收起
正在回答
1回答
同学你好,经测试运行上述代码是可以正确生成数据的,这里并不能准确定位同学所咨询的问题是指什么,建议同学重新描述
祝学习愉快~
java工程师2020版
- 参与学习 人
- 提交作业 9401 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星