添加已办,未办
This commit is contained in:
parent
f18bbd898b
commit
281c9c0e8e
@ -95,6 +95,29 @@ public class FlwTaskController extends BaseController {
|
||||
return flwTaskService.getPageByTaskFinish(flowTaskBo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询待办任务
|
||||
*
|
||||
* @param flowTaskBo 参数
|
||||
* @param pageQuery 分页
|
||||
*/
|
||||
@GetMapping("/getPageByAllTaskWait")
|
||||
public TableDataInfo<FlowTaskVo> getPageByAllTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery) {
|
||||
return flwTaskService.getPageByAllTaskWait(flowTaskBo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询已办任务
|
||||
*
|
||||
* @param flowTaskBo 参数
|
||||
* @param pageQuery 分页
|
||||
*/
|
||||
|
||||
@GetMapping("/getPageByAllTaskFinish")
|
||||
public TableDataInfo<FlowHisTaskVo> getPageByAllTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery) {
|
||||
return flwTaskService.getPageByAllTaskFinish(flowTaskBo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询当前用户的抄送
|
||||
*
|
||||
|
@ -102,6 +102,12 @@ public class FlowHisTaskVo implements Serializable {
|
||||
*/
|
||||
private String approver;
|
||||
|
||||
/**
|
||||
* 审批者
|
||||
*/
|
||||
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "approver")
|
||||
private String approveName;
|
||||
|
||||
/**
|
||||
* 协作人(只有转办、会签、票签、委派)
|
||||
*/
|
||||
@ -122,6 +128,11 @@ public class FlowHisTaskVo implements Serializable {
|
||||
*/
|
||||
private Integer flowStatus;
|
||||
|
||||
/**
|
||||
* 流程状态
|
||||
*/
|
||||
private String flowStatusName;
|
||||
|
||||
/**
|
||||
* 审批意见
|
||||
*/
|
||||
@ -152,10 +163,4 @@ public class FlowHisTaskVo implements Serializable {
|
||||
* 流程定义编码
|
||||
*/
|
||||
private String flowCode;
|
||||
|
||||
/**
|
||||
* 审批者
|
||||
*/
|
||||
@Translation(type = TransConstant.USER_ID_TO_NICKNAME, mapper = "approver")
|
||||
private String approverName;
|
||||
}
|
||||
|
@ -32,12 +32,10 @@ public interface FlwTaskMapper {
|
||||
*
|
||||
* @param page 分页
|
||||
* @param queryWrapper 条件
|
||||
* @param flowTaskBo 条件
|
||||
* @return 结果
|
||||
*/
|
||||
Page<FlowHisTaskVo> getTaskFinishByPage(@Param("page") Page<FlowTaskVo> page,
|
||||
@Param(Constants.WRAPPER) Wrapper<FlowTaskBo> queryWrapper,
|
||||
@Param("flowTaskBo") FlowTaskBo flowTaskBo);
|
||||
@Param(Constants.WRAPPER) Wrapper<FlowTaskBo> queryWrapper);
|
||||
|
||||
/**
|
||||
* 查询当前用户的抄送
|
||||
|
@ -49,6 +49,26 @@ public interface IFlwTaskService {
|
||||
*/
|
||||
TableDataInfo<FlowHisTaskVo> getPageByTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查询待办任务
|
||||
*
|
||||
* @param flowTaskBo 参数
|
||||
* @param pageQuery 分页
|
||||
* @return 结果
|
||||
*/
|
||||
TableDataInfo<FlowTaskVo> getPageByAllTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询已办任务
|
||||
*
|
||||
* @param flowTaskBo 参数
|
||||
* @param pageQuery 分页
|
||||
* @return 结果
|
||||
*/
|
||||
TableDataInfo<FlowHisTaskVo> getPageByAllTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询当前用户的抄送
|
||||
*
|
||||
|
@ -172,7 +172,6 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
|
||||
@Override
|
||||
public TableDataInfo<FlowInstanceVo> getPageByCurrent(InstanceBo instanceBo, PageQuery pageQuery) {
|
||||
LambdaQueryWrapper<FlowInstance> wrapper = Wrappers.lambdaQuery();
|
||||
|
||||
if (StringUtils.isNotBlank(instanceBo.getFlowCode())) {
|
||||
List<FlowDefinition> flowDefinitions = flowDefinitionMapper.selectList(
|
||||
new LambdaQueryWrapper<FlowDefinition>().eq(FlowDefinition::getFlowCode, instanceBo.getFlowCode()));
|
||||
|
@ -7,6 +7,8 @@ import com.warm.flow.core.dto.FlowParams;
|
||||
import com.warm.flow.core.entity.Instance;
|
||||
import com.warm.flow.core.entity.Task;
|
||||
import com.warm.flow.core.entity.User;
|
||||
import com.warm.flow.core.enums.FlowStatus;
|
||||
import com.warm.flow.core.enums.NodeType;
|
||||
import com.warm.flow.core.enums.SkipType;
|
||||
import com.warm.flow.core.service.InsService;
|
||||
import com.warm.flow.core.service.TaskService;
|
||||
@ -135,21 +137,10 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<FlowTaskVo> getPageByTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery) {
|
||||
QueryWrapper<FlowTaskBo> queryWrapper = getFlowTaskBoQueryWrapper(flowTaskBo);
|
||||
QueryWrapper<FlowTaskBo> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.in("t.processed_by", WorkflowUtils.permissionList());
|
||||
Page<FlowTaskVo> page = flwTaskMapper.getTaskWaitByPage(pageQuery.build(), queryWrapper);
|
||||
List<FlowTaskVo> records = page.getRecords();
|
||||
if (CollUtil.isNotEmpty(records)) {
|
||||
List<Long> taskIds = StreamUtils.toList(records, FlowTaskVo::getId);
|
||||
List<User> userList = userService.getByAssociateds(taskIds);
|
||||
for (FlowTaskVo record : records) {
|
||||
if (CollUtil.isNotEmpty(userList)) {
|
||||
List<User> users = StreamUtils.filter(userList, e -> e.getAssociated().toString().equals(record.getId().toString()));
|
||||
record.setUserList(CollUtil.isEmpty(users) ? Collections.emptyList() : users);
|
||||
record.setUserDTOList(WorkflowUtils.getHandlerUser(users));
|
||||
}
|
||||
}
|
||||
}
|
||||
queryWrapper.in("t.flow_status", FlowStatus.APPROVAL.getKey());
|
||||
Page<FlowTaskVo> page = buildTaskWaitingPage(pageQuery, queryWrapper, flowTaskBo);
|
||||
return TableDataInfo.build(page);
|
||||
}
|
||||
|
||||
@ -161,12 +152,83 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<FlowHisTaskVo> getPageByTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery) {
|
||||
QueryWrapper<FlowTaskBo> queryWrapper = getFlowTaskBoQueryWrapper(flowTaskBo);
|
||||
flowTaskBo.setPermissionList(WorkflowUtils.permissionList());
|
||||
Page<FlowHisTaskVo> page = flwTaskMapper.getTaskFinishByPage(pageQuery.build(), queryWrapper, flowTaskBo);
|
||||
QueryWrapper<FlowTaskBo> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.in("t.approver", LoginHelper.getUserId());
|
||||
Page<FlowHisTaskVo> page = buildTaskFinishPage(pageQuery, queryWrapper, flowTaskBo);
|
||||
return TableDataInfo.build(page);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询待办任务
|
||||
*
|
||||
* @param flowTaskBo 参数
|
||||
* @param pageQuery 分页
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<FlowTaskVo> getPageByAllTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery) {
|
||||
QueryWrapper<FlowTaskBo> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.in("t.processed_by", WorkflowUtils.permissionList());
|
||||
Page<FlowTaskVo> page = buildTaskWaitingPage(pageQuery, queryWrapper, flowTaskBo);
|
||||
return TableDataInfo.build(page);
|
||||
}
|
||||
|
||||
private Page<FlowTaskVo> buildTaskWaitingPage(PageQuery pageQuery, QueryWrapper<FlowTaskBo> queryWrapper, FlowTaskBo flowTaskBo) {
|
||||
commonCondition(queryWrapper, flowTaskBo);
|
||||
Page<FlowTaskVo> page = flwTaskMapper.getTaskWaitByPage(pageQuery.build(), queryWrapper);
|
||||
List<FlowTaskVo> records = page.getRecords();
|
||||
if (CollUtil.isNotEmpty(records)) {
|
||||
List<Long> taskIds = StreamUtils.toList(records, FlowTaskVo::getId);
|
||||
List<User> userList = userService.getByAssociateds(taskIds);
|
||||
for (FlowTaskVo data : records) {
|
||||
if (CollUtil.isNotEmpty(userList)) {
|
||||
List<User> users = StreamUtils.filter(userList, e -> e.getAssociated().toString().equals(data.getId().toString()));
|
||||
data.setUserList(CollUtil.isEmpty(users) ? Collections.emptyList() : users);
|
||||
data.setUserDTOList(WorkflowUtils.getHandlerUser(users));
|
||||
}
|
||||
data.setFlowStatusName(FlowStatus.getValueByKey(data.getFlowStatus()));
|
||||
}
|
||||
}
|
||||
return page;
|
||||
}
|
||||
|
||||
/**
|
||||
* 通用条件
|
||||
*
|
||||
* @param queryWrapper 查询条件
|
||||
* @param flowTaskBo 参数
|
||||
*/
|
||||
private void commonCondition(QueryWrapper<FlowTaskBo> queryWrapper, FlowTaskBo flowTaskBo) {
|
||||
queryWrapper.like(StringUtils.isNotBlank(flowTaskBo.getNodeName()), "t.node_name", flowTaskBo.getNodeName());
|
||||
queryWrapper.like(StringUtils.isNotBlank(flowTaskBo.getFlowName()), "t.flow_name", flowTaskBo.getFlowName());
|
||||
queryWrapper.eq(StringUtils.isNotBlank(flowTaskBo.getFlowCode()), "t.flow_code", flowTaskBo.getFlowCode());
|
||||
queryWrapper.eq("t.node_type", NodeType.BETWEEN.getKey());
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询已办任务
|
||||
*
|
||||
* @param flowTaskBo 参数
|
||||
* @param pageQuery 分页
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<FlowHisTaskVo> getPageByAllTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery) {
|
||||
QueryWrapper<FlowTaskBo> queryWrapper = new QueryWrapper<>();
|
||||
Page<FlowHisTaskVo> page = buildTaskFinishPage(pageQuery, queryWrapper, flowTaskBo);
|
||||
return TableDataInfo.build(page);
|
||||
}
|
||||
|
||||
private Page<FlowHisTaskVo> buildTaskFinishPage(PageQuery pageQuery, QueryWrapper<FlowTaskBo> queryWrapper, FlowTaskBo flowTaskBo) {
|
||||
commonCondition(queryWrapper, flowTaskBo);
|
||||
Page<FlowHisTaskVo> page = flwTaskMapper.getTaskFinishByPage(pageQuery.build(), queryWrapper);
|
||||
List<FlowHisTaskVo> records = page.getRecords();
|
||||
if (CollUtil.isNotEmpty(records)) {
|
||||
for (FlowHisTaskVo data : records) {
|
||||
data.setFlowStatusName(FlowStatus.getValueByKey(data.getFlowStatus()));
|
||||
}
|
||||
}
|
||||
return page;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询当前用户的抄送
|
||||
*
|
||||
@ -175,24 +237,12 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<FlowTaskVo> getPageByTaskCopy(FlowTaskBo flowTaskBo, PageQuery pageQuery) {
|
||||
QueryWrapper<FlowTaskBo> queryWrapper = getFlowTaskBoQueryWrapper(flowTaskBo);
|
||||
flowTaskBo.setPermissionList(WorkflowUtils.permissionList());
|
||||
Page<FlowTaskVo> page = flwTaskMapper.getTaskCopyByPage(pageQuery.build(), queryWrapper);
|
||||
return TableDataInfo.build(page);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询参数
|
||||
*
|
||||
* @param flowTaskBo 参数
|
||||
*/
|
||||
private QueryWrapper<FlowTaskBo> getFlowTaskBoQueryWrapper(FlowTaskBo flowTaskBo) {
|
||||
QueryWrapper<FlowTaskBo> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.like(StringUtils.isNotBlank(flowTaskBo.getNodeName()), "t.node_name", flowTaskBo.getNodeName());
|
||||
queryWrapper.like(StringUtils.isNotBlank(flowTaskBo.getFlowName()), "t.flow_name", flowTaskBo.getFlowName());
|
||||
queryWrapper.eq(StringUtils.isNotBlank(flowTaskBo.getFlowCode()), "t.flow_code", flowTaskBo.getFlowCode());
|
||||
return queryWrapper;
|
||||
Page<FlowTaskVo> page = flwTaskMapper.getTaskCopyByPage(pageQuery.build(), queryWrapper);
|
||||
return TableDataInfo.build(page);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -67,54 +67,38 @@
|
||||
FROM flow_task AS t
|
||||
LEFT JOIN flow_user uu ON uu.associated = t.id
|
||||
LEFT JOIN flow_definition d on t.definition_id = d.id
|
||||
LEFT JOIN flow_instance i on t.instance_id = i.id where t.node_type = 1 and i.flow_status = '1' and t.del_flag = '0') t
|
||||
LEFT JOIN flow_instance i on t.instance_id = i.id where t.node_type = 1 and t.del_flag = '0') t
|
||||
${ew.getCustomSqlSegment}
|
||||
</select>
|
||||
|
||||
<select id="getTaskFinishByPage" resultMap="FlowHisTaskResult">
|
||||
select * from (
|
||||
select
|
||||
t.id,
|
||||
t.node_code,
|
||||
t.node_name,
|
||||
t.cooperate_type,
|
||||
t.approver,
|
||||
t.collaborator,
|
||||
t.node_type,
|
||||
t.target_node_code,
|
||||
t.target_node_name,
|
||||
t.definition_id,
|
||||
t.instance_id,
|
||||
i.flow_status,
|
||||
t.message,
|
||||
t.ext,
|
||||
t.create_time,
|
||||
t.update_time,
|
||||
t.tenant_id,
|
||||
i.business_id,
|
||||
d.form_path fromPath,
|
||||
d.flow_name,
|
||||
d.flow_code
|
||||
from ( SELECT MAX(id) as id
|
||||
FROM flow_his_task
|
||||
<where>
|
||||
flow_status <![CDATA[<> '10']]> and node_type = 1
|
||||
<if test="flowTaskBo.permissionList != null and flowTaskBo.permissionList.size > 0">
|
||||
AND approver in
|
||||
<foreach item="permission" collection="flowTaskBo.permissionList" open="(" separator="," close=")">
|
||||
#{permission}
|
||||
</foreach>
|
||||
</if>
|
||||
<if test="flowTaskBo.nodeName != null and flowTaskBo.nodeName != ''">and node_name like concat('%',
|
||||
#{flowTaskBo.nodeName}, '%')
|
||||
</if>
|
||||
<if test="flowTaskBo.instanceId != null ">and instance_id = #{flowTaskBo.instanceId}</if>
|
||||
</where>
|
||||
GROUP BY instance_id ) tmp
|
||||
LEFT JOIN flow_his_task t ON t.id = tmp.id
|
||||
LEFT JOIN flow_definition d on t.definition_id = d.id
|
||||
LEFT JOIN flow_instance i on t.instance_id = i.id
|
||||
order by t.create_time desc ) t ${ew.getCustomSqlSegment}
|
||||
a.id,
|
||||
a.node_code,
|
||||
a.node_name,
|
||||
a.cooperate_type,
|
||||
a.approver,
|
||||
a.collaborator,
|
||||
a.node_type,
|
||||
a.target_node_code,
|
||||
a.target_node_name,
|
||||
a.definition_id,
|
||||
a.instance_id,
|
||||
a.flow_status,
|
||||
a.message,
|
||||
a.ext,
|
||||
a.create_time,
|
||||
a.update_time,
|
||||
a.tenant_id,
|
||||
b.business_id,
|
||||
c.form_path fromPath,
|
||||
c.flow_name,
|
||||
c.flow_code
|
||||
from flow_his_task a
|
||||
LEFT JOIN flow_instance b on a.instance_id = b.id
|
||||
LEFT JOIN flow_definition c on a.definition_id = c.id
|
||||
) t ${ew.getCustomSqlSegment}
|
||||
</select>
|
||||
|
||||
<select id="getTaskCopyByPage" resultMap="FlowTaskResult">
|
||||
|
Loading…
x
Reference in New Issue
Block a user