From 69fdc83bc60955eb528734b91a193452622abc8a Mon Sep 17 00:00:00 2001 From: zhouxiantao <1026371446@qq.com> Date: Tue, 10 Sep 2024 16:55:23 +0800 Subject: [PATCH] 小程序,AI助手加入缓存机制 --- dyh-service/dyh-disp/src/main/java/cn/huge/module/casedisp/dao/mapper/xml/DispNormCauseMapper.xml | 1 dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseTaskService.java | 2 + dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/CaseInfoWeChatDTO.java | 20 ++++++++++ dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/wechat/CaseInfoWechatController.java | 3 + dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/AiController.java | 17 ++++++++ dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoMapper.xml | 4 +- dyh-service/dyh-base/src/main/java/cn/huge/base/common/utils/GuavaCacheUtils.java | 17 ++++++++ dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java | 15 ++++++- 8 files changed, 73 insertions(+), 6 deletions(-) diff --git a/dyh-service/dyh-base/src/main/java/cn/huge/base/common/utils/GuavaCacheUtils.java b/dyh-service/dyh-base/src/main/java/cn/huge/base/common/utils/GuavaCacheUtils.java index e9245c0..a475f88 100644 --- a/dyh-service/dyh-base/src/main/java/cn/huge/base/common/utils/GuavaCacheUtils.java +++ b/dyh-service/dyh-base/src/main/java/cn/huge/base/common/utils/GuavaCacheUtils.java @@ -13,13 +13,20 @@ */ public class GuavaCacheUtils { private static Cache<String, Object> cache = CacheBuilder.newBuilder() - //5分钟后过期 + //5秒后过期 .expireAfterWrite(5, TimeUnit.SECONDS) // .expireAfterWrite(10, TimeUnit.SECONDS) //最大10个缓存 .maximumSize(10) .build(); + private static Cache<String, Object> cacheAi = CacheBuilder.newBuilder() + //5秒后过期 + .expireAfterWrite(5, TimeUnit.MINUTES) +// .expireAfterWrite(10, TimeUnit.SECONDS) + //最大10个缓存 + .maximumSize(500) + .build(); public static Object getCache(String k) { return cache.getIfPresent(k); @@ -29,6 +36,14 @@ cache.put(k, value); } + public static Object getCacheAi(String k) { + return cacheAi.getIfPresent(k); + } + + public static void putCacheAi(String k, Object value) { + cacheAi.put(k, value); + } + public static void main(String[] args) throws InterruptedException { putCache("15008985673","123456"); while (true){ diff --git a/dyh-service/dyh-disp/src/main/java/cn/huge/module/casedisp/dao/mapper/xml/DispNormCauseMapper.xml b/dyh-service/dyh-disp/src/main/java/cn/huge/module/casedisp/dao/mapper/xml/DispNormCauseMapper.xml index dfdad1d..94ab6ce 100644 --- a/dyh-service/dyh-disp/src/main/java/cn/huge/module/casedisp/dao/mapper/xml/DispNormCauseMapper.xml +++ b/dyh-service/dyh-disp/src/main/java/cn/huge/module/casedisp/dao/mapper/xml/DispNormCauseMapper.xml @@ -168,6 +168,7 @@ FROM dyh_ct_unit where unit_type = 1 <include refid="getZzzxUnitByTerms-where-part"/> + limit 1 </select> <!-- 根据条件获取对应综治中心组织-条件 --> <sql id="getZzzxUnitByTerms-where-part"> 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 index c15986c..fd515eb 100644 --- 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 @@ -1,6 +1,8 @@ package cn.huge.module.ai.controller; +import cn.huge.base.common.utils.GuavaCacheUtils; import cn.huge.base.common.utils.HttpClientUtils; +import cn.huge.base.common.utils.ObjectUtils; 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; @@ -32,6 +34,10 @@ @PostMapping("/get-case") public Object getCase(@RequestBody AiRequestVo aiRequestVo) { + Object cacheAi = GuavaCacheUtils.getCacheAi("get-case"+aiRequestVo.getCaseId()); + if(ObjectUtils.isNotEmpty(cacheAi)){ + return ReturnSucUtils.getRepInfo("请求成功", cacheAi); + } List<CaseInfoDto> caseInfoDtoList = new ArrayList<>(); Map<String, String> params = new HashMap<>(); params.put("caseDes", aiRequestVo.getCaseDes());//案件描述 @@ -71,12 +77,17 @@ } } } + GuavaCacheUtils.putCacheAi("get-case"+aiRequestVo.getCaseId(), caseInfoDtoList); return ReturnSucUtils.getRepInfo("请求成功", caseInfoDtoList); } @PostMapping("/get-law") public Object getLaw(@RequestBody AiRequestVo aiRequestVo) { + Object cacheAi = GuavaCacheUtils.getCacheAi("get-law"+aiRequestVo.getCaseId()); + if(ObjectUtils.isNotEmpty(cacheAi)){ + return ReturnSucUtils.getRepInfo("请求成功", cacheAi); + } List<LawInfoDto> lawInfoDtos = new ArrayList<>(); Map<String, String> params = new HashMap<>(); params.put("caseDes", aiRequestVo.getCaseDes());//案件描述 @@ -97,6 +108,7 @@ lawInfoDtos.add(lawInfoDto); } } + GuavaCacheUtils.putCacheAi("get-law"+aiRequestVo.getCaseId(), lawInfoDtos); return ReturnSucUtils.getRepInfo("请求成功", lawInfoDtos); } @@ -134,6 +146,10 @@ @PostMapping("/get-clain-rise-case") public Object getClaimRiskByCase(@RequestBody AiRequestVo aiRequestVo) { + Object cacheAi = GuavaCacheUtils.getCacheAi("get-clain-rise-case"+aiRequestVo.getCaseId()); + if(ObjectUtils.isNotEmpty(cacheAi)){ + return ReturnSucUtils.getRepInfo("请求成功", cacheAi); + } CaseRiskDto caseRiskDto = new CaseRiskDto(); Map<String, String> params = new HashMap<>(); params.put("caseDes", aiRequestVo.getCaseDes());//案件描述 @@ -147,6 +163,7 @@ caseRiskDto.setIsClaimRisk(data.getIntValue("is_claim_risk")); caseRiskDto.setAnalysisProcess(data.getString("analysis_process")); } + GuavaCacheUtils.putCacheAi("get-clain-rise-case"+aiRequestVo.getCaseId(), caseRiskDto); return ReturnSucUtils.getRepInfo("请求成功", caseRiskDto); } diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/wechat/CaseInfoWechatController.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/wechat/CaseInfoWechatController.java index e05e975..5d50a22 100644 --- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/wechat/CaseInfoWechatController.java +++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/wechat/CaseInfoWechatController.java @@ -96,8 +96,9 @@ /** * 小程序端-纠纷登记-保存纠纷信息-正常案件 - * @url {ctx}/api/v1/caseInfo/caseRegister + * @url {ctx}/api/wechat/caseInfo/caseRegister * @param registerSaveDTO 实体对象 + * @CurrentUser String userId, */ @PostMapping("/caseRegister") public Object caseRegister(@CurrentUser String userId, @RequestBody RegisterSaveDTO registerSaveDTO) { 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 7862efc..7b0e551 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 @@ -596,7 +596,7 @@ select COUNT(1) from - dyh_case_info a LEFT JOIN dyh_case_info_unfold b on a.id = b.case_id + dyh_case_info a LEFT JOIN dyh_case_info_unfold b on a.id = b.id <include refid="where-part-all"/> </select> <!-- 根据条件分页查询 --> @@ -604,7 +604,7 @@ SELECT <include refid="column-part-all"/> FROM - dyh_case_info a LEFT JOIN dyh_case_info_unfold b on a.id = b.case_id + dyh_case_info a LEFT JOIN dyh_case_info_unfold b on a.id = b.id <include refid="where-part-all"/> <if test="page.sort != null"> <foreach collection="page.sort" item="s" index="index" separator="," open="order by "> diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/CaseInfoWeChatDTO.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/CaseInfoWeChatDTO.java index cbfc20e..8aa51e0 100644 --- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/CaseInfoWeChatDTO.java +++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/CaseInfoWeChatDTO.java @@ -60,6 +60,26 @@ private String caseClaim; /** + * 实际调解部门编号(承办部门) + */ + private String mediateDeptId; + + /** + * 实际调解部门名称(承办部门) + */ + private String mediateDeptName; + + /** + * 调解结果 + */ + private String mediResult; + + /** + * 调解结果名称 + */ + private String mediResultName; + + /** * 申请人集合 * */ private List<CasePersonWechatDTO> plaintiffList; 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 d3a50d2..f775ab5 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 @@ -553,8 +553,6 @@ caseInfo.setUpdateTime(nowDate); caseInfo.setVisitTime(nowDate); caseInfo.setDeleteStatus(BaseConsts.DELETE_STATUS_0); - caseInfo.setProcess(1); - caseInfo.setProcessName("来访登记"); //todo case_ref生成、case_title生成 caseInfoUnfold.setId(caseInfo.getId()); @@ -567,6 +565,10 @@ caseInfo.setPagents(pagents.toString()); caseInfo.setDefendants(defendants.toString()); caseInfo.setDagents(dagents.toString()); + caseInfo.setInfoProcess(1); + caseInfo.setInfoProcessName("待受理"); + caseInfo.setProcess(1); + caseInfo.setProcessName("来访登记"); this.saveOrUpdate(caseInfo); // 启动工作流-自动调度流程 @@ -702,6 +704,15 @@ BeanUtils.copyProperties(caseInfo, caseInfoWeChatDTO); caseInfoWeChatDTO.setProcessStatus(caseInfo.getInfoProcess()); caseInfoWeChatDTO.setProcessStatusName(caseInfo.getInfoProcessName()); + //扩展信息 + CaseInfoUnfold caseInfoUnfold = caseInfoUnfoldService.getById(caseInfo.getId()); + if(ObjectUtils.isNotEmpty(caseInfoUnfold)){ + caseInfoWeChatDTO.setMediResult(caseInfoUnfold.getMediResult()); + caseInfoWeChatDTO.setMediResultName(caseInfoUnfold.getMediResultName()); + caseInfoWeChatDTO.setMediateDeptId(caseInfoUnfold.getMediateDeptId()); + caseInfoWeChatDTO.setMediateDeptName(caseInfoUnfold.getMediateDeptName()); + } + QueryWrapper<CasePerson> personWrapper1 = new QueryWrapper<>(); personWrapper1.eq("case_id", caseInfo.getId()); List<CasePerson> casePersonList1 = personService.list(personWrapper1); diff --git a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseTaskService.java b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseTaskService.java index 77d68a3..4937f75 100644 --- a/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseTaskService.java +++ b/dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseTaskService.java @@ -36,6 +36,7 @@ import cn.huge.module.flow.service.FlowInfoService; import cn.huge.module.mediate.constant.*; import cn.huge.module.sys.constant.SyTimeEnum; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.google.common.collect.Maps; @@ -675,6 +676,7 @@ BeanUtils.copyProperties(caseInfo, dispCaseBaseDTO); dispCaseBaseDTO.setCaseId(caseInfo.getId()); CaseDispBaseDTO caseDispBaseDTO = dispClient.sysDisp(dispCaseBaseDTO); + log.info(JSON.toJSONString(caseDispBaseDTO)); // 目前平台只能调度给组织 if (DispBaseConstsEnum.TARGET_TYPE_1.getIndex().equals(caseDispBaseDTO.getTargetType())) { // 目前平台只做镇街、村居级别的调度, -- Gitblit v1.8.0