feat(bpm): 实现流程抄送处理功能
- 在控制器中新增处理当前用户待阅信息的接口 - 实现服务层处理抄送信息为已阅的逻辑 - 新增处理已完成请求的数据传输对象 - 修改接收时间戳字段类型为字符串 - 添加相关权限注解及接口文档说明 - 完善异常处理和日志记录机制
This commit is contained in:
@@ -46,6 +46,6 @@ public class ProcessDoneRequestDTO {
|
||||
* 接收时间戳
|
||||
*/
|
||||
@JsonProperty("receivets")
|
||||
private Long receiveTs;
|
||||
private String receiveTs;
|
||||
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ public class BpmProcessInstanceCopyController {
|
||||
private IBpmTaskService bpmTaskService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(tags = "流程管理",summary = "抄送流程")
|
||||
@Operation(tags = "流程管理", summary = "抄送流程")
|
||||
// @PreAuthorize("@ss.hasPermission('bpm:process-instance-cc:create')")
|
||||
public CommonResult<Boolean> createProcessInstanceCopy(@Valid @RequestBody BpmProcessInstanceCopyCreateReqVO createReqVO) {
|
||||
processInstanceCopyService.createProcessInstanceCopy(getLoginUserId(), createReqVO);
|
||||
@@ -55,7 +55,7 @@ public class BpmProcessInstanceCopyController {
|
||||
}
|
||||
|
||||
@GetMapping("/my-page")
|
||||
@Operation(tags = "流程管理",summary = "获得抄送流程分页列表")
|
||||
@Operation(tags = "流程管理", summary = "获得抄送流程分页列表")
|
||||
// @PreAuthorize("@ss.hasPermission('bpm:process-instance-cc:query')")
|
||||
public CommonResult<PageResult<BpmProcessInstanceCopyPageItemRespVO>> getProcessInstanceCopyPage(
|
||||
@Valid BpmProcessInstanceCopyMyPageReqVO pageReqVO) {
|
||||
@@ -74,4 +74,11 @@ public class BpmProcessInstanceCopyController {
|
||||
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,
|
||||
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.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.ProcessDoneRequestDTO;
|
||||
import com.jeelowcode.service.bpm.config.framework.portal.core.dto.ReceiveCCRequestDTO;
|
||||
import com.jeelowcode.service.system.api.IApiAdminUserApi;
|
||||
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.util.json.JsonUtils.toJsonString;
|
||||
import static com.jeelowcode.tool.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
|
||||
|
||||
/**
|
||||
* 流程抄送 Service 实现类
|
||||
@@ -189,4 +191,65 @@ public class BpmProcessInstanceCopyServiceImpl implements IBpmProcessInstanceCop
|
||||
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