Просмотр исходного кода

Merge remote-tracking branch 'origin/dev_jzg_lipf_v20260622' into dev_jzg_lipf_v20260622

jiakai 2 месяцев назад
Родитель
Сommit
61d7ebaaf4
13 измененных файлов с 242 добавлено и 82 удалено
  1. 3 0
      commons/src/main/java/com/jzg/commons/entity/dto/LotteryCounDTO.java
  2. 2 0
      commons/src/main/java/com/jzg/commons/entity/report/dto/ReportUploadExcelTaskDto.java
  3. 2 2
      commons/src/main/java/com/jzg/commons/entity/scheme/vo/PtlSchemeSaveVo.java
  4. 102 0
      tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/entity/Response/HtCrawlerQuoteResponse.java
  5. 1 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/client/LocalLivingClient.java
  6. 7 5
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java
  7. 5 0
      tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/ConvertUtil.java
  8. 1 1
      tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/model/entity/TKCiKindsVo.java
  9. 20 7
      tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/TKSimpleService.java
  10. 36 32
      tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/impl/TKQuotationBaseServiceImpl.java
  11. 21 14
      tenant/insurance/quotation-taishan/src/main/java/com/jzg/quotation/taishan/crawler/build/TaiShanCrawlerQuoteResultsVoBuild.java
  12. 36 11
      tenant/insurance/quotation-taishan/src/main/java/com/jzg/quotation/taishan/crawler/component/TaiShanCrawlerRequestComponent.java
  13. 6 9
      tenant/insurance/quotation-taishan/src/main/java/com/jzg/quotation/taishan/crawler/service/impl/TaiShanCrawlerRequestImpl.java

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/dto/LotteryCounDTO.java

@@ -20,4 +20,7 @@ public class LotteryCounDTO implements Serializable {
 
     @Schema(description = "活动id")
     private String activityId;
+
+    @Schema(description = "本地生活用户手机号")
+    private String phone;
 }

+ 2 - 0
commons/src/main/java/com/jzg/commons/entity/report/dto/ReportUploadExcelTaskDto.java

@@ -67,4 +67,6 @@ public class ReportUploadExcelTaskDto implements Serializable {
      */
     @Schema(description = "已读未读状态  0.未读 1.已读")
     private Integer readStatus;
+    @Schema(description = "导出文件路径")
+    private String filePath;
 }

+ 2 - 2
commons/src/main/java/com/jzg/commons/entity/scheme/vo/PtlSchemeSaveVo.java

@@ -1,4 +1,4 @@
-package com.jzg.commons.entity.scheme.vo;
+    package com.jzg.commons.entity.scheme.vo;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.jzg.commons.constants.ProductsType;
@@ -276,7 +276,7 @@ public class PtlSchemeSaveVo {
     public List<PtlSchemeInsuranceDrivingIntention> getPtlSchemeInsuranceDrivingIntentionList(){
         List<PtlSchemeInsuranceDrivingIntention> ptlSchemeInsuranceDrivingIntentionList = new ArrayList<>();
         for (Scheme scheme : schemeList) {
-            scheme.getDrivingList().forEach(drivingIntention -> {
+            scheme.getDrivingIntentionList().forEach(drivingIntention -> {
                 PtlSchemeInsuranceDrivingIntention ptlSchemeInsuranceDrivingIntention = new PtlSchemeInsuranceDrivingIntention();
                 ptlSchemeInsuranceDrivingIntention.setId(IdGenerate.nextId());
                 ptlSchemeInsuranceDrivingIntention.setSchemeInfoId(scheme.getId());

+ 102 - 0
tenant/insurance/quotation-huatai/src/main/java/com/jzg/quotation/huatai/crawler/entity/Response/HtCrawlerQuoteResponse.java

@@ -332,47 +332,149 @@ public class HtCrawlerQuoteResponse implements Serializable {
                 @Serial
                 private static final long serialVersionUID = -2573582333838228647L;
 
+                /**
+                 * 附加费率
+                 */
                 private String additionrate;
+                /**
+                 * 调整系数
+                 */
                 private String adjustrate;
+                /**
+                 * 基准保费
+                 */
                 private String basedpremium;
+                /**
+                 * 基本保费
+                 */
                 private String basicpremium;
+                /**
+                 * 基础风险保费
+                 */
                 private String basicriskpremiums;
+                /**
+                 * 基准保费
+                 */
                 private String benchmarkpremiums;
+                /**
+                 * 计算公式
+                 */
                 private String calculation;
+                /**
+                 * 险别代码(商业险)
+                 */
                 private String comcoveragecode;
+                /**
+                 * 险别代码
+                 */
                 private String coveragecode;
+                /**
+                 * 险别名称
+                 */
                 private String coveragename;
+                /**
+                 * 险别类型
+                 */
                 private String coveragetype;
+                /**
+                 * 币种
+                 */
                 private String currency;
+                /**
+                 * 免赔率
+                 */
                 private String deductiblerate;
+                /**
+                 * 折扣系数
+                 */
                 private String discount;
+                /**
+                 * 终保日期
+                 */
                 private String enddate;
+                /**
+                 * 是否不计免赔
+                 */
                 private String isnondeductible;
+                /**
+                 * 险别保费
+                 */
                 private String kindpremiun;
+                /**
+                 * 上年保单出单日期
+                 */
                 private String lastbilldate;
+                /**
+                 * 上年保单终保日期
+                 */
                 private String lastenddate;
+                /**
+                 * 上年保单起保日期
+                 */
                 private String laststartdate;
                 /**
                  * 保额
                  */
                 private String limitamount;
+                /**
+                 * 其他费率
+                 */
                 private String otherRate;
+                /**
+                 * 不含税保费
+                 */
                 private String premexcludevat;
+                /**
+                 * 利润系数
+                 */
                 private String profitscale;
+                /**
+                 * 数量
+                 */
                 private String quantity;
+                /**
+                 * 费率
+                 */
                 private String rate;
+                /**
+                 * 费率周期
+                 */
                 private String rateperiod;
+                /**
+                 * 重复投保标志
+                 */
                 private String reinsureflag;
+                /**
+                 * 序号
+                 */
                 private String serialno;
+                /**
+                 * 服务编码
+                 */
                 private String serviceCode;
+                /**
+                 * 服务名称
+                 */
                 private String serviceName;
+                /**
+                 * 服务次数
+                 */
                 private String serviceTimes;
+                /**
+                 * 短期费率
+                 */
                 private String shortrate;
                 /**
                  * 实际需要收取的保费
                  */
                 private String standardpremium;
+                /**
+                 * 起保日期
+                 */
                 private String startdate;
+                /**
+                 * 增值税
+                 */
                 private String vat;
             }
         }

+ 1 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/client/LocalLivingClient.java

@@ -114,7 +114,7 @@ public interface LocalLivingClient {
      * @param lotteryCounDTO
      * @return
      */
-    @PostMapping("/localUserLotteryCount/add")
+    @PostMapping("/lottery/lotteryUserLotteryCount/add")
     HttpResult<LotteryCountVO> addLotteryCount(@RequestBody LotteryCounDTO lotteryCounDTO);
 
 

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

@@ -419,6 +419,7 @@ public class UnifyOrderManager {
      * @param quoteVo 报价请求参数
      */
     private void handleQuoteLotteryActivity(QuoteVo quoteVo) {
+        log.info("进入营销活动报价抽奖,参数:{}",JSON.toJSONString(quoteVo));
         try {
             // 远程调用活动列表
             List<LocalLivingLotteryActivityVO> activities = queryLotteryActivities(lotteryScene);
@@ -452,7 +453,7 @@ public class UnifyOrderManager {
 
                     // 查询用户是否在一账通绑定过本地生活
                     HttpResult<UnifiedUserClientVO> bindResult = queryUserBind(userId,quoteUserId, tenantId);
-                    if (bindResult == null || bindResult.getCode() != 200 || bindResult.getData() == null) {
+                    if (bindResult == null || bindResult.getCode() != 0 || bindResult.getData() == null) {
                         // 未绑定:统计报价次数,满足条件则存本地记录
                         handleUnboundQuoteRule(tenantId, quoteUserId, activity, table);
                     } else {
@@ -535,7 +536,7 @@ public class UnifyOrderManager {
 
         MessageAddParam param = new MessageAddParam();
         param.setTitle("抽奖次数下发通知消息");
-        param.setContent("{\"eventId\":\"" + activity.getId() + "\",\"localActivityTableId\":\"" + table.getId() + "\",\"message\":\"抽奖次数奖励下发\"}");
+        param.setContent("{\"eventId\":\"" + activity.getId() + "\",\"localActivityTableId\":\"" + table.getId() + "\",\"message\":\"报价活动:抽奖次数奖励下发\"}");
         param.setTplCode("template_13");
         param.setReceive(List.of(userId));
         orgClient.messageAdd(param);
@@ -615,6 +616,7 @@ public class UnifyOrderManager {
         lotteryCounDTO.setAppUserId(userId);
         lotteryCounDTO.setActivityId(activity.getId());
         lotteryCounDTO.setCount(currentGrantNum);
+        lotteryCounDTO.setPhone(userId);
 
         HttpResult<LotteryCountVO> lotteryResult = null;
         try {
@@ -635,7 +637,7 @@ public class UnifyOrderManager {
             // 发送抽奖次数下发通知消息
             MessageAddParam param = new MessageAddParam();
             param.setTitle("抽奖次数下发通知消息");
-            param.setContent("{\"eventId\":\"" + activity.getId() + "\",\"localActivityTableId\":\"" + table.getId() + "\",\"message\":\"抽奖次数奖励下发\"}");
+            param.setContent("{\"eventId\":\"" + activity.getId() + "\",\"localActivityTableId\":\"" + table.getId() + "\",\"message\":\"报价活动:抽奖次数奖励下发\"}");
             param.setTplCode("template_13");
             param.setReceive(List.of(userId));
             orgClient.messageAdd(param);
@@ -1149,7 +1151,7 @@ public class UnifyOrderManager {
 
                 MessageAddParam param = new MessageAddParam();
                 param.setTitle("抽奖次数下发通知消息");
-                param.setContent("{\"eventId\":\"" + activity.getId() + "\",\"localActivityTableId\":\"" + table.getId() + "\",\"message\":\"抽奖次数奖励下发\"}");
+                param.setContent("{\"eventId\":\"" + activity.getId() + "\",\"localActivityTableId\":\"" + table.getId() + "\",\"message\":\"出单活动:抽奖次数奖励下发\"}");
                 param.setTplCode("template_13");
                 param.setReceive(List.of(userId));
                 orgClient.messageAdd(param);
@@ -1213,7 +1215,7 @@ public class UnifyOrderManager {
         if (lotteryResult != null && lotteryResult.getData().getSuccess()) {
             MessageAddParam param = new MessageAddParam();
             param.setTitle("抽奖次数下发通知消息");
-            param.setContent("{\"eventId\":\"" + activity.getId() + "\",\"localActivityTableId\":\"" + table.getId() + "\",\"message\":\"抽奖次数奖励下发\"}");
+            param.setContent("{\"eventId\":\"" + activity.getId() + "\",\"localActivityTableId\":\"" + table.getId() + "\",\"message\":\"出单活动:抽奖次数奖励下发\"}");
             param.setTplCode("template_13");
             param.setReceive(List.of(userId));
             orgClient.messageAdd(param);

+ 5 - 0
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/ConvertUtil.java

@@ -43,6 +43,11 @@ public class ConvertUtil {
         if (num.compareTo(new BigDecimal("10000")) < 0) {
             return quoteAmount;
         }
+        // 如果num是整数,直接返回不带小数拼接万
+        if (num.remainder(new BigDecimal("10000")).compareTo(BigDecimal.ZERO) == 0) {
+            BigDecimal wanNum = num.divide(new BigDecimal("10000"));
+            return wanNum + "万";
+        }
         BigDecimal res = num.divide(new BigDecimal("10000"), 2, RoundingMode.HALF_UP);
         return res + "万";
     }

+ 1 - 1
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/model/entity/TKCiKindsVo.java

@@ -106,7 +106,7 @@ public class TKCiKindsVo extends UnknownFieldEntity {
      *
      * 当不投保时,这个字段的值好像是无意义的,有些传的是10000、有的传0、有的传2。
      */
-    private String quoteAmount;
+    private BigDecimal quoteAmount;
 
     /**
      * 报价金额中文

+ 20 - 7
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/TKSimpleService.java

@@ -41,6 +41,12 @@ public class TKSimpleService {
             "4", "P"
     );
 
+    /**
+     * 机动车损失险险种代码(车辆损失保险)
+     * 该险种的金额由保司系统返回,前端传的值不准确,需要使用保司的金额
+     */
+    private static final String KIND_CODE_VEHICLE_DAMAGE = "101";
+
     /**
      * 通用空值检查与初始化方法
      * <p>
@@ -1041,17 +1047,24 @@ public class TKSimpleService {
                 .forEach(commonBiKindInfoVo -> {
                     TKCiKindsVo tkCiKindVo = tkCiKindsVoMap.get(commonBiKindInfoVo.getKindCode());
                     tkCiKindVo.setIsSelect("1");
-                    tkCiKindVo.setQuoteAmount(commonBiKindInfoVo.getAmount());
-                    tkCiKindVo.setQuoteAmountCN(ConvertUtil.simpleConvert(commonBiKindInfoVo.getAmount()));
-
-                    if (StringUtils.isNotBlank(commonBiKindInfoVo.getUnitAmount())) {
-                        tkCiKindVo.setUnitAmount(new BigDecimal(commonBiKindInfoVo.getUnitAmount()));
-                        tkCiKindVo.setUnitAmountCN(commonBiKindInfoVo.getUnitAmount());
-                    }
                     String quantity = commonBiKindInfoVo.getQuantity();
                     if (StringUtils.isNotBlank(quantity)) {
                         tkCiKindVo.setQuantity(Integer.parseInt(quantity));
                     }
+                    // 机动车损失险(101)的金额由保司系统返回,前端传的值不准确,使用保司已有的金额,无需覆盖
+                    if (KIND_CODE_VEHICLE_DAMAGE.equals(commonBiKindInfoVo.getKindCode())) {
+                        return;
+                    }
+                    String amount = commonBiKindInfoVo.getAmount();
+                    if (StringUtils.isBlank(amount)) {
+                        log.warn("商业险险种[{}]金额为空,跳过金额设置", commonBiKindInfoVo.getKindCode());
+                        return;
+                    }
+                    BigDecimal amountBigDecimal = new BigDecimal(amount);
+                    tkCiKindVo.setQuoteAmount(amountBigDecimal);
+                    tkCiKindVo.setQuoteAmountCN(ConvertUtil.simpleConvert(amount));
+                    tkCiKindVo.setUnitAmount(amountBigDecimal);
+                    tkCiKindVo.setUnitAmountCN(ConvertUtil.simpleConvert(amount));
                 });
 
         // ========== 6. 驾意险信息同步 ==========

+ 36 - 32
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/service/impl/TKQuotationBaseServiceImpl.java

@@ -188,34 +188,38 @@ public class TKQuotationBaseServiceImpl implements TKQuotationBaseService {
         // # 车险投保单报价下单
         TKEntranceFor000038Result tkEntranceFor000038Result = tkSimpleService.orderSubmit(session, preciseInitResult.getMainOrderId(), insureInfo);
         UnderwritingResultsVo underwritingResultsVo = new UnderwritingResultsVo();
-        if (tkEntranceFor000038Result != null) {  // 核保通过
-            TKOrderData tkOrderData = tkEntranceFor000038Result.getData();
-            // 核保成功,保单编号缓存
-            redisCacheUtil.setCache(tkOrderData.getProposalNo(), underwritingVo.getOrder().getOrdersNo(), "HB");
-            // 保司订单号
-            underwritingResultsVo.setCompanyOrderNo(tkOrderData.getProposalNo());
-            // 交强险投保单号
-            underwritingResultsVo.setJqApplyNo(tkOrderData.getProposalNoCI());
-            // 商业险投保单号
-            underwritingResultsVo.setSyApplyNo(tkOrderData.getProposalNoBI());
-            // 驾意险投保单号
-            underwritingResultsVo.setJyApplyNo(tkOrderData.getCarAccident() != null ? tkOrderData.getCarAccident().getProposalNo() : null);
-            // 核保结果
-            underwritingResultsVo.setUnderwritingResult("核保成功");
-            // 核保状态
-            underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.PAY_PENDING);
-            // 验车标志,需要验车,需要上传影像
-            if ("1".equals(tkEntranceFor000038Result.getCheckCarFlag()) && "9".equals(tkEntranceFor000038Result.getData().getUnderWriteFlag())) {
-                buildCheckCar(tkEntranceFor000038Result, underwritingVo, preciseInitResult, underwritingResultsVo);
-            }
-            tkCrawlerOrderService.save(underwritingVo, underwritingResultsVo, preciseInitResult.getMainOrderId(), true);
-        } else {
-            // 核保失败
+        if (tkEntranceFor000038Result == null) {
             underwritingResultsVo.setUnderwritingResult("核保失败");
             underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.AUDIT_FAIL);
             tkCrawlerOrderService.save(underwritingVo, underwritingResultsVo, preciseInitResult.getMainOrderId(), false);
+            return underwritingResultsVo;
         }
-
+        // 核保通过
+        TKOrderData tkOrderData = tkEntranceFor000038Result.getData();
+        // 核保成功,保单编号缓存
+        redisCacheUtil.setCache(tkOrderData.getProposalNo(), underwritingVo.getOrder().getOrdersNo(), "HB");
+        // 保司订单号
+        underwritingResultsVo.setCompanyOrderNo(tkOrderData.getProposalNo());
+        // 交强险投保单号
+        underwritingResultsVo.setJqApplyNo(tkOrderData.getProposalNoCI());
+        // 商业险投保单号
+        underwritingResultsVo.setSyApplyNo(tkOrderData.getProposalNoBI());
+        // 驾意险投保单号
+        underwritingResultsVo.setJyApplyNo(tkOrderData.getCarAccident() != null ? tkOrderData.getCarAccident().getProposalNo() : null);
+        // 核保结果
+        underwritingResultsVo.setUnderwritingResult("核保成功");
+        // 核保状态
+        underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.PAY_PENDING);
+        // 验车标志,需要验车,需要上传影像
+        if ("1".equals(tkEntranceFor000038Result.getCheckCarFlag()) && "9".equals(tkEntranceFor000038Result.getData().getUnderWriteFlag())) {
+            buildCheckCar(tkEntranceFor000038Result, underwritingVo, preciseInitResult, underwritingResultsVo);
+        }
+        // 人工核保
+        if ("2".equals(tkOrderData.getCarCheckStatus())) {
+            underwritingResultsVo.setUnderwritingResult("人工审核返回:" + tkOrderData.getSpResMsg());
+            underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.AUDIT_FAIL);
+        }
+        tkCrawlerOrderService.save(underwritingVo, underwritingResultsVo, preciseInitResult.getMainOrderId(), true);
         return underwritingResultsVo;
     }
 
@@ -233,31 +237,31 @@ public class TKQuotationBaseServiceImpl implements TKQuotationBaseService {
      * @param preciseInitResult         精准报价结果
      * @param underwritingResultsVo     核保结果返回
      */
-    private void buildCheckCar(TKEntranceFor000038Result tkEntranceFor000038Result, 
-                               UnderwritingVo underwritingVo, 
-                               PreciseInitResult preciseInitResult, 
+    private void buildCheckCar(TKEntranceFor000038Result tkEntranceFor000038Result,
+                               UnderwritingVo underwritingVo,
+                               PreciseInitResult preciseInitResult,
                                UnderwritingResultsVo underwritingResultsVo) {
         log.info("========== 开始处理验车上传影像流程 ==========");
 
         try {
             // 1. 获取核保返回的保司订单号
             String proposalNo = extractProposalNo(tkEntranceFor000038Result, underwritingVo);
-            
+
             // 2. 从 Redis 获取缓存的影像上传参数(前端提前上传的)
             String ordersNo = underwritingVo.getOrder().getOrdersNo();
             InsuranceUploadImageVo insuranceUploadImageVo = redisCacheUtil.getImageUploadParam(ordersNo);
 
             // 3. 如果有缓存的影像参数,设置保司订单号并清除缓存
             if (insuranceUploadImageVo != null) {
-                log.info("从 Redis 获取到缓存的影像上传参数,影像数量: {}", 
+                log.info("从 Redis 获取到缓存的影像上传参数,影像数量: {}",
                         insuranceUploadImageVo.getImageVoList() != null ? insuranceUploadImageVo.getImageVoList().size() : 0);
-                
+
                 // 设置保司订单号(核保成功后已返回)
                 if (proposalNo != null) {
                     insuranceUploadImageVo.getOrder().setCompanyOrderNo(proposalNo);
                     log.info("已为缓存的影像上传参数设置保司订单号: {}", proposalNo);
                 }
-                
+
                 // 删除 Redis 中的缓存(已使用,不再需要)
                 redisCacheUtil.deleteImageUploadParam(ordersNo);
             }
@@ -304,7 +308,7 @@ public class TKQuotationBaseServiceImpl implements TKQuotationBaseService {
         if (tkOrderData == null || tkOrderData.getProposalNo() == null) {
             return null;
         }
-        
+
         String proposalNo = tkOrderData.getProposalNo();
         underwritingVo.getOrder().setCompanyOrderNo(proposalNo);
         log.info("核保返回保司订单号: {}", proposalNo);

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

@@ -56,7 +56,7 @@ public class TaiShanCrawlerQuoteResultsVoBuild {
             quoteResultsVo.setKindInfoVo(buildKindInfoVo(saveResponse, quoteVo));
         }
         // 交强保费 车船税 商业保费
-        buildPremium(quoteResultsVo, saveResponse);
+        buildPremium(quoteVo, quoteResultsVo, saveResponse);
 
         // 保司评分
         JSONArray scoreJson = new JSONArray();
@@ -193,28 +193,35 @@ public class TaiShanCrawlerQuoteResultsVoBuild {
      * @param quoteResultsVo
      * @param saveResponse
      */
-    private static void buildPremium(QuoteResultsVo quoteResultsVo, TaiShanCrawlerQuotationSaveResponse saveResponse) {
+    private static void buildPremium(QuoteVo quoteVo, QuoteResultsVo quoteResultsVo, TaiShanCrawlerQuotationSaveResponse saveResponse) {
         // 设置商业险保费
         if (Objects.nonNull(saveResponse.getResult().getBusinessInsurance())){
-            quoteResultsVo.getCosts().setBiPremium(String.valueOf(saveResponse.getResult().getBusinessInsurance().getProductInfo().getPremium()));
+            String biPremium = saveResponse.getResult().getBusinessInsurance().getProductInfo().getPremium();
+            quoteResultsVo.getCosts().setBiPremium(StringUtils.hasText(biPremium) ? biPremium : "0");
         }
         // 设置交强险保费
         if (Objects.nonNull(saveResponse.getResult().getCompulsoryInsurance())) {
-            quoteResultsVo.getCosts().setCiPremium(String.valueOf(saveResponse.getResult().getCompulsoryInsurance().getProductInfo().getPremium()));
+            String ciPremium = saveResponse.getResult().getCompulsoryInsurance().getProductInfo().getPremium();
+            quoteResultsVo.getCosts().setCiPremium(StringUtils.hasText(ciPremium) ? ciPremium : "0");
             // 设置车船税
-            quoteResultsVo.getCosts().setVvTax(String.valueOf(saveResponse.getResult().getCompulsoryInsurance().getCarShipTax().getSumTax()));
+            String vvTax = saveResponse.getResult().getCompulsoryInsurance().getCarShipTax().getSumTax();
+            quoteResultsVo.getCosts().setVvTax(StringUtils.hasText(vvTax) ? vvTax : "0");
         }
         //设置非车险(驾意险)保费
-        if (Objects.nonNull(saveResponse.getResult().getDiInsurance())) {//DiInsurance  驾乘人员意外伤害险 UN1 / UN2
-            quoteResultsVo.getCosts().setNiPremium(saveResponse.getResult().getDiInsurance().getPremium());
+        if (!quoteVo.getAccidentalDrivings().isEmpty() && Objects.nonNull(saveResponse.getResult().getDiInsurance())) {//DiInsurance  驾乘人员意外伤害险 UN1 / UN2
+            String diPremium = saveResponse.getResult().getDiInsurance().getPremium();
+            quoteResultsVo.getCosts().setNiPremium(StringUtils.hasText(diPremium) ? diPremium : "0");
         }
-        if (Objects.nonNull(saveResponse.getResult().getOpdInsurance())) {//OpdInsurance  车主门诊保险 0691_A
-            if (StringUtils.isNotBlank(quoteResultsVo.getCosts().getNiPremium())) {
-                BigDecimal diPremium = new BigDecimal(saveResponse.getResult().getDiInsurance().getPremium());
-                BigDecimal add = diPremium.add(new BigDecimal(saveResponse.getResult().getOpdInsurance().getPremium()));
-                quoteResultsVo.getCosts().setNiPremium(String.valueOf(add));
-            } else {
-                quoteResultsVo.getCosts().setNiPremium(saveResponse.getResult().getOpdInsurance().getPremium());
+        if (!quoteVo.getAccidentalDrivings().isEmpty() && Objects.nonNull(saveResponse.getResult().getOpdInsurance())) {//OpdInsurance  车主门诊保险 0691_A
+            String opdPremium = saveResponse.getResult().getOpdInsurance().getPremium();
+            if (StringUtils.hasText(opdPremium)) {
+                if (StringUtils.hasText(quoteResultsVo.getCosts().getNiPremium())) {
+                    BigDecimal diPremium = new BigDecimal(quoteResultsVo.getCosts().getNiPremium());
+                    BigDecimal add = diPremium.add(new BigDecimal(opdPremium));
+                    quoteResultsVo.getCosts().setNiPremium(add.toPlainString());
+                } else {
+                    quoteResultsVo.getCosts().setNiPremium(opdPremium);
+                }
             }
         }
         // 设置总费用

+ 36 - 11
tenant/insurance/quotation-taishan/src/main/java/com/jzg/quotation/taishan/crawler/component/TaiShanCrawlerRequestComponent.java

@@ -46,7 +46,8 @@ public class TaiShanCrawlerRequestComponent {
             HttpHeaders headers) {
         // 1. 请求体 JSON
         String jsonString = com.alibaba.fastjson.JSON.toJSONString(body);
-        log.info("请求内容 {}", jsonString);
+        log.info("泰山post请求地址 {}", requestUrl.getRequestUrl(taiShanCrawlerProperties.getBaseUrl()));
+        log.info("泰山post请求内容 {}", jsonString);
         // 2. 执行 POST
         ResponseEntity<String> responseEntity =
                 requestComponent.post(
@@ -56,8 +57,7 @@ public class TaiShanCrawlerRequestComponent {
                         headers);
         // 3. 获取响应
         String responseBody = responseEntity.getBody();
-        log.info("post响应请求地址 {}", requestUrl.getRequestUrl(taiShanCrawlerProperties.getBaseUrl()));
-        log.info("post响应内容 {}", responseBody);
+        log.info("泰山post响应内容 {}", responseBody);
         // 4. 反序列化
         Response response = com.alibaba.fastjson.JSON.parseObject(responseBody, responseClass);
 
@@ -75,6 +75,7 @@ public class TaiShanCrawlerRequestComponent {
             HttpHeaders headers) {
         // 1. 请求体 JSON
         String jsonString = com.alibaba.fastjson.JSON.toJSONString(body);
+        log.info("泰山post请求地址 {}", requestUrl.getRequestUrl(taiShanCrawlerProperties.getBaseUrl()));
         log.info("请求内容 {}", jsonString);
         // 2. 执行 POST
         ResponseEntity<String> responseEntity =
@@ -86,7 +87,7 @@ public class TaiShanCrawlerRequestComponent {
         // 3. 获取响应
         String responseBody = responseEntity.getBody();
 
-        log.info("响应内容 {}", responseBody);
+        log.info("泰山post响应内容 {}", responseBody);
         // 4. 反序列化
         Response response = com.alibaba.fastjson.JSON.parseObject(responseBody, responseClass);
 
@@ -104,7 +105,7 @@ public class TaiShanCrawlerRequestComponent {
             HttpHeaders headers) {
         // 1. 请求体 JSON
         String jsonString = com.alibaba.fastjson.JSON.toJSONString(body);
-        log.info("请求内容 {}", jsonString);
+        log.info("泰山postCheck请求内容 {}", jsonString);
         // 2. 执行 POST
         ResponseEntity<String> responseEntity =
                 requestComponent.post(
@@ -115,7 +116,7 @@ public class TaiShanCrawlerRequestComponent {
         // 3. 获取响应
         String responseBody = responseEntity.getBody();
 
-        log.info("响应内容 {}", responseBody);
+        log.info("泰山postCheck响应内容 {}", responseBody);
         // 4. 反序列化
         Response response = com.alibaba.fastjson.JSON.parseObject(responseBody, responseClass);
 
@@ -137,6 +138,7 @@ public class TaiShanCrawlerRequestComponent {
             param = RequestObjectConversion.convertMultiValueStringMap(body);
         }
         // 2. 执行 POST
+        log.info("泰山get请求地址 {}", requestUrl.getRequestUrl(taiShanCrawlerProperties.getBaseUrl()) + path);
         ResponseEntity<String> responseEntity =
                 requestComponent.baseGet(
                         requestUrl.getRequestUrl(taiShanCrawlerProperties.getBaseUrl()) + path,
@@ -146,7 +148,7 @@ public class TaiShanCrawlerRequestComponent {
         // 3. 获取响应
         String responseBody = responseEntity.getBody();
 
-        log.info("响应内容 {}", responseBody);
+        log.info("泰山get响应内容 {}", responseBody);
         // 4. 反序列化
         Response response = com.alibaba.fastjson.JSON.parseObject(responseBody, responseClass);
 
@@ -176,8 +178,8 @@ public class TaiShanCrawlerRequestComponent {
                         headers);
         // 3. 获取响应
         String responseBody = responseEntity.getBody();
-        log.info("get响应请求地址 {}", requestUrl.getRequestUrl(taiShanCrawlerProperties.getBaseUrl()));
-        log.info("get响应内容 {}", responseBody);
+        log.info("泰山get响应请求地址 {}", requestUrl.getRequestUrl(taiShanCrawlerProperties.getBaseUrl()));
+        log.info("泰山get响应内容 {}", responseBody);
         // 4. 反序列化
         Response response = com.alibaba.fastjson.JSON.parseObject(responseBody, responseClass);
 
@@ -243,7 +245,7 @@ public class TaiShanCrawlerRequestComponent {
     public TaiShanCrawlerCarResponse queryCarModelsWithCheck(TaiShanCrawlerCarRequest request, HttpHeaders headers) {
         // 1. 请求体 JSON
         String jsonString = com.alibaba.fastjson.JSON.toJSONString(request);
-        log.info("车型搜索参数:{}", jsonString);
+        log.info("泰山车型搜索参数:{}", jsonString);
         // 2. 执行 POST
         ResponseEntity<String> responseEntity;
         try {
@@ -312,8 +314,10 @@ public class TaiShanCrawlerRequestComponent {
      * @return TaiShanCrawlerQuotationResponse
      */
     public TaiShanCrawlerQuotationResponse quotation(TaiShanCrawlerQuotationRequest request, HttpHeaders headers, int repeatNumber) {
+        log.info("泰山报价请求内容 {}", request);
+        log.info("泰山报价请求地址 {}", RequestUrl.PRICE.getRequestUrl(taiShanCrawlerProperties.getBaseUrl()));
         TaiShanCrawlerQuotationResponse response = post(RequestUrl.PRICE, request, TaiShanCrawlerQuotationResponse.class, headers);
-
+        log.info("泰山报价响应内容 {}", response);
         if (response.getResult() == null) {
             throw new SystemException(response.getMessage() != null ? response.getMessage() : "报价接口返回异常,result为空");
         }
@@ -341,7 +345,10 @@ public class TaiShanCrawlerRequestComponent {
      * @return TaiShanCrawlerQuotationSaveResponse
      */
     public TaiShanCrawlerQuotationSaveResponse saveQuotation(TaiShanCrawlerQuotationRequest request, HttpHeaders headers) {
+        log.info("泰山保存报价请求内容 {}", request);
+        log.info("泰山保存报价请求地址 {}", RequestUrl.SAVE.getRequestUrl(taiShanCrawlerProperties.getBaseUrl()));
         TaiShanCrawlerQuotationSaveResponse response = post(RequestUrl.SAVE, request, TaiShanCrawlerQuotationSaveResponse.class, headers);
+        log.info("泰山保存报价响应内容 {}", response);
         return response;
     }
 
@@ -354,7 +361,10 @@ public class TaiShanCrawlerRequestComponent {
      * @return TaiShanCrawlerUnderwritingResponse
      */
     public TaiShanCrawlerUnderwritingResponse underwriting(TaiShanCrawlerUnderwritingRequest request, HttpHeaders headers) {
+        log.info("泰山核保请求内容 {}", request);
+        log.info("泰山核保请求地址 {}", RequestUrl.UNDERWRITING.getRequestUrl(taiShanCrawlerProperties.getBaseUrl()));
         TaiShanCrawlerUnderwritingResponse response = get(RequestUrl.UNDERWRITING, request, TaiShanCrawlerUnderwritingResponse.class, headers,"");
+        log.info("泰山核保响应内容 {}", response);
         return response;
     }
 
@@ -366,7 +376,10 @@ public class TaiShanCrawlerRequestComponent {
      * @return TaiShanCrawlerImageUploadResponse
      */
     public TaiShanCrawlerImageUploadResponse uploadImage(TaiShanCrawlerImageUploadRequest request, HttpHeaders headers){
+        log.info("泰山上传影像件请求内容 {}", request);
+        log.info("泰山上传影像件请求地址 {}", RequestUrl.UPLOAD_IMAGE.getRequestUrl(taiShanCrawlerProperties.getBaseUrl()));
         TaiShanCrawlerImageUploadResponse response = post(RequestUrl.UPLOAD_IMAGE, request, TaiShanCrawlerImageUploadResponse.class, headers);
+        log.info("泰山上传影像件响应内容 {}", response);
         return response;
     }
 
@@ -379,7 +392,10 @@ public class TaiShanCrawlerRequestComponent {
      * @return TaiShanCrawlerPaymentCardResponse
      */
     public TaiShanCrawlerPaymentCardResponse getPaymentCard(TaiShanCrawlerPaymentCardRequest request, HttpHeaders headers) {
+        log.info("泰山获取支付卡请求内容 {}", request);
+        log.info("泰山获取支付卡请求地址 {}", RequestUrl.PAYMENT_CARD.getRequestUrl(taiShanCrawlerProperties.getBaseUrl()));
         TaiShanCrawlerPaymentCardResponse response = get(RequestUrl.PAYMENT_CARD, request, TaiShanCrawlerPaymentCardResponse.class, headers,"");
+        log.info("泰山获取支付卡响应内容 {}", response);
         return response;
     }
 
@@ -392,7 +408,10 @@ public class TaiShanCrawlerRequestComponent {
      * @return TaiShanCrawlerRiskManagementResponse
      */
     public TaiShanCrawlerRiskManagementResponse getRiskManagement(TaiShanCrawlerRiskManagementRequest request, HttpHeaders headers) {
+        log.info("泰山风险管控请求内容 {}", request);
+        log.info("泰山风险管控请求地址 {}", RequestUrl.RISK_MANAGEMENT.getRequestUrl(taiShanCrawlerProperties.getBaseUrl()));
         TaiShanCrawlerRiskManagementResponse response = get(RequestUrl.RISK_MANAGEMENT, request, TaiShanCrawlerRiskManagementResponse.class, headers,"");
+        log.info("泰山风险管控响应内容 {}", response);
         return response;
     }
 
@@ -404,7 +423,10 @@ public class TaiShanCrawlerRequestComponent {
      * @return TaiShanCrawlerOrderQueryResponse
      */
     public TaiShanCrawlerOrderQueryResponse queryOrderStatus(TaiShanCrawlerOrderQueryRequest request, HttpHeaders headers) {
+        log.info("泰山查询订单状态请求内容 {}", request);
+        log.info("泰山查询订单状态请求地址 {}", RequestUrl.QUERY_ORDER_STATUS.getRequestUrl(taiShanCrawlerProperties.getBaseUrl()));
         TaiShanCrawlerOrderQueryResponse response = post(RequestUrl.QUERY_ORDER_STATUS, request, TaiShanCrawlerOrderQueryResponse.class, headers);
+        log.info("泰山查询订单状态响应内容 {}", response);
         return response;
     }
 
@@ -416,7 +438,10 @@ public class TaiShanCrawlerRequestComponent {
      * @return TaiShanCrawlerDownLoadPolicyResponse
      */
      public TaiShanCrawlerDownLoadPolicyResponse downloadPolicy(TaiShanCrawlerDownLoadPolicyRequest request, HttpHeaders headers) {
+         log.info("泰山下载电子保单请求内容 {}", request);
+         log.info("泰山下载电子保单请求地址 {}", RequestUrl.ELECTRON_POLICY_IO_DOWNLOAD.getRequestUrl(taiShanCrawlerProperties.getBaseUrl()));
          TaiShanCrawlerDownLoadPolicyResponse response = get(RequestUrl.ELECTRON_POLICY_IO_DOWNLOAD, request, TaiShanCrawlerDownLoadPolicyResponse.class, headers,null);
+         log.info("泰山下载电子保单响应内容 {}", response);
          return response;
     }
 

+ 6 - 9
tenant/insurance/quotation-taishan/src/main/java/com/jzg/quotation/taishan/crawler/service/impl/TaiShanCrawlerRequestImpl.java

@@ -2,6 +2,7 @@ package com.jzg.quotation.taishan.crawler.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import com.jzg.commons.entity.quote.vo.AttributionInformationVo;
@@ -410,21 +411,14 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
 
         UnderwritingResultsVo underwritingResultsVo = new UnderwritingResultsVo();
         if ("200".equals(taiShanCrawlerUnderwritingResponse.getCode())) {
+            log.info("TaiShan-taiShanCrawlerUnderwritingResponse:{}", JSONObject.toJSONString(taiShanCrawlerUnderwritingResponse));
             String retMsg = "";
             TaiShanCrawlerUnderwritingResponse.Result result = taiShanCrawlerUnderwritingResponse.getResult();
             if(result != null){
                 retMsg = result.getRetMsg();
             }
-            log.info("TaiShan-retMsg:{}", JSON.toJSONString(retMsg));
             if(org.apache.commons.lang3.StringUtils.isNotBlank(retMsg)){
-                if(retMsg.contains("重新提交")){
-                    underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.AUDIT_FAIL);
-//                    StringBuilder sb = new StringBuilder();
-//                    if (null != taiShanCrawlerUnderwritingResponse.getMessage()) {
-//                        sb.append(String.format("错误信息:%s", taiShanCrawlerUnderwritingResponse.getMessage()));
-//                    }
-                    underwritingResultsVo.setUnderwritingResult(retMsg);
-                }else if(retMsg.contains("核保通过")){
+                if(retMsg.contains("核保通过")){
                     //核保成功
                     underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.PAY_PENDING);
                     underwritingResultsVo.setJqApplyNo(taiShanCrawlerUnderwritingResponse.getResult().getJqAppNo());
@@ -435,6 +429,9 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
                     paymentLinkVo.setOrder(underwritingVo.getOrder());
                     PaymentLinkResultsVo paymentLinkResultsVo = getPaymentLink(paymentLinkVo);
                     underwritingResultsVo.setPaymentLink(paymentLinkResultsVo.getPaymentLink());
+                }else {
+                    underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.AUDIT_FAIL);
+                    underwritingResultsVo.setUnderwritingResult(retMsg);
                 }
             }
         } else {//核保失败