forked from gzzfw/backEnd/gz-dyh

zhouxiantao
2024-09-10 69fdc83bc60955eb528734b91a193452622abc8a
小程序,AI助手加入缓存机制
8 files modified
79 ■■■■■ changed files
dyh-service/dyh-base/src/main/java/cn/huge/base/common/utils/GuavaCacheUtils.java 17 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-disp/src/main/java/cn/huge/module/casedisp/dao/mapper/xml/DispNormCauseMapper.xml 1 ●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/ai/controller/AiController.java 17 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/controller/wechat/CaseInfoWechatController.java 3 ●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/dao/mapper/xml/CaseInfoMapper.xml 4 ●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/domain/dto/CaseInfoWeChatDTO.java 20 ●●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseInfoService.java 15 ●●●● patch | view | raw | blame | history
dyh-service/dyh-mediate/src/main/java/cn/huge/module/cases/service/CaseTaskService.java 2 ●●●●● patch | view | raw | blame | history
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){
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">
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);
    }
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) {
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 ">
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;
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);
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())) {
                // 目前平台只做镇街、村居级别的调度,