From 9b8159c0adc5de7a64bf39ae53c88474a9f98bdb Mon Sep 17 00:00:00 2001
From: xusd <hugeinfo123>
Date: Sat, 07 Sep 2024 14:10:42 +0800
Subject: [PATCH] AI相关接口
---
dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/domain/dto/LawInfoDto.java | 23 +++++
dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/AiController.java | 136 ++++++++++++++++++++++++++++++++++
dyh-service/dyh-mediate/src/main/resources/config/application-test.yml | 11 +-
dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/domain/dto/CaseInfoDto.java | 19 ++++
dyh-service/dyh-mediate/src/main/resources/config/application.yml | 2
dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/domain/dto/CaseInfoDetailDto.java | 37 +++++++++
dyh-service/dyh-mediate/src/main/resources/config/application-dev.yml | 5 +
7 files changed, 227 insertions(+), 6 deletions(-)
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/AiController.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/AiController.java
new file mode 100644
index 0000000..b321e2e
--- /dev/null
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/AiController.java
@@ -0,0 +1,136 @@
+package cn.huge.module.ai.controller;
+
+import cn.huge.base.common.utils.HttpClientUtils;
+import cn.huge.base.common.utils.ReturnSucUtils;
+import cn.huge.module.ai.controller.domain.dto.CaseInfoDetailDto;
+import cn.huge.module.ai.controller.domain.dto.CaseInfoDto;
+import cn.huge.module.ai.controller.domain.dto.LawInfoDto;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.cloud.openfeign.support.FeignHttpClientProperties;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * AI请求调用/get-case获取案件列表(一般包含3个纠纷类和3个判决类),/get-law获取法条推荐列表;案件详情在根据案件列表的id及type调用/get-case-detail获取案件详情
+ */
+@Slf4j
+@RestController
+@RequestMapping("/api/ai/case-law")
+public class AiController {
+
+ @Value("${ai.url}")
+ private String aiUrl;
+
+ @RequestMapping("/get-case")
+ public Object getCase(@RequestParam String caseDes, @RequestParam String caseClaim, @RequestParam String caseId) {
+ List<CaseInfoDto> caseInfoDtoList = new ArrayList<>();
+ Map<String, String> params = new HashMap<>();
+ params.put("caseDes", caseDes);//案件描述
+ params.put("caseClaim", caseClaim);//案件诉求
+ params.put("caseId", caseId);//案件id
+ params.put("topK", "3");
+ params.put("metricType", "IP");
+ String s = HttpClientUtils.httpPostForm(aiUrl + "/queryConciliationCase", params, new HashMap<>(), "utf-8");
+ JSONObject object = JSONObject.parseObject(s);
+ int code = object.getIntValue("code");
+ if (code == 200) {
+ JSONArray data = object.getJSONArray("data");
+ for (int i = 0; i < data.size(); i++) {
+ JSONObject jsonObject = data.getJSONObject(i);
+ CaseInfoDto caseInfoDto = new CaseInfoDto();
+ caseInfoDto.setCaseId(jsonObject.getString("id"));
+ caseInfoDto.setCaseName(jsonObject.getString("case_title"));
+ caseInfoDto.setCaseType(1);//表示调解类案件
+ caseInfoDtoList.add(caseInfoDto);
+ }
+ }
+ if (caseInfoDtoList.size() < 6) {
+ s = HttpClientUtils.httpPostForm(aiUrl + "/queryJudgmentCase", params, new HashMap<>(), "utf-8");
+ object = JSONObject.parseObject(s);
+ if (code == 200) {
+ JSONArray data = object.getJSONArray("data");
+ for (int i = 0; i < data.size(); i++) {
+ JSONObject jsonObject = data.getJSONObject(i);
+ CaseInfoDto caseInfoDto = new CaseInfoDto();
+ caseInfoDto.setCaseId(jsonObject.getString("id"));
+ caseInfoDto.setCaseName(jsonObject.getString("case_title"));
+ caseInfoDto.setCaseType(2);//表示判决类案件
+ caseInfoDtoList.add(caseInfoDto);
+ if (caseInfoDtoList.size() == 3)
+ break;
+ }
+ }
+ }
+ return ReturnSucUtils.getRepInfo("请求成功", caseInfoDtoList);
+ }
+
+
+ @RequestMapping("/get-law")
+ public Object getLaw(@RequestParam String caseDes, @RequestParam String caseClaim, @RequestParam String caseId) {
+ List<LawInfoDto> lawInfoDtos = new ArrayList<>();
+ Map<String, String> params = new HashMap<>();
+ params.put("caseDes", caseDes);//案件描述
+ params.put("caseClaim", caseClaim);//案件诉求
+ params.put("caseId", caseId);//案件id
+ String s = HttpClientUtils.httpPostForm(aiUrl + "/queryLawProvision", params, new HashMap<>(), "utf-8");
+ JSONObject object = JSONObject.parseObject(s);
+ int code = object.getIntValue("code");
+ if (code == 200) {
+ JSONArray data = object.getJSONArray("data");
+ for (int i = 0; i < data.size(); i++) {
+ JSONObject jsonObject = data.getJSONObject(i);
+ LawInfoDto lawInfoDto = new LawInfoDto();
+ lawInfoDto.setLawInfoId(jsonObject.getString("law_info_id"));
+ lawInfoDto.setLawIndex(jsonObject.getString("provision_index"));
+ lawInfoDto.setLawDesc(jsonObject.getString("provision_text"));
+ lawInfoDto.setLawTitle(jsonObject.getString("law_title"));
+ lawInfoDtos.add(lawInfoDto);
+ }
+ }
+ return ReturnSucUtils.getRepInfo("请求成功", lawInfoDtos);
+ }
+
+ @RequestMapping("/get-case-detail")
+ public Object getCaseLawDetail(@RequestParam String caseId, @RequestParam int type) {
+ Map<String, String> params = new HashMap<>();
+ params.put("caseId", caseId);
+ String s = "";
+ CaseInfoDetailDto caseInfoDetailDto = new CaseInfoDetailDto();
+ if (type == 1) {//表示纠纷类案件
+ s = HttpClientUtils.httpGet(aiUrl + "/getConciliationCaseText", new HashMap<>(), "utf-8");
+ JSONObject object = JSONObject.parseObject(s);
+ int code = object.getIntValue("code");
+ if (code == 1) {
+ JSONObject data = object.getJSONObject("data");
+ caseInfoDetailDto.setCaseId(data.getString("id"));
+ caseInfoDetailDto.setCaseTitle(data.getString("case_title"));
+ caseInfoDetailDto.setCaseDesc(data.getString("case_des"));
+ caseInfoDetailDto.setCaseClaim("case_claim");
+ caseInfoDetailDto.setAgreeContent(data.getString("agree_content"));
+ }
+ } else {
+ s = HttpClientUtils.httpGet(aiUrl + "/getJudgmentCaseText", new HashMap<>(), "utf-8");
+ JSONObject object = JSONObject.parseObject(s);
+ int code = object.getIntValue("code");
+ if (code == 1) {
+ JSONObject data = object.getJSONObject("data");
+ caseInfoDetailDto.setCaseId(data.getString("idcpws_case_info_id"));
+ caseInfoDetailDto.setCaseTitle(data.getString("basic_case_info"));
+ caseInfoDetailDto.setCaseDesc(data.getString("full_text"));
+ caseInfoDetailDto.setAgreeContent(data.getString("judgment"));
+ caseInfoDetailDto.setLegalBasis(data.getString("legal_basis"));
+ }
+ }
+ return ReturnSucUtils.getRepInfo("请求成功", caseInfoDetailDto);
+ }
+
+}
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/domain/dto/CaseInfoDetailDto.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/domain/dto/CaseInfoDetailDto.java
new file mode 100644
index 0000000..8e06c08
--- /dev/null
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/domain/dto/CaseInfoDetailDto.java
@@ -0,0 +1,37 @@
+package cn.huge.module.ai.controller.domain.dto;
+
+import lombok.Data;
+
+@Data
+public class CaseInfoDetailDto {
+ /**
+ * 案件名称
+ */
+ private String caseTitle;
+ /**
+ * 案件描述
+ */
+ private String caseDesc;
+ /**
+ * 案件要求
+ */
+ private String caseClaim;
+ /**
+ * 案件类型
+ */
+ private String caseType;
+ /**
+ * 案件id
+ */
+ private String caseId;
+
+ /**
+ * 和解协议
+ */
+ private String agreeContent;
+
+ /**
+ * 立案依据
+ */
+ private String legalBasis;
+}
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/domain/dto/CaseInfoDto.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/domain/dto/CaseInfoDto.java
new file mode 100644
index 0000000..4874838
--- /dev/null
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/domain/dto/CaseInfoDto.java
@@ -0,0 +1,19 @@
+package cn.huge.module.ai.controller.domain.dto;
+
+import lombok.Data;
+
+@Data
+public class CaseInfoDto {
+ /**
+ * 案件标题
+ */
+ private String caseName;
+ /**
+ * 案件类型 1 调解类 2 判决类
+ */
+ private int caseType;
+ /**
+ * 案件ID
+ */
+ private String caseId;
+}
diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/domain/dto/LawInfoDto.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/domain/dto/LawInfoDto.java
new file mode 100644
index 0000000..59b2023
--- /dev/null
+++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/domain/dto/LawInfoDto.java
@@ -0,0 +1,23 @@
+package cn.huge.module.ai.controller.domain.dto;
+
+import lombok.Data;
+
+@Data
+public class LawInfoDto {
+ /**
+ * 法条id
+ */
+ private String lawInfoId;
+ /**
+ * 法条标题
+ */
+ private String lawTitle;
+ /**
+ * 法条描述
+ */
+ private String lawDesc;
+ /**
+ * 法条索引:第XXX条
+ */
+ private String lawIndex;
+}
diff --git a/dyh-service/dyh-mediate/src/main/resources/config/application-dev.yml b/dyh-service/dyh-mediate/src/main/resources/config/application-dev.yml
index a32c8a2..4ea8b45 100644
--- a/dyh-service/dyh-mediate/src/main/resources/config/application-dev.yml
+++ b/dyh-service/dyh-mediate/src/main/resources/config/application-dev.yml
@@ -93,4 +93,7 @@
servlet:
context-path: /
ssl:
- enabled: false
\ No newline at end of file
+ enabled: false
+
+ai:
+ url: http://183.2.142.21:9003
\ No newline at end of file
diff --git a/dyh-service/dyh-mediate/src/main/resources/config/application-test.yml b/dyh-service/dyh-mediate/src/main/resources/config/application-test.yml
index a32c8a2..f327225 100644
--- a/dyh-service/dyh-mediate/src/main/resources/config/application-test.yml
+++ b/dyh-service/dyh-mediate/src/main/resources/config/application-test.yml
@@ -1,7 +1,7 @@
#server配置
server:
#端口
- port: 9006
+ port: 9008
#Spring配置
spring:
@@ -10,9 +10,9 @@
name: dyh-mediate
#数据源配置
datasource:
- url: jdbc:dm://192.168.3.51:5236?schema=gzdyh_dev
+ url: jdbc:dm://183.2.142.46:9006?schema=gzdyh_dev
username: SYSDBA
- password: hugeinfo123
+ password: SYSDBA
driver-class-name: dm.jdbc.driver.DmDriver
type: com.alibaba.druid.pool.DruidDataSource
druid:
@@ -93,4 +93,7 @@
servlet:
context-path: /
ssl:
- enabled: false
\ No newline at end of file
+ enabled: false
+
+ai:
+ url: http://183.2.142.21:9003
\ No newline at end of file
diff --git a/dyh-service/dyh-mediate/src/main/resources/config/application.yml b/dyh-service/dyh-mediate/src/main/resources/config/application.yml
index ab13312..cdd5643 100644
--- a/dyh-service/dyh-mediate/src/main/resources/config/application.yml
+++ b/dyh-service/dyh-mediate/src/main/resources/config/application.yml
@@ -3,7 +3,7 @@
profiles:
active:
- dev
- # - test
+# - test
# - prod
devtools:
--
Gitblit v1.8.0