添加已办,未办

This commit is contained in:
gssong 2024-09-16 21:16:31 +08:00
parent f18bbd898b
commit 281c9c0e8e
7 changed files with 162 additions and 83 deletions

View File

@ -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);
}
/**
* 查询当前用户的抄送
*

View File

@ -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;
}

View File

@ -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);
/**
* 查询当前用户的抄送

View File

@ -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);
/**
* 查询当前用户的抄送
*

View File

@ -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()));

View File

@ -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);
}
/**

View File

@ -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">