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;