Przeglądaj źródła

Merge remote-tracking branch 'origin/test-d' into test-d

# Conflicts:
#	src/main/java/com/ydtech/modules/ins/model/vo/QuoteRespVo.java
#	src/main/java/com/ydtech/modules/order/entity/api/yangguang/request/YangGuangAccuracyCalculateRequest.java
Qchen 1 rok temu
rodzic
commit
ad232534cc
17 zmienionych plików z 215 dodań i 115 usunięć
  1. 68 26
      src/main/java/com/ydtech/modules/fee/dto/vo/RuleAttrMappingVo.java
  2. 13 2
      src/main/java/com/ydtech/modules/ins/model/yc/audit/Audit.java
  3. 1 1
      src/main/java/com/ydtech/modules/ins/model/yc/ruote/Applicant.java
  4. 1 1
      src/main/java/com/ydtech/modules/ins/model/yc/ruote/Insured.java
  5. 15 3
      src/main/java/com/ydtech/modules/ins/model/yc/ruote/Tax.java
  6. 1 1
      src/main/java/com/ydtech/modules/inv/controller/InvAccountController.java
  7. 1 1
      src/main/java/com/ydtech/modules/order/components/chengtai/ChengTaiRequestApiComponents.java
  8. 3 3
      src/main/java/com/ydtech/modules/order/entity/api/chengtai/constants/ImageTypeEnum.java
  9. 2 2
      src/main/java/com/ydtech/modules/order/entity/api/chengtai/request/InsurePremiumRequest.java
  10. 2 2
      src/main/java/com/ydtech/modules/order/entity/api/chengtai/request/SubmitVerifyRequest.java
  11. 17 9
      src/main/java/com/ydtech/modules/order/entity/api/chengtai/request/UploadFileRequest.java
  12. 6 0
      src/main/java/com/ydtech/modules/order/entity/vo/InsOrdersEditingVo.java
  13. 3 0
      src/main/java/com/ydtech/modules/order/entity/vo/VehicleAndVesselTax.java
  14. 4 0
      src/main/java/com/ydtech/modules/order/entity/vo/ya/YaExtendInfoDto.java
  15. 71 61
      src/main/java/com/ydtech/modules/order/service/impl/YangGuangOrderApiServiceImpl.java
  16. 4 2
      src/main/java/com/ydtech/modules/scheme/controller/PtlSchemeController.java
  17. 3 1
      src/main/resources/mapper/modules/order/InsOrdersMapper.xml

+ 68 - 26
src/main/java/com/ydtech/modules/fee/dto/vo/RuleAttrMappingVo.java

@@ -11,6 +11,7 @@ import com.ydtech.modules.order.entity.api.bohai.constants.VehicleUsage;
 import com.ydtech.modules.order.entity.api.dajia.constants.TypeVehicleMapping;
 import com.ydtech.modules.protocol.entity.po.PtlNewCarJudgeRules;
 import com.ydtech.modules.protocols.entity.po.PtlAgreementUndwrtRulesAttr;
+import com.ydtech.utils.StringUtils;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
@@ -113,44 +114,85 @@ public class RuleAttrMappingVo {
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("SyRenewalOfInsurance", insAreaCompany.getSyRenewal()));
 
         CustomerInfoVo ownerInfo = insOrders.getOwnerinfo().toJavaObject(CustomerInfoVo.class);
-        //车主 证件号码(前6位)
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersIDNumber", ownerInfo.getIdentifyNumber()));
-        //车主 年龄
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersAge", ownerInfo.getAge()));
-        //车主 性别
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersSex", ownerInfo.getGender().equals("男") ? "1" : "2"));
+        if(StringUtils.isBlank(ownerInfo.getProperty()) || !"0".equals(ownerInfo.getProperty())) {
+            //车主 证件号码(前6位)
+            ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersIDNumber", ownerInfo.getIdentifyNumber()));
+            //车主 年龄
+            ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersAge", ownerInfo.getAge()));
+            //车主 性别
+            ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnersSex", ownerInfo.getGender().equals("男") ? "1" : "2"));
+        }
         //车主 姓名
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("CarOwnerName", ownerInfo.getName()));
 
         CustomerInfoVo policyHolderInfo = insOrders.getApplyinfo().toJavaObject(CustomerInfoVo.class);
-        //投保人 证件号码(前6位)
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("ApplicantIDNumber", policyHolderInfo.getIdentifyNumber()));
-        //投保人 年龄
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("ApplicantAge", policyHolderInfo.getAge()));
-        //投保人 性别
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("ApplicantSex", policyHolderInfo.getGender().equals("男") ? "1" : "2"));
+        if(StringUtils.isBlank(policyHolderInfo.getProperty()) || !"0".equals(policyHolderInfo.getProperty())) {
+            //投保人 证件号码(前6位)
+            ruleAttrMappingVoList.add(new RuleAttrMappingVo("ApplicantIDNumber", policyHolderInfo.getIdentifyNumber()));
+            //投保人 年龄
+            ruleAttrMappingVoList.add(new RuleAttrMappingVo("ApplicantAge", policyHolderInfo.getAge()));
+            //投保人 性别
+            ruleAttrMappingVoList.add(new RuleAttrMappingVo("ApplicantSex", policyHolderInfo.getGender().equals("男") ? "1" : "2"));
+        }
 
         CustomerInfoVo insuredPersonInfo = insOrders.getInsureinfo().toJavaObject(CustomerInfoVo.class);
-        //被保人 证件号码(前6位)
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredIDNumber", insuredPersonInfo.getIdentifyNumber()));
-        //被保人 年龄
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredAge", insuredPersonInfo.getAge()));
-        //被保人 性别
-        ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredSex", insuredPersonInfo.getGender().equals("男") ? "1" : "2"));
-
+        if(StringUtils.isBlank(insuredPersonInfo.getProperty()) || !"0".equals(insuredPersonInfo.getProperty())) {
+            //被保人 证件号码(前6位)
+            ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredIDNumber", insuredPersonInfo.getIdentifyNumber()));
+            //被保人 年龄
+            ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredAge", insuredPersonInfo.getAge()));
+            //被保人 性别
+            ruleAttrMappingVoList.add(new RuleAttrMappingVo("InsuredSex", insuredPersonInfo.getGender().equals("男") ? "1" : "2"));
+        }
         String OPIConsistent = "0";
-        //车主 投被保人是否一致
-        if((ownerInfo.getName().equals(insuredPersonInfo.getName()) && insuredPersonInfo.getName().equals(policyHolderInfo.getName())) &&
-                (ownerInfo.getIdentifyNumber().equals(insuredPersonInfo.getIdentifyNumber()) && insuredPersonInfo.getIdentifyNumber().equals(policyHolderInfo.getIdentifyNumber()))){
-            OPIConsistent = "1";
+        if(StringUtils.isNotBlank(ownerInfo.getProperty())){
+            boolean boo = ownerInfo.getProperty().equals(insuredPersonInfo.getProperty()) && insuredPersonInfo.getProperty().equals(policyHolderInfo.getProperty());
+            if(boo){
+                if("0".equals(ownerInfo.getProperty())){
+                    if((ownerInfo.getName().equals(insuredPersonInfo.getName()) && insuredPersonInfo.getName().equals(policyHolderInfo.getName())) &&
+                            (ownerInfo.getOrganizationCode().equals(insuredPersonInfo.getOrganizationCode()) && insuredPersonInfo.getOrganizationCode().equals(policyHolderInfo.getOrganizationCode()))){
+                        OPIConsistent = "1";
+                    }
+                }else{
+                    if((ownerInfo.getName().equals(insuredPersonInfo.getName()) && insuredPersonInfo.getName().equals(policyHolderInfo.getName())) &&
+                            (ownerInfo.getIdentifyNumber().equals(insuredPersonInfo.getIdentifyNumber()) && insuredPersonInfo.getIdentifyNumber().equals(policyHolderInfo.getIdentifyNumber()))){
+                        OPIConsistent = "1";
+                    }
+                }
+            }
+        }else{
+            if((ownerInfo.getName().equals(insuredPersonInfo.getName()) && insuredPersonInfo.getName().equals(policyHolderInfo.getName())) &&
+                    (ownerInfo.getIdentifyNumber().equals(insuredPersonInfo.getIdentifyNumber()) && insuredPersonInfo.getIdentifyNumber().equals(policyHolderInfo.getIdentifyNumber()))){
+                OPIConsistent = "1";
+            }
         }
+
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("OPIConsistent",OPIConsistent));
 
         String PIConsistent = "0";
-        //投被保人是否一致
-        if(insuredPersonInfo.getName().equals(policyHolderInfo.getName()) && insuredPersonInfo.getIdentifyNumber().equals(policyHolderInfo.getIdentifyNumber())){
-            PIConsistent = "1";
+
+        if(StringUtils.isNotBlank(insuredPersonInfo.getProperty())){
+            boolean boo = insuredPersonInfo.getProperty().equals(policyHolderInfo.getProperty());
+            if(boo){
+                if("0".equals(insuredPersonInfo.getProperty())){
+                    //投被保人是否一致
+                    if(insuredPersonInfo.getName().equals(policyHolderInfo.getName()) && insuredPersonInfo.getOrganizationCode().equals(policyHolderInfo.getOrganizationCode())){
+                        PIConsistent = "1";
+                    }
+                }else{
+                    //投被保人是否一致
+                    if(insuredPersonInfo.getName().equals(policyHolderInfo.getName()) && insuredPersonInfo.getIdentifyNumber().equals(policyHolderInfo.getIdentifyNumber())){
+                        PIConsistent = "1";
+                    }
+                }
+            }
+        }else{
+            //投被保人是否一致
+            if(insuredPersonInfo.getName().equals(policyHolderInfo.getName()) && insuredPersonInfo.getIdentifyNumber().equals(policyHolderInfo.getIdentifyNumber())){
+                PIConsistent = "1";
+            }
         }
+
         ruleAttrMappingVoList.add(new RuleAttrMappingVo("PIConsistent",PIConsistent));
 
         //2024-06-20 起保日期 月份判断

+ 13 - 2
src/main/java/com/ydtech/modules/ins/model/yc/audit/Audit.java

@@ -10,6 +10,7 @@ import com.ydtech.modules.ins.model.yc.YcConfigureParameters;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.utils.IDCardUtils;
+import com.ydtech.utils.StringUtils;
 import lombok.Data;
 
 import javax.validation.Valid;
@@ -274,10 +275,20 @@ public class Audit {
 
         //<taxATion>
         TaxATion taxATion = new TaxATion();
-        taxATion.setCTaxType("338001");
+        //0:法人 1个人
+        String property = applyInfo.getProperty();
+        if (StringUtils.isNotEmpty(property) && "0".equals(property)) {
+            taxATion.setCTaxType("338003");
+            taxATion.setTaxpayerComid(applyInfo.getOrganizationCode());
+        }else {
+            taxATion.setCTaxType("338001");
+            taxATion.setTaxpayerComid(applyInfo.getIdentifyNumber());
+        }
+        //ceshi
+//        taxATion.setCTaxType("338001");
 //        taxATion.setClntMark("1");
         taxATion.setClntMark("3");
-        taxATion.setTaxpayerComid(applyInfo.getIdentifyNumber());
+//        taxATion.setTaxpayerComid(applyInfo.getIdentifyNumber());
         taxATion.setTaxName(applyInfo.getName());
         taxATion.setClntAddress(applyInfo.getAddr());
         taxATion.setMobile(applyInfo.getMobile());

+ 1 - 1
src/main/java/com/ydtech/modules/ins/model/yc/ruote/Applicant.java

@@ -251,7 +251,7 @@ public class Applicant {
             applicant.setCCounty(policyHolderInfo.getCounty());
             //行业
             applicant.setCTrdCde("201799");
-            applicant.setCOccupation(policyHolderInfo.getScope());
+//            applicant.setCOccupation(policyHolderInfo.getScope());
             applicant.setNResvNum3(policyHolderInfo.getRegisteredCapital());
             applicant.setNResvNum3Cur("01");
             applicant.setCWorkDpt("900");

+ 1 - 1
src/main/java/com/ydtech/modules/ins/model/yc/ruote/Insured.java

@@ -271,7 +271,7 @@ public class Insured {
             insured.setCCity(insuredPersonInfo.getCity());
             insured.setCCounty(insuredPersonInfo.getCounty());
             //经营范围
-            insured.setCWorkCtt(insuredPersonInfo.getScope());
+//            insured.setCWorkCtt(insuredPersonInfo.getScope());
             insured.setNResvNum3(insuredPersonInfo.getRegisteredCapital());
             insured.setNResvNum3Cur("01");
 

+ 15 - 3
src/main/java/com/ydtech/modules/ins/model/yc/ruote/Tax.java

@@ -139,16 +139,28 @@ public class Tax {
         tax.setTaxPayerName(policyHolderInfo.getName());
         //补交上年
         tax.setPayLastYear("0");
-        tax.setIdType("120001");
+        //0:法人 1:个人(中国籍) 2: 个人(非中国籍)
+        String property = policyHolderInfo.getProperty();
+        if (property.equals("0")) {
+            tax.setIdType("110004");
+            tax.setTaxpayerType("338003");
+            tax.setTaxpayerNO(policyHolderInfo.getOrganizationCode());
+        }else {
+            tax.setIdType("120001");
+            tax.setTaxpayerType("338001");
+            //纳税人识别号 =  投保人身份证号
+            tax.setTaxpayerNO(policyHolderInfo.getIdentifyNumber());
+        }
+//        tax.setIdType("120001");
         tax.setCalculatedType("349003001");
         tax.setVehecleTypeDetail("3490010013");
         tax.setTaxpayerAddress(policyHolderInfo.getAddr());
         tax.setVehicleQuality(extracted(carInfo.getCompleteKerbMass()));
         //纳税人识别号 =  投保人身份证号
-        tax.setTaxpayerNO(policyHolderInfo.getIdentifyNumber());
+//        tax.setTaxpayerNO(policyHolderInfo.getIdentifyNumber());
 
         tax.setVehicleType("349001001");
-        tax.setTaxpayerType("338001");
+//        tax.setTaxpayerType("338001");
         tax.setConruty("156");
         tax.setTel(policyHolderInfo.getMobile());
         tax.setExhaust(carInfo.getEnginedesc());

+ 1 - 1
src/main/java/com/ydtech/modules/inv/controller/InvAccountController.java

@@ -107,7 +107,7 @@ public class InvAccountController {
     @PostMapping("insertAccount")
     public HttpResult insertInsAccount(@RequestBody InvAccount invAccount) {
         if (invAccountService.save(invAccount)) {
-            return HttpResult.ok();
+            return HttpResult.ok(invAccount);
         } else {
             return HttpResult.error();
         }

+ 1 - 1
src/main/java/com/ydtech/modules/order/components/chengtai/ChengTaiRequestApiComponents.java

@@ -211,7 +211,7 @@ public class ChengTaiRequestApiComponents {
      */
     private void verificationResponseCode(String responseCode, boolean flag, String responseMsg) {
         if (!flag){
-            throw new SystemException("验签失败");
+            throw new SystemException(responseMsg);
         }
         if (!ResponseCode.R_000.getCode().equals(responseCode) && !responseMsg.contains("重复投保") && !responseMsg.contains("录入的校验码有误")) {
             throw new SystemException(responseMsg);

+ 3 - 3
src/main/java/com/ydtech/modules/order/entity/api/chengtai/constants/ImageTypeEnum.java

@@ -19,21 +19,21 @@ public enum ImageTypeEnum {
     }),
 
     IT_2("2", "车主身份证正面",new String[]{
-            InsuranceImageEnum.C02.getCode(),
+            InsuranceImageEnum.C02.getCode(), InsuranceImageEnum.Y02.getCode()
     }),
     IT_3("3", "车主身份证反面",new String[]{
             InsuranceImageEnum.D02.getCode(),
     }),
 
     IT_4("4", "投保人身份证正面",new String[]{
-            InsuranceImageEnum.C03.getCode(),
+            InsuranceImageEnum.C03.getCode(), InsuranceImageEnum.Y03.getCode()
     }),
     IT_5("5", "投保人身份证反面",new String[]{
             InsuranceImageEnum.D03.getCode(),
     }),
 
     IT_6("6", "被保人身份证正面",new String[]{
-            InsuranceImageEnum.C04.getCode(),
+            InsuranceImageEnum.C04.getCode(), InsuranceImageEnum.Y04.getCode()
     }),
     IT_7("7", "被保人身份证反面",new String[]{
             InsuranceImageEnum.D04.getCode(),

+ 2 - 2
src/main/java/com/ydtech/modules/order/entity/api/chengtai/request/InsurePremiumRequest.java

@@ -659,8 +659,8 @@ public class InsurePremiumRequest extends ChengTaiBaseRequest{
                 this.longTerm = "0";
             }else{
                 this.type = "2"; // 机构
-                this.identifyTypeCode = "3";
-                this.identifyTypeName = "营业执照";
+                this.identifyTypeCode = "4";
+                this.identifyTypeName = "统一社会信用代码";
                 this.identifyNumber = ownerInfo.getOrganizationCode();
             }
             this.isTerror = "0";

+ 2 - 2
src/main/java/com/ydtech/modules/order/entity/api/chengtai/request/SubmitVerifyRequest.java

@@ -100,7 +100,7 @@ public class SubmitVerifyRequest extends ChengTaiBaseRequest{
             CustomerInfoVo applyInfo = JSON.toJavaObject(insOrders.getApplyinfo(),CustomerInfoVo.class);
             if("0".equals(applyInfo.getProperty())){
                 this.type = "2";
-                this.identifyTypeCode = "1";
+                this.identifyTypeCode = "4";
                 this.identifyNumber = applyInfo.getOrganizationCode();
                 this.organizationCode = applyInfo.getOrganizationCode();
                 this.tel = applyInfo.getMobile();
@@ -177,7 +177,7 @@ public class SubmitVerifyRequest extends ChengTaiBaseRequest{
             CustomerInfoVo insureInfo = JSON.toJavaObject(insOrders.getInsureinfo(),CustomerInfoVo.class);
             if("0".equals(insureInfo.getProperty())){
                 this.type = "2";
-                this.identifyTypeCode = "1";
+                this.identifyTypeCode = "4";
                 this.identifyNumber = insureInfo.getOrganizationCode();
                 this.organizationCode = insureInfo.getOrganizationCode();
                 this.tel = insureInfo.getMobile();

+ 17 - 9
src/main/java/com/ydtech/modules/order/entity/api/chengtai/request/UploadFileRequest.java

@@ -46,20 +46,28 @@ public class UploadFileRequest extends ChengTaiBaseRequest{
             if(contains){
                 this.imageType = imageTypeEnum.getCode();
                 this.fileList = Arrays.asList(new FileListDTO(insTaskImagesBase64, imageTypeEnum));
-                if(InsuranceImageEnum.C01.getCode().equals(this.imageType)
-                        || InsuranceImageEnum.D01.getCode().equals(this.imageType)
-                        || InsuranceImageEnum.C02.getCode().equals(this.imageType)
-                        || InsuranceImageEnum.D02.getCode().equals(this.imageType)
-                ){
+                if(InsuranceImageEnum.C01.getCode().equals(this.imageType)){
                     this.imageObjType = "1";
-                }else if(InsuranceImageEnum.C03.getCode().equals(this.imageType)
-                        || InsuranceImageEnum.D03.getCode().equals(this.imageType)
+                }else if(InsuranceImageEnum.D01.getCode().equals(this.imageType)){
+                    this.imageObjType = "11";
+                }else if(InsuranceImageEnum.C02.getCode().equals(this.imageType)
+                    || InsuranceImageEnum.Y02.getCode().equals(this.imageType)
                 ){
                     this.imageObjType = "2";
+                } else if(InsuranceImageEnum.D02.getCode().equals(this.imageType)){
+                    this.imageObjType = "3";
+                } else if(InsuranceImageEnum.C03.getCode().equals(this.imageType)
+                        || InsuranceImageEnum.Y03.getCode().equals(this.imageType)
+                ){
+                    this.imageObjType = "4";
+                } else if(InsuranceImageEnum.D03.getCode().equals(this.imageType)){
+                    this.imageObjType = "5";
                 } else if(InsuranceImageEnum.C04.getCode().equals(this.imageType)
-                        || InsuranceImageEnum.D04.getCode().equals(this.imageType)
+                        || InsuranceImageEnum.Y04.getCode().equals(this.imageType)
                 ){
-                    this.imageObjType = "3";
+                    this.imageObjType = "6";
+                } else if(InsuranceImageEnum.D04.getCode().equals(this.imageType)){
+                    this.imageObjType = "7";
                 }
                 break;
             }

+ 6 - 0
src/main/java/com/ydtech/modules/order/entity/vo/InsOrdersEditingVo.java

@@ -217,6 +217,9 @@ public class InsOrdersEditingVo extends InsOrders implements Serializable {
         @ApiModelProperty("商业赔付率")
         private double syLossRation;
 
+        @ApiModelProperty("交商合并经营成本率")
+        private double mergeCostRate;
+
 
         /**
          * 紫金能源车(鼎然-车辆风险评分  add by hxl 2024-04-09
@@ -324,6 +327,9 @@ public class InsOrdersEditingVo extends InsOrders implements Serializable {
             if(!Objects.isNull(insAreaCompany.getApiType())) {
                 this.apiType = insAreaCompany.getApiType().toString();
             }
+            if (insAreaCompany.getMergeCostRate() != null) {
+                this.mergeCostRate = insAreaCompany.getMergeCostRate();
+            }
         }
     }
 

+ 3 - 0
src/main/java/com/ydtech/modules/order/entity/vo/VehicleAndVesselTax.java

@@ -48,4 +48,7 @@ public class VehicleAndVesselTax implements Serializable {
     @ApiModelProperty("车船税标志 1-正常交税; 2-免税; 3-减税; 4-完税")
     private String taxRelifFlag;
 
+    @ApiModelProperty("组织机构代码")
+    private String organizationCode;
+
 }

+ 4 - 0
src/main/java/com/ydtech/modules/order/entity/vo/ya/YaExtendInfoDto.java

@@ -83,6 +83,9 @@ public class YaExtendInfoDto implements Serializable {
     @ApiModelProperty("商业出险次数")
     private String syClaims;
 
+    @ApiModelProperty("交商合并经营成本率")
+    private Double mergeCostRate;
+
     /**
      * 临时增加
      *
@@ -128,6 +131,7 @@ public class YaExtendInfoDto implements Serializable {
         // 出险次数
         this.jqClaims = insAreaCompany.getJqClaims();
         this.syClaims = insAreaCompany.getSyClaims();
+        this.mergeCostRate = insAreaCompany.getMergeCostRate();
     }
 
 }

+ 71 - 61
src/main/java/com/ydtech/modules/order/service/impl/YangGuangOrderApiServiceImpl.java

@@ -41,10 +41,8 @@ import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
 import com.ydtech.modules.protocol.utils.AssertionUtils;
 import com.ydtech.utils.CalculateUtils;
 import com.ydtech.utils.StringUtils;
-import com.ydtech.utils.baidu.FileUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.bcel.generic.LSTORE;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
@@ -135,77 +133,71 @@ public class YangGuangOrderApiServiceImpl implements YangGuangOrderApiService {
         yangGuangAccuracyCalculateRequest.setInfotransNo(yangGuangQueryVehicleModelResponse.getInfotransNo());
         YangGuangAccuracyCalculateResponse yangGuangAccuracyCalculateResponse = yangGuangRequestApiComponents.accuracyCalculaye(yangGuangAccuracyCalculateRequest);
         // 如果发生重复投保 将返回的终保日期带入起保日期重新报价
-        if (yangGuangAccuracyCalculateResponse.getErrorMessage().contains("重复投保")) {
-            // 定义正则表达式来匹配终保日期的格式
-            Pattern pattern = Pattern.compile("终保日期 (\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2})");
-            Matcher matcher = pattern.matcher(yangGuangAccuracyCalculateResponse.getErrorMessage());
-            if (matcher.find()) {
-                // 获取响应中重复投保的终保日期
-                String endDate = matcher.group(1);
-                DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
-                DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-
-                LocalDateTime dateTime = LocalDateTime.parse(endDate, inputFormatter);
-                String newDateStr = dateTime.format(outputFormatter);
-                YangGuangAccuracyCalculateRequest yangGuangAccuracyCalculateRequestRe = new YangGuangAccuracyCalculateRequest(quoteInfoVo, purchasePrice, carModelList1, riskList.get(0),newDateStr,ygConfigureParameters,quoteVo);
-                yangGuangAccuracyCalculateRequestRe.setInfotransNo(yangGuangQueryVehicleModelResponse.getInfotransNo());
-                YangGuangAccuracyCalculateResponse yangGuangAccuracyCalculateResponseRe = yangGuangRequestApiComponents.accuracyCalculaye(yangGuangAccuracyCalculateRequestRe);
-                if (insOrders.getProductid().equals("034001") || insOrders.getProductid().equals("0330034001") || insOrders.getProductid().equals("0330034002")) {
-                    if (yangGuangAccuracyCalculateResponseRe.getErrorCode().equals("0")) {
-                        YangGuangAccuracyCalculateResponse.itemcar itemcar = yangGuangAccuracyCalculateResponseRe.getItemcar();
-                        String actualValue = itemcar.getActualValue();
-                        YangGuangAccuracyCalculateRequest yangGuangAccuracyCalculateRequest1 = new YangGuangAccuracyCalculateRequest(quoteInfoVo, actualValue, carModelList1, riskList.get(0),newDateStr,ygConfigureParameters,quoteVo);
-                        yangGuangAccuracyCalculateRequest1.setInfotransNo(yangGuangQueryVehicleModelResponse.getInfotransNo());
-                        YangGuangAccuracyCalculateResponse yangGuangAccuracyCalculateResponse1 = yangGuangRequestApiComponents.accuracyCalculaye(yangGuangAccuracyCalculateRequest1);
-                        boolean isEnergy = carInfo.isNewEnergy();
-
-                        if (!yangGuangAccuracyCalculateResponse1.getErrorCode().equals("0")) {
-                        InsOrders order = insOrdersService.getById(quoteInfoVo.getOrderNo());
-                        InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.QUOTE_FAILED;
-                            if (yangGuangAccuracyCalculateResponse1.getErrorMessage().contains("重复投保")) {
-                            insOrderStatusEnum = InsOrderStatusEnum.REPEAT_INSURE;
-                            }
-                        insOrdersService.responseFailedOrder(quoteVo,ptlAgreementAttribution, order, yangGuangAccuracyCalculateResponse1.getErrorMessage(),insOrderStatusEnum);
-                        throw new SystemException(yangGuangAccuracyCalculateResponse1.getErrorMessage());
-                        }
-                        // 处理数据
-                        QuoteRespVo quoteRespVo = getQuoteRespVo(yangGuangAccuracyCalculateResponse1, quoteInfoVo, quoteVo.getAccidentalDrivingVo(), isEnergy);
-
-                        // 设置核心报价车型
-                        quoteRespVo.setCoreModels(carModelList1.toCoreModelsVo());
-                        return responseOrder(yangGuangAccuracyCalculateResponse1, quoteRespVo, ptlAgreementAttribution, quoteInfoVo.getOrderNo(),
-                                quoteVo.getAccidentalDrivingVo());
-                    } else {
-                        InsOrders order = insOrdersService.getById(quoteInfoVo.getOrderNo());
-                        InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.QUOTE_FAILED;
-                        if (yangGuangAccuracyCalculateResponse.getErrorMessage().contains("重复投保")) {
-                            insOrderStatusEnum = InsOrderStatusEnum.REPEAT_INSURE;
-                        }
-                        insOrdersService.responseFailedOrder(quoteVo,ptlAgreementAttribution, order, yangGuangAccuracyCalculateResponse.getErrorMessage(),insOrderStatusEnum);
-                        throw new SystemException(yangGuangAccuracyCalculateResponse.getErrorMessage());
-                    }
-                } else {
+        String endDate = extractEndDate(yangGuangAccuracyCalculateResponse);
+        if (endDate != null) {
+            DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
+            DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+            LocalDateTime dateTime = LocalDateTime.parse(endDate, inputFormatter);
+            String newDateStr = dateTime.format(outputFormatter);
+            YangGuangAccuracyCalculateRequest yangGuangAccuracyCalculateRequestRe = new YangGuangAccuracyCalculateRequest(quoteInfoVo, purchasePrice, carModelList1, riskList.get(0),newDateStr,ygConfigureParameters,quoteVo);
+            yangGuangAccuracyCalculateRequestRe.setInfotransNo(yangGuangQueryVehicleModelResponse.getInfotransNo());
+            YangGuangAccuracyCalculateResponse yangGuangAccuracyCalculateResponseRe = yangGuangRequestApiComponents.accuracyCalculaye(yangGuangAccuracyCalculateRequestRe);
+            if (insOrders.getProductid().equals("034001") || insOrders.getProductid().equals("0330034001") || insOrders.getProductid().equals("0330034002")) {
+                if (yangGuangAccuracyCalculateResponseRe.getErrorCode().equals("0")) {
+                    YangGuangAccuracyCalculateResponse.itemcar itemcar = yangGuangAccuracyCalculateResponseRe.getItemcar();
+                    String actualValue = itemcar.getActualValue();
+                    YangGuangAccuracyCalculateRequest yangGuangAccuracyCalculateRequest1 = new YangGuangAccuracyCalculateRequest(quoteInfoVo, actualValue, carModelList1, riskList.get(0),newDateStr,ygConfigureParameters,quoteVo);
+                    yangGuangAccuracyCalculateRequest1.setInfotransNo(yangGuangQueryVehicleModelResponse.getInfotransNo());
+                    YangGuangAccuracyCalculateResponse yangGuangAccuracyCalculateResponse1 = yangGuangRequestApiComponents.accuracyCalculaye(yangGuangAccuracyCalculateRequest1);
                     boolean isEnergy = carInfo.isNewEnergy();
-                    if (!yangGuangAccuracyCalculateResponse.getErrorCode().equals("0")) {
-                        QuoteRespVo resp  = new QuoteRespVo();
-                        InsOrders order = insOrdersService.getById(quoteInfoVo.getOrderNo());
-                        InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.QUOTE_FAILED;
-                        if (yangGuangAccuracyCalculateResponse.getErrorMessage().contains("重复投保")) {
+
+                    if (!yangGuangAccuracyCalculateResponse1.getErrorCode().equals("0")) {
+                    InsOrders order = insOrdersService.getById(quoteInfoVo.getOrderNo());
+                    InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.QUOTE_FAILED;
+                        if (yangGuangAccuracyCalculateResponse1.getErrorMessage().contains("重复投保")) {
                         insOrderStatusEnum = InsOrderStatusEnum.REPEAT_INSURE;
                         }
-                        insOrdersService.responseFailedOrder(quoteVo,ptlAgreementAttribution, order, yangGuangAccuracyCalculateResponse.getErrorMessage(),insOrderStatusEnum);
-                        throw new SystemException(yangGuangAccuracyCalculateResponse.getErrorMessage());
+                    insOrdersService.responseFailedOrder(quoteVo,ptlAgreementAttribution, order, yangGuangAccuracyCalculateResponse1.getErrorMessage(),insOrderStatusEnum);
+                    throw new SystemException(yangGuangAccuracyCalculateResponse1.getErrorMessage());
                     }
                     // 处理数据
-                    QuoteRespVo quoteRespVo = getQuoteRespVo(yangGuangAccuracyCalculateResponse, quoteInfoVo, quoteVo.getAccidentalDrivingVo(), isEnergy);
+                    QuoteRespVo quoteRespVo = getQuoteRespVo(yangGuangAccuracyCalculateResponse1, quoteInfoVo, quoteVo.getAccidentalDrivingVo(), isEnergy);
 
                     // 设置核心报价车型
                     quoteRespVo.setCoreModels(carModelList1.toCoreModelsVo());
-                    return responseOrder(yangGuangAccuracyCalculateResponse, quoteRespVo, ptlAgreementAttribution, quoteInfoVo.getOrderNo(),
+                    return responseOrder(yangGuangAccuracyCalculateResponse1, quoteRespVo, ptlAgreementAttribution, quoteInfoVo.getOrderNo(),
                             quoteVo.getAccidentalDrivingVo());
+                } else {
+                    InsOrders order = insOrdersService.getById(quoteInfoVo.getOrderNo());
+                    InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.QUOTE_FAILED;
+                    if (yangGuangAccuracyCalculateResponse.getErrorMessage().contains("重复投保")) {
+                        insOrderStatusEnum = InsOrderStatusEnum.REPEAT_INSURE;
+                    }
+                    insOrdersService.responseFailedOrder(quoteVo,ptlAgreementAttribution, order, yangGuangAccuracyCalculateResponse.getErrorMessage(),insOrderStatusEnum);
+                    throw new SystemException(yangGuangAccuracyCalculateResponse.getErrorMessage());
                 }
+            } else {
+                boolean isEnergy = carInfo.isNewEnergy();
+                if (!yangGuangAccuracyCalculateResponseRe.getErrorCode().equals("0")) {
+                    InsOrders order = insOrdersService.getById(quoteInfoVo.getOrderNo());
+                    InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.QUOTE_FAILED;
+                    if (yangGuangAccuracyCalculateResponseRe.getErrorMessage().contains("重复投保")) {
+                    insOrderStatusEnum = InsOrderStatusEnum.REPEAT_INSURE;
+                    }
+                    insOrdersService.responseFailedOrder(quoteVo,ptlAgreementAttribution, order, yangGuangAccuracyCalculateResponseRe.getErrorMessage(),insOrderStatusEnum);
+                    throw new SystemException(yangGuangAccuracyCalculateResponseRe.getErrorMessage());
+                }
+                // 处理数据
+                QuoteRespVo quoteRespVo = getQuoteRespVo(yangGuangAccuracyCalculateResponseRe, quoteInfoVo, quoteVo.getAccidentalDrivingVo(), isEnergy);
+
+                // 设置核心报价车型
+                quoteRespVo.setCoreModels(carModelList1.toCoreModelsVo());
+                return responseOrder(yangGuangAccuracyCalculateResponseRe, quoteRespVo, ptlAgreementAttribution, quoteInfoVo.getOrderNo(),
+                        quoteVo.getAccidentalDrivingVo());
             }
         }
+        // 单商 交三 交商 需要获取车辆actualValue 进行二次报价
         if (insOrders.getProductid().equals("034001") || insOrders.getProductid().equals("0330034001") || insOrders.getProductid().equals("0330034002")) {
             if (yangGuangAccuracyCalculateResponse.getErrorCode().equals("0")) {
                 YangGuangAccuracyCalculateResponse.itemcar itemcar = yangGuangAccuracyCalculateResponse.getItemcar();
@@ -740,6 +732,7 @@ public class YangGuangOrderApiServiceImpl implements YangGuangOrderApiService {
             quoteRespVo.setSyScore(discount.getMarkingnobcBI() != null ? discount.getMarkingnobcBI() : "");
             quoteRespVo.setJqLossRation(Double.parseDouble(discount.getFinalmarkingnoCi() != null ? discount.getFinalmarkingnoCi() : "0.00"));
             quoteRespVo.setSyLossRation(Double.parseDouble(discount.getFinalmarkingnoBi() != null ? discount.getFinalmarkingnoBi() : "0.00"));
+            quoteRespVo.setMergeCostRate(Double.parseDouble(yangGuangAccuracyCalculateResponse.getVascostmarginbc() != null ?yangGuangAccuracyCalculateResponse.getVascostmarginbc() : "0.00"));
         }
 
         List<QuoteKindRespVo> kindList1 = new ArrayList<>();
@@ -841,4 +834,21 @@ public class YangGuangOrderApiServiceImpl implements YangGuangOrderApiService {
         quoteRespVo.setCompanyId(insAreaCompany.getId());
         return HttpResult.ok("报价成功", quoteRespVo);
     }
+
+    // 提取从响应中获取终保日期的逻辑为方法
+    private String extractEndDate(YangGuangAccuracyCalculateResponse response) {
+        String targetText = response.getErrorMessage();
+        if (!targetText.contains("重复投保")) {
+            targetText = response.getRemarkCi();
+            if (!targetText.contains("重复投保")) {
+                targetText = response.getRemarkBi();
+            }
+        }
+        Pattern pattern = Pattern.compile("终保日期 (\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2})");
+        Matcher matcher = pattern.matcher(targetText);
+        if (matcher.find()) {
+            return matcher.group(1);
+        }
+        return null;
+    }
 }

+ 4 - 2
src/main/java/com/ydtech/modules/scheme/controller/PtlSchemeController.java

@@ -213,9 +213,11 @@ public class PtlSchemeController extends BaseController {
     }
 
     @ApiOperation(value = "规则过滤保险公司")
-    @Validated
+//    @Validated
     @PostMapping("/ruleFilterCompany")
-    public HttpResult ruleFilterCompany(@Validated @RequestBody RuleFilterVo ruleFilterVo){
+    public HttpResult ruleFilterCompany(
+//            @Validated
+                                            @RequestBody RuleFilterVo ruleFilterVo){
         String userId = getUserId();
         if(!Objects.isNull(ruleFilterVo.getUserId()) && !ruleFilterVo.getUserId().equals("")){
             userId = ruleFilterVo.getUserId();

+ 3 - 1
src/main/resources/mapper/modules/order/InsOrdersMapper.xml

@@ -133,6 +133,7 @@
         <result property="signingTime" column="signingTime" jdbcType="TIMESTAMP"/>
         <result property="payDate" column="payDate" jdbcType="TIMESTAMP"/>
         <result property="partnerCompaniesName" column="partnerCompaniesName" jdbcType="VARCHAR"/>
+        <result property="mergecostrate" column="mergecostrate" jdbcType="DOUBLE"/>
 
     </resultMap>
 
@@ -251,7 +252,8 @@
                iac.pay_date  as payDate,
                iac.agreement_id,
                o.entry_status,
-               eic.namesimple as partnerCompaniesName
+               eic.namesimple as partnerCompaniesName,
+               iac.merge_cost_rate
         from ins_orders as o
                  join ins_area_company iac on o.orderno = iac.orderno
                  LEFT JOIN ptl_agreement pa ON pa.id = iac.agreement_id