diff --git a/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/controller/admin/task/BpmProcessInstanceController.java b/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/controller/admin/task/BpmProcessInstanceController.java index 53ea6fa..d55f27a 100644 --- a/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/controller/admin/task/BpmProcessInstanceController.java +++ b/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/controller/admin/task/BpmProcessInstanceController.java @@ -1,5 +1,6 @@ package com.zt.plat.module.bpm.controller.admin.task; +import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.zt.plat.framework.business.core.util.DeptUtil; @@ -11,8 +12,10 @@ import com.zt.plat.module.bpm.controller.admin.task.vo.instance.*; import com.zt.plat.module.bpm.convert.task.BpmProcessInstanceConvert; import com.zt.plat.module.bpm.dal.dataobject.definition.BpmCategoryDO; import com.zt.plat.module.bpm.dal.dataobject.definition.BpmProcessDefinitionInfoDO; +import com.zt.plat.module.bpm.dal.dataobject.task.BpmProcessInstanceCopyDO; import com.zt.plat.module.bpm.service.definition.BpmCategoryService; import com.zt.plat.module.bpm.service.definition.BpmProcessDefinitionService; +import com.zt.plat.module.bpm.service.task.BpmProcessInstanceCopyService; import com.zt.plat.module.bpm.service.task.BpmProcessInstanceService; import com.zt.plat.module.bpm.service.task.BpmTaskService; import com.zt.plat.module.system.api.dept.DeptApi; @@ -24,6 +27,8 @@ import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.validation.Valid; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.list.SetUniqueList; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.repository.ProcessDefinition; import org.flowable.task.api.Task; @@ -31,6 +36,8 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; @@ -53,6 +60,8 @@ public class BpmProcessInstanceController { private BpmProcessDefinitionService processDefinitionService; @Resource private BpmCategoryService categoryService; + @Resource + private BpmProcessInstanceCopyService processInstanceCopyService; @Resource private AdminUserApi adminUserApi; @@ -181,6 +190,32 @@ public class BpmProcessInstanceController { return success(processInstanceService.getApprovalDetail(getLoginUserId(), reqVO)); } + @GetMapping("/copy-list-by-process-instance-id") + @Operation(summary = "根据流程实例编号获取抄送列表") + @Parameter(name = "id", description = "流程实例的编号", required = true) + @PreAuthorize("@ss.hasPermission('bpm:process-instance:query')") + public CommonResult> getCopyListByProcessInstanceId(@RequestParam("processInstanceId") String processInstanceId) { + List copyDOList = processInstanceCopyService.getByProcessInstanceId(processInstanceId); + if (CollectionUtils.isEmpty(copyDOList)) { + return success(new ArrayList<>(0)); + } + List copyVOList = new ArrayList<>(copyDOList.size()); + SetUniqueList userIdList = SetUniqueList.setUniqueList(new ArrayList<>()); + for (BpmProcessInstanceCopyDO copyDO : copyDOList) { + BpmProcessInstanceCopyVO copyVO = new BpmProcessInstanceCopyVO(); + BeanUtil.copyProperties(copyDO, copyVO); + copyVOList.add(copyVO); + userIdList.add(copyDO.getStartUserId()); + userIdList.add(copyDO.getUserId()); + } + Map userMap = adminUserApi.getUserMap(userIdList); + for (BpmProcessInstanceCopyVO copyVO : copyVOList) { + copyVO.setStartUserName(userMap.get(copyVO.getStartUserId()).getNickname()); + copyVO.setUserName(userMap.get(copyVO.getUserId()).getNickname()); + } + return success(copyVOList); + } + @GetMapping("/get-next-approval-nodes") @Operation(summary = "获取下一个执行的流程节点") @PreAuthorize("@ss.hasPermission('bpm:process-instance:query')") diff --git a/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceCopyVO.java b/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceCopyVO.java new file mode 100644 index 0000000..0012c19 --- /dev/null +++ b/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/controller/admin/task/vo/instance/BpmProcessInstanceCopyVO.java @@ -0,0 +1,88 @@ +package com.zt.plat.module.bpm.controller.admin.task.vo.instance; + +import com.zt.plat.framework.mybatis.core.dataobject.BaseDO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 流程抄送 VO + * + * @author kr + * @since 2025-12-31 + */ +@Data +@NoArgsConstructor +public class BpmProcessInstanceCopyVO extends BaseDO { + + /** + * 编号 + */ + private Long id; + + /** + * 发起人 Id + */ + @Schema(description ="发起人 Id") + private Long startUserId; + + /** + * 发起人 姓名 + */ + @Schema(description ="发起人 姓名") + private String startUserName; + /** + * 流程名 + */ + @Schema(description ="流程名") + private String processInstanceName; + /** + * 流程实例的编号 + */ + @Schema(description ="流程实例的编号") + private String processInstanceId; + /** + * 流程实例的流程定义编号 + */ + @Schema(description ="流程实例的流程定义编号") + private String processDefinitionId; + /** + * 流程分类 + */ + @Schema(description ="流程分类") + private String category; + /** + * 流程活动的编号 + */ + @Schema(description ="流程活动的编号") + private String activityId; + /** + * 流程活动的名字 + */ + @Schema(description ="流程活动的名字") + private String activityName; + /** + * 流程活动的编号 + */ + @Schema(description ="流程活动的编号") + private String taskId; + + /** + * 用户编号(被抄送的用户编号) + */ + @Schema(description ="用户编号(被抄送的用户编号)") + private Long userId; + + /** + * 用户姓名(被抄送的用户姓名) + */ + @Schema(description ="用户姓名(被抄送的用户姓名)") + private String userName; + + /** + * 抄送意见 + */ + @Schema(description ="抄送意见") + private String reason; + +} diff --git a/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/dal/mysql/task/BpmProcessInstanceCopyMapper.java b/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/dal/mysql/task/BpmProcessInstanceCopyMapper.java index 61a73c3..b35d217 100644 --- a/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/dal/mysql/task/BpmProcessInstanceCopyMapper.java +++ b/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/dal/mysql/task/BpmProcessInstanceCopyMapper.java @@ -7,6 +7,8 @@ import com.zt.plat.module.bpm.controller.admin.task.vo.instance.BpmProcessInstan import com.zt.plat.module.bpm.dal.dataobject.task.BpmProcessInstanceCopyDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + @Mapper public interface BpmProcessInstanceCopyMapper extends BaseMapperX { @@ -22,4 +24,8 @@ public interface BpmProcessInstanceCopyMapper extends BaseMapperX getByProcessInstanceId(String processInstanceId) { + return selectList(BpmProcessInstanceCopyDO::getProcessInstanceId, processInstanceId); + } + } diff --git a/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/service/task/BpmProcessInstanceCopyService.java b/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/service/task/BpmProcessInstanceCopyService.java index e5f06b6..76350bc 100644 --- a/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/service/task/BpmProcessInstanceCopyService.java +++ b/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/service/task/BpmProcessInstanceCopyService.java @@ -7,6 +7,7 @@ import jakarta.validation.constraints.NotEmpty; import org.flowable.bpmn.model.FlowNode; import java.util.Collection; +import java.util.List; /** * 流程抄送 Service 接口 @@ -57,4 +58,12 @@ public interface BpmProcessInstanceCopyService { */ void deleteProcessInstanceCopy(String processInstanceId); + /** + * 获得流程的抄送列表 + * + * @param processInstanceId 流程实例 ID + * @return 抄送流程列表 + */ + List getByProcessInstanceId(String processInstanceId); + } diff --git a/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/service/task/BpmProcessInstanceCopyServiceImpl.java b/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/service/task/BpmProcessInstanceCopyServiceImpl.java index dd842b9..5fec394 100644 --- a/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/service/task/BpmProcessInstanceCopyServiceImpl.java +++ b/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/service/task/BpmProcessInstanceCopyServiceImpl.java @@ -93,4 +93,9 @@ public class BpmProcessInstanceCopyServiceImpl implements BpmProcessInstanceCopy processInstanceCopyMapper.deleteByProcessInstanceId(processInstanceId); } + @Override + public List getByProcessInstanceId(String processInstanceId) { + return processInstanceCopyMapper.getByProcessInstanceId(processInstanceId); + } + } diff --git a/zt-module-bpm-server/src/main/resources/logback-spring.xml b/zt-module-bpm-server/src/main/resources/logback-spring.xml index 0e55141..51a9a48 100644 --- a/zt-module-bpm-server/src/main/resources/logback-spring.xml +++ b/zt-module-bpm-server/src/main/resources/logback-spring.xml @@ -73,4 +73,8 @@ + + + +