feat(bpm): 实现流程抄送处理功能
- 在控制器中新增处理当前用户待阅信息的接口 - 实现服务层处理抄送信息为已阅的逻辑 - 新增处理已完成请求的数据传输对象 - 修改接收时间戳字段类型为字符串 - 添加相关权限注解及接口文档说明 - 完善异常处理和日志记录机制
This commit is contained in:
@@ -46,6 +46,6 @@ public class ProcessDoneRequestDTO {
|
|||||||
* 接收时间戳
|
* 接收时间戳
|
||||||
*/
|
*/
|
||||||
@JsonProperty("receivets")
|
@JsonProperty("receivets")
|
||||||
private Long receiveTs;
|
private String receiveTs;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ public class BpmProcessInstanceCopyController {
|
|||||||
private IBpmTaskService bpmTaskService;
|
private IBpmTaskService bpmTaskService;
|
||||||
|
|
||||||
@PostMapping("/create")
|
@PostMapping("/create")
|
||||||
@Operation(tags = "流程管理",summary = "抄送流程")
|
@Operation(tags = "流程管理", summary = "抄送流程")
|
||||||
// @PreAuthorize("@ss.hasPermission('bpm:process-instance-cc:create')")
|
// @PreAuthorize("@ss.hasPermission('bpm:process-instance-cc:create')")
|
||||||
public CommonResult<Boolean> createProcessInstanceCopy(@Valid @RequestBody BpmProcessInstanceCopyCreateReqVO createReqVO) {
|
public CommonResult<Boolean> createProcessInstanceCopy(@Valid @RequestBody BpmProcessInstanceCopyCreateReqVO createReqVO) {
|
||||||
processInstanceCopyService.createProcessInstanceCopy(getLoginUserId(), createReqVO);
|
processInstanceCopyService.createProcessInstanceCopy(getLoginUserId(), createReqVO);
|
||||||
@@ -55,7 +55,7 @@ public class BpmProcessInstanceCopyController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/my-page")
|
@GetMapping("/my-page")
|
||||||
@Operation(tags = "流程管理",summary = "获得抄送流程分页列表")
|
@Operation(tags = "流程管理", summary = "获得抄送流程分页列表")
|
||||||
// @PreAuthorize("@ss.hasPermission('bpm:process-instance-cc:query')")
|
// @PreAuthorize("@ss.hasPermission('bpm:process-instance-cc:query')")
|
||||||
public CommonResult<PageResult<BpmProcessInstanceCopyPageItemRespVO>> getProcessInstanceCopyPage(
|
public CommonResult<PageResult<BpmProcessInstanceCopyPageItemRespVO>> getProcessInstanceCopyPage(
|
||||||
@Valid BpmProcessInstanceCopyMyPageReqVO pageReqVO) {
|
@Valid BpmProcessInstanceCopyMyPageReqVO pageReqVO) {
|
||||||
@@ -74,4 +74,11 @@ public class BpmProcessInstanceCopyController {
|
|||||||
return success(BpmProcessInstanceCopyConvert.INSTANCE.convertPage(pageResult, taskNameMap, processNameMap, userMap));
|
return success(BpmProcessInstanceCopyConvert.INSTANCE.convertPage(pageResult, taskNameMap, processNameMap, userMap));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
@Operation(tags = "流程管理", summary = "处理当前用户待阅信息")
|
||||||
|
@PostMapping("/process-current-user-copy/{processInstanceId}")
|
||||||
|
public CommonResult<Boolean> processCurrentUserCopyInfo(@PathVariable String processInstanceId) {
|
||||||
|
boolean result = processInstanceCopyService.processCurrentUserCopyInfo(processInstanceId);
|
||||||
|
return success(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -37,4 +37,12 @@ public interface IBpmProcessInstanceCopyService {
|
|||||||
*/
|
*/
|
||||||
PageResult<BpmProcessInstanceCopyDO> getMyProcessInstanceCopyPage(Long userId,
|
PageResult<BpmProcessInstanceCopyDO> getMyProcessInstanceCopyPage(Long userId,
|
||||||
BpmProcessInstanceCopyMyPageReqVO pageReqVO);
|
BpmProcessInstanceCopyMyPageReqVO pageReqVO);
|
||||||
}
|
|
||||||
|
/**
|
||||||
|
* 处理当前用户待阅信息
|
||||||
|
*
|
||||||
|
* @param processInstanceId 流程实例ID
|
||||||
|
* @return 处理结果
|
||||||
|
*/
|
||||||
|
boolean processCurrentUserCopyInfo(String processInstanceId);
|
||||||
|
}
|
||||||
@@ -9,6 +9,7 @@ import cn.hutool.core.util.StrUtil;
|
|||||||
import com.jeelowcode.framework.utils.tool.spring.SpringUtils;
|
import com.jeelowcode.framework.utils.tool.spring.SpringUtils;
|
||||||
import com.jeelowcode.service.bpm.config.framework.portal.core.PortalRequest;
|
import com.jeelowcode.service.bpm.config.framework.portal.core.PortalRequest;
|
||||||
import com.jeelowcode.service.bpm.config.framework.portal.core.dto.PortalTodoResponseDTO;
|
import com.jeelowcode.service.bpm.config.framework.portal.core.dto.PortalTodoResponseDTO;
|
||||||
|
import com.jeelowcode.service.bpm.config.framework.portal.core.dto.ProcessDoneRequestDTO;
|
||||||
import com.jeelowcode.service.bpm.config.framework.portal.core.dto.ReceiveCCRequestDTO;
|
import com.jeelowcode.service.bpm.config.framework.portal.core.dto.ReceiveCCRequestDTO;
|
||||||
import com.jeelowcode.service.system.api.IApiAdminUserApi;
|
import com.jeelowcode.service.system.api.IApiAdminUserApi;
|
||||||
import com.jeelowcode.service.system.dto.AdminUserRespDTO;
|
import com.jeelowcode.service.system.dto.AdminUserRespDTO;
|
||||||
@@ -45,6 +46,7 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
import static com.jeelowcode.tool.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static com.jeelowcode.tool.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static com.jeelowcode.tool.framework.common.util.json.JsonUtils.toJsonString;
|
import static com.jeelowcode.tool.framework.common.util.json.JsonUtils.toJsonString;
|
||||||
|
import static com.jeelowcode.tool.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 流程抄送 Service 实现类
|
* 流程抄送 Service 实现类
|
||||||
@@ -189,4 +191,65 @@ public class BpmProcessInstanceCopyServiceImpl implements IBpmProcessInstanceCop
|
|||||||
return processInstanceCopyMapper.selectPage(userId, pageReqVO);
|
return processInstanceCopyMapper.selectPage(userId, pageReqVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
@Override
|
||||||
|
public boolean processCurrentUserCopyInfo(String processInstanceId) {
|
||||||
|
// 获取当前登录用户ID
|
||||||
|
Long currentUserId = getLoginUserId();
|
||||||
|
|
||||||
|
// 查询当前用户是否有该流程实例的抄送信息
|
||||||
|
List<BpmProcessInstanceCopyDO> copyList = processInstanceCopyMapper.selectList(
|
||||||
|
new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<BpmProcessInstanceCopyDO>()
|
||||||
|
.eq(BpmProcessInstanceCopyDO::getProcessInstanceId, processInstanceId)
|
||||||
|
.eq(BpmProcessInstanceCopyDO::getUserId, currentUserId)
|
||||||
|
);
|
||||||
|
|
||||||
|
// 如果没有查到抄送信息,则直接返回
|
||||||
|
if (CollUtil.isEmpty(copyList)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取PortalRequest实例
|
||||||
|
PortalRequest portalRequest = SpringUtils.getBean(PortalRequest.class);
|
||||||
|
|
||||||
|
// 如果没有配置待办平台,则结束执行
|
||||||
|
if (!Objects.requireNonNull(portalRequest).available()) {
|
||||||
|
log.warn("[processCurrentUserCopyInfo][PortalRequest不可用]");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 遍历所有抄送信息,调用PortalRequest处理待办为已办接口
|
||||||
|
for (BpmProcessInstanceCopyDO copy : copyList) {
|
||||||
|
// 获取流程实例信息
|
||||||
|
ProcessInstance processInstance = bpmProcessInstanceService.getProcessInstance(processInstanceId);
|
||||||
|
if (processInstance == null) {
|
||||||
|
log.warn("[processCurrentUserCopyInfo][流程实例不存在 processInstanceId({})]", processInstanceId);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取用户信息
|
||||||
|
AdminUserRespDTO receiverUser = apiAdminUserApi.getUser(copy.getUserId());
|
||||||
|
AdminUserRespDTO startUser = apiAdminUserApi.getUser(copy.getStartUserId());
|
||||||
|
|
||||||
|
// 构建处理已完成请求参数
|
||||||
|
ProcessDoneRequestDTO requestDTO = new ProcessDoneRequestDTO()
|
||||||
|
.setFlowId(copy.getProcessInstanceId())
|
||||||
|
.setRequestName(copy.getProcessInstanceName() + "-" + startUser.getNickname() + "-" + DateUtil.formatDateTime(processInstance.getStartTime()))
|
||||||
|
.setWorkflowName(copy.getProcessInstanceName())
|
||||||
|
.setNodeName(copy.getTaskName())
|
||||||
|
.setReceiver(receiverUser.getUsername())
|
||||||
|
.setReceiveTs(String.valueOf(System.currentTimeMillis()));
|
||||||
|
|
||||||
|
// 调用处理待办为已办接口
|
||||||
|
PortalTodoResponseDTO response = portalRequest.processDoneRequest(requestDTO);
|
||||||
|
log.info("[processCurrentUserCopyInfo][处理待阅为已阅成功 response({})]", toJsonString(response));
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("[processCurrentUserCopyInfo][处理待阅信息失败]", e);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user