Parcourir la source

知识图谱抽取接口调用

Gaokun Wang il y a 5 mois
Parent
commit
6144b40ea8

+ 2 - 1
als-common/common-core/src/main/java/org/eco/common/core/utils/HttpUtils.java

@@ -1,5 +1,6 @@
 package org.eco.common.core.utils;
 
+import cn.hutool.json.JSONUtil;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import io.netty.channel.ChannelOption;
@@ -200,7 +201,7 @@ public class HttpUtils {
      * @return java.lang.String
      */
     public static String postJson(String url, Object jsonBody) {
-        log.info("请求参数:{}", jsonBody.toString());
+        log.info("请求参数:{}", JSONUtil.parseObj(jsonBody));
         Mono<String> resp = createWebClientWithConnectAndReadTimeOuts().post().uri(url)
             .contentType(MediaType.APPLICATION_JSON).body(Mono.just(jsonBody), Object.class).retrieve()
             .bodyToMono(String.class).timeout(Duration.ofMillis(DEFAULT_REQUEST_TIMEOUT));

+ 30 - 2
als-modules/agile-assurance/src/main/java/org/eco/als/controller/KGraphTaskController.java

@@ -3,7 +3,10 @@ package org.eco.als.controller;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
 import lombok.RequiredArgsConstructor;
+import org.eco.als.domain.bo.ExtraKGraphTaskBo;
+import org.eco.als.domain.bo.ExtraKGraphTaskStatusBo;
 import org.eco.als.domain.bo.KGraphTaskBo;
 import org.eco.als.domain.vo.KGraphTaskVo;
 import org.eco.als.service.IKGraphTaskService;
@@ -59,16 +62,17 @@ public class KGraphTaskController extends BaseController {
         }
         return CommonResult.success();
     }
+
     /**
      * 新增知识图谱任务
      */
     @RepeatSubmit()
     @PostMapping("/pro")
     public CommonResult<Void> proTask(@RequestBody KGraphTaskBo kGraphTaskBo) {
-        if(StrUtil.isBlank(kGraphTaskBo.getTaskType())) {
+        if (StrUtil.isBlank(kGraphTaskBo.getTaskType())) {
             return CommonResult.fail("任务类型不能为空");
         }
-        if(ObjectUtil.isEmpty(kGraphTaskBo.getId())) {
+        if (ObjectUtil.isEmpty(kGraphTaskBo.getId())) {
             return CommonResult.fail("任务Id不能为空");
         }
         boolean pro = kGraphTaskService.proTask(kGraphTaskBo);
@@ -104,4 +108,28 @@ public class KGraphTaskController extends BaseController {
         }
         return CommonResult.success();
     }
+
+    /**
+     * 结果回调
+     */
+    @PostMapping("/result/callback")
+    public CommonResult<Void> resultCallback(@Valid @RequestBody ExtraKGraphTaskBo extraKGraphTaskBo) {
+        boolean isCallback = kGraphTaskService.resultCallback(extraKGraphTaskBo);
+        if (!isCallback) {
+            return CommonResult.fail("回调新增结果失败!");
+        }
+        return CommonResult.success();
+    }
+
+    /**
+     * 状态回调
+     */
+    @PostMapping("/status/callback")
+    public CommonResult<Void> statusCallback(@Valid @RequestBody ExtraKGraphTaskStatusBo extraKGraphTaskStatusBo) {
+        boolean isCallback = kGraphTaskService.statusCallback(extraKGraphTaskStatusBo);
+        if (!isCallback) {
+            return CommonResult.fail("更新状态失败!");
+        }
+        return CommonResult.success();
+    }
 }

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

@@ -0,0 +1,36 @@
+package org.eco.als.domain.bo;
+
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ExtraKGraphTaskBo {
+
+    /**
+     * 任务id
+     */
+    @NotNull(message = "任务id不能为空")
+    private Long taskId;
+
+    /**
+     * 任务类型
+     */
+    @NotBlank(message = "任务类型不能为空")
+    private String taskType;
+
+    /**
+     * 实体关系记录
+     */
+    @Valid
+    private List<KGraphEntityBo> graphEntityList;
+
+    /**
+     * 分句记录
+     */
+    @Valid
+    private List<KGraphClauseBo> graphClauseList;
+}

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

@@ -0,0 +1,28 @@
+package org.eco.als.domain.bo;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotEmpty;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+@Data
+public class ExtraKGraphTaskStatusBo {
+
+    /**
+     * 任务id
+     */
+    @NotNull(message = "任务id不能为空")
+    private Long taskId;
+
+    /**
+     * 任务类型
+     */
+    @NotBlank(message = "任务类型不能为空")
+    private String taskType;
+
+    /**
+     * 状态
+     */
+    @NotBlank(message = "状态不能为空")
+    private String status;
+}

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

@@ -0,0 +1,29 @@
+package org.eco.als.domain.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ExtraKGraphTaskVo {
+
+    /**
+     * 任务id
+     */
+    private Long taskId;
+
+    /**
+     * 任务类型
+     */
+    private String taskType;
+
+    /**
+     * 实体关系记录
+     */
+    private List<KGraphEntityVo> graphEntityList;
+
+    /**
+     * 分句记录
+     */
+    private List<KGraphClauseVo> graphClauseList;
+}

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

@@ -31,6 +31,14 @@ public interface IKGraphEntityService extends IBaseService<KGraphEntity> {
      */
     List<KGraphEntityVo> selectList(KGraphEntityBo kGraphEntityBo);
 
+    /**
+     * 查询知识图谱实体关系列表
+     *
+     * @param TaskId TaskId
+     * @return 知识图谱实体关系集合
+     */
+    List<KGraphEntityVo> selectListByTaskId(Long TaskId);
+
     /**
      * 分页查询知识图谱实体关系列表
      *
@@ -46,6 +54,7 @@ public interface IKGraphEntityService extends IBaseService<KGraphEntity> {
      * @return 结果:true 操作成功,false 操作失败
      */
     boolean insert(KGraphEntityBo kGraphEntityBo);
+
     /**
      * 新增知识图谱实体关系
      *

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

@@ -1,6 +1,8 @@
 package org.eco.als.service;
 
 import org.eco.als.domain.KGraphTask;
+import org.eco.als.domain.bo.ExtraKGraphTaskBo;
+import org.eco.als.domain.bo.ExtraKGraphTaskStatusBo;
 import org.eco.als.domain.bo.KGraphTaskBo;
 import org.eco.als.domain.vo.KGraphTaskVo;
 import org.eco.common.core.core.page.PageResult;
@@ -46,6 +48,7 @@ public interface IKGraphTaskService extends IBaseService<KGraphTask> {
      * @return 结果:true 操作成功,false 操作失败
      */
     boolean insert(KGraphTaskBo kGraphTaskBo);
+
     /**
      * 处理任务
      *
@@ -77,4 +80,8 @@ public interface IKGraphTaskService extends IBaseService<KGraphTask> {
      * @return 结果:true 删除成功,false 删除失败
      */
     boolean deleteByIds(Long[] ids);
+
+    boolean resultCallback(ExtraKGraphTaskBo extraKGraphTaskBo);
+
+    boolean statusCallback(ExtraKGraphTaskStatusBo extraKGraphTaskStatusBo);
 }

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

@@ -7,13 +7,9 @@ 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;
@@ -25,6 +21,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
+import static org.eco.als.domain.table.KGraphClauseTableDef.K_GRAPH_CLAUSE;
 import static org.eco.als.domain.table.KGraphEntityTableDef.K_GRAPH_ENTITY;
 
 /**
@@ -39,11 +36,6 @@ public class KGraphEntityServiceImpl extends BaseServiceImpl<KGraphEntityMapper,
     @Resource
     private KGraphEntityMapper kGraphEntityMapper;
 
-    @Resource
-    private IKGraphTaskService kGraphTaskService;
-    @Resource
-    private IKGraphClauseService kGraphClauseService;
-
     @Override
     public QueryWrapper query() {
         return super.query().from(K_GRAPH_ENTITY);
@@ -96,6 +88,20 @@ public class KGraphEntityServiceImpl extends BaseServiceImpl<KGraphEntityMapper,
         return this.listAs(queryWrapper, KGraphEntityVo.class);
     }
 
+    @Override
+    public List<KGraphEntityVo> selectListByTaskId(Long TaskId) {
+        QueryWrapper queryWrapper = super.buildBaseQueryWrapper();
+        queryWrapper.select(
+                K_GRAPH_ENTITY.HEAD_ENTITY,
+                K_GRAPH_ENTITY.HEAD_ENTITY_CLASS,
+                K_GRAPH_ENTITY.RELATION,
+                K_GRAPH_ENTITY.TAIL_ENTITY,
+                K_GRAPH_ENTITY.TAIL_ENTITY_CLASS)
+            .from(K_GRAPH_ENTITY).join(K_GRAPH_CLAUSE).on(K_GRAPH_ENTITY.CLAUSE_ID.eq(K_GRAPH_CLAUSE.ID))
+            .where(K_GRAPH_CLAUSE.TASK_ID.eq(TaskId));
+        return this.listAs(queryWrapper, KGraphEntityVo.class);
+    }
+
     /**
      * 分页查询知识图谱实体关系列表
      *
@@ -125,18 +131,10 @@ public class KGraphEntityServiceImpl extends BaseServiceImpl<KGraphEntityMapper,
     @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;
+        kGraphEntityBoList.forEach(kGraphEntityBo ->
+            kGraphEntityList.add(MapstructUtils.convert(kGraphEntityBo, KGraphEntity.class))
+        );
+        return this.saveBatch(kGraphEntityList, 100);
     }
 
     /**
@@ -163,8 +161,7 @@ public class KGraphEntityServiceImpl extends BaseServiceImpl<KGraphEntityMapper,
     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 this.updateById(kGraphEntity);
         }
         return false;
     }

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

@@ -1,26 +1,38 @@
 package org.eco.als.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
 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.bo.*;
+import org.eco.als.domain.vo.ExtraKGraphTaskVo;
+import org.eco.als.domain.vo.KGraphClauseVo;
+import org.eco.als.domain.vo.KGraphEntityVo;
 import org.eco.als.domain.vo.KGraphTaskVo;
 import org.eco.als.enums.GraphStatus;
 import org.eco.als.mapper.KGraphTaskMapper;
+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.exception.BusinessException;
+import org.eco.common.core.utils.HttpUtils;
 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.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import static org.eco.als.domain.table.KGraphTaskTableDef.K_GRAPH_TASK;
 
@@ -35,6 +47,19 @@ import static org.eco.als.domain.table.KGraphTaskTableDef.K_GRAPH_TASK;
 public class KGraphTaskServiceImpl extends BaseServiceImpl<KGraphTaskMapper, KGraphTask> implements IKGraphTaskService {
     @Resource
     private KGraphTaskMapper kGraphTaskMapper;
+    @Resource
+    private IKGraphClauseService kGraphClauseService;
+    @Resource
+    private IKGraphEntityService kGraphEntityService;
+
+    @Value("${kgqa.clause-url}")
+    private String clauseUrl;
+
+    @Value("${kgqa.extract-url}")
+    private String extractUrl;
+    //
+    @Value("${kgqa.storage-url}")
+    private String storageUrl;
 
     @Override
     public QueryWrapper query() {
@@ -111,19 +136,48 @@ public class KGraphTaskServiceImpl extends BaseServiceImpl<KGraphTaskMapper, KGr
     @Override
     public boolean proTask(KGraphTaskBo kGraphTaskBo) {
         KGraphTaskVo kGraphTaskVo = this.selectById(kGraphTaskBo.getId());
+        String result;
+        JSONObject jsonObject;
+        ExtraKGraphTaskVo extraKGraphTaskVo = new ExtraKGraphTaskVo();
         switch (kGraphTaskBo.getTaskType()) {
             case "0":
-                updateStatusById(kGraphTaskBo, kGraphTaskVo, GraphStatus.STATUS_1.getCode());
+                updateStatus(kGraphTaskBo, kGraphTaskVo.getVersion(), GraphStatus.STATUS_1.getCode());
                 Long ossId = kGraphTaskVo.getOssId();
-                // TODO 知识图谱执行分句
+                // 知识图谱执行分句
+                Map<String, Object> map = new HashMap<>();
+                map.put("ossId", ossId);
+                map.put("taskId", kGraphTaskBo.getId());
+                result = HttpUtils.postJson(clauseUrl, map);
+                jsonObject = JSONUtil.parseObj(result);
+                if (!StrUtil.equals("200", jsonObject.getStr("code"))) {
+                    throw new BusinessException(jsonObject.getStr("msg"));
+                }
                 break;
             case "2":
-                updateStatusById(kGraphTaskBo, kGraphTaskVo, GraphStatus.STATUS_3.getCode());
-                // TODO 知识图谱抽取
+                updateStatus(kGraphTaskBo, kGraphTaskVo.getVersion(), GraphStatus.STATUS_3.getCode());
+                // 知识图谱抽取
+                KGraphClauseBo kGraphClauseBo = new KGraphClauseBo();
+                kGraphClauseBo.setTaskId(kGraphTaskBo.getId());
+                List<KGraphClauseVo> graphClauseVos = kGraphClauseService.selectList(kGraphClauseBo);
+                extraKGraphTaskVo.setTaskId(kGraphTaskBo.getId());
+                extraKGraphTaskVo.setGraphClauseList(graphClauseVos);
+                result = HttpUtils.postJson(extractUrl, extraKGraphTaskVo);
+                jsonObject = JSONUtil.parseObj(result);
+                if (!StrUtil.equals("200", jsonObject.getStr("code"))) {
+                    throw new BusinessException(jsonObject.getStr("msg"));
+                }
                 break;
             case "4":
-                updateStatusById(kGraphTaskBo, kGraphTaskVo, GraphStatus.STATUS_5.getCode());
-                // TODO 知识图谱入库
+                updateStatus(kGraphTaskBo, kGraphTaskVo.getVersion(), GraphStatus.STATUS_5.getCode());
+                // 知识图谱入库
+                List<KGraphEntityVo> graphEntityVos = kGraphEntityService.selectListByTaskId(kGraphTaskBo.getId());
+                extraKGraphTaskVo.setTaskId(kGraphTaskBo.getId());
+                extraKGraphTaskVo.setGraphEntityList(graphEntityVos);
+                result = HttpUtils.postJson(storageUrl, extraKGraphTaskVo);
+                jsonObject = JSONUtil.parseObj(result);
+                if (!StrUtil.equals("200", jsonObject.getStr("code"))) {
+                    throw new BusinessException(jsonObject.getStr("msg"));
+                }
                 break;
             default:
                 throw new BusinessException("任务类型错误");
@@ -131,9 +185,9 @@ public class KGraphTaskServiceImpl extends BaseServiceImpl<KGraphTaskMapper, KGr
         return true;
     }
 
-    private void updateStatusById(KGraphTaskBo kGraphTaskBo, KGraphTaskVo kGraphTaskVo, String status) {
+    private void updateStatus(KGraphTaskBo kGraphTaskBo, Integer version, String status) {
         kGraphTaskBo.setStatus(status);
-        kGraphTaskBo.setVersion(kGraphTaskVo.getVersion());
+        kGraphTaskBo.setVersion(version);
         this.update(kGraphTaskBo);
     }
 
@@ -146,8 +200,6 @@ public class KGraphTaskServiceImpl extends BaseServiceImpl<KGraphTaskMapper, KGr
     @Override
     public boolean insertWithPk(KGraphTaskBo kGraphTaskBo) {
         KGraphTask kGraphTask = MapstructUtils.convert(kGraphTaskBo, KGraphTask.class);
-
-
         return kGraphTaskMapper.insertWithPk(kGraphTask) > 0;//前台传来主键值
     }
 
@@ -161,8 +213,7 @@ public class KGraphTaskServiceImpl extends BaseServiceImpl<KGraphTaskMapper, KGr
     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 this.updateById(kGraphTask);
         }
         return false;
     }
@@ -179,4 +230,35 @@ public class KGraphTaskServiceImpl extends BaseServiceImpl<KGraphTaskMapper, KGr
         return this.removeByIds(Arrays.asList(ids));
     }
 
+    @Override
+    public boolean resultCallback(ExtraKGraphTaskBo extraKGraphTaskBo) {
+        if (StrUtil.equals(extraKGraphTaskBo.getTaskType(), "1")) {
+            boolean isSave = kGraphClauseService.saveBatch(extraKGraphTaskBo.getGraphClauseList());
+            if (!isSave) {
+                return false;
+            }
+
+        } else if (StrUtil.equals(extraKGraphTaskBo.getTaskType(), "2")) {
+            boolean isSave = kGraphEntityService.saveBatch(extraKGraphTaskBo.getGraphEntityList());
+            if (!isSave) {
+                return false;
+            }
+        }
+        KGraphTaskVo kGraphTaskVo = this.selectById(extraKGraphTaskBo.getTaskId());
+        KGraphTaskBo kGraphTaskBo = new KGraphTaskBo();
+        kGraphTaskBo.setId(extraKGraphTaskBo.getTaskId());
+        kGraphTaskBo.setVersion(kGraphTaskVo.getVersion());
+        kGraphTaskBo.setStatus(StrUtil.equals(extraKGraphTaskBo.getTaskType(), "1") ? GraphStatus.STATUS_2.getCode() : GraphStatus.STATUS_4.getCode());
+        return this.update(kGraphTaskBo);
+    }
+
+    @Override
+    public boolean statusCallback(ExtraKGraphTaskStatusBo extraKGraphTaskStatusBo) {
+        KGraphTaskVo kGraphTaskVo = this.selectById(extraKGraphTaskStatusBo.getTaskId());
+        KGraphTaskBo kGraphTaskBo = new KGraphTaskBo();
+        kGraphTaskBo.setId(extraKGraphTaskStatusBo.getTaskId());
+        kGraphTaskBo.setVersion(kGraphTaskVo.getVersion());
+        kGraphTaskBo.setStatus(extraKGraphTaskStatusBo.getStatus());
+        return this.update(kGraphTaskBo);
+    }
 }

+ 8 - 1
als-start/src/main/resources/application-dev.yml

@@ -171,5 +171,12 @@ easy-es:
   banner: false # 默认为true 打印banner 若您不期望打印banner,可配置为false
   username: #es用户名,若无则删去此行配置
   password: #es密码,若无则删去此行配置
+## 知识图谱
 kgqa:
-  ask-url: http://127.0.0.1:8000/kgqa/ask/
+  ask-url: http://192.168.95.89:8000/kgqa/ask # kgqa问答接口
+  clause-url: http://192.168.95.89:8100/kgqa/split_sentence # kgqa分句接口
+  extract-url: http://192.168.95.89:8100/kgqa/extract # kgqa抽取接口
+  storage-url: http://192.168.95.89:8000/kgqa/storage # kgqa存储接口
+## 空军航空装备维修保障支持系统
+extra:
+  wcjw-gztj-url: http://127.0.0.1:8081/wcjw-web/select_list

+ 8 - 1
als-start/src/main/resources/application-local.yml

@@ -167,5 +167,12 @@ easy-es:
   banner: false # 默认为true 打印banner 若您不期望打印banner,可配置为false
   username: #es用户名,若无则删去此行配置
   password: #es密码,若无则删去此行配置
+## 知识图谱
 kgqa:
-  ask-url: http://192.168.0.103:8000/kgqa/ask/
+  ask-url: http://192.168.95.89:8000/kgqa/ask # kgqa问答接口
+  clause-url: http://192.168.95.89:8100/kgqa/split_sentence # kgqa分句接口
+  extract-url: http://192.168.95.89:8100/kgqa/extract # kgqa抽取接口
+  storage-url: http://192.168.95.89:8000/kgqa/storage # kgqa存储接口
+## 空军航空装备维修保障支持系统
+extra:
+  wcjw-gztj-url: http://127.0.0.1:8081/wcjw-web/select_list

+ 140 - 0
als-start/src/main/resources/db/dm/V1_0_0_6__lqbz-250109-ddl.sql

@@ -0,0 +1,140 @@
+CREATE TABLE "lqbz"."T_CALCULATION_MODEL" (
+                                              "CALCULATION_MODEL_ID" VARCHAR(32) NOT NULL,
+                                              "FORMULA_NAME" VARCHAR(255) NULL,
+                                              "FORMULA_SHOW" VARCHAR(255) NULL,
+                                              "FORMULA_USE" VARCHAR(255) NULL,
+                                              "VERSION_NUMBER" VARCHAR(50) NULL,
+                                              "STATUS" TINYINT DEFAULT 1 NULL,
+                                              "CREATE_BY" VARCHAR(50) NULL,
+                                              "CREATE_TIME" TIMESTAMP(0) NOT NULL,
+                                              "UPDATE_BY" VARCHAR(50) NULL,
+                                              "UPDATE_TIME" TIMESTAMP(0) NULL,
+                                              "IS_EDIT" VARCHAR(50) DEFAULT 1 NULL
+);
+
+CREATE TABLE "lqbz"."T_CALCULATION_MODEL_DICT" (
+                                                   "DICT_CODE" BIGINT IDENTITY (20, 1) NOT NULL,
+                                                   "DICT_SORT" INT DEFAULT 0 NULL,
+                                                   "DICT_LABEL" VARCHAR(100) DEFAULT '' NULL,
+                                                   "DICT_VALUE" VARCHAR(100) DEFAULT '' NULL,
+                                                   "DICT_TYPE" VARCHAR(100) DEFAULT '' NULL,
+                                                   "CSS_CLASS" VARCHAR(100) NULL,
+                                                   "LIST_CLASS" VARCHAR(100) NULL,
+                                                   "IS_DEFAULT" CHAR(1) DEFAULT 'N' NULL,
+                                                   "STATUS" CHAR(1) DEFAULT '0' NULL,
+                                                   "CREATE_BY" VARCHAR(64) DEFAULT '' NULL,
+                                                   "CREATE_TIME" TIMESTAMP(0) NULL,
+                                                   "UPDATE_BY" VARCHAR(64) DEFAULT '' NULL,
+                                                   "UPDATE_TIME" TIMESTAMP(0) NULL,
+                                                   "REMARK" VARCHAR(500) NULL
+);
+
+CREATE TABLE "lqbz"."T_CALCULATION_MODEL_VERSION" (
+                                                      "CALCULATION_MODEL_VERSION_ID" VARCHAR(32) NOT NULL,
+                                                      "CALCULATION_MODEL_ID" VARCHAR(32) NOT NULL,
+                                                      "FORMULA_NAME" VARCHAR(255) NULL,
+                                                      "FORMULA_SHOW" VARCHAR(255) NULL,
+                                                      "FORMULA_USE" VARCHAR(255) NULL,
+                                                      "VERSION_NUMBER" VARCHAR(50) NULL,
+                                                      "STATUS" TINYINT DEFAULT 1 NULL,
+                                                      "CREATE_BY" VARCHAR(50) NULL,
+                                                      "CREATE_TIME" TIMESTAMP(0) NOT NULL,
+                                                      "UPDATE_BY" VARCHAR(50) NULL,
+                                                      "UPDATE_TIME" TIMESTAMP(0) NULL,
+                                                      "IS_EDIT" VARCHAR(10) DEFAULT 1 NULL
+);
+
+SET
+IDENTITY_INSERT "lqbz"."T_CALCULATION_MODEL_DICT" ON;
+
+SET
+IDENTITY_INSERT "lqbz"."T_CALCULATION_MODEL_DICT" OFF;
+
+ALTER TABLE "lqbz"."T_CALCULATION_MODEL"
+    ADD CONSTRAINT PRIMARY KEY ("CALCULATION_MODEL_ID");
+
+ALTER TABLE "lqbz"."T_CALCULATION_MODEL_DICT"
+    ADD CONSTRAINT PRIMARY KEY ("DICT_CODE");
+
+ALTER TABLE "lqbz"."T_CALCULATION_MODEL_VERSION"
+    ADD CONSTRAINT PRIMARY KEY ("CALCULATION_MODEL_VERSION_ID");
+
+COMMENT ON TABLE "lqbz"."T_CALCULATION_MODEL" IS '携行计算模型';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL"."CALCULATION_MODEL_ID" IS '计算模型id';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL"."FORMULA_NAME" IS '公式名称';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL"."FORMULA_SHOW" IS '公式(展示用)';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL"."FORMULA_USE" IS '公式(实际使用)';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL"."VERSION_NUMBER" IS '版本号';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL"."STATUS" IS '状态 (0禁用 1启用)';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL"."CREATE_BY" IS '创建者';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL"."CREATE_TIME" IS '创建时间';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL"."UPDATE_BY" IS '更新者';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL"."UPDATE_TIME" IS '更新时间';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL"."IS_EDIT" IS '是否允许修改';
+
+COMMENT ON TABLE "lqbz"."T_CALCULATION_MODEL_DICT" IS '计算模型字典';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_DICT"."DICT_CODE" IS '字典编码';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_DICT"."DICT_SORT" IS '字典排序';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_DICT"."DICT_LABEL" IS '字典标签';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_DICT"."DICT_VALUE" IS '字典键值';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_DICT"."DICT_TYPE" IS '字典类型';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_DICT"."CSS_CLASS" IS '样式属性(其他样式扩展)';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_DICT"."LIST_CLASS" IS '表格回显样式';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_DICT"."IS_DEFAULT" IS '是否默认(Y是 N否)';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_DICT"."STATUS" IS '状态(0正常 1停用)';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_DICT"."CREATE_BY" IS '创建者';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_DICT"."CREATE_TIME" IS '创建时间';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_DICT"."UPDATE_BY" IS '更新者';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_DICT"."UPDATE_TIME" IS '更新时间';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_DICT"."REMARK" IS '备注';
+
+COMMENT ON TABLE "lqbz"."T_CALCULATION_MODEL_VERSION" IS '携行计算模型版本';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_VERSION"."CALCULATION_MODEL_VERSION_ID" IS '计算模型版本id';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_VERSION"."CALCULATION_MODEL_ID" IS '计算模型id';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_VERSION"."FORMULA_NAME" IS '公式名称';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_VERSION"."FORMULA_SHOW" IS '公式(展示用)';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_VERSION"."FORMULA_USE" IS '公式(实际使用)';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_VERSION"."VERSION_NUMBER" IS '版本号';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_VERSION"."STATUS" IS '状态 (0禁用 1启用)';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_VERSION"."CREATE_BY" IS '创建者';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_VERSION"."CREATE_TIME" IS '创建时间';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_VERSION"."UPDATE_BY" IS '更新者';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_VERSION"."UPDATE_TIME" IS '更新时间';
+
+COMMENT ON COLUMN "lqbz"."T_CALCULATION_MODEL_VERSION"."IS_EDIT" IS '是否允许修改';

+ 2 - 0
als-start/src/main/resources/db/dm/V1_0_0_7__lqbz-250110-dml.sql

@@ -0,0 +1,2 @@
+insert into "lqbz"."T_CALCULATION_MODEL" ("CALCULATION_MODEL_ID", "FORMULA_NAME", "FORMULA_SHOW", "FORMULA_USE", "VERSION_NUMBER", "STATUS", "CREATE_BY", "CREATE_TIME", "UPDATE_BY", "UPDATE_TIME", "IS_EDIT") values ('e5f2b46d326849f09834131b90e1a5d6', '基于威布尔分布的航材计算', '$$航材数量 = 飞机数量*\\\sum_{i=1}^{部件数量}[F(部件已使用时间 + 任务时间)-F(部件已使用时间)]$$', '威布尔分布计算', 'V20250103_1', 1, '1', '2025-01-03 09:48:44', '1', '2025-01-03 09:48:44', '0');
+insert into "lqbz"."T_CALCULATION_MODEL" ("CALCULATION_MODEL_ID", "FORMULA_NAME", "FORMULA_SHOW", "FORMULA_USE", "VERSION_NUMBER", "STATUS", "CREATE_BY", "CREATE_TIME", "UPDATE_BY", "UPDATE_TIME", "IS_EDIT") values ('0bbb204f371d4b8e9028fbe96b3f6daf', '按使用寿命计算', '$$航材数量 = 风险系数 * 环境因子系数 * \frac{┌ 任务时长 - ( 平均无故障工作时间 - 已使用时长 ) ┐}{平均无故障工作时间} * 单机装机数量$$', '$$风险系数 * 环境因子系数 * ┌ 任务时长 - ( 平均无故障工作时间 - 已使用时长 ) ┐ / 平均无故障工作时间 * 单机装机数量$$', 'V20241227_1', 1, '1', '2024-12-27 10:21:03', '1', '2025-01-06 10:10:04', '1');