package com.blackcat.activity.service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.blackcat.activity.entity.LeaveForm;
import com.blackcat.activity.entity.User;
import com.blackcat.activity.mapper.LeaveMapper;
import org.activiti.engine.IdentityService;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
/**
* @Title
* @Description
* @author zhanghui
* @date 2020年07月20日 14:01
* @version V1.0
* @see
* @since V1.0
*/
@Service
public class LeaveServiceImpl extends ServiceImpl<LeaveMapper, LeaveForm> implements LeaveService{
//请假工作流的进程ID
private final static String ProcessInstanceByKey = "leaveProce_ID";
@Autowired(required = false)
IdentityService identityService;
/** 开启任务相关的Service对象 */
@Autowired(required = false)
RuntimeService runtimeService;
@Autowired(required = false)
private LeaveMapper leaveMapper;
@Autowired(required = false)
TaskService taskService;
/**
* <p> 描述 : 提交表单
* @author : blackcat
* @date : 2020/7/21 15:19
*
* 这个的流程图是一开始为了学习从别的博客复制过来的,设计的有点不太合理,为了快速写完测试,并没有进行修改。理解流程图的流程即可。
* 提交,审核等方法,完全可以合并为一个方法或看个人风格修改,这里为了方便新手了解,每一步都拆开成独立方法。
*
*/
@Override
public String saveApply(String uid) {
LeaveForm leaveForm = new LeaveForm();
leaveForm.setProposerId(uid);
leaveForm.setLeaveContent("请假事由");
leaveForm.setTitle("请假申请");
/** 代理人ID 下一个审核人 */
leaveForm.setAgentId("2");
/** 1:预约中 2:同意请假 3:拒绝请假 4:放弃请假 */
leaveForm.setStatus(1);
//流程启动
// ExecutionEntity pi1 = (ExecutionEntity) runtimeService.startProcessInstanceByKey("leave",map);
// 1.设置流程启动人
identityService.setAuthenticatedUserId(uid);
// 2.预约表单信息持久化
leaveMapper.insert(leaveForm);
// 3.启动申请流程,设置变量到下一个节点
Map<String, Object> map = new HashMap<>(2);
map.put("agent",leaveForm.getProposerId());// 流程的代理人
map.put("formId",leaveForm.getId());// 任务表的表单id字段
map.put("flag","true");// 排他网管的表达式字符窜 flag=true
ProcessInstance processInstance = runtimeService.
startProcessInstanceByKey(ProcessInstanceByKey,
leaveForm.getId(),
map);
leaveForm.setProcInstanId(processInstance.getId());
// 4.修改实例ID
leaveMapper.updateById(leaveForm);
// 通过proceId获取任务
Task task = taskService.createTaskQuery().processInstanceId(processInstance.getId()).singleResult();
// 5.完成填写任务
taskService.complete(task.getId(), map);
return leaveForm.getProposerId();
}
@Override
public void submitApply(String proceId) {
// 部门经理审批【请假申请】
Task task2 = taskService.createTaskQuery().processInstanceId(proceId).singleResult();
// 指定下一个 任务代理人 下一个还是自己
Map<String, Object> map2 = new HashMap<>(2);
map2.put("agent","2");// 流程的代理人
map2.put("formId",task2.getFormKey());// 任务表的表单id字段
map2.put("flag","true");// 排他网管的表达式字符窜 flag=true
taskService.complete(task2.getId(),map2);
// 部门经理审批 同意
Task task3 = taskService.createTaskQuery().processInstanceId(proceId).singleResult();
// 指定下一个 任务代理人 送到boss
Map<String, Object> map3 = new HashMap<>(3);
map3.put("agent","3");// 流程的代理人
map3.put("formId",task3.getFormKey());// 任务表的表单id字段
map3.put("flag","true");// 排他网管的表达式字符窜 flag=true
taskService.complete(task3.getId(),map2);
//修改表单状态
LeaveForm leaveForm = new LeaveForm();
leaveForm.setId(task2.getFormKey());
/** 代理人ID 下一个审核人 */
leaveForm.setAgentId("3");
/** 1:预约中 2:同意请假 3:拒绝请假 4:放弃请假 */
leaveForm.setStatus(2);
leaveMapper.updateById(leaveForm);
}
@Override
public void bossApply(String procInstId) {
// boss同意
Task task = taskService.createTaskQuery().processInstanceId(procInstId).singleResult();
Map<String, Object> map = new HashMap<>(2);
map.put("agent","3");// 流程的代理人
map.put("formId",task.getFormKey());// 任务表的表单id字段
map.put("flag","true");// 排他网管的表达式字符窜 flag=true
taskService.complete(task.getId(),map);
//修改表单状态
LeaveForm leaveForm = new LeaveForm();
leaveForm.setId(task.getFormKey());
/** 代理人ID 回到自己列表 */
leaveForm.setAgentId("1");
leaveMapper.updateById(leaveForm);
}
@Override
public void giveUp(String proceId) {
//放弃申请
Task task = taskService.createTaskQuery().processInstanceId(proceId).singleResult();
Map<String, Object> map = new HashMap<>(2);
map.put("agent",task.getAssignee());// 流程的代理人
map.put("formId",task.getFormKey());// 任务表的表单id字段
map.put("flag","false");// 排他网管的表达式字符窜 flag=true
taskService.complete(task.getId(),map);
//结束任务
Task task2 = taskService.createTaskQuery().processInstanceId(proceId).singleResult();
taskService.complete(task2.getId());
//4:代表放弃请假
LeaveForm leave = leaveMapper.selectById(task.getFormKey());
leave.setStatus(4);
leaveMapper.updateById(leave);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
springboot整合activity工作流审批前后台代码(有数据库) (267个子文件)
ActHiActinst.class 8KB
LeaveController.class 5KB
LeaveForm.class 5KB
LeaveServiceImpl.class 5KB
User.class 3KB
ActHiActInstServiceImpl.class 2KB
LoginController.class 1KB
ActivityApplication.class 828B
UserServiceImpl.class 710B
LeaveService.class 556B
MybatisConfig.class 503B
IActHiActInstService.class 433B
ActHiActinstMapper.class 428B
UserService.class 323B
LeaveMapper.class 319B
UserMapper.class 312B
layui.css 52KB
layui.css 52KB
layui-copy.css 50KB
layui-copy.css 50KB
layer.css 14KB
layer.css 14KB
layui.mobile.css 10KB
layui.mobile.css 10KB
laydate.css 7KB
laydate.css 7KB
code.css 1KB
code.css 1KB
iconfont.eot 37KB
iconfont.eot 37KB
leave.ftl 6KB
leave.ftl 6KB
login.ftl 750B
login.ftl 750B
59.gif 10KB
59.gif 10KB
22.gif 10KB
22.gif 10KB
24.gif 8KB
24.gif 8KB
13.gif 7KB
13.gif 7KB
16.gif 7KB
16.gif 7KB
39.gif 6KB
39.gif 6KB
64.gif 6KB
64.gif 6KB
63.gif 6KB
63.gif 6KB
50.gif 6KB
50.gif 6KB
loading-0.gif 6KB
loading-0.gif 6KB
4.gif 6KB
4.gif 6KB
1.gif 5KB
1.gif 5KB
42.gif 5KB
42.gif 5KB
71.gif 5KB
71.gif 5KB
21.gif 5KB
21.gif 5KB
20.gif 5KB
20.gif 5KB
29.gif 5KB
29.gif 5KB
70.gif 4KB
70.gif 4KB
5.gif 4KB
5.gif 4KB
17.gif 4KB
17.gif 4KB
27.gif 4KB
27.gif 4KB
9.gif 4KB
9.gif 4KB
44.gif 4KB
44.gif 4KB
11.gif 4KB
11.gif 4KB
8.gif 4KB
8.gif 4KB
3.gif 4KB
3.gif 4KB
23.gif 4KB
23.gif 4KB
34.gif 4KB
34.gif 4KB
41.gif 4KB
41.gif 4KB
38.gif 4KB
38.gif 4KB
65.gif 3KB
65.gif 3KB
32.gif 3KB
32.gif 3KB
45.gif 3KB
45.gif 3KB
共 267 条
- 1
- 2
- 3
飞翔的佩奇
- 粉丝: 3557
- 资源: 799
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页