知识管理添加工作流审批
This commit is contained in:
parent
3d0af0127e
commit
cbe4957f36
@ -4,10 +4,8 @@ import cn.hutool.core.collection.CollUtil;
|
|||||||
import cn.iocoder.yudao.module.bpm.convert.knows.KnowledgeConvert;
|
import cn.iocoder.yudao.module.bpm.convert.knows.KnowledgeConvert;
|
||||||
import cn.iocoder.yudao.module.bpm.dal.dataobject.knows.KnowtypeDO;
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.knows.KnowtypeDO;
|
||||||
import cn.iocoder.yudao.module.bpm.service.knows.KnowtypeService;
|
import cn.iocoder.yudao.module.bpm.service.knows.KnowtypeService;
|
||||||
import cn.iocoder.yudao.module.system.api.user.AdminUserApi;
|
|
||||||
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
|
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
|
||||||
import cn.iocoder.yudao.module.system.service.dept.DeptService;
|
import cn.iocoder.yudao.module.system.service.dept.DeptService;
|
||||||
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
|
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
@ -30,11 +28,12 @@ import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
|||||||
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
|
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
|
||||||
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
|
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
|
||||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
|
||||||
|
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
|
||||||
|
|
||||||
import cn.iocoder.yudao.module.bpm.controller.admin.knows.vo.*;
|
import cn.iocoder.yudao.module.bpm.controller.admin.knows.vo.*;
|
||||||
import cn.iocoder.yudao.module.bpm.dal.dataobject.knows.KnowledgeDO;
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.knows.KnowledgeDO;
|
||||||
import cn.iocoder.yudao.module.bpm.dal.dataobject.knows.CommentDO;
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.knows.CommentDO;
|
||||||
import cn.iocoder.yudao.module.bpm.service.knows.KnowledgeService;
|
import cn.iocoder.yudao.module.bpm.service.knows.KnowledgeService;
|
||||||
|
|
||||||
@Tag(name = "管理后台 - 知识发布")
|
@Tag(name = "管理后台 - 知识发布")
|
||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/bpm/knowledge")
|
@RequestMapping("/bpm/knowledge")
|
||||||
@ -47,14 +46,13 @@ public class KnowledgeController {
|
|||||||
private DeptService deptService;
|
private DeptService deptService;
|
||||||
@Resource
|
@Resource
|
||||||
private KnowtypeService knowtypeService;
|
private KnowtypeService knowtypeService;
|
||||||
@Resource
|
|
||||||
private AdminUserApi adminUserApi;
|
|
||||||
private AdminUserService userService;
|
|
||||||
@PostMapping("/create")
|
@PostMapping("/create")
|
||||||
@Operation(summary = "创建知识发布")
|
@Operation(summary = "创建知识发布")
|
||||||
@PreAuthorize("@ss.hasPermission('bpm:knowledge:create')")
|
@PreAuthorize("@ss.hasPermission('bpm:knowledge:create')")
|
||||||
public CommonResult<Long> createKnowledge(@Valid @RequestBody KnowledgeSaveReqVO createReqVO) {
|
public CommonResult<Long> createKnowledge(@Valid @RequestBody KnowledgeSaveReqVO createReqVO) {
|
||||||
return success(knowledgeService.createKnowledge(createReqVO));
|
// return success(knowledgeService.createKnowledge(createReqVO));
|
||||||
|
return success(knowledgeService.createKnowledge(getLoginUserId(),createReqVO));
|
||||||
}
|
}
|
||||||
|
|
||||||
@PutMapping("/update")
|
@PutMapping("/update")
|
||||||
@ -106,7 +104,24 @@ public class KnowledgeController {
|
|||||||
// 转换并返回结果
|
// 转换并返回结果
|
||||||
return success(new PageResult<>(KnowledgeConvert.INSTANCE.convertList(pageResult.getList(), deptMap, knowTypeMap), pageResult.getTotal()));
|
return success(new PageResult<>(KnowledgeConvert.INSTANCE.convertList(pageResult.getList(), deptMap, knowTypeMap), pageResult.getTotal()));
|
||||||
}
|
}
|
||||||
|
@GetMapping("/page-user")
|
||||||
|
@Operation(summary = "获得知识发布分页")
|
||||||
|
@PreAuthorize("@ss.hasPermission('bpm:knowledge:query')")
|
||||||
|
public CommonResult<PageResult<KnowledgeRespVO>> getKnowledgePageUser(@Valid KnowledgePageReqVO pageReqVO) {
|
||||||
|
PageResult<KnowledgeDO> pageResult = knowledgeService.getKnowledgePage(getLoginUserId(),pageReqVO);
|
||||||
|
|
||||||
|
if (CollUtil.isEmpty(pageResult.getList())) {
|
||||||
|
return success(new PageResult<>(pageResult.getTotal()));
|
||||||
|
}
|
||||||
|
// 拼接数据
|
||||||
|
Map<Long, DeptDO> deptMap = deptService.getDeptMap(
|
||||||
|
convertList(pageResult.getList(), KnowledgeDO::getDeptId));
|
||||||
|
Map<Long, KnowtypeDO> knowTypeMap = knowtypeService.getKnowtypeMap(
|
||||||
|
convertList(pageResult.getList(), KnowledgeDO::getTypeId));
|
||||||
|
|
||||||
|
// 转换并返回结果
|
||||||
|
return success(new PageResult<>(KnowledgeConvert.INSTANCE.convertList(pageResult.getList(), deptMap, knowTypeMap), pageResult.getTotal()));
|
||||||
|
}
|
||||||
@GetMapping("/export-excel")
|
@GetMapping("/export-excel")
|
||||||
@Operation(summary = "导出知识发布 Excel")
|
@Operation(summary = "导出知识发布 Excel")
|
||||||
@PreAuthorize("@ss.hasPermission('bpm:knowledge:export')")
|
@PreAuthorize("@ss.hasPermission('bpm:knowledge:export')")
|
||||||
|
@ -63,4 +63,8 @@ public class KnowledgeRespVO {
|
|||||||
@Schema(description = "作者", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
|
@Schema(description = "作者", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
|
||||||
@ExcelProperty("作者")
|
@ExcelProperty("作者")
|
||||||
private String userName;
|
private String userName;
|
||||||
|
|
||||||
|
@Schema(description = "流程实例的编号", example = "20058")
|
||||||
|
@ExcelProperty("流程实例的编号")
|
||||||
|
private String processInstanceId;
|
||||||
}
|
}
|
||||||
|
@ -47,4 +47,7 @@ public class KnowledgeSaveReqVO {
|
|||||||
@Schema(description = "作者", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
|
@Schema(description = "作者", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
|
||||||
@NotNull(message = "作者不能为空")
|
@NotNull(message = "作者不能为空")
|
||||||
private String userName;
|
private String userName;
|
||||||
|
|
||||||
|
@Schema(description = "发起人自选审批人 Map", example = "{taskKey1: [1, 2]}")
|
||||||
|
private Map<String, List<Long>> startUserSelectAssignees;
|
||||||
}
|
}
|
||||||
|
@ -58,4 +58,11 @@ public class KnowledgeDO extends BaseDO {
|
|||||||
* 作者的id
|
* 作者的id
|
||||||
*/
|
*/
|
||||||
private String userName;
|
private String userName;
|
||||||
|
/**
|
||||||
|
* 对应的流程编号
|
||||||
|
*
|
||||||
|
* 关联 ProcessInstance 的 id 属性
|
||||||
|
*/
|
||||||
|
private String processInstanceId;
|
||||||
|
private Long userId;
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|||||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
import cn.iocoder.yudao.module.bpm.dal.dataobject.knows.KnowledgeDO;
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.knows.KnowledgeDO;
|
||||||
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOALeaveDO;
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
import cn.iocoder.yudao.module.bpm.controller.admin.knows.vo.*;
|
import cn.iocoder.yudao.module.bpm.controller.admin.knows.vo.*;
|
||||||
|
|
||||||
@ -28,5 +29,16 @@ public interface KnowledgeMapper extends BaseMapperX<KnowledgeDO> {
|
|||||||
.betweenIfPresent(KnowledgeDO::getCreateTime, reqVO.getCreateTime())
|
.betweenIfPresent(KnowledgeDO::getCreateTime, reqVO.getCreateTime())
|
||||||
.orderByDesc(KnowledgeDO::getId));
|
.orderByDesc(KnowledgeDO::getId));
|
||||||
}
|
}
|
||||||
|
default PageResult<KnowledgeDO> selectPage(Long userId, KnowledgePageReqVO reqVO) {
|
||||||
|
return selectPage(reqVO, new LambdaQueryWrapperX<KnowledgeDO>()
|
||||||
|
.eqIfPresent(KnowledgeDO::getUserId, userId)
|
||||||
|
.eqIfPresent(KnowledgeDO::getTypeId, reqVO.getTypeId())
|
||||||
|
.eqIfPresent(KnowledgeDO::getDeptId, reqVO.getDeptId())
|
||||||
|
.eqIfPresent(KnowledgeDO::getKnowTitle, reqVO.getKnowTitle())
|
||||||
|
.eqIfPresent(KnowledgeDO::getContent, reqVO.getContent())
|
||||||
|
.eqIfPresent(KnowledgeDO::getStatus, reqVO.getStatus())
|
||||||
|
.eqIfPresent(KnowledgeDO::getFilePath, reqVO.getFilePath())
|
||||||
|
.betweenIfPresent(KnowledgeDO::getCreateTime, reqVO.getCreateTime())
|
||||||
|
.orderByDesc(KnowledgeDO::getId));
|
||||||
|
}
|
||||||
}
|
}
|
@ -2,10 +2,12 @@ package cn.iocoder.yudao.module.bpm.service.knows;
|
|||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import cn.iocoder.yudao.module.bpm.controller.admin.knows.vo.*;
|
import cn.iocoder.yudao.module.bpm.controller.admin.knows.vo.*;
|
||||||
|
import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOALeavePageReqVO;
|
||||||
import cn.iocoder.yudao.module.bpm.dal.dataobject.knows.KnowledgeDO;
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.knows.KnowledgeDO;
|
||||||
import cn.iocoder.yudao.module.bpm.dal.dataobject.knows.CommentDO;
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.knows.CommentDO;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||||
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOALeaveDO;
|
||||||
|
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
|
|
||||||
@ -22,7 +24,7 @@ public interface KnowledgeService {
|
|||||||
* @param createReqVO 创建信息
|
* @param createReqVO 创建信息
|
||||||
* @return 编号
|
* @return 编号
|
||||||
*/
|
*/
|
||||||
Long createKnowledge(@Valid KnowledgeSaveReqVO createReqVO);
|
Long createKnowledge(Long userId,@Valid KnowledgeSaveReqVO createReqVO);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新知识发布
|
* 更新知识发布
|
||||||
@ -53,6 +55,7 @@ public interface KnowledgeService {
|
|||||||
* @return 知识发布分页
|
* @return 知识发布分页
|
||||||
*/
|
*/
|
||||||
PageResult<KnowledgeDO> getKnowledgePage(KnowledgePageReqVO pageReqVO);
|
PageResult<KnowledgeDO> getKnowledgePage(KnowledgePageReqVO pageReqVO);
|
||||||
|
PageResult<KnowledgeDO> getKnowledgePage(Long userId, KnowledgePageReqVO pageReqVO);
|
||||||
|
|
||||||
// ==================== 子表(评论) ====================
|
// ==================== 子表(评论) ====================
|
||||||
|
|
||||||
@ -64,4 +67,5 @@ public interface KnowledgeService {
|
|||||||
*/
|
*/
|
||||||
List<CommentDO> getCommentListByKnowId(Long knowId);
|
List<CommentDO> getCommentListByKnowId(Long knowId);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,23 +1,19 @@
|
|||||||
package cn.iocoder.yudao.module.bpm.service.knows;
|
package cn.iocoder.yudao.module.bpm.service.knows;
|
||||||
|
|
||||||
|
import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi;
|
||||||
|
import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import cn.iocoder.yudao.module.bpm.controller.admin.knows.vo.*;
|
import cn.iocoder.yudao.module.bpm.controller.admin.knows.vo.*;
|
||||||
import cn.iocoder.yudao.module.bpm.dal.dataobject.knows.KnowledgeDO;
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.knows.KnowledgeDO;
|
||||||
import cn.iocoder.yudao.module.bpm.dal.dataobject.knows.CommentDO;
|
import cn.iocoder.yudao.module.bpm.dal.dataobject.knows.CommentDO;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
|
||||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||||
|
|
||||||
import cn.iocoder.yudao.module.bpm.dal.mysql.knows.KnowledgeMapper;
|
import cn.iocoder.yudao.module.bpm.dal.mysql.knows.KnowledgeMapper;
|
||||||
import cn.iocoder.yudao.module.bpm.dal.mysql.knows.CommentMapper;
|
import cn.iocoder.yudao.module.bpm.dal.mysql.knows.CommentMapper;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
|
||||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.*;
|
import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.*;
|
||||||
|
|
||||||
@ -29,21 +25,30 @@ import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.*;
|
|||||||
@Service
|
@Service
|
||||||
@Validated
|
@Validated
|
||||||
public class KnowledgeServiceImpl implements KnowledgeService {
|
public class KnowledgeServiceImpl implements KnowledgeService {
|
||||||
|
public static final String PROCESS_KEY = "my-test-flow03";
|
||||||
@Resource
|
@Resource
|
||||||
private KnowledgeMapper knowledgeMapper;
|
private KnowledgeMapper knowledgeMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private CommentMapper commentMapper;
|
private CommentMapper commentMapper;
|
||||||
|
@Resource
|
||||||
|
private BpmProcessInstanceApi processInstanceApi;
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Long createKnowledge(KnowledgeSaveReqVO createReqVO) {
|
public Long createKnowledge(Long userId,KnowledgeSaveReqVO createReqVO) {
|
||||||
// 插入
|
// 插入
|
||||||
KnowledgeDO knowledge = BeanUtils.toBean(createReqVO, KnowledgeDO.class);
|
KnowledgeDO knowledge = BeanUtils.toBean(createReqVO, KnowledgeDO.class);
|
||||||
knowledgeMapper.insert(knowledge);
|
knowledgeMapper.insert(knowledge);
|
||||||
|
|
||||||
// 插入子表
|
// 插入子表
|
||||||
createCommentList(knowledge.getId(), createReqVO.getComments());
|
createCommentList(knowledge.getId(), createReqVO.getComments());
|
||||||
|
// 发起 BPM 流程
|
||||||
|
Map<String, Object> processInstanceVariables = new HashMap<>();
|
||||||
|
String processInstanceId = processInstanceApi.createProcessInstance(userId,
|
||||||
|
new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(PROCESS_KEY)
|
||||||
|
.setVariables(processInstanceVariables).setBusinessKey(String.valueOf(knowledge.getId()))
|
||||||
|
.setStartUserSelectAssignees(createReqVO.getStartUserSelectAssignees()));
|
||||||
|
|
||||||
|
// 将工作流的编号,更新到 OA 请假单中
|
||||||
|
knowledgeMapper.updateById(new KnowledgeDO().setId(knowledge.getId()).setProcessInstanceId(processInstanceId));
|
||||||
// 返回
|
// 返回
|
||||||
return knowledge.getId();
|
return knowledge.getId();
|
||||||
}
|
}
|
||||||
@ -88,6 +93,10 @@ public class KnowledgeServiceImpl implements KnowledgeService {
|
|||||||
public PageResult<KnowledgeDO> getKnowledgePage(KnowledgePageReqVO pageReqVO) {
|
public PageResult<KnowledgeDO> getKnowledgePage(KnowledgePageReqVO pageReqVO) {
|
||||||
return knowledgeMapper.selectPage(pageReqVO);
|
return knowledgeMapper.selectPage(pageReqVO);
|
||||||
}
|
}
|
||||||
|
@Override
|
||||||
|
public PageResult<KnowledgeDO> getKnowledgePage(Long userId, KnowledgePageReqVO pageReqVO) {
|
||||||
|
return knowledgeMapper.selectPage(userId, pageReqVO);
|
||||||
|
}
|
||||||
|
|
||||||
// ==================== 子表(评论) ====================
|
// ==================== 子表(评论) ====================
|
||||||
|
|
||||||
@ -96,6 +105,8 @@ public class KnowledgeServiceImpl implements KnowledgeService {
|
|||||||
return commentMapper.selectListByKnowId(knowId);
|
return commentMapper.selectListByKnowId(knowId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void createCommentList(Long knowId, List<CommentDO> list) {
|
private void createCommentList(Long knowId, List<CommentDO> list) {
|
||||||
list.forEach(o -> o.setKnowId(knowId));
|
list.forEach(o -> o.setKnowId(knowId));
|
||||||
commentMapper.insertBatch(list);
|
commentMapper.insertBatch(list);
|
||||||
|
@ -34,6 +34,8 @@ public class BpmOALeaveServiceImpl implements BpmOALeaveService {
|
|||||||
/**
|
/**
|
||||||
* OA 请假对应的流程定义 KEY
|
* OA 请假对应的流程定义 KEY
|
||||||
*/
|
*/
|
||||||
|
// public static final String PROCESS_KEY = "oa_leave";
|
||||||
|
//my-test-flow02'
|
||||||
public static final String PROCESS_KEY = "my-test-flow02";
|
public static final String PROCESS_KEY = "my-test-flow02";
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
|
Loading…
Reference in New Issue
Block a user