From cfe6eacc50c4f9b5895e4d761735e8b937c15afb Mon Sep 17 00:00:00 2001 From: fangjiakai <450850793@qq.com> Date: Fri, 13 Mar 2026 15:54:45 +0800 Subject: [PATCH] =?UTF-8?q?feat(taskflow):=20=E6=B7=BB=E5=8A=A0=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A=E6=B5=81=E7=A8=8B=E6=8C=89=E7=BB=84=E5=88=AB=E5=88=86?= =?UTF-8?q?=E7=BB=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 TaskFlowCO、TaskFlowDO 和 TaskFlowE 中新增 groupName 字段用于标识按钮组别 - 修改 getFlowByWorkType 方法返回 TaskFlowGroupCO 类型,实现按组别分组的数据结构 - 更新 TaskFlowController 中的接口注释,明确为"获取作业步骤(按组别分组)" - 实现按 group_name 分组的逻辑处理,将流程步骤按组别进行归类 - 添加 TaskFlowGroupCO 数据传输对象,用于承载分组后的流程数据结构 --- .../eightwork/web/TaskFlowController.java | 5 ++- .../command/query/TaskFlowQueryExe.java | 41 +++++++++++++++---- .../service/TaskFlowServiceImpl.java | 4 +- .../eightwork/api/TaskFlowServiceI.java | 4 +- .../dto/clientobject/TaskFlowCO.java | 3 ++ .../eightwork/domain/model/TaskFlowE.java | 2 + .../persistence/dataobject/TaskFlowDO.java | 3 ++ 7 files changed, 49 insertions(+), 13 deletions(-) diff --git a/web-adapter/src/main/java/com/zcloud/eightwork/web/TaskFlowController.java b/web-adapter/src/main/java/com/zcloud/eightwork/web/TaskFlowController.java index 6517d5d..7c97251 100644 --- a/web-adapter/src/main/java/com/zcloud/eightwork/web/TaskFlowController.java +++ b/web-adapter/src/main/java/com/zcloud/eightwork/web/TaskFlowController.java @@ -10,6 +10,7 @@ import com.alibaba.cola.dto.Response; import com.alibaba.cola.dto.SingleResponse; import com.jjb.saas.framework.auth.model.SSOUser; import com.jjb.saas.framework.auth.utils.AuthContext; +import com.zcloud.eightwork.dto.clientobject.TaskFlowGroupCO; import com.zcloud.eightwork.dto.clientobject.TaskFlowInitCO; import com.zcloud.eightwork.dto.clientobject.TaskWorkInitCO; import io.swagger.annotations.Api; @@ -57,9 +58,9 @@ public class TaskFlowController { return SingleResponse.of(taskFlowService.getFlowInit(qry)); } - @ApiOperation("获取作业步骤") + @ApiOperation("获取作业步骤(按组别分组)") @GetMapping("/getFlowByWorkType/{workType}") - public MultiResponse getFlowByWorkType(@PathVariable("workType") String workType) { + public MultiResponse getFlowByWorkType(@PathVariable("workType") String workType) { return MultiResponse.of(taskFlowService.getFlowByWorkType(workType)); } diff --git a/web-app/src/main/java/com/zcloud/eightwork/command/query/TaskFlowQueryExe.java b/web-app/src/main/java/com/zcloud/eightwork/command/query/TaskFlowQueryExe.java index 674713d..2ce82ca 100644 --- a/web-app/src/main/java/com/zcloud/eightwork/command/query/TaskFlowQueryExe.java +++ b/web-app/src/main/java/com/zcloud/eightwork/command/query/TaskFlowQueryExe.java @@ -11,6 +11,7 @@ import com.zcloud.eightwork.dto.TaskFlowQryCmd; import com.zcloud.eightwork.dto.TaskWorkQryCmd; import com.zcloud.eightwork.dto.clientobject.TaskFlowCO; import com.zcloud.eightwork.dto.clientobject.TaskFlowInitCO; +import com.zcloud.eightwork.dto.clientobject.TaskFlowGroupCO; import com.zcloud.eightwork.dto.clientobject.TaskWorkInitCO; import com.zcloud.eightwork.persistence.dataobject.EightworkTaskDO; import com.zcloud.eightwork.persistence.dataobject.TaskFlowDO; @@ -20,8 +21,7 @@ import com.zcloud.gbscommon.utils.PageQueryHelper; import lombok.AllArgsConstructor; import org.springframework.stereotype.Component; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @@ -34,9 +34,9 @@ import java.util.stream.Collectors; @Component @AllArgsConstructor public class TaskFlowQueryExe { - /** 第一步(申请步骤)的步骤ID */ - private static final Long FIRST_STEP_ID = 1L; - /** 需要选择签字人的步骤标识 */ + /** + * 需要选择签字人的步骤标识 + */ private static final Integer NEED_SELECT_SIGN = 1; private final TaskFlowRepository taskFlowRepository; @@ -81,18 +81,43 @@ public class TaskFlowQueryExe { return taskFlowInitCO; } - public List getFlowByWorkType(String workType) { + public List getFlowByWorkType(String workType) { List taskDOs = eightworkTaskRepository.list(new LambdaQueryWrapper().eq(EightworkTaskDO::getWorkType, workType)); List taskIds = taskDOs.stream().map(EightworkTaskDO::getId).collect(Collectors.toList()); List flows = taskFlowRepository.list(new QueryWrapper() .select("DISTINCT step_id as step_id") .select("step_name") + .select("group_name") .in("task_id", taskIds) - .ne("step_id", FIRST_STEP_ID) .orderByAsc("step_order")); - return taskFlowCoConvertor.converDOsToCOs(flows); + // 转换为 CO + List flowCOs = taskFlowCoConvertor.converDOsToCOs(flows); + + // 按 group_name 分组 + Map> groupedFlows = flowCOs.stream() + .collect(Collectors.groupingBy( + flow -> flow.getGroupName() != null ? flow.getGroupName() : "默认组" + )); + + // 收集按 step_order 排序后,每个组第一次出现的顺序 + LinkedHashSet groupOrder = new LinkedHashSet<>(); + for (TaskFlowCO flow : flowCOs) { + String groupName = flow.getGroupName() != null ? flow.getGroupName() : "默认组"; + groupOrder.add(groupName); + } + + // 按数据库查询顺序转换为 TaskFlowGroupCO 列表 + List result = new ArrayList<>(); + for (String groupName : groupOrder) { + TaskFlowGroupCO groupCO = new TaskFlowGroupCO(); + groupCO.setGroupName(groupName); + groupCO.setSteps(groupedFlows.get(groupName)); + result.add(groupCO); + } + + return result; } } diff --git a/web-app/src/main/java/com/zcloud/eightwork/service/TaskFlowServiceImpl.java b/web-app/src/main/java/com/zcloud/eightwork/service/TaskFlowServiceImpl.java index 7534896..e35a0a2 100644 --- a/web-app/src/main/java/com/zcloud/eightwork/service/TaskFlowServiceImpl.java +++ b/web-app/src/main/java/com/zcloud/eightwork/service/TaskFlowServiceImpl.java @@ -10,12 +10,14 @@ import com.zcloud.eightwork.dto.clientobject.TaskFlowCO; import com.alibaba.cola.dto.PageResponse; import com.alibaba.cola.dto.SingleResponse; +import com.zcloud.eightwork.dto.clientobject.TaskFlowGroupCO; import com.zcloud.eightwork.dto.clientobject.TaskFlowInitCO; import com.zcloud.eightwork.dto.clientobject.TaskWorkInitCO; import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; /** * web-app @@ -69,7 +71,7 @@ public class TaskFlowServiceImpl implements TaskFlowServiceI { } @Override - public List getFlowByWorkType(String workType){ + public List getFlowByWorkType(String workType){ return taskFlowQueryExe.getFlowByWorkType(workType); } } diff --git a/web-client/src/main/java/com/zcloud/eightwork/api/TaskFlowServiceI.java b/web-client/src/main/java/com/zcloud/eightwork/api/TaskFlowServiceI.java index 7064ba9..91b7167 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/api/TaskFlowServiceI.java +++ b/web-client/src/main/java/com/zcloud/eightwork/api/TaskFlowServiceI.java @@ -5,9 +5,9 @@ import com.zcloud.eightwork.dto.clientobject.TaskFlowCO; import com.alibaba.cola.dto.PageResponse; import com.alibaba.cola.dto.SingleResponse; +import com.zcloud.eightwork.dto.clientobject.TaskFlowGroupCO; import com.zcloud.eightwork.dto.clientobject.TaskFlowInitCO; import com.zcloud.eightwork.dto.clientobject.TaskWorkInitCO; - import java.util.List; /** @@ -32,6 +32,6 @@ public interface TaskFlowServiceI { TaskFlowInitCO getFlowInit(TaskFlowQryCmd qry); - List getFlowByWorkType(String workType); + List getFlowByWorkType(String workType); } diff --git a/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/TaskFlowCO.java b/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/TaskFlowCO.java index cc4f84a..8dce75f 100644 --- a/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/TaskFlowCO.java +++ b/web-client/src/main/java/com/zcloud/eightwork/dto/clientobject/TaskFlowCO.java @@ -18,6 +18,9 @@ public class TaskFlowCO extends ClientObject { //任务ID @ApiModelProperty(value = "任务ID") private Long taskId; + //按钮组别 + @ApiModelProperty(value = "按钮组别") + private String groupName; //步骤ID @ApiModelProperty(value = "步骤ID", name = "stepId", required = true) private Long stepId; diff --git a/web-domain/src/main/java/com/zcloud/eightwork/domain/model/TaskFlowE.java b/web-domain/src/main/java/com/zcloud/eightwork/domain/model/TaskFlowE.java index de9335a..3820628 100644 --- a/web-domain/src/main/java/com/zcloud/eightwork/domain/model/TaskFlowE.java +++ b/web-domain/src/main/java/com/zcloud/eightwork/domain/model/TaskFlowE.java @@ -15,6 +15,8 @@ import javax.validation.constraints.NotNull; public class TaskFlowE extends BaseE { //任务ID private Long taskId; + //按钮组别 + private String groupName; //步骤ID private Long stepId; //步骤 diff --git a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskFlowDO.java b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskFlowDO.java index b2c9887..497cc3c 100644 --- a/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskFlowDO.java +++ b/web-infrastructure/src/main/java/com/zcloud/eightwork/persistence/dataobject/TaskFlowDO.java @@ -23,6 +23,9 @@ public class TaskFlowDO extends BaseDO { //任务ID @ApiModelProperty(value = "任务ID") private Long taskId; + //按钮组别 + @ApiModelProperty(value = "按钮组别") + private String groupName; //步骤ID @ApiModelProperty(value = "步骤ID", name = "stepId", required = true) private Long stepId;