From 3feed5879e5a9b794862bf46d38c7f66cfe41d50 Mon Sep 17 00:00:00 2001 From: xusd <330628789@qq.com> Date: Wed, 25 Jun 2025 21:36:08 +0800 Subject: [PATCH] feature:增加市民编号,增加AI问答 --- dyh-service/dyh-sys/src/main/java/cn/huge/module/ai/domain/AiRequestVo.java | 17 +++ dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/ThGridCitizenEventService.java | 4 dyh-service/dyh-sys/src/main/java/cn/huge/module/ai/AiChatController.java | 103 ++++++++++++++++++++ dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/impl/ThGridCitizenEventServiceImpl.java | 5 + dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoWebController.java | 6 + dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoMapper.xml | 101 ++++++++++++++------ dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java | 6 + dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/CaseInfoDTO.java | 2 dyh-service/dyh-sys/src/main/java/cn/huge/module/ai/domain/AiBodyDto.java | 10 ++ 9 files changed, 223 insertions(+), 31 deletions(-) diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoWebController.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoWebController.java index 9ba2986..270ed62 100644 --- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoWebController.java +++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/web/CaseInfoWebController.java @@ -179,6 +179,12 @@ terms.put("systemSource", systemSource); } + //市民编码 + String cityCode = request.getParameter("cityCode"); + if (StringUtils.isNotBlank(cityCode)) { + terms.put("cityCode", cityCode); + } + String peopleNum = request.getParameter("peopleNum"); if (StringUtils.isNotBlank(peopleNum)) { String[] split = peopleNum.split("-"); diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoMapper.xml b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoMapper.xml index 45a367f..10fe974 100644 --- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoMapper.xml +++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoMapper.xml @@ -139,7 +139,10 @@ <!-- 表 --> <sql id='table-name'>dyh_case_info</sql> <sql id="column-part-all"> - a.id, + a + . + id + , a.status, a.status_name, a.canal, @@ -187,7 +190,8 @@ </sql> <!-- 字段 --> <sql id="column-part"> - id, + id + , case_title, case_ref, case_level, @@ -392,7 +396,8 @@ </if> <if test="terms.caseTypeFirstList != null and terms.caseTypeFirstList.size > 0"> and a.case_type_first in - <foreach collection="terms.caseTypeFirstList" item="caseTypeFirst" index="index" open="(" separator="," close=")"> + <foreach collection="terms.caseTypeFirstList" item="caseTypeFirst" index="index" open="(" + separator="," close=")"> #{caseTypeFirst} </foreach> </if> @@ -415,7 +420,8 @@ and (b.belong_unit_id is not null and c.city = #{terms.queCity} <if test="terms.unitGrades != null and terms.unitGrades.size > 0"> and c.unit_grade in - <foreach collection="terms.unitGrades" item="unitGrade" index="index" open="(" separator="," close=")"> + <foreach collection="terms.unitGrades" item="unitGrade" index="index" open="(" separator="," + close=")"> #{unitGrade} </foreach> </if> @@ -430,7 +436,8 @@ close=")"> #{unitGrade} </foreach> - </if>) + </if> + ) or (b.belong_unit_id is null and a.que_city = #{terms.queCity}) ) </if> @@ -438,7 +445,8 @@ and (b.belong_unit_id is not null and c.area = #{terms.queArea} <if test="terms.unitGrades != null and terms.unitGrades.size > 0"> and c.unit_grade in - <foreach collection="terms.unitGrades" item="unitGrade" index="index" open="(" separator="," close=")"> + <foreach collection="terms.unitGrades" item="unitGrade" index="index" open="(" separator="," + close=")"> #{unitGrade} </foreach> </if> @@ -448,7 +456,8 @@ and ((b.belong_unit_id is not null and c.area = #{terms.queArea} <if test="terms.unitGrades != null and terms.unitGrades.size > 0"> and c.unit_grade in - <foreach collection="terms.unitGrades" item="unitGrade" index="index" open="(" separator="," close=")"> + <foreach collection="terms.unitGrades" item="unitGrade" index="index" open="(" separator="," + close=")"> #{unitGrade} </foreach> </if> @@ -461,7 +470,8 @@ and (b.belong_unit_id is not null and c.road = #{terms.queRoad} <if test="terms.unitGrades != null and terms.unitGrades.size > 0"> and c.unit_grade in - <foreach collection="terms.unitGrades" item="unitGrade" index="index" open="(" separator="," close=")"> + <foreach collection="terms.unitGrades" item="unitGrade" index="index" open="(" separator="," + close=")"> #{unitGrade} </foreach> </if> @@ -472,7 +482,8 @@ and ((b.belong_unit_id is not null and c.road = #{terms.queRoad} <if test="terms.unitGrades != null and terms.unitGrades.size > 0"> and c.unit_grade in - <foreach collection="terms.unitGrades" item="unitGrade" index="index" open="(" separator="," close=")"> + <foreach collection="terms.unitGrades" item="unitGrade" index="index" open="(" separator="," + close=")"> #{unitGrade} </foreach> </if> @@ -483,7 +494,8 @@ and (b.belong_unit_id is not null and c.village = #{terms.queVillage} <if test="terms.unitGrades != null and terms.unitGrades.size > 0"> and c.unit_grade in - <foreach collection="terms.unitGrades" item="unitGrade" index="index" open="(" separator="," close=")"> + <foreach collection="terms.unitGrades" item="unitGrade" index="index" open="(" separator="," + close=")"> #{unitGrade} </foreach> </if> @@ -576,6 +588,9 @@ <if test="terms.fileStart != null and terms.fileStart !='' and terms.fileEnd != null and terms.fileEnd !=''"> and (DATE_FORMAT(b.file_time,'%Y-%m-%d %H:%i:%s') <![CDATA[ >= ]]> #{terms.fileStart} and DATE_FORMAT(b.file_time,'%Y-%m-%d %H:%i:%s') <![CDATA[ <= ]]> #{terms.fileEnd}) + </if> + <if test="terms.cityCode != null and terms.cityCode !=''"> + and e.citizen_event_code = #{terms.cityCode} </if> </where> </if> @@ -962,7 +977,8 @@ <select id="pageTermsCaseRegister" resultType="cn.huge.module.cases.domain.dto.CaseRegisterDTO"> SELECT - t1.id as caseId,t1.create_time as createTime,t1.input_user_name as inputUserName,t1.status_name as statusName,t1.case_level as + t1.id as caseId,t1.create_time as createTime,t1.input_user_name as inputUserName,t1.status_name as + statusName,t1.case_level as caseLevel,t1.canal_name as canalName, t1.case_type_first_name as caseTypeFirstName,t1.case_type_name as caseTypeName,t1.plaintiffs as plaintiffs,t1.defendants as defendants,t2.medi_result_name as mediResultName, @@ -986,7 +1002,7 @@ </select> - <select id="countTermsCaseRegister" resultType="java.lang.Long" > + <select id="countTermsCaseRegister" resultType="java.lang.Long"> SELECT count(t1.id) FROM @@ -1001,6 +1017,9 @@ from dyh_case_info a LEFT JOIN dyh_case_info_unfold b on a.id = b.id LEFT JOIN dyh_ct_unit c ON b.belong_unit_id = c.id + <if test="terms.cityCode != null and terms.cityCode !=''"> + left join dyh_th_grid_citizen_event e on e.case_id = a.id + </if> <include refid="where-part-all"/> </select> @@ -1012,6 +1031,9 @@ dyh_case_info a LEFT JOIN dyh_case_info_unfold b on a.id = b.id LEFT JOIN dyh_ct_unit c ON b.belong_unit_id = c.id left join (select id ,case_id from dyh_case_task group by case_id) d on a.id = d.case_id + <if test="terms.cityCode != null and terms.cityCode !=''"> + left join dyh_th_grid_citizen_event d on d.case_id = a.id + </if> <include refid="where-part-all"/> <if test="page.sort != null"> <foreach collection="page.sort" item="s" index="index" separator="," open="order by "> @@ -1066,16 +1088,20 @@ <select id="statisticsArea" resultType="cn.huge.module.cases.domain.dto.CaseStatisticsAreaDTO"> SELECT <if test='terms.areaType == null or terms.areaType =="1"'> - IF(c.city is null,a.que_city,c.city) as areaCode,IF(c.city_name is null,a.que_city_name,c.city_name) as areaName, + IF(c.city is null,a.que_city,c.city) as areaCode,IF(c.city_name is null,a.que_city_name,c.city_name) as + areaName, </if> <if test='terms.areaType != null and terms.areaType =="2"'> - IF(c.area is null,a.que_area,c.area) as areaCode,IF(c.area_name is null,a.que_area_name,c.area_name) as areaName, + IF(c.area is null,a.que_area,c.area) as areaCode,IF(c.area_name is null,a.que_area_name,c.area_name) as + areaName, </if> <if test='terms.areaType != null and terms.areaType =="3"'> - IF(c.road is null,a.que_road,c.road) as areaCode,IF(c.road_name is null,a.que_road_name,c.road_name) as areaName, + IF(c.road is null,a.que_road,c.road) as areaCode,IF(c.road_name is null,a.que_road_name,c.road_name) as + areaName, </if> <if test='terms.areaType != null and terms.areaType =="4"'> - IF(c.village is null,a.que_village,c.village) as areaCode,IF(c.village_name is null,a.que_village_name,c.village_name) as areaName, + IF(c.village is null,a.que_village,c.village) as areaCode,IF(c.village_name is + null,a.que_village_name,c.village_name) as areaName, </if> c.unit_grade as unitGrade, count(1) as caseNum, @@ -1121,7 +1147,7 @@ sum(case when a.case_level = 2 then 1 else 0 end) as twoLevelNum, sum(case when a.case_level = 3 then 1 else 0 end) as threeLevelNum, sum(case when a.info_process = 2 then 1 - when a.info_process = 1 then 1 else 0 end) as processNum, + when a.info_process = 1 then 1 else 0 end) as processNum, sum(case when a.info_process = 3 and b.medi_result = '22_00025-1' then 1 else 0 end) as finishNum, sum(case when a.info_process = 4 then 1 else 0 end) as rejectNum, sum(case when a.info_process = 3 and b.medi_result = '22_00025-2' then 1 else 0 end) as failNum, @@ -1278,14 +1304,20 @@ <if test='terms.areaType != null and terms.areaType =="4"'> ifnull(t2.village_name, '本级') as areaName,ifnull(t2.village, '1') as areaCode, </if> - count(distinct case when (t1.node_id = 'DSRPJ' or t1.node_id = 'JAGD' or t1.node_id = 'ZJ_DFP' or t1.node_id = 'QJ_DFP' - or t1.node_id = 'SJ_DFP' or t1.node_id = 'DFP' or t1.node_id = 'ZJ_DSL' or t1.node_id = 'QJ_DSL' or t1.node_id = 'SJ_DSL' - or t1.node_id = 'DSL' or t1.node_id = 'QJ_SBSH' or t1.node_id = 'SJ_SBSH' or t1.node_id = 'HTSH' or t1.node_id = 'ZJ_HTSH' + count(distinct case when (t1.node_id = 'DSRPJ' or t1.node_id = 'JAGD' or t1.node_id = 'ZJ_DFP' or t1.node_id = + 'QJ_DFP' + or t1.node_id = 'SJ_DFP' or t1.node_id = 'DFP' or t1.node_id = 'ZJ_DSL' or t1.node_id = 'QJ_DSL' or t1.node_id = + 'SJ_DSL' + or t1.node_id = 'DSL' or t1.node_id = 'QJ_SBSH' or t1.node_id = 'SJ_SBSH' or t1.node_id = 'HTSH' or t1.node_id = + 'ZJ_HTSH' or t1.node_id = 'QJ_HTSH' or t1.node_id = 'SJ_HTSH')then t1.id end) as flowAllNum, - count(distinct case when (t1.node_id = 'ZJ_DFP' or t1.node_id = 'QJ_DFP' or t1.node_id = 'SJ_DFP' or t1.node_id = 'DFP') then t1.id end) as flowJbNum, - count(distinct case when (t1.node_id = 'ZJ_DSL' or t1.node_id = 'QJ_DSL' or t1.node_id = 'SJ_DSL' or t1.node_id = 'DSL') then t1.id end) as flowSlNum, + count(distinct case when (t1.node_id = 'ZJ_DFP' or t1.node_id = 'QJ_DFP' or t1.node_id = 'SJ_DFP' or t1.node_id + = 'DFP') then t1.id end) as flowJbNum, + count(distinct case when (t1.node_id = 'ZJ_DSL' or t1.node_id = 'QJ_DSL' or t1.node_id = 'SJ_DSL' or t1.node_id + = 'DSL') then t1.id end) as flowSlNum, count(distinct case when (t1.node_id = 'QJ_SBSH' or t1.node_id = 'SJ_SBSH') then t1.id end) as flowSbNum, - count(distinct case when (t1.node_id = 'HTSH' or t1.node_id = 'ZJ_HTSH' or t1.node_id = 'QJ_HTSH' or t1.node_id = 'SJ_HTSH') then t1.id end) as flowHtNum, + count(distinct case when (t1.node_id = 'HTSH' or t1.node_id = 'ZJ_HTSH' or t1.node_id = 'QJ_HTSH' or t1.node_id + = 'SJ_HTSH') then t1.id end) as flowHtNum, count(distinct case when (t1.node_id = 'DSRPJ' or t1.node_id = 'JAGD') then t1.id end) as flowBjNum from (SELECT case_id, node_id, handle_time, create_time, cande_unit_id, id, status @@ -1296,9 +1328,11 @@ where status = 2 or (status = 1 and (node_id = 'DSRPJ' or node_id = 'JAGD')) ) s WHERE rn = 1 AND ((DATE_FORMAT(s.handle_time,'%Y-%m-%d') <![CDATA[ >= ]]> #{terms.startDate} - and DATE_FORMAT(s.handle_time,'%Y-%m-%d') <![CDATA[ <= ]]> #{terms.endDate}) OR DATE_FORMAT(s.create_time,'%Y-%m-%d') <![CDATA[ >= ]]> #{terms.startDate} + and DATE_FORMAT(s.handle_time,'%Y-%m-%d') <![CDATA[ <= ]]> #{terms.endDate}) OR + DATE_FORMAT(s.create_time,'%Y-%m-%d') <![CDATA[ >= ]]> #{terms.startDate} and DATE_FORMAT(s.create_time,'%Y-%m-%d') <![CDATA[ <= ]]> #{terms.endDate}) group by s.case_id) t1 - left join dyh_ct_unit t2 on (t1.cande_unit_id = t2.id) or (t1.cande_unit_id is null and t2.id = (select mediate_unit_id from dyh_case_info_unfold where id = t1.case_id)) + left join dyh_ct_unit t2 on (t1.cande_unit_id = t2.id) or (t1.cande_unit_id is null and t2.id = (select + mediate_unit_id from dyh_case_info_unfold where id = t1.case_id)) <where> <if test="terms.queCity != null and terms.queCity !=''"> and t2.city = #{terms.queCity} @@ -1362,7 +1396,8 @@ </if> count(distinct case when t2.info_process = 1 or t2.info_process = 2 then t2.id end) as sourceHjzNum, count(distinct case when t2.info_process = 3 and t3.medi_result = '22_00025-1' then t2.id end) as sourceHjcgNum, - count(distinct case when t2.info_process = 3 and t3.medi_result = '22_00025-2' then t2.id end) as sourceHjbcgNum, + count(distinct case when t2.info_process = 3 and t3.medi_result = '22_00025-2' then t2.id end) as + sourceHjbcgNum, count(distinct case when t2.info_process = 4 then t2.id end) as sourceByslNum from (SELECT case_id, node_id, create_time, cande_unit_id, id, status,handle_result FROM ( @@ -1370,7 +1405,8 @@ ROW_NUMBER() OVER (PARTITION BY case_id ORDER BY node_type desc, create_time DESC) AS rn FROM dyh_case_task where node_id != 'DSRPJ' and delete_status = 0 ) s - WHERE rn = 1 group by s.case_id)t1 left join dyh_case_info t2 on t2.id = t1.case_id left join dyh_case_info_unfold t3 on t2.id = t3.id + WHERE rn = 1 group by s.case_id)t1 left join dyh_case_info t2 on t2.id = t1.case_id left join + dyh_case_info_unfold t3 on t2.id = t3.id left join dyh_ct_unit t4 on t3.belong_unit_id = t4.id <where> and t2.delete_status = 0 and t4.delete_status = 0 @@ -1453,21 +1489,24 @@ </select> <update id="deleteCaseById"> - update dyh_case_info set delete_status = 1,update_time = #{updateTime} where id = #{id} + update dyh_case_info + set delete_status = 1, + update_time = #{updateTime} + where id = #{id} </update> <!-- 统计指定canal值下按canal_second分组的案件数量 --> <select id="countByCanalSecond" resultType="cn.huge.module.cases.domain.dto.CaseStatisticsTypeDTO"> SELECT - a.canal_second as caseType, - COUNT(*) as caseNum + a.canal_second as caseType, + COUNT(*) as caseNum FROM dyh_case_info a inner JOIN dyh_case_info_unfold b on a.id = b.id LEFT JOIN dyh_ct_unit c ON b.belong_unit_id = c.id <include refid="where-part-all"/> GROUP BY - a.canal_second + a.canal_second </select> </mapper> \ No newline at end of file diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/CaseInfoDTO.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/CaseInfoDTO.java index 32126a2..b031dd8 100644 --- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/CaseInfoDTO.java +++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/CaseInfoDTO.java @@ -61,5 +61,7 @@ */ private String tcqk; + private String cityCode; + } diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java index f42aacb..dc9ff88 100644 --- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java +++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java @@ -118,6 +118,8 @@ private CaseWindupApplyService caseWindupApplyService; @Autowired private CasePersonService casePersonService; + @Autowired + private ThGridCitizenEventService thGridCitizenEventService; /** @@ -606,6 +608,10 @@ caseInfoDTO.setIsRisk(caseInfoUnfold.getIsRisk()); caseInfoDTO.setTcqk(caseInfoUnfold.getTcqk()); } + ThGridCitizenEvent thGridCitizenEvent = thGridCitizenEventService.getByCaseId(caseId); + if(thGridCitizenEvent!=null){ + caseInfoDTO.setCityCode(thGridCitizenEvent.getCitizenEventCode()); + } } else { CasebookInfo casebookInfo = casebookInfoService.getById(caseId); if (ObjectUtils.isNotEmpty(casebookInfo)) { diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/ThGridCitizenEventService.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/ThGridCitizenEventService.java index 2de8408..35a4b3b 100644 --- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/ThGridCitizenEventService.java +++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/ThGridCitizenEventService.java @@ -1,6 +1,8 @@ package cn.huge.module.cases.service; import cn.huge.module.cases.domain.dto.CaseAndEventInfoDTO; +import cn.huge.module.cases.domain.po.ThGridCitizenEvent; +import org.apache.ibatis.annotations.Param; /** * @title: 市民工单事件表服务接口 @@ -18,4 +20,6 @@ * @return 整合后的案件和工单信息 */ CaseAndEventInfoDTO integrateCaseAndEventInfo(String caseId); + + ThGridCitizenEvent getByCaseId(String caseId); } \ No newline at end of file diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/impl/ThGridCitizenEventServiceImpl.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/impl/ThGridCitizenEventServiceImpl.java index e459de2..a47f4c4 100644 --- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/impl/ThGridCitizenEventServiceImpl.java +++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/impl/ThGridCitizenEventServiceImpl.java @@ -63,4 +63,9 @@ return dto; } + + @Override + public ThGridCitizenEvent getByCaseId(String caseId) { + return thGridCitizenEventMapper.getByCaseId(caseId); + } } \ No newline at end of file diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/ai/AiChatController.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/ai/AiChatController.java new file mode 100644 index 0000000..6420519 --- /dev/null +++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/ai/AiChatController.java @@ -0,0 +1,103 @@ +package cn.huge.module.ai; + +import cn.huge.base.common.utils.HttpClientUtils; +import cn.huge.base.common.utils.ReturnFailUtils; +import cn.huge.base.common.utils.ReturnSucUtils; +import cn.huge.module.ai.domain.AiBodyDto; +import cn.huge.module.ai.domain.AiRequestVo; +import cn.huge.module.sy.domain.po.SyTimeLimit; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.net.http.HttpClient; +import java.util.HashMap; +import java.util.Map; + +@RestController +@RequestMapping("/api/ai/chat") +public class AiChatController { + + private String url = "http://10.202.1.102:9002/"; + + @PostMapping("/risk") + public String risk(@RequestBody AiRequestVo aiRequestVo) { + String postUrl = url + "v1/workflows/run"; + initHead("Bearer app-8ylvZOHf2fOgTGfe28MYtHDD"); + String s = ""; + try { + s = HttpClientUtils.httpPostRaw(postUrl, JSON.toJSONString(aiRequestVo), initHead("Bearer app-8ylvZOHf2fOgTGfe28MYtHDD"), "utf-8"); + } catch (Exception e) { + throw new RuntimeException(e); + } + JSONObject object = JSONObject.parseObject(s); + if (object != null) { + JSONObject data = object.getJSONObject("data"); + if (data != null) { + JSONObject outputs = data.getJSONObject("outputs"); + if (outputs != null) { + JSONArray result = outputs.getJSONArray("result"); + if (result != null && result.size() > 0) { + return result.getJSONObject(0).getString("is_risk_ai"); + } + } + } + } + return "0"; + } + + @PostMapping("/chat") + public AiBodyDto chat(@RequestBody AiRequestVo aiRequestVo) { + String postUrl = url + "v1/chat-messages"; + String s = ""; + AiBodyDto aiBodyDto = new AiBodyDto(); + try { + s = HttpClientUtils.httpPostRaw(postUrl, JSON.toJSONString(aiRequestVo), initHead("Bearer app-8naZjGyj8a129EuUP2Jb6n7T"), "utf-8"); + } catch (Exception e) { + throw new RuntimeException(e); + } + JSONObject object = JSONObject.parseObject(s); + if (object != null) { + String conversation_id = object.getString("conversation_id"); + String answer = object.getString("answer"); + aiBodyDto.setAnswer(answer); + aiBodyDto.setConversationId(conversation_id); + } + return aiBodyDto; + } + + @PostMapping("/strategy") + public AiBodyDto strategy(@RequestBody AiRequestVo aiRequestVo) { + String postUrl = url + "v1/workflows/run"; + String s = ""; + AiBodyDto aiBodyDto = new AiBodyDto(); + try { + s = HttpClientUtils.httpPostRaw(postUrl, JSON.toJSONString(aiRequestVo), initHead("Bearer app-WMriHFsAozx0FECkopW2Z6X1"), "utf-8"); + } catch (Exception e) { + throw new RuntimeException(e); + } + JSONObject object = JSONObject.parseObject(s); + if (object != null) { + JSONObject data = object.getJSONObject("data"); + if (data != null) { + JSONObject outputs = data.getJSONObject("outputs"); + if (outputs != null) { + String text = outputs.getString("text"); + aiBodyDto.setAnswer(text); + } + } + } + return aiBodyDto; + } + + private Map<String, String> initHead(String token) { + Map<String, String> head = new HashMap<>(); + head.put("Content-Type", "application/json"); + head.put("Authorization", token); + return head; + } +} diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/ai/domain/AiBodyDto.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/ai/domain/AiBodyDto.java new file mode 100644 index 0000000..abeaad3 --- /dev/null +++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/ai/domain/AiBodyDto.java @@ -0,0 +1,10 @@ +package cn.huge.module.ai.domain; + +import lombok.Data; + +@Data +public class AiBodyDto { + private String response_mode; + private String conversationId; + private String answer; +} diff --git a/dyh-service/dyh-sys/src/main/java/cn/huge/module/ai/domain/AiRequestVo.java b/dyh-service/dyh-sys/src/main/java/cn/huge/module/ai/domain/AiRequestVo.java new file mode 100644 index 0000000..eab8549 --- /dev/null +++ b/dyh-service/dyh-sys/src/main/java/cn/huge/module/ai/domain/AiRequestVo.java @@ -0,0 +1,17 @@ +package cn.huge.module.ai.domain; + +import lombok.Data; + +@Data +public class AiRequestVo { + private Inputs inputs; + private String response_mode; + private String user; + private String query; + private String conversation_id; + @Data + public static class Inputs{ + private String caseId; + private String caseText; + } +} -- Gitblit v1.8.0