打印了JENKINS节点日志
This commit is contained in:
parent
d9f084908a
commit
d9d9f2968d
@ -6,6 +6,7 @@ import com.qqchen.deploy.backend.framework.controller.BaseController;
|
|||||||
import com.qqchen.deploy.backend.system.model.MenuDTO;
|
import com.qqchen.deploy.backend.system.model.MenuDTO;
|
||||||
import com.qqchen.deploy.backend.system.model.query.MenuQuery;
|
import com.qqchen.deploy.backend.system.model.query.MenuQuery;
|
||||||
import com.qqchen.deploy.backend.system.model.response.MenuResponse;
|
import com.qqchen.deploy.backend.system.model.response.MenuResponse;
|
||||||
|
import com.qqchen.deploy.backend.system.model.response.MenuPermissionTreeResponse;
|
||||||
import com.qqchen.deploy.backend.system.service.IMenuService;
|
import com.qqchen.deploy.backend.system.service.IMenuService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
@ -42,6 +43,12 @@ public class MenuApiController extends BaseController<Menu, MenuDTO, Long, MenuQ
|
|||||||
return Response.success(menuService.getMenuTree());
|
return Response.success(menuService.getMenuTree());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Operation(summary = "获取菜单权限树")
|
||||||
|
@GetMapping("/permission-tree")
|
||||||
|
public Response<List<MenuPermissionTreeResponse>> getPermissionTree() {
|
||||||
|
return Response.success(menuService.getPermissionTree());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void exportData(HttpServletResponse response, List<MenuDTO> data) {
|
protected void exportData(HttpServletResponse response, List<MenuDTO> data) {
|
||||||
|
|
||||||
|
|||||||
@ -6,8 +6,6 @@ import com.qqchen.deploy.backend.framework.controller.BaseController;
|
|||||||
import com.qqchen.deploy.backend.system.model.PermissionDTO;
|
import com.qqchen.deploy.backend.system.model.PermissionDTO;
|
||||||
import com.qqchen.deploy.backend.system.model.RoleDTO;
|
import com.qqchen.deploy.backend.system.model.RoleDTO;
|
||||||
import com.qqchen.deploy.backend.system.model.query.RoleQuery;
|
import com.qqchen.deploy.backend.system.model.query.RoleQuery;
|
||||||
import com.qqchen.deploy.backend.system.model.response.MenuPermissionTreeResponse;
|
|
||||||
import com.qqchen.deploy.backend.system.service.IMenuService;
|
|
||||||
import com.qqchen.deploy.backend.system.service.IRoleService;
|
import com.qqchen.deploy.backend.system.service.IRoleService;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
@ -27,9 +25,6 @@ public class RoleApiController extends BaseController<Role, RoleDTO, Long, RoleQ
|
|||||||
@Resource
|
@Resource
|
||||||
private IRoleService roleService;
|
private IRoleService roleService;
|
||||||
|
|
||||||
@Resource
|
|
||||||
private IMenuService menuService;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Response<RoleDTO> create(RoleDTO dto) {
|
public Response<RoleDTO> create(RoleDTO dto) {
|
||||||
return super.create(dto);
|
return super.create(dto);
|
||||||
@ -70,12 +65,6 @@ public class RoleApiController extends BaseController<Role, RoleDTO, Long, RoleQ
|
|||||||
return super.batchProcess(dtos);
|
return super.batchProcess(dtos);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Operation(summary = "获取菜单权限树")
|
|
||||||
@GetMapping("/permission-tree")
|
|
||||||
public Response<List<MenuPermissionTreeResponse>> getPermissionTree() {
|
|
||||||
return Response.success(menuService.getPermissionTree());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Operation(summary = "分配标签")
|
@Operation(summary = "分配标签")
|
||||||
@PostMapping("/{id}/tags")
|
@PostMapping("/{id}/tags")
|
||||||
public Response<Void> assignTags(@PathVariable Long id, @RequestBody List<Long> tagIds) {
|
public Response<Void> assignTags(@PathVariable Long id, @RequestBody List<Long> tagIds) {
|
||||||
@ -83,16 +72,6 @@ public class RoleApiController extends BaseController<Role, RoleDTO, Long, RoleQ
|
|||||||
return Response.success();
|
return Response.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Operation(summary = "分配角色")
|
|
||||||
@PostMapping("/{userId}/assignRoles")
|
|
||||||
public Response<Void> assignRoles(
|
|
||||||
@Parameter(description = "用户ID", required = true) @PathVariable Long userId,
|
|
||||||
@Parameter(description = "角色ID列表", required = true) @RequestBody List<Long> roleIds
|
|
||||||
) {
|
|
||||||
roleService.assignRoles(userId, roleIds);
|
|
||||||
return Response.success();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Operation(summary = "获取角色权限")
|
@Operation(summary = "获取角色权限")
|
||||||
@GetMapping("/{id}/permissions")
|
@GetMapping("/{id}/permissions")
|
||||||
public Response<List<PermissionDTO>> getRolePermissions(
|
public Response<List<PermissionDTO>> getRolePermissions(
|
||||||
|
|||||||
@ -97,6 +97,13 @@ public class UserApiController extends BaseController<User, UserDTO, Long, UserQ
|
|||||||
return Response.success();
|
return Response.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/{id}/roles")
|
||||||
|
@Operation(summary = "分配用户角色")
|
||||||
|
public Response<Void> assignRoles(@PathVariable Long id, @RequestBody List<Long> roleIds) {
|
||||||
|
userService.assignRoles(id, roleIds);
|
||||||
|
return Response.success();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void exportData(HttpServletResponse response, List<UserDTO> data) {
|
protected void exportData(HttpServletResponse response, List<UserDTO> data) {
|
||||||
response.setContentType("application/vnd.ms-excel");
|
response.setContentType("application/vnd.ms-excel");
|
||||||
|
|||||||
@ -30,11 +30,6 @@ public interface IRoleService extends IBaseService<Role, RoleDTO, RoleQuery, Lon
|
|||||||
*/
|
*/
|
||||||
void assignTags(Long roleId, List<Long> tagIds);
|
void assignTags(Long roleId, List<Long> tagIds);
|
||||||
|
|
||||||
/**
|
|
||||||
* 分配角色
|
|
||||||
*/
|
|
||||||
void assignRoles(Long userId, List<Long> roleIds);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取角色的权限列表
|
* 获取角色的权限列表
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -52,6 +52,14 @@ public interface IUserService extends IBaseService<User, UserDTO, UserQuery, Lon
|
|||||||
@Transactional(readOnly = false)
|
@Transactional(readOnly = false)
|
||||||
void assignDepartment(Long userId, Long departmentId);
|
void assignDepartment(Long userId, Long departmentId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分配用户角色
|
||||||
|
* @param userId 用户ID
|
||||||
|
* @param roleIds 角色ID列表
|
||||||
|
*/
|
||||||
|
@Transactional(readOnly = false)
|
||||||
|
void assignRoles(Long userId, List<Long> roleIds);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取用户角色代码列表
|
* 获取用户角色代码列表
|
||||||
* @param userId 用户ID
|
* @param userId 用户ID
|
||||||
|
|||||||
@ -6,7 +6,6 @@ import com.qqchen.deploy.backend.system.entity.Menu;
|
|||||||
import com.qqchen.deploy.backend.system.entity.Permission;
|
import com.qqchen.deploy.backend.system.entity.Permission;
|
||||||
import com.qqchen.deploy.backend.system.entity.Role;
|
import com.qqchen.deploy.backend.system.entity.Role;
|
||||||
import com.qqchen.deploy.backend.system.entity.RoleTag;
|
import com.qqchen.deploy.backend.system.entity.RoleTag;
|
||||||
import com.qqchen.deploy.backend.system.entity.User;
|
|
||||||
import com.qqchen.deploy.backend.framework.enums.ResponseCode;
|
import com.qqchen.deploy.backend.framework.enums.ResponseCode;
|
||||||
import com.qqchen.deploy.backend.framework.exception.BusinessException;
|
import com.qqchen.deploy.backend.framework.exception.BusinessException;
|
||||||
import com.qqchen.deploy.backend.framework.exception.UniqueConstraintException;
|
import com.qqchen.deploy.backend.framework.exception.UniqueConstraintException;
|
||||||
@ -19,7 +18,6 @@ import com.qqchen.deploy.backend.system.repository.IMenuRepository;
|
|||||||
import com.qqchen.deploy.backend.system.repository.IPermissionRepository;
|
import com.qqchen.deploy.backend.system.repository.IPermissionRepository;
|
||||||
import com.qqchen.deploy.backend.system.repository.IRoleRepository;
|
import com.qqchen.deploy.backend.system.repository.IRoleRepository;
|
||||||
import com.qqchen.deploy.backend.system.repository.IRoleTagRepository;
|
import com.qqchen.deploy.backend.system.repository.IRoleTagRepository;
|
||||||
import com.qqchen.deploy.backend.system.repository.IUserRepository;
|
|
||||||
import com.qqchen.deploy.backend.system.service.IRoleService;
|
import com.qqchen.deploy.backend.system.service.IRoleService;
|
||||||
import com.qqchen.deploy.backend.framework.annotation.ServiceType;
|
import com.qqchen.deploy.backend.framework.annotation.ServiceType;
|
||||||
import com.qqchen.deploy.backend.system.service.IPermissionService;
|
import com.qqchen.deploy.backend.system.service.IPermissionService;
|
||||||
@ -47,9 +45,6 @@ public class RoleServiceImpl extends BaseServiceImpl<Role, RoleDTO, RoleQuery, L
|
|||||||
@Resource
|
@Resource
|
||||||
private IRoleTagRepository roleTagRepository;
|
private IRoleTagRepository roleTagRepository;
|
||||||
|
|
||||||
@Resource
|
|
||||||
private IUserRepository userRepository;
|
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private IPermissionService permissionService;
|
private IPermissionService permissionService;
|
||||||
|
|
||||||
@ -126,33 +121,6 @@ public class RoleServiceImpl extends BaseServiceImpl<Role, RoleDTO, RoleQuery, L
|
|||||||
roleRepository.save(role);
|
roleRepository.save(role);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
@Transactional
|
|
||||||
public void assignRoles(Long userId, List<Long> roleIds) {
|
|
||||||
// 获取用户
|
|
||||||
User user = userRepository.findById(userId)
|
|
||||||
.orElseThrow(() -> new BusinessException(ResponseCode.USER_NOT_FOUND));
|
|
||||||
|
|
||||||
// 不允许修改admin用户的角色
|
|
||||||
if ("admin".equals(user.getUsername())) {
|
|
||||||
throw new BusinessException(ResponseCode.ROLE_ADMIN_CANNOT_UPDATE);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取角色列表
|
|
||||||
List<Role> roles = roleRepository.findAllById(roleIds);
|
|
||||||
|
|
||||||
// 验证所有角色ID是否都存在
|
|
||||||
if (roles.size() != roleIds.size()) {
|
|
||||||
throw new BusinessException(ResponseCode.ROLE_NOT_FOUND);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 设置用<EFBFBD><EFBFBD><EFBFBD>角色
|
|
||||||
user.setRoles(new HashSet<>(roles));
|
|
||||||
|
|
||||||
// 保存更新
|
|
||||||
userRepository.save(user);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<PermissionDTO> listRolePermissions(Long roleId) {
|
public List<PermissionDTO> listRolePermissions(Long roleId) {
|
||||||
Role role = roleRepository.findById(roleId)
|
Role role = roleRepository.findById(roleId)
|
||||||
|
|||||||
@ -21,7 +21,9 @@ import com.qqchen.deploy.backend.system.converter.RoleConverter;
|
|||||||
import com.qqchen.deploy.backend.system.model.UserDTO;
|
import com.qqchen.deploy.backend.system.model.UserDTO;
|
||||||
import com.qqchen.deploy.backend.system.model.RoleDTO;
|
import com.qqchen.deploy.backend.system.model.RoleDTO;
|
||||||
import com.qqchen.deploy.backend.system.repository.IDepartmentRepository;
|
import com.qqchen.deploy.backend.system.repository.IDepartmentRepository;
|
||||||
|
import com.qqchen.deploy.backend.system.repository.IRoleRepository;
|
||||||
import com.qqchen.deploy.backend.system.entity.Department;
|
import com.qqchen.deploy.backend.system.entity.Department;
|
||||||
|
import com.qqchen.deploy.backend.system.entity.Role;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.hibernate.Hibernate;
|
import org.hibernate.Hibernate;
|
||||||
@ -34,6 +36,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@ -62,6 +65,9 @@ public class UserServiceImpl extends BaseServiceImpl<User, UserDTO, UserQuery, L
|
|||||||
@Resource
|
@Resource
|
||||||
private IDepartmentRepository departmentRepository;
|
private IDepartmentRepository departmentRepository;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private IRoleRepository roleRepository;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public UserDTO create(UserDTO dto) {
|
public UserDTO create(UserDTO dto) {
|
||||||
@ -220,6 +226,35 @@ public class UserServiceImpl extends BaseServiceImpl<User, UserDTO, UserQuery, L
|
|||||||
log.info("用户 {} 已分配到部门 {}", user.getUsername(), department.getName());
|
log.info("用户 {} 已分配到部门 {}", user.getUsername(), department.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
@Audited(action = "ASSIGN_ROLES", detail = "分配角色")
|
||||||
|
public void assignRoles(Long userId, List<Long> roleIds) {
|
||||||
|
// 获取用户
|
||||||
|
User user = findEntityById(userId);
|
||||||
|
|
||||||
|
// 不允许修改admin用户的角色
|
||||||
|
if ("admin".equals(user.getUsername())) {
|
||||||
|
throw new BusinessException(ResponseCode.ROLE_ADMIN_CANNOT_UPDATE);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取角色列表
|
||||||
|
List<Role> roles = roleRepository.findAllById(roleIds);
|
||||||
|
|
||||||
|
// 验证所有角色ID是否都存在
|
||||||
|
if (roles.size() != roleIds.size()) {
|
||||||
|
throw new BusinessException(ResponseCode.ROLE_NOT_FOUND);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设置用户角色
|
||||||
|
user.setRoles(new HashSet<>(roles));
|
||||||
|
|
||||||
|
// 保存更新
|
||||||
|
userRepository.save(user);
|
||||||
|
|
||||||
|
log.info("用户 {} 已分配角色: {}", user.getUsername(), roles.stream().map(Role::getName).collect(Collectors.joining(", ")));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void validateUniqueConstraints(UserDTO dto) {
|
protected void validateUniqueConstraints(UserDTO dto) {
|
||||||
// 检查用户名唯一性(包括已删除的记录)
|
// 检查用户名唯一性(包括已删除的记录)
|
||||||
|
|||||||
@ -40,8 +40,6 @@ public class WorkflowDefinitionApiController extends BaseController<WorkflowDefi
|
|||||||
@Resource
|
@Resource
|
||||||
private IWorkflowDefinitionService workflowDefinitionService;
|
private IWorkflowDefinitionService workflowDefinitionService;
|
||||||
|
|
||||||
@Resource
|
|
||||||
private HistoryService historyService;
|
|
||||||
|
|
||||||
@Operation(summary = "保存工作流设计")
|
@Operation(summary = "保存工作流设计")
|
||||||
@PostMapping("/design")
|
@PostMapping("/design")
|
||||||
@ -60,178 +58,6 @@ public class WorkflowDefinitionApiController extends BaseController<WorkflowDefi
|
|||||||
return Response.success();
|
return Response.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
// @Operation(summary = "部署工作流")
|
|
||||||
// @PostMapping("/deploy")
|
|
||||||
// public Response<WorkflowDefinitionDTO> deployWorkflow(@RequestBody WorkflowDefinitionDTO dto) {
|
|
||||||
// return Response.success(workflowDefinitionService.deployWorkflow(dto));
|
|
||||||
// }
|
|
||||||
|
|
||||||
@Operation(summary = "挂起工作流实例")
|
|
||||||
@PostMapping("/{processInstanceId}/suspend")
|
|
||||||
public Response<Void> suspendWorkflow(
|
|
||||||
@Parameter(description = "流程实例ID", required = true) @PathVariable String processInstanceId
|
|
||||||
) {
|
|
||||||
workflowDefinitionService.suspendWorkflow(processInstanceId);
|
|
||||||
return Response.success();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Operation(summary = "恢复工作流实例")
|
|
||||||
@PostMapping("/{processInstanceId}/resume")
|
|
||||||
public Response<Void> resumeWorkflow(
|
|
||||||
@Parameter(description = "流程实例ID", required = true) @PathVariable String processInstanceId
|
|
||||||
) {
|
|
||||||
workflowDefinitionService.resumeWorkflow(processInstanceId);
|
|
||||||
return Response.success();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Operation(summary = "查询工作流实例")
|
|
||||||
@GetMapping("/instance/{processInstanceId}")
|
|
||||||
public Response<WorkflowInstanceDTO> getWorkflowInstance(
|
|
||||||
@Parameter(description = "流程实例ID", required = true) @PathVariable String processInstanceId
|
|
||||||
) {
|
|
||||||
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
|
|
||||||
.processInstanceId(processInstanceId)
|
|
||||||
.includeProcessVariables()
|
|
||||||
.singleResult();
|
|
||||||
|
|
||||||
if (historicProcessInstance == null) {
|
|
||||||
return Response.error(ResponseCode.WORKFLOW_NOT_FOUND);
|
|
||||||
}
|
|
||||||
|
|
||||||
WorkflowInstanceDTO instanceDTO = new WorkflowInstanceDTO();
|
|
||||||
// instanceDTO.setId(historicProcessInstance.getId());
|
|
||||||
// instanceDTO.setProcessDefinitionId(historicProcessInstance.getProcessDefinitionId());
|
|
||||||
// instanceDTO.setBusinessKey(historicProcessInstance.getBusinessKey());
|
|
||||||
// instanceDTO.setStartTime(historicProcessInstance.getStartTime());
|
|
||||||
// instanceDTO.setEndTime(historicProcessInstance.getEndTime());
|
|
||||||
// instanceDTO.setDurationInMillis(historicProcessInstance.getDurationInMillis());
|
|
||||||
// instanceDTO.setStartUserId(historicProcessInstance.getStartUserId());
|
|
||||||
// instanceDTO.setStatus(historicProcessInstance.getEndTime() != null ? WorkflowInstanceStatusEnums.COMPLETED : WorkflowInstanceStatusEnums.RUNNING);
|
|
||||||
// instanceDTO.setVariables(historicProcessInstance.getProcessVariables());
|
|
||||||
//
|
|
||||||
// // 查询活动节点历史
|
|
||||||
// List<HistoricActivityInstance> activities = historyService.createHistoricActivityInstanceQuery()
|
|
||||||
// .processInstanceId(processInstanceId)
|
|
||||||
// .orderByHistoricActivityInstanceStartTime()
|
|
||||||
// .asc()
|
|
||||||
// .list();
|
|
||||||
//
|
|
||||||
// List<WorkflowInstanceDTO.ActivityInstance> activityInstances = activities.stream()
|
|
||||||
// .map(activity -> {
|
|
||||||
// WorkflowInstanceDTO.ActivityInstance activityInstance = new WorkflowInstanceDTO.ActivityInstance();
|
|
||||||
// activityInstance.setId(activity.getId());
|
|
||||||
// activityInstance.setActivityId(activity.getActivityId());
|
|
||||||
// activityInstance.setActivityName(activity.getActivityName());
|
|
||||||
// activityInstance.setActivityType(activity.getActivityType());
|
|
||||||
// activityInstance.setStartTime(activity.getStartTime());
|
|
||||||
// activityInstance.setEndTime(activity.getEndTime());
|
|
||||||
// activityInstance.setDurationInMillis(activity.getDurationInMillis());
|
|
||||||
//
|
|
||||||
// // 如果是Shell任务,获取Shell相关变量
|
|
||||||
// if ("serviceTask".equals(activity.getActivityType())) {
|
|
||||||
// Map<String, Object> variables = historicProcessInstance.getProcessVariables();
|
|
||||||
// activityInstance.setShellOutput((String) variables.get("shellOutput"));
|
|
||||||
// activityInstance.setShellError((String) variables.get("shellError"));
|
|
||||||
// activityInstance.setShellExitCode((Integer) variables.get("shellExitCode"));
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// return activityInstance;
|
|
||||||
// })
|
|
||||||
// .collect(Collectors.toList());
|
|
||||||
//
|
|
||||||
// instanceDTO.setActivities(activityInstances);
|
|
||||||
//
|
|
||||||
// return Response.success(instanceDTO);'
|
|
||||||
return Response.success();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Operation(summary = "获取工作流执行状态")
|
|
||||||
@GetMapping("/instance/{processInstanceId}/execution")
|
|
||||||
public ResponseEntity<WorkflowExecutionDTO> getWorkflowExecution(@PathVariable String processInstanceId) {
|
|
||||||
return ResponseEntity.ok(workflowDefinitionService.getWorkflowExecution(processInstanceId));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Operation(summary = "查询工作流实例列表")
|
|
||||||
@GetMapping("/instances")
|
|
||||||
public Response<List<WorkflowInstanceDTO>> listWorkflowInstances(
|
|
||||||
@Parameter(description = "流程标识") @RequestParam(required = false) String processKey,
|
|
||||||
@Parameter(description = "业务标识") @RequestParam(required = false) String businessKey
|
|
||||||
) {
|
|
||||||
List<HistoricProcessInstance> historicProcessInstances = historyService.createHistoricProcessInstanceQuery()
|
|
||||||
.processDefinitionKey(processKey)
|
|
||||||
.processInstanceBusinessKey(businessKey)
|
|
||||||
.includeProcessVariables()
|
|
||||||
.orderByProcessInstanceStartTime()
|
|
||||||
.desc()
|
|
||||||
.list();
|
|
||||||
|
|
||||||
// List<WorkflowInstanceDTO> instanceDTOs = historicProcessInstances.stream()
|
|
||||||
// .map(historicProcessInstance -> {
|
|
||||||
// WorkflowInstanceDTO instanceDTO = new WorkflowInstanceDTO();
|
|
||||||
//// instanceDTO.setId(historicProcessInstance.getId());
|
|
||||||
// instanceDTO.setProcessDefinitionId(historicProcessInstance.getProcessDefinitionId());
|
|
||||||
// instanceDTO.setBusinessKey(historicProcessInstance.getBusinessKey());
|
|
||||||
// instanceDTO.setStartTime(historicProcessInstance.getStartTime());
|
|
||||||
// instanceDTO.setEndTime(historicProcessInstance.getEndTime());
|
|
||||||
// instanceDTO.setDurationInMillis(historicProcessInstance.getDurationInMillis());
|
|
||||||
// instanceDTO.setStartUserId(historicProcessInstance.getStartUserId());
|
|
||||||
// instanceDTO.setStatus(historicProcessInstance.getEndTime() != null ? WorkflowInstanceStatusEnums.COMPLETED : WorkflowInstanceStatusEnums.RUNNING);
|
|
||||||
// instanceDTO.setVariables(historicProcessInstance.getProcessVariables());
|
|
||||||
// return instanceDTO;
|
|
||||||
// })
|
|
||||||
// .collect(Collectors.toList());
|
|
||||||
|
|
||||||
// return Response.success(instanceDTOs);
|
|
||||||
return Response.success();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Operation(summary = "获取节点实时日志")
|
|
||||||
@GetMapping("/instance/{processInstanceId}/node/{nodeId}/logs")
|
|
||||||
public Response<Map<String, Object>> getNodeLogs(
|
|
||||||
@Parameter(description = "流程实例ID", required = true) @PathVariable String processInstanceId,
|
|
||||||
@Parameter(description = "节点ID", required = true) @PathVariable String nodeId
|
|
||||||
) {
|
|
||||||
Map<String, Object> result = new HashMap<>();
|
|
||||||
|
|
||||||
// 获取历史活动实例
|
|
||||||
HistoricActivityInstance activity = historyService.createHistoricActivityInstanceQuery()
|
|
||||||
.processInstanceId(processInstanceId)
|
|
||||||
.activityId(nodeId)
|
|
||||||
.singleResult();
|
|
||||||
|
|
||||||
if (activity == null) {
|
|
||||||
return Response.error(ResponseCode.WORKFLOW_NODE_NOT_FOUND);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取执行ID
|
|
||||||
String executionId = activity.getExecutionId();
|
|
||||||
|
|
||||||
// 获取节点相关的变量
|
|
||||||
List<HistoricVariableInstance> variables = historyService.createHistoricVariableInstanceQuery()
|
|
||||||
.processInstanceId(processInstanceId)
|
|
||||||
.list();
|
|
||||||
|
|
||||||
// 收集日志信息
|
|
||||||
variables.forEach(variable -> {
|
|
||||||
String variableName = variable.getVariableName();
|
|
||||||
if (variableName.startsWith(executionId)) {
|
|
||||||
// 移除executionId前缀
|
|
||||||
String key = variableName.substring(executionId.length() + 1); // +1 for the underscore
|
|
||||||
result.put(key, variable.getValue());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// 添加节点基本信息
|
|
||||||
result.put("nodeId", nodeId);
|
|
||||||
result.put("nodeName", activity.getActivityName());
|
|
||||||
result.put("nodeType", activity.getActivityType());
|
|
||||||
result.put("startTime", activity.getStartTime());
|
|
||||||
result.put("endTime", activity.getEndTime());
|
|
||||||
result.put("status", activity.getEndTime() == null ? "RUNNING" : "COMPLETED");
|
|
||||||
|
|
||||||
return Response.success(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Operation(summary = "禁用工作流")
|
@Operation(summary = "禁用工作流")
|
||||||
@PostMapping("/{id}/disable")
|
@PostMapping("/{id}/disable")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user