Explorar o código

Merge branch 'master' of http://39.101.143.165:8090/785834757/jzg

lipf hai 3 meses
pai
achega
eb19c3b560

+ 30 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/utils/TimeProcessing.java

@@ -81,6 +81,36 @@ public final class TimeProcessing {
     }
 
 
+    /**
+     * 获取日期 yyyy-MM-dd
+     *
+     * @param dateTime 格式 yyyy-MM-dd HH:mm:ss
+     * @return yyyy-MM-dd
+     */
+    public static String getDate(String dateTime) {
+        return dateTime.substring(0, 10);
+    }
+
+
+    /**
+     * 获取小时
+     *
+     * @param dateTime 格式 yyyy-MM-dd HH:mm:ss
+     * @return HH
+     */
+    public static Integer getHour(String dateTime) {
+        return Integer.parseInt(dateTime.substring(11, 13));
+    }
+    /**
+     * 获取分钟
+     *
+     * @param dateTime 格式 yyyy-MM-dd HH:mm:ss
+     * @return mm
+     */
+    public static Integer getMinute(String dateTime) {
+        return Integer.parseInt(dateTime.substring(14, 16));
+    }
+
 
     /**
      * 一年以后得时间

+ 1 - 6
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quotation/guoren/crawler/build/GuoRenCrawlerQuoteResultsVoBuild.java

@@ -59,18 +59,13 @@ public final class GuoRenCrawlerQuoteResultsVoBuild {
         quoteResultsVo.getCosts().setVvTax(vvTax);
         quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.WAIT_AUDIT);
 
-
-        quoteVo.getCiRiskInfoVo().setStartDate(calculationPremium.getCi().getPrptitemkindList().get(0).getStartDate() + " 00:00:00");
-        quoteVo.getCiRiskInfoVo().setEndDate(calculationPremium.getCi().getPrptitemkindList().get(0).getEndDate() + " 00:00:00");
         quoteResultsVo.setCiRiskInfoVo(quoteVo.getCiRiskInfoVo());
+        quoteResultsVo.setBiRiskInfoVo(quoteVo.getBiRiskInfoVo());
 
         if (calculationPremium.getBi().getPrptitemkindList() != null) {
             List<KindInfoVo> kindInfoVo = buildKindInfoVo(quoteVo.getKindInfoVo(), calculationPremium.getBi().getPrptitemkindList());
-            quoteVo.getBiRiskInfoVo().setStartDate(calculationPremium.getBi().getPrptitemkindList().get(0).getStartDate() + " 00:00:00");
-            quoteVo.getBiRiskInfoVo().setEndDate(calculationPremium.getBi().getPrptitemkindList().get(0).getEndDate() + " 00:00:00");
             quoteResultsVo.setKindInfoVo(kindInfoVo);
         }
-        quoteResultsVo.setBiRiskInfoVo(quoteVo.getBiRiskInfoVo());
 
 
         QuoteResultsVo.ScoreVo scoreVo = new QuoteResultsVo.ScoreVo();

+ 19 - 4
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quotation/guoren/crawler/service/impl/GuoRenCrawlerRequestImpl.java

@@ -132,20 +132,35 @@ public class GuoRenCrawlerRequestImpl implements GuoRenCrawlerRequest {
                 }
                 String startDate = TimeProcessing.dateTimeToDate(startTime);
                 String endDate = TimeProcessing.dateTimeToDate(endTime);
+
                 // 交强
+                quoteVo.getCiRiskInfoVo().setStartDate(startTime);
+                quoteVo.getCiRiskInfoVo().setEndDate(endTime);
                 crawlerCalculationPremiumRequest.getCi().getPrpTmain().setStartDate(startDate);
+                crawlerCalculationPremiumRequest.getCi().getPrpTmain().setStartHour(TimeProcessing.getHour(startTime));
+                crawlerCalculationPremiumRequest.getCi().getPrpTmain().setStartMinute(TimeProcessing.getMinute(startTime));
                 crawlerCalculationPremiumRequest.getCi().getPrpTmain().setEndDate(endDate);
+                crawlerCalculationPremiumRequest.getCi().getPrpTmain().setEndHour(TimeProcessing.getHour(endTime));
+                crawlerCalculationPremiumRequest.getCi().getPrpTmain().setEndMinute(TimeProcessing.getMinute(endTime));
                 crawlerCalculationPremiumRequest.getCi().getPrptitemkindList().forEach(item -> {
                     item.setStartDate(startDate);
                     item.setEndDate(endDate);
                 });
                 if (crawlerCalculationPremiumRequest.getBi().getPrpTmain() != null) {
                     // 商业
-                    crawlerCalculationPremiumRequest.getBi().getPrpTmain().setStartDate(startDate);
-                    crawlerCalculationPremiumRequest.getBi().getPrpTmain().setEndDate(endDate);
+                    String biStartDate = TimeProcessing.plusDays(startDate, 1);
+                    String biEndDate = TimeProcessing.plusDays(endDate, 1);
+                    quoteVo.getBiRiskInfoVo().setStartDate(biStartDate + " 00:00:00");
+                    quoteVo.getBiRiskInfoVo().setEndDate(biEndDate + " 00:00:00");
+                    crawlerCalculationPremiumRequest.getBi().getPrpTmain().setStartDate(biStartDate);
+                    crawlerCalculationPremiumRequest.getBi().getPrpTmain().setStartHour(0);
+                    crawlerCalculationPremiumRequest.getBi().getPrpTmain().setStartMinute(0);
+                    crawlerCalculationPremiumRequest.getBi().getPrpTmain().setEndDate(biEndDate);
+                    crawlerCalculationPremiumRequest.getBi().getPrpTmain().setEndHour(24);
+                    crawlerCalculationPremiumRequest.getBi().getPrpTmain().setEndMinute(0);
                     crawlerCalculationPremiumRequest.getBi().getPrptitemkindList().forEach(item -> {
-                        item.setStartDate(startDate);
-                        item.setEndDate(endDate);
+                        item.setStartDate(biStartDate);
+                        item.setEndDate(biEndDate);
                     });
                 }
                 calculationPremium = guoRenCrawlerRequestComponent.calculationPremium(crawlerCalculationPremiumRequest, headers);

+ 11 - 1
tenant/insurance/quotation-huanong/src/main/java/com/jzg/quotation/huanong/crawler/build/HuaNongCrawlerQuoteResultsVoBuild.java

@@ -66,8 +66,9 @@ public final class HuaNongCrawlerQuoteResultsVoBuild {
                 // 交强转续保标识(按RenewalEnum映射)
                 quoteResultsVo.getScoreVo().setJqRenewal(convertRenewalFlag(contractDTO.getContractMain().getRenewalFlag()));
             } else {
-                // 商业险
+                // 设置商业险各项金额
                 buildKindInfo(quoteVo.getKindInfoVo(), contractDTO.getCoverage());
+                quoteResultsVo.setKindInfoVo(quoteVo.getKindInfoVo());
                 buildRiskInfoVo(quoteVo.getBiRiskInfoVo(), contractDTO.getContractMain(), contractDTO.getPlatFormMessage(), false);
                 quoteResultsVo.getCosts().setBiPremium(String.valueOf(contractDTO.getContractMain().getTotalPremium()));
                 quoteResultsVo.setBiPolicyNumber(contractDTO1.getContractMain().getContractNo());
@@ -77,6 +78,15 @@ public final class HuaNongCrawlerQuoteResultsVoBuild {
                 quoteResultsVo.getScoreVo().setSyRenewal(convertRenewalFlag(contractDTO.getContractMain().getRenewalFlag()));
             }
         });
+        // 计算总保费 = 交强险 + 商业险 + 驾意险 + 车船税
+        QuoteResultsVo.CostsVo costs = quoteResultsVo.getCosts();
+        double sumPremium = 0.0;
+        if (costs.getCiPremium() != null) sumPremium += Double.parseDouble(costs.getCiPremium());
+        if (costs.getBiPremium() != null) sumPremium += Double.parseDouble(costs.getBiPremium());
+        if (costs.getNiPremium() != null) sumPremium += Double.parseDouble(costs.getNiPremium());
+        if (costs.getVvTax() != null) sumPremium += Double.parseDouble(costs.getVvTax());
+        costs.setSumPremium(String.valueOf(sumPremium));
+
         //设置评分
         quoteResultsVo.setScoreVo(buildScoreVo(quoteResultsVo.getScoreVo(),huaNongCrawlerQuotedPriceResponse));
         quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.WAIT_AUDIT);

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

@@ -244,18 +244,29 @@ public class QuoteVerificationAspect {
         PtlAgreementCostTypeVo jyCostType = getCostTypeByTypeName(costTypeList, "驾意险");
 
 
+
+
         // add by lipf, 2026年6月23日18:32:24 按照财务和田智沟通后的结果,当入口手续费比例大于入口比例的时候,强制设置入口手续费比例为入口比例。
-        BigDecimal jqInlet = BigDecimalUtil.divide(jqCostType.getInlet(), new BigDecimal(100));
-        if(BigDecimalUtil.subtract(jqEntranceFeeRatio,jqInlet).compareTo(BigDecimal.ZERO) >0){
-            jqEntranceFeeRatio = jqInlet;
+        if(Objects.nonNull(jqCostType)){
+            BigDecimal jqInlet = BigDecimalUtil.divide(jqCostType.getInlet(), new BigDecimal(100));
+            if (BigDecimalUtil.subtract(jqEntranceFeeRatio, jqInlet).compareTo(BigDecimal.ZERO) > 0) {
+                jqEntranceFeeRatio = jqInlet;
+            }
         }
-        BigDecimal syInlet = BigDecimalUtil.divide(syCostType.getInlet(), new BigDecimal(100));
-        if(BigDecimalUtil.subtract(syEntranceFeeRatio,syInlet).compareTo(BigDecimal.ZERO) >0){
-            syEntranceFeeRatio = syInlet;
+
+        if(Objects.nonNull(syCostType))
+        {
+            BigDecimal syInlet = BigDecimalUtil.divide(syCostType.getInlet(), new BigDecimal(100));
+            if (BigDecimalUtil.subtract(syEntranceFeeRatio, syInlet).compareTo(BigDecimal.ZERO) > 0) {
+                syEntranceFeeRatio = syInlet;
+            }
         }
-        BigDecimal jyInlet = BigDecimalUtil.divide(jqCostType.getInlet(), new BigDecimal(100));
-        if(BigDecimalUtil.subtract(jyEntranceFeeRatio,jyInlet).compareTo(BigDecimal.ZERO) >0){
-            jyEntranceFeeRatio = jyInlet;
+
+        if(Objects.nonNull(jyCostType)){
+            BigDecimal jyInlet = BigDecimalUtil.divide(jqCostType.getInlet(), new BigDecimal(100));
+            if (BigDecimalUtil.subtract(jyEntranceFeeRatio, jyInlet).compareTo(BigDecimal.ZERO) > 0) {
+                jyEntranceFeeRatio = jyInlet;
+            }
         }
 
         // 4. 计算跟单费比例(入口比例 - 手续费比例)

+ 1 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java

@@ -255,7 +255,7 @@ public class UnifyOrderManager {
         PtlAgreement ptlAgreement = byCompanyId.getData().stream().filter(x -> x.getId().equals(quoteVo.getOrder().getAgreementId())).findFirst().orElse(null);
         if (Objects.isNull(ptlAgreement)) {
             log.info("协议不存在。quoteVo.getOrder().getAgreementId()=[{}]", quoteVo.getOrder().getAgreementId());
-            throw new SystemException("协议不存在");
+            throw new SystemException("当前无调度协议配置,无法确认协议");
         }
         quoteVo.getOrder().setAgreementId(ptlAgreement.getId());
         quoteVo.getOrder().setApiType(ptlAgreement.getApiType());

+ 18 - 19
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/build/TkCrawlerQuoteResultsBuild.java

@@ -2,7 +2,9 @@ package com.jzg.quotation.taikang.crawler.build;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.nacos.common.utils.CollectionUtils;
 import com.jzg.commons.constants.dict.InsOrderStatusEnum;
+import com.jzg.commons.constants.quote.enums.quote.KindCode;
 import com.jzg.commons.entity.quote.vo.KindInfoVo;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.commons.entity.quote.vo.RiskInfoVo;
@@ -10,7 +12,6 @@ import com.jzg.commons.entity.quote.vo.TaxInfoVo;
 import com.jzg.commons.entity.quote.vo.aggregated.QuoteResultsVo;
 import com.jzg.commons.util.DateTimeUtils;
 import com.jzg.commons.util.StringUtils;
-import com.jzg.commons.util.idgen.IdGenerate;
 import com.jzg.quotation.commons.constant.enums.quote.RenewalEnum;
 import com.jzg.quotation.commons.utils.DateTimeUtil;
 import com.jzg.quotation.taikang.crawler.ConvertUtil;
@@ -28,6 +29,9 @@ import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * @description: 泰康爬虫报价返回结果构建器
@@ -104,24 +108,8 @@ public class TkCrawlerQuoteResultsBuild {
         }
 
         // 商业险险种信息
-        List<TKCiKindsVo> ciKindsVo = preciseInitResult.getCiKindsVo();
-        if (ciKindsVo != null && !ciKindsVo.isEmpty()) {
-            List<KindInfoVo> kindInfoVos = new ArrayList<>();
-            for (TKCiKindsVo tKCiKindsVo : ciKindsVo) {
-                String kindCode = null; // 险种编码
-                String kindName = null; // 险种名称
-                String platformKindCode = tKCiKindsVo.getKindCode(); // 平台险种编码
-                String platformKindName = tKCiKindsVo.getKindCName(); // 平台险种名称
-                String amount = tKCiKindsVo.getQuoteAmount().toString(); // 保额
-                String unitAmount = tKCiKindsVo.getUnitAmount().toString(); // 每座保额
-                Integer quantity = tKCiKindsVo.getQuantity(); // 座位数
-                String premium = tKCiKindsVo.getPremium().toString(); // 保费
-                String deductibleRate = null; // 附加绝对免赔率
-                String serviceTimes = null; // 服务次数
-                KindInfoVo kindInfoVo = new KindInfoVo(IdGenerate.nextId(), kindCode, kindName, platformKindCode, platformKindName, amount, unitAmount, quantity, premium, deductibleRate, serviceTimes);
-                kindInfoVos.add(kindInfoVo);
-            }
-            quoteResultsVo.setKindInfoVo(kindInfoVos);
+        if (CollectionUtils.isNotEmpty(preciseInitResult.getCiKindsVo())) {
+            quoteResultsVo.setKindInfoVo(buildKindInfoVo(commonQuoteVo.getKindInfoVo(), preciseInitResult.getCiKindsVo()));
         }
 
         // 交强保费 车船税 商业保费
@@ -186,4 +174,15 @@ public class TkCrawlerQuoteResultsBuild {
             return String.valueOf(RenewalEnum.Transfer.getCode());
         }
     }
+
+    private static List<KindInfoVo> buildKindInfoVo(List<KindInfoVo> kindInfoVo, List<TKCiKindsVo> ciKindsVo) {
+        Map<String, TKCiKindsVo> collect = ciKindsVo.stream().collect(Collectors.toMap(TKCiKindsVo::getKindCode, x -> x));
+        kindInfoVo.forEach(kind -> {
+            TKCiKindsVo itemKindListDTO = collect.get(kind.getKindCode());
+            if (Objects.nonNull(itemKindListDTO) && itemKindListDTO.getKindCode().equals(kind.getPlatformKindCode())) {
+                kind.setPremium(itemKindListDTO.getPremium() + "");
+            }
+        });
+        return kindInfoVo;
+    }
 }

+ 3 - 0
tenant/insurance/quotation-taishan/src/main/java/com/jzg/quotation/taishan/crawler/build/TaiShanCrawlerQuoteResultsVoBuild.java

@@ -180,6 +180,9 @@ public class TaiShanCrawlerQuoteResultsVoBuild {
             if (Objects.nonNull(coverageListDTO) && coverageListDTO.getKindCode().equals(kind.getKindCode())) {
                 kind.setAmount(String.valueOf(coverageListDTO.getAmount()));//设置保额
                 kind.setPremium(String.valueOf(coverageListDTO.getPremium()));//设置保费
+                // 补充商业险种详细信息
+                kind.setServiceTimes(coverageListDTO.getResvNumberRoad());//服务次数(道路救援等)
+                kind.setDeductibleRate(coverageListDTO.getDeductibleRatio());//免赔率
             }
         });
         return kindInfoVo;

+ 24 - 45
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/build/ZiJinCrawlerQuoteResultsVoBuild.java

@@ -5,8 +5,10 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.nacos.common.utils.CollectionUtils;
 import com.jzg.commons.constants.dict.InsOrderStatusEnum;
+import com.jzg.commons.constants.quote.enums.quote.KindCode;
 import com.jzg.commons.entity.po.InsFeeOrders;
 import com.jzg.commons.entity.quote.vo.KindInfoVo;
+import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.commons.entity.quote.vo.RiskInfoVo;
 import com.jzg.commons.entity.quote.vo.aggregated.QuoteResultsVo;
 import com.jzg.commons.util.DateTimeUtils;
@@ -20,6 +22,9 @@ import lombok.extern.slf4j.Slf4j;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 /**
  * @description: 紫金财险爬虫报价结果构建器
@@ -48,30 +53,22 @@ public class ZiJinCrawlerQuoteResultsVoBuild {
     /**
      * 处理报价结果
      *
-     * @param ordersNo
+     * @param quoteVo
      * @param ziJinCrawlerQuotationResponse
      * @param ziJinCrawlerSaveProposalResponse
      * @return QuoteResultsVo
      */
-    public static QuoteResultsVo buildQuoteResultsVo(String ordersNo, ZiJinCrawlerQuotationResponse ziJinCrawlerQuotationResponse, ZiJinCrawlerSaveProposalResponse ziJinCrawlerSaveProposalResponse) {
+    public static QuoteResultsVo buildQuoteResultsVo(QuoteVo quoteVo, ZiJinCrawlerQuotationResponse ziJinCrawlerQuotationResponse, ZiJinCrawlerSaveProposalResponse ziJinCrawlerSaveProposalResponse) {
         QuoteResultsVo quoteResultsVo = new QuoteResultsVo();
-        quoteResultsVo.setOrdersNo(ordersNo);
+        quoteResultsVo.setOrdersNo(quoteVo.getOrder().getOrdersNo());
 
-
-        // if (ResponseCode.R_0003.getCode().equals(ziJinCrawlerSaveProposalResponse.getRtnCode())) {
-        //     handleQuoteFailure(quoteResultsVo, ziJinCrawlerSaveProposalResponse.getRtnMsg(), "保存投保单失败");
-        //     return quoteResultsVo;
-        // }
-
-        if (ziJinCrawlerQuotationResponse.getItemKindList() != null) {
+        if (CollectionUtils.isNotEmpty(ziJinCrawlerQuotationResponse.getItemKindList())) {
             // 设置交强险投保时间信息
             quoteResultsVo.setCiRiskInfoVo(buildCiRiskInfoVo(ziJinCrawlerQuotationResponse));
             // 设置商业险投保时间信息
             quoteResultsVo.setBiRiskInfoVo(buildBiRiskInfoVo(ziJinCrawlerQuotationResponse));
-            // 设置驾意险投保时间信息
-            // quoteResultsVo.setJyRiskInfoVo(buildJyRiskInfoVo(ziJinCrawlerQuotationResponse));
-            // 设置险种明细列表
-            quoteResultsVo.setKindInfoVo(buildKindInfoVoList(ziJinCrawlerQuotationResponse));
+            // 设置商业险种的详细保费
+            quoteResultsVo.setKindInfoVo(buildKindInfoVoList(quoteVo.getKindInfoVo(), ziJinCrawlerQuotationResponse));
         }
 
         // 设置投保单号
@@ -90,7 +87,7 @@ public class ZiJinCrawlerQuoteResultsVoBuild {
         }
 
         // 交强保费 车船税 商业保费
-        buildPremium(quoteResultsVo, ziJinCrawlerQuotationResponse);
+        buildResultsPremium(quoteResultsVo, ziJinCrawlerQuotationResponse);
 
         // 设置警告消息(预核保消息)
         warnMessageList(ziJinCrawlerQuotationResponse, quoteResultsVo);
@@ -98,16 +95,6 @@ public class ZiJinCrawlerQuoteResultsVoBuild {
         // 设置评分、折扣、影响因子、转保标识
         quoteResultsVo.setScoreVo(ZiJinCrawlerQuoteResultsVoBuild.buildScoreVo(ziJinCrawlerQuotationResponse));
 
-        // 构建因子
-        // ZiJinCrawlerQuotationResponse.PriceInfoList priceInfo = ziJinCrawlerQuotationResponse.getPriceInfoList().get(0);
-        // ExpenseFactor expenseFactor = new ExpenseFactor(null, priceInfo.getEffectNameUPOne(), priceInfo.getEffectValueUPOne());
-        // ExpenseFactor expenseFactor2 = new ExpenseFactor(null, priceInfo.getEffectNameUPTwo(), priceInfo.getEffectValueUPTwo());
-        // ExpenseFactor expenseFactor3 = new ExpenseFactor(null, priceInfo.getEffectNameUPThree(), priceInfo.getEffectValueUPThree());
-        // ExpenseFactor expenseFactor4 = new ExpenseFactor(null, priceInfo.getEffectNameDownFour(), priceInfo.getEffectValueDownFour());
-        // ExpenseFactor expenseFactor5 = new ExpenseFactor(null, priceInfo.getEffectNameDownFive(), priceInfo.getEffectValueDownFive());
-        // ExpenseFactor expenseFactor6 = new ExpenseFactor(null, priceInfo.getEffectNameDownSix(), priceInfo.getEffectValueDownSix());
-        // quoteResultsVo.setExpenseFactors();
-
         // 设置报价状态:待核保
         quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.WAIT_AUDIT);
 
@@ -171,27 +158,19 @@ public class ZiJinCrawlerQuoteResultsVoBuild {
     /**
      * 处理险种明细列表
      *
+     * @param kindInfoVo
      * @param quotationResponse
      * @return List<KindInfoVo>
      */
-    public static List<KindInfoVo> buildKindInfoVoList(ZiJinCrawlerQuotationResponse quotationResponse) {
-        List<KindInfoVo> kindInfoVoList = new java.util.ArrayList<>();
-        if (quotationResponse.getItemKindList() == null) {
-            return kindInfoVoList;
-        }
-
-        for (ZiJinCrawlerQuotationResponse.ItemKindList item : quotationResponse.getItemKindList()) {
-            KindInfoVo kindInfoVo = new KindInfoVo();
-            kindInfoVo.setKindCode(item.getKindCode());
-            kindInfoVo.setKindName(item.getKindName());
-            kindInfoVo.setAmount(item.getAmount());
-            kindInfoVo.setUnitAmount(item.getUnitAmount());
-            kindInfoVo.setQuantity(item.getQuantity());
-            kindInfoVo.setPremium(item.getPremium());
-            kindInfoVoList.add(kindInfoVo);
-        }
-
-        return kindInfoVoList;
+    public static List<KindInfoVo> buildKindInfoVoList(List<KindInfoVo> kindInfoVo, ZiJinCrawlerQuotationResponse quotationResponse) {
+        Map<String, ZiJinCrawlerQuotationResponse.ItemKindList> collect = quotationResponse.getItemKindList().stream().collect(Collectors.toMap(ZiJinCrawlerQuotationResponse.ItemKindList::getKindCode, x -> x));
+        kindInfoVo.forEach(kind -> {
+            ZiJinCrawlerQuotationResponse.ItemKindList itemKindListDTO = collect.get(kind.getKindCode());
+            if (Objects.nonNull(itemKindListDTO) && itemKindListDTO.getKindCode().equals(kind.getPlatformKindCode())) {
+                kind.setPremium(itemKindListDTO.getPremium());
+            }
+        });
+        return kindInfoVo;
     }
 
     /**
@@ -200,7 +179,7 @@ public class ZiJinCrawlerQuoteResultsVoBuild {
      * @param quoteResultsVo
      * @param quotationResponse
      */
-    private static void buildPremium(QuoteResultsVo quoteResultsVo, ZiJinCrawlerQuotationResponse quotationResponse) {
+    private static void buildResultsPremium(QuoteResultsVo quoteResultsVo, ZiJinCrawlerQuotationResponse quotationResponse) {
         if (CollectionUtils.isEmpty(quotationResponse.getPlanList())) {
             return;
         }
@@ -447,7 +426,7 @@ public class ZiJinCrawlerQuoteResultsVoBuild {
         if (!StringUtils.hasText(renewalFlag)) {
             return null;
         }
-        if (renewalFlag.equals("0")) {
+        if ("0".equals(renewalFlag)) {
             return String.valueOf(RenewalEnum.Renewal.getCode());
         } else {
             return String.valueOf(RenewalEnum.Transfer.getCode());

+ 5 - 282
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/service/impl/ZiJinCrawlerRequestImpl.java

@@ -254,7 +254,7 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
                 log.info("ziJinCrawlerSaveProposalResponse参数的值:{}", JSON.toJSONString(ziJinCrawlerSaveProposalResponse));
 
                 ziJinCrawlerOrderService.save(quoteVo, ziJinCrawlerQuotationResponse, ziJinCrawlerSaveProposalResponse, ziJinCrawlerSaveQuoteInfoResponse.getOrderNo(), ziJinCrawlerQuotationRequest.getOrderId(), true);
-                return ZiJinCrawlerQuoteResultsVoBuild.buildQuoteResultsVo(quoteVo.getOrder().getOrdersNo(), ziJinCrawlerQuotationResponse, ziJinCrawlerSaveProposalResponse);
+                return ZiJinCrawlerQuoteResultsVoBuild.buildQuoteResultsVo(quoteVo, ziJinCrawlerQuotationResponse, ziJinCrawlerSaveProposalResponse);
             }
         } catch (Exception e) {
             e.printStackTrace();
@@ -1080,8 +1080,6 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
             ciItem.setKindCode(MotorVehicleInsuranceEnum.MVI_BZ.getCode());
             ciItem.setKindName(MotorVehicleInsuranceEnum.MVI_BZ.getName());
             ciItem.setRiskCode(RiskCodeEnum.TRAFFIC_CODE);
-            // ciItem.setBasePremium("950.0000");
-            // ciItem.setBenchMarkPremium("950.0000");
             itemKindList.add(ciItem);
         }
 
@@ -1104,219 +1102,6 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
         return itemKindList;
     }
 
-    /**
-     * 根据平台险种代码构建紫金险种对象
-     *
-     * @param zgKindCode  平台险种代码
-     * @param kindItem    平台险种信息
-     * @param seatCount   座位数
-     * @param actualValue 车辆实际价值
-     * @return ZiJinCrawlerQuotationRequest.ItemKindList
-     */
-    private ZiJinCrawlerQuotationRequest.ItemKindList buildZiJinKindItem(String zgKindCode, KindInfoVo kindItem,
-                                                                         int seatCount, Double actualValue) {
-        ZiJinCrawlerQuotationRequest.ItemKindList item = new ZiJinCrawlerQuotationRequest.ItemKindList();
-
-        switch (zgKindCode) {
-            case "A": // 机动车损失保险
-                item.setKindCode("A");
-                item.setKindName("机动车损失保险");
-                item.setRiskCode(RiskCodeEnum.BUSINESS_CODE);
-                item.setAmount(actualValue != null ? actualValue.longValue() : 0);
-                item.setValue("0");
-                break;
-
-            case "B": // 机动车第三者责任保险
-                item.setKindCode("B");
-                item.setKindName("机动车第三者责任保险");
-                item.setRiskCode(RiskCodeEnum.BUSINESS_CODE);
-                if (StringUtils.hasLength(kindItem.getAmount())) {
-                    item.setAmount(Long.parseLong(kindItem.getAmount()));
-                }
-                // item.setBasePremium("515.8200");
-                // item.setBenchMarkPremium("687.7600");
-                break;
-
-            case "D3": // 机动车车上人员责任保险(司机)
-                item.setKindCode("D3");
-                item.setKindName("机动车车上人员责任保险(司机)");
-                item.setRiskCode(RiskCodeEnum.BUSINESS_CODE);
-                if (StringUtils.hasLength(kindItem.getAmount())) {
-                    item.setAmount(Long.parseLong(kindItem.getAmount()));
-                    item.setUnitAmount(kindItem.getAmount());
-                }
-                item.setQuantity(1);
-                break;
-
-            case "D4": // 机动车车上人员责任保险(乘客)
-                item.setKindCode("D4");
-                item.setKindName("机动车车上人员责任保险(乘客)");
-                item.setRiskCode(RiskCodeEnum.BUSINESS_CODE);
-                if (StringUtils.hasLength(kindItem.getAmount())) {
-                    long perSeatAmount = Long.parseLong(kindItem.getAmount());
-                    int passengerCount = seatCount - 1;
-                    item.setAmount(perSeatAmount * passengerCount);
-                    item.setUnitAmount(kindItem.getAmount());
-                    item.setQuantity(passengerCount);
-                }
-                break;
-
-            case "L": // 附加车身划痕损失险
-                item.setKindCode("L");
-                item.setKindName("附加车身划痕损失险");
-                item.setRiskCode(RiskCodeEnum.BUSINESS_CODE);
-                item.setAmount(kindItem.getAmount());
-                break;
-
-            case "BD": // 附加法定节假日限额翻倍险
-                item.setKindCode("B2");
-                item.setKindName("附加法定节假日限额翻倍险");
-                item.setRiskCode(RiskCodeEnum.BUSINESS_CODE);
-                if (StringUtils.hasLength(kindItem.getAmount())) {
-                    item.setAmount(Long.parseLong(kindItem.getAmount()));
-                }
-                break;
-
-            case "SY_FJ_YBW1": // 附加医保外用药责任险(机动车第三者责任保险)
-                item.setKindCode("S1");
-                item.setKindName("附加医保外用药责任险(机动车第三者责任保险)");
-                item.setRiskCode(RiskCodeEnum.BUSINESS_CODE);
-                item.setAmount(kindItem.getAmount());
-                // item.setBasePremium("32.0000");
-                // item.setBenchMarkPremium("42.6700");
-                break;
-
-            case "SY_FJ_YBW3": // 附加医保外用药责任险(司机)
-                item.setKindCode("S2");
-                item.setKindName("附加医保外用药责任险(机动车车上人员责任保险(司机))");
-                item.setRiskCode(RiskCodeEnum.BUSINESS_CODE);
-                if (StringUtils.hasLength(kindItem.getAmount())) {
-                    item.setAmount(Long.parseLong(kindItem.getAmount()));
-                }
-                break;
-
-            case "SY_FJ_YBW2": // 附加医保外用药责任险(乘客)
-                item.setKindCode("S3");
-                item.setKindName("附加医保外用药责任险(机动车车上人员责任保险(乘客))");
-                item.setRiskCode(RiskCodeEnum.BUSINESS_CODE);
-                if (StringUtils.hasLength(kindItem.getAmount())) {
-                    long perSeatAmount = Long.parseLong(kindItem.getAmount());
-                    int passengerCount = seatCount - 1;
-                    item.setAmount(perSeatAmount * passengerCount);
-                    item.setUnitAmount(kindItem.getAmount());
-                    item.setQuantity(passengerCount);
-                }
-                break;
-
-            case "TY1": // 道路救援服务特约条款
-                item.setKindCode("T1");
-                item.setKindName("道路救援服务特约条款");
-                item.setRiskCode(RiskCodeEnum.BUSINESS_CODE);
-                item.setServiceTimes(StringUtils.hasLength(kindItem.getServiceTimes()) ?
-                        kindItem.getServiceTimes() : kindItem.getAmount());
-                break;
-
-            case "TY2": // 车辆安全检测特约条款
-                item.setKindCode("T2");
-                item.setKindName("车辆安全检测特约条款");
-                item.setRiskCode(RiskCodeEnum.BUSINESS_CODE);
-                item.setServiceTimes(StringUtils.hasLength(kindItem.getServiceTimes()) ?
-                        kindItem.getServiceTimes() : kindItem.getAmount());
-                break;
-
-            case "TY3": // 代为驾驶服务特约条款
-                item.setKindCode("T3");
-                item.setKindName("代为驾驶服务特约条款");
-                item.setRiskCode(RiskCodeEnum.BUSINESS_CODE);
-                item.setServiceTimes(StringUtils.hasLength(kindItem.getServiceTimes()) ?
-                        kindItem.getServiceTimes() : kindItem.getAmount());
-                break;
-
-            case "TY4": // 代为送检服务特约条款
-                item.setKindCode("T4");
-                item.setKindName("代为送检服务特约条款");
-                item.setRiskCode(RiskCodeEnum.BUSINESS_CODE);
-                item.setServiceTimes(StringUtils.hasLength(kindItem.getServiceTimes()) ?
-                        kindItem.getServiceTimes() : kindItem.getAmount());
-                break;
-
-            case "MJ1": // 附加绝对免赔率特约险(车损险)
-                item.setKindCode("FA");
-                item.setKindName("附加绝对免赔率特约险(机动车损失保险)");
-                item.setRiskCode(RiskCodeEnum.BUSINESS_CODE);
-                item.setAmount(0);
-                if (StringUtils.hasLength(kindItem.getDeductibleRate())) {
-                    // 提取数字部分
-                    String deductibleRate = kindItem.getDeductibleRate().replaceAll("[^0-9]", "");
-                    item.setDeductibleRate(Integer.parseInt(deductibleRate));
-                }
-                break;
-
-            case "MJ2": // 附加绝对免赔率特约条款(三者险)
-                item.setKindCode("FB");
-                item.setKindName("附加绝对免赔率特约险(机动车第三者责任保险)");
-                item.setRiskCode(RiskCodeEnum.BUSINESS_CODE);
-                item.setAmount(0);
-                if (StringUtils.hasLength(kindItem.getDeductibleRate())) {
-                    String deductibleRate = kindItem.getDeductibleRate().replaceAll("[^0-9]", "");
-                    item.setDeductibleRate(Integer.parseInt(deductibleRate));
-                }
-                break;
-
-            case "MJ3": // 附加绝对免赔率特约险(司机)
-                item.setKindCode("FD3");
-                item.setKindName("附加绝对免赔率特约险(机动车车上人员责任保险(司机))");
-                item.setRiskCode(RiskCodeEnum.BUSINESS_CODE);
-                item.setAmount(0);
-                if (StringUtils.hasLength(kindItem.getDeductibleRate())) {
-                    String deductibleRate = kindItem.getDeductibleRate().replaceAll("[^0-9]", "");
-                    item.setDeductibleRate(Integer.parseInt(deductibleRate));
-                }
-                break;
-
-            case "MJ4": // 附加绝对免赔率特约险(乘客)
-                item.setKindCode("FD4");
-                item.setKindName("附加绝对免赔率特约险(机动车车上人员责任保险(乘客))");
-                item.setRiskCode(RiskCodeEnum.BUSINESS_CODE);
-                item.setAmount(0);
-                if (StringUtils.hasLength(kindItem.getDeductibleRate())) {
-                    String deductibleRate = kindItem.getDeductibleRate().replaceAll("[^0-9]", "");
-                    item.setDeductibleRate(Integer.parseInt(deductibleRate));
-                }
-                break;
-
-            default:
-                // 未知险种代码,返回null
-                return null;
-        }
-
-        return item;
-    }
-
-    /**
-     * 构建附加保单信息列表
-     *
-     * @return List<ZiJinCrawlerQuotationRequest.CarPolicySubInfoList>
-     */
-//    private List<ZiJinCrawlerQuotationRequest.CarPolicySubInfoList> buildCarPolicySubInfoList() {
-//        List<ZiJinCrawlerQuotationRequest.CarPolicySubInfoList> carPolicySubInfoList = new ArrayList<>();
-//
-//        ZiJinCrawlerQuotationRequest.CarPolicySubInfoList carPolicySubInfo1 = new ZiJinCrawlerQuotationRequest.CarPolicySubInfoList();
-//        carPolicySubInfo1.setPlanName("山西9座以内非营业客车驾乘险10万档:36元/座-10万+1万+30元/天");
-//        carPolicySubInfo1.setInsureGradeNo("214000737028");
-//        carPolicySubInfo1.setIsUseInsured("1");
-//        carPolicySubInfo1.setQuantity("1");
-//        carPolicySubInfo1.setRiskCode("0737");
-//        carPolicySubInfo1.setRiskName("驾乘人员人身意外伤害保险");
-//        carPolicySubInfo1.setSumAmount(577000);
-//        carPolicySubInfo1.setSumPremium(180);
-//        carPolicySubInfo1.setActualPremium("180.00");
-//        carPolicySubInfo1.setProductCode("ZKICATM_GRDL_Plan");
-//        carPolicySubInfoList.add(carPolicySubInfo1);
-//        return carPolicySubInfoList;
-//    }
-
-
     /**
      * 构建附加保单信息列表
      *
@@ -1340,12 +1125,11 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
 
         for (AccidentalDrivingVo accidentalDriving : quoteVo.getAccidentalDrivings()) {
             ZiJinCrawlerQuotationRequest.CarPolicySubInfoList carPolicySubInfo = new ZiJinCrawlerQuotationRequest.CarPolicySubInfoList();
+            carPolicySubInfo.setInsureGradeNo(accidentalDriving.getProductCode());
+            carPolicySubInfo.setProductCode(accidentalDriving.getProductCode());
             carPolicySubInfo.setPlanName(accidentalDriving.getProductName());
-            carPolicySubInfo.setInsureGradeNo("200000736004"); // 前端没传
-            carPolicySubInfo.setProductCode(accidentalDriving.getProductCode());// 这个值前端传过来的是乱码200000736004%%0736%%%0
-            carPolicySubInfo.setPlanName(accidentalDriving.getProductName());
-            carPolicySubInfo.setRiskCode(accidentalDriving.getRiskCode()); // 完了要调整编码,是否要转换
-            carPolicySubInfo.setRiskName(accidentalDriving.getProductName()); // 前端没传
+            carPolicySubInfo.setRiskCode(accidentalDriving.getRiskCode());
+            carPolicySubInfo.setRiskName(accidentalDriving.getProductName());
             carPolicySubInfo.setSumAmount(ObjectUtils.isEmpty(accidentalDriving.getSumAmount()) ? 0 : (int) Double.parseDouble(accidentalDriving.getSumAmount()));
             carPolicySubInfo.setQuantity(accidentalDriving.getQuantity() == 0 ? "0" : String.valueOf(accidentalDriving.getQuantity()));
             carPolicySubInfo.setIsUseInsured("1");
@@ -1355,67 +1139,6 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
         return carPolicySubInfoList;
     }
 
-    /**
-     * 构建紫金驾驶人意外伤害保险(riskCode=0733)信息
-     *
-     * @param drivingInsurance 驾乘险信息
-     * @return ZiJinCrawlerQuotationRequest.CarPolicySubInfoList
-     */
-    private ZiJinCrawlerQuotationRequest.CarPolicySubInfoList buildRideRisk0733(AccidentalDrivingVo drivingInsurance) {
-        ZiJinCrawlerQuotationRequest.CarPolicySubInfoList subInfo = new ZiJinCrawlerQuotationRequest.CarPolicySubInfoList();
-
-        // 默认值
-        subInfo.setPlanName("全国家用驾驶人意外险50万档:160元-50万+5万+150元/天");
-        subInfo.setInsureGradeNo("200000733009");
-        subInfo.setIsUseInsured("1");
-        subInfo.setQuantity("1");
-        subInfo.setRiskCode("0733");
-        subInfo.setRiskName("紫金驾驶人意外伤害保险");
-        subInfo.setSumAmount(577000);
-        subInfo.setSumPremium(160);
-        subInfo.setProductCode("ZKICATM_Driver_Plan_Common");
-
-        // 根据 planId(这里用 productCode 代替)匹配具体计划
-        String planId = drivingInsurance.getProductCode();
-        if (StringUtils.hasLength(planId)) {
-            switch (planId) {
-                case "214000733008":
-                    subInfo.setPlanName("山西驾驶20座(不含)以下非营业型客车(不包括摩托车、拖拉机、农用运输车、电瓶车)2.5万档:25元/车-2.5万+2500元");
-                    subInfo.setInsureGradeNo("214000733008");
-                    subInfo.setSumAmount(27500);
-                    subInfo.setSumPremium(25);
-                    break;
-                case "200000733007":
-                    subInfo.setPlanName("全国家用驾驶人意外险30万档:120元-30万+3万+100元/天");
-                    subInfo.setInsureGradeNo("200000733007");
-                    subInfo.setSumAmount(348000);
-                    subInfo.setSumPremium(120);
-                    break;
-                case "200000733009":
-                    // 默认值就是这个计划,无需修改
-                    break;
-                case "214000733004":
-                    subInfo.setPlanName("太原驾驶人意外险5万档:50元-5万+0.5万");
-                    subInfo.setInsureGradeNo("214000733004");
-                    subInfo.setSumAmount(55000);
-                    subInfo.setSumPremium(2607);
-                    break;
-                // 其他计划可以继续添加
-                default:
-                    // 使用默认值
-                    break;
-            }
-        }
-
-        // 设置实际保费
-        if (subInfo.getSumPremium() != null) {
-            subInfo.setActualPremium(String.format("%.2f", subInfo.getSumPremium().doubleValue()));
-        }
-
-        return subInfo;
-    }
-
-
     /**
      * 构建车辆信息对象
      *

+ 4 - 2
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserAccountServiceImpl.java

@@ -124,8 +124,10 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
     private SysUserWalletVo buildUserWalletVo(SysDept sysDept, SysUser sysUser, SysUserJzgInfo sysUserJzgInfo, SysUserAccount sysUserAccount) {
         SysUserWalletVo sysUserWalletVo = new SysUserWalletVo();
         sysUserWalletVo.setUserId(sysUser.getId());
-        sysUserWalletVo.setDeptId(sysDept.getId());
-        sysUserWalletVo.setDeptName(sysDept.getName());
+        if(Objects.nonNull(sysDept)) {
+            sysUserWalletVo.setDeptId(sysDept.getId());
+            sysUserWalletVo.setDeptName(sysDept.getName());
+        }
         sysUserWalletVo.setWalletBalance(sysUserAccount.getSumAmountUnpaid());
         List<SysAmountAuditing> sysAmountAuditingList = sysAmountAuditingService
                 .list(new LambdaQueryWrapper<SysAmountAuditing>()