提交 a4966412 编写于 作者: tangyaolong's avatar tangyaolong

办结已办接口实现

上级 28791241
......@@ -422,6 +422,10 @@ public class WFCoreService
context.getSearchCond().in("DefinitionKey",keys);
if(TaskType.READ == type)
tasks = searchMyUnreadTask(context);
else if(TaskType.DONE == type)
tasks = searchMyDoneTask(context);
else if(TaskType.FINISH == type)
tasks = searchMyFinishTask(context);
else
tasks = searchMyTask(context);
if(!ObjectUtils.isEmpty(tasks)){
......@@ -448,6 +452,18 @@ public class WFCoreService
return new PageImpl<WFTask>(pages.getRecords(), context.getPageable(), pages.getTotal());
}
private Page<WFTask> searchMyDoneTask(WFTaskSearchContext context) {
context.setSort("createtime,desc");
com.baomidou.mybatisplus.extension.plugins.pagination.Page<WFTask> pages=wfCoreMapper.searchMyDoneTask(context.getPages(),context,context.getSelectCond());
return new PageImpl<WFTask>(pages.getRecords(), context.getPageable(), pages.getTotal());
}
private Page<WFTask> searchMyFinishTask(WFTaskSearchContext context) {
context.setSort("createtime,desc");
com.baomidou.mybatisplus.extension.plugins.pagination.Page<WFTask> pages=wfCoreMapper.searchMyFinishTask(context.getPages(),context,context.getSelectCond());
return new PageImpl<WFTask>(pages.getRecords(), context.getPageable(), pages.getTotal());
}
public List<String> getBusinessKeys(String system,String appname, String entity,String processDefinitionKey,String taskDefinitionKey,String userId)
{
List<String> businessKeys = new ArrayList<>();
......@@ -1784,13 +1800,13 @@ public class WFCoreService
if (sourceTask != null) {
//1.生成子任务
task = (TaskEntity) taskService.newTask();
task.setParentTaskId(sourceTask.getId());
task.setCategory(sourceTask.getCategory());
task.setDescription(sourceTask.getDescription());
task.setTenantId(sourceTask.getTenantId());
task.setAssignee(sourceTask.getAssignee());
task.setName(sourceTask.getName());
task.setProcessDefinitionId(sourceTask.getProcessDefinitionId());
task.setProcessInstanceId(sourceTask.getProcessInstanceId());
task.setTaskDefinitionKey(sourceTask.getTaskDefinitionKey());
task.setTaskDefinitionId(sourceTask.getTaskDefinitionId());
task.setPriority(sourceTask.getPriority());
......
......@@ -23,5 +23,9 @@ public interface WFCoreMapper {
Page<WFTask> searchUnReadTask(IPage page, @Param("srf") WFTaskSearchContext context, @Param("ew") Wrapper<WFTask> wrapper) ;
Page<WFTask> searchMyDoneTask(IPage page, @Param("srf") WFTaskSearchContext context, @Param("ew") Wrapper<WFTask> wrapper) ;
Page<WFTask> searchMyFinishTask(IPage page, @Param("srf") WFTaskSearchContext context, @Param("ew") Wrapper<WFTask> wrapper) ;
Object readTask(@Param("et")Map param);
}
......@@ -81,5 +81,88 @@
<if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">${ew.sqlSegment}</if>
</select>
<select id="searchMyDoneTask" parameterType="cn.ibizlab.core.workflow.filter.WFTaskSearchContext" resultType="cn.ibizlab.core.workflow.domain.WFTask">
<![CDATA[
SELECT
T1.TaskId AS Id,
T1.DefinitionId AS ProcessDefinitionId,
T1.DefinitionName AS ProcessDefinitionName,
T1.DefinitionKey AS ProcessDefinitionKey,
T1.InstanceId AS ProcessInstanceId,
T1.TaskName AS NAME,
T1.TaskDefinitionKey,
T1.BusinessKey AS ProcessInstanceBusinessKey,
T1.Description,
T1.CreateTime
FROM
(
SELECT DISTINCT
RES.ID_ AS TaskId,
RES.PROC_DEF_ID_ AS DefinitionId,
ARP.NAME_ AS DefinitionName,
ARP.KEY_ AS DefinitionKey,
RES.PROC_INST_ID_ AS InstanceId,
RES.NAME_ AS TaskName,
RES.TASK_DEF_KEY_ AS TaskDefinitionKey,
RES.CATEGORY_ AS BusinessKey,
RES.DESCRIPTION_ AS Description,
RES.START_TIME_ AS CreateTime
FROM
ACT_HI_TASKINST RES
INNER JOIN ACT_HI_PROCINST HPI ON RES.PROC_INST_ID_ = HPI.ID_
INNER JOIN ACT_RE_PROCDEF ARP ON RES.PROC_DEF_ID_ = arp.ID_
WHERE
RES.END_TIME_ IS NOT NULL
AND HPI.END_TIME_ IS NULL
AND RES.ASSIGNEE_ IS NULL
AND EXISTS ( SELECT LINK.ID_ FROM ACT_HI_IDENTITYLINK LINK WHERE LINK.TASK_ID_ = RES.ID_ AND ( LINK.USER_ID_ = #{srf.sessioncontext.srfuserid} ) )
) t1
]]>
<where><if test="ew!=null and ew.sqlSegment!=null and !ew.emptyOfWhere">${ew.sqlSegment}</if></where>
<if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">${ew.sqlSegment}</if>
</select>
<select id="searchMyFinishTask" parameterType="cn.ibizlab.core.workflow.filter.WFTaskSearchContext" resultType="cn.ibizlab.core.workflow.domain.WFTask">
<![CDATA[
SELECT
T1.TaskId AS Id,
T1.DefinitionId AS ProcessDefinitionId,
T1.DefinitionName AS ProcessDefinitionName,
T1.DefinitionKey AS ProcessDefinitionKey,
T1.InstanceId AS ProcessInstanceId,
T1.TaskName AS NAME,
T1.TaskDefinitionKey,
T1.BusinessKey AS ProcessInstanceBusinessKey,
T1.Description,
T1.CreateTime
FROM
(
SELECT DISTINCT
RES.ID_ AS TaskId,
RES.PROC_DEF_ID_ AS DefinitionId,
ARP.NAME_ AS DefinitionName,
ARP.KEY_ AS DefinitionKey,
RES.PROC_INST_ID_ AS InstanceId,
RES.NAME_ AS TaskName,
RES.TASK_DEF_KEY_ AS TaskDefinitionKey,
RES.CATEGORY_ AS BusinessKey,
RES.DESCRIPTION_ AS Description,
RES.START_TIME_ AS CreateTime
FROM
ACT_HI_TASKINST RES
INNER JOIN ACT_HI_PROCINST HPI ON RES.PROC_INST_ID_ = HPI.ID_
INNER JOIN ACT_RE_PROCDEF ARP ON RES.PROC_DEF_ID_ = arp.ID_
WHERE
RES.END_TIME_ IS NOT NULL
AND HPI.END_TIME_ IS NOT NULL
AND RES.ASSIGNEE_ IS NULL
AND EXISTS ( SELECT LINK.ID_ FROM ACT_HI_IDENTITYLINK LINK WHERE LINK.TASK_ID_ = RES.ID_ AND ( LINK.USER_ID_ = #{srf.sessioncontext.srfuserid} ) )
) t1
]]>
<where><if test="ew!=null and ew.sqlSegment!=null and !ew.emptyOfWhere">${ew.sqlSegment}</if></where>
<if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">${ew.sqlSegment}</if>
</select>
</mapper>
\ No newline at end of file
......@@ -68,6 +68,20 @@ public class WFCoreResource
return ResponseEntity.status(HttpStatus.OK).body(wfCoreService.getDynaBusinessKeys(system,"",entity,dynainstid,userId, TaskType.READ));
}
@ApiOperation(value = "getBusinessKeys", tags = {"String" }, notes = "根据流程步骤查询我的已办主键清单")
@RequestMapping(method = RequestMethod.POST, value = "/{system}-user-{userId}/{dynainstid}/{entity}/tasks/done")
public ResponseEntity<Map<String,Map<String,Object>>> getDoneByUserId(@PathVariable("system") String system, @PathVariable("userId") String userId,
@PathVariable("entity") String entity, @PathVariable("dynainstid") String dynainstid) {
return ResponseEntity.status(HttpStatus.OK).body(wfCoreService.getDynaBusinessKeys(system,"",entity,dynainstid,userId, TaskType.DONE));
}
@ApiOperation(value = "getBusinessKeys", tags = {"String" }, notes = "根据流程步骤查询我的办结主键清单")
@RequestMapping(method = RequestMethod.POST, value = "/{system}-user-{userId}/{dynainstid}/{entity}/tasks/finish")
public ResponseEntity<Map<String,Map<String,Object>>> getFinishByUserId(@PathVariable("system") String system, @PathVariable("userId") String userId,
@PathVariable("entity") String entity, @PathVariable("dynainstid") String dynainstid) {
return ResponseEntity.status(HttpStatus.OK).body(wfCoreService.getDynaBusinessKeys(system,"",entity,dynainstid,userId, TaskType.FINISH));
}
@ApiOperation(value = "标记任务已读", tags = {"工作流标记任务已读" }, notes = "标记任务已读")
@RequestMapping(method = RequestMethod.POST, value = "/{system}-app-{appname}/{entity}/{businessKey}/tasks/{taskId}/read")
public ResponseEntity<Boolean> readTask(@PathVariable("system") String system,@PathVariable("appname") String appname,
......@@ -155,6 +169,12 @@ public class WFCoreResource
return ResponseEntity.ok(wfCoreService.sendBack(taskId));
}
// @ApiOperation(value = "delegatetask", tags = {"delegatetask" }, notes = "委派任务")
// @RequestMapping(method = RequestMethod.POST, value = "/{system}-app-{appname}/{entity}/{businessKey}/tasks/{taskId}/{delegateuser}/delegate")
// public ResponseEntity<Boolean> delegatetask(@PathVariable("taskId") String taskId,@PathVariable("delegateuser") String delegateuser){
// return ResponseEntity.ok(wfCoreService.delegateTask(taskId,delegateuser));
// }
//@PreAuthorize("hasPermission(#entity,'WFSTART',this.getEntity())")
@ApiOperation(value = "wfsubmitbatch", tags = {"SubmitBatch" }, notes = "批量工作流执行步骤")
@RequestMapping(method = RequestMethod.POST, value = "/{system}-app-{appname}/{entity}/process-definitions/{processDefinitionKey}/usertasks/{taskDefinitionKey}/ways/{sequenceFlowId}/submit")
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册