1. 升级 3.0.35 补全 bpm api
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
package com.zt.plat.module.bpm.api.definition;
|
||||
|
||||
import com.zt.plat.framework.common.enums.CommonStatusEnum;
|
||||
import com.zt.plat.framework.common.pojo.CommonResult;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.module.bpm.api.definition.dto.BpmCategoryPageReqDTO;
|
||||
import com.zt.plat.module.bpm.api.definition.dto.BpmCategoryRespDTO;
|
||||
import com.zt.plat.module.bpm.api.definition.dto.BpmCategorySaveReqDTO;
|
||||
import com.zt.plat.module.bpm.controller.admin.definition.vo.category.BpmCategoryPageReqVO;
|
||||
import com.zt.plat.module.bpm.controller.admin.definition.vo.category.BpmCategorySaveReqVO;
|
||||
import com.zt.plat.module.bpm.dal.dataobject.definition.BpmCategoryDO;
|
||||
import com.zt.plat.module.bpm.service.definition.BpmCategoryService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
import static com.zt.plat.framework.common.pojo.CommonResult.success;
|
||||
|
||||
/**
|
||||
* BPM 流程分类 Api 实现类
|
||||
*
|
||||
* @author ZT
|
||||
*/
|
||||
@RestController
|
||||
@Validated
|
||||
public class BpmCategoryApiImpl implements BpmCategoryApi {
|
||||
|
||||
@Resource
|
||||
private BpmCategoryService categoryService;
|
||||
|
||||
@Override
|
||||
public CommonResult<Long> createCategory(@Valid BpmCategorySaveReqDTO createReqDTO) {
|
||||
BpmCategorySaveReqVO createReqVO = BeanUtils.toBean(createReqDTO, BpmCategorySaveReqVO.class);
|
||||
return success(categoryService.createCategory(createReqVO));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Boolean> updateCategory(@Valid BpmCategorySaveReqDTO updateReqDTO) {
|
||||
BpmCategorySaveReqVO updateReqVO = BeanUtils.toBean(updateReqDTO, BpmCategorySaveReqVO.class);
|
||||
categoryService.updateCategory(updateReqVO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Boolean> updateCategorySortBatch(List<Long> ids) {
|
||||
categoryService.updateCategorySortBatch(ids);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Boolean> deleteCategory(Long id) {
|
||||
categoryService.deleteCategory(id);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<BpmCategoryRespDTO> getCategory(Long id) {
|
||||
BpmCategoryDO category = categoryService.getCategory(id);
|
||||
return success(BeanUtils.toBean(category, BpmCategoryRespDTO.class));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<PageResult<BpmCategoryRespDTO>> getCategoryPage(@Valid BpmCategoryPageReqDTO pageReqDTO) {
|
||||
BpmCategoryPageReqVO pageReqVO = BeanUtils.toBean(pageReqDTO, BpmCategoryPageReqVO.class);
|
||||
PageResult<BpmCategoryDO> pageResult = categoryService.getCategoryPage(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, BpmCategoryRespDTO.class));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<List<BpmCategoryRespDTO>> getCategorySimpleList() {
|
||||
List<BpmCategoryDO> list = categoryService.getCategoryListByStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||
return success(BeanUtils.toBean(list, BpmCategoryRespDTO.class));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
package com.zt.plat.module.bpm.api.definition;
|
||||
|
||||
import com.zt.plat.framework.common.pojo.CommonResult;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.module.bpm.api.definition.dto.BpmFormPageReqDTO;
|
||||
import com.zt.plat.module.bpm.api.definition.dto.BpmFormRespDTO;
|
||||
import com.zt.plat.module.bpm.api.definition.dto.BpmFormSaveReqDTO;
|
||||
import com.zt.plat.module.bpm.controller.admin.definition.vo.form.BpmFormPageReqVO;
|
||||
import com.zt.plat.module.bpm.controller.admin.definition.vo.form.BpmFormSaveReqVO;
|
||||
import com.zt.plat.module.bpm.dal.dataobject.definition.BpmFormDO;
|
||||
import com.zt.plat.module.bpm.service.definition.BpmFormService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
import static com.zt.plat.framework.common.pojo.CommonResult.success;
|
||||
|
||||
/**
|
||||
* 动态表单 Api 实现类
|
||||
*
|
||||
* @author ZT
|
||||
*/
|
||||
@RestController
|
||||
@Validated
|
||||
public class BpmFormApiImpl implements BpmFormApi {
|
||||
|
||||
@Resource
|
||||
private BpmFormService formService;
|
||||
|
||||
@Override
|
||||
public CommonResult<Long> createForm(@Valid BpmFormSaveReqDTO createReqDTO) {
|
||||
BpmFormSaveReqVO createReqVO = BeanUtils.toBean(createReqDTO, BpmFormSaveReqVO.class);
|
||||
return success(formService.createForm(createReqVO));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Boolean> updateForm(@Valid BpmFormSaveReqDTO updateReqDTO) {
|
||||
BpmFormSaveReqVO updateReqVO = BeanUtils.toBean(updateReqDTO, BpmFormSaveReqVO.class);
|
||||
formService.updateForm(updateReqVO);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<Boolean> deleteForm(Long id) {
|
||||
formService.deleteForm(id);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<BpmFormRespDTO> getForm(Long id) {
|
||||
BpmFormDO form = formService.getForm(id);
|
||||
return success(BeanUtils.toBean(form, BpmFormRespDTO.class));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<PageResult<BpmFormRespDTO>> getFormPage(BpmFormPageReqDTO pageReqDTO) {
|
||||
BpmFormPageReqVO pageReqVO = BeanUtils.toBean(pageReqDTO, BpmFormPageReqVO.class);
|
||||
PageResult<BpmFormDO> pageResult = formService.getFormPage(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, BpmFormRespDTO.class));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<List<BpmFormRespDTO>> getFormSimpleList() {
|
||||
List<BpmFormDO> list = formService.getFormList();
|
||||
// 只返回 id、name 字段
|
||||
List<BpmFormRespDTO> dtoList = list.stream()
|
||||
.map(formDO -> new BpmFormRespDTO().setId(formDO.getId()).setName(formDO.getName()))
|
||||
.collect(java.util.stream.Collectors.toList());
|
||||
return success(dtoList);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package com.zt.plat.module.bpm.api.definition;
|
||||
|
||||
import com.zt.plat.framework.common.enums.CommonStatusEnum;
|
||||
import com.zt.plat.framework.common.pojo.CommonResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.module.bpm.api.definition.dto.BpmUserGroupRespDTO;
|
||||
import com.zt.plat.module.bpm.dal.dataobject.definition.BpmUserGroupDO;
|
||||
import com.zt.plat.module.bpm.service.definition.BpmUserGroupService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import jakarta.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
import static com.zt.plat.framework.common.pojo.CommonResult.success;
|
||||
|
||||
/**
|
||||
* 用户组 Api 实现类
|
||||
*
|
||||
* @author ZT
|
||||
*/
|
||||
@RestController
|
||||
@Validated
|
||||
public class BpmUserGroupApiImpl implements BpmUserGroupApi {
|
||||
|
||||
@Resource
|
||||
private BpmUserGroupService userGroupService;
|
||||
|
||||
@Override
|
||||
public CommonResult<BpmUserGroupRespDTO> getUserGroup(Long id) {
|
||||
BpmUserGroupDO userGroup = userGroupService.getUserGroup(id);
|
||||
return success(BeanUtils.toBean(userGroup, BpmUserGroupRespDTO.class));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<List<BpmUserGroupRespDTO>> getUserGroupSimpleList() {
|
||||
List<BpmUserGroupDO> list = userGroupService.getUserGroupListByStatus(CommonStatusEnum.ENABLE.getStatus());
|
||||
return success(BeanUtils.toBean(list, BpmUserGroupRespDTO.class));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,197 @@
|
||||
package com.zt.plat.module.bpm.api.task;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.zt.plat.framework.business.core.util.DeptUtil;
|
||||
import com.zt.plat.framework.common.pojo.CommonResult;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.util.number.NumberUtils;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils;
|
||||
import com.zt.plat.module.bpm.api.task.dto.BpmTaskPageReqDTO;
|
||||
import com.zt.plat.module.bpm.api.task.dto.BpmTaskRespDTO;
|
||||
import com.zt.plat.module.bpm.controller.admin.task.vo.task.BpmTaskPageReqVO;
|
||||
import com.zt.plat.module.bpm.convert.task.BpmTaskConvert;
|
||||
import com.zt.plat.module.bpm.dal.dataobject.definition.BpmFormDO;
|
||||
import com.zt.plat.module.bpm.dal.dataobject.definition.BpmProcessDefinitionInfoDO;
|
||||
import com.zt.plat.module.bpm.service.definition.BpmFormService;
|
||||
import com.zt.plat.module.bpm.service.definition.BpmProcessDefinitionService;
|
||||
import com.zt.plat.module.bpm.service.task.BpmProcessInstanceService;
|
||||
import com.zt.plat.module.bpm.service.task.BpmTaskService;
|
||||
import com.zt.plat.module.system.api.dept.DeptApi;
|
||||
import com.zt.plat.module.system.api.dept.dto.DeptRespDTO;
|
||||
import com.zt.plat.module.system.api.user.AdminUserApi;
|
||||
import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO;
|
||||
import jakarta.annotation.Resource;
|
||||
import jakarta.validation.Valid;
|
||||
import org.flowable.engine.history.HistoricProcessInstance;
|
||||
import org.flowable.engine.runtime.ProcessInstance;
|
||||
import org.flowable.task.api.Task;
|
||||
import org.flowable.task.api.history.HistoricTaskInstance;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static com.zt.plat.framework.common.pojo.CommonResult.success;
|
||||
import static com.zt.plat.framework.common.util.collection.CollectionUtils.convertSet;
|
||||
import static com.zt.plat.framework.common.util.collection.CollectionUtils.convertSetByFlatMap;
|
||||
|
||||
/**
|
||||
* BPM 任务 API 实现类
|
||||
*
|
||||
* @author ZT
|
||||
*/
|
||||
@RestController
|
||||
@Validated
|
||||
public class BpmTaskApiImpl implements BpmTaskApi {
|
||||
|
||||
@Resource
|
||||
private BpmTaskService taskService;
|
||||
@Resource
|
||||
private BpmProcessInstanceService processInstanceService;
|
||||
@Resource
|
||||
private BpmFormService formService;
|
||||
@Resource
|
||||
private BpmProcessDefinitionService processDefinitionService;
|
||||
@Resource
|
||||
private AdminUserApi adminUserApi;
|
||||
@Resource
|
||||
private DeptApi deptApi;
|
||||
|
||||
@Override
|
||||
public CommonResult<List<BpmTaskRespDTO>> getTaskTodoPage(@Valid BpmTaskPageReqDTO pageReqDTO) {
|
||||
// 转换请求参数
|
||||
BpmTaskPageReqVO pageReqVO = BeanUtils.toBean(pageReqDTO, BpmTaskPageReqVO.class);
|
||||
|
||||
// 调用 Service 层方法
|
||||
PageResult<Task> pageResult = taskService.getTaskTodoPage(SecurityFrameworkUtils.getLoginUserId(), pageReqVO);
|
||||
if (CollUtil.isEmpty(pageResult.getList())) {
|
||||
return success(new ArrayList<>());
|
||||
}
|
||||
|
||||
// 拼接数据 - 参考 Controller 逻辑
|
||||
Map<String, ProcessInstance> processInstanceMap = processInstanceService.getProcessInstanceMap(convertSet(pageResult.getList(), Task::getProcessInstanceId));
|
||||
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(convertSet(processInstanceMap.values(), instance -> Long.valueOf(instance.getStartUserId())));
|
||||
Map<String, BpmProcessDefinitionInfoDO> processDefinitionInfoMap = processDefinitionService.getProcessDefinitionInfoMap(convertSet(pageResult.getList(), Task::getProcessDefinitionId));
|
||||
|
||||
// 使用转换器构建结果并转换为 DTO
|
||||
var voPageResult = BpmTaskConvert.INSTANCE.buildTodoTaskPage(pageResult, processInstanceMap, userMap, processDefinitionInfoMap);
|
||||
return success(BeanUtils.toBean(voPageResult.getList(), BpmTaskRespDTO.class));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<List<BpmTaskRespDTO>> getTaskDonePage(@Valid BpmTaskPageReqDTO pageReqDTO) {
|
||||
// 转换请求参数
|
||||
BpmTaskPageReqVO pageReqVO = BeanUtils.toBean(pageReqDTO, BpmTaskPageReqVO.class);
|
||||
|
||||
// 调用 Service 层方法
|
||||
PageResult<HistoricTaskInstance> pageResult = taskService.getTaskDonePage(SecurityFrameworkUtils.getLoginUserId(), pageReqVO);
|
||||
if (CollUtil.isEmpty(pageResult.getList())) {
|
||||
return success(new ArrayList<>());
|
||||
}
|
||||
|
||||
// 拼接数据 - 参考 Controller 逻辑
|
||||
Map<String, HistoricProcessInstance> processInstanceMap = processInstanceService.getHistoricProcessInstanceMap(convertSet(pageResult.getList(), HistoricTaskInstance::getProcessInstanceId));
|
||||
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(convertSet(processInstanceMap.values(), instance -> Long.valueOf(instance.getStartUserId())));
|
||||
Map<String, BpmProcessDefinitionInfoDO> processDefinitionInfoMap = processDefinitionService.getProcessDefinitionInfoMap(convertSet(pageResult.getList(), HistoricTaskInstance::getProcessDefinitionId));
|
||||
|
||||
// 使用转换器构建结果并转换为 DTO
|
||||
var voPageResult = BpmTaskConvert.INSTANCE.buildTaskPage(pageResult, processInstanceMap, userMap, null, processDefinitionInfoMap);
|
||||
return success(BeanUtils.toBean(voPageResult.getList(), BpmTaskRespDTO.class));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<List<BpmTaskRespDTO>> getTaskManagerPage(@Valid BpmTaskPageReqDTO pageReqDTO) {
|
||||
// 转换请求参数
|
||||
BpmTaskPageReqVO pageReqVO = BeanUtils.toBean(pageReqDTO, BpmTaskPageReqVO.class);
|
||||
|
||||
// 调用 Service 层方法
|
||||
PageResult<HistoricTaskInstance> pageResult = taskService.getTaskPage(SecurityFrameworkUtils.getLoginUserId(), pageReqVO);
|
||||
if (CollUtil.isEmpty(pageResult.getList())) {
|
||||
return success(new ArrayList<>());
|
||||
}
|
||||
|
||||
// 拼接数据 - 参考 Controller 逻辑
|
||||
Map<String, HistoricProcessInstance> processInstanceMap = processInstanceService.getHistoricProcessInstanceMap(convertSet(pageResult.getList(), HistoricTaskInstance::getProcessInstanceId));
|
||||
// 获得 User 和 Dept Map
|
||||
Set<Long> userIds = convertSet(processInstanceMap.values(), instance -> Long.valueOf(instance.getStartUserId()));
|
||||
userIds.addAll(convertSet(pageResult.getList(), task -> NumberUtils.parseLong(task.getAssignee())));
|
||||
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(userIds);
|
||||
Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap(convertSet(userMap.values(), DeptUtil::getDeptId));
|
||||
Map<String, BpmProcessDefinitionInfoDO> processDefinitionInfoMap = processDefinitionService.getProcessDefinitionInfoMap(convertSet(pageResult.getList(), HistoricTaskInstance::getProcessDefinitionId));
|
||||
|
||||
// 使用转换器构建结果并转换为 DTO
|
||||
var voPageResult = BpmTaskConvert.INSTANCE.buildTaskPage(pageResult, processInstanceMap, userMap, deptMap, processDefinitionInfoMap);
|
||||
return success(BeanUtils.toBean(voPageResult.getList(), BpmTaskRespDTO.class));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<List<BpmTaskRespDTO>> getTaskListByProcessInstanceId(String processInstanceId) {
|
||||
// 调用 Service 层方法
|
||||
List<HistoricTaskInstance> taskList = taskService.getTaskListByProcessInstanceId(processInstanceId, true);
|
||||
if (CollUtil.isEmpty(taskList)) {
|
||||
return success(Collections.emptyList());
|
||||
}
|
||||
|
||||
// 拼接数据 - 参考 Controller 逻辑
|
||||
Set<Long> userIds = convertSetByFlatMap(taskList, task -> Stream.of(NumberUtils.parseLong(task.getAssignee()), NumberUtils.parseLong(task.getOwner())));
|
||||
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(userIds);
|
||||
Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap(convertSet(userMap.values(), DeptUtil::getDeptId));
|
||||
// 获得 Form Map
|
||||
Map<Long, BpmFormDO> formMap = formService.getFormMap(convertSet(taskList, task -> {
|
||||
String formKey = task.getFormKey();
|
||||
if (formKey == null || formKey.isBlank()) {
|
||||
return 0L;
|
||||
}
|
||||
try {
|
||||
return Long.parseLong(formKey);
|
||||
} catch (NumberFormatException e) {
|
||||
// 如果 formKey 不是数字(比如是URL),返回0L
|
||||
return 0L;
|
||||
}
|
||||
}));
|
||||
|
||||
// 使用转换器构建结果并转换为 DTO
|
||||
var voList = BpmTaskConvert.INSTANCE.buildTaskListByProcessInstanceId(taskList, formMap, userMap, deptMap);
|
||||
List<BpmTaskRespDTO> result = BeanUtils.toBean(voList, BpmTaskRespDTO.class);
|
||||
|
||||
return success(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<List<BpmTaskRespDTO>> getTaskListByReturn(String id) {
|
||||
// 调用 Service 层方法
|
||||
var userTaskList = taskService.getUserTaskListByReturn(id);
|
||||
|
||||
// 转换返回结果 - 只返回 id 和 name(对应 taskDefinitionKey 和 name)
|
||||
List<BpmTaskRespDTO> result = userTaskList.stream().map(userTask -> {
|
||||
BpmTaskRespDTO dto = new BpmTaskRespDTO();
|
||||
dto.setName(userTask.getName());
|
||||
dto.setTaskDefinitionKey(userTask.getId());
|
||||
return dto;
|
||||
}).toList();
|
||||
|
||||
return success(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<List<BpmTaskRespDTO>> getTaskListByParentTaskId(String parentTaskId) {
|
||||
// 调用 Service 层方法
|
||||
List<Task> taskList = taskService.getTaskListByParentTaskId(parentTaskId);
|
||||
if (CollUtil.isEmpty(taskList)) {
|
||||
return success(Collections.emptyList());
|
||||
}
|
||||
|
||||
// 拼接数据 - 参考 Controller 逻辑
|
||||
Map<Long, AdminUserRespDTO> userMap = adminUserApi.getUserMap(convertSetByFlatMap(taskList, user -> Stream.of(NumberUtils.parseLong(user.getAssignee()), NumberUtils.parseLong(user.getOwner()))));
|
||||
Map<Long, DeptRespDTO> deptMap = deptApi.getDeptMap(convertSet(userMap.values(), DeptUtil::getDeptId));
|
||||
|
||||
// 使用转换器构建结果并转换为 DTO
|
||||
var voList = BpmTaskConvert.INSTANCE.buildTaskListByParentTaskId(taskList, userMap, deptMap);
|
||||
List<BpmTaskRespDTO> result = BeanUtils.toBean(voList, BpmTaskRespDTO.class);
|
||||
|
||||
return success(result);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user