parent
ed336cac61
commit
0ffa1863c6
|
|
@ -97,6 +97,11 @@ public class SysUser extends BaseEntity
|
||||||
/** 岗位组 */
|
/** 岗位组 */
|
||||||
private Long[] postIds;
|
private Long[] postIds;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 岗位编码组
|
||||||
|
*/
|
||||||
|
private List<String> postCode;
|
||||||
|
|
||||||
/** 角色ID */
|
/** 角色ID */
|
||||||
private Long roleId;
|
private Long roleId;
|
||||||
|
|
||||||
|
|
@ -318,6 +323,15 @@ public class SysUser extends BaseEntity
|
||||||
{
|
{
|
||||||
this.roleId = roleId;
|
this.roleId = roleId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<String> getPostCode() {
|
||||||
|
return postCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPostCode(List<String> postCode) {
|
||||||
|
this.postCode = postCode;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
package com.ruoyi.system.mapper;
|
package com.ruoyi.system.mapper;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import com.ruoyi.system.domain.SysPost;
|
import com.ruoyi.system.domain.SysPost;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 岗位信息 数据层
|
* 岗位信息 数据层
|
||||||
*
|
*
|
||||||
|
|
@ -41,6 +42,13 @@ public interface SysPostMapper
|
||||||
*/
|
*/
|
||||||
public List<Long> selectPostListByUserId(Long userId);
|
public List<Long> selectPostListByUserId(Long userId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据用户id获取岗位的编码
|
||||||
|
* @param userId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<String> selectPostCodeListByUserId(Long userId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询用户所属岗位组
|
* 查询用户所属岗位组
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -106,7 +106,11 @@ public class SysUserServiceImpl implements ISysUserService
|
||||||
@Override
|
@Override
|
||||||
public SysUser selectUserByUserName(String userName)
|
public SysUser selectUserByUserName(String userName)
|
||||||
{
|
{
|
||||||
return userMapper.selectUserByUserName(userName);
|
SysUser sysUser = userMapper.selectUserByUserName(userName);
|
||||||
|
Long userId = sysUser.getUserId();
|
||||||
|
List<String> postCodes = postMapper.selectPostCodeListByUserId(userId);
|
||||||
|
sysUser.setPostCode(postCodes);
|
||||||
|
return sysUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
where post_code=#{postCode} limit 1
|
where post_code=#{postCode} limit 1
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectPostCodeListByUserId" resultType="java.lang.String">
|
||||||
|
select p.post_code
|
||||||
|
from sys_post p
|
||||||
|
left join sys_user_post up on up.post_id = p.post_id
|
||||||
|
left join sys_user u on u.user_id = up.user_id
|
||||||
|
where u.user_id = #{userId}
|
||||||
|
</select>
|
||||||
|
|
||||||
<update id="updatePost" parameterType="SysPost">
|
<update id="updatePost" parameterType="SysPost">
|
||||||
update sys_post
|
update sys_post
|
||||||
<set>
|
<set>
|
||||||
|
|
|
||||||
|
|
@ -178,7 +178,7 @@
|
||||||
/** 提交按钮 */
|
/** 提交按钮 */
|
||||||
submitForm() {
|
submitForm() {
|
||||||
formDataSave(this.id,this.form.formData).then(response => {
|
formDataSave(this.id,this.form.formData).then(response => {
|
||||||
this.msgSuccess("审批成功");
|
this.$modal.notifySuccess("审批成功");
|
||||||
this.open = false;
|
this.open = false;
|
||||||
this.getList();
|
this.getList();
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,7 @@
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="标题" align="center" prop="title" :show-overflow-tooltip="true"/>
|
<el-table-column label="标题" align="center" prop="title" :show-overflow-tooltip="true"/>
|
||||||
<el-table-column label="原因" align="center" prop="reason" :show-overflow-tooltip="true"/>
|
<el-table-column label="原因" align="center" prop="reason" :show-overflow-tooltip="true"/>
|
||||||
<el-table-column label="流程进度" align="center" prop="taskName" :show-overflow-tooltip="true"/>
|
<el-table-column label="任务节点名称" align="center" prop="taskName" :show-overflow-tooltip="true"/>
|
||||||
|
|
||||||
<el-table-column label="创建者" align="center" prop="createName" :show-overflow-tooltip="true"/>
|
<el-table-column label="创建者" align="center" prop="createName" :show-overflow-tooltip="true"/>
|
||||||
<el-table-column label="开始时间" align="center" prop="leaveStartTime" width="180" :show-overflow-tooltip="true">
|
<el-table-column label="开始时间" align="center" prop="leaveStartTime" width="180" :show-overflow-tooltip="true">
|
||||||
|
|
@ -109,7 +109,7 @@
|
||||||
type="text"
|
type="text"
|
||||||
icon="el-icon-edit"
|
icon="el-icon-edit"
|
||||||
@click="historyFory(scope.row)"
|
@click="historyFory(scope.row)"
|
||||||
v-hasPermi="['workflow:leave:edit']"
|
v-hasPermi="['workflow:leave:query']"
|
||||||
>审批详情
|
>审批详情
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
请假流程:
|
||||||
|
发起人:任何人
|
||||||
|
流程key:leave
|
||||||
|
领导审核:当前账号的部门的 leader 编号的岗位
|
||||||
|
|
||||||
|
待办任务:
|
||||||
|
分页获取该任务的候选人或候选组
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
TODO
|
||||||
|
待办任务根据 组 查询
|
||||||
|
|
@ -78,7 +78,6 @@ public class ProcessDefinitionController extends BaseController {
|
||||||
@Log(title = "流程定义管理", businessType = BusinessType.IMPORT)
|
@Log(title = "流程定义管理", businessType = BusinessType.IMPORT)
|
||||||
@PostMapping(value = "/uploadStreamAndDeployment")
|
@PostMapping(value = "/uploadStreamAndDeployment")
|
||||||
@ApiOperation("上传并部署流程定义")
|
@ApiOperation("上传并部署流程定义")
|
||||||
@RequiresPermissions("activiti:definition")
|
|
||||||
public AjaxResult uploadStreamAndDeployment(@RequestParam("file") MultipartFile file) throws IOException {
|
public AjaxResult uploadStreamAndDeployment(@RequestParam("file") MultipartFile file) throws IOException {
|
||||||
processDefinitionService.uploadStreamAndDeployment(file);
|
processDefinitionService.uploadStreamAndDeployment(file);
|
||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
|
|
@ -94,7 +93,6 @@ public class ProcessDefinitionController extends BaseController {
|
||||||
@Log(title = "流程定义管理", businessType = BusinessType.UPDATE)
|
@Log(title = "流程定义管理", businessType = BusinessType.UPDATE)
|
||||||
@PostMapping("/suspendOrActiveApply")
|
@PostMapping("/suspendOrActiveApply")
|
||||||
@ApiOperation("启动挂起流程流程定义")
|
@ApiOperation("启动挂起流程流程定义")
|
||||||
@RequiresPermissions("activiti:definition")
|
|
||||||
public AjaxResult suspendOrActiveApply(@RequestBody ProcessDefinitionDTO processDefinition) {
|
public AjaxResult suspendOrActiveApply(@RequestBody ProcessDefinitionDTO processDefinition) {
|
||||||
processDefinitionService.suspendOrActiveApply(processDefinition.getId(), processDefinition.getSuspendState());
|
processDefinitionService.suspendOrActiveApply(processDefinition.getId(), processDefinition.getSuspendState());
|
||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
|
|
@ -110,7 +108,6 @@ public class ProcessDefinitionController extends BaseController {
|
||||||
@Log(title = "流程定义管理", businessType = BusinessType.IMPORT)
|
@Log(title = "流程定义管理", businessType = BusinessType.IMPORT)
|
||||||
@PostMapping(value = "/upload")
|
@PostMapping(value = "/upload")
|
||||||
@ApiOperation("上传流程流程定义")
|
@ApiOperation("上传流程流程定义")
|
||||||
@RequiresPermissions("activiti:definition")
|
|
||||||
public AjaxResult upload(@RequestParam("processFile") MultipartFile multipartFile) throws IOException {
|
public AjaxResult upload(@RequestParam("processFile") MultipartFile multipartFile) throws IOException {
|
||||||
|
|
||||||
if (!multipartFile.isEmpty()) {
|
if (!multipartFile.isEmpty()) {
|
||||||
|
|
@ -130,7 +127,6 @@ public class ProcessDefinitionController extends BaseController {
|
||||||
*/
|
*/
|
||||||
@PostMapping(value = "/addDeploymentByString")
|
@PostMapping(value = "/addDeploymentByString")
|
||||||
@ApiOperation("通过stringBPMN添加流程定义")
|
@ApiOperation("通过stringBPMN添加流程定义")
|
||||||
@RequiresPermissions("activiti:definition")
|
|
||||||
public AjaxResult addDeploymentByString(@RequestParam("stringBPMN") String stringBPMN) {
|
public AjaxResult addDeploymentByString(@RequestParam("stringBPMN") String stringBPMN) {
|
||||||
processDefinitionService.addDeploymentByString(stringBPMN);
|
processDefinitionService.addDeploymentByString(stringBPMN);
|
||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||||
import com.ruoyi.common.core.web.page.PageDomain;
|
import com.ruoyi.common.core.web.page.PageDomain;
|
||||||
import com.ruoyi.common.core.web.page.TableDataInfo;
|
import com.ruoyi.common.core.web.page.TableDataInfo;
|
||||||
import com.ruoyi.common.core.web.page.TableSupport;
|
import com.ruoyi.common.core.web.page.TableSupport;
|
||||||
|
import com.ruoyi.common.security.annotation.RequiresPermissions;
|
||||||
import com.xjs.activiti.domain.dto.ActTaskDTO;
|
import com.xjs.activiti.domain.dto.ActTaskDTO;
|
||||||
import com.xjs.activiti.domain.dto.ActWorkflowFormDataDTO;
|
import com.xjs.activiti.domain.dto.ActWorkflowFormDataDTO;
|
||||||
import com.xjs.activiti.service.IActTaskService;
|
import com.xjs.activiti.service.IActTaskService;
|
||||||
|
|
@ -30,6 +31,7 @@ public class TaskController extends BaseController {
|
||||||
|
|
||||||
//获取我的代办任务
|
//获取我的代办任务
|
||||||
@GetMapping(value = "/list")
|
@GetMapping(value = "/list")
|
||||||
|
@RequiresPermissions("activiti:task:list")
|
||||||
public TableDataInfo getTasks() {
|
public TableDataInfo getTasks() {
|
||||||
PageDomain pageDomain = TableSupport.buildPageRequest();
|
PageDomain pageDomain = TableSupport.buildPageRequest();
|
||||||
Page<ActTaskDTO> hashMaps = actTaskService.selectProcessDefinitionList(pageDomain);
|
Page<ActTaskDTO> hashMaps = actTaskService.selectProcessDefinitionList(pageDomain);
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ package com.xjs.activiti.domain;
|
||||||
|
|
||||||
import com.ruoyi.common.core.web.domain.BaseEntity;
|
import com.ruoyi.common.core.web.domain.BaseEntity;
|
||||||
import com.xjs.activiti.domain.dto.ActWorkflowFormDataDTO;
|
import com.xjs.activiti.domain.dto.ActWorkflowFormDataDTO;
|
||||||
import org.activiti.api.task.model.Task;
|
import org.activiti.engine.task.Task;
|
||||||
import org.apache.commons.lang3.builder.ToStringBuilder;
|
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||||
import org.apache.commons.lang3.builder.ToStringStyle;
|
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ package com.xjs.activiti.service.impl;
|
||||||
|
|
||||||
import com.github.pagehelper.Page;
|
import com.github.pagehelper.Page;
|
||||||
import com.ruoyi.common.core.web.page.PageDomain;
|
import com.ruoyi.common.core.web.page.PageDomain;
|
||||||
|
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||||
import com.xjs.activiti.domain.ActWorkflowFormData;
|
import com.xjs.activiti.domain.ActWorkflowFormData;
|
||||||
import com.xjs.activiti.domain.dto.ActTaskDTO;
|
import com.xjs.activiti.domain.dto.ActTaskDTO;
|
||||||
import com.xjs.activiti.domain.dto.ActWorkflowFormDataDTO;
|
import com.xjs.activiti.domain.dto.ActWorkflowFormDataDTO;
|
||||||
|
|
@ -13,19 +14,21 @@ import org.activiti.api.runtime.shared.query.Pageable;
|
||||||
import org.activiti.api.task.model.Task;
|
import org.activiti.api.task.model.Task;
|
||||||
import org.activiti.api.task.model.builders.TaskPayloadBuilder;
|
import org.activiti.api.task.model.builders.TaskPayloadBuilder;
|
||||||
import org.activiti.api.task.runtime.TaskRuntime;
|
import org.activiti.api.task.runtime.TaskRuntime;
|
||||||
|
import org.activiti.bpmn.model.BaseElement;
|
||||||
import org.activiti.bpmn.model.FormProperty;
|
import org.activiti.bpmn.model.FormProperty;
|
||||||
import org.activiti.bpmn.model.UserTask;
|
import org.activiti.bpmn.model.UserTask;
|
||||||
import org.activiti.engine.RepositoryService;
|
import org.activiti.engine.RepositoryService;
|
||||||
import org.activiti.engine.RuntimeService;
|
import org.activiti.engine.RuntimeService;
|
||||||
|
import org.activiti.engine.TaskService;
|
||||||
import org.activiti.engine.runtime.ProcessInstance;
|
import org.activiti.engine.runtime.ProcessInstance;
|
||||||
|
import org.activiti.engine.task.TaskQuery;
|
||||||
|
import org.activiti.runtime.api.model.impl.APITaskConverter;
|
||||||
|
import org.activiti.runtime.api.query.impl.PageImpl;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -41,6 +44,8 @@ public class ActTaskServiceImpl implements IActTaskService {
|
||||||
@Autowired
|
@Autowired
|
||||||
private RepositoryService repositoryService;
|
private RepositoryService repositoryService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private TaskService taskService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private TaskRuntime taskRuntime;
|
private TaskRuntime taskRuntime;
|
||||||
@Autowired
|
@Autowired
|
||||||
|
|
@ -48,29 +53,37 @@ public class ActTaskServiceImpl implements IActTaskService {
|
||||||
@Autowired
|
@Autowired
|
||||||
private IActWorkflowFormDataService actWorkflowFormDataService;
|
private IActWorkflowFormDataService actWorkflowFormDataService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private APITaskConverter taskConverter;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page<ActTaskDTO> selectProcessDefinitionList(PageDomain pageDomain) {
|
public Page<ActTaskDTO> selectProcessDefinitionList(PageDomain pageDomain) {
|
||||||
Page<ActTaskDTO> list = new Page<ActTaskDTO>();
|
Page<ActTaskDTO> list = new Page<ActTaskDTO>();
|
||||||
org.activiti.api.runtime.shared.query.Page<Task> pageTasks = taskRuntime.tasks(Pageable.of((pageDomain.getPageNum() - 1) * pageDomain.getPageSize(), pageDomain.getPageSize()));
|
|
||||||
List<Task> tasks = pageTasks.getContent();
|
//org.activiti.api.runtime.shared.query.Page<Task> pageTasks = taskRuntime
|
||||||
int totalItems = pageTasks.getTotalItems();
|
// .tasks(Pageable.of((pageDomain.getPageNum() - 1) * pageDomain.getPageSize(), pageDomain.getPageSize()));
|
||||||
|
|
||||||
|
org.activiti.api.runtime.shared.query.Page<Task> taskQuery = this.createTaskQuery(pageDomain);
|
||||||
|
List<Task> tasks = taskQuery.getContent();
|
||||||
|
|
||||||
|
int totalItems = taskQuery.getTotalItems();
|
||||||
list.setTotal(totalItems);
|
list.setTotal(totalItems);
|
||||||
if (totalItems != 0) {
|
if (totalItems != 0) {
|
||||||
Set<String> processInstanceIdIds = tasks.parallelStream().map(t -> t.getProcessInstanceId()).collect(Collectors.toSet());
|
Set<String> processInstanceIdIds = tasks.parallelStream().map(Task::getProcessInstanceId).collect(Collectors.toSet());
|
||||||
List<ProcessInstance> processInstanceList = runtimeService.createProcessInstanceQuery().processInstanceIds(processInstanceIdIds).list();
|
List<ProcessInstance> processInstanceList = runtimeService.createProcessInstanceQuery().processInstanceIds(processInstanceIdIds).list();
|
||||||
List<ActTaskDTO> actTaskDTOS = tasks.stream()
|
List<ActTaskDTO> actTaskDTOS = tasks.stream().map(t -> new ActTaskDTO(t, processInstanceList.parallelStream().filter(pi -> t.getProcessInstanceId().equals(pi.getId())).findAny().get())).collect(Collectors.toList());
|
||||||
.map(t -> new ActTaskDTO(t, processInstanceList.parallelStream().filter(pi -> t.getProcessInstanceId().equals(pi.getId())).findAny().get()))
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
list.addAll(actTaskDTOS);
|
list.addAll(actTaskDTOS);
|
||||||
|
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<String> formDataShow(String taskID) {
|
public List<String> formDataShow(String taskID) {
|
||||||
Task task = taskRuntime.task(taskID);
|
//Task task = taskRuntime.task(taskID);
|
||||||
|
|
||||||
|
org.activiti.engine.task.Task task = taskService.createTaskQuery().taskId(taskID).singleResult();
|
||||||
|
|
||||||
/* ------------------------------------------------------------------------------
|
/* ------------------------------------------------------------------------------
|
||||||
FormProperty_0ueitp2--__!!类型--__!!名称--__!!是否参数--__!!默认值
|
FormProperty_0ueitp2--__!!类型--__!!名称--__!!是否参数--__!!默认值
|
||||||
例子:
|
例子:
|
||||||
|
|
@ -83,24 +96,28 @@ public class ActTaskServiceImpl implements IActTaskService {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//注意!!!!!!!!:表单Key必须要任务编号一模一样,因为参数需要任务key,但是无法获取,只能获取表单key“task.getFormKey()”当做任务key
|
//注意!!!!!!!!:表单Key必须要任务编号一模一样,因为参数需要任务key,但是无法获取,只能获取表单key“task.getFormKey()”当做任务key
|
||||||
UserTask userTask = (UserTask) repositoryService.getBpmnModel(task.getProcessDefinitionId())
|
UserTask userTask = (UserTask) repositoryService.getBpmnModel(task.getProcessDefinitionId()).getFlowElement(task.getFormKey());
|
||||||
.getFlowElement(task.getFormKey());
|
|
||||||
|
|
||||||
if (userTask == null) {
|
if (userTask == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
List<FormProperty> formProperties = userTask.getFormProperties();
|
List<FormProperty> formProperties = userTask.getFormProperties();
|
||||||
List<String> collect = formProperties.stream().map(fp -> fp.getId()).collect(Collectors.toList());
|
return formProperties.stream().map(BaseElement::getId).collect(Collectors.toList());
|
||||||
|
|
||||||
return collect;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int formDataSave(String taskID, List<ActWorkflowFormDataDTO> awfs) throws ParseException {
|
public int formDataSave(String taskID, List<ActWorkflowFormDataDTO> awfs) throws ParseException {
|
||||||
Task task = taskRuntime.task(taskID);
|
//Task task = taskRuntime.task(taskID);
|
||||||
|
|
||||||
|
org.activiti.engine.task.Task task = taskService.createTaskQuery().taskId(taskID).singleResult();
|
||||||
|
|
||||||
|
/*org.activiti.engine.task.Task task = taskService.createTaskQuery().taskCandidateOrAssigned(authenticatedUserId,
|
||||||
|
userGroups).taskId(taskId).singleResult();*/
|
||||||
|
|
||||||
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult();
|
ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(task.getProcessInstanceId()).singleResult();
|
||||||
|
|
||||||
Boolean hasVariables = false;//没有任何参数
|
boolean hasVariables = false;//没有任何参数
|
||||||
HashMap<String, Object> variables = new HashMap<String, Object>();
|
HashMap<String, Object> variables = new HashMap<String, Object>();
|
||||||
//前端传来的字符串,拆分成每个控件
|
//前端传来的字符串,拆分成每个控件
|
||||||
List<ActWorkflowFormData> acwfds = new ArrayList<>();
|
List<ActWorkflowFormData> acwfds = new ArrayList<>();
|
||||||
|
|
@ -118,16 +135,34 @@ public class ActTaskServiceImpl implements IActTaskService {
|
||||||
}
|
}
|
||||||
if (hasVariables) {
|
if (hasVariables) {
|
||||||
//带参数完成任务
|
//带参数完成任务
|
||||||
taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(taskID)
|
taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(taskID).withVariables(variables).build());
|
||||||
.withVariables(variables)
|
|
||||||
.build());
|
|
||||||
} else {
|
} else {
|
||||||
taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(taskID)
|
taskRuntime.complete(TaskPayloadBuilder.complete().withTaskId(taskID).build());
|
||||||
.build());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//写入数据库
|
//写入数据库
|
||||||
return actWorkflowFormDataService.insertActWorkflowFormDatas(acwfds);
|
return actWorkflowFormDataService.insertActWorkflowFormDatas(acwfds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* task创建查询
|
||||||
|
*
|
||||||
|
* @param pageDomain 分页参数
|
||||||
|
* @return 分页数据
|
||||||
|
*/
|
||||||
|
private org.activiti.api.runtime.shared.query.Page<Task> createTaskQuery(PageDomain pageDomain) {
|
||||||
|
Pageable pageable = Pageable.of((pageDomain.getPageNum() - 1) * pageDomain.getPageSize(), pageDomain.getPageSize());
|
||||||
|
String username = SecurityUtils.getUsername();
|
||||||
|
List<String> postCode = SecurityUtils.getLoginUser().getSysUser().getPostCode();
|
||||||
|
TaskQuery taskQuery = taskService.createTaskQuery()
|
||||||
|
.or()
|
||||||
|
//待办任务根据 组 查询
|
||||||
|
.taskCandidateOrAssigned(username, postCode)
|
||||||
|
.taskOwner(username)
|
||||||
|
.endOr();
|
||||||
|
List<Task> tasks = taskConverter.from(taskQuery.listPage(pageable.getStartIndex(), pageable.getMaxItems()));
|
||||||
|
return new PageImpl<>(tasks, Math.toIntExact(taskQuery.count()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import com.xjs.activiti.domain.dto.ProcessDefinitionDTO;
|
||||||
import com.xjs.activiti.domain.vo.ActReDeploymentVO;
|
import com.xjs.activiti.domain.vo.ActReDeploymentVO;
|
||||||
import com.xjs.activiti.mapper.ActReDeploymentMapper;
|
import com.xjs.activiti.mapper.ActReDeploymentMapper;
|
||||||
import com.xjs.activiti.service.IProcessDefinitionService;
|
import com.xjs.activiti.service.IProcessDefinitionService;
|
||||||
|
import org.activiti.engine.ActivitiException;
|
||||||
import org.activiti.engine.HistoryService;
|
import org.activiti.engine.HistoryService;
|
||||||
import org.activiti.engine.RepositoryService;
|
import org.activiti.engine.RepositoryService;
|
||||||
import org.activiti.engine.RuntimeService;
|
import org.activiti.engine.RuntimeService;
|
||||||
|
|
@ -82,7 +83,11 @@ public class ProcessDefinitionServiceImpl implements IProcessDefinitionService {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int deleteProcessDefinitionById(String id) {
|
public int deleteProcessDefinitionById(String id) {
|
||||||
repositoryService.deleteDeployment(id, false);
|
try {
|
||||||
|
repositoryService.deleteDeployment(id, true);
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new ActivitiException("该流程已使用!无法删除!如需删除,请先删除相关任务!");
|
||||||
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,20 @@
|
||||||
package com.xjs.workflow.leave.service.impl;
|
package com.xjs.workflow.leave.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import com.ruoyi.common.core.constant.HttpStatus;
|
||||||
|
import com.ruoyi.common.core.domain.R;
|
||||||
import com.ruoyi.common.core.text.UUID;
|
import com.ruoyi.common.core.text.UUID;
|
||||||
import com.ruoyi.common.core.utils.DateUtils;
|
import com.ruoyi.common.core.utils.DateUtils;
|
||||||
import com.ruoyi.common.core.utils.StringUtils;
|
import com.ruoyi.common.core.utils.StringUtils;
|
||||||
import com.ruoyi.common.security.utils.SecurityUtils;
|
import com.ruoyi.common.security.utils.SecurityUtils;
|
||||||
import com.ruoyi.system.api.RemoteUserService;
|
import com.ruoyi.system.api.RemoteUserService;
|
||||||
|
import com.xjs.exception.BusinessException;
|
||||||
import com.xjs.workflow.leave.domain.WorkflowLeave;
|
import com.xjs.workflow.leave.domain.WorkflowLeave;
|
||||||
import com.xjs.workflow.leave.mapper.WorkflowLeaveMapper;
|
import com.xjs.workflow.leave.mapper.WorkflowLeaveMapper;
|
||||||
import com.xjs.workflow.leave.service.IWorkflowLeaveService;
|
import com.xjs.workflow.leave.service.IWorkflowLeaveService;
|
||||||
import org.activiti.api.process.runtime.ProcessRuntime;
|
import org.activiti.api.process.runtime.ProcessRuntime;
|
||||||
|
import org.activiti.engine.ActivitiException;
|
||||||
|
import org.activiti.engine.ActivitiObjectNotFoundException;
|
||||||
import org.activiti.engine.RuntimeService;
|
import org.activiti.engine.RuntimeService;
|
||||||
import org.activiti.engine.TaskService;
|
import org.activiti.engine.TaskService;
|
||||||
import org.activiti.engine.runtime.ProcessInstance;
|
import org.activiti.engine.runtime.ProcessInstance;
|
||||||
|
|
@ -104,16 +109,30 @@ public class WorkflowLeaveServiceImpl implements IWorkflowLeaveService {
|
||||||
String id = UUID.randomUUID().toString();
|
String id = UUID.randomUUID().toString();
|
||||||
workflowLeave.setId(id);
|
workflowLeave.setId(id);
|
||||||
workflowLeave.setCreateTime(DateUtils.getNowDate());
|
workflowLeave.setCreateTime(DateUtils.getNowDate());
|
||||||
String join = StringUtils.join(remoteUserService.selectUserNameByPostCodeAndDeptId("se", SecurityUtils.getLoginUser().getSysUser().getDeptId()), ",");
|
|
||||||
|
//查询当前用户同一个部门的领导岗位用户
|
||||||
|
R<List<String>> listR = remoteUserService.selectUserNameByPostCodeAndDeptId("leader", SecurityUtils.getLoginUser().getSysUser().getDeptId());
|
||||||
|
if (listR.getCode() != HttpStatus.SUCCESS) {
|
||||||
|
throw new BusinessException("远程调用异常");
|
||||||
|
}
|
||||||
|
List<String> data = listR.getData();
|
||||||
|
String join = StringUtils.join(data, ",");
|
||||||
|
|
||||||
Map<String, Object> map = new HashMap<>();
|
Map<String, Object> map = new HashMap<>();
|
||||||
map.put("deptLeader", join);
|
map.put("deptLeader", join);
|
||||||
ProcessInstance processInstance = runtimeService.createProcessInstanceBuilder()
|
ProcessInstance processInstance = null;
|
||||||
.variables(map)
|
try {
|
||||||
.processDefinitionKey("leave")
|
processInstance = runtimeService.createProcessInstanceBuilder()
|
||||||
.businessKey(id)
|
.variables(map)
|
||||||
.name(workflowLeave.getTitle())
|
.processDefinitionKey("leave")
|
||||||
.start();
|
.businessKey(id)
|
||||||
|
.name(workflowLeave.getTitle())
|
||||||
|
.start();
|
||||||
|
} catch (ActivitiObjectNotFoundException e) {
|
||||||
|
throw new ActivitiObjectNotFoundException("没有部署key:leave 的流程");
|
||||||
|
} catch (ActivitiException e) {
|
||||||
|
throw new ActivitiException("leave" + "-流程被挂起");
|
||||||
|
}
|
||||||
|
|
||||||
workflowLeave.setInstanceId(processInstance.getId());
|
workflowLeave.setInstanceId(processInstance.getId());
|
||||||
workflowLeave.setState(String.valueOf(ING.getCode()));
|
workflowLeave.setState(String.valueOf(ING.getCode()));
|
||||||
|
|
|
||||||
|
|
@ -69,6 +69,11 @@
|
||||||
<appender-ref ref="console" />
|
<appender-ref ref="console" />
|
||||||
</logger>
|
</logger>
|
||||||
|
|
||||||
|
<!--开启activiti日志-->
|
||||||
|
<logger name="org.activiti.engine.impl.persistence.entity" level="trace">
|
||||||
|
<appender-ref ref="console"/>
|
||||||
|
</logger>
|
||||||
|
|
||||||
<root level="info">
|
<root level="info">
|
||||||
<appender-ref ref="console" />
|
<appender-ref ref="console" />
|
||||||
</root>
|
</root>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue