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