diff --git a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java index fd74e24..de1cba7 100644 --- a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java +++ b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java @@ -91,4 +91,6 @@ public interface ErrorCodeConstants { ErrorCode TBUP_NOT_EXISTS = new ErrorCode( 1_009_019_000, "点赞不存在"); // ========== 文件编辑 1_009_020_000 ========== ErrorCode ONLYOF_NOT_EXISTS = new ErrorCode(1_009_020_000 , "文件编辑不存在"); + // ========== 公共知识 1_009_021_000 ========== + ErrorCode KNOWLEDGE_PUBLIC_NOT_EXISTS = new ErrorCode(1_009_021_000, "公共知识不存在"); } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/knows/KnowledgePublicController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/knows/KnowledgePublicController.java new file mode 100644 index 0000000..256aadc --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/knows/KnowledgePublicController.java @@ -0,0 +1,129 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.knows; + +import cn.hutool.core.collection.CollUtil; +//import cn.iocoder.yudao.module.bpm.convert.knows.KnowledgeConvert; +import cn.iocoder.yudao.module.bpm.dal.dataobject.knows.KnowledgePublicDO; +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.dal.dataobject.dept.DeptDO; +import cn.iocoder.yudao.module.system.service.dept.DeptService; +import org.springframework.web.bind.annotation.*; +import javax.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import javax.validation.constraints.*; +import javax.validation.*; +import javax.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +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 cn.iocoder.yudao.module.bpm.convert.knows.KnowledgePublicConvert; + +import cn.iocoder.yudao.module.bpm.controller.admin.knows.vo.*; +import cn.iocoder.yudao.module.bpm.dal.dataobject.knows.KnowledgePublicDO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.knows.CommentPublicDO; +import cn.iocoder.yudao.module.bpm.service.knows.KnowledgePublicService; + +@Tag(name = "管理后台 - 公共知识") +@RestController +@RequestMapping("/bpm/knowledge-public") +@Validated +public class KnowledgePublicController { + + @Resource + private KnowtypeService knowtypeService; + @Resource + private DeptService deptService; + @Resource + private KnowledgePublicService knowledgePublicService; + + @PostMapping("/create") + @Operation(summary = "创建公共知识") + @PreAuthorize("@ss.hasPermission('bpm:knowledge-public:create')") + public CommonResult createKnowledgePublic(@Valid @RequestBody KnowledgePublicSaveReqVO createReqVO) { + return success(knowledgePublicService.createKnowledgePublic(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新公共知识") + @PreAuthorize("@ss.hasPermission('bpm:knowledge-public:update')") + public CommonResult updateKnowledgePublic(@Valid @RequestBody KnowledgePublicSaveReqVO updateReqVO) { + knowledgePublicService.updateKnowledgePublic(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除公共知识") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('bpm:knowledge-public:delete')") + public CommonResult deleteKnowledgePublic(@RequestParam("id") Long id) { + knowledgePublicService.deleteKnowledgePublic(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得公共知识") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('bpm:knowledge-public:query')") + public CommonResult getKnowledgePublic(@RequestParam("id") Long id) { + KnowledgePublicDO knowledgePublic = knowledgePublicService.getKnowledgePublic(id); + return success(BeanUtils.toBean(knowledgePublic, KnowledgePublicRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得公共知识分页") + @PreAuthorize("@ss.hasPermission('bpm:knowledge-public:query')") + public CommonResult> getKnowledgePublicPage(@Valid KnowledgePublicPageReqVO pageReqVO) { + PageResult pageResult = knowledgePublicService.getKnowledgePublicPage(pageReqVO); + //return success(BeanUtils.toBean(pageResult, KnowledgePublicRespVO.class)); + if (CollUtil.isEmpty(pageResult.getList())) { + return success(new PageResult<>(pageResult.getTotal())); + } + + Map deptMap = deptService.getDeptMap(convertList(pageResult.getList(), KnowledgePublicDO::getDeptId)); + Map knowTypeMap = knowtypeService.getKnowtypeMap(convertList(pageResult.getList(), KnowledgePublicDO::getTypeId)); + // 转换并返回结果 + return success(new PageResult<>(KnowledgePublicConvert.INSTANCE.convertList(pageResult.getList(), deptMap, knowTypeMap), pageResult.getTotal())); + } + + + @GetMapping("/export-excel") + @Operation(summary = "导出公共知识 Excel") + @PreAuthorize("@ss.hasPermission('bpm:knowledge-public:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportKnowledgePublicExcel(@Valid KnowledgePublicPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = knowledgePublicService.getKnowledgePublicPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "公共知识.xls", "数据", KnowledgePublicRespVO.class, + BeanUtils.toBean(list, KnowledgePublicRespVO.class)); + } + + // ==================== 子表(公告知识评论) ==================== + + @GetMapping("/comment-public/list-by-know-id") + @Operation(summary = "获得公告知识评论列表") + @Parameter(name = "knowId", description = "类型id") + @PreAuthorize("@ss.hasPermission('bpm:knowledge-public:query')") + public CommonResult> getCommentPublicListByKnowId(@RequestParam("knowId") Long knowId) { + return success(knowledgePublicService.getCommentPublicListByKnowId(knowId)); + } + +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/knows/vo/KnowledgePublicPageReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/knows/vo/KnowledgePublicPageReqVO.java new file mode 100644 index 0000000..7ee7d47 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/knows/vo/KnowledgePublicPageReqVO.java @@ -0,0 +1,52 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.knows.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 公共知识分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class KnowledgePublicPageReqVO extends PageParam { + + @Schema(description = "作者", example = "芋艿") + private String userName; + + @Schema(description = "类型id", example = "19644") + private Long typeId; + + @Schema(description = "部门id", example = "30380") + private Long deptId; + + @Schema(description = "知识标题") + private String knowTitle; + + @Schema(description = "内容") + private String content; + + @Schema(description = "知识状态", example = "0") + private String status; + + @Schema(description = "文件路径") + private String filePath; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "流程实例的编号", example = "7315") + private String processInstanceId; + + @Schema(description = "申请人的用户编号", example = "16518") + private Long userId; + + @Schema(description = "审批状态", example = "1") + private Integer flowStatus; + +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/knows/vo/KnowledgePublicRespVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/knows/vo/KnowledgePublicRespVO.java new file mode 100644 index 0000000..d28ee16 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/knows/vo/KnowledgePublicRespVO.java @@ -0,0 +1,78 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.knows.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; +import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; +import cn.iocoder.yudao.framework.excel.core.convert.DictConvert; + +@Schema(description = "管理后台 - 公共知识 Response VO") +@Data +@ExcelIgnoreUnannotated +public class KnowledgePublicRespVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28653") + @ExcelProperty("id") + private Long id; + + @Schema(description = "作者", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @ExcelProperty("作者") + private String userName; + + @Schema(description = "类型id", example = "19644") + @ExcelProperty("类型id") + private Long typeId; + + @Schema(description = "类型名称", example = "环境") + @ExcelProperty("类型名称") + private String typeName; + + @Schema(description = "部门名称", example = "IT 部") + @ExcelProperty("部门名称") + private String deptName; + + @Schema(description = "作者名称", example = "张三") + @ExcelProperty("作者名称") + private String nickName; + + @Schema(description = "部门id", example = "30380") + @ExcelProperty("部门id") + private Long deptId; + + @Schema(description = "知识标题") + @ExcelProperty("知识标题") + private String knowTitle; + + @Schema(description = "内容") + @ExcelProperty("内容") + private String content; + + @Schema(description = "知识状态", example = "0") + @ExcelProperty(value = "知识状态", converter = DictConvert.class) + @DictFormat("common_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private String status; + + @Schema(description = "文件路径") + @ExcelProperty("文件路径") + private String [] filePath; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "流程实例的编号", example = "7315") + @ExcelProperty("流程实例的编号") + private String processInstanceId; + + @Schema(description = "申请人的用户编号", example = "16518") + @ExcelProperty("申请人的用户编号") + private Long userId; + + @Schema(description = "审批状态", example = "1") + @ExcelProperty("审批状态") + private Integer flowStatus; + +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/knows/vo/KnowledgePublicSaveReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/knows/vo/KnowledgePublicSaveReqVO.java new file mode 100644 index 0000000..88e2411 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/knows/vo/KnowledgePublicSaveReqVO.java @@ -0,0 +1,50 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.knows.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import cn.iocoder.yudao.module.bpm.dal.dataobject.knows.CommentPublicDO; + +@Schema(description = "管理后台 - 公共知识新增/修改 Request VO") +@Data +public class KnowledgePublicSaveReqVO { + + @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28653") + private Long id; + + @Schema(description = "作者", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotEmpty(message = "作者不能为空") + private String userName; + + @Schema(description = "类型id", example = "19644") + private Long typeId; + + @Schema(description = "部门id", example = "30380") + private Long deptId; + + @Schema(description = "知识标题") + private String knowTitle; + + @Schema(description = "内容") + private String content; + + @Schema(description = "知识状态", example = "0") + private String status; + + @Schema(description = "文件路径") + private String [] filePath; + + @Schema(description = "流程实例的编号", example = "7315") + private String processInstanceId; + + @Schema(description = "申请人的用户编号", example = "16518") + private Long userId; + + @Schema(description = "审批状态", example = "1") + private Integer flowStatus; + + @Schema(description = "公告知识评论列表") + private List commentPublics; + +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/knows/KnowledgePublicConvert.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/knows/KnowledgePublicConvert.java new file mode 100644 index 0000000..fe714d5 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/knows/KnowledgePublicConvert.java @@ -0,0 +1,60 @@ +package cn.iocoder.yudao.module.bpm.convert.knows; + +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.bpm.controller.admin.knows.vo.KnowledgePublicRespVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.knows.KnowledgePublicDO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.knows.KnowtypeDO; +import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Mapper +public interface KnowledgePublicConvert { + KnowledgePublicConvert INSTANCE = Mappers.getMapper(KnowledgePublicConvert.class); +// default List convertList(List list, Map deptMap) { +// return CollectionUtils.convertList(list, konw -> convert(konw, deptMap.get(konw.getDeptId()))); +// } +// 列表转换方法 +// default List convertList(List list, Map deptMap, Map knowTypeMap,Map userMap) { +// return list.stream().map(knowledgeDO -> { +// DeptDO deptDO = deptMap.get(knowledgeDO.getDeptId()); +// KnowtypeDO knowtypeDO = knowTypeMap.get(knowledgeDO.getTypeId()); +// AdminUserDO userDO = userMap.get(knowledgeDO.getUserid()); +// return convert(knowledgeDO, deptDO, knowtypeDO,userDO); +// }).collect(Collectors.toList()); +// } + default List convertList(List list, Map deptMap, Map knowTypeMap) { + return list.stream().map(knowledgePublicDO -> { + DeptDO deptDO = deptMap.get(knowledgePublicDO.getDeptId()); + KnowtypeDO knowtypeDO = knowTypeMap.get(knowledgePublicDO.getTypeId()); + return convert(knowledgePublicDO, deptDO, knowtypeDO); + }).collect(Collectors.toList()); + } + default KnowledgePublicRespVO convert(KnowledgePublicDO konw, DeptDO dept, KnowtypeDO knowtype) { + KnowledgePublicRespVO KnowledgePublicVO = BeanUtils.toBean(konw, KnowledgePublicRespVO.class); + if (dept != null) { + KnowledgePublicVO.setDeptName(dept.getName()); + } + if (knowtype != null) { + KnowledgePublicVO.setTypeName(knowtype.getName()); + } + return KnowledgePublicVO; + } +// default KnowledgeRespVO convert(KnowledgeDO konw, DeptDO dept, KnowtypeDO knowtype, AdminUserDO user) { +// KnowledgeRespVO KnowledgeVO = BeanUtils.toBean(konw, KnowledgeRespVO.class); +// if (dept != null) { +// KnowledgeVO.setDeptName(dept.getName()); +// } +// if (knowtype != null) { +// KnowledgeVO.setTypeName(knowtype.getName()); +// } +// if (user != null) { +// KnowledgeVO.setNickName(user.getNickname()); +// } +// return KnowledgeVO; +// } +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/knows/CommentPublicDO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/knows/CommentPublicDO.java new file mode 100644 index 0000000..7321969 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/knows/CommentPublicDO.java @@ -0,0 +1,39 @@ +package cn.iocoder.yudao.module.bpm.dal.dataobject.knows; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 公告知识评论 DO + * + * @author 君风 + */ +@TableName("des_comment_public") +@KeySequence("des_comment_public_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class CommentPublicDO extends BaseDO { + + /** + * id + */ + @TableId + private Long id; + /** + * 类型id + */ + private Long knowId; + /** + * 内容 + */ + private String content; + +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/knows/KnowledgePublicDO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/knows/KnowledgePublicDO.java new file mode 100644 index 0000000..0b0627c --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/knows/KnowledgePublicDO.java @@ -0,0 +1,73 @@ +package cn.iocoder.yudao.module.bpm.dal.dataobject.knows; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 公共知识 DO + * + * @author 君风 + */ +@TableName("des_knowledge_public") +@KeySequence("des_knowledge_public_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class KnowledgePublicDO extends BaseDO { + + /** + * id + */ + @TableId + private Long id; + /** + * 作者 + */ + private String userName; + /** + * 类型id + */ + private Long typeId; + /** + * 部门id + */ + private Long deptId; + /** + * 知识标题 + */ + private String knowTitle; + /** + * 内容 + */ + private String content; + /** + * 知识状态 + * + * 枚举 {@link TODO common_status 对应的类} + */ + private String status; + /** + * 文件路径 + */ + private String filePath; + /** + * 流程实例的编号 + */ + private String processInstanceId; + /** + * 申请人的用户编号 + */ + private Long userId; + /** + * 审批状态 + */ + private Integer flowStatus; + +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/knows/CommentPublicMapper.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/knows/CommentPublicMapper.java new file mode 100644 index 0000000..039bafa --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/knows/CommentPublicMapper.java @@ -0,0 +1,28 @@ +package cn.iocoder.yudao.module.bpm.dal.mysql.knows; + +import java.util.*; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +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.CommentPublicDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 公告知识评论 Mapper + * + * @author 君风 + */ +@Mapper +public interface CommentPublicMapper extends BaseMapperX { + + default List selectListByKnowId(Long knowId) { + return selectList(CommentPublicDO::getKnowId, knowId); + } + + default int deleteByKnowId(Long knowId) { + return delete(CommentPublicDO::getKnowId, knowId); + } + +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/knows/KnowledgePublicMapper.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/knows/KnowledgePublicMapper.java new file mode 100644 index 0000000..79532e3 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/knows/KnowledgePublicMapper.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.module.bpm.dal.mysql.knows; + +import java.util.*; + +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.KnowledgePublicDO; +import org.apache.ibatis.annotations.Mapper; +import cn.iocoder.yudao.module.bpm.controller.admin.knows.vo.*; + +/** + * 公共知识 Mapper + * + * @author 君风 + */ +@Mapper +public interface KnowledgePublicMapper extends BaseMapperX { + + default PageResult selectPage(KnowledgePublicPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(KnowledgePublicDO::getUserName, reqVO.getUserName()) + .eqIfPresent(KnowledgePublicDO::getTypeId, reqVO.getTypeId()) + .eqIfPresent(KnowledgePublicDO::getDeptId, reqVO.getDeptId()) + .likeIfPresent(KnowledgePublicDO::getKnowTitle, reqVO.getKnowTitle()) + .likeIfPresent(KnowledgePublicDO::getContent, reqVO.getContent()) + .eqIfPresent(KnowledgePublicDO::getStatus, reqVO.getStatus()) + .eqIfPresent(KnowledgePublicDO::getFilePath, reqVO.getFilePath()) + .betweenIfPresent(KnowledgePublicDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(KnowledgePublicDO::getProcessInstanceId, reqVO.getProcessInstanceId()) + .eqIfPresent(KnowledgePublicDO::getUserId, reqVO.getUserId()) + .eqIfPresent(KnowledgePublicDO::getFlowStatus, reqVO.getFlowStatus()) + .orderByDesc(KnowledgePublicDO::getId)); + } + +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/knows/KnowledgePublicService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/knows/KnowledgePublicService.java new file mode 100644 index 0000000..15be010 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/knows/KnowledgePublicService.java @@ -0,0 +1,66 @@ +package cn.iocoder.yudao.module.bpm.service.knows; + +import java.util.*; +import javax.validation.*; +import cn.iocoder.yudao.module.bpm.controller.admin.knows.vo.*; +import cn.iocoder.yudao.module.bpm.dal.dataobject.knows.KnowledgePublicDO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.knows.CommentPublicDO; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; + +/** + * 公共知识 Service 接口 + * + * @author 君风 + */ +public interface KnowledgePublicService { + + /** + * 创建公共知识 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createKnowledgePublic(@Valid KnowledgePublicSaveReqVO createReqVO); + + /** + * 更新公共知识 + * + * @param updateReqVO 更新信息 + */ + void updateKnowledgePublic(@Valid KnowledgePublicSaveReqVO updateReqVO); + + /** + * 删除公共知识 + * + * @param id 编号 + */ + void deleteKnowledgePublic(Long id); + + /** + * 获得公共知识 + * + * @param id 编号 + * @return 公共知识 + */ + KnowledgePublicDO getKnowledgePublic(Long id); + + /** + * 获得公共知识分页 + * + * @param pageReqVO 分页查询 + * @return 公共知识分页 + */ + PageResult getKnowledgePublicPage(KnowledgePublicPageReqVO pageReqVO); + + // ==================== 子表(公告知识评论) ==================== + + /** + * 获得公告知识评论列表 + * + * @param knowId 类型id + * @return 公告知识评论列表 + */ + List getCommentPublicListByKnowId(Long knowId); + +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/knows/KnowledgePublicServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/knows/KnowledgePublicServiceImpl.java new file mode 100644 index 0000000..ebdf8aa --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/knows/KnowledgePublicServiceImpl.java @@ -0,0 +1,112 @@ +package cn.iocoder.yudao.module.bpm.service.knows; + +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +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.KnowledgePublicDO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.knows.CommentPublicDO; +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.KnowledgePublicMapper; +import cn.iocoder.yudao.module.bpm.dal.mysql.knows.CommentPublicMapper; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.bpm.enums.ErrorCodeConstants.*; + +/** + * 公共知识 Service 实现类 + * + * @author 君风 + */ +@Service +@Validated +public class KnowledgePublicServiceImpl implements KnowledgePublicService { + + @Resource + private KnowledgePublicMapper knowledgePublicMapper; + @Resource + private CommentPublicMapper commentPublicMapper; + + @Override + @Transactional(rollbackFor = Exception.class) + public Long createKnowledgePublic(KnowledgePublicSaveReqVO createReqVO) { + // 插入 + KnowledgePublicDO knowledgePublic = BeanUtils.toBean(createReqVO, KnowledgePublicDO.class); + knowledgePublicMapper.insert(knowledgePublic); + + // 插入子表 + createCommentPublicList(knowledgePublic.getId(), createReqVO.getCommentPublics()); + // 返回 + return knowledgePublic.getId(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateKnowledgePublic(KnowledgePublicSaveReqVO updateReqVO) { + // 校验存在 + validateKnowledgePublicExists(updateReqVO.getId()); + // 更新 + KnowledgePublicDO updateObj = BeanUtils.toBean(updateReqVO, KnowledgePublicDO.class); + knowledgePublicMapper.updateById(updateObj); + + // 更新子表 + updateCommentPublicList(updateReqVO.getId(), updateReqVO.getCommentPublics()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteKnowledgePublic(Long id) { + // 校验存在 + validateKnowledgePublicExists(id); + // 删除 + knowledgePublicMapper.deleteById(id); + + // 删除子表 + deleteCommentPublicByKnowId(id); + } + + private void validateKnowledgePublicExists(Long id) { + if (knowledgePublicMapper.selectById(id) == null) { + throw exception(KNOWLEDGE_PUBLIC_NOT_EXISTS); + } + } + + @Override + public KnowledgePublicDO getKnowledgePublic(Long id) { + return knowledgePublicMapper.selectById(id); + } + + @Override + public PageResult getKnowledgePublicPage(KnowledgePublicPageReqVO pageReqVO) { + return knowledgePublicMapper.selectPage(pageReqVO); + } + + // ==================== 子表(公告知识评论) ==================== + + @Override + public List getCommentPublicListByKnowId(Long knowId) { + return commentPublicMapper.selectListByKnowId(knowId); + } + + private void createCommentPublicList(Long knowId, List list) { + list.forEach(o -> o.setKnowId(knowId)); + commentPublicMapper.insertBatch(list); + } + + private void updateCommentPublicList(Long knowId, List list) { + deleteCommentPublicByKnowId(knowId); + list.forEach(o -> o.setId(null).setUpdater(null).setUpdateTime(null)); // 解决更新情况下:1)id 冲突;2)updateTime 不更新 + createCommentPublicList(knowId, list); + } + + private void deleteCommentPublicByKnowId(Long knowId) { + commentPublicMapper.deleteByKnowId(knowId); + } + +} diff --git a/yudao-server/src/main/resources/application.yaml b/yudao-server/src/main/resources/application.yaml index 91cabce..2408ac7 100644 --- a/yudao-server/src/main/resources/application.yaml +++ b/yudao-server/src/main/resources/application.yaml @@ -223,7 +223,7 @@ yudao: topic: ${spring.application.name}-websocket # 消息发送的 Kafka Topic consumer-group: ${spring.application.name}-websocket-consumer # 消息发送的 Kafka Consumer Group swagger: - title: 芋道快速开发平台 + title: 君凤科技快速开发平台 description: 提供管理后台、用户 App 的所有功能 version: ${yudao.info.version} url: ${yudao.web.admin-ui.url}