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.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<TaskFlowCO> getFlowByWorkType(@PathVariable("workType") String workType) {
|
||||
public MultiResponse<TaskFlowGroupCO> getFlowByWorkType(@PathVariable("workType") String 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.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<TaskFlowCO> getFlowByWorkType(String workType) {
|
||||
public List<TaskFlowGroupCO> getFlowByWorkType(String 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<TaskFlowDO> flows = taskFlowRepository.list(new QueryWrapper<TaskFlowDO>()
|
||||
.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<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.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<TaskFlowCO> getFlowByWorkType(String workType){
|
||||
public List<TaskFlowGroupCO> getFlowByWorkType(String 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.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<TaskFlowCO> getFlowByWorkType(String workType);
|
||||
List<TaskFlowGroupCO> getFlowByWorkType(String workType);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
//步骤
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue