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