Przeglądaj źródła

批量报价代码优化(切面类中费用因子匹配循环中远程调用字典类)

lixiaolong 1 miesiąc temu
rodzic
commit
25b911fc29

+ 4 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/aspect/QuoteVerificationAspect.java

@@ -252,13 +252,16 @@ public class QuoteVerificationAspect {
         List<RuleAttrMappingVo> ruleAttrMappingVoList = RuleAttrMappingVo.getRuleAttrMappingVoList(insOrdersOther,insOrdersCarInfo,
                 riskList, insOrdersCarUserInfos, kindList, insOrdersCosts, insOrdersAccidentalDriving, isNewCar);
 
+        // 字典数据在一次报价内是只读不变的,提到循环外避免N+1远程调用
+        // 修复批量报价时该方法被 organization 服务打爆的问题
+        List<PtlAgreementUndwrtRulesDictLabal> undwrtRulesDictList = ptlNewAgreementClient.getUndwrtRulesDictList();
+
         for (int i = 0; i < agreementProductCosts.size(); i++) {
             //判断是否匹配
             log.info("费用因子匹配开始:" + agreementProductCosts.get(i).getId());
 //
             log.info("车牌号:" + insOrdersCarInfo.getLicenseNo());
             logs.append("费用id:" + agreementProductCosts.get(i).getId() + "\n");
-            List<PtlAgreementUndwrtRulesDictLabal> undwrtRulesDictList = ptlNewAgreementClient.getUndwrtRulesDictList();
 
             if (FactorMatch.judgements(agreementProductCosts.get(i).getPtlAgreementCostRuleList(),ruleAttrMappingVoList,undwrtRulesAttrList,logs, undwrtRulesDictList)) {
                 log.info("匹配到的费用id:{}",agreementProductCosts.get(i).getId());