瀏覽代碼

feat:知识库

daizhengxiao 2 天之前
父節點
當前提交
b742086764
共有 46 個文件被更改,包括 1113 次插入76 次删除
  1. 10 0
      yudao-module-dms-api/src/main/java/cn/iocoder/yudao/module/dms/enums/ErrorCodeConstants.java
  2. 93 0
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/controller/admin/article/ArticleController.java
  3. 57 0
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/controller/admin/article/vo/ArticlePageReqVO.java
  4. 67 0
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/controller/admin/article/vo/ArticleRespVO.java
  5. 46 0
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/controller/admin/article/vo/ArticleSaveReqVO.java
  6. 90 0
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/controller/admin/articlecatogry/ArticleCatogryController.java
  7. 16 0
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/controller/admin/articlecatogry/vo/ArticleCatogryListReqVO.java
  8. 52 0
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/controller/admin/articlecatogry/vo/ArticleCatogryRespVO.java
  9. 40 0
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/controller/admin/articlecatogry/vo/ArticleCatogrySaveReqVO.java
  10. 3 4
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/controller/admin/checktask/DmsCheckTaskController.java
  11. 0 1
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/controller/admin/checktaskitem/DmsCheckTaskItemController.java
  12. 2 2
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/controller/admin/checktemplate/DmsCheckTemplateController.java
  13. 3 3
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/controller/admin/device/DmsDeviceController.java
  14. 74 0
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/dal/dataobject/article/ArticleDO.java
  15. 69 0
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/dal/dataobject/articlecatogry/ArticleCatogryDO.java
  16. 8 6
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/dal/dataobject/checkplan/DmsCheckPlanDO.java
  17. 7 6
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/dal/dataobject/checktask/DmsCheckTaskDO.java
  18. 3 3
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/dal/dataobject/checktemplateitem/DmsCheckTemplateItemDO.java
  19. 35 0
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/dal/pgsql/article/ArticleMapper.java
  20. 34 0
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/dal/pgsql/articlecatogry/ArticleCatogryMapper.java
  21. 1 1
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/dal/pgsql/checktaskitem/DmsCheckTaskItemMapper.java
  22. 2 2
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/dal/pgsql/checktemplate/DmsCheckTemplateMapper.java
  23. 55 0
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/service/article/ArticleService.java
  24. 71 0
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/service/article/ArticleServiceImpl.java
  25. 55 0
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/service/articlecatogry/ArticleCatogryService.java
  26. 134 0
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/service/articlecatogry/ArticleCatogryServiceImpl.java
  27. 4 4
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/service/checkplan/DmsCheckPlanServiceImpl.java
  28. 4 0
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/service/checktask/DmsCheckTaskService.java
  29. 22 17
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/service/checktask/DmsCheckTaskServiceImpl.java
  30. 1 0
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/service/checktaskitem/DmsCheckTaskItemService.java
  31. 2 1
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/service/checktemplate/DmsCheckTemplateService.java
  32. 5 2
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/service/device/DmsDeviceService.java
  33. 2 2
      yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/service/device/DmsDeviceServiceImpl.java
  34. 12 0
      yudao-module-dms-biz/src/main/resources/mapper/article/ArticleMapper.xml
  35. 12 0
      yudao-module-dms-biz/src/main/resources/mapper/articlecatogry/ArticleCatogryMapper.xml
  36. 2 2
      yudao-module-dms-biz/src/main/resources/mapper/checkplan/DmsCheckPlanMapper.xml
  37. 2 2
      yudao-module-dms-biz/src/main/resources/mapper/checktask/DmsCheckTaskMapper.xml
  38. 2 2
      yudao-module-dms-biz/src/main/resources/mapper/checktaskitem/DmsCheckTaskItemMapper.xml
  39. 2 2
      yudao-module-dms-biz/src/main/resources/mapper/checktemplate/DmsCheckTemplateMapper.xml
  40. 2 2
      yudao-module-dms-biz/src/main/resources/mapper/checktemplateclassify/DmsCheckTemplateClassifyMapper.xml
  41. 2 2
      yudao-module-dms-biz/src/main/resources/mapper/checktemplateitem/DmsCheckTemplateItemMapper.xml
  42. 2 2
      yudao-module-dms-biz/src/main/resources/mapper/device/DmsDeviceMapper.xml
  43. 2 2
      yudao-module-dms-biz/src/main/resources/mapper/deviceattribute/DmsDeviceAttributeMapper.xml
  44. 2 2
      yudao-module-dms-biz/src/main/resources/mapper/deviceclassify/DmsDeviceClassifyMapper.xml
  45. 2 2
      yudao-module-dms-biz/src/main/resources/mapper/devicerepair/DmsDeviceRepairMapper.xml
  46. 2 2
      yudao-module-dms-biz/src/main/resources/mapper/relationorg/DmsRelationOrgMapper.xml

+ 10 - 0
yudao-module-dms-api/src/main/java/cn/iocoder/yudao/module/dms/enums/ErrorCodeConstants.java

@@ -46,5 +46,15 @@ public interface ErrorCodeConstants {
     // ========== 往来单位 ==========
     ErrorCode RELATION_ORG_NOT_EXISTS = new ErrorCode(1_003_011_001, "往来单位不存在");
     ErrorCode RELATION_CONTRACT_NOT_EXISTS = new ErrorCode(1_003_011_002, "往来单位联系人不存在");
+
+    // ========== 知识库 ==========
+    ErrorCode ARTICLE_CATOGRY_NOT_EXISTS = new ErrorCode(1_003_012_001, "知识库分类不存在");
+    ErrorCode ARTICLE_CATOGRY_EXITS_CHILDREN = new ErrorCode(1_003_012_002, "存在存在子知识库分类,无法删除");
+    ErrorCode ARTICLE_CATOGRY_PARENT_NOT_EXITS = new ErrorCode(1_003_012_003,"父级知识库分类不存在");
+    ErrorCode ARTICLE_CATOGRY_PARENT_ERROR = new ErrorCode(1_003_012_004, "不能设置自己为父知识库分类");
+    ErrorCode ARTICLE_CATOGRY_PARENT_NAME_DUPLICATE = new ErrorCode(1_003_012_005, "已经存在该父分类名称的知识库分类");
+    ErrorCode ARTICLE_CATOGRY_PARENT_IS_CHILD = new ErrorCode(1_003_012_006, "不能将自己的子分类设置为父级");
+
+    ErrorCode ARTICLE_NOT_EXISTS = new ErrorCode(1_003_012_007, "知识库不存在");
 }
 

+ 93 - 0
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/controller/admin/article/ArticleController.java

@@ -0,0 +1,93 @@
+package cn.iocoder.yudao.module.dms.controller.admin.article;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.module.dms.controller.admin.article.vo.ArticlePageReqVO;
+import cn.iocoder.yudao.module.dms.controller.admin.article.vo.ArticleRespVO;
+import cn.iocoder.yudao.module.dms.controller.admin.article.vo.ArticleSaveReqVO;
+import cn.iocoder.yudao.module.dms.dal.dataobject.article.ArticleDO;
+import cn.iocoder.yudao.module.dms.service.article.ArticleService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 知识库")
+@RestController
+@RequestMapping("/dms/article")
+@Validated
+public class ArticleController {
+
+    @Resource
+    private ArticleService articleService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建知识库")
+    @PreAuthorize("@ss.hasPermission('dms:article:create')")
+    public CommonResult<Long> createArticle(@Valid @RequestBody ArticleSaveReqVO createReqVO) {
+        return success(articleService.createArticle(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新知识库")
+    @PreAuthorize("@ss.hasPermission('dms:article:update')")
+    public CommonResult<Boolean> updateArticle(@Valid @RequestBody ArticleSaveReqVO updateReqVO) {
+        articleService.updateArticle(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除知识库")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('dms:article:delete')")
+    public CommonResult<Boolean> deleteArticle(@RequestParam("id") Long id) {
+        articleService.deleteArticle(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得知识库")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('dms:article:query')")
+    public CommonResult<ArticleRespVO> getArticle(@RequestParam("id") Long id) {
+        ArticleDO article = articleService.getArticle(id);
+        return success(BeanUtils.toBean(article, ArticleRespVO.class));
+    }
+
+    @GetMapping("/page")
+    @Operation(summary = "获得知识库分页")
+    @PreAuthorize("@ss.hasPermission('dms:article:query')")
+    public CommonResult<PageResult<ArticleRespVO>> getArticlePage(@Valid ArticlePageReqVO pageReqVO) {
+        PageResult<ArticleDO> pageResult = articleService.getArticlePage(pageReqVO);
+        return success(BeanUtils.toBean(pageResult, ArticleRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出知识库 Excel")
+    @PreAuthorize("@ss.hasPermission('dms:article:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportArticleExcel(@Valid ArticlePageReqVO pageReqVO,
+                                   HttpServletResponse response) throws IOException {
+        pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
+        List<ArticleDO> list = articleService.getArticlePage(pageReqVO).getList();
+        // 导出 Excel
+        ExcelUtils.write(response, "知识库.xls", "数据", ArticleRespVO.class,
+                BeanUtils.toBean(list, ArticleRespVO.class));
+    }
+
+}

+ 57 - 0
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/controller/admin/article/vo/ArticlePageReqVO.java

@@ -0,0 +1,57 @@
+package cn.iocoder.yudao.module.dms.controller.admin.article.vo;
+
+import cn.iocoder.yudao.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.ToString;
+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 ArticlePageReqVO extends PageParam {
+
+    @Schema(description = "文章标题")
+    private String title;
+
+    @Schema(description = "标签")
+    private String tags;
+
+    @Schema(description = "文章内容")
+    private String content;
+
+    @Schema(description = "文章分类ID", example = "23516")
+    private Long cid;
+
+    @Schema(description = "文章分类名称", example = "王五")
+    private String cname;
+
+    @Schema(description = "作者ID", example = "17240")
+    private Long uid;
+
+    @Schema(description = "作者", example = "李四")
+    private String uname;
+
+    @Schema(description = "设备ID", example = "20022")
+    private Long deviceId;
+
+    @Schema(description = "设备名称", example = "王五")
+    private String deviceName;
+
+    @Schema(description = "使用标识")
+    private Integer useFlag;
+
+    @Schema(description = "创建时间")
+    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
+    private LocalDateTime[] createTime;
+
+    @Schema(description = "版本")
+    private String version;
+
+}

+ 67 - 0
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/controller/admin/article/vo/ArticleRespVO.java

@@ -0,0 +1,67 @@
+package cn.iocoder.yudao.module.dms.controller.admin.article.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 知识库 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class ArticleRespVO {
+
+    @Schema(description = "主键 自增长", requiredMode = Schema.RequiredMode.REQUIRED, example = "12715")
+    @ExcelProperty("主键 自增长")
+    private Long id;
+
+    @Schema(description = "文章标题")
+    @ExcelProperty("文章标题")
+    private String title;
+
+    @Schema(description = "标签")
+    @ExcelProperty("标签")
+    private String tags;
+
+    @Schema(description = "文章内容")
+    @ExcelProperty("文章内容")
+    private String content;
+
+    @Schema(description = "文章分类ID", example = "23516")
+    @ExcelProperty("文章分类ID")
+    private Long cid;
+
+    @Schema(description = "文章分类名称", example = "王五")
+    @ExcelProperty("文章分类名称")
+    private String cname;
+
+    @Schema(description = "作者ID", example = "17240")
+    @ExcelProperty("作者ID")
+    private Long uid;
+
+    @Schema(description = "作者", example = "李四")
+    @ExcelProperty("作者")
+    private String uname;
+
+    @Schema(description = "设备ID", example = "20022")
+    @ExcelProperty("设备ID")
+    private Long deviceId;
+
+    @Schema(description = "设备名称", example = "王五")
+    @ExcelProperty("设备名称")
+    private String deviceName;
+
+    @Schema(description = "使用标识")
+    @ExcelProperty("使用标识")
+    private Integer useFlag;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @Schema(description = "版本")
+    @ExcelProperty("版本")
+    private String version;
+
+}

+ 46 - 0
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/controller/admin/article/vo/ArticleSaveReqVO.java

@@ -0,0 +1,46 @@
+package cn.iocoder.yudao.module.dms.controller.admin.article.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "管理后台 - 知识库新增/修改 Request VO")
+@Data
+public class ArticleSaveReqVO {
+
+    @Schema(description = "主键 自增长", requiredMode = Schema.RequiredMode.REQUIRED, example = "12715")
+    private Long id;
+
+    @Schema(description = "文章标题")
+    private String title;
+
+    @Schema(description = "标签")
+    private String tags;
+
+    @Schema(description = "文章内容")
+    private String content;
+
+    @Schema(description = "文章分类ID", example = "23516")
+    private Long cid;
+
+    @Schema(description = "文章分类名称", example = "王五")
+    private String cname;
+
+    @Schema(description = "作者ID", example = "17240")
+    private Long uid;
+
+    @Schema(description = "作者", example = "李四")
+    private String uname;
+
+    @Schema(description = "设备ID", example = "20022")
+    private Long deviceId;
+
+    @Schema(description = "设备名称", example = "王五")
+    private String deviceName;
+
+    @Schema(description = "使用标识")
+    private Integer useFlag;
+
+    @Schema(description = "版本")
+    private String version;
+
+}

+ 90 - 0
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/controller/admin/articlecatogry/ArticleCatogryController.java

@@ -0,0 +1,90 @@
+package cn.iocoder.yudao.module.dms.controller.admin.articlecatogry;
+
+import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
+import cn.iocoder.yudao.framework.common.pojo.CommonResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
+import cn.iocoder.yudao.module.dms.controller.admin.articlecatogry.vo.ArticleCatogryListReqVO;
+import cn.iocoder.yudao.module.dms.controller.admin.articlecatogry.vo.ArticleCatogryRespVO;
+import cn.iocoder.yudao.module.dms.controller.admin.articlecatogry.vo.ArticleCatogrySaveReqVO;
+import cn.iocoder.yudao.module.dms.dal.dataobject.articlecatogry.ArticleCatogryDO;
+import cn.iocoder.yudao.module.dms.service.articlecatogry.ArticleCatogryService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.List;
+
+import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
+import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
+
+@Tag(name = "管理后台 - 文章分类")
+@RestController
+@RequestMapping("/dms/article-catogry")
+@Validated
+public class ArticleCatogryController {
+
+    @Resource
+    private ArticleCatogryService articleCatogryService;
+
+    @PostMapping("/create")
+    @Operation(summary = "创建文章分类")
+    @PreAuthorize("@ss.hasPermission('dms:article-catogry:create')")
+    public CommonResult<Long> createArticleCatogry(@Valid @RequestBody ArticleCatogrySaveReqVO createReqVO) {
+        return success(articleCatogryService.createArticleCatogry(createReqVO));
+    }
+
+    @PutMapping("/update")
+    @Operation(summary = "更新文章分类")
+    @PreAuthorize("@ss.hasPermission('dms:article-catogry:update')")
+    public CommonResult<Boolean> updateArticleCatogry(@Valid @RequestBody ArticleCatogrySaveReqVO updateReqVO) {
+        articleCatogryService.updateArticleCatogry(updateReqVO);
+        return success(true);
+    }
+
+    @DeleteMapping("/delete")
+    @Operation(summary = "删除文章分类")
+    @Parameter(name = "id", description = "编号", required = true)
+    @PreAuthorize("@ss.hasPermission('dms:article-catogry:delete')")
+    public CommonResult<Boolean> deleteArticleCatogry(@RequestParam("id") Long id) {
+        articleCatogryService.deleteArticleCatogry(id);
+        return success(true);
+    }
+
+    @GetMapping("/get")
+    @Operation(summary = "获得文章分类")
+    @Parameter(name = "id", description = "编号", required = true, example = "1024")
+    @PreAuthorize("@ss.hasPermission('dms:article-catogry:query')")
+    public CommonResult<ArticleCatogryRespVO> getArticleCatogry(@RequestParam("id") Long id) {
+        ArticleCatogryDO articleCatogry = articleCatogryService.getArticleCatogry(id);
+        return success(BeanUtils.toBean(articleCatogry, ArticleCatogryRespVO.class));
+    }
+
+    @GetMapping("/list")
+    @Operation(summary = "获得文章分类列表")
+    @PreAuthorize("@ss.hasPermission('dms:article-catogry:query')")
+    public CommonResult<List<ArticleCatogryRespVO>> getArticleCatogryList(@Valid ArticleCatogryListReqVO listReqVO) {
+        List<ArticleCatogryDO> list = articleCatogryService.getArticleCatogryList(listReqVO);
+        return success(BeanUtils.toBean(list, ArticleCatogryRespVO.class));
+    }
+
+    @GetMapping("/export-excel")
+    @Operation(summary = "导出文章分类 Excel")
+    @PreAuthorize("@ss.hasPermission('dms:article-catogry:export')")
+    @ApiAccessLog(operateType = EXPORT)
+    public void exportArticleCatogryExcel(@Valid ArticleCatogryListReqVO listReqVO,
+                                          HttpServletResponse response) throws IOException {
+        List<ArticleCatogryDO> list = articleCatogryService.getArticleCatogryList(listReqVO);
+        // 导出 Excel
+        ExcelUtils.write(response, "文章分类.xls", "数据", ArticleCatogryRespVO.class,
+                BeanUtils.toBean(list, ArticleCatogryRespVO.class));
+    }
+
+}

+ 16 - 0
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/controller/admin/articlecatogry/vo/ArticleCatogryListReqVO.java

@@ -0,0 +1,16 @@
+package cn.iocoder.yudao.module.dms.controller.admin.articlecatogry.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "管理后台 - 文章分类列表 Request VO")
+@Data
+public class ArticleCatogryListReqVO {
+
+    @Schema(description = "文章分类名称")
+    private String name;
+
+    @Schema(description = "文章分类名称")
+    private Long parentId;
+
+}

+ 52 - 0
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/controller/admin/articlecatogry/vo/ArticleCatogryRespVO.java

@@ -0,0 +1,52 @@
+package cn.iocoder.yudao.module.dms.controller.admin.articlecatogry.vo;
+
+import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
+import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "管理后台 - 文章分类 Response VO")
+@Data
+@ExcelIgnoreUnannotated
+public class ArticleCatogryRespVO {
+
+    @Schema(description = "ID")
+    @ExcelProperty("主键")
+    private Long id;
+
+    @Schema(description = "文章分类名称")
+    @ExcelProperty("文章分类名称")
+    private String name;
+
+    @Schema(description = "文章分类代码")
+    private String code;
+
+    @Schema(description = "父ID")
+    private Long parentId;
+
+    @Schema(description = "备注")
+    @ExcelProperty("备注")
+    private String note;
+
+    @Schema(description = "级别")
+    @ExcelProperty("级别")
+    private Integer level;
+
+    @Schema(description = "显示序列")
+    @ExcelProperty("显示序列")
+    private Integer orderNum;
+
+    @Schema(description = "使用标识")
+    @ExcelProperty(value = "使用标识", converter = DictConvert.class)
+    @DictFormat("common_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
+    private Integer useFlag;
+
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private LocalDateTime createTime;
+
+}

+ 40 - 0
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/controller/admin/articlecatogry/vo/ArticleCatogrySaveReqVO.java

@@ -0,0 +1,40 @@
+package cn.iocoder.yudao.module.dms.controller.admin.articlecatogry.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Schema(description = "管理后台 - 文章分类新增/修改 Request VO")
+@Data
+public class ArticleCatogrySaveReqVO {
+
+    @Schema(description = "ID 自增长", requiredMode = Schema.RequiredMode.REQUIRED)
+    private Long id;
+
+    @Schema(description = "文章分类名称")
+    private String name;
+
+    @Schema(description = "文章分类代码")
+    private String code;
+
+    @Schema(description = "父ID")
+    private Long parentId;
+
+    @Schema(description = "父子级联代码")
+    private String pcode;
+
+    @Schema(description = "父分类名称")
+    private String parentName;
+
+    @Schema(description = "备注")
+    private String note;
+
+    @Schema(description = "级别")
+    private Integer level;
+
+    @Schema(description = "显示序列")
+    private Integer orderNum;
+
+    @Schema(description = "使用标识")
+    private Integer useFlag;
+
+}

+ 3 - 4
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/controller/admin/checktask/DmsCheckTaskController.java

@@ -104,9 +104,10 @@ public class DmsCheckTaskController {
     @GetMapping("/tasks")
     @Operation(summary = "统计任务数量")
     @PreAuthorize("@ss.hasPermission('dms:check-task:query')")
-    public CommonResult<Map<String,Object>> tasks() {
+    public CommonResult<Map<String, Object>> tasks() {
         return success(checkTaskService.tasks());
     }
+
     @PostMapping("/countCur")
     @Operation(summary = "统计未完成任务数量")
     @PreAuthorize("@ss.hasPermission('dms:check-task:query')")
@@ -115,8 +116,6 @@ public class DmsCheckTaskController {
     }
 
 
-
-
     @PutMapping("/tmpSave")
     @Operation(summary = "任务暂存")
     @PreAuthorize("@ss.hasPermission('dms:check-task:update')")
@@ -134,7 +133,7 @@ public class DmsCheckTaskController {
     @PostMapping("/getFirst")
     @Operation(summary = "获得点巡检任务分页")
     @PreAuthorize("@ss.hasPermission('dms:check-task:query')")
-    public CommonResult<DmsCheckTaskRespVO> getFirst( @RequestBody DmsCheckTaskPageReqVO pageReqVO) {
+    public CommonResult<DmsCheckTaskRespVO> getFirst(@RequestBody DmsCheckTaskPageReqVO pageReqVO) {
         DmsCheckTaskDO res = checkTaskService.getFirst(pageReqVO);
         return success(BeanUtils.toBean(res, DmsCheckTaskRespVO.class));
     }

+ 0 - 1
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/controller/admin/checktaskitem/DmsCheckTaskItemController.java

@@ -99,5 +99,4 @@ public class DmsCheckTaskItemController {
     }
 
 
-
 }

+ 2 - 2
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/controller/admin/checktemplate/DmsCheckTemplateController.java

@@ -84,7 +84,7 @@ public class DmsCheckTemplateController {
     @PreAuthorize("@ss.hasPermission('dms:check-template:query')")
     public CommonResult<List<DmsCheckTemplateRespVO>> getCheckTemplateList(@Valid DmsCheckTemplatePageReqVO pageReqVO) {
         List<DmsCheckTemplateDO> listResult = checkTemplateService.getCheckTemplateList(pageReqVO);
-        return success(BeanUtils.toBean(listResult,DmsCheckTemplateRespVO.class));
+        return success(BeanUtils.toBean(listResult, DmsCheckTemplateRespVO.class));
     }
 
     @GetMapping("/export-excel")
@@ -142,4 +142,4 @@ public class DmsCheckTemplateController {
         return success(checkTemplateService.getCheckTemplateItem(id));
     }
 
-}
+}

+ 3 - 3
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/controller/admin/device/DmsDeviceController.java

@@ -93,15 +93,15 @@ public class DmsDeviceController {
     @PostMapping("/location")
     @Operation(summary = "设备定位")
     @PreAuthorize("@ss.hasPermission('dms:device:update')")
-    public CommonResult<Long> location( @RequestBody DmsDeviceSaveReqVO createReqVO) {
+    public CommonResult<Long> location(@RequestBody DmsDeviceSaveReqVO createReqVO) {
         return success(deviceService.location(createReqVO));
     }
 
     @PostMapping("/locationCount")
     @Operation(summary = "设备未定位数量统计")
     @PreAuthorize("@ss.hasPermission('dms:device:query')")
-    public CommonResult<Long> locationCount( @RequestBody DmsDeviceSaveReqVO saveReqVO) {
+    public CommonResult<Long> locationCount(@RequestBody DmsDeviceSaveReqVO saveReqVO) {
         return success(deviceService.locationCount(saveReqVO));
     }
 
-}
+}

+ 74 - 0
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/dal/dataobject/article/ArticleDO.java

@@ -0,0 +1,74 @@
+package cn.iocoder.yudao.module.dms.dal.dataobject.article;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.KeySequence;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+/**
+ * 知识库 DO
+ *
+ * @author dzx
+ */
+@TableName("dms_article")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ArticleDO extends BaseDO {
+
+    /**
+     * 主键 自增长
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+    /**
+     * 文章标题
+     */
+    private String title;
+    /**
+     * 标签
+     */
+    private String tags;
+    /**
+     * 文章内容
+     */
+    private String content;
+    /**
+     * 文章分类ID
+     */
+    private Long cid;
+    /**
+     * 文章分类名称
+     */
+    private String cname;
+    /**
+     * 作者ID
+     */
+    private Long uid;
+    /**
+     * 作者
+     */
+    private String uname;
+    /**
+     * 设备ID
+     */
+    private Long deviceId;
+    /**
+     * 设备名称
+     */
+    private String deviceName;
+    /**
+     * 使用标识
+     */
+    private Integer useFlag;
+    /**
+     * 版本
+     */
+    private String version;
+
+}

+ 69 - 0
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/dal/dataobject/articlecatogry/ArticleCatogryDO.java

@@ -0,0 +1,69 @@
+package cn.iocoder.yudao.module.dms.dal.dataobject.articlecatogry;
+
+import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.*;
+
+/**
+ * 文章分类 DO
+ *
+ * @author dzx
+ */
+@TableName("dms_article_catogry")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@ToString(callSuper = true)
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ArticleCatogryDO extends BaseDO {
+
+    public static final Long PARENT_ID_ROOT = 0L;
+
+    /**
+     * ID 自增长
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+    /**
+     * 文章分类名称
+     */
+    private String name;
+    /**
+     * 文章分类代码
+     */
+    private String code;
+    /**
+     * 父ID
+     */
+    private Long parentId;
+    /**
+     * 父子级联代码
+     */
+    private String pcode;
+    /**
+     * 父分类名称
+     */
+    private String parentName;
+    /**
+     * 备注
+     */
+    private String note;
+    /**
+     * 级别
+     */
+    private Integer level;
+    /**
+     * 显示序列
+     */
+    private Integer orderNum;
+    /**
+     * 使用标识
+     * <p>
+     * 枚举 {@link TODO common_status 对应的类}
+     */
+    private Integer useFlag;
+
+}

+ 8 - 6
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/dal/dataobject/checkplan/DmsCheckPlanDO.java

@@ -146,8 +146,8 @@ public class DmsCheckPlanDO extends TenantBaseDO {
      */
     private Long deptName;
 
-    public DmsCheckTaskDO buildTask(){
-        return  DmsCheckTaskDO.builder().uuid(UUID.randomUUID().toString()).deviceId(this.deviceId).deviceName(this.deviceName)
+    public DmsCheckTaskDO buildTask() {
+        return DmsCheckTaskDO.builder().uuid(UUID.randomUUID().toString()).deviceId(this.deviceId).deviceName(this.deviceName)
                 .deviceCode(this.deviceCode).checkTemplateId(this.checkTemplateId).checkTemplateName(this.checkTemplateName)
                 .templateClassifyId(this.templateClassifyId).templateClassifyName(this.templateClassifyName)
                 .templateClassifyCode(this.templateClassifyCode).deviceClassifyId(this.deviceClassifyId).checkPeriodType(this.checkPeriodType)
@@ -156,11 +156,13 @@ public class DmsCheckPlanDO extends TenantBaseDO {
                 .deptId(this.deptId).deptName(this.deptName).deviceCode(this.deviceCode).createTime(LocalDateTime.now())
                 .checkPlanId(this.id).checkPlanName(this.name).build();
     }
-    public Integer oneTotal(){
-        return this.checkPeriodType*(this.checkPeriodTime+this.checkPeriodInterval);
+
+    public Integer oneTotal() {
+        return this.checkPeriodType * (this.checkPeriodTime + this.checkPeriodInterval);
     }
-    public Integer executeTotal(){
-        return this.checkPeriodType*this.checkPeriodTime;
+
+    public Integer executeTotal() {
+        return this.checkPeriodType * this.checkPeriodTime;
     }
 
 }

+ 7 - 6
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/dal/dataobject/checktask/DmsCheckTaskDO.java

@@ -174,15 +174,16 @@ public class DmsCheckTaskDO extends BaseDO {
     @TableField(exist = false)
     private List<DmsCheckTaskItemDO> checkTaskItems = Lists.newArrayList();
 
-    public String getStartTimeStr(){
-        return Objects.isNull(this.startTime)?"": LocalDateTimeUtil.format(this.startTime,"yyyy-MM-dd HH:mm:ss");
+    public String getStartTimeStr() {
+        return Objects.isNull(this.startTime) ? "" : LocalDateTimeUtil.format(this.startTime, "yyyy-MM-dd HH:mm:ss");
     }
 
-    public String getEndTimeStr(){
-        return Objects.isNull(this.endTime)?"": LocalDateTimeUtil.format(this.endTime,"yyyy-MM-dd HH:mm:ss");
+    public String getEndTimeStr() {
+        return Objects.isNull(this.endTime) ? "" : LocalDateTimeUtil.format(this.endTime, "yyyy-MM-dd HH:mm:ss");
     }
-    public String getExecutorTimeStr(){
-        return Objects.isNull(this.executorTime)?"": LocalDateTimeUtil.format(this.executorTime,"yyyy-MM-dd HH:mm:ss");
+
+    public String getExecutorTimeStr() {
+        return Objects.isNull(this.executorTime) ? "" : LocalDateTimeUtil.format(this.executorTime, "yyyy-MM-dd HH:mm:ss");
     }
 
 }

+ 3 - 3
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/dal/dataobject/checktemplateitem/DmsCheckTemplateItemDO.java

@@ -57,10 +57,10 @@ public class DmsCheckTemplateItemDO extends BaseDO {
      */
     private Short useFlag;
 
-    public DmsCheckTaskItemDO buildCheckTaskItem(){
-        DmsCheckTaskItemDO checkTaskItemDO  = DmsCheckTaskItemDO.builder().checkTemplateId(this.checkTemplateId).uuid(UUID.randomUUID().toString()).name(this.name)
+    public DmsCheckTaskItemDO buildCheckTaskItem() {
+        DmsCheckTaskItemDO checkTaskItemDO = DmsCheckTaskItemDO.builder().checkTemplateId(this.checkTemplateId).uuid(UUID.randomUUID().toString()).name(this.name)
                 .note(this.note).checkTemplateItemId(this.id).checkTemplateItemName(this.name).orderNum(this.orderNum).build();
         checkTaskItemDO.setCreateTime(LocalDateTime.now());
         return checkTaskItemDO;
     }
-}
+}

+ 35 - 0
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/dal/pgsql/article/ArticleMapper.java

@@ -0,0 +1,35 @@
+package cn.iocoder.yudao.module.dms.dal.pgsql.article;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.dms.controller.admin.article.vo.ArticlePageReqVO;
+import cn.iocoder.yudao.module.dms.dal.dataobject.article.ArticleDO;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 知识库 Mapper
+ *
+ * @author dzx
+ */
+@Mapper
+public interface ArticleMapper extends BaseMapperX<ArticleDO> {
+
+    default PageResult<ArticleDO> selectPage(ArticlePageReqVO reqVO) {
+        return selectPage(reqVO, new LambdaQueryWrapperX<ArticleDO>()
+                .eqIfPresent(ArticleDO::getTitle, reqVO.getTitle())
+                .eqIfPresent(ArticleDO::getTags, reqVO.getTags())
+                .eqIfPresent(ArticleDO::getContent, reqVO.getContent())
+                .eqIfPresent(ArticleDO::getCid, reqVO.getCid())
+                .likeIfPresent(ArticleDO::getCname, reqVO.getCname())
+                .eqIfPresent(ArticleDO::getUid, reqVO.getUid())
+                .likeIfPresent(ArticleDO::getUname, reqVO.getUname())
+                .eqIfPresent(ArticleDO::getDeviceId, reqVO.getDeviceId())
+                .likeIfPresent(ArticleDO::getDeviceName, reqVO.getDeviceName())
+                .eqIfPresent(ArticleDO::getUseFlag, reqVO.getUseFlag())
+                .betweenIfPresent(ArticleDO::getCreateTime, reqVO.getCreateTime())
+                .eqIfPresent(ArticleDO::getVersion, reqVO.getVersion())
+                .orderByDesc(ArticleDO::getId));
+    }
+
+}

+ 34 - 0
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/dal/pgsql/articlecatogry/ArticleCatogryMapper.java

@@ -0,0 +1,34 @@
+package cn.iocoder.yudao.module.dms.dal.pgsql.articlecatogry;
+
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
+import cn.iocoder.yudao.module.dms.controller.admin.articlecatogry.vo.ArticleCatogryListReqVO;
+import cn.iocoder.yudao.module.dms.dal.dataobject.articlecatogry.ArticleCatogryDO;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * 文章分类 Mapper
+ *
+ * @author dzx
+ */
+@Mapper
+public interface ArticleCatogryMapper extends BaseMapperX<ArticleCatogryDO> {
+
+    default List<ArticleCatogryDO> selectList(ArticleCatogryListReqVO reqVO) {
+        return selectList(new LambdaQueryWrapperX<ArticleCatogryDO>()
+                .likeIfPresent(ArticleCatogryDO::getName, reqVO.getName())
+                .eqIfPresent(ArticleCatogryDO::getParentId, reqVO.getParentId())
+                .orderByDesc(ArticleCatogryDO::getId));
+    }
+
+    default ArticleCatogryDO selectByParentIdAndParentName(Long parentId, String parentName) {
+        return selectOne(ArticleCatogryDO::getParentId, parentId, ArticleCatogryDO::getParentName, parentName);
+    }
+
+    default Long selectCountByParentId(Long parentId) {
+        return selectCount(ArticleCatogryDO::getParentId, parentId);
+    }
+
+}

+ 1 - 1
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/dal/pgsql/checktaskitem/DmsCheckTaskItemMapper.java

@@ -35,7 +35,7 @@ public interface DmsCheckTaskItemMapper extends BaseMapperX<DmsCheckTaskItemDO>
     }
 
     default List<DmsCheckTaskItemDO> selectList(DmsCheckTaskItemPageReqVO reqVO) {
-        return selectList( new LambdaQueryWrapperX<DmsCheckTaskItemDO>()
+        return selectList(new LambdaQueryWrapperX<DmsCheckTaskItemDO>()
                 .eqIfPresent(DmsCheckTaskItemDO::getCheckTemplateId, reqVO.getCheckTemplateId())
                 .eqIfPresent(DmsCheckTaskItemDO::getCheckTaskId, reqVO.getCheckTaskId())
                 .eqIfPresent(DmsCheckTaskItemDO::getUuid, reqVO.getUuid())

+ 2 - 2
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/dal/pgsql/checktemplate/DmsCheckTemplateMapper.java

@@ -34,7 +34,7 @@ public interface DmsCheckTemplateMapper extends BaseMapperX<DmsCheckTemplateDO>
     }
 
     default List<DmsCheckTemplateDO> selectList(DmsCheckTemplatePageReqVO reqVO) {
-        return selectList( new LambdaQueryWrapperX<DmsCheckTemplateDO>()
+        return selectList(new LambdaQueryWrapperX<DmsCheckTemplateDO>()
                 .likeIfPresent(DmsCheckTemplateDO::getName, reqVO.getName())
                 .eqIfPresent(DmsCheckTemplateDO::getCheckItems, reqVO.getCheckItems())
                 .eqIfPresent(DmsCheckTemplateDO::getClassifyId, reqVO.getClassifyId())
@@ -49,4 +49,4 @@ public interface DmsCheckTemplateMapper extends BaseMapperX<DmsCheckTemplateDO>
                 .orderByDesc(DmsCheckTemplateDO::getId));
     }
 
-}
+}

+ 55 - 0
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/service/article/ArticleService.java

@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.module.dms.service.article;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.dms.controller.admin.article.vo.ArticlePageReqVO;
+import cn.iocoder.yudao.module.dms.controller.admin.article.vo.ArticleSaveReqVO;
+import cn.iocoder.yudao.module.dms.dal.dataobject.article.ArticleDO;
+
+import javax.validation.Valid;
+
+/**
+ * 知识库 Service 接口
+ *
+ * @author dzx
+ */
+public interface ArticleService {
+
+    /**
+     * 创建知识库
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createArticle(@Valid ArticleSaveReqVO createReqVO);
+
+    /**
+     * 更新知识库
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateArticle(@Valid ArticleSaveReqVO updateReqVO);
+
+    /**
+     * 删除知识库
+     *
+     * @param id 编号
+     */
+    void deleteArticle(Long id);
+
+    /**
+     * 获得知识库
+     *
+     * @param id 编号
+     * @return 知识库
+     */
+    ArticleDO getArticle(Long id);
+
+    /**
+     * 获得知识库分页
+     *
+     * @param pageReqVO 分页查询
+     * @return 知识库分页
+     */
+    PageResult<ArticleDO> getArticlePage(ArticlePageReqVO pageReqVO);
+
+}

+ 71 - 0
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/service/article/ArticleServiceImpl.java

@@ -0,0 +1,71 @@
+package cn.iocoder.yudao.module.dms.service.article;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.dms.controller.admin.article.vo.ArticlePageReqVO;
+import cn.iocoder.yudao.module.dms.controller.admin.article.vo.ArticleSaveReqVO;
+import cn.iocoder.yudao.module.dms.dal.dataobject.article.ArticleDO;
+import cn.iocoder.yudao.module.dms.dal.pgsql.article.ArticleMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.dms.enums.ErrorCodeConstants.ARTICLE_NOT_EXISTS;
+
+/**
+ * 知识库 Service 实现类
+ *
+ * @author dzx
+ */
+@Service
+@Validated
+public class ArticleServiceImpl implements ArticleService {
+
+    @Resource
+    private ArticleMapper articleMapper;
+
+    @Override
+    public Long createArticle(ArticleSaveReqVO createReqVO) {
+        // 插入
+        ArticleDO article = BeanUtils.toBean(createReqVO, ArticleDO.class);
+        articleMapper.insert(article);
+        // 返回
+        return article.getId();
+    }
+
+    @Override
+    public void updateArticle(ArticleSaveReqVO updateReqVO) {
+        // 校验存在
+        validateArticleExists(updateReqVO.getId());
+        // 更新
+        ArticleDO updateObj = BeanUtils.toBean(updateReqVO, ArticleDO.class);
+        articleMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteArticle(Long id) {
+        // 校验存在
+        validateArticleExists(id);
+        // 删除
+        articleMapper.deleteById(id);
+    }
+
+    private void validateArticleExists(Long id) {
+        if (articleMapper.selectById(id) == null) {
+            throw exception(ARTICLE_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public ArticleDO getArticle(Long id) {
+        return articleMapper.selectById(id);
+    }
+
+    @Override
+    public PageResult<ArticleDO> getArticlePage(ArticlePageReqVO pageReqVO) {
+        return articleMapper.selectPage(pageReqVO);
+    }
+
+}

+ 55 - 0
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/service/articlecatogry/ArticleCatogryService.java

@@ -0,0 +1,55 @@
+package cn.iocoder.yudao.module.dms.service.articlecatogry;
+
+import cn.iocoder.yudao.module.dms.controller.admin.articlecatogry.vo.ArticleCatogryListReqVO;
+import cn.iocoder.yudao.module.dms.controller.admin.articlecatogry.vo.ArticleCatogrySaveReqVO;
+import cn.iocoder.yudao.module.dms.dal.dataobject.articlecatogry.ArticleCatogryDO;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 文章分类 Service 接口
+ *
+ * @author dzx
+ */
+public interface ArticleCatogryService {
+
+    /**
+     * 创建文章分类
+     *
+     * @param createReqVO 创建信息
+     * @return 编号
+     */
+    Long createArticleCatogry(@Valid ArticleCatogrySaveReqVO createReqVO);
+
+    /**
+     * 更新文章分类
+     *
+     * @param updateReqVO 更新信息
+     */
+    void updateArticleCatogry(@Valid ArticleCatogrySaveReqVO updateReqVO);
+
+    /**
+     * 删除文章分类
+     *
+     * @param id 编号
+     */
+    void deleteArticleCatogry(Long id);
+
+    /**
+     * 获得文章分类
+     *
+     * @param id 编号
+     * @return 文章分类
+     */
+    ArticleCatogryDO getArticleCatogry(Long id);
+
+    /**
+     * 获得文章分类列表
+     *
+     * @param listReqVO 查询条件
+     * @return 文章分类列表
+     */
+    List<ArticleCatogryDO> getArticleCatogryList(ArticleCatogryListReqVO listReqVO);
+
+}

+ 134 - 0
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/service/articlecatogry/ArticleCatogryServiceImpl.java

@@ -0,0 +1,134 @@
+package cn.iocoder.yudao.module.dms.service.articlecatogry;
+
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
+import cn.iocoder.yudao.module.dms.controller.admin.articlecatogry.vo.ArticleCatogryListReqVO;
+import cn.iocoder.yudao.module.dms.controller.admin.articlecatogry.vo.ArticleCatogrySaveReqVO;
+import cn.iocoder.yudao.module.dms.dal.dataobject.articlecatogry.ArticleCatogryDO;
+import cn.iocoder.yudao.module.dms.dal.pgsql.articlecatogry.ArticleCatogryMapper;
+import org.springframework.stereotype.Service;
+import org.springframework.validation.annotation.Validated;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Objects;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.dms.enums.ErrorCodeConstants.*;
+
+/**
+ * 文章分类 Service 实现类
+ *
+ * @author dzx
+ */
+@Service
+@Validated
+public class ArticleCatogryServiceImpl implements ArticleCatogryService {
+
+    @Resource
+    private ArticleCatogryMapper articleCatogryMapper;
+
+    @Override
+    public Long createArticleCatogry(ArticleCatogrySaveReqVO createReqVO) {
+        // 校验父ID的有效性
+        validateParentArticleCatogry(null, createReqVO.getParentId());
+        // 校验父分类名称的唯一性
+        validateArticleCatogryParentNameUnique(null, createReqVO.getParentId(), createReqVO.getParentName());
+
+        // 插入
+        ArticleCatogryDO articleCatogry = BeanUtils.toBean(createReqVO, ArticleCatogryDO.class);
+        articleCatogryMapper.insert(articleCatogry);
+        // 返回
+        return articleCatogry.getId();
+    }
+
+    @Override
+    public void updateArticleCatogry(ArticleCatogrySaveReqVO updateReqVO) {
+        // 校验存在
+        validateArticleCatogryExists(updateReqVO.getId());
+        // 校验父ID的有效性
+        validateParentArticleCatogry(updateReqVO.getId(), updateReqVO.getParentId());
+        // 校验父分类名称的唯一性
+        validateArticleCatogryParentNameUnique(updateReqVO.getId(), updateReqVO.getParentId(), updateReqVO.getParentName());
+
+        // 更新
+        ArticleCatogryDO updateObj = BeanUtils.toBean(updateReqVO, ArticleCatogryDO.class);
+        articleCatogryMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteArticleCatogry(Long id) {
+        // 校验存在
+        validateArticleCatogryExists(id);
+        // 校验是否有子文章分类
+        if (articleCatogryMapper.selectCountByParentId(id) > 0) {
+            throw exception(ARTICLE_CATOGRY_EXITS_CHILDREN);
+        }
+        // 删除
+        articleCatogryMapper.deleteById(id);
+    }
+
+    private void validateArticleCatogryExists(Long id) {
+        if (articleCatogryMapper.selectById(id) == null) {
+            throw exception(ARTICLE_CATOGRY_NOT_EXISTS);
+        }
+    }
+
+    private void validateParentArticleCatogry(Long id, Long parentId) {
+        if (parentId == null || ArticleCatogryDO.PARENT_ID_ROOT.equals(parentId)) {
+            return;
+        }
+        // 1. 不能设置自己为父文章分类
+        if (Objects.equals(id, parentId)) {
+            throw exception(ARTICLE_CATOGRY_PARENT_ERROR);
+        }
+        // 2. 父文章分类不存在
+        ArticleCatogryDO parentArticleCatogry = articleCatogryMapper.selectById(parentId);
+        if (parentArticleCatogry == null) {
+            throw exception(ARTICLE_CATOGRY_PARENT_NOT_EXITS);
+        }
+        // 3. 递归校验父文章分类,如果父文章分类是自己的子文章分类,则报错,避免形成环路
+        if (id == null) { // id 为空,说明新增,不需要考虑环路
+            return;
+        }
+        for (int i = 0; i < Short.MAX_VALUE; i++) {
+            // 3.1 校验环路
+            parentId = parentArticleCatogry.getParentId();
+            if (Objects.equals(id, parentId)) {
+                throw exception(ARTICLE_CATOGRY_PARENT_IS_CHILD);
+            }
+            // 3.2 继续递归下一级父文章分类
+            if (parentId == null || ArticleCatogryDO.PARENT_ID_ROOT.equals(parentId)) {
+                break;
+            }
+            parentArticleCatogry = articleCatogryMapper.selectById(parentId);
+            if (parentArticleCatogry == null) {
+                break;
+            }
+        }
+    }
+
+    private void validateArticleCatogryParentNameUnique(Long id, Long parentId, String parentName) {
+        ArticleCatogryDO articleCatogry = articleCatogryMapper.selectByParentIdAndParentName(parentId, parentName);
+        if (articleCatogry == null) {
+            return;
+        }
+        // 如果 id 为空,说明不用比较是否为相同 id 的文章分类
+        if (id == null) {
+            throw exception(ARTICLE_CATOGRY_PARENT_NAME_DUPLICATE);
+        }
+        if (!Objects.equals(articleCatogry.getId(), id)) {
+            throw exception(ARTICLE_CATOGRY_PARENT_NAME_DUPLICATE);
+        }
+    }
+
+    @Override
+    public ArticleCatogryDO getArticleCatogry(Long id) {
+        return articleCatogryMapper.selectById(id);
+    }
+
+    @Override
+    public List<ArticleCatogryDO> getArticleCatogryList(ArticleCatogryListReqVO listReqVO) {
+        return articleCatogryMapper.selectList(listReqVO);
+    }
+
+}

+ 4 - 4
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/service/checkplan/DmsCheckPlanServiceImpl.java

@@ -157,8 +157,8 @@ public class DmsCheckPlanServiceImpl implements DmsCheckPlanService {
                             //首次生成任务
                             for (int i = 0; i < cp.getTaskNum(); i++) {
                                 DmsCheckTaskDO checkTask = cp.buildTask().setStatus(0)
-                                        .setStartTime(cp.getStartTime().plusHours(i * cp.oneTotal()))
-                                        .setEndTime(cp.getStartTime().plusHours(i * cp.oneTotal() + cp.executeTotal()));
+                                        .setStartTime(cp.getStartTime().plusHours((long) i * cp.oneTotal()))
+                                        .setEndTime(cp.getStartTime().plusHours((long) i * cp.oneTotal() + cp.executeTotal()));
                                 checkTaskMapper.insert(checkTask);
                                 dmsCheckTaskItemService.saveBatch(genCheckTaskItems(checkTask));
                             }
@@ -166,8 +166,8 @@ public class DmsCheckPlanServiceImpl implements DmsCheckPlanService {
                             //非首次生成任务
                             for (int i = 1; i <= cp.getTaskNum() - dbTasNum; i++) {
                                 DmsCheckTaskDO checkTask = cp.buildTask().setStatus(0)
-                                        .setStartTime(lastCheckTask.getStartTime().plusHours(i * cp.oneTotal()))
-                                        .setEndTime(lastCheckTask.getStartTime().plusHours(i * cp.oneTotal() + cp.executeTotal()));
+                                        .setStartTime(lastCheckTask.getStartTime().plusHours((long) i * cp.oneTotal()))
+                                        .setEndTime(lastCheckTask.getStartTime().plusHours((long) i * cp.oneTotal() + cp.executeTotal()));
                                 checkTaskMapper.insert(checkTask);
                                 dmsCheckTaskItemService.saveBatch(genCheckTaskItems(checkTask));
 

+ 4 - 0
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/service/checktask/DmsCheckTaskService.java

@@ -62,6 +62,7 @@ public interface DmsCheckTaskService {
 
     /**
      * 任务暂存
+     *
      * @param checkTask
      * @return
      */
@@ -69,6 +70,7 @@ public interface DmsCheckTaskService {
 
     /**
      * 任务提交
+     *
      * @param checkTask
      * @return
      */
@@ -76,6 +78,7 @@ public interface DmsCheckTaskService {
 
     /**
      * 统计当前用户未完成任务数量
+     *
      * @param checkTask
      * @return
      */
@@ -83,6 +86,7 @@ public interface DmsCheckTaskService {
 
     /**
      * 获取第一个(最早的)任务
+     *
      * @param pageReqVO
      * @return
      */

+ 22 - 17
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/service/checktask/DmsCheckTaskServiceImpl.java

@@ -87,13 +87,13 @@ public class DmsCheckTaskServiceImpl implements DmsCheckTaskService {
     public Map<String, Object> tasks() {
 //        User user = this.userMapper.selectById(Convert.toLong(StpUtil.getLoginId()));
         Long userId = SecurityFrameworkUtils.getLoginUserId();
-        LocalDateTime now  = LocalDateTime.now();
+        LocalDateTime now = LocalDateTime.now();
         Long total = this.checkTaskMapper.selectCount(new LambdaQueryWrapper<DmsCheckTaskDO>()
-                .eq(DmsCheckTaskDO::getExecutorId,userId).le(DmsCheckTaskDO::getStartTime,now)
+                .eq(DmsCheckTaskDO::getExecutorId, userId).le(DmsCheckTaskDO::getStartTime, now)
                 .eq(DmsCheckTaskDO::getUseFlag, 1));
         Long end = this.checkTaskMapper.selectCount(new LambdaQueryWrapper<DmsCheckTaskDO>()
-                .eq(DmsCheckTaskDO::getExecutorId,userId).le(DmsCheckTaskDO::getStartTime,now)
-                .eq(DmsCheckTaskDO::getUseFlag, 1).eq(DmsCheckTaskDO::getEndFlag,1));
+                .eq(DmsCheckTaskDO::getExecutorId, userId).le(DmsCheckTaskDO::getStartTime, now)
+                .eq(DmsCheckTaskDO::getUseFlag, 1).eq(DmsCheckTaskDO::getEndFlag, 1));
 
         List<DmsCheckTaskDO> checkTasks = this.checkTaskMapper.selectList(new LambdaQueryWrapper<DmsCheckTaskDO>()
                 .eq(DmsCheckTaskDO::getExecutorId, userId).eq(DmsCheckTaskDO::getUseFlag, 1)
@@ -113,36 +113,41 @@ public class DmsCheckTaskServiceImpl implements DmsCheckTaskService {
         map.put("endTasks", endList);
         return map;
     }
+
     @Override
     public String tmpSave(DmsCheckTaskDO checkTask) {
         LocalDateTime now = LocalDateTime.now();
-        this.checkTaskMapper.update(null, new LambdaUpdateWrapper<DmsCheckTaskDO>().set(DmsCheckTaskDO::getNote,checkTask.getNote())
-                .set(DmsCheckTaskDO::getUpdateTime,now).set(DmsCheckTaskDO::getStatus,2).
-                eq(DmsCheckTaskDO::getId,checkTask.getId()));
+        this.checkTaskMapper.update(null, new LambdaUpdateWrapper<DmsCheckTaskDO>().set(DmsCheckTaskDO::getNote, checkTask.getNote())
+                .set(DmsCheckTaskDO::getUpdateTime, now).set(DmsCheckTaskDO::getStatus, 2).
+                eq(DmsCheckTaskDO::getId, checkTask.getId()));
 
         Map<Long, DmsCheckTaskItemDO> itemMap = checkTask.getCheckTaskItems().stream().collect(Collectors.toMap(item -> item.getId(), item -> item));
         List<DmsCheckTaskItemDO> taskItems = this.checkTaskItemMapper.selectList(new LambdaQueryWrapper<DmsCheckTaskItemDO>()
                 .eq(DmsCheckTaskItemDO::getCheckTaskId, checkTask.getId()).eq(DmsCheckTaskItemDO::getUseFlag, 1));
-        taskItems.stream().forEach(item->{item.setContent(itemMap.get(item.getId()).getContent())
-                .setImgs(itemMap.get(item.getId()).getImgs()).setUpdateTime(now);});
+        taskItems.stream().forEach(item -> {
+            item.setContent(itemMap.get(item.getId()).getContent())
+                    .setImgs(itemMap.get(item.getId()).getImgs()).setUpdateTime(now);
+        });
         this.checkTaskItemMapper.updateBatch(taskItems);
-        return"任务暂存成功!";
+        return "任务暂存成功!";
     }
 
     @Override
     public String commit(DmsCheckTaskDO checkTask) {
         LocalDateTime now = LocalDateTime.now();
-        this.checkTaskMapper.update(null, new LambdaUpdateWrapper<DmsCheckTaskDO>().set(DmsCheckTaskDO::getNote,checkTask.getNote())
-                .set(DmsCheckTaskDO::getStatus,3)
-                .set(DmsCheckTaskDO::getExecutorTime,now).set(DmsCheckTaskDO::getUpdateTime,now)
-                .set(DmsCheckTaskDO::getEndFlag,1).eq(DmsCheckTaskDO::getId,checkTask.getId()));
+        this.checkTaskMapper.update(null, new LambdaUpdateWrapper<DmsCheckTaskDO>().set(DmsCheckTaskDO::getNote, checkTask.getNote())
+                .set(DmsCheckTaskDO::getStatus, 3)
+                .set(DmsCheckTaskDO::getExecutorTime, now).set(DmsCheckTaskDO::getUpdateTime, now)
+                .set(DmsCheckTaskDO::getEndFlag, 1).eq(DmsCheckTaskDO::getId, checkTask.getId()));
 
         Map<Long, DmsCheckTaskItemDO> itemMap = checkTask.getCheckTaskItems().stream().collect(Collectors.toMap(item -> item.getId(), item -> item));
         LambdaQueryWrapper<DmsCheckTaskItemDO> eq = new LambdaQueryWrapper<DmsCheckTaskItemDO>().eq(DmsCheckTaskItemDO::getUseFlag, 1)
                 .eq(DmsCheckTaskItemDO::getCheckTaskId, checkTask.getId());
         List<DmsCheckTaskItemDO> taskItems = this.checkTaskItemMapper.selectList(eq);
-        taskItems.stream().forEach(item->{item.setContent(itemMap.get(item.getId()).getContent())
-                .setImgs(itemMap.get(item.getId()).getImgs()).setUpdateTime(now);});
+        taskItems.stream().forEach(item -> {
+            item.setContent(itemMap.get(item.getId()).getContent())
+                    .setImgs(itemMap.get(item.getId()).getImgs()).setUpdateTime(now);
+        });
         this.checkTaskItemMapper.updateBatch(taskItems);
 
         return "任务暂存成功!";
@@ -153,7 +158,7 @@ public class DmsCheckTaskServiceImpl implements DmsCheckTaskService {
 
         LambdaQueryWrapper<DmsCheckTaskDO> wrapper = new LambdaQueryWrapper<DmsCheckTaskDO>()
                 .eq(DmsCheckTaskDO::getEndFlag, 0);
-        if(Objects.nonNull(checkTask.getExecutorId())){
+        if (Objects.nonNull(checkTask.getExecutorId())) {
             wrapper.eq(DmsCheckTaskDO::getExecutorId, checkTask.getExecutorId());
         }
         return this.checkTaskMapper.selectCount(wrapper);

+ 1 - 0
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/service/checktaskitem/DmsCheckTaskItemService.java

@@ -53,6 +53,7 @@ public interface DmsCheckTaskItemService extends IService<DmsCheckTaskItemDO> {
      * @return 点巡检任务检查项分页
      */
     PageResult<DmsCheckTaskItemDO> getCheckTaskItemPage(DmsCheckTaskItemPageReqVO pageReqVO);
+
     /**
      * 获得点巡检任务检查项列表
      *

+ 2 - 1
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/service/checktemplate/DmsCheckTemplateService.java

@@ -57,6 +57,7 @@ public interface DmsCheckTemplateService {
 
     /**
      * 获取巡检模板列表
+     *
      * @param pageReqVO
      * @return
      */
@@ -102,4 +103,4 @@ public interface DmsCheckTemplateService {
      */
     DmsCheckTemplateItemDO getCheckTemplateItem(Long id);
 
-}
+}

+ 5 - 2
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/service/device/DmsDeviceService.java

@@ -54,16 +54,19 @@ public interface DmsDeviceService {
 
     /**
      * 设备定位
+     *
      * @param saveReqVO
      * @return
      */
-    Long location( DmsDeviceSaveReqVO saveReqVO);
+    Long location(DmsDeviceSaveReqVO saveReqVO);
+
     /**
      * 统计设备未定数量
+     *
      * @param device
      * @return
      */
     Long locationCount(DmsDeviceSaveReqVO device);
 
 
-}
+}

+ 2 - 2
yudao-module-dms-biz/src/main/java/cn/iocoder/yudao/module/dms/service/device/DmsDeviceServiceImpl.java

@@ -83,10 +83,10 @@ public class DmsDeviceServiceImpl implements DmsDeviceService {
     @Override
     public Long locationCount(DmsDeviceSaveReqVO device) {
         LambdaQueryWrapper<DmsDeviceDO> queryWrapper = new LambdaQueryWrapper<DmsDeviceDO>().isNull(DmsDeviceDO::getLng);
-        if(Objects.nonNull(device.getManagerId())){
+        if (Objects.nonNull(device.getManagerId())) {
             queryWrapper.eq(DmsDeviceDO::getManagerId, device.getManagerId());
         }
-        return   this.dmsDeviceMapper.selectCount(queryWrapper);
+        return this.dmsDeviceMapper.selectCount(queryWrapper);
     }
 
 }

+ 12 - 0
yudao-module-dms-biz/src/main/resources/mapper/article/ArticleMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.iocoder.yudao.module.dms.dal.pgsql.article.ArticleMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 12 - 0
yudao-module-dms-biz/src/main/resources/mapper/articlecatogry/ArticleCatogryMapper.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="cn.iocoder.yudao.module.dms.dal.pgsql.articlecatogry.ArticleCatogryMapper">
+
+    <!--
+        一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
+        无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
+        代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
+        文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
+     -->
+
+</mapper>

+ 2 - 2
yudao-module-dms-biz/src/main/resources/mapper/checkplan/DmsCheckPlanMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="cn.iocoder.yudao.module.dms.dal.mysql.checkplan.DmsCheckPlanMapper">
+<mapper namespace="cn.iocoder.yudao.module.dms.dal.pgsql.checkplan.DmsCheckPlanMapper">
 
     <!--
         一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
@@ -9,4 +9,4 @@
         文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
      -->
 
-</mapper>
+</mapper>

+ 2 - 2
yudao-module-dms-biz/src/main/resources/mapper/checktask/DmsCheckTaskMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="cn.iocoder.yudao.module.dms.dal.mysql.checktask.DmsCheckTaskMapper">
+<mapper namespace="cn.iocoder.yudao.module.dms.dal.pgsql.checktask.DmsCheckTaskMapper">
 
     <!--
         一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
@@ -9,4 +9,4 @@
         文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
      -->
 
-</mapper>
+</mapper>

+ 2 - 2
yudao-module-dms-biz/src/main/resources/mapper/checktaskitem/DmsCheckTaskItemMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="cn.iocoder.yudao.module.dms.dal.mysql.checktaskitem.DmsCheckTaskItemMapper">
+<mapper namespace="cn.iocoder.yudao.module.dms.dal.pgsql.checktaskitem.DmsCheckTaskItemMapper">
 
     <!--
         一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
@@ -9,4 +9,4 @@
         文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
      -->
 
-</mapper>
+</mapper>

+ 2 - 2
yudao-module-dms-biz/src/main/resources/mapper/checktemplate/DmsCheckTemplateMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="cn.iocoder.yudao.module.dms.dal.mysql.checktemplate.DmsCheckTemplateMapper">
+<mapper namespace="cn.iocoder.yudao.module.dms.dal.pgsql.checktemplate.DmsCheckTemplateMapper">
 
     <!--
         一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
@@ -9,4 +9,4 @@
         文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
      -->
 
-</mapper>
+</mapper>

+ 2 - 2
yudao-module-dms-biz/src/main/resources/mapper/checktemplateclassify/DmsCheckTemplateClassifyMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="cn.iocoder.yudao.module.dms.dal.mysql.checktemplateclassify.DmsCheckTemplateClassifyMapper">
+<mapper namespace="cn.iocoder.yudao.module.dms.dal.pgsql.checktemplateclassify.DmsCheckTemplateClassifyMapper">
 
     <!--
         一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
@@ -9,4 +9,4 @@
         文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
      -->
 
-</mapper>
+</mapper>

+ 2 - 2
yudao-module-dms-biz/src/main/resources/mapper/checktemplateitem/DmsCheckTemplateItemMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="cn.iocoder.yudao.module.dms.dal.mysql.checktemplateitem.DmsCheckTemplateItemMapper">
+<mapper namespace="cn.iocoder.yudao.module.dms.dal.pgsql.checktemplateitem.DmsCheckTemplateItemMapper">
 
     <!--
         一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
@@ -9,4 +9,4 @@
         文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
      -->
 
-</mapper>
+</mapper>

+ 2 - 2
yudao-module-dms-biz/src/main/resources/mapper/device/DmsDeviceMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="cn.iocoder.yudao.module.dms.dal.mysql.device.DmsDeviceMapper">
+<mapper namespace="cn.iocoder.yudao.module.dms.dal.pgsql.device.DmsDeviceMapper">
 
     <!--
         一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
@@ -9,4 +9,4 @@
         文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
      -->
 
-</mapper>
+</mapper>

+ 2 - 2
yudao-module-dms-biz/src/main/resources/mapper/deviceattribute/DmsDeviceAttributeMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="cn.iocoder.yudao.module.dms.dal.mysql.deviceattribute.DmsDeviceAttributeMapper">
+<mapper namespace="cn.iocoder.yudao.module.dms.dal.pgsql.deviceattribute.DmsDeviceAttributeMapper">
 
     <!--
         一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
@@ -9,4 +9,4 @@
         文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
      -->
 
-</mapper>
+</mapper>

+ 2 - 2
yudao-module-dms-biz/src/main/resources/mapper/deviceclassify/DmsDeviceClassifyMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="cn.iocoder.yudao.module.dms.dal.mysql.deviceclassify.DmsDeviceClassifyMapper">
+<mapper namespace="cn.iocoder.yudao.module.dms.dal.pgsql.deviceclassify.DmsDeviceClassifyMapper">
 
     <!--
         一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
@@ -9,4 +9,4 @@
         文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
      -->
 
-</mapper>
+</mapper>

+ 2 - 2
yudao-module-dms-biz/src/main/resources/mapper/devicerepair/DmsDeviceRepairMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="cn.iocoder.yudao.module.dms.dal.mysql.devicerepair.DmsDeviceRepairMapper">
+<mapper namespace="cn.iocoder.yudao.module.dms.dal.pgsql.devicerepair.DmsDeviceRepairMapper">
 
     <!--
         一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
@@ -9,4 +9,4 @@
         文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
      -->
 
-</mapper>
+</mapper>

+ 2 - 2
yudao-module-dms-biz/src/main/resources/mapper/relationorg/DmsRelationOrgMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="cn.iocoder.yudao.module.dms.dal.mysql.relationorg.DmsRelationOrgMapper">
+<mapper namespace="cn.iocoder.yudao.module.dms.dal.pgsql.relationorg.DmsRelationOrgMapper">
 
     <!--
         一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
@@ -9,4 +9,4 @@
         文档可见:https://www.iocoder.cn/MyBatis/x-plugins/
      -->
 
-</mapper>
+</mapper>