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

Merge remote-tracking branch 'origin/master'

Qchen 3 месяцев назад
Родитель
Сommit
d322510cb9

+ 2 - 1
commons/src/main/java/com/jzg/commons/util/BuildDescUtils.java

@@ -13,9 +13,10 @@ import java.util.stream.Collectors;
 public class BuildDescUtils {
 
 
-    public static String buildDesc(List<PtlAgreementUndwrtRulesAttr> linkList, List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList) {
+    public static String buildDesc(String companyId, List<PtlAgreementUndwrtRulesAttr> linkList, List<PtlAgreementUndwrtRulesAttr> undwrtRulesAttrList) {
         StringBuilder desc = new StringBuilder();
         Map<String, PtlAgreementUndwrtRulesAttr> attrMap = undwrtRulesAttrList.stream()
+                .filter(attr -> "all".equals(attr.getCompanyIds()) || attr.getCompanyIds().equals(companyId))
                 .collect(Collectors.toMap(PtlAgreementUndwrtRulesAttr::getAttrCode, Function.identity()));
 
         for (PtlAgreementUndwrtRulesAttr link : linkList) {

+ 67 - 41
tenant/insurance/quotation-ansheng/src/main/java/com/jzg/quotation/ansheng/crawler/build/AnShengCrawlerQuoteResultsVoBuild.java

@@ -2,7 +2,7 @@ package com.jzg.quotation.ansheng.crawler.build;
 
 
 import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson2.JSONObject;
 import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import com.jzg.commons.entity.quote.vo.KindInfoVo;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
@@ -15,7 +15,11 @@ import com.jzg.quotation.commons.component.ConversionOfQuoteInformation;
 import lombok.extern.slf4j.Slf4j;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
+import java.util.function.Function;
 
 
 @Slf4j
@@ -52,7 +56,7 @@ public final class AnShengCrawlerQuoteResultsVoBuild {
                 quoteResultsVo.setCiRiskInfoVo(buildCiRiskInfoVo(contract.getPolicyBase()));
                 buildRiskInfoVo(quoteVo.getCiRiskInfoVo(), contract.getPolicyBase());
                 quoteResultsVo.getCosts().setCiPremium(String.valueOf(contract.getPolicyBase().getTotalActualPremium()));
-                quoteResultsVo.getCosts().setVvTax(String.valueOf(contract.getTargets().get(0).getVehicleTax().getVehicleTaxAmount()));
+                quoteResultsVo.getCosts().setVvTax(getVvTax(contract));
             // 商业险
             } else if (DepartmentPlanCode.PLAN_109.getCode()
                     .equals(contract.getPolicyBase().getPlanCode()) || DepartmentPlanCode.PLAN_113.getCode()
@@ -76,55 +80,77 @@ public final class AnShengCrawlerQuoteResultsVoBuild {
         return quoteResultsVo;
     }
 
+    public static String getVvTax(AnShengCrawlerCalculatePremiumApplyResponse.DataDTO.ContractsDTO contract) {
+        BigDecimal total = Optional.ofNullable(contract)
+                .map(c -> Optional.ofNullable(c.getTargets()).filter(list -> !list.isEmpty()).map(list -> list.get(0)))
+                .flatMap(targetOpt -> targetOpt)
+                .map(target -> Optional.ofNullable(target.getVehicleTax()))
+                .flatMap(taxOpt -> taxOpt)
+                .map(tax -> {
+                    BigDecimal taxAmt = tax.getVehicleTaxAmount() == null ? BigDecimal.ZERO : BigDecimal.valueOf(tax.getVehicleTaxAmount());
+                    BigDecimal lateAmt = tax.getLateFeeAmount() == null ? BigDecimal.ZERO : BigDecimal.valueOf(tax.getLateFeeAmount());
+                    return taxAmt.add(lateAmt);
+                })
+                .orElse(BigDecimal.ZERO)
+                .setScale(2, RoundingMode.HALF_UP);
+        return total.toPlainString();
+    }
+
 
-    private static QuoteResultsVo.ScoreVo buildScoreVo( AnShengCrawlerCalculatePremiumApplyResponse calculatePremiumApply) {
+
+    /**
+     * 组装打分ScoreVo
+     */
+    private static QuoteResultsVo.ScoreVo buildScoreVo(AnShengCrawlerCalculatePremiumApplyResponse calculatePremiumApply) {
         QuoteResultsVo.ScoreVo scoreVo = new QuoteResultsVo.ScoreVo();
         JSONArray scoreArray = new JSONArray();
         AnShengCrawlerCalculatePremiumApplyResponse.DataDTO data = calculatePremiumApply.getData();
-        String basicstring = data.getBasicstring();
-        if (StringUtils.isNotEmpty(basicstring)){
-            String[] parts = basicstring.split(":");
-            scoreArray.add(new JSONObject()
-                    .fluentPut("scoreName",parts.length > 0 ? parts[0].trim() : "")
-                    .fluentPut("scoreKey","basicstring")
-                    .fluentPut("score",parts.length > 1 ? parts[1].trim() : ""));
-        }
-        String blackDivisor = data.getBlackDivisor();
-        if (StringUtils.isNotEmpty(blackDivisor)){
-            String[] black = blackDivisor.split(":");
-            scoreArray.add(new JSONObject()
-                    .fluentPut("scoreName",black.length > 0 ? black[0].trim() : "")
-                    .fluentPut("scoreKey","blackDivisor")
-                    .fluentPut("score",black.length > 0 ? black[1].trim() : ""));
-        }
-        String comprehensiveScoreStr = data.getComprehensiveScoreStr();
-        if (StringUtils.isNotEmpty(comprehensiveScoreStr)){
-            String[] comprehensiveScore = comprehensiveScoreStr.split(":");
-            scoreArray.add(new JSONObject()
-                    .fluentPut("scoreName",comprehensiveScore.length > 0 ? comprehensiveScore[0].trim() : "")
-                    .fluentPut("scoreKey","comprehensiveScoreStr")
-                    .fluentPut("score",comprehensiveScore.length > 0 ? comprehensiveScore[1].trim() : ""));
-        }
-        String riskScore = data.getRiskScore();
-        if (StringUtils.isNotEmpty(riskScore)){
-            String[] riskScoreStr = riskScore.split(":");
-            scoreArray.add(new JSONObject()
-                    .fluentPut("scoreName",riskScoreStr.length > 0 ? riskScoreStr[0].trim() : "")
-                    .fluentPut("scoreKey","riskScore")
-                    .fluentPut("score",riskScoreStr.length > 0 ? riskScoreStr[1].trim() : ""));
+        if (data == null) {
+            scoreVo.setScoreJson(scoreArray);
+            return scoreVo;
         }
-        String unifiedScore = data.getUnifiedScore();
-        if (StringUtils.isNotEmpty(unifiedScore)){
-            String[] unifiedScoreStr = unifiedScore.split(":");
-            scoreArray.add(new JSONObject()
-                    .fluentPut("scoreName",unifiedScoreStr.length > 0 ? unifiedScoreStr[0].trim() : "")
-                    .fluentPut("scoreKey","unifiedScore")
-                    .fluentPut("score",unifiedScoreStr.length > 0 ? unifiedScoreStr[1].trim() : ""));
+        // 1. 统一配置:字段key + 取值函数
+        record ScoreItem(String scoreKey, Function<AnShengCrawlerCalculatePremiumApplyResponse.DataDTO, String> valueFunc) {}
+        List<ScoreItem> itemList = new ArrayList<>();
+        itemList.add(new ScoreItem("basicstring", AnShengCrawlerCalculatePremiumApplyResponse.DataDTO::getBasicstring));
+        itemList.add(new ScoreItem("blackDivisor", AnShengCrawlerCalculatePremiumApplyResponse.DataDTO::getBlackDivisor));
+        itemList.add(new ScoreItem("comprehensiveScoreStr", AnShengCrawlerCalculatePremiumApplyResponse.DataDTO::getComprehensiveScoreStr));
+        itemList.add(new ScoreItem("riskScore", AnShengCrawlerCalculatePremiumApplyResponse.DataDTO::getRiskScore));
+        itemList.add(new ScoreItem("unifiedScore", AnShengCrawlerCalculatePremiumApplyResponse.DataDTO::getUnifiedScore));
+
+        final String splitChar = ":";
+        for (ScoreItem item : itemList) {
+            String sourceStr = item.valueFunc().apply(data);
+            fillScoreItem(scoreArray, splitChar, item.scoreKey(), sourceStr);
         }
+
         scoreVo.setScoreJson(scoreArray);
         return scoreVo;
     }
 
+    /**
+     * 通用填充单个打分JSON对象,消除重复逻辑 + 规避下标越界
+     * @param scoreArray 外层JSON数组
+     * @param splitChar 分隔符
+     * @param scoreKey 唯一标识key
+     * @param sourceStr 原始待分割字符串
+     */
+    private static void fillScoreItem(JSONArray scoreArray, String splitChar, String scoreKey, String sourceStr) {
+        if (StringUtils.isEmpty(sourceStr)) {
+            return;
+        }
+        String[] parts = sourceStr.split(splitChar, 2);
+        String scoreName = parts.length >= 1 ? parts[0].trim() : "";
+        String scoreVal = parts.length >= 2 ? parts[1].trim() : "";
+
+        JSONObject jsonObj = JSONObject.of(
+                "scoreName", scoreName,
+                "scoreKey", scoreKey,
+                "score", scoreVal
+        );
+        scoreArray.add(jsonObj);
+    }
+
 
 
     /**

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

@@ -21,6 +21,7 @@ import com.jzg.quotation.taikang.crawler.model.entity.TKPremium;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 
+import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
@@ -128,6 +129,13 @@ public class TkCrawlerQuoteResultsBuild {
         quoteResultsVo.getCosts().setVvTax(preciseInitResult.getCarTax().getSumPayment().toString());
         // 设置非车险(驾意险)保费
         quoteResultsVo.getCosts().setNiPremium(premium.getJyxPremium().toString());
+        // 设置总费用
+        BigDecimal ci = premium.getJqPremium() == null ? BigDecimal.ZERO : premium.getJqPremium();
+        BigDecimal bi = premium.getSyPremium() == null ? BigDecimal.ZERO : premium.getSyPremium();
+        BigDecimal vv = preciseInitResult.getCarTax().getSumPayment() == null ? BigDecimal.ZERO : preciseInitResult.getCarTax().getSumPayment();
+        BigDecimal total = ci.add(bi).add(vv);
+        quoteResultsVo.getCosts().setSumPremium(total.toPlainString());
+        // 设置订单状态
         quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.WAIT_AUDIT);
         // 缓存报价书据数据
         redisCacheUtil.setPreciseInitResult(preciseInitResult, quoteResultsVo.getOrdersNo());

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

@@ -364,35 +364,40 @@ public class TaiShanCrawlerRequestImpl implements TaiShanCrawlerRequest {
      */
     @Override
     public void uploadImage(InsuranceUploadImageVo insuranceUploadImageVo) {
-        //获取归属信息
-        AttributionInformationVo attributionInformationVo = insuranceUploadImageVo.getOrder().getAttributionInformationVo();
-        TaiShanCrawlerConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(TaiShanCrawlerConfigureParameters.class, attributionInformationVo.getConfigInfo());
-        HttpHeaders headers = taiShanCrawlerQuoteProcessService.getHeaders(attributionInformationVo.getUsername(), parameters.getComCode());
-        TaiShanCrawlerOrder taiShanCrawlerOrder = taiShanCrawlerOrderService.getByOrdersNo(insuranceUploadImageVo.getOrder().getOrdersNo());
-        // 上传影像文件请求参数
-        TaiShanCrawlerImageUploadRequest taiShanCrawlerImageUploadRequest = new TaiShanCrawlerImageUploadRequest();
-        taiShanCrawlerImageUploadRequest.setBiProposalNo(taiShanCrawlerOrder.getSyApplyNo());
-        taiShanCrawlerImageUploadRequest.setCiProposalNo(taiShanCrawlerOrder.getCiApplyNo());
-        taiShanCrawlerImageUploadRequest.setCompanyCode(parameters.getComCode());
-
-        List<TaiShanCrawlerImageUploadRequest.ImageNode> imageNodes = new LinkedList<>();
-        for (InsuranceImageVo imageVo : insuranceUploadImageVo.getImageVoList()) {
-            TaiShanCrawlerImageUploadRequest.ImageNode imageNode = new TaiShanCrawlerImageUploadRequest.ImageNode();
-            imageNode.setType(getImageType(imageVo.getImageCode()));
-            List<TaiShanCrawlerImageUploadRequest.ImageInfo> images = new ArrayList<>();
-            for (InsuranceImageVo.ImageDTO imageDTO : imageVo.getImageBase64List()) {
-                images.add(new TaiShanCrawlerImageUploadRequest.ImageInfo(imageDTO.getImageName(), imageDTO.getImageBase64Str()));
+        try {
+            //获取归属信息
+            AttributionInformationVo attributionInformationVo = insuranceUploadImageVo.getOrder().getAttributionInformationVo();
+            TaiShanCrawlerConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(TaiShanCrawlerConfigureParameters.class, attributionInformationVo.getConfigInfo());
+            HttpHeaders headers = taiShanCrawlerQuoteProcessService.getHeaders(attributionInformationVo.getUsername(), parameters.getComCode());
+            TaiShanCrawlerOrder taiShanCrawlerOrder = taiShanCrawlerOrderService.getByOrdersNo(insuranceUploadImageVo.getOrder().getOrdersNo());
+            // 上传影像文件请求参数
+            TaiShanCrawlerImageUploadRequest taiShanCrawlerImageUploadRequest = new TaiShanCrawlerImageUploadRequest();
+            taiShanCrawlerImageUploadRequest.setBiProposalNo(taiShanCrawlerOrder.getSyApplyNo());
+            taiShanCrawlerImageUploadRequest.setCiProposalNo(taiShanCrawlerOrder.getCiApplyNo());
+            taiShanCrawlerImageUploadRequest.setCompanyCode(parameters.getComCode());
+
+            List<TaiShanCrawlerImageUploadRequest.ImageNode> imageNodes = new LinkedList<>();
+            for (InsuranceImageVo imageVo : insuranceUploadImageVo.getImageVoList()) {
+                TaiShanCrawlerImageUploadRequest.ImageNode imageNode = new TaiShanCrawlerImageUploadRequest.ImageNode();
+                imageNode.setType(getImageType(imageVo.getImageCode()));
+                List<TaiShanCrawlerImageUploadRequest.ImageInfo> images = new ArrayList<>();
+                for (InsuranceImageVo.ImageDTO imageDTO : imageVo.getImageBase64List()) {
+                    images.add(new TaiShanCrawlerImageUploadRequest.ImageInfo(imageDTO.getImageName(), imageDTO.getImageBase64Str()));
+                }
+                imageNode.setImages(images);
+                imageNodes.add(imageNode);
             }
-            imageNode.setImages(images);
-            imageNodes.add(imageNode);
+            taiShanCrawlerImageUploadRequest.setImageNodes(imageNodes);
+            taiShanCrawlerImageUploadRequest.setOperatorCode(parameters.getSaleCode());
+            taiShanCrawlerImageUploadRequest.setOperatorName(parameters.getSaleName());
+            taiShanCrawlerImageUploadRequest.setOrderNo(taiShanCrawlerOrder.getOrderNo());
+            taiShanCrawlerImageUploadRequest.setUploadFlag("D");
+            TaiShanCrawlerImageUploadResponse taiShanCrawlerImageUploadResponse = taiShanCrawlerRequestComponent.uploadImage(taiShanCrawlerImageUploadRequest, headers);
+            log.info("taiShanCrawlerImageUploadResponse对象的值:{}", JSON.toJSONString(taiShanCrawlerImageUploadResponse));
+        } catch (Exception e) {
+            log.error("泰山影像上传失败", e);
+            throw new RuntimeException("泰山影像上传失败: " + e.getMessage(), e);
         }
-        taiShanCrawlerImageUploadRequest.setImageNodes(imageNodes);
-        taiShanCrawlerImageUploadRequest.setOperatorCode(parameters.getSaleCode());
-        taiShanCrawlerImageUploadRequest.setOperatorName(parameters.getSaleName());
-        taiShanCrawlerImageUploadRequest.setOrderNo(taiShanCrawlerOrder.getOrderNo());
-        taiShanCrawlerImageUploadRequest.setUploadFlag("D");
-        TaiShanCrawlerImageUploadResponse taiShanCrawlerImageUploadResponse = taiShanCrawlerRequestComponent.uploadImage(taiShanCrawlerImageUploadRequest, headers);
-        log.info("taiShanCrawlerImageUploadResponse对象的值:{}", JSON.toJSONString(taiShanCrawlerImageUploadResponse));
     }
 
 

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

@@ -205,7 +205,7 @@ public class ZiJinCrawlerQuoteResultsVoBuild {
         }
 
         // 计算总保费
-        // calculateSumPremium(quoteResultsVo);
+        calculateSumPremium(quoteResultsVo);
     }
 
     /**

+ 1 - 1
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/component/ZiJinCrawlerRequestComponent.java

@@ -113,12 +113,12 @@ public class ZiJinCrawlerRequestComponent {
      */
     public ZiJinCrawlerCheckCaptchaResponse checkCaptchaAndGetToken(ZiJinCrawlerCheckCaptchaRequest ziJinCrawlerCheckCaptchaRequest, String token) throws IOException {
         log.info("ziJinCrawlerCheckCaptchaRequest请求参数的值:{}", JSON.toJSONString(ziJinCrawlerCheckCaptchaRequest));
-
         HttpHeaders httpHeaders = setHttpHeaders();
         httpHeaders.setContentLength(289);
         // 需要单独设置这个
         httpHeaders.set("Authorization", token);
         httpHeaders.set("loginToken", token);
+
         String jsonString = JSON.toJSONString(ziJinCrawlerCheckCaptchaRequest);
         ResponseEntity<ZiJinCrawlerCheckCaptchaResponse> responseEntity = requestComponent.post(RequestUrl.CHECKCAPTCHAANDGETTOKEN.getRequestUrl(ziJinCrawlerProperties.getBaseUrl()), jsonString, ZiJinCrawlerCheckCaptchaResponse.class, httpHeaders);
         return responseEntity.getBody();

+ 10 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/entity/ZiJinCrawlerConfigureParameters.java

@@ -36,4 +36,14 @@ public class ZiJinCrawlerConfigureParameters implements ConfigureParameters {
      */
     private String comName;
 
+    /**
+     * 代理code
+     */
+    private String 代理code;
+
+    /**
+     * 渠道: 比如 个人代理
+     */
+    private String businessNatureName;
+
 }

+ 2 - 6
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/crawler/service/impl/ZiJinCrawlerQuoteProcessServiceImpl.java

@@ -40,9 +40,6 @@ public class ZiJinCrawlerQuoteProcessServiceImpl implements ZiJinCrawlerQuotePro
     // 登陆次数
     public static final int LOGINS_NUMBER = 3;
 
-    private final String USER_NAME = "214003053";
-    private final String PASSWORD = "Jieke896.";
-
     /**
      * 登录
      *
@@ -138,9 +135,8 @@ public class ZiJinCrawlerQuoteProcessServiceImpl implements ZiJinCrawlerQuotePro
         String authorization = ziJinCrawlerCacheComponent.getAuthorization(username);
         log.info("authorization:{}", authorization);
         if (authorization == null) {
-            // TODO: 暂时硬编码,后续调整
-            login(USER_NAME, PASSWORD);
-            authorization = ziJinCrawlerCacheComponent.getAuthorization(USER_NAME);
+            login(username, password);
+            authorization = ziJinCrawlerCacheComponent.getAuthorization(username);
         }
 
         try {

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

@@ -118,22 +118,15 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
         HttpHeaders headers = ziJinCrawlerQuoteProcessService.getHeaders(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
         log.info("headers参数的值:{}", JSON.toJSONString(headers));
 
-        String userCode = ziJinCrawlerCacheComponent.getUserCode(attributionInformationVo.getUsername());
-        log.info("userCode:{}", userCode);
-
         // 1.1 解析配置参数
         ZiJinCrawlerConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(ZiJinCrawlerConfigureParameters.class, attributionInformationVo.getConfigInfo());
         log.info("parameters参数的值:{}", JSON.toJSONString(parameters));
 
-        // 1.2 构建归属信息(机构、套餐、渠道信息)
-        // ProposalInfoDTO proposalInfoDTO = boHaiBuildingAttributionInformation.build(parameters, userCode, headers);
         try {
-            String comCode = "2140000601";
-
             // 查询车辆信息
             ZiJinCrawlerCarRequest ziJinCrawlerCarRequest = new ZiJinCrawlerCarRequest();
             ziJinCrawlerCarRequest.setChannelCode("KSCD_PROD");
-            ziJinCrawlerCarRequest.setComCode(comCode);
+            ziJinCrawlerCarRequest.setComCode(parameters.getComCode());
             ziJinCrawlerCarRequest.setLicenseNo(quoteVo.getCarInfoVo().getLicenseNo());
             ziJinCrawlerCarRequest.setVin(quoteVo.getCarInfoVo().getVinNo());
             ZiJinCrawlerCarResponse ziJinCrawlerCarResponse = ziJinCrawlerRequestComponent.car(ziJinCrawlerCarRequest, headers);
@@ -156,7 +149,7 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
             //  报价接口
             ZiJinCrawlerQuotationRequest ziJinCrawlerQuotationRequest = new ZiJinCrawlerQuotationRequest();
             // 设置基础信息
-            ziJinCrawlerQuotationRequest.setBaseInfo(buildBaseInfo(quoteVo));
+            ziJinCrawlerQuotationRequest.setBaseInfo(buildBaseInfo(quoteVo, parameters, attributionInformationVo.getUsername()));
 
             // 设置车主信息
             ZiJinCrawlerQuotationRequest.CarOwnerInfo carOwnerInfo = buildCarOwnerInfo(quoteVo);
@@ -180,8 +173,7 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
             ziJinCrawlerQuotationRequest.setProductName("机动车保险");
 
             // 设置减税信息
-            ziJinCrawlerQuotationRequest.setTaxRelifInfo(buildTaxRelifInfo(quoteVo, carOwnerInfo, comCode, headers));
-
+            ziJinCrawlerQuotationRequest.setTaxRelifInfo(buildTaxRelifInfo(quoteVo, carOwnerInfo, parameters.getComCode(), headers));
             // 设置险种列表
             Double actualValue = null;
             if (ziJinCrawlerGetCarActualValueResponse != null && StringUtils.hasLength(ziJinCrawlerGetCarActualValueResponse.getActualValue())) {
@@ -801,16 +793,16 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
      *
      * @return ZiJinCrawlerQuotationRequest.BaseInfo
      */
-    private ZiJinCrawlerQuotationRequest.BaseInfo buildBaseInfo(QuoteVo quoteVo) {
+    private ZiJinCrawlerQuotationRequest.BaseInfo buildBaseInfo(QuoteVo quoteVo, ZiJinCrawlerConfigureParameters parameters, String operatorCode) {
         ZiJinCrawlerQuotationRequest.BaseInfo baseInfo = new ZiJinCrawlerQuotationRequest.BaseInfo();
-        baseInfo.setAgentCode("P214001000622");
-        baseInfo.setAgreementNo("P214001000622-01");
+        baseInfo.setAgentCode(parameters.get代理code());
+        baseInfo.setAgreementNo(parameters.get代理code()+"-01");
         baseInfo.setBusinessNature("1");
-        baseInfo.setComCode("2140105601");
-        baseInfo.setComName("山西太原综改支公司直销业务一部");
-        baseInfo.setHandler1Code("214003263");
-        baseInfo.setHandler1Name("程涛");
-        baseInfo.setOperatorCode("214003053");
+        baseInfo.setComCode(parameters.getComCode());
+        baseInfo.setComName(parameters.getComName());
+        baseInfo.setHandler1Code(parameters.getUserCode());
+        baseInfo.setHandler1Name(parameters.getUserName());
+        baseInfo.setOperatorCode(operatorCode);
         baseInfo.setStartDate(quoteVo.getCiRiskInfoVo().getStartDate().substring(0, 10));
         baseInfo.setStartDateCI(quoteVo.getCiRiskInfoVo().getStartDate().substring(0, 10));
         baseInfo.setStartHour("00");
@@ -827,13 +819,13 @@ public class ZiJinCrawlerRequestImpl implements ZiJinCrawlerRequest {
         baseInfo.setXbFlag(quoteVo.getBiRiskInfoVo() == null ? "0" : null);
         baseInfo.setXbFlagCI(quoteVo.getBiRiskInfoVo() == null ? "0" : null);
         baseInfo.setGoalInsuredFlag("0");
-        baseInfo.setConfigName("天勤");
+        baseInfo.setConfigName("");
         baseInfo.setId("1dec8ac2ced74973842a5b098669813a");
-        baseInfo.setBusinessName("个人代理");
+        baseInfo.setBusinessName(parameters.getBusinessNatureName());
         baseInfo.setIdMongo("1dec8ac2ced74973842a5b098669813a");
-        baseInfo.setDesc("天勤");
-        baseInfo.setHanderCode("214003263");
-        baseInfo.setHanderName("程涛");
+        baseInfo.setDesc("");
+        baseInfo.setHanderCode(parameters.getUserCode());
+        baseInfo.setHanderName(parameters.getUserName());
         baseInfo.setDemandNo("01ZKIC140026051910017933666448");
         if (quoteVo.getBiRiskInfoVo() != null) {
             baseInfo.setDemandNoCI("01ZKIC140026051910017933666448");// 这个先放开看行不

+ 10 - 8
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementCostServiceImpl.java

@@ -26,10 +26,7 @@ import com.jzg.commons.util.idgen.IdGenerate;
 import com.jzg.organization.mapper.PtlAgreementCostMapper;
 import com.jzg.organization.mapper.PtlAgreementCostRuleMapper;
 import com.jzg.organization.mapper.PtlAgreementCostTypeMapper;
-import com.jzg.organization.service.PtlAgreementCostRuleService;
-import com.jzg.organization.service.PtlAgreementCostService;
-import com.jzg.organization.service.PtlAgreementCostTypeService;
-import com.jzg.organization.service.PtlAgreementUndwrtRulesAttrService;
+import com.jzg.organization.service.*;
 import com.jzg.organization.state.CostState;
 import com.jzg.organization.state.listener.CostStateListener;
 import io.seata.spring.annotation.GlobalTransactional;
@@ -89,6 +86,9 @@ public class PtlAgreementCostServiceImpl extends ServiceImpl<PtlAgreementCostMap
     @Autowired
     private PtlAgreementCostRuleMapper ptlAgreementCostRuleMapper;
 
+    @Autowired
+    private PtlAgreementService ptlAgreementService;
+
     /**
      * 报价配置/费用管理/新增费用
      *
@@ -117,6 +117,7 @@ public class PtlAgreementCostServiceImpl extends ServiceImpl<PtlAgreementCostMap
                     log.info("新增费用的时候,需要指定关联的协议信息。ptlAgreemenCostAdd=[{}]", JSONUtil.toJsonStr(ptlAgreemenCostAdd));
                     return HttpResult.error("新增费用的时候,需要指定关联的协议信息");
                 }
+                PtlAgreement agreement = ptlAgreementService.getById(costAdd.getPtlAgreementId());
                 ptlAgreementCostAdd.setPtlAgreementId(costAdd.getPtlAgreementId());
                 ptlAgreementCostAdd.setProductId(costAdd.getProductId());
                 ptlAgreementCostAdd.setProductName(costAdd.getProductName());
@@ -127,7 +128,7 @@ public class PtlAgreementCostServiceImpl extends ServiceImpl<PtlAgreementCostMap
 //                    throw new SystemException("已存在相同且有效的费用规则,请检查");
 //                }
                 PtlAgreementCost ptlAgreementCost = BeanUtil.copyProperties(ptlAgreementCostAdd, PtlAgreementCost.class);
-                ptlAgreementCost.setCostRules(buildDescString(ptlAgreementCostAdd.getRuleConditions()));
+                ptlAgreementCost.setCostRules(buildDescString(agreement.getCompanyId(), ptlAgreementCostAdd.getRuleConditions()));
                 if (baseMapper.insert(ptlAgreementCost) <= 0) {
                     log.error("插入操作失败");
                     throw new RuntimeException(ReturnInformation.FAILURE_MESSAGE);
@@ -167,10 +168,11 @@ public class PtlAgreementCostServiceImpl extends ServiceImpl<PtlAgreementCostMap
                 }
             }
         }
+        PtlAgreement agreement = ptlAgreementService.getById(ptlAgreementCostEnd.getPtlAgreementId());
         PtlAgreementCost ptlAgreementCost = BeanUtil.copyProperties(ptlAgreementCostEnd, PtlAgreementCost.class);
         // modify by lipf, 2026年5月22日11:28:34 设置为待审核状态
         ptlAgreementCost.setApproved(0);
-        ptlAgreementCost.setCostRules(buildDescString(ptlAgreementCostEnd.getRuleConditions()));
+        ptlAgreementCost.setCostRules(buildDescString(agreement.getCompanyId(), ptlAgreementCostEnd.getRuleConditions()));
         if (baseMapper.updateById(ptlAgreementCost) <= 0) {
             throw new RuntimeException(ReturnInformation.UPDATE_FAILED);
         }
@@ -196,11 +198,11 @@ public class PtlAgreementCostServiceImpl extends ServiceImpl<PtlAgreementCostMap
     }
 
 
-    public String buildDescString(List<?> list){
+    public String buildDescString(String companyId, List<?> list){
         if (CollectionUtils.isEmpty(list)){
             return null;
         }
-        return BuildDescUtils.buildDesc(BeanUtil.copyToList(list, PtlAgreementUndwrtRulesAttr.class), agreementUndwrtRulesAttrService.getUndwrtRulesAttrList());
+        return BuildDescUtils.buildDesc(companyId, BeanUtil.copyToList(list, PtlAgreementUndwrtRulesAttr.class), agreementUndwrtRulesAttrService.getUndwrtRulesAttrList());
     }
 
     public boolean verify(PtlAgreementCostAdd ptlAgreementCostAdd){