diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/knows/KnowledgeController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/knows/KnowledgeController.java index 193f988..b781b03 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/knows/KnowledgeController.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/knows/KnowledgeController.java @@ -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.dal.dataobject.knows.KnowtypeDO; 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.service.dept.DeptService; -import cn.iocoder.yudao.module.system.service.user.AdminUserService; import org.springframework.web.bind.annotation.*; import org.springframework.validation.annotation.Validated; 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 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.security.core.util.SecurityFrameworkUtils.getLoginUserId; + 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.CommentDO; import cn.iocoder.yudao.module.bpm.service.knows.KnowledgeService; - @Tag(name = "管理后台 - 知识发布") @RestController @RequestMapping("/bpm/knowledge") @@ -47,14 +46,13 @@ public class KnowledgeController { private DeptService deptService; @Resource private KnowtypeService knowtypeService; - @Resource - private AdminUserApi adminUserApi; - private AdminUserService userService; + @PostMapping("/create") @Operation(summary = "创建知识发布") @PreAuthorize("@ss.hasPermission('bpm:knowledge:create')") public CommonResult createKnowledge(@Valid @RequestBody KnowledgeSaveReqVO createReqVO) { - return success(knowledgeService.createKnowledge(createReqVO)); +// return success(knowledgeService.createKnowledge(createReqVO)); + return success(knowledgeService.createKnowledge(getLoginUserId(),createReqVO)); } @PutMapping("/update") @@ -106,7 +104,24 @@ public class KnowledgeController { // 转换并返回结果 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> getKnowledgePageUser(@Valid KnowledgePageReqVO pageReqVO) { + PageResult pageResult = knowledgeService.getKnowledgePage(getLoginUserId(),pageReqVO); + if (CollUtil.isEmpty(pageResult.getList())) { + return success(new PageResult<>(pageResult.getTotal())); + } + // 拼接数据 + Map deptMap = deptService.getDeptMap( + convertList(pageResult.getList(), KnowledgeDO::getDeptId)); + Map knowTypeMap = knowtypeService.getKnowtypeMap( + convertList(pageResult.getList(), KnowledgeDO::getTypeId)); + + // 转换并返回结果 + return success(new PageResult<>(KnowledgeConvert.INSTANCE.convertList(pageResult.getList(), deptMap, knowTypeMap), pageResult.getTotal())); + } @GetMapping("/export-excel") @Operation(summary = "导出知识发布 Excel") @PreAuthorize("@ss.hasPermission('bpm:knowledge:export')") diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/knows/vo/KnowledgeRespVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/knows/vo/KnowledgeRespVO.java index 49de06c..d3ebc63 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/knows/vo/KnowledgeRespVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/knows/vo/KnowledgeRespVO.java @@ -63,4 +63,8 @@ public class KnowledgeRespVO { @Schema(description = "作者", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") @ExcelProperty("作者") private String userName; + + @Schema(description = "流程实例的编号", example = "20058") + @ExcelProperty("流程实例的编号") + private String processInstanceId; } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/knows/vo/KnowledgeSaveReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/knows/vo/KnowledgeSaveReqVO.java index 29235a0..42e8345 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/knows/vo/KnowledgeSaveReqVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/knows/vo/KnowledgeSaveReqVO.java @@ -47,4 +47,7 @@ public class KnowledgeSaveReqVO { @Schema(description = "作者", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") @NotNull(message = "作者不能为空") private String userName; + + @Schema(description = "发起人自选审批人 Map", example = "{taskKey1: [1, 2]}") + private Map> startUserSelectAssignees; } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/knows/KnowledgeDO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/knows/KnowledgeDO.java index 4a06523..1026487 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/knows/KnowledgeDO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/knows/KnowledgeDO.java @@ -58,4 +58,11 @@ public class KnowledgeDO extends BaseDO { * 作者的id */ private String userName; + /** + * 对应的流程编号 + * + * 关联 ProcessInstance 的 id 属性 + */ + private String processInstanceId; + private Long userId; } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/knows/KnowledgeMapper.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/knows/KnowledgeMapper.java index 7888f29..c7841a2 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/knows/KnowledgeMapper.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/knows/KnowledgeMapper.java @@ -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.mapper.BaseMapperX; 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 cn.iocoder.yudao.module.bpm.controller.admin.knows.vo.*; @@ -17,7 +18,7 @@ import cn.iocoder.yudao.module.bpm.controller.admin.knows.vo.*; @Mapper public interface KnowledgeMapper extends BaseMapperX { - default PageResult selectPage(KnowledgePageReqVO reqVO) { + default PageResult selectPage( KnowledgePageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() .eqIfPresent(KnowledgeDO::getTypeId, reqVO.getTypeId()) .eqIfPresent(KnowledgeDO::getDeptId, reqVO.getDeptId()) @@ -28,5 +29,16 @@ public interface KnowledgeMapper extends BaseMapperX { .betweenIfPresent(KnowledgeDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(KnowledgeDO::getId)); } - -} \ No newline at end of file + default PageResult selectPage(Long userId, KnowledgePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .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)); + } +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/knows/KnowledgeService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/knows/KnowledgeService.java index 6bd5865..5e4c8c6 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/knows/KnowledgeService.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/knows/KnowledgeService.java @@ -2,10 +2,12 @@ package cn.iocoder.yudao.module.bpm.service.knows; import java.util.*; 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.CommentDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOALeaveDO; import javax.validation.Valid; @@ -22,7 +24,7 @@ public interface KnowledgeService { * @param createReqVO 创建信息 * @return 编号 */ - Long createKnowledge(@Valid KnowledgeSaveReqVO createReqVO); + Long createKnowledge(Long userId,@Valid KnowledgeSaveReqVO createReqVO); /** * 更新知识发布 @@ -53,6 +55,7 @@ public interface KnowledgeService { * @return 知识发布分页 */ PageResult getKnowledgePage(KnowledgePageReqVO pageReqVO); + PageResult getKnowledgePage(Long userId, KnowledgePageReqVO pageReqVO); // ==================== 子表(评论) ==================== @@ -64,4 +67,5 @@ public interface KnowledgeService { */ List getCommentListByKnowId(Long knowId); + } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/knows/KnowledgeServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/knows/KnowledgeServiceImpl.java index 42aa635..7a588ba 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/knows/KnowledgeServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/knows/KnowledgeServiceImpl.java @@ -1,23 +1,19 @@ 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.validation.annotation.Validated; import org.springframework.transaction.annotation.Transactional; - import java.util.*; 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.CommentDO; 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.module.bpm.dal.mysql.knows.KnowledgeMapper; import cn.iocoder.yudao.module.bpm.dal.mysql.knows.CommentMapper; - import javax.annotation.Resource; - import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.*; @@ -29,21 +25,30 @@ import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.*; @Service @Validated public class KnowledgeServiceImpl implements KnowledgeService { - + public static final String PROCESS_KEY = "my-test-flow03"; @Resource private KnowledgeMapper knowledgeMapper; @Resource private CommentMapper commentMapper; - + @Resource + private BpmProcessInstanceApi processInstanceApi; @Override @Transactional(rollbackFor = Exception.class) - public Long createKnowledge(KnowledgeSaveReqVO createReqVO) { + public Long createKnowledge(Long userId,KnowledgeSaveReqVO createReqVO) { // 插入 KnowledgeDO knowledge = BeanUtils.toBean(createReqVO, KnowledgeDO.class); knowledgeMapper.insert(knowledge); - // 插入子表 createCommentList(knowledge.getId(), createReqVO.getComments()); + // 发起 BPM 流程 + Map 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(); } @@ -88,6 +93,10 @@ public class KnowledgeServiceImpl implements KnowledgeService { public PageResult getKnowledgePage(KnowledgePageReqVO pageReqVO) { return knowledgeMapper.selectPage(pageReqVO); } + @Override + public PageResult getKnowledgePage(Long userId, KnowledgePageReqVO pageReqVO) { + return knowledgeMapper.selectPage(userId, pageReqVO); + } // ==================== 子表(评论) ==================== @@ -96,6 +105,8 @@ public class KnowledgeServiceImpl implements KnowledgeService { return commentMapper.selectListByKnowId(knowId); } + + private void createCommentList(Long knowId, List list) { list.forEach(o -> o.setKnowId(knowId)); commentMapper.insertBatch(list); diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOALeaveServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOALeaveServiceImpl.java index 0fe8417..40a4545 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOALeaveServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOALeaveServiceImpl.java @@ -34,6 +34,8 @@ public class BpmOALeaveServiceImpl implements BpmOALeaveService { /** * OA 请假对应的流程定义 KEY */ +// public static final String PROCESS_KEY = "oa_leave"; + //my-test-flow02' public static final String PROCESS_KEY = "my-test-flow02"; @Resource