Gaokun Wang 5 hónapja
szülő
commit
0fdf230768
32 módosított fájl, 2167 hozzáadás és 10 törlés
  1. 107 0
      als-modules/agile-assurance/src/main/java/org/eco/als/controller/KGraphClauseController.java
  2. 109 0
      als-modules/agile-assurance/src/main/java/org/eco/als/controller/KGraphEntityController.java
  3. 107 0
      als-modules/agile-assurance/src/main/java/org/eco/als/controller/KGraphTaskController.java
  4. 58 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/KGraphClause.java
  5. 78 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/KGraphEntity.java
  6. 63 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/KGraphTask.java
  7. 47 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/bo/KGraphClauseBo.java
  8. 69 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/bo/KGraphEntityBo.java
  9. 54 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/bo/KGraphTaskBo.java
  10. 58 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/KGraphClauseImportVo.java
  11. 80 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/KGraphClauseVo.java
  12. 82 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/KGraphEntityImportVo.java
  13. 104 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/KGraphEntityVo.java
  14. 64 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/KGraphTaskImportVo.java
  15. 86 0
      als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/KGraphTaskVo.java
  16. 25 0
      als-modules/agile-assurance/src/main/java/org/eco/als/enums/GraphStatus.java
  17. 16 0
      als-modules/agile-assurance/src/main/java/org/eco/als/mapper/KGraphClauseMapper.java
  18. 16 0
      als-modules/agile-assurance/src/main/java/org/eco/als/mapper/KGraphEntityMapper.java
  19. 16 0
      als-modules/agile-assurance/src/main/java/org/eco/als/mapper/KGraphTaskMapper.java
  20. 82 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/IKGraphClauseService.java
  21. 80 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/IKGraphEntityService.java
  22. 80 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/IKGraphTaskService.java
  23. 158 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/KGraphClauseServiceImpl.java
  24. 184 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/KGraphEntityServiceImpl.java
  25. 182 0
      als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/KGraphTaskServiceImpl.java
  26. 7 0
      als-modules/agile-assurance/src/main/resources/mapper/als/KGraphClauseMapper.xml
  27. 7 0
      als-modules/agile-assurance/src/main/resources/mapper/als/KGraphEntityMapper.xml
  28. 7 0
      als-modules/agile-assurance/src/main/resources/mapper/als/KGraphaskMapper.xml
  29. 2 0
      als-modules/system/src/main/java/org/eco/system/service/ICommonService.java
  30. 23 0
      als-modules/system/src/main/java/org/eco/system/service/impl/CommonService.java
  31. 12 10
      als-modules/system/src/main/java/org/eco/system/service/impl/SysOssServiceImpl.java
  32. 104 0
      als-start/src/main/resources/db/dm/V1_0_0_5__als-init-ddl.sql

+ 107 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/controller/KGraphClauseController.java

@@ -0,0 +1,107 @@
+package org.eco.als.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import lombok.RequiredArgsConstructor;
+import org.eco.als.domain.bo.KGraphClauseBo;
+import org.eco.als.domain.vo.KGraphClauseVo;
+import org.eco.als.service.IKGraphClauseService;
+import org.eco.common.core.core.domain.CommonResult;
+import org.eco.common.core.core.page.PageResult;
+import org.eco.common.log.annotation.Log;
+import org.eco.common.log.enums.BusinessType;
+import org.eco.common.web.annotation.RepeatSubmit;
+import org.eco.common.web.core.BaseController;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 知识图谱分句结果Controller
+ *
+ * @author wgk
+ * @date 2025-01-03
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/als/kGraphClause")
+public class KGraphClauseController extends BaseController {
+    @Resource
+    private IKGraphClauseService kGraphClauseService;
+
+    /**
+     * 查询知识图谱分句结果列表
+     */
+    @SaCheckPermission("als:kGraphClause:list")
+    @GetMapping("/list")
+    public CommonResult<PageResult<KGraphClauseVo>> list(KGraphClauseBo kGraphClauseBo) {
+        return CommonResult.success(kGraphClauseService.selectPage(kGraphClauseBo));
+    }
+
+    /**
+     * 获取知识图谱分句结果详细信息
+     */
+    @SaCheckPermission("als:kGraphClause:query")
+    @GetMapping(value = "/{id}")
+    public CommonResult<KGraphClauseVo> getInfo(@PathVariable Long id) {
+        return CommonResult.success(kGraphClauseService.selectById(id));
+    }
+
+    /**
+     * 新增知识图谱分句结果
+     */
+    @RepeatSubmit()
+    @PostMapping
+    public CommonResult<Void> add(@Validated @RequestBody KGraphClauseBo kGraphClauseBo) {
+        boolean inserted = kGraphClauseService.insert(kGraphClauseBo);
+        if (!inserted) {
+            return CommonResult.fail("新增知识图谱分句结果记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 新增知识图谱分句结果
+     */
+    @RepeatSubmit()
+    @PostMapping("/saveBatch")
+    public CommonResult<Void> saveBatch(@Valid @RequestBody List<KGraphClauseBo> kGraphClauseBoList) {
+        boolean inserted = kGraphClauseService.saveBatch(kGraphClauseBoList);
+        if (!inserted) {
+            return CommonResult.fail("新增知识图谱分句结果记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 修改知识图谱分句结果
+     */
+    @SaCheckPermission("als:kGraphClause:edit")
+    @Log(title = "知识图谱分句结果", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping
+    public CommonResult<Void> edit(@Validated @RequestBody KGraphClauseBo kGraphClauseBo) {
+        boolean updated = kGraphClauseService.update(kGraphClauseBo);
+        if (!updated) {
+            return CommonResult.fail("修改知识图谱分句结果记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 删除知识图谱分句结果
+     */
+    @SaCheckPermission("als:kGraphClause:remove")
+    @Log(title = "知识图谱分句结果", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public CommonResult<Void> remove(@PathVariable Long[] ids) {
+        boolean deleted = kGraphClauseService.deleteByIds(ids);
+        if (!deleted) {
+            return CommonResult.fail("删除知识图谱分句结果记录失败!");
+        }
+        return CommonResult.success();
+    }
+}

+ 109 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/controller/KGraphEntityController.java

@@ -0,0 +1,109 @@
+package org.eco.als.controller;
+
+import cn.dev33.satoken.annotation.SaCheckPermission;
+import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
+import lombok.RequiredArgsConstructor;
+import org.eco.als.domain.bo.KGraphEntityBo;
+import org.eco.als.domain.vo.KGraphEntityVo;
+import org.eco.als.service.IKGraphEntityService;
+import org.eco.common.core.core.domain.CommonResult;
+import org.eco.common.core.core.page.PageResult;
+import org.eco.common.log.annotation.Log;
+import org.eco.common.log.enums.BusinessType;
+import org.eco.common.web.annotation.RepeatSubmit;
+import org.eco.common.web.core.BaseController;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+/**
+ * 知识图谱实体关系Controller
+ *
+ * @author wgk
+ * @date 2025-01-03
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/als/kGraphEntity")
+public class KGraphEntityController extends BaseController {
+    @Resource
+    private IKGraphEntityService kGraphEntityService;
+
+    /**
+     * 查询知识图谱实体关系列表
+     */
+    @SaCheckPermission("als:kGraphEntity:list")
+    @GetMapping("/list")
+    public CommonResult<PageResult<KGraphEntityVo>> list(KGraphEntityBo kGraphEntityBo) {
+        return CommonResult.success(kGraphEntityService.selectPage(kGraphEntityBo));
+    }
+
+    /**
+     * 获取知识图谱实体关系详细信息
+     */
+    @SaCheckPermission("als:kGraphEntity:query")
+    @GetMapping(value = "/{id}")
+    public CommonResult<KGraphEntityVo> getInfo(@PathVariable Long id) {
+        return CommonResult.success(kGraphEntityService.selectById(id));
+    }
+
+    /**
+     * 新增知识图谱实体关系
+     */
+    @SaCheckPermission("als:kGraphEntity:add")
+    @Log(title = "知识图谱实体关系", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping
+    public CommonResult<Void> add(@Validated @RequestBody KGraphEntityBo kGraphEntityBo) {
+        boolean inserted = kGraphEntityService.insert(kGraphEntityBo);
+        if (!inserted) {
+            return CommonResult.fail("新增知识图谱实体关系记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 新增知识图谱实体关系
+     */
+    @RepeatSubmit()
+    @PostMapping("/saveBatch")
+    public CommonResult<Void> saveBatch(@Valid @RequestBody List<KGraphEntityBo> kGraphEntityBoList) {
+        boolean inserted = kGraphEntityService.saveBatch(kGraphEntityBoList);
+        if (!inserted) {
+            return CommonResult.fail("新增知识图谱实体关系记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 修改知识图谱实体关系
+     */
+    @SaCheckPermission("als:kGraphEntity:edit")
+    @Log(title = "知识图谱实体关系", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping
+    public CommonResult<Void> edit(@Validated @RequestBody KGraphEntityBo kGraphEntityBo) {
+        boolean updated = kGraphEntityService.update(kGraphEntityBo);
+        if (!updated) {
+            return CommonResult.fail("修改知识图谱实体关系记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 删除知识图谱实体关系
+     */
+    @SaCheckPermission("als:kGraphEntity:remove")
+    @Log(title = "知识图谱实体关系", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public CommonResult<Void> remove(@PathVariable Long[] ids) {
+        boolean deleted = kGraphEntityService.deleteByIds(ids);
+        if (!deleted) {
+            return CommonResult.fail("删除知识图谱实体关系记录失败!");
+        }
+        return CommonResult.success();
+    }
+}

+ 107 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/controller/KGraphTaskController.java

@@ -0,0 +1,107 @@
+package org.eco.als.controller;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import jakarta.annotation.Resource;
+import lombok.RequiredArgsConstructor;
+import org.eco.als.domain.bo.KGraphTaskBo;
+import org.eco.als.domain.vo.KGraphTaskVo;
+import org.eco.als.service.IKGraphTaskService;
+import org.eco.common.core.core.domain.CommonResult;
+import org.eco.common.core.core.page.PageResult;
+import org.eco.common.log.annotation.Log;
+import org.eco.common.log.enums.BusinessType;
+import org.eco.common.web.annotation.RepeatSubmit;
+import org.eco.common.web.core.BaseController;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * 知识图谱任务Controller
+ *
+ * @author wgk
+ * @date 2025-01-03
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/als/kGraphTask")
+public class KGraphTaskController extends BaseController {
+    @Resource
+    private IKGraphTaskService kGraphTaskService;
+
+    /**
+     * 查询知识图谱任务列表
+     */
+    @GetMapping("/list")
+    public CommonResult<PageResult<KGraphTaskVo>> list(KGraphTaskBo kGraphTaskBo) {
+        return CommonResult.success(kGraphTaskService.selectPage(kGraphTaskBo));
+    }
+
+    /**
+     * 获取知识图谱任务详细信息
+     */
+    @GetMapping(value = "/{id}")
+    public CommonResult<KGraphTaskVo> getInfo(@PathVariable Long id) {
+        return CommonResult.success(kGraphTaskService.selectById(id));
+    }
+
+    /**
+     * 新增知识图谱任务
+     */
+    @Log(title = "知识图谱任务", businessType = BusinessType.INSERT)
+    @RepeatSubmit()
+    @PostMapping
+    public CommonResult<Void> add(@Validated @RequestBody KGraphTaskBo kGraphTaskBo) {
+        boolean inserted = kGraphTaskService.insert(kGraphTaskBo);
+        if (!inserted) {
+            return CommonResult.fail("新增知识图谱任务记录失败!");
+        }
+        return CommonResult.success();
+    }
+    /**
+     * 新增知识图谱任务
+     */
+    @RepeatSubmit()
+    @PostMapping("/pro")
+    public CommonResult<Void> proTask(@RequestBody KGraphTaskBo kGraphTaskBo) {
+        if(StrUtil.isBlank(kGraphTaskBo.getTaskType())) {
+            return CommonResult.fail("任务类型不能为空");
+        }
+        if(ObjectUtil.isEmpty(kGraphTaskBo.getId())) {
+            return CommonResult.fail("任务Id不能为空");
+        }
+        boolean pro = kGraphTaskService.proTask(kGraphTaskBo);
+        if (!pro) {
+            return CommonResult.fail("执行任务失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 修改知识图谱任务
+     */
+    @Log(title = "知识图谱任务", businessType = BusinessType.UPDATE)
+    @RepeatSubmit()
+    @PutMapping
+    public CommonResult<Void> edit(@Validated @RequestBody KGraphTaskBo kGraphTaskBo) {
+        boolean updated = kGraphTaskService.update(kGraphTaskBo);
+        if (!updated) {
+            return CommonResult.fail("修改知识图谱任务记录失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 删除知识图谱任务
+     */
+    @Log(title = "知识图谱任务", businessType = BusinessType.DELETE)
+    @DeleteMapping("/{ids}")
+    public CommonResult<Void> remove(@PathVariable Long[] ids) {
+        boolean deleted = kGraphTaskService.deleteByIds(ids);
+        if (!deleted) {
+            return CommonResult.fail("删除知识图谱任务记录失败!");
+        }
+        return CommonResult.success();
+    }
+}

+ 58 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/KGraphClause.java

@@ -0,0 +1,58 @@
+package org.eco.als.domain;
+
+import com.mybatisflex.annotation.Column;
+import com.mybatisflex.annotation.Id;
+import com.mybatisflex.annotation.Table;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.eco.common.orm.core.domain.BaseEntity;
+
+import java.io.Serial;
+
+/**
+ * 知识图谱分句结果对象 als_k_graph_clause_t
+ *
+ * @author wgk
+ * @date 2025-01-03
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Table(value = "als_k_graph_clause_t")
+public class KGraphClause extends BaseEntity {
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 唯一ID
+     */
+    @Id
+    private Long id;
+
+    /**
+     * 任务ID
+     */
+    private Long taskId;
+
+    /**
+     * 分句结果文件
+     */
+    private String clause;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    /**
+     * 删除标识(1删除 0未删除)
+     */
+    @Column(isLogicDelete = true)
+    private Integer delFlag;
+
+
+}

+ 78 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/KGraphEntity.java

@@ -0,0 +1,78 @@
+package org.eco.als.domain;
+
+import com.mybatisflex.annotation.Column;
+import com.mybatisflex.annotation.Id;
+import com.mybatisflex.annotation.Table;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.eco.common.orm.core.domain.BaseEntity;
+
+import java.io.Serial;
+
+/**
+ * 知识图谱实体关系对象 als_k_graph_entity_t
+ *
+ * @author wgk
+ * @date 2025-01-03
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Table(value = "als_k_graph_entity_t")
+public class KGraphEntity extends BaseEntity {
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 唯一ID
+     */
+    @Id
+    private Long id;
+
+    /**
+     * 分句ID
+     */
+    private Long clauseId;
+
+    /**
+     * 头实体
+     */
+    private String headEntity;
+
+    /**
+     * 头实体类
+     */
+    private String headEntityClass;
+
+    /**
+     * 关系
+     */
+    private String relation;
+
+    /**
+     * 尾实体
+     */
+    private String tailEntity;
+
+    /**
+     * 尾实体类
+     */
+    private String tailEntityClass;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    /**
+     * 删除标识(1删除 0未删除)
+     */
+    @Column(isLogicDelete = true)
+    private Integer delFlag;
+
+
+}

+ 63 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/KGraphTask.java

@@ -0,0 +1,63 @@
+package org.eco.als.domain;
+
+import com.mybatisflex.annotation.Column;
+import com.mybatisflex.annotation.Id;
+import com.mybatisflex.annotation.Table;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.eco.common.orm.core.domain.BaseEntity;
+
+import java.io.Serial;
+
+/**
+ * 知识图谱任务对象 als_k_graph_task_t
+ *
+ * @author wgk
+ * @date 2025-01-03
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Table(value = "als_k_graph_task_t")
+public class KGraphTask extends BaseEntity {
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 唯一ID
+     */
+    @Id
+    private Long id;
+
+    /**
+     * 任务名称
+     */
+    private String taskName;
+
+    /**
+     * 任务类型
+     */
+    private String taskType;
+
+    /**
+     * 原始文件
+     */
+    private Long ossId;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+    /**
+     * 删除标识(1删除 0未删除)
+     */
+    @Column(isLogicDelete = true)
+    private Integer delFlag;
+
+
+}

+ 47 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/bo/KGraphClauseBo.java

@@ -0,0 +1,47 @@
+package org.eco.als.domain.bo;
+
+import org.eco.als.domain.KGraphClause;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import jakarta.validation.constraints.*;
+import org.eco.common.orm.core.domain.BaseEntity;
+
+/**
+ * 知识图谱分句结果业务对象 als_k_graph_clause_t
+ *
+ * @author wgk
+ * @date 2025-01-03
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = KGraphClause.class, reverseConvertGenerate = false)
+public class KGraphClauseBo extends BaseEntity{
+    /**
+     * 唯一ID
+     */
+    private Long id;
+
+    /**
+     * 任务ID
+     */
+    private Long taskId;
+
+    /**
+     * 分句结果文件
+     */
+    @NotBlank(message = "分句内容不能为空")
+    private String clause;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+
+}

+ 69 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/bo/KGraphEntityBo.java

@@ -0,0 +1,69 @@
+package org.eco.als.domain.bo;
+
+import io.github.linpeilie.annotations.AutoMapper;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.eco.als.domain.KGraphEntity;
+import org.eco.common.orm.core.domain.BaseEntity;
+
+/**
+ * 知识图谱实体关系业务对象 als_k_graph_entity_t
+ *
+ * @author wgk
+ * @date 2025-01-03
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = KGraphEntity.class, reverseConvertGenerate = false)
+public class KGraphEntityBo extends BaseEntity {
+    /**
+     * 唯一ID
+     */
+    private Long id;
+
+    /**
+     * 分句ID
+     */
+    private Long clauseId;
+
+    /**
+     * 头实体
+     */
+    @NotBlank(message = "头实体不能为空")
+    private String headEntity;
+
+    /**
+     * 头实体类
+     */
+    @NotBlank(message = "头实体类不能为空")
+    private String headEntityClass;
+
+    /**
+     * 关系
+     */
+    @NotBlank(message = "关系不能为空")
+    private String relation;
+
+    /**
+     * 尾实体
+     */
+    private String tailEntity;
+
+    /**
+     * 尾实体类
+     */
+    private String tailEntityClass;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+
+}

+ 54 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/bo/KGraphTaskBo.java

@@ -0,0 +1,54 @@
+package org.eco.als.domain.bo;
+
+import io.github.linpeilie.annotations.AutoMapper;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.eco.als.domain.KGraphTask;
+import org.eco.common.orm.core.domain.BaseEntity;
+
+/**
+ * 知识图谱任务业务对象 als_k_graph_task_t
+ *
+ * @author wgk
+ * @date 2025-01-03
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = KGraphTask.class, reverseConvertGenerate = false)
+public class KGraphTaskBo extends BaseEntity {
+    /**
+     * 唯一ID
+     */
+    private Long id;
+
+    /**
+     * 任务名称
+     */
+    @NotBlank(message = "任务名称不能为空")
+    private String taskName;
+
+    /**
+     * 任务类型
+     */
+    private String taskType;
+
+    /**
+     * 原始文件
+     */
+    @NotNull(message = "文件Id不能为空")
+    private Long ossId;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 备注
+     */
+    private String remarks;
+
+
+}

+ 58 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/KGraphClauseImportVo.java

@@ -0,0 +1,58 @@
+package org.eco.als.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 知识图谱分句结果导入视图对象 als_k_graph_clause_t
+ *
+ * @author wgk
+ * @date 2025-01-03
+ */
+
+@Data
+@NoArgsConstructor
+@ExcelIgnoreUnannotated
+public class KGraphClauseImportVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 任务ID
+     */
+    @ExcelProperty(value = "任务ID")
+    private Long taskId;
+
+    /**
+     * 分句结果文件
+     */
+    @ExcelProperty(value = "分句结果文件")
+    private String clause;
+
+    /**
+     * 状态
+     */
+    @ExcelProperty(value = "状态")
+    private String status;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remarks;
+
+    /**
+     * 删除标识(1删除 0未删除)
+     */
+    @ExcelProperty(value = "删除标识(1删除 0未删除)")
+    private Integer delFlag;
+
+
+}

+ 80 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/KGraphClauseVo.java

@@ -0,0 +1,80 @@
+package org.eco.als.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.eco.common.mapper.annotation.FieldMapper;
+import com.eco.common.mapper.constant.MapperConstant;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.eco.als.domain.KGraphClause;
+import org.eco.common.orm.core.domain.BaseEntity;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 知识图谱分句结果视图对象 als_k_graph_clause_t
+ *
+ * @author wgk
+ * @date 2025-01-03
+ */
+@Data
+@ExcelIgnoreUnannotated
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = KGraphClause.class)
+public class KGraphClauseVo extends BaseEntity implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 唯一ID
+     */
+    @ExcelProperty(value = "唯一ID")
+    private Long id;
+
+    /**
+     * 任务ID
+     */
+    @ExcelProperty(value = "任务ID")
+    private Long taskId;
+
+    /**
+     * 分句结果文件
+     */
+    @ExcelProperty(value = "分句结果文件")
+    private String clause;
+
+    /**
+     * 状态
+     */
+    @ExcelProperty(value = "状态")
+    private String status;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remarks;
+
+    /**
+     * 删除标识(1删除 0未删除)
+     */
+    @ExcelProperty(value = "删除标识(1删除 0未删除)")
+    private Integer delFlag;
+
+
+    /**
+     * 创建人名称
+     */
+    @FieldMapper(type = MapperConstant.USER_ID_TO_NAME, mapper = "createBy")
+    private String createByName;
+
+    /**
+     * 创建人名称
+     */
+    @FieldMapper(type = MapperConstant.USER_ID_TO_NAME, mapper = "updateBy")
+    private String updateByName;
+
+}

+ 82 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/KGraphEntityImportVo.java

@@ -0,0 +1,82 @@
+package org.eco.als.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 知识图谱实体关系导入视图对象 als_k_graph_entity_t
+ *
+ * @author wgk
+ * @date 2025-01-03
+ */
+
+@Data
+@NoArgsConstructor
+@ExcelIgnoreUnannotated
+public class KGraphEntityImportVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 分句ID
+     */
+    @ExcelProperty(value = "分句ID")
+    private Long clauseId;
+
+    /**
+     * 头实体
+     */
+    @ExcelProperty(value = "头实体")
+    private String headEntity;
+
+    /**
+     * 头实体类
+     */
+    @ExcelProperty(value = "头实体类")
+    private String headEntityClass;
+
+    /**
+     * 关系
+     */
+    @ExcelProperty(value = "关系")
+    private String relation;
+
+    /**
+     * 尾实体
+     */
+    @ExcelProperty(value = "尾实体")
+    private String tailEntity;
+
+    /**
+     * 尾实体类
+     */
+    @ExcelProperty(value = "尾实体类")
+    private String tailEntityClass;
+
+    /**
+     * 状态
+     */
+    @ExcelProperty(value = "状态")
+    private String status;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remarks;
+
+    /**
+     * 删除标识(1删除 0未删除)
+     */
+    @ExcelProperty(value = "删除标识(1删除 0未删除)")
+    private Integer delFlag;
+
+
+}

+ 104 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/KGraphEntityVo.java

@@ -0,0 +1,104 @@
+package org.eco.als.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.eco.common.mapper.annotation.FieldMapper;
+import com.eco.common.mapper.constant.MapperConstant;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.eco.als.domain.KGraphEntity;
+import org.eco.common.orm.core.domain.BaseEntity;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 知识图谱实体关系视图对象 als_k_graph_entity_t
+ *
+ * @author wgk
+ * @date 2025-01-03
+ */
+@Data
+@ExcelIgnoreUnannotated
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = KGraphEntity.class)
+public class KGraphEntityVo extends BaseEntity implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 唯一ID
+     */
+    @ExcelProperty(value = "唯一ID")
+    private Long id;
+
+    /**
+     * 分句ID
+     */
+    @ExcelProperty(value = "分句ID")
+    private Long clauseId;
+
+    /**
+     * 头实体
+     */
+    @ExcelProperty(value = "头实体")
+    private String headEntity;
+
+    /**
+     * 头实体类
+     */
+    @ExcelProperty(value = "头实体类")
+    private String headEntityClass;
+
+    /**
+     * 关系
+     */
+    @ExcelProperty(value = "关系")
+    private String relation;
+
+    /**
+     * 尾实体
+     */
+    @ExcelProperty(value = "尾实体")
+    private String tailEntity;
+
+    /**
+     * 尾实体类
+     */
+    @ExcelProperty(value = "尾实体类")
+    private String tailEntityClass;
+
+    /**
+     * 状态
+     */
+    @ExcelProperty(value = "状态")
+    private String status;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remarks;
+
+    /**
+     * 删除标识(1删除 0未删除)
+     */
+    @ExcelProperty(value = "删除标识(1删除 0未删除)")
+    private Integer delFlag;
+
+
+    /**
+     * 创建人名称
+     */
+    @FieldMapper(type = MapperConstant.USER_ID_TO_NAME, mapper = "createBy")
+    private String createByName;
+
+    /**
+     * 创建人名称
+     */
+    @FieldMapper(type = MapperConstant.USER_ID_TO_NAME, mapper = "updateBy")
+    private String updateByName;
+
+}

+ 64 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/KGraphTaskImportVo.java

@@ -0,0 +1,64 @@
+package org.eco.als.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 知识图谱任务导入视图对象 als_k_graph_task_t
+ *
+ * @author wgk
+ * @date 2025-01-03
+ */
+
+@Data
+@NoArgsConstructor
+@ExcelIgnoreUnannotated
+public class KGraphTaskImportVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+
+    /**
+     * 任务名称
+     */
+    @ExcelProperty(value = "任务名称")
+    private String taskName;
+
+    /**
+     * 任务类型
+     */
+    @ExcelProperty(value = "任务类型")
+    private String taskType;
+
+    /**
+     * 原始文件
+     */
+    @ExcelProperty(value = "原始文件")
+    private Long ossId;
+
+    /**
+     * 状态
+     */
+    @ExcelProperty(value = "状态")
+    private String status;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remarks;
+
+    /**
+     * 删除标识(1删除 0未删除)
+     */
+    @ExcelProperty(value = "删除标识(1删除 0未删除)")
+    private Integer delFlag;
+
+
+}

+ 86 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/domain/vo/KGraphTaskVo.java

@@ -0,0 +1,86 @@
+package org.eco.als.domain.vo;
+
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.eco.common.mapper.annotation.FieldMapper;
+import com.eco.common.mapper.constant.MapperConstant;
+import io.github.linpeilie.annotations.AutoMapper;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.eco.als.domain.KGraphTask;
+import org.eco.common.orm.core.domain.BaseEntity;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * 知识图谱任务视图对象 als_k_graph_task_t
+ *
+ * @author wgk
+ * @date 2025-01-03
+ */
+@Data
+@ExcelIgnoreUnannotated
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = KGraphTask.class)
+public class KGraphTaskVo extends BaseEntity implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 唯一ID
+     */
+    @ExcelProperty(value = "唯一ID")
+    private Long id;
+
+    /**
+     * 任务名称
+     */
+    @ExcelProperty(value = "任务名称")
+    private String taskName;
+
+    /**
+     * 任务类型
+     */
+    @ExcelProperty(value = "任务类型")
+    private String taskType;
+
+    /**
+     * 原始文件
+     */
+    @ExcelProperty(value = "原始文件")
+    private Long ossId;
+
+    /**
+     * 状态
+     */
+    @ExcelProperty(value = "状态")
+    private String status;
+
+    /**
+     * 备注
+     */
+    @ExcelProperty(value = "备注")
+    private String remarks;
+
+    /**
+     * 删除标识(1删除 0未删除)
+     */
+    @ExcelProperty(value = "删除标识(1删除 0未删除)")
+    private Integer delFlag;
+
+
+    /**
+     * 创建人名称
+     */
+    @FieldMapper(type = MapperConstant.USER_ID_TO_NAME, mapper = "createBy")
+    private String createByName;
+
+    /**
+     * 创建人名称
+     */
+    @FieldMapper(type = MapperConstant.USER_ID_TO_NAME, mapper = "updateBy")
+    private String updateByName;
+
+}

+ 25 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/enums/GraphStatus.java

@@ -0,0 +1,25 @@
+package org.eco.als.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 用户状态
+ *
+ * @author wgk
+ */
+@Getter
+@AllArgsConstructor
+public enum GraphStatus {
+    STATUS_0("0", "待分句"),
+    STATUS_1("1", "分句中"),
+    STATUS_2("2", "待抽取"),
+    STATUS_3("3", "抽取中"),
+    STATUS_4("4", "审核中"),
+    STATUS_5("5", "入库中"),
+    STATUS_6("6", "已入库"),
+    STATUS_INVALID("2", "作废"),
+    STATUS_PASS("1", "通过");
+    private final String code;
+    private final String info;
+}

+ 16 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/mapper/KGraphClauseMapper.java

@@ -0,0 +1,16 @@
+package org.eco.als.mapper;
+
+import com.mybatisflex.core.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.eco.als.domain.KGraphClause;
+
+/**
+ * 知识图谱分句结果Mapper接口
+ *
+ * @author wgk
+ * @date 2025-01-03
+ */
+@Mapper
+public interface KGraphClauseMapper extends BaseMapper<KGraphClause> {
+
+}

+ 16 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/mapper/KGraphEntityMapper.java

@@ -0,0 +1,16 @@
+package org.eco.als.mapper;
+
+import com.mybatisflex.core.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.eco.als.domain.KGraphEntity;
+
+/**
+ * 知识图谱实体关系Mapper接口
+ *
+ * @author wgk
+ * @date 2025-01-03
+ */
+@Mapper
+public interface KGraphEntityMapper extends BaseMapper<KGraphEntity> {
+
+}

+ 16 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/mapper/KGraphTaskMapper.java

@@ -0,0 +1,16 @@
+package org.eco.als.mapper;
+
+import com.mybatisflex.core.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.eco.als.domain.KGraphTask;
+
+/**
+ * 知识图谱任务Mapper接口
+ *
+ * @author wgk
+ * @date 2025-01-03
+ */
+@Mapper
+public interface KGraphTaskMapper extends BaseMapper<KGraphTask> {
+
+}

+ 82 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/service/IKGraphClauseService.java

@@ -0,0 +1,82 @@
+package org.eco.als.service;
+
+import org.eco.als.domain.KGraphClause;
+import org.eco.als.domain.bo.KGraphClauseBo;
+import org.eco.als.domain.vo.KGraphClauseVo;
+import org.eco.common.core.core.page.PageResult;
+import org.eco.common.orm.core.service.IBaseService;
+
+import java.util.List;
+
+/**
+ * 知识图谱分句结果Service接口
+ *
+ * @author wgk
+ * @date 2025-01-03
+ */
+public interface IKGraphClauseService extends IBaseService<KGraphClause> {
+    /**
+     * 查询知识图谱分句结果
+     *
+     * @param id 知识图谱分句结果主键
+     * @return 知识图谱分句结果
+     */
+    KGraphClauseVo selectById(Long id);
+
+    /**
+     * 查询知识图谱分句结果列表
+     *
+     * @param kGraphClauseBo 知识图谱分句结果Bo
+     * @return 知识图谱分句结果集合
+     */
+    List<KGraphClauseVo> selectList(KGraphClauseBo kGraphClauseBo);
+
+    /**
+     * 分页查询知识图谱分句结果列表
+     *
+     * @param kGraphClauseBo 知识图谱分句结果Bo
+     * @return 分页知识图谱分句结果集合
+     */
+    PageResult<KGraphClauseVo> selectPage(KGraphClauseBo kGraphClauseBo);
+
+    /**
+     * 新增知识图谱分句结果
+     *
+     * @param kGraphClauseBo 知识图谱分句结果Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    boolean insert(KGraphClauseBo kGraphClauseBo);
+
+    /**
+     * 新增知识图谱分句结果
+     *
+     * @param kGraphClauseBoLists 知识图谱分句结果Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    boolean saveBatch(List<KGraphClauseBo> kGraphClauseBoLists);
+
+    /**
+     * 新增知识图谱分句结果,前台提供主键值,一般用于导入的场合
+     *
+     * @param kGraphClauseBo 知识图谱分句结果Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    boolean insertWithPk(KGraphClauseBo kGraphClauseBo);
+
+    /**
+     * 修改知识图谱分句结果
+     *
+     * @param kGraphClauseBo 知识图谱分句结果Bo
+     * @return 结果:true 更新成功,false 更新失败
+     */
+    boolean update(KGraphClauseBo kGraphClauseBo);
+
+    /**
+     * 批量删除知识图谱分句结果
+     *
+     * @param ids 需要删除的知识图谱分句结果主键集合
+     * @return 结果:true 删除成功,false 删除失败
+     */
+    boolean deleteByIds(Long[] ids);
+
+}

+ 80 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/service/IKGraphEntityService.java

@@ -0,0 +1,80 @@
+package org.eco.als.service;
+
+import org.eco.als.domain.KGraphEntity;
+import org.eco.als.domain.bo.KGraphEntityBo;
+import org.eco.als.domain.vo.KGraphEntityVo;
+import org.eco.common.core.core.page.PageResult;
+import org.eco.common.orm.core.service.IBaseService;
+
+import java.util.List;
+
+/**
+ * 知识图谱实体关系Service接口
+ *
+ * @author wgk
+ * @date 2025-01-03
+ */
+public interface IKGraphEntityService extends IBaseService<KGraphEntity> {
+    /**
+     * 查询知识图谱实体关系
+     *
+     * @param id 知识图谱实体关系主键
+     * @return 知识图谱实体关系
+     */
+    KGraphEntityVo selectById(Long id);
+
+    /**
+     * 查询知识图谱实体关系列表
+     *
+     * @param kGraphEntityBo 知识图谱实体关系Bo
+     * @return 知识图谱实体关系集合
+     */
+    List<KGraphEntityVo> selectList(KGraphEntityBo kGraphEntityBo);
+
+    /**
+     * 分页查询知识图谱实体关系列表
+     *
+     * @param kGraphEntityBo 知识图谱实体关系Bo
+     * @return 分页知识图谱实体关系集合
+     */
+    PageResult<KGraphEntityVo> selectPage(KGraphEntityBo kGraphEntityBo);
+
+    /**
+     * 新增知识图谱实体关系
+     *
+     * @param kGraphEntityBo 知识图谱实体关系Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    boolean insert(KGraphEntityBo kGraphEntityBo);
+    /**
+     * 新增知识图谱实体关系
+     *
+     * @param kGraphEntityBoList 知识图谱实体关系Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    boolean saveBatch(List<KGraphEntityBo> kGraphEntityBoList);
+
+    /**
+     * 新增知识图谱实体关系,前台提供主键值,一般用于导入的场合
+     *
+     * @param kGraphEntityBo 知识图谱实体关系Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    boolean insertWithPk(KGraphEntityBo kGraphEntityBo);
+
+    /**
+     * 修改知识图谱实体关系
+     *
+     * @param kGraphEntityBo 知识图谱实体关系Bo
+     * @return 结果:true 更新成功,false 更新失败
+     */
+    boolean update(KGraphEntityBo kGraphEntityBo);
+
+    /**
+     * 批量删除知识图谱实体关系
+     *
+     * @param ids 需要删除的知识图谱实体关系主键集合
+     * @return 结果:true 删除成功,false 删除失败
+     */
+    boolean deleteByIds(Long[] ids);
+}

+ 80 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/service/IKGraphTaskService.java

@@ -0,0 +1,80 @@
+package org.eco.als.service;
+
+import org.eco.als.domain.KGraphTask;
+import org.eco.als.domain.bo.KGraphTaskBo;
+import org.eco.als.domain.vo.KGraphTaskVo;
+import org.eco.common.core.core.page.PageResult;
+import org.eco.common.orm.core.service.IBaseService;
+
+import java.util.List;
+
+/**
+ * 知识图谱任务Service接口
+ *
+ * @author wgk
+ * @date 2025-01-03
+ */
+public interface IKGraphTaskService extends IBaseService<KGraphTask> {
+    /**
+     * 查询知识图谱任务
+     *
+     * @param id 知识图谱任务主键
+     * @return 知识图谱任务
+     */
+    KGraphTaskVo selectById(Long id);
+
+    /**
+     * 查询知识图谱任务列表
+     *
+     * @param kGraphTaskBo 知识图谱任务Bo
+     * @return 知识图谱任务集合
+     */
+    List<KGraphTaskVo> selectList(KGraphTaskBo kGraphTaskBo);
+
+    /**
+     * 分页查询知识图谱任务列表
+     *
+     * @param kGraphTaskBo 知识图谱任务Bo
+     * @return 分页知识图谱任务集合
+     */
+    PageResult<KGraphTaskVo> selectPage(KGraphTaskBo kGraphTaskBo);
+
+    /**
+     * 新增知识图谱任务
+     *
+     * @param kGraphTaskBo 知识图谱任务Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    boolean insert(KGraphTaskBo kGraphTaskBo);
+    /**
+     * 处理任务
+     *
+     * @param kGraphTaskBo 知识图谱任务Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    boolean proTask(KGraphTaskBo kGraphTaskBo);
+
+    /**
+     * 新增知识图谱任务,前台提供主键值,一般用于导入的场合
+     *
+     * @param kGraphTaskBo 知识图谱任务Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    boolean insertWithPk(KGraphTaskBo kGraphTaskBo);
+
+    /**
+     * 修改知识图谱任务
+     *
+     * @param kGraphTaskBo 知识图谱任务Bo
+     * @return 结果:true 更新成功,false 更新失败
+     */
+    boolean update(KGraphTaskBo kGraphTaskBo);
+
+    /**
+     * 批量删除知识图谱任务
+     *
+     * @param ids 需要删除的知识图谱任务主键集合
+     * @return 结果:true 删除成功,false 删除失败
+     */
+    boolean deleteByIds(Long[] ids);
+}

+ 158 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/KGraphClauseServiceImpl.java

@@ -0,0 +1,158 @@
+package org.eco.als.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.mybatisflex.core.paginate.Page;
+import com.mybatisflex.core.query.QueryWrapper;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.eco.als.domain.KGraphClause;
+import org.eco.als.domain.bo.KGraphClauseBo;
+import org.eco.als.domain.vo.KGraphClauseVo;
+import org.eco.als.mapper.KGraphClauseMapper;
+import org.eco.als.service.IKGraphClauseService;
+import org.eco.common.core.core.page.PageResult;
+import org.eco.common.core.utils.MapstructUtils;
+import org.eco.common.orm.core.page.PageQuery;
+import org.eco.common.orm.core.service.impl.BaseServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import static org.eco.als.domain.table.KGraphClauseTableDef.K_GRAPH_CLAUSE;
+
+/**
+ * 知识图谱分句结果Service业务层处理
+ *
+ * @author wgk
+ * @date 2025-01-03
+ */
+@Service
+@Slf4j
+public class KGraphClauseServiceImpl extends BaseServiceImpl<KGraphClauseMapper, KGraphClause> implements IKGraphClauseService {
+    @Resource
+    private KGraphClauseMapper kGraphClauseMapper;
+
+    @Override
+    public QueryWrapper query() {
+        return super.query().from(K_GRAPH_CLAUSE);
+    }
+
+    private QueryWrapper buildQueryWrapper(KGraphClauseBo kGraphClauseBo) {
+        QueryWrapper queryWrapper = super.buildBaseQueryWrapper();
+        queryWrapper.and(K_GRAPH_CLAUSE.TASK_ID.eq
+            (kGraphClauseBo.getTaskId()));
+        queryWrapper.and(K_GRAPH_CLAUSE.CLAUSE.eq
+            (kGraphClauseBo.getClause()));
+        queryWrapper.and(K_GRAPH_CLAUSE.STATUS.eq
+            (kGraphClauseBo.getStatus()));
+        queryWrapper.and(K_GRAPH_CLAUSE.REMARKS.eq
+            (kGraphClauseBo.getRemarks()));
+
+        return queryWrapper;
+    }
+
+    /**
+     * 查询知识图谱分句结果
+     *
+     * @param id 知识图谱分句结果主键
+     * @return 知识图谱分句结果
+     */
+    @Override
+    public KGraphClauseVo selectById(Long id) {
+        return this.getOneAs(query().where(K_GRAPH_CLAUSE.ID.eq(id)), KGraphClauseVo.class);
+
+    }
+
+
+    /**
+     * 查询知识图谱分句结果列表
+     *
+     * @param kGraphClauseBo 知识图谱分句结果Bo
+     * @return 知识图谱分句结果集合
+     */
+    @Override
+    public List<KGraphClauseVo> selectList(KGraphClauseBo kGraphClauseBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(kGraphClauseBo);
+        return this.listAs(queryWrapper, KGraphClauseVo.class);
+    }
+
+    /**
+     * 分页查询知识图谱分句结果列表
+     *
+     * @param kGraphClauseBo 知识图谱分句结果Bo
+     * @return 分页知识图谱分句结果集合
+     */
+    @Override
+    public PageResult<KGraphClauseVo> selectPage(KGraphClauseBo kGraphClauseBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(kGraphClauseBo);
+        Page<KGraphClauseVo> page = this.pageAs(PageQuery.build(), queryWrapper, KGraphClauseVo.class);
+        return PageResult.build(page);
+    }
+
+    /**
+     * 新增知识图谱分句结果
+     *
+     * @param kGraphClauseBo 知识图谱分句结果Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    @Override
+    public boolean insert(KGraphClauseBo kGraphClauseBo) {
+        KGraphClause kGraphClause = MapstructUtils.convert(kGraphClauseBo, KGraphClause.class);
+        return this.save(kGraphClause);//使用全局配置的雪花算法主键生成器生成ID值
+    }
+
+    @Override
+    public boolean saveBatch(List<KGraphClauseBo> kGraphClauseBoLists) {
+        List<KGraphClause> kGraphClauseList = new ArrayList<>();
+        kGraphClauseBoLists.forEach(kGraphClauseBo -> {
+            kGraphClauseList.add(MapstructUtils.convert(kGraphClauseBo, KGraphClause.class));
+        });
+        return this.saveBatch(kGraphClauseList,100);
+    }
+
+    /**
+     * 新增知识图谱分句结果,前台提供主键值,一般用于导入的场合
+     *
+     * @param kGraphClauseBo 知识图谱分句结果Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    @Override
+    public boolean insertWithPk(KGraphClauseBo kGraphClauseBo) {
+        KGraphClause kGraphClause = MapstructUtils.convert(kGraphClauseBo, KGraphClause.class);
+
+
+        return kGraphClauseMapper.insertWithPk(kGraphClause) > 0;//前台传来主键值
+    }
+
+    /**
+     * 修改知识图谱分句结果
+     *
+     * @param kGraphClauseBo 知识图谱分句结果Bo
+     * @return 结果:true 更新成功,false 更新失败
+     */
+    @Override
+    public boolean update(KGraphClauseBo kGraphClauseBo) {
+        KGraphClause kGraphClause = MapstructUtils.convert(kGraphClauseBo, KGraphClause.class);
+        if (ObjectUtil.isNotNull(kGraphClause) && ObjectUtil.isNotNull(kGraphClause.getId())) {
+            boolean updated = this.updateById(kGraphClause);
+            return updated;
+        }
+        return false;
+    }
+
+    /**
+     * 批量删除知识图谱分句结果
+     *
+     * @param ids 需要删除的知识图谱分句结果主键集合
+     * @return 结果:true 删除成功,false 删除失败
+     */
+    @Transactional
+    @Override
+    public boolean deleteByIds(Long[] ids) {
+        return this.removeByIds(Arrays.asList(ids));
+    }
+
+}

+ 184 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/KGraphEntityServiceImpl.java

@@ -0,0 +1,184 @@
+package org.eco.als.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.mybatisflex.core.paginate.Page;
+import com.mybatisflex.core.query.QueryWrapper;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.eco.als.domain.KGraphEntity;
+import org.eco.als.domain.bo.KGraphEntityBo;
+import org.eco.als.domain.bo.KGraphTaskBo;
+import org.eco.als.domain.vo.KGraphClauseVo;
+import org.eco.als.domain.vo.KGraphEntityVo;
+import org.eco.als.mapper.KGraphEntityMapper;
+import org.eco.als.service.IKGraphClauseService;
+import org.eco.als.service.IKGraphEntityService;
+import org.eco.als.service.IKGraphTaskService;
+import org.eco.common.core.core.page.PageResult;
+import org.eco.common.core.utils.MapstructUtils;
+import org.eco.common.orm.core.page.PageQuery;
+import org.eco.common.orm.core.service.impl.BaseServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import static org.eco.als.domain.table.KGraphEntityTableDef.K_GRAPH_ENTITY;
+
+/**
+ * 知识图谱实体关系Service业务层处理
+ *
+ * @author wgk
+ * @date 2025-01-03
+ */
+@Service
+@Slf4j
+public class KGraphEntityServiceImpl extends BaseServiceImpl<KGraphEntityMapper, KGraphEntity> implements IKGraphEntityService {
+    @Resource
+    private KGraphEntityMapper kGraphEntityMapper;
+
+    @Resource
+    private IKGraphTaskService kGraphTaskService;
+    @Resource
+    private IKGraphClauseService kGraphClauseService;
+
+    @Override
+    public QueryWrapper query() {
+        return super.query().from(K_GRAPH_ENTITY);
+    }
+
+    private QueryWrapper buildQueryWrapper(KGraphEntityBo kGraphEntityBo) {
+        QueryWrapper queryWrapper = super.buildBaseQueryWrapper();
+        queryWrapper.and(K_GRAPH_ENTITY.CLAUSE_ID.eq
+            (kGraphEntityBo.getClauseId()));
+        queryWrapper.and(K_GRAPH_ENTITY.HEAD_ENTITY.eq
+            (kGraphEntityBo.getHeadEntity()));
+        queryWrapper.and(K_GRAPH_ENTITY.HEAD_ENTITY_CLASS.eq
+            (kGraphEntityBo.getHeadEntityClass()));
+        queryWrapper.and(K_GRAPH_ENTITY.RELATION.eq
+            (kGraphEntityBo.getRelation()));
+        queryWrapper.and(K_GRAPH_ENTITY.TAIL_ENTITY.eq
+            (kGraphEntityBo.getTailEntity()));
+        queryWrapper.and(K_GRAPH_ENTITY.TAIL_ENTITY_CLASS.eq
+            (kGraphEntityBo.getTailEntityClass()));
+        queryWrapper.and(K_GRAPH_ENTITY.STATUS.eq
+            (kGraphEntityBo.getStatus()));
+        queryWrapper.and(K_GRAPH_ENTITY.REMARKS.eq
+            (kGraphEntityBo.getRemarks()));
+
+        return queryWrapper;
+    }
+
+    /**
+     * 查询知识图谱实体关系
+     *
+     * @param id 知识图谱实体关系主键
+     * @return 知识图谱实体关系
+     */
+    @Override
+    public KGraphEntityVo selectById(Long id) {
+        return this.getOneAs(query().where(K_GRAPH_ENTITY.ID.eq(id)), KGraphEntityVo.class);
+
+    }
+
+
+    /**
+     * 查询知识图谱实体关系列表
+     *
+     * @param kGraphEntityBo 知识图谱实体关系Bo
+     * @return 知识图谱实体关系集合
+     */
+    @Override
+    public List<KGraphEntityVo> selectList(KGraphEntityBo kGraphEntityBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(kGraphEntityBo);
+        return this.listAs(queryWrapper, KGraphEntityVo.class);
+    }
+
+    /**
+     * 分页查询知识图谱实体关系列表
+     *
+     * @param kGraphEntityBo 知识图谱实体关系Bo
+     * @return 分页知识图谱实体关系集合
+     */
+    @Override
+    public PageResult<KGraphEntityVo> selectPage(KGraphEntityBo kGraphEntityBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(kGraphEntityBo);
+        Page<KGraphEntityVo> page = this.pageAs(PageQuery.build(), queryWrapper, KGraphEntityVo.class);
+        return PageResult.build(page);
+    }
+
+    /**
+     * 新增知识图谱实体关系
+     *
+     * @param kGraphEntityBo 知识图谱实体关系Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    @Override
+    public boolean insert(KGraphEntityBo kGraphEntityBo) {
+        KGraphEntity kGraphEntity = MapstructUtils.convert(kGraphEntityBo, KGraphEntity.class);
+
+        return this.save(kGraphEntity);//使用全局配置的雪花算法主键生成器生成ID值
+    }
+
+    @Override
+    public boolean saveBatch(List<KGraphEntityBo> kGraphEntityBoList) {
+        List<KGraphEntity> kGraphEntityList = new ArrayList<>();
+        kGraphEntityBoList.forEach(kGraphEntityBo -> {
+            kGraphEntityList.add(MapstructUtils.convert(kGraphEntityBo, KGraphEntity.class));
+        });
+        boolean isSave = this.saveBatch(kGraphEntityList, 100);
+        if (isSave) {
+            KGraphClauseVo kGraphClauseVo = kGraphClauseService.selectById(kGraphEntityList.getFirst().getClauseId());
+            KGraphTaskBo kGraphTaskBo = new KGraphTaskBo();
+            kGraphTaskBo.setId(kGraphClauseVo.getTaskId());
+            kGraphTaskBo.setStatus("2");
+            kGraphTaskService.update(kGraphTaskBo);
+        }
+        return isSave;
+    }
+
+    /**
+     * 新增知识图谱实体关系,前台提供主键值,一般用于导入的场合
+     *
+     * @param kGraphEntityBo 知识图谱实体关系Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    @Override
+    public boolean insertWithPk(KGraphEntityBo kGraphEntityBo) {
+        KGraphEntity kGraphEntity = MapstructUtils.convert(kGraphEntityBo, KGraphEntity.class);
+
+
+        return kGraphEntityMapper.insertWithPk(kGraphEntity) > 0;//前台传来主键值
+    }
+
+    /**
+     * 修改知识图谱实体关系
+     *
+     * @param kGraphEntityBo 知识图谱实体关系Bo
+     * @return 结果:true 更新成功,false 更新失败
+     */
+    @Override
+    public boolean update(KGraphEntityBo kGraphEntityBo) {
+        KGraphEntity kGraphEntity = MapstructUtils.convert(kGraphEntityBo, KGraphEntity.class);
+        if (ObjectUtil.isNotNull(kGraphEntity) && ObjectUtil.isNotNull(kGraphEntity.getId())) {
+            boolean updated = this.updateById(kGraphEntity);
+            return updated;
+        }
+        return false;
+    }
+
+    /**
+     * 批量删除知识图谱实体关系
+     *
+     * @param ids 需要删除的知识图谱实体关系主键集合
+     * @return 结果:true 删除成功,false 删除失败
+     */
+    @Transactional
+    @Override
+    public boolean deleteByIds(Long[] ids) {
+        return this.removeByIds(Arrays.asList(ids));
+    }
+
+}

+ 182 - 0
als-modules/agile-assurance/src/main/java/org/eco/als/service/impl/KGraphTaskServiceImpl.java

@@ -0,0 +1,182 @@
+package org.eco.als.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.mybatisflex.core.paginate.Page;
+import com.mybatisflex.core.query.QueryWrapper;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
+import org.eco.als.domain.KGraphTask;
+import org.eco.als.domain.bo.KGraphTaskBo;
+import org.eco.als.domain.vo.KGraphTaskVo;
+import org.eco.als.enums.GraphStatus;
+import org.eco.als.mapper.KGraphTaskMapper;
+import org.eco.als.service.IKGraphTaskService;
+import org.eco.common.core.core.page.PageResult;
+import org.eco.common.core.exception.BusinessException;
+import org.eco.common.core.utils.MapstructUtils;
+import org.eco.common.orm.core.page.PageQuery;
+import org.eco.common.orm.core.service.impl.BaseServiceImpl;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Arrays;
+import java.util.List;
+
+import static org.eco.als.domain.table.KGraphTaskTableDef.K_GRAPH_TASK;
+
+/**
+ * 知识图谱任务Service业务层处理
+ *
+ * @author wgk
+ * @date 2025-01-03
+ */
+@Service
+@Slf4j
+public class KGraphTaskServiceImpl extends BaseServiceImpl<KGraphTaskMapper, KGraphTask> implements IKGraphTaskService {
+    @Resource
+    private KGraphTaskMapper kGraphTaskMapper;
+
+    @Override
+    public QueryWrapper query() {
+        return super.query().from(K_GRAPH_TASK);
+    }
+
+    private QueryWrapper buildQueryWrapper(KGraphTaskBo kGraphTaskBo) {
+        QueryWrapper queryWrapper = super.buildBaseQueryWrapper();
+        queryWrapper.and(K_GRAPH_TASK.TASK_NAME.like
+            (kGraphTaskBo.getTaskName()));
+        queryWrapper.and(K_GRAPH_TASK.TASK_TYPE.eq
+            (kGraphTaskBo.getTaskType()));
+        queryWrapper.and(K_GRAPH_TASK.OSS_ID.eq
+            (kGraphTaskBo.getOssId()));
+        queryWrapper.and(K_GRAPH_TASK.STATUS.eq
+            (kGraphTaskBo.getStatus()));
+        queryWrapper.and(K_GRAPH_TASK.REMARKS.eq
+            (kGraphTaskBo.getRemarks()));
+
+        return queryWrapper;
+    }
+
+    /**
+     * 查询知识图谱任务
+     *
+     * @param id 知识图谱任务主键
+     * @return 知识图谱任务
+     */
+    @Override
+    public KGraphTaskVo selectById(Long id) {
+        return this.getOneAs(query().where(K_GRAPH_TASK.ID.eq(id)), KGraphTaskVo.class);
+
+    }
+
+
+    /**
+     * 查询知识图谱任务列表
+     *
+     * @param kGraphTaskBo 知识图谱任务Bo
+     * @return 知识图谱任务集合
+     */
+    @Override
+    public List<KGraphTaskVo> selectList(KGraphTaskBo kGraphTaskBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(kGraphTaskBo);
+        return this.listAs(queryWrapper, KGraphTaskVo.class);
+    }
+
+    /**
+     * 分页查询知识图谱任务列表
+     *
+     * @param kGraphTaskBo 知识图谱任务Bo
+     * @return 分页知识图谱任务集合
+     */
+    @Override
+    public PageResult<KGraphTaskVo> selectPage(KGraphTaskBo kGraphTaskBo) {
+        QueryWrapper queryWrapper = buildQueryWrapper(kGraphTaskBo);
+        Page<KGraphTaskVo> page = this.pageAs(PageQuery.build(), queryWrapper, KGraphTaskVo.class);
+        return PageResult.build(page);
+    }
+
+    /**
+     * 新增知识图谱任务
+     *
+     * @param kGraphTaskBo 知识图谱任务Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    @Override
+    public boolean insert(KGraphTaskBo kGraphTaskBo) {
+        KGraphTask kGraphTask = MapstructUtils.convert(kGraphTaskBo, KGraphTask.class);
+
+        return this.save(kGraphTask);//使用全局配置的雪花算法主键生成器生成ID值
+    }
+
+    @Override
+    public boolean proTask(KGraphTaskBo kGraphTaskBo) {
+        KGraphTaskVo kGraphTaskVo = this.selectById(kGraphTaskBo.getId());
+        switch (kGraphTaskBo.getTaskType()) {
+            case "0":
+                updateStatusById(kGraphTaskBo, kGraphTaskVo, GraphStatus.STATUS_1.getCode());
+                Long ossId = kGraphTaskVo.getOssId();
+                // TODO 知识图谱执行分句
+                break;
+            case "2":
+                updateStatusById(kGraphTaskBo, kGraphTaskVo, GraphStatus.STATUS_3.getCode());
+                // TODO 知识图谱抽取
+                break;
+            case "4":
+                updateStatusById(kGraphTaskBo, kGraphTaskVo, GraphStatus.STATUS_5.getCode());
+                // TODO 知识图谱入库
+                break;
+            default:
+                throw new BusinessException("任务类型错误");
+        }
+        return true;
+    }
+
+    private void updateStatusById(KGraphTaskBo kGraphTaskBo, KGraphTaskVo kGraphTaskVo, String status) {
+        kGraphTaskBo.setStatus(status);
+        kGraphTaskBo.setVersion(kGraphTaskVo.getVersion());
+        this.update(kGraphTaskBo);
+    }
+
+    /**
+     * 新增知识图谱任务,前台提供主键值,一般用于导入的场合
+     *
+     * @param kGraphTaskBo 知识图谱任务Bo
+     * @return 结果:true 操作成功,false 操作失败
+     */
+    @Override
+    public boolean insertWithPk(KGraphTaskBo kGraphTaskBo) {
+        KGraphTask kGraphTask = MapstructUtils.convert(kGraphTaskBo, KGraphTask.class);
+
+
+        return kGraphTaskMapper.insertWithPk(kGraphTask) > 0;//前台传来主键值
+    }
+
+    /**
+     * 修改知识图谱任务
+     *
+     * @param kGraphTaskBo 知识图谱任务Bo
+     * @return 结果:true 更新成功,false 更新失败
+     */
+    @Override
+    public boolean update(KGraphTaskBo kGraphTaskBo) {
+        KGraphTask kGraphTask = MapstructUtils.convert(kGraphTaskBo, KGraphTask.class);
+        if (ObjectUtil.isNotNull(kGraphTask) && ObjectUtil.isNotNull(kGraphTask.getId())) {
+            boolean updated = this.updateById(kGraphTask);
+            return updated;
+        }
+        return false;
+    }
+
+    /**
+     * 批量删除知识图谱任务
+     *
+     * @param ids 需要删除的知识图谱任务主键集合
+     * @return 结果:true 删除成功,false 删除失败
+     */
+    @Transactional
+    @Override
+    public boolean deleteByIds(Long[] ids) {
+        return this.removeByIds(Arrays.asList(ids));
+    }
+
+}

+ 7 - 0
als-modules/agile-assurance/src/main/resources/mapper/als/KGraphClauseMapper.xml

@@ -0,0 +1,7 @@
+<?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="org.eco.als.mapper.KGraphClauseMapper">
+
+</mapper>

+ 7 - 0
als-modules/agile-assurance/src/main/resources/mapper/als/KGraphEntityMapper.xml

@@ -0,0 +1,7 @@
+<?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="org.eco.als.mapper.KGraphEntityMapper">
+
+</mapper>

+ 7 - 0
als-modules/agile-assurance/src/main/resources/mapper/als/KGraphaskMapper.xml

@@ -0,0 +1,7 @@
+<?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="org.eco.als.mapper.KGraphTaskMapper">
+
+</mapper>

+ 2 - 0
als-modules/system/src/main/java/org/eco/system/service/ICommonService.java

@@ -1,5 +1,6 @@
 package org.eco.system.service;
 
+import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.Map;
@@ -10,4 +11,5 @@ import java.util.Map;
  */
 public interface ICommonService {
     Map<String, String> uploadFile(MultipartFile file);
+    void resourceDownload(String resource, HttpServletResponse response);
 }

+ 23 - 0
als-modules/system/src/main/java/org/eco/system/service/impl/CommonService.java

@@ -1,13 +1,16 @@
 package org.eco.system.service.impl;
 
+import jakarta.servlet.http.HttpServletResponse;
 import lombok.extern.slf4j.Slf4j;
 import org.eco.common.core.config.EcoConfig;
 import org.eco.common.core.constant.Constants;
 import org.eco.common.core.exception.BusinessException;
 import org.eco.common.core.utils.StringUtils;
 import org.eco.common.core.utils.file.FileUploadUtils;
+import org.eco.common.core.utils.file.FileUtils;
 import org.eco.system.service.ICommonService;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.MediaType;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -48,6 +51,26 @@ public class CommonService implements ICommonService {
         }
     }
 
+    @Override
+    public void resourceDownload(String resource, HttpServletResponse response) {
+        try {
+            if (!FileUtils.checkAllowDownload(resource)) {
+                throw new Exception(StringUtils.format("资源文件({})非法,不允许下载。 ", resource));
+            }
+            // 本地资源路径
+            String localPath = EcoConfig.getProfile();
+            // 数据库资源地址
+            String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX);
+            // 下载名称
+            String downloadName = StringUtils.substringAfterLast(downloadPath, "/");
+            response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
+            FileUtils.setAttachmentResponseHeader(response, downloadName);
+            FileUtils.writeBytes(downloadPath, response.getOutputStream());
+        } catch (Exception e) {
+            log.error("下载文件失败", e);
+        }
+    }
+
     public static String getIpAddress() {
         try {
             //从网卡中获取IP

+ 12 - 10
als-modules/system/src/main/java/org/eco/system/service/impl/SysOssServiceImpl.java

@@ -12,7 +12,6 @@ import jakarta.servlet.http.HttpServletResponse;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.eco.common.core.config.EcoConfig;
-import org.eco.common.core.constant.CacheNames;
 import org.eco.common.core.constant.Constants;
 import org.eco.common.core.core.domain.UploadRes;
 import org.eco.common.core.core.page.PageResult;
@@ -32,11 +31,9 @@ import org.eco.common.oss.factory.OssFactory;
 import org.eco.system.domain.SysOss;
 import org.eco.system.domain.bo.SysOssBo;
 import org.eco.system.domain.vo.SysOssVo;
-import org.eco.system.mapper.SysDeptMapper;
 import org.eco.system.mapper.SysOssMapper;
 import org.eco.system.service.ICommonService;
 import org.eco.system.service.ISysOssService;
-import org.springframework.cache.annotation.Cacheable;
 import org.springframework.http.MediaType;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
@@ -136,20 +133,25 @@ public class SysOssServiceImpl extends BaseServiceImpl<SysOssMapper, SysOss> imp
 
     @Override
     public void download(Long ossId, HttpServletResponse response) throws IOException {
-        SysOssVo sysOss = SpringUtils.getAopProxy(this).getById(ossId);
+        SysOssVo sysOss = this.getById(ossId);
         if (ObjectUtil.isNull(sysOss)) {
             throw new BusinessException("文件数据不存在!");
         }
         FileUtils.setAttachmentResponseHeader(response, sysOss.getOriginalName());
         response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE + "; charset=UTF-8");
         OssClient storage = OssFactory.instance(sysOss.getService());
-        try (InputStream inputStream = storage.getObjectContent(sysOss.getUrl())) {
-            int available = inputStream.available();
-            IoUtil.copy(inputStream, response.getOutputStream(), available);
-            response.setContentLength(available);
-        } catch (Exception e) {
-            throw new BusinessException(e.getMessage());
+        if (StrUtil.equals(storage.getConfigKey(), "local")) {
+            commonService.resourceDownload(sysOss.getUrl(), response);
+        } else {
+            try (InputStream inputStream = storage.getObjectContent(sysOss.getUrl())) {
+                int available = inputStream.available();
+                IoUtil.copy(inputStream, response.getOutputStream(), available);
+                response.setContentLength(available);
+            } catch (Exception e) {
+                throw new BusinessException(e.getMessage());
+            }
         }
+
     }
 
     @Override

+ 104 - 0
als-start/src/main/resources/db/dm/V1_0_0_5__als-init-ddl.sql

@@ -0,0 +1,104 @@
+DROP TABLE IF EXISTS "lqbz"."als_k_graph_task_t";
+CREATE TABLE "lqbz"."als_k_graph_task_t"(
+                                           id bigint NOT NULL,
+                                           task_name VARCHAR2(255),
+                                           task_type VARCHAR2(255),
+                                           oss_id bigint,
+                                           status char(1) DEFAULT (0),
+                                           remarks VARCHAR2(900),
+                                           tenant_id bigint,
+                                           del_flag bit DEFAULT  0,
+                                           version INTEGER,
+                                           create_by bigint,
+                                           create_time TIMESTAMP,
+                                           update_by bigint,
+                                           update_time TIMESTAMP
+);
+
+ALTER TABLE "lqbz"."als_k_graph_task_t" ADD CONSTRAINT PRIMARY KEY (id);
+
+COMMENT ON TABLE "lqbz"."als_k_graph_task_t" IS '知识图谱任务';
+COMMENT ON COLUMN "lqbz"."als_k_graph_task_t"."id" IS '唯一ID';
+COMMENT ON COLUMN "lqbz"."als_k_graph_task_t"."task_name" IS '任务名称';
+COMMENT ON COLUMN "lqbz"."als_k_graph_task_t"."task_type" IS '任务类型';
+COMMENT ON COLUMN "lqbz"."als_k_graph_task_t"."oss_id" IS '原始文件';
+COMMENT ON COLUMN "lqbz"."als_k_graph_task_t"."status" IS '状态';
+COMMENT ON COLUMN "lqbz"."als_k_graph_task_t"."remarks" IS '备注';
+COMMENT ON COLUMN "lqbz"."als_k_graph_task_t"."tenant_id" IS '租户号';
+COMMENT ON COLUMN "lqbz"."als_k_graph_task_t"."del_flag" IS '删除标识(1删除 0未删除)';
+COMMENT ON COLUMN "lqbz"."als_k_graph_task_t"."version" IS '乐观锁';
+COMMENT ON COLUMN "lqbz"."als_k_graph_task_t"."create_by" IS '创建人';
+COMMENT ON COLUMN "lqbz"."als_k_graph_task_t"."create_time" IS '创建时间';
+COMMENT ON COLUMN "lqbz"."als_k_graph_task_t"."update_by" IS '更新人';
+COMMENT ON COLUMN "lqbz"."als_k_graph_task_t"."update_time" IS '更新时间';
+DROP TABLE IF EXISTS "lqbz"."als_k_graph_clause_t";
+CREATE TABLE "lqbz"."als_k_graph_clause_t"(
+                                             id bigint NOT NULL,
+                                             task_id bigint,
+                                             clause VARCHAR2(1500),
+                                             status char(1) DEFAULT (0),
+                                             remarks VARCHAR2(900),
+                                             tenant_id bigint,
+                                             del_flag bit DEFAULT  0,
+                                             version INTEGER,
+                                             create_by bigint,
+                                             create_time TIMESTAMP,
+                                             update_by bigint,
+                                             update_time TIMESTAMP
+);
+
+ALTER TABLE "lqbz"."als_k_graph_clause_t" ADD CONSTRAINT PRIMARY KEY (id);
+
+COMMENT ON TABLE "lqbz"."als_k_graph_clause_t" IS '知识图谱分句结果';
+COMMENT ON COLUMN "lqbz"."als_k_graph_clause_t"."id" IS '唯一ID';
+COMMENT ON COLUMN "lqbz"."als_k_graph_clause_t"."task_id" IS '任务ID';
+COMMENT ON COLUMN "lqbz"."als_k_graph_clause_t"."clause" IS '分句结果文件';
+COMMENT ON COLUMN "lqbz"."als_k_graph_clause_t"."status" IS '状态';
+COMMENT ON COLUMN "lqbz"."als_k_graph_clause_t"."remarks" IS '备注';
+COMMENT ON COLUMN "lqbz"."als_k_graph_clause_t"."tenant_id" IS '租户号';
+COMMENT ON COLUMN "lqbz"."als_k_graph_clause_t"."del_flag" IS '删除标识(1删除 0未删除)';
+COMMENT ON COLUMN "lqbz"."als_k_graph_clause_t"."version" IS '乐观锁';
+COMMENT ON COLUMN "lqbz"."als_k_graph_clause_t"."create_by" IS '创建人';
+COMMENT ON COLUMN "lqbz"."als_k_graph_clause_t"."create_time" IS '创建时间';
+COMMENT ON COLUMN "lqbz"."als_k_graph_clause_t"."update_by" IS '更新人';
+COMMENT ON COLUMN "lqbz"."als_k_graph_clause_t"."update_time" IS '更新时间';
+DROP TABLE IF EXISTS "lqbz"."als_k_graph_entity_t";
+CREATE TABLE "lqbz"."als_k_graph_entity_t"(
+                                             id bigint NOT NULL,
+                                             clause_id bigint,
+                                             head_entity VARCHAR2(900),
+                                             head_entity_class VARCHAR2(900),
+                                             relation VARCHAR2(900),
+                                             tail_entity VARCHAR2(900),
+                                             tail_entity_class VARCHAR2(900),
+                                             status char(1),
+                                             remarks VARCHAR2(900),
+                                             tenant_id bigint,
+                                             del_flag bit DEFAULT  0,
+                                             version INTEGER,
+                                             create_by bigint,
+                                             create_time TIMESTAMP,
+                                             update_by bigint,
+                                             update_time TIMESTAMP
+);
+
+ALTER TABLE "lqbz"."als_k_graph_entity_t" ADD CONSTRAINT PRIMARY KEY (id);
+
+COMMENT ON TABLE "lqbz"."als_k_graph_entity_t" IS '知识图谱实体关系';
+COMMENT ON COLUMN "lqbz"."als_k_graph_entity_t"."id" IS '唯一ID';
+COMMENT ON COLUMN "lqbz"."als_k_graph_entity_t"."clause_id" IS '分句ID';
+COMMENT ON COLUMN "lqbz"."als_k_graph_entity_t"."head_entity" IS '头实体';
+COMMENT ON COLUMN "lqbz"."als_k_graph_entity_t"."head_entity_class" IS '头实体类';
+COMMENT ON COLUMN "lqbz"."als_k_graph_entity_t"."relation" IS '关系';
+COMMENT ON COLUMN "lqbz"."als_k_graph_entity_t"."tail_entity" IS '尾实体';
+COMMENT ON COLUMN "lqbz"."als_k_graph_entity_t"."tail_entity_class" IS '尾实体类';
+COMMENT ON COLUMN "lqbz"."als_k_graph_entity_t"."status" IS '状态';
+COMMENT ON COLUMN "lqbz"."als_k_graph_entity_t"."remarks" IS '备注';
+COMMENT ON COLUMN "lqbz"."als_k_graph_entity_t"."tenant_id" IS '租户号';
+COMMENT ON COLUMN "lqbz"."als_k_graph_entity_t"."del_flag" IS '删除标识(1删除 0未删除)';
+COMMENT ON COLUMN "lqbz"."als_k_graph_entity_t"."version" IS '乐观锁';
+COMMENT ON COLUMN "lqbz"."als_k_graph_entity_t"."create_by" IS '创建人';
+COMMENT ON COLUMN "lqbz"."als_k_graph_entity_t"."create_time" IS '创建时间';
+COMMENT ON COLUMN "lqbz"."als_k_graph_entity_t"."update_by" IS '更新人';
+COMMENT ON COLUMN "lqbz"."als_k_graph_entity_t"."update_time" IS '更新时间';
+