diff --git a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/api/feign/RemoteFlowApiFlowService.java b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/api/feign/RemoteFlowApiFlowService.java index cd9d74856..5ce0bb7d6 100644 --- a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/api/feign/RemoteFlowApiFlowService.java +++ b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-api/src/main/java/com/bsd/pjcloud/flow/task/api/feign/RemoteFlowApiFlowService.java @@ -1,11 +1,15 @@ package com.bsd.pjcloud.flow.task.api.feign; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.common.core.constant.ServiceNameConstants; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.flow.task.dto.ProcessInstanceParamDto; +import com.bsd.pjcloud.flow.task.dto.TaskDto; +import com.bsd.pjcloud.flow.task.dto.TaskQueryParamDto; import com.bsd.pjcloud.flow.task.entity.Process; import com.bsd.pjcloud.flow.task.vo.FormGroupVo; import com.bsd.pjcloud.flow.task.vo.ProcessVO; +import lombok.SneakyThrows; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -48,6 +52,14 @@ public interface RemoteFlowApiFlowService { @PostMapping("/process-instance/startProcessInstance") R startProcessInstance(@RequestBody ProcessInstanceParamDto paramDto); + /** + * 查询当前用户的代办任务 + * + * @param queryParamDto + * @return {@link R } 流程实例ID {@link String} + */ + @PostMapping("/process-instance/queryMineTask") + R> queryMineTask(@RequestBody TaskQueryParamDto queryParamDto); /** * 获取流程数据 diff --git a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/controller/ProcessInstanceController.java b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/controller/ProcessInstanceController.java index f6ff977ee..79606dc35 100644 --- a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/controller/ProcessInstanceController.java +++ b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/controller/ProcessInstanceController.java @@ -1,8 +1,10 @@ package com.bsd.pjcloud.flow.task.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.common.security.annotation.Inner; import com.bsd.pjcloud.flow.task.dto.ProcessInstanceParamDto; +import com.bsd.pjcloud.flow.task.dto.TaskDto; import com.bsd.pjcloud.flow.task.dto.TaskQueryParamDto; import com.bsd.pjcloud.flow.task.service.IProcessInstanceService; import com.bsd.pjcloud.flow.task.vo.NodeFormatParamVo; @@ -51,7 +53,7 @@ public class ProcessInstanceController { */ @SneakyThrows @PostMapping("queryMineTask") - public R queryMineTask(@RequestBody TaskQueryParamDto queryParamDto) { + public R> queryMineTask(@RequestBody TaskQueryParamDto queryParamDto) { return processInstanceService.queryMineTask(queryParamDto); } diff --git a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/IProcessInstanceService.java b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/IProcessInstanceService.java index d7b1e1cd6..3a17d2621 100644 --- a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/IProcessInstanceService.java +++ b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/IProcessInstanceService.java @@ -1,7 +1,9 @@ package com.bsd.pjcloud.flow.task.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.bsd.pjcloud.common.core.util.R; import com.bsd.pjcloud.flow.task.dto.ProcessInstanceParamDto; +import com.bsd.pjcloud.flow.task.dto.TaskDto; import com.bsd.pjcloud.flow.task.dto.TaskQueryParamDto; import com.bsd.pjcloud.flow.task.vo.NodeFormatParamVo; @@ -22,7 +24,7 @@ public interface IProcessInstanceService { * @param taskQueryParamDto taskQueryParamDto * @return */ - R queryMineTask(TaskQueryParamDto taskQueryParamDto); + R> queryMineTask(TaskQueryParamDto taskQueryParamDto); /** * 查询已办任务 diff --git a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/impl/ProcessInstanceServiceImpl.java b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/impl/ProcessInstanceServiceImpl.java index 1f3a08bc8..5bd95a60a 100644 --- a/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/impl/ProcessInstanceServiceImpl.java +++ b/pjcloud-flow/pjcloud-flow-task/pjcloud-flow-task-biz/src/main/java/com/bsd/pjcloud/flow/task/service/impl/ProcessInstanceServiceImpl.java @@ -91,7 +91,7 @@ public class ProcessInstanceServiceImpl implements IProcessInstanceService { * @return R */ @Override - public R queryMineTask(TaskQueryParamDto taskQueryParamDto) { + public R> queryMineTask(TaskQueryParamDto taskQueryParamDto) { taskQueryParamDto.setAssign(SecurityUtils.getUser().getId().toString()); R> r = flowEngineService.queryAssignTask(taskQueryParamDto); diff --git a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/SmErpCgPlanEntity.java b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/SmErpCgPlanEntity.java index 2c0d40399..177b0f961 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/SmErpCgPlanEntity.java +++ b/pjcloud-supermarket/pjcloud-supermarket-api/src/main/java/com/bsd/pjcloud/supermarket/entity/SmErpCgPlanEntity.java @@ -150,6 +150,9 @@ public class SmErpCgPlanEntity extends Model { @TableField(exist = false) public String handlerUserName; + @Schema(description="任务id") + @TableField(exist = false) + public String taskId; } \ No newline at end of file diff --git a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpCgPlanServiceImpl.java b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpCgPlanServiceImpl.java index 50dfe5594..12989a643 100644 --- a/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpCgPlanServiceImpl.java +++ b/pjcloud-supermarket/pjcloud-supermarket-biz/src/main/java/com/bsd/pjcloud/supermarket/service/impl/SmErpCgPlanServiceImpl.java @@ -1,5 +1,6 @@ package com.bsd.pjcloud.supermarket.service.impl; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -12,6 +13,8 @@ import com.bsd.pjcloud.common.security.util.SecurityUtils; import com.bsd.pjcloud.flow.task.api.feign.RemoteFlowApiFlowService; import com.bsd.pjcloud.flow.task.constant.TaskCheckStatusEnum; import com.bsd.pjcloud.flow.task.dto.ProcessInstanceParamDto; +import com.bsd.pjcloud.flow.task.dto.TaskDto; +import com.bsd.pjcloud.flow.task.dto.TaskQueryParamDto; import com.bsd.pjcloud.flow.task.entity.Process; import com.bsd.pjcloud.supermarket.constant.SupermarketFlowConstant; import com.bsd.pjcloud.supermarket.dto.cgplan.ErpCgPlanEditDTO; @@ -229,7 +232,8 @@ public class SmErpCgPlanServiceImpl extends ServiceImpl userMap = remoteUserService.getUserMap(userIds).getData(); - + + List processInstanceIds= records.stream().map(SmErpCgPlanEntity::getProcessInstanceId).filter(Objects::nonNull).collect(Collectors.toList()); //查询出采购计划下的所有item LambdaQueryWrapper smErpCgPlanItemEntityLambdaQueryWrapper = new LambdaQueryWrapper<>(); @@ -251,6 +255,26 @@ public class SmErpCgPlanServiceImpl extends ServiceImpl> pageR = remoteFlowApiFlowService.queryMineTask(taskQueryParamDto); + Page data = pageR.getData(); +// final Map[] processInstanceIdMap = new Map[]{Collections.emptyMap()}; +// if (!ObjectUtil.isEmpty(data)){ +// processInstanceIdMap = data.getRecords().stream().collect(Collectors.toMap(TaskDto::getProcessInstanceId, taskDto -> taskDto)); +// } + +// 直接通过条件判断初始化 final 变量 + final Map processInstanceIdMap = (data != null && !ObjectUtil.isEmpty(data.getRecords())) + ? data.getRecords().stream() + .collect(Collectors.toMap(TaskDto::getProcessInstanceId, taskDto -> taskDto)) + : Collections.emptyMap(); + + //设置经办人名称 // 设置商品名称到主表实体 records.forEach(plan -> { @@ -259,6 +283,12 @@ public class SmErpCgPlanServiceImpl extends ServiceImpl names = planGoodsMap.getOrDefault(plan.getId(), Collections.emptyList()); plan.setProductName(String.join(", ", names)); + if (!processInstanceIdMap.isEmpty()) { + TaskDto taskDto = processInstanceIdMap.get(plan.getProcessInstanceId()); + if (taskDto != null) { + plan.setTaskId(taskDto.getTaskId()); + } + } }); return pageData;