我的任务bug修改

This commit is contained in:
2025-09-09 21:52:49 +08:00
parent 325f392e8f
commit 4a2b62cf92
7 changed files with 212 additions and 8 deletions

View File

@ -94,7 +94,9 @@ public class DesVolumeFileServiceImpl extends ServiceImpl<DesVolumeFileMapper, D
Page<DesVolumeFileVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<DesVolumeFileVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
for (DesVolumeFileVo vo : result.getRecords()) { for (DesVolumeFileVo vo : result.getRecords()) {
SysOssVo ossVo = ossService.getById(vo.getFileId()); SysOssVo ossVo = ossService.getById(vo.getFileId());
vo.setFileUrl(ossVo.getUrl()); if (ossVo != null) {
vo.setFileUrl(ossVo.getUrl());
}
} }
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }

View File

@ -27,6 +27,9 @@ public class FlowInstanceBo implements Serializable {
*/ */
private String flowCode; private String flowCode;
private String projectId;
/** /**
* 任务发起人 * 任务发起人
*/ */

View File

@ -32,6 +32,8 @@ public class FlowTaskBo implements Serializable {
*/ */
private String flowCode; private String flowCode;
private String projectId;
/** /**
* 流程分类id * 流程分类id
*/ */

View File

@ -28,6 +28,7 @@ public interface FlwTaskMapper {
* @return 结果 * @return 结果
*/ */
Page<FlowTaskVo> getListRunTask(@Param("page") Page<FlowTaskVo> page, @Param(Constants.WRAPPER) Wrapper<FlowTaskBo> queryWrapper); Page<FlowTaskVo> getListRunTask(@Param("page") Page<FlowTaskVo> page, @Param(Constants.WRAPPER) Wrapper<FlowTaskBo> queryWrapper);
Page<FlowTaskVo> getListRunTaskDefinitionIds(@Param("page") Page<FlowTaskVo> page, @Param("definitionIds") List<Long> definitionIds, @Param(Constants.WRAPPER) Wrapper<FlowTaskBo> queryWrapper);
/** /**
* 获取待办信息 * 获取待办信息
@ -45,6 +46,7 @@ public interface FlwTaskMapper {
* @return 结果 * @return 结果
*/ */
Page<FlowHisTaskVo> getListFinishTask(@Param("page") Page<FlowTaskVo> page, @Param(Constants.WRAPPER) Wrapper<FlowTaskBo> queryWrapper); Page<FlowHisTaskVo> getListFinishTask(@Param("page") Page<FlowTaskVo> page, @Param(Constants.WRAPPER) Wrapper<FlowTaskBo> queryWrapper);
Page<FlowHisTaskVo> getListFinishDefinitionIdsTask(@Param("page") Page<FlowTaskVo> page,@Param("definitionIds") List<Long> definitionIds, @Param(Constants.WRAPPER) Wrapper<FlowTaskBo> queryWrapper);
/** /**
* 查询当前用户的抄送 * 查询当前用户的抄送
@ -54,4 +56,5 @@ public interface FlwTaskMapper {
* @return 结果 * @return 结果
*/ */
Page<FlowTaskVo> getTaskCopyByPage(@Param("page") Page<FlowTaskVo> page, @Param(Constants.WRAPPER) QueryWrapper<FlowTaskBo> queryWrapper); Page<FlowTaskVo> getTaskCopyByPage(@Param("page") Page<FlowTaskVo> page, @Param(Constants.WRAPPER) QueryWrapper<FlowTaskBo> queryWrapper);
Page<FlowTaskVo> getTaskCopyDefinitionIdsByPage(@Param("page") Page<FlowTaskVo> page,@Param("definitionIds") List<Long> definitionIds, @Param(Constants.WRAPPER) QueryWrapper<FlowTaskBo> queryWrapper);
} }

View File

@ -28,9 +28,11 @@ import org.dromara.warm.flow.core.enums.NodeType;
import org.dromara.warm.flow.core.service.DefService; import org.dromara.warm.flow.core.service.DefService;
import org.dromara.warm.flow.core.service.InsService; import org.dromara.warm.flow.core.service.InsService;
import org.dromara.warm.flow.core.service.TaskService; import org.dromara.warm.flow.core.service.TaskService;
import org.dromara.warm.flow.orm.entity.FlowDefinition;
import org.dromara.warm.flow.orm.entity.FlowHisTask; import org.dromara.warm.flow.orm.entity.FlowHisTask;
import org.dromara.warm.flow.orm.entity.FlowInstance; import org.dromara.warm.flow.orm.entity.FlowInstance;
import org.dromara.warm.flow.orm.entity.FlowTask; import org.dromara.warm.flow.orm.entity.FlowTask;
import org.dromara.warm.flow.orm.mapper.FlowDefinitionMapper;
import org.dromara.warm.flow.orm.mapper.FlowHisTaskMapper; import org.dromara.warm.flow.orm.mapper.FlowHisTaskMapper;
import org.dromara.warm.flow.orm.mapper.FlowInstanceMapper; import org.dromara.warm.flow.orm.mapper.FlowInstanceMapper;
import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.common.ConditionalOnEnable;
@ -71,6 +73,7 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
private final IFlwTaskService flwTaskService; private final IFlwTaskService flwTaskService;
private final FlwInstanceMapper flwInstanceMapper; private final FlwInstanceMapper flwInstanceMapper;
private final FlwCategoryMapper flwCategoryMapper; private final FlwCategoryMapper flwCategoryMapper;
private final FlowDefinitionMapper flowDefinitionMapper;
/** /**
* 分页查询正在运行的流程实例 * 分页查询正在运行的流程实例
@ -264,6 +267,21 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
@Override @Override
public TableDataInfo<FlowInstanceVo> selectCurrentInstanceList(FlowInstanceBo instanceBo, PageQuery pageQuery) { public TableDataInfo<FlowInstanceVo> selectCurrentInstanceList(FlowInstanceBo instanceBo, PageQuery pageQuery) {
QueryWrapper<FlowInstanceBo> queryWrapper = buildQueryWrapper(instanceBo); QueryWrapper<FlowInstanceBo> queryWrapper = buildQueryWrapper(instanceBo);
if (!"0".equals(instanceBo.getProjectId())){
List<FlowDefinition> flowDefinitions = flowDefinitionMapper.selectList(new LambdaQueryWrapper<FlowDefinition>()
.select(FlowDefinition::getId)
.like(FlowDefinition::getFlowCode, instanceBo.getProjectId()));
List<Long> definitionIds = new ArrayList<>();
if (flowDefinitions != null && !flowDefinitions.isEmpty()) {
flowDefinitions.forEach(flowDefinition -> {
definitionIds.add(flowDefinition.getId());
});
}
if (definitionIds.isEmpty()) {
return null;
}
queryWrapper.in("fi.definition_id",definitionIds);
}
queryWrapper.eq("fi.create_by", LoginHelper.getUserIdStr()); queryWrapper.eq("fi.create_by", LoginHelper.getUserIdStr());
Page<FlowInstanceVo> page = flwInstanceMapper.selectInstanceList(pageQuery.build(), queryWrapper); Page<FlowInstanceVo> page = flwInstanceMapper.selectInstanceList(pageQuery.build(), queryWrapper);
return TableDataInfo.build(page); return TableDataInfo.build(page);

View File

@ -33,10 +33,7 @@ import org.dromara.warm.flow.core.service.*;
import org.dromara.warm.flow.core.utils.ExpressionUtil; import org.dromara.warm.flow.core.utils.ExpressionUtil;
import org.dromara.warm.flow.core.utils.MapUtil; import org.dromara.warm.flow.core.utils.MapUtil;
import org.dromara.warm.flow.orm.entity.*; import org.dromara.warm.flow.orm.entity.*;
import org.dromara.warm.flow.orm.mapper.FlowHisTaskMapper; import org.dromara.warm.flow.orm.mapper.*;
import org.dromara.warm.flow.orm.mapper.FlowInstanceMapper;
import org.dromara.warm.flow.orm.mapper.FlowNodeMapper;
import org.dromara.warm.flow.orm.mapper.FlowTaskMapper;
import org.dromara.workflow.common.ConditionalOnEnable; import org.dromara.workflow.common.ConditionalOnEnable;
import org.dromara.workflow.common.constant.FlowConstant; import org.dromara.workflow.common.constant.FlowConstant;
import org.dromara.workflow.common.enums.TaskAssigneeType; import org.dromara.workflow.common.enums.TaskAssigneeType;
@ -86,6 +83,7 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
private final IFlwTaskAssigneeService flwTaskAssigneeService; private final IFlwTaskAssigneeService flwTaskAssigneeService;
private final IFlwCommonService flwCommonService; private final IFlwCommonService flwCommonService;
private final IFlwNodeExtService flwNodeExtService; private final IFlwNodeExtService flwNodeExtService;
private final FlowDefinitionMapper flowDefinitionMapper;
/** /**
* 启动任务 * 启动任务
@ -273,10 +271,24 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
@Override @Override
public TableDataInfo<FlowTaskVo> pageByTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery) { public TableDataInfo<FlowTaskVo> pageByTaskWait(FlowTaskBo flowTaskBo, PageQuery pageQuery) {
QueryWrapper<FlowTaskBo> queryWrapper = buildQueryWrapper(flowTaskBo); QueryWrapper<FlowTaskBo> queryWrapper = buildQueryWrapper(flowTaskBo);
List<Long> definitionIds = new ArrayList<>();
if (!"0".equals(flowTaskBo.getProjectId())){
List<FlowDefinition> flowDefinitions = flowDefinitionMapper.selectList(new LambdaQueryWrapper<FlowDefinition>()
.select(FlowDefinition::getId)
.like(FlowDefinition::getFlowCode, flowTaskBo.getProjectId()));
if (flowDefinitions != null && !flowDefinitions.isEmpty()) {
flowDefinitions.forEach(flowDefinition -> {
definitionIds.add(flowDefinition.getId());
});
}
if (definitionIds.isEmpty()) {
return null;
}
}
queryWrapper.eq("t.node_type", NodeType.BETWEEN.getKey()); queryWrapper.eq("t.node_type", NodeType.BETWEEN.getKey());
queryWrapper.in("t.processed_by", LoginHelper.getUserIdStr()); queryWrapper.in("t.processed_by", LoginHelper.getUserIdStr());
queryWrapper.in("t.flow_status", BusinessStatusEnum.WAITING.getStatus()); queryWrapper.in("t.flow_status", BusinessStatusEnum.WAITING.getStatus());
Page<FlowTaskVo> page = this.getFlowTaskVoPage(pageQuery, queryWrapper); Page<FlowTaskVo> page = this.getFlowTaskDefinitionIdsVoPage(pageQuery,definitionIds, queryWrapper);
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
@ -289,10 +301,24 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
@Override @Override
public TableDataInfo<FlowHisTaskVo> pageByTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery) { public TableDataInfo<FlowHisTaskVo> pageByTaskFinish(FlowTaskBo flowTaskBo, PageQuery pageQuery) {
QueryWrapper<FlowTaskBo> queryWrapper = buildQueryWrapper(flowTaskBo); QueryWrapper<FlowTaskBo> queryWrapper = buildQueryWrapper(flowTaskBo);
List<Long> definitionIds = new ArrayList<>();
if (!"0".equals(flowTaskBo.getProjectId())){
List<FlowDefinition> flowDefinitions = flowDefinitionMapper.selectList(new LambdaQueryWrapper<FlowDefinition>()
.select(FlowDefinition::getId)
.like(FlowDefinition::getFlowCode, flowTaskBo.getProjectId()));
if (flowDefinitions != null && !flowDefinitions.isEmpty()) {
flowDefinitions.forEach(flowDefinition -> {
definitionIds.add(flowDefinition.getId());
});
}
if (definitionIds.isEmpty()) {
return null;
}
}
queryWrapper.eq("t.node_type", NodeType.BETWEEN.getKey()); queryWrapper.eq("t.node_type", NodeType.BETWEEN.getKey());
queryWrapper.in("t.approver", LoginHelper.getUserIdStr()); queryWrapper.in("t.approver", LoginHelper.getUserIdStr());
queryWrapper.orderByDesc("t.create_time").orderByDesc("t.update_time"); queryWrapper.orderByDesc("t.create_time").orderByDesc("t.update_time");
Page<FlowHisTaskVo> page = flwTaskMapper.getListFinishTask(pageQuery.build(), queryWrapper); Page<FlowHisTaskVo> page = flwTaskMapper.getListFinishDefinitionIdsTask(pageQuery.build(),definitionIds, queryWrapper);
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
@ -326,6 +352,22 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
} }
return page; return page;
} }
private Page<FlowTaskVo> getFlowTaskDefinitionIdsVoPage(PageQuery pageQuery, List<Long> definitionIds, QueryWrapper<FlowTaskBo> queryWrapper) {
Page<FlowTaskVo> page = flwTaskMapper.getListRunTaskDefinitionIds(pageQuery.build(),definitionIds, queryWrapper);
List<FlowTaskVo> records = page.getRecords();
if (CollUtil.isNotEmpty(records)) {
List<Long> taskIds = StreamUtils.toList(records, FlowTaskVo::getId);
Map<Long, List<UserDTO>> listMap = currentTaskAllUser(taskIds);
records.forEach(t -> {
List<UserDTO> userList = listMap.getOrDefault(t.getId(), Collections.emptyList());
if (CollUtil.isNotEmpty(userList)) {
t.setAssigneeIds(StreamUtils.join(userList, e -> String.valueOf(e.getUserId())));
t.setAssigneeNames(StreamUtils.join(userList, UserDTO::getNickName));
}
});
}
return page;
}
/** /**
* 查询已办任务 * 查询已办任务
@ -349,8 +391,22 @@ public class FlwTaskServiceImpl implements IFlwTaskService {
@Override @Override
public TableDataInfo<FlowTaskVo> pageByTaskCopy(FlowTaskBo flowTaskBo, PageQuery pageQuery) { public TableDataInfo<FlowTaskVo> pageByTaskCopy(FlowTaskBo flowTaskBo, PageQuery pageQuery) {
QueryWrapper<FlowTaskBo> queryWrapper = buildQueryWrapper(flowTaskBo); QueryWrapper<FlowTaskBo> queryWrapper = buildQueryWrapper(flowTaskBo);
List<Long> definitionIds = new ArrayList<>();
if (!"0".equals(flowTaskBo.getProjectId())){
List<FlowDefinition> flowDefinitions = flowDefinitionMapper.selectList(new LambdaQueryWrapper<FlowDefinition>()
.select(FlowDefinition::getId)
.like(FlowDefinition::getFlowCode, flowTaskBo.getProjectId()));
if (flowDefinitions != null && !flowDefinitions.isEmpty()) {
flowDefinitions.forEach(flowDefinition -> {
definitionIds.add(flowDefinition.getId());
});
}
if (definitionIds.isEmpty()) {
return null;
}
}
queryWrapper.in("t.processed_by", LoginHelper.getUserIdStr()); queryWrapper.in("t.processed_by", LoginHelper.getUserIdStr());
Page<FlowTaskVo> page = flwTaskMapper.getTaskCopyByPage(pageQuery.build(), queryWrapper); Page<FlowTaskVo> page = flwTaskMapper.getTaskCopyDefinitionIdsByPage(pageQuery.build(),definitionIds, queryWrapper);
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }

View File

@ -42,6 +42,46 @@
) t ) t
${ew.getCustomSqlSegment} ${ew.getCustomSqlSegment}
</select> </select>
<select id="getListRunTaskDefinitionIds" resultMap="FlowTaskResult">
select * from (
select distinct
t.id,
t.node_code,
t.node_name,
t.node_type,
t.definition_id,
t.instance_id,
t.create_time,
t.update_time,
t.tenant_id,
i.business_id,
i.flow_status,
i.create_by,
d.flow_name,
d.flow_code,
d.form_custom,
d.category,
COALESCE(t.form_path, d.form_path) as form_path,
d.version,
uu.processed_by,
uu.type
from flow_task 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 t.del_flag = '0'
and uu.del_flag = '0'
and uu.type in ('1','2','3')
<if test="definitionIds != null and definitionIds.size()>0">
AND t.definition_id in
<foreach collection="definitionIds" item="definitionId" separator="," open="(" close=")">
#{definitionId}
</foreach>
</if>
) t
${ew.getCustomSqlSegment}
</select>
<select id="getListFinishTask" resultMap="FlowHisTaskResult"> <select id="getListFinishTask" resultMap="FlowHisTaskResult">
select * from ( select * from (
@ -112,4 +152,84 @@
) t ) t
${ew.getCustomSqlSegment} ${ew.getCustomSqlSegment}
</select> </select>
<select id="getListFinishDefinitionIdsTask" resultType="org.dromara.workflow.domain.vo.FlowHisTaskVo">
select * from (
select
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 flow_task_status,
a.message,
a.ext,
a.create_time,
a.update_time,
a.tenant_id,
a.form_custom,
a.form_path,
b.flow_status,
b.business_id,
b.create_by,
c.flow_name,
c.flow_code,
c.category,
c.version
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
where a.del_flag ='0'
and b.del_flag = '0'
and c.del_flag = '0'
and a.node_type in ('1','3','4')
<if test="definitionIds != null and definitionIds.size()>0">
AND a.definition_id in
<foreach collection="definitionIds" item="definitionId" separator="," open="(" close=")">
#{definitionId}
</foreach>
</if>
) t
${ew.getCustomSqlSegment}
</select>
<select id="getTaskCopyDefinitionIdsByPage" resultType="org.dromara.workflow.domain.vo.FlowTaskVo">
select * from (
select
b.id,
b.update_time,
c.business_id,
c.flow_status,
c.create_by,
a.processed_by,
a.create_time,
b.form_custom,
b.form_path,
b.node_name,
b.node_code,
d.flow_name,
d.flow_code,
d.category,
d.version
from flow_user a
left join flow_his_task b on a.associated = b.task_id
left join flow_instance c on b.instance_id = c.id
left join flow_definition d on c.definition_id=d.id
where a.type = '4'
and a.del_flag = '0'
and b.del_flag = '0'
and d.del_flag = '0'
<if test="definitionIds != null and definitionIds.size()>0">
AND c.definition_id in
<foreach collection="definitionIds" item="definitionId" separator="," open="(" close=")">
#{definitionId}
</foreach>
</if>
) t
${ew.getCustomSqlSegment}
</select>
</mapper> </mapper>