fix:修复采购补货的taskId回显

This commit is contained in:
zjf committed 2025-03-27 18:06:22 +08:00
1 parent a8e0c26650
commit 895b8b95c6
6 files changed
+53 -4

No files matched your search

@@ -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<String> startProcessInstance(@RequestBody ProcessInstanceParamDto paramDto);
/**
* 查询当前用户的代办任务
*
* @param queryParamDto
* @return {@link R } 流程实例ID {@link String}
*/
@PostMapping("/process-instance/queryMineTask")
R<Page<TaskDto>> queryMineTask(@RequestBody TaskQueryParamDto queryParamDto);
/**
* 获取流程数据
@@ -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<Page<TaskDto>> queryMineTask(@RequestBody TaskQueryParamDto queryParamDto) {
return processInstanceService.queryMineTask(queryParamDto);
}
@@ -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<Page<TaskDto>> queryMineTask(TaskQueryParamDto taskQueryParamDto);
/**
* 查询已办任务
@@ -91,7 +91,7 @@ public class ProcessInstanceServiceImpl implements IProcessInstanceService {
* @return R
*/
@Override
public R queryMineTask(TaskQueryParamDto taskQueryParamDto) {
public R<Page<TaskDto>> queryMineTask(TaskQueryParamDto taskQueryParamDto) {
taskQueryParamDto.setAssign(SecurityUtils.getUser().getId().toString());
R<Page<TaskDto>> r = flowEngineService.queryAssignTask(taskQueryParamDto);
@@ -150,6 +150,9 @@ public class SmErpCgPlanEntity extends Model<SmErpCgPlanEntity> {
@TableField(exist = false)
public String handlerUserName;
@Schema(description="任务id")
@TableField(exist = false)
public String taskId;
}
@@ -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<SmErpCgPlanMapper, SmErp
.collect(Collectors.toSet());
//请求得到所有的userIds
Map<Long, SysUser> userMap = remoteUserService.getUserMap(userIds).getData();
List<String> processInstanceIds= records.stream().map(SmErpCgPlanEntity::getProcessInstanceId).filter(Objects::nonNull).collect(Collectors.toList());
//查询出采购计划下的所有item
LambdaQueryWrapper<SmErpCgPlanItemEntity> smErpCgPlanItemEntityLambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -251,6 +255,26 @@ public class SmErpCgPlanServiceImpl extends ServiceImpl<SmErpCgPlanMapper, SmErp
Collectors.toList()
)
));
//查询代办任务的task
TaskQueryParamDto taskQueryParamDto = new TaskQueryParamDto();
taskQueryParamDto.setProcessInstanceIds(processInstanceIds);
taskQueryParamDto.setCurrent(1);
taskQueryParamDto.setSize(processInstanceIds.size());
R<Page<TaskDto>> pageR = remoteFlowApiFlowService.queryMineTask(taskQueryParamDto);
Page<TaskDto> data = pageR.getData();
// final Map<String, TaskDto>[] processInstanceIdMap = new Map[]{Collections.emptyMap()};
// if (!ObjectUtil.isEmpty(data)){
// processInstanceIdMap = data.getRecords().stream().collect(Collectors.toMap(TaskDto::getProcessInstanceId, taskDto -> taskDto));
// }
// 直接通过条件判断初始化 final 变量
final Map<String, TaskDto> 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<SmErpCgPlanMapper, SmErp
plan.setHandlerUserName(sysUser.getUsername());
List<String> 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;