feat(taskflow): 添加作业流程按组别分组功能
- 在 TaskFlowCO、TaskFlowDO 和 TaskFlowE 中新增 groupName 字段用于标识按钮组别 - 修改 getFlowByWorkType 方法返回 TaskFlowGroupCO 类型,实现按组别分组的数据结构 - 更新 TaskFlowController 中的接口注释,明确为"获取作业步骤(按组别分组)" - 实现按 group_name 分组的逻辑处理,将流程步骤按组别进行归类 - 添加 TaskFlowGroupCO 数据传输对象,用于承载分组后的流程数据结构master
parent
597eb47554
commit
cfe6eacc50
|
|
@ -10,6 +10,7 @@ import com.alibaba.cola.dto.Response;
|
||||||
import com.alibaba.cola.dto.SingleResponse;
|
import com.alibaba.cola.dto.SingleResponse;
|
||||||
import com.jjb.saas.framework.auth.model.SSOUser;
|
import com.jjb.saas.framework.auth.model.SSOUser;
|
||||||
import com.jjb.saas.framework.auth.utils.AuthContext;
|
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.TaskFlowInitCO;
|
||||||
import com.zcloud.eightwork.dto.clientobject.TaskWorkInitCO;
|
import com.zcloud.eightwork.dto.clientobject.TaskWorkInitCO;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
|
|
@ -57,9 +58,9 @@ public class TaskFlowController {
|
||||||
return SingleResponse.of(taskFlowService.getFlowInit(qry));
|
return SingleResponse.of(taskFlowService.getFlowInit(qry));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation("获取作业步骤")
|
@ApiOperation("获取作业步骤(按组别分组)")
|
||||||
@GetMapping("/getFlowByWorkType/{workType}")
|
@GetMapping("/getFlowByWorkType/{workType}")
|
||||||
public MultiResponse<TaskFlowCO> getFlowByWorkType(@PathVariable("workType") String workType) {
|
public MultiResponse<TaskFlowGroupCO> getFlowByWorkType(@PathVariable("workType") String workType) {
|
||||||
return MultiResponse.of(taskFlowService.getFlowByWorkType(workType));
|
return MultiResponse.of(taskFlowService.getFlowByWorkType(workType));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import com.zcloud.eightwork.dto.TaskFlowQryCmd;
|
||||||
import com.zcloud.eightwork.dto.TaskWorkQryCmd;
|
import com.zcloud.eightwork.dto.TaskWorkQryCmd;
|
||||||
import com.zcloud.eightwork.dto.clientobject.TaskFlowCO;
|
import com.zcloud.eightwork.dto.clientobject.TaskFlowCO;
|
||||||
import com.zcloud.eightwork.dto.clientobject.TaskFlowInitCO;
|
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.dto.clientobject.TaskWorkInitCO;
|
||||||
import com.zcloud.eightwork.persistence.dataobject.EightworkTaskDO;
|
import com.zcloud.eightwork.persistence.dataobject.EightworkTaskDO;
|
||||||
import com.zcloud.eightwork.persistence.dataobject.TaskFlowDO;
|
import com.zcloud.eightwork.persistence.dataobject.TaskFlowDO;
|
||||||
|
|
@ -20,8 +21,7 @@ import com.zcloud.gbscommon.utils.PageQueryHelper;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.*;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -34,9 +34,9 @@ import java.util.stream.Collectors;
|
||||||
@Component
|
@Component
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class TaskFlowQueryExe {
|
public class TaskFlowQueryExe {
|
||||||
/** 第一步(申请步骤)的步骤ID */
|
/**
|
||||||
private static final Long FIRST_STEP_ID = 1L;
|
* 需要选择签字人的步骤标识
|
||||||
/** 需要选择签字人的步骤标识 */
|
*/
|
||||||
private static final Integer NEED_SELECT_SIGN = 1;
|
private static final Integer NEED_SELECT_SIGN = 1;
|
||||||
|
|
||||||
private final TaskFlowRepository taskFlowRepository;
|
private final TaskFlowRepository taskFlowRepository;
|
||||||
|
|
@ -81,18 +81,43 @@ public class TaskFlowQueryExe {
|
||||||
return taskFlowInitCO;
|
return taskFlowInitCO;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<TaskFlowCO> getFlowByWorkType(String workType) {
|
public List<TaskFlowGroupCO> getFlowByWorkType(String workType) {
|
||||||
List<EightworkTaskDO> taskDOs = eightworkTaskRepository.list(new LambdaQueryWrapper<EightworkTaskDO>().eq(EightworkTaskDO::getWorkType, workType));
|
List<EightworkTaskDO> taskDOs = eightworkTaskRepository.list(new LambdaQueryWrapper<EightworkTaskDO>().eq(EightworkTaskDO::getWorkType, workType));
|
||||||
List<Long> taskIds = taskDOs.stream().map(EightworkTaskDO::getId).collect(Collectors.toList());
|
List<Long> taskIds = taskDOs.stream().map(EightworkTaskDO::getId).collect(Collectors.toList());
|
||||||
|
|
||||||
List<TaskFlowDO> flows = taskFlowRepository.list(new QueryWrapper<TaskFlowDO>()
|
List<TaskFlowDO> flows = taskFlowRepository.list(new QueryWrapper<TaskFlowDO>()
|
||||||
.select("DISTINCT step_id as step_id")
|
.select("DISTINCT step_id as step_id")
|
||||||
.select("step_name")
|
.select("step_name")
|
||||||
|
.select("group_name")
|
||||||
.in("task_id", taskIds)
|
.in("task_id", taskIds)
|
||||||
.ne("step_id", FIRST_STEP_ID)
|
|
||||||
.orderByAsc("step_order"));
|
.orderByAsc("step_order"));
|
||||||
|
|
||||||
return taskFlowCoConvertor.converDOsToCOs(flows);
|
// 转换为 CO
|
||||||
|
List<TaskFlowCO> flowCOs = taskFlowCoConvertor.converDOsToCOs(flows);
|
||||||
|
|
||||||
|
// 按 group_name 分组
|
||||||
|
Map<String, List<TaskFlowCO>> groupedFlows = flowCOs.stream()
|
||||||
|
.collect(Collectors.groupingBy(
|
||||||
|
flow -> flow.getGroupName() != null ? flow.getGroupName() : "默认组"
|
||||||
|
));
|
||||||
|
|
||||||
|
// 收集按 step_order 排序后,每个组第一次出现的顺序
|
||||||
|
LinkedHashSet<String> groupOrder = new LinkedHashSet<>();
|
||||||
|
for (TaskFlowCO flow : flowCOs) {
|
||||||
|
String groupName = flow.getGroupName() != null ? flow.getGroupName() : "默认组";
|
||||||
|
groupOrder.add(groupName);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 按数据库查询顺序转换为 TaskFlowGroupCO 列表
|
||||||
|
List<TaskFlowGroupCO> result = new ArrayList<>();
|
||||||
|
for (String groupName : groupOrder) {
|
||||||
|
TaskFlowGroupCO groupCO = new TaskFlowGroupCO();
|
||||||
|
groupCO.setGroupName(groupName);
|
||||||
|
groupCO.setSteps(groupedFlows.get(groupName));
|
||||||
|
result.add(groupCO);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,12 +10,14 @@ import com.zcloud.eightwork.dto.clientobject.TaskFlowCO;
|
||||||
|
|
||||||
import com.alibaba.cola.dto.PageResponse;
|
import com.alibaba.cola.dto.PageResponse;
|
||||||
import com.alibaba.cola.dto.SingleResponse;
|
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.TaskFlowInitCO;
|
||||||
import com.zcloud.eightwork.dto.clientobject.TaskWorkInitCO;
|
import com.zcloud.eightwork.dto.clientobject.TaskWorkInitCO;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* web-app
|
* web-app
|
||||||
|
|
@ -69,7 +71,7 @@ public class TaskFlowServiceImpl implements TaskFlowServiceI {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<TaskFlowCO> getFlowByWorkType(String workType){
|
public List<TaskFlowGroupCO> getFlowByWorkType(String workType){
|
||||||
return taskFlowQueryExe.getFlowByWorkType(workType);
|
return taskFlowQueryExe.getFlowByWorkType(workType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,9 +5,9 @@ import com.zcloud.eightwork.dto.clientobject.TaskFlowCO;
|
||||||
|
|
||||||
import com.alibaba.cola.dto.PageResponse;
|
import com.alibaba.cola.dto.PageResponse;
|
||||||
import com.alibaba.cola.dto.SingleResponse;
|
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.TaskFlowInitCO;
|
||||||
import com.zcloud.eightwork.dto.clientobject.TaskWorkInitCO;
|
import com.zcloud.eightwork.dto.clientobject.TaskWorkInitCO;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -32,6 +32,6 @@ public interface TaskFlowServiceI {
|
||||||
|
|
||||||
TaskFlowInitCO getFlowInit(TaskFlowQryCmd qry);
|
TaskFlowInitCO getFlowInit(TaskFlowQryCmd qry);
|
||||||
|
|
||||||
List<TaskFlowCO> getFlowByWorkType(String workType);
|
List<TaskFlowGroupCO> getFlowByWorkType(String workType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,9 @@ public class TaskFlowCO extends ClientObject {
|
||||||
//任务ID
|
//任务ID
|
||||||
@ApiModelProperty(value = "任务ID")
|
@ApiModelProperty(value = "任务ID")
|
||||||
private Long taskId;
|
private Long taskId;
|
||||||
|
//按钮组别
|
||||||
|
@ApiModelProperty(value = "按钮组别")
|
||||||
|
private String groupName;
|
||||||
//步骤ID
|
//步骤ID
|
||||||
@ApiModelProperty(value = "步骤ID", name = "stepId", required = true)
|
@ApiModelProperty(value = "步骤ID", name = "stepId", required = true)
|
||||||
private Long stepId;
|
private Long stepId;
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,8 @@ import javax.validation.constraints.NotNull;
|
||||||
public class TaskFlowE extends BaseE {
|
public class TaskFlowE extends BaseE {
|
||||||
//任务ID
|
//任务ID
|
||||||
private Long taskId;
|
private Long taskId;
|
||||||
|
//按钮组别
|
||||||
|
private String groupName;
|
||||||
//步骤ID
|
//步骤ID
|
||||||
private Long stepId;
|
private Long stepId;
|
||||||
//步骤
|
//步骤
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,9 @@ public class TaskFlowDO extends BaseDO {
|
||||||
//任务ID
|
//任务ID
|
||||||
@ApiModelProperty(value = "任务ID")
|
@ApiModelProperty(value = "任务ID")
|
||||||
private Long taskId;
|
private Long taskId;
|
||||||
|
//按钮组别
|
||||||
|
@ApiModelProperty(value = "按钮组别")
|
||||||
|
private String groupName;
|
||||||
//步骤ID
|
//步骤ID
|
||||||
@ApiModelProperty(value = "步骤ID", name = "stepId", required = true)
|
@ApiModelProperty(value = "步骤ID", name = "stepId", required = true)
|
||||||
private Long stepId;
|
private Long stepId;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue