فهرست منبع

国任报价相关

shenweidong 1 سال پیش
والد
کامیت
71db5b589d
25فایلهای تغییر یافته به همراه1650 افزوده شده و 264 حذف شده
  1. 20 0
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/base/PolicyPrintType.java
  2. 101 0
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/build/GuoRenApiQuoteResultsVoBuild.java
  3. 5 6
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/component/GuoRenRequestApiComponent.java
  4. 31 0
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/constant/enums/GuoRenRiskCode.java
  5. 43 0
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/constant/enums/TypeVehicleMapping.java
  6. 10 0
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/GuoRenApiOrder.java
  7. 144 20
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/GuoRenConfigureParameters.java
  8. 27 29
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Request/CarPriceRequest.java
  9. 548 0
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Request/NonAutoInsOrderRequest.java
  10. 29 0
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Request/OrderStateRequest.java
  11. 3 3
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Request/PayRequest.java
  12. 29 0
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Request/SpecialAgreementRequest.java
  13. 3 3
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Request/SubmitAuditRequest.java
  14. 3 4
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Request/VinQueryRequest.java
  15. 111 0
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Response/ChannelInfoResponse.java
  16. 43 0
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Response/NonAutoInsOrderResponse.java
  17. 65 0
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Response/OrderStateResponse.java
  18. 27 0
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Response/PremiumResponse.java
  19. 63 0
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Response/SpecialAgreementResponse.java
  20. 10 0
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Response/SubmitAuditResponse.java
  21. 0 167
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/dto/ChannelInfoDTO.java
  22. 39 0
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/vo/GuoRenAccidentalDrivingVo.java
  23. 10 0
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/vo/GuoRenSpecialAgreementVo.java
  24. 285 30
      tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/service/Impl/GuoRenApiRequestImpl.java
  25. 1 2
      tenant/insurance/quotation-huatai/src/main/java/com/jzg/quote/huatai/api/component/HuiTaiUploadImageComponent.java

+ 20 - 0
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/constant/enums/base/PolicyPrintType.java

@@ -0,0 +1,20 @@
+package com.jzg.quotation.commons.constant.enums.base;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @description: 保单打印类型
+ * @author: shenwd
+ * @date: 2025/3/18 10:41
+ **/
+@AllArgsConstructor
+@Getter
+public enum PolicyPrintType {
+    PPT_1("1", "标志"),
+    PPT_2("2", "保单");
+
+    private final String code;
+
+    private final String desc;
+}

+ 101 - 0
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/build/GuoRenApiQuoteResultsVoBuild.java

@@ -0,0 +1,101 @@
+package com.jzg.quote.guoren.api.build;
+
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
+import com.jzg.quotation.commons.entity.vo.quote.KindInfoVo;
+import com.jzg.quotation.commons.entity.vo.quote.RiskInfoVo;
+import com.jzg.quote.guoren.api.constant.enums.GuoRenRiskCode;
+import com.jzg.quote.guoren.api.entity.Response.PremiumResponse;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @description: 处理国任财险报价返回数据
+ * @author: shenwd
+ * @date: 2025/3/17 10:33
+ **/
+public class GuoRenApiQuoteResultsVoBuild {
+    public static QuoteResultsVo buildQuoteResultsVo(QuoteVo quoteVo, PremiumResponse premiumResponse) {
+        QuoteResultsVo quoteResultsVo = new QuoteResultsVo();
+        quoteResultsVo.setOrdersNo(quoteVo.getOrder().getOrdersNo());
+        // 交强险
+        quoteResultsVo.setCiRiskInfoVo(buildCiRiskInfoVo(premiumResponse));
+        // 商业险
+        quoteResultsVo.setBiRiskInfoVo(buildBiRiskInfoVo(premiumResponse));
+        // 商业险险种信息
+        List<KindInfoVo> kindInfoVo = buildKindInfoVo(quoteVo.getKindInfoVo(), premiumResponse.getData().getItemVOList());
+        quoteResultsVo.setKindInfoVo(kindInfoVo);
+
+        // 交强保费 车船税 商业保费
+        buildPremium(quoteResultsVo, premiumResponse);
+        return quoteResultsVo;
+    }
+
+    /**
+     * 处理商业险数据
+     * @param premiumResponse
+     * @return
+     */
+    public static RiskInfoVo buildBiRiskInfoVo(PremiumResponse premiumResponse) {
+        RiskInfoVo riskInfoVo = new RiskInfoVo();
+        riskInfoVo.setRiskCode(GuoRenRiskCode.R_0518.getCode());
+        riskInfoVo.setStartDate(premiumResponse.getData().getBiStartDate());
+        riskInfoVo.setEndDate(premiumResponse.getData().getBiEndDate());
+
+        return riskInfoVo;
+    }
+
+    /**
+     * 处理交强险数据
+     * @param premiumResponse
+     * @return
+     */
+    public static RiskInfoVo buildCiRiskInfoVo(PremiumResponse premiumResponse) {
+        RiskInfoVo riskInfoVo = new RiskInfoVo();
+        riskInfoVo.setRiskCode(GuoRenRiskCode.R_0507.getCode());
+        riskInfoVo.setStartDate(premiumResponse.getData().getCiStartDate());
+        riskInfoVo.setEndDate(premiumResponse.getData().getCiEndDate());
+
+        return riskInfoVo;
+    }
+
+    /**
+     * 处理商业险信息
+     * @param kindInfoVo
+     * @param itemVOListDTOS
+     * @return
+     */
+    private static List<KindInfoVo> buildKindInfoVo(List<KindInfoVo> kindInfoVo, List<PremiumResponse.DataDTO.ItemVOListDTO> itemVOListDTOS) {
+        Map<String, PremiumResponse.DataDTO.ItemVOListDTO> collect = itemVOListDTOS.stream()
+                .collect(Collectors.toMap(PremiumResponse.DataDTO.ItemVOListDTO::getKindCode, x -> x));
+        kindInfoVo.forEach(kind -> {
+            PremiumResponse.DataDTO.ItemVOListDTO itemVOListDTO = collect.get(kind.getKindCode());
+            if (itemVOListDTO.getKindCode().equals(kind.getKindCode())) {
+                kind.setAmount(String.valueOf(itemVOListDTO.getAmount()));//设置保额
+                kind.setPremium(String.valueOf(itemVOListDTO.getPremium()));//设置保费
+                kind.setUnitAmount(String.valueOf(itemVOListDTO.getUnitAmount()));//设置每座保额
+                kind.setQuantity(String.valueOf(itemVOListDTO.getQuantity()));//设置份数
+            }
+        });
+        return kindInfoVo;
+    }
+
+    /**
+     * 设置商业险,交强险保费
+     * @param quoteResultsVo
+     * @param premiumResponse
+     */
+    private static void buildPremium(QuoteResultsVo quoteResultsVo, PremiumResponse premiumResponse) {
+        // 设置交强险保费
+        quoteResultsVo.setCiPremium(String.valueOf(premiumResponse.getData().getSumPremiumCI()));
+        // 设置车船税
+        quoteResultsVo.setVvTax(String.valueOf(premiumResponse.getData().getSumPayTax()));
+        // 设置商业险保费
+        quoteResultsVo.setBiPremium(String.valueOf(premiumResponse.getData().getSumPremiumBI()));
+        // 设置非车险(驾意险)保费,暂时无数据
+
+    }
+
+}

+ 5 - 6
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/component/GuoRenRequestApiComponent.java

@@ -12,9 +12,9 @@ import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
 import com.jzg.quote.guoren.api.constant.enums.PlatformInterfaceCode;
 import com.jzg.quote.guoren.api.constant.enums.Response;
 import com.jzg.quote.guoren.api.entity.GuoRenApiOrder;
+import com.jzg.quote.guoren.api.entity.GuoRenConfigureParameters;
 import com.jzg.quote.guoren.api.entity.Request.*;
 import com.jzg.quote.guoren.api.entity.Response.*;
-import com.jzg.quote.guoren.api.entity.dto.ChannelInfoDTO;
 import com.jzg.quote.guoren.api.entity.dto.DrivingInsuranceDTO;
 import com.jzg.quote.guoren.api.entity.dto.RequestDTO;
 import com.jzg.quote.guoren.api.entity.dto.ResponseDTO;
@@ -28,7 +28,6 @@ import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.lang.Nullable;
 import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -109,9 +108,9 @@ public class GuoRenRequestApiComponent {
     /**
      * 提交核保
      */
-    public SubmitAuditResponse submitAudit(GuoRenApiOrder guoRenApiOrder, ChannelInfoDTO channelInfo) {
+    public SubmitAuditResponse submitAudit(GuoRenApiOrder guoRenApiOrder, GuoRenConfigureParameters parameters) {
         //构造请求参数
-        SubmitAuditRequest req = SubmitAuditRequest.buildParam(guoRenApiOrder, channelInfo);
+        SubmitAuditRequest req = SubmitAuditRequest.buildParam(guoRenApiOrder, parameters);
         return request(req, PlatformInterfaceCode.API_IIRBT00007, SubmitAuditResponse.class);
     }
 
@@ -149,9 +148,9 @@ public class GuoRenRequestApiComponent {
     /**
      * 支付获取支付url
      */
-    public PayResponse.DataDTO getPaid(GuoRenApiOrder guoRenApiOrder, ChannelInfoDTO channelInfo) {
+    public PayResponse.DataDTO getPaid(GuoRenApiOrder guoRenApiOrder, GuoRenConfigureParameters parameters) {
         //构造请求参数
-        PayRequest req = PayRequest.buildParam(guoRenApiOrder, properties.getRedirectUrl(), channelInfo);
+        PayRequest req = PayRequest.buildParam(guoRenApiOrder, properties.getRedirectUrl(), parameters);
         PayResponse payResp = request(req, PlatformInterfaceCode.API_IIRBT00008, PayResponse.class);
         if (null != payResp) {
             return payResp.getData();

+ 31 - 0
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/constant/enums/GuoRenRiskCode.java

@@ -0,0 +1,31 @@
+package com.jzg.quote.guoren.api.constant.enums;
+
+import com.jzg.commons.constants.InsuranceRisk;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+* @description:
+* @author: shenwd
+* @date: 2025/3/17 09:27
+**/
+@AllArgsConstructor
+@Getter
+public enum GuoRenRiskCode {
+    R_0507("0507", "交强"),
+    R_0518("0518", "商业");
+
+    private final String code;
+
+    private final String desc;
+
+
+    public static String toInsuranceRisk(String code) {
+        if (InsuranceRisk.TRAFFIC.getCode().equals(code)) {
+            return R_0507.getCode();
+        } else if (InsuranceRisk.BUSINESS.getCode().equals(code)) {
+            return R_0518.getCode();
+        }
+        return "";
+    }
+}

+ 43 - 0
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/constant/enums/TypeVehicleMapping.java

@@ -0,0 +1,43 @@
+package com.jzg.quote.guoren.api.constant.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.Getter;
+
+/**
+* @description: todo
+* @author: shenwd
+* @date: 2025/3/16 18:28
+**/
+@Getter
+@AllArgsConstructor
+public enum TypeVehicleMapping {
+
+    TM_01("01", "营业出租租赁", "364003001", "374007"),
+    TM_02("02", "营业城市公交", "364003002", "374008"),
+    TM_03("03", "营业公路客运", "364003003", "374009"),
+    TM_04("04", "营业货运", "364004002", "374010"),
+    TM_05("05", "家庭自用", "364001001", "374001"),
+    TM_06("06", "非营业机关", "364002001", "374003"),
+    TM_07("07", "非营业企业", "364002002", "374002"),
+    TM_08("08", "非营业货运", "364004001", "374005");
+
+    private final String code;
+
+    private final String desc;
+
+    // 交强
+    private final String cUsageCdeJq;
+
+    // 商业
+    private final String cUsageCdeSy;
+
+    public static String getByCode(String code){
+        for (TypeVehicleMapping typeVehicleMapping : values()) {
+            if (typeVehicleMapping.getCode().equals(code)) {
+                return typeVehicleMapping.getDesc();
+            }
+        }
+        return null;
+    }
+}

+ 10 - 0
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/GuoRenApiOrder.java

@@ -51,4 +51,14 @@ public class GuoRenApiOrder {
      * 国任财险 交强险保费
      */
     private BigDecimal jqPremium;
+
+    /**
+     * 国任财险 交强险保单号
+     */
+    private String jqPolicyNo;
+
+    /**
+     * 国任财险 商业险保单号
+     */
+    private String syPolicyNo;
 }

+ 144 - 20
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/GuoRenConfigureParameters.java

@@ -18,24 +18,148 @@ public class GuoRenConfigureParameters implements ConfigureParameters {
     @Serial
     private static final long serialVersionUID = -7246413263114229371L;
 
-    private String baseUrl;
-
-    private String uploadUrl;
-
-    private String redirectUrl;
-
-    // 保单
-    private String policyUrl;
-    // 标志
-    private String policyFlagUrl;
-    // 服务代码
-    private String serveCode;
-    // 渠道编码
-    private String channelCode;
-    // 访问账号
-    private String interfaceUserCode;
-    // 访问口令
-    private String interfacePwd;
-    // 环境类型 测试环境填”Y”;生产环境填”N”
-    private String iftest;
+    /**
+     * 地区代码
+     */
+    @JsonProperty(value = "areaCode")
+    @JSONField(name = "areaCode")
+    private String areaCode;
+
+    /**
+     * 地区名称
+     */
+    @JsonProperty(value = "areaName")
+    @JSONField(name = "areaName")
+    private String areaName;
+    /**
+     * 归属机构代码
+     */
+    @JsonProperty(value = "comCode")
+    @JSONField(name = "comCode")
+    private String comCode;
+
+    /**
+     * 归属机构名称
+     */
+    @JsonProperty(value = "comName")
+    @JSONField(name = "comName")
+    private String comName;
+
+    @JsonProperty(value = "businessNature")
+    @JSONField(name = "businessNature")
+    private String businessNature;
+
+    /**
+     * 归属业务员代码
+     */
+    @JsonProperty(value = "handlerCode")
+    @JSONField(name = "handlerCode")
+    private String handlerCode;
+
+    /**
+     * 代理代码
+     */
+    @JsonProperty(value = "agentCode")
+    @JSONField(name = "agentCode")
+    private String agentCode;
+
+    @JsonProperty(value = "agreementNo")
+    @JSONField(name = "agreementNo")
+    private String agreementNo;
+
+    /**
+     * 决策单元代码
+     */
+    @JsonProperty(value = "unitMaintenanceCode")
+    @JSONField(name = "unitMaintenanceCode")
+    private String unitMaintenanceCode;
+
+    /**
+     * 决策单元大类代码
+     */
+    @JsonProperty(value = "unitmainTenanceType1")
+    @JSONField(name = "unitmainTenanceType1")
+    private String unitmainTenanceType1;
+
+    /**
+     * 决策单元小类代码
+     */
+    @JsonProperty(value = "unitmainTenanceType2")
+    @JSONField(name = "unitmainTenanceType2")
+    private String unitmainTenanceType2;
+
+    /**
+     * 决策单元名称
+     */
+    @JsonProperty(value = "unitMaintenanceName")
+    @JSONField(name = "unitMaintenanceName")
+    private String unitMaintenanceName;
+
+    /**
+     * 决策单元大类名称
+     */
+    @JsonProperty(value = "unitmainTenanceType1Name")
+    @JSONField(name = "unitmainTenanceType1Name")
+    private String unitmainTenanceType1Name;
+
+    /**
+     * 决策单元小类名称
+     */
+    @JsonProperty(value = "unitmainTenanceType2Name")
+    @JSONField(name = "unitmainTenanceType2Name")
+    private String unitmainTenanceType2Name;
+
+    /**
+     * 部门代码
+     */
+    @JsonProperty(value = "channelTypeOne")
+    @JSONField(name = "channelTypeOne")
+    private String channelTypeOne;
+
+    /**
+     * 部门名称
+     */
+    @JsonProperty(value = "channelTypeOneName")
+    @JSONField(name = "channelTypeOneName")
+    private String channelTypeOneName;
+
+    /**
+     * 渠道大类代码
+     */
+    @JsonProperty(value = "channelTypeTwo")
+    @JSONField(name = "channelTypeTwo")
+    private String channelTypeTwo;
+
+    /**
+     * 渠道大类名称
+     */
+    @JsonProperty(value = "channelTypeTwoName")
+    @JSONField(name = "channelTypeTwoName")
+    private String channelTypeTwoName;
+
+    @JsonProperty(value = "upDateTime")
+    @JSONField(name = "upDateTime")
+    private String upDateTime;
+
+    /**
+     * 归属业务员名称
+     */
+    @JsonProperty(value = "handler1Name")
+    @JSONField(name = "handler1Name")
+    private String handler1Name;
+
+    @JsonProperty(value = "agentName")
+    @JSONField(name = "agentName")
+    private String agentName;
+
+    @JsonProperty(value = "deGentType")
+    @JSONField(name = "deGentType")
+    private String deGentType;
+
+    @JsonProperty(value = "saleGentType")
+    @JSONField(name = "saleGentType")
+    private String saleGentType;
+
+    //归属业务员名称
+    private String handlerName;
 }

+ 27 - 29
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Request/CarPriceRequest.java

@@ -12,13 +12,11 @@ import com.jzg.quotation.commons.entity.vo.quote.CarInfoVo;
 import com.jzg.quotation.commons.entity.vo.quote.CustomerInfoVo;
 import com.jzg.quotation.commons.entity.vo.quote.RiskInfoVo;
 import com.jzg.quote.guoren.api.constant.enums.*;
+import com.jzg.quote.guoren.api.entity.GuoRenConfigureParameters;
 import com.jzg.quote.guoren.api.entity.Response.VinQueryResponse;
-import com.jzg.quote.guoren.api.entity.dto.ChannelInfoDTO;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
-import java.util.List;
-
 /**
  * @description: 
  * @author: shenwd
@@ -48,7 +46,7 @@ public class CarPriceRequest {
     private CiDTO ci;
 
     @JsonIgnore
-    public static CarPriceRequest buildCarPriceParam(QuoteVo quoteVo, VinQueryResponse.DataDTO vinQ, ChannelInfoDTO channelInfo) {
+    public static CarPriceRequest buildCarPriceParam(QuoteVo quoteVo, VinQueryResponse.DataDTO vinQ, GuoRenConfigureParameters parameters) {
         CarInfoVo carInfo = quoteVo.getCarInfoVo();
         CustomerInfoVo ownerInfo = quoteVo.getOwnersInfo();
         //交强
@@ -57,31 +55,31 @@ public class CarPriceRequest {
         RiskInfoVo biRiskInfo = quoteVo.getBiRiskInfoVo();
         CarPriceRequest req = new CarPriceRequest();
         BcDTO bc = new BcDTO();
-        bc.setLoginComCode(channelInfo.getComCode());
+        bc.setLoginComCode(parameters.getComCode());
         /**
          *  主信息====================
          */
         BcDTO.PrpTmainDTO prpTmain = new BcDTO.PrpTmainDTO();
         //机构代码
-        prpTmain.setComCode(channelInfo.getComCode());
+        prpTmain.setComCode(parameters.getComCode());
         prpTmain.setArgueSolution("1");
 
 
-        prpTmain.setUnitMaintenanceName(channelInfo.getUnitMaintenanceName());
+        prpTmain.setUnitMaintenanceName(parameters.getUnitMaintenanceName());
         prpTmain.setBusinessNature("2");
         //渠道标志(我司提供)
         prpTmain.setActivityPlan("TQDL");
         //签单时间	signDate	字符串	Y	默认为投保当天
         prpTmain.setSignDate(DateUtil.today());
-        prpTmain.setHandlerCode(channelInfo.getHandlerCode());
-        prpTmain.setChanneltypeoneName(channelInfo.getChannelTypeOneName());
-        prpTmain.setUnitMaintenanceCode(channelInfo.getUnitMaintenanceCode());
-        prpTmain.setUnitmainTenanceType1(channelInfo.getUnitmainTenanceType1());
-        prpTmain.setUnitmainTenanceType2(channelInfo.getUnitmainTenanceType2());
-        prpTmain.setChanneltypetwoName(channelInfo.getChannelTypeTwoName());
-        prpTmain.setHandler1Code(channelInfo.getHandlerCode());
-        prpTmain.setComName(channelInfo.getComName());
-        prpTmain.setComCode(channelInfo.getComCode());
+        prpTmain.setHandlerCode(parameters.getHandlerCode());
+        prpTmain.setChanneltypeoneName(parameters.getChannelTypeOneName());
+        prpTmain.setUnitMaintenanceCode(parameters.getUnitMaintenanceCode());
+        prpTmain.setUnitmainTenanceType1(parameters.getUnitmainTenanceType1());
+        prpTmain.setUnitmainTenanceType2(parameters.getUnitmainTenanceType2());
+        prpTmain.setChanneltypetwoName(parameters.getChannelTypeTwoName());
+        prpTmain.setHandler1Code(parameters.getHandlerCode());
+        prpTmain.setComName(parameters.getComName());
+        prpTmain.setComCode(parameters.getComCode());
         prpTmain.setOperateDate(DateUtil.today());
         //起保日期      商业险起保日期,如果单交强,传交强起保日期
         prpTmain.setStartDate(biRiskInfo == null ? ciRiskInfo.getStartDate() : biRiskInfo.getStartDate());
@@ -89,16 +87,16 @@ public class CarPriceRequest {
         //购车发票日期
         prpTmain.setBusiness(carInfo.getIssueDate());
 
-        prpTmain.setAgentName(channelInfo.getAgentName());
-        prpTmain.setChanneltypetwoName(channelInfo.getChannelTypeTwoName());
-        prpTmain.setChanneltypeoneName(channelInfo.getChannelTypeOneName());
+        prpTmain.setAgentName(parameters.getAgentName());
+        prpTmain.setChanneltypetwoName(parameters.getChannelTypeTwoName());
+        prpTmain.setChanneltypeoneName(parameters.getChannelTypeOneName());
         //代理人
-        prpTmain.setAgentCode(channelInfo.getAgentCode());
-        prpTmain.setAgreementNo(channelInfo.getAgreementNo());
-        prpTmain.setUnitmainTenanceType2Name(channelInfo.getUnitmainTenanceType2Name());
-        prpTmain.setChanneltypeone(channelInfo.getChannelTypeOne());
-        prpTmain.setHandler1Name(channelInfo.getHandler1Name());
-        prpTmain.setChanneltypetwo(channelInfo.getChannelTypeTwo());
+        prpTmain.setAgentCode(parameters.getAgentCode());
+        prpTmain.setAgreementNo(parameters.getAgreementNo());
+        prpTmain.setUnitmainTenanceType2Name(parameters.getUnitmainTenanceType2Name());
+        prpTmain.setChanneltypeone(parameters.getChannelTypeOne());
+        prpTmain.setHandler1Name(parameters.getHandler1Name());
+        prpTmain.setChanneltypetwo(parameters.getChannelTypeTwo());
         /**
          *  车辆信息====================
          */
@@ -195,7 +193,7 @@ public class CarPriceRequest {
         bc.setPrpTmain(prpTmain);
         bc.setPrpTitemCar(prpTitemCar);
         //登录机构
-        bc.setLoginComCode(channelInfo.getComCode());
+        bc.setLoginComCode(parameters.getComCode());
 
         //保费计算折扣    0是第一次计算保费,1是价费联动,2是批折扣,默认0
         bc.setFeeandDiscountFlag("0");
@@ -207,10 +205,10 @@ public class CarPriceRequest {
         BasePartVoDTO basePartVo = new BasePartVoDTO();
         basePartVo.setEditType("EditType_ProposalInput");
         basePartVo.setInputType("34");
-        basePartVo.setLoginComCode(channelInfo.getComCode());
-        basePartVo.setLoginComCodeSub(channelInfo.getComCode().substring(0, 2));
+        basePartVo.setLoginComCode(parameters.getComCode());
+        basePartVo.setLoginComCodeSub(parameters.getComCode().substring(0, 2));
 //        basePartVo.setLoginRiskCode("0500");
-        basePartVo.setUserCode(channelInfo.getAgentCode());
+        basePartVo.setUserCode(parameters.getAgentCode());
 
         req.setBi(new BiDTO());
         req.setCi(new CiDTO());

+ 548 - 0
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Request/NonAutoInsOrderRequest.java

@@ -0,0 +1,548 @@
+package com.jzg.quote.guoren.api.entity.Request;
+
+import cn.hutool.core.date.DateUtil;
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.commons.util.StringUtils;
+import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
+import com.jzg.quotation.commons.entity.vo.quote.CarInfoVo;
+import com.jzg.quotation.commons.entity.vo.quote.CustomerInfoVo;
+import com.jzg.quotation.commons.entity.vo.quote.RiskInfoVo;
+import com.jzg.quote.guoren.api.constant.enums.TypeVehicleMapping;
+import com.jzg.quote.guoren.api.entity.GuoRenConfigureParameters;
+import com.jzg.quote.guoren.api.entity.Response.VinQueryResponse;
+import com.jzg.quote.guoren.api.entity.vo.GuoRenAccidentalDrivingVo;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @description: 非车保险订单 入参
+ * @author: shenwd
+ * @date: 2025/3/16 18:06
+ **/
+@Data
+@NoArgsConstructor
+public class NonAutoInsOrderRequest {
+
+    /**
+     * 渠道代码
+     */
+    @JsonProperty(value = "channelCode")
+    @JSONField(name = "channelCode")
+    private String channelCode;
+
+    @JsonProperty(value = "data")
+    @JSONField(name = "data")
+    private DataDTO data;
+
+    /**
+     * 外部订单号
+     */
+    @JsonProperty(value = "othBusinessNo")
+    @JSONField(name = "othBusinessNo")
+    private String othBusinessNo;
+
+    /**
+     * 请求时间
+     */
+    @JsonProperty(value = "requestTime")
+    @JSONField(name = "requestTime")
+    private String requestTime;
+
+    public NonAutoInsOrderRequest(QuoteVo quoteVo,
+                              VinQueryResponse.DataDTO vinQ,
+                              GuoRenAccidentalDrivingVo accidentalDrivingVo,
+                              GuoRenConfigureParameters parameters,
+                              String carPriceUuid,
+                              String channelCode
+    ) {
+
+        this.channelCode = channelCode;
+        this.data = new DataDTO(quoteVo, vinQ, accidentalDrivingVo, parameters, carPriceUuid);
+        this.othBusinessNo = carPriceUuid;
+        this.requestTime = DateUtil.today();
+    }
+
+    @NoArgsConstructor
+    @Data
+    public static class DataDTO {
+
+        @JsonProperty(value = "orderList")
+        @JSONField(name = "orderList")
+        private List<OrderListDTO> orderList;
+
+        public DataDTO(QuoteVo quoteVo, VinQueryResponse.DataDTO vinQ, GuoRenAccidentalDrivingVo accidentalDrivingVo, GuoRenConfigureParameters parameters, String carPriceUuid) {
+            OrderListDTO orderListDTO = new OrderListDTO(quoteVo, vinQ, accidentalDrivingVo, parameters, carPriceUuid);
+            this.orderList = Collections.singletonList(orderListDTO);
+        }
+
+        @NoArgsConstructor
+        @Data
+        public static class OrderListDTO {
+
+            /**
+             * 被保险人信息
+             */
+            @JsonProperty(value = "insuredList")
+            @JSONField(name = "insuredList")
+            private List<InsuredListDTO> insuredList;
+
+            /**
+             * 车辆标的信息
+             */
+            @JsonProperty(value = "objCarList")
+            @JSONField(name = "objCarList")
+            private List<ObjCarListDTO> objCarList;
+
+            /**
+             * 投保人信息
+             */
+            @JsonProperty(value = "orderAppl")
+            @JSONField(name = "orderAppl")
+            private OrderApplDTO orderAppl;
+
+            /**
+             * 订单信息
+             */
+            @JsonProperty(value = "orderMain")
+            @JSONField(name = "orderMain")
+            private OrderMainDTO orderMain;
+
+            /**
+             * 方案信息
+             */
+            @JsonProperty(value = "planList")
+            @JSONField(name = "planList")
+            private List<PlanListDTO> planList;
+
+            /**
+             * 业务员信息
+             */
+            @JsonProperty(value = "salesmanList")
+            @JSONField(name = "salesmanList")
+            private List<SalesmanListDTO> salesmanList;
+
+            public OrderListDTO(QuoteVo quoteVo, VinQueryResponse.DataDTO vinQ, GuoRenAccidentalDrivingVo accidentalDrivingVo, GuoRenConfigureParameters parameters, String carPriceUuid) {
+                //被保人
+                CustomerInfoVo insuredPerson = quoteVo.getInsuredPersonInfo();
+                InsuredListDTO insuredListDTO = new InsuredListDTO(insuredPerson);
+                this.insuredList = Collections.singletonList(insuredListDTO);
+
+                //车辆信息
+                CarInfoVo carInfo = quoteVo.getCarInfoVo();
+                ObjCarListDTO objCarListDTO = new ObjCarListDTO(carInfo, vinQ);
+                this.objCarList = Collections.singletonList(objCarListDTO);
+
+                //投保人
+                CustomerInfoVo policyHolder = quoteVo.getPolicyHolderInfo();
+                this.orderAppl = new OrderApplDTO(policyHolder);
+
+                // 订单信息
+                List<RiskInfoVo> riskList = new ArrayList<>(); 
+                riskList.add(quoteVo.getCiRiskInfoVo());
+                riskList.add(quoteVo.getBiRiskInfoVo());
+
+                this.orderMain = new OrderMainDTO(riskList, accidentalDrivingVo, parameters.getHandlerCode(), carPriceUuid);
+
+                // 方案信息
+                PlanListDTO planListDTO = new PlanListDTO();
+                this.planList = Collections.singletonList(planListDTO);
+
+                // 业务员信息
+                SalesmanListDTO salesmanListDTO = new SalesmanListDTO(parameters);
+                this.salesmanList = Collections.singletonList(salesmanListDTO);
+
+            }
+
+            @NoArgsConstructor
+            @Data
+            public static class OrderApplDTO {
+
+                @JsonProperty(value = "applName")
+                @JSONField(name = "applName")
+                private String applName;
+
+                @JsonProperty(value = "applType")
+                @JSONField(name = "applType")
+                private String applType;
+
+                @JsonProperty(value = "certfNo")
+                @JSONField(name = "certfNo")
+                private String certfNo;
+
+                @JsonProperty(value = "certfType")
+                @JSONField(name = "certfType")
+                private String certfType;
+
+                @JsonProperty(value = "contactName")
+                @JSONField(name = "contactName")
+                private String contactName;
+
+                @JsonProperty(value = "phoneNo")
+                @JSONField(name = "phoneNo")
+                private String phoneNo;
+
+                public OrderApplDTO(CustomerInfoVo customerInfoVo) {
+                    this.applName = customerInfoVo.getName();
+                    this.applType = "1";
+                    this.certfNo = customerInfoVo.getIdentifyNumber();
+                    this.certfType = "01";
+                    this.contactName = customerInfoVo.getName();
+                    this.phoneNo = customerInfoVo.getMobile();
+                }
+
+            }
+
+            @NoArgsConstructor
+            @Data
+            public static class OrderMainDTO {
+
+                @JsonProperty(value = "amount")
+                @JSONField(name = "amount")
+                private String amount;
+
+                @JsonProperty(value = "endDate")
+                @JSONField(name = "endDate")
+                private String endDate;
+
+                @JsonProperty(value = "goodsCode")
+                @JSONField(name = "goodsCode")
+                private String goodsCode;
+
+                @JsonProperty(value = "operatorCode")
+                @JSONField(name = "operatorCode")
+                private String operatorCode;
+
+                @JsonProperty(value = "othOrderNo")
+                @JSONField(name = "othOrderNo")
+                private String othOrderNo;
+
+                @JsonProperty(value = "premium")
+                @JSONField(name = "premium")
+                private String premium;
+
+                @JsonProperty(value = "prodCode")
+                @JSONField(name = "prodCode")
+                private String prodCode;
+
+                @JsonProperty(value = "renewalInd")
+                @JSONField(name = "renewalInd")
+                private Integer renewalInd;
+
+                @JsonProperty(value = "riskCode")
+                @JSONField(name = "riskCode")
+
+                private List<String> riskCode;
+                @JsonProperty(value = "startDate")
+                @JSONField(name = "startDate")
+                private String startDate;
+
+                @JsonProperty(value = "uwCount")
+                @JSONField(name = "uwCount")
+                private Integer uwCount;
+
+                @JsonProperty(value = "businessMode")
+                @JSONField(name = "businessMode")
+                private String businessMode;
+
+                @JsonProperty(value = "businessSource")
+                @JSONField(name = "businessSource")
+                private String businessSource;
+
+                public OrderMainDTO(List<RiskInfoVo> riskList, GuoRenAccidentalDrivingVo accidentalDrivingVo, String operatorCode, String carPriceUuid) {
+                    this.amount = accidentalDrivingVo.getAmount();
+                    this.premium = new BigDecimal(accidentalDrivingVo.getPremium()).multiply(new BigDecimal(accidentalDrivingVo.getQuantity())).toString();
+                    this.goodsCode = accidentalDrivingVo.getGoodsCode();
+                    this.prodCode = accidentalDrivingVo.getProdCode();
+                    this.uwCount = accidentalDrivingVo.getQuantity();
+
+                    this.operatorCode = operatorCode;
+                    this.othOrderNo = carPriceUuid;
+                    this.renewalInd = 0;
+                    this.riskCode = Collections.singletonList(accidentalDrivingVo.getRiskCode());
+
+                    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+                    String start;
+                    RiskInfoVo riskInfoVo = getRiskInfoVo(riskList, formatter);
+
+                    start = riskInfoVo.getStartDate();
+                    LocalDateTime startLocalDateTime;
+                    LocalDateTime localDateTime = LocalDateTime.parse(start, formatter);
+                    if (start.contains("00:00:00")) {
+                        startLocalDateTime = localDateTime;
+                    } else {
+                        LocalDate localDate = localDateTime.toLocalDate().plusDays(1);
+                        startLocalDateTime = localDate.atStartOfDay();
+                        start = startLocalDateTime.format(formatter);
+                    }
+                    String end = startLocalDateTime.plusYears(1).plusSeconds(-1).format(formatter);
+
+                    this.startDate = start;
+                    this.endDate = end;
+
+                    this.businessMode = "1";
+                    this.businessSource = "2";
+
+                }
+
+                private static RiskInfoVo getRiskInfoVo(List<RiskInfoVo> riskList, DateTimeFormatter formatter) {
+                    if (riskList.size() == 1) {
+                        return riskList.get(0);
+                    } else {
+                        RiskInfoVo riskInfoVo1 = riskList.get(0);
+                        RiskInfoVo riskInfoVo2 = riskList.get(1);
+                        String startDate1 = riskInfoVo1.getStartDate();
+                        String startDate2 = riskInfoVo2.getStartDate();
+                        LocalDateTime localDateTime1 = LocalDateTime.parse(startDate1, formatter);
+                        LocalDateTime localDateTime2 = LocalDateTime.parse(startDate2, formatter);
+                        boolean after = localDateTime1.isAfter(localDateTime2);
+                        if (after) {
+                            return riskInfoVo2;
+                        }
+                        return riskInfoVo1;
+                    }
+                }
+
+
+            }
+
+            @NoArgsConstructor
+            @Data
+            public static class InsuredListDTO {
+                @JsonProperty(value = "certfNo")
+                @JSONField(name = "certfNo")
+                private String certfNo;
+
+                @JsonProperty(value = "certfType")
+                @JSONField(name = "certfType")
+                private String certfType;
+
+                @JsonProperty(value = "countryName")
+                @JSONField(name = "countryName")
+                private String countryName;
+
+                @JsonProperty(value = "insuredName")
+                @JSONField(name = "insuredName")
+                private String insuredName;
+
+                @JsonProperty(value = "insuredType")
+                @JSONField(name = "insuredType")
+                private String insuredType;
+
+                @JsonProperty(value = "phoneNo")
+                @JSONField(name = "phoneNo")
+                private String phoneNo;
+
+                @JsonProperty(value = "planNo")
+                @JSONField(name = "planNo")
+                private String planNo;
+
+                public InsuredListDTO(CustomerInfoVo customerInfoVo) {
+                    this.certfNo = customerInfoVo.getIdentifyNumber();
+                    this.certfType = "01";
+                    this.countryName = "中国";
+                    this.insuredName = customerInfoVo.getName();
+                    //客户类型	insuredType	String	Y	 1-个人,2-企业
+                    this.insuredType = "1";
+                    this.phoneNo = customerInfoVo.getMobile();
+                    this.planNo = "1";
+                }
+
+            }
+
+            @NoArgsConstructor
+            @Data
+            public static class ObjCarListDTO {
+
+                @JsonProperty(value = "carModels")
+                @JSONField(name = "carModels")
+                private String carModels;
+
+                @JsonProperty(value = "carCategory")
+                @JSONField(name = "carCategory")
+                private String carCategory;
+
+                @JsonProperty(value = "carType")
+                @JSONField(name = "carType")
+                private String carType;
+
+                @JsonProperty(value = "carTypeCode")
+                @JSONField(name = "carTypeCode")
+                private String carTypeCode;
+
+                @JsonProperty(value = "clnt")
+                @JSONField(name = "clnt")
+                private String clnt;
+
+                @JsonProperty(value = "frameNo")
+                @JSONField(name = "frameNo")
+                private String frameNo;
+
+                @JsonProperty(value = "licenseNo")
+                @JSONField(name = "licenseNo")
+                private String licenseNo;
+
+                @JsonProperty(value = "planNo")
+                @JSONField(name = "planNo")
+                private String planNo;
+
+                @JsonProperty(value = "purchasePrice")
+                @JSONField(name = "purchasePrice")
+                private Double purchasePrice;
+
+                @JsonProperty(value = "seatNum")
+                @JSONField(name = "seatNum")
+                private Integer seatNum;
+
+                @JsonProperty(value = "toncount")
+                @JSONField(name = "toncount")
+                private Double toncount;
+
+                public ObjCarListDTO(CarInfoVo carInfo, VinQueryResponse.DataDTO vinQ) {
+                    this.carModels = vinQ.getBrandNameBC();
+                    this.carType = carInfo.getCarTypeCode();
+                    if(carInfo.getVehicleUseCode().equals(TypeVehicleMapping.TM_08.getCode())){
+                        this.carType = "8D";
+                    }
+                    this.carTypeCode = getCarTypeCodeByCarInfo(carInfo);
+                    //设置车辆大类,请求时已转换,暂时先注释
+                    /*if(VehicleType.VT_A0.getCode().equals(carInfo.getCarKindCode())){
+                        this.carCategory = "A";
+                    }else if(VehicleType.VT_A1.getCode().equals(carInfo.getCarKindCode())) {
+                        this.carCategory = "H";
+                    }*/
+
+                    this.clnt = StringUtils.isNotEmpty(carInfo.getLicenseNo()) ? "2" : "1";
+                    this.frameNo = carInfo.getVinNo();
+                    this.licenseNo = carInfo.getLicenseNo();
+                    this.planNo = "1";
+                    this.purchasePrice = Double.valueOf(vinQ.getPriceShow());
+                    this.seatNum = Float.valueOf(vinQ.getSeatCountBC()).intValue();
+                    this.toncount = Double.valueOf(vinQ.getTonCount());
+                }
+
+            }
+
+            @Data
+            public static class PlanListDTO {
+
+                @JsonProperty(value = "occupationCode")
+                @JSONField(name = "occupationCode")
+                private String occupationCode;
+
+                @JsonProperty(value = "occupationGrade")
+                @JSONField(name = "occupationGrade")
+                private String occupationGrade;
+
+                @JsonProperty(value = "occupationName")
+                @JSONField(name = "occupationName")
+                private String occupationName;
+
+                @JsonProperty(value = "planNo")
+                @JSONField(name = "planNo")
+                private String planNo;
+
+                @JsonProperty(value = "quantity")
+                @JSONField(name = "quantity")
+                private String quantity;
+
+                @JsonProperty(value = "socialSecInd")
+                @JSONField(name = "socialSecInd")
+                private String socialSecInd;
+
+                public PlanListDTO() {
+                    //按照示例传的
+                    this.occupationCode = "0500020";
+                    this.occupationGrade = "1";
+                    this.occupationName = "其他";
+                    this.planNo = "1";
+                    this.quantity = "1";
+                    this.socialSecInd = "01";
+                }
+
+            }
+
+            @NoArgsConstructor
+            @Data
+            public static class SalesmanListDTO {
+
+                @JsonProperty(value = "agentCode")
+                @JSONField(name = "agentCode")
+                private String agentCode;
+
+                @JsonProperty(value = "agentCnrtNo")
+                @JSONField(name = "agentCnrtNo")
+                private String agentCnrtNo;
+
+                @JsonProperty(value = "companyCode")
+                @JSONField(name = "companyCode")
+                private String companyCode;
+
+                @JsonProperty(value = "salesmanCode")
+                @JSONField(name = "salesmanCode")
+                private String salesmanCode;
+
+                @JsonProperty(value = "salesmanFlag")
+                @JSONField(name = "salesmanFlag")
+                private Integer salesmanFlag;
+
+                @JsonProperty(value = "salesmanName")
+                @JSONField(name = "salesmanName")
+                private String salesmanName;
+
+                @JsonProperty(value = "serialNo")
+                @JSONField(name = "serialNo")
+                private Integer serialNo;
+
+                @JsonProperty(value = "teamCode")
+                @JSONField(name = "teamCode")
+                private String teamCode;
+
+                @JsonProperty(value = "teamName")
+                @JSONField(name = "teamName")
+                private String teamName;
+
+
+                public SalesmanListDTO(GuoRenConfigureParameters parameters) {
+                    this.agentCnrtNo = parameters.getAgreementNo();
+                    this.agentCode = parameters.getAgentCode();
+                    this.companyCode = parameters.getComCode();
+                    this.salesmanCode = parameters.getHandlerCode();
+                    this.salesmanFlag = 1;
+                    this.salesmanName = parameters.getHandlerName();
+                    this.serialNo = 1;
+                    this.teamCode = "";
+                    this.teamName = "";
+                }
+            }
+        }
+    }
+
+    public static String getCarTypeCodeByCarInfo(CarInfoVo carInfo){
+        String carType = "8A";
+        if(carInfo.getVehicleUseCode().equals(TypeVehicleMapping.TM_08.getCode())){
+            carType = "8D";
+        }else if(carInfo.getVehicleUseCode().equals(TypeVehicleMapping.TM_01.getCode())){
+            carType = "9G";
+        }else if(carInfo.getVehicleUseCode().equals(TypeVehicleMapping.TM_02.getCode())){
+            carType = "9B";
+        }else if(carInfo.getVehicleUseCode().equals(TypeVehicleMapping.TM_03.getCode())){
+            carType = "9C";
+        }else if(carInfo.getVehicleUseCode().equals(TypeVehicleMapping.TM_04.getCode())){
+            carType = "9D";
+        }else if(carInfo.getVehicleUseCode().equals(TypeVehicleMapping.TM_06.getCode())){
+            carType = "8E";
+        }else if(carInfo.getVehicleUseCode().equals(TypeVehicleMapping.TM_07.getCode())){
+            carType = "8B";
+        }
+        return carType;
+    }
+}

+ 29 - 0
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Request/OrderStateRequest.java

@@ -0,0 +1,29 @@
+package com.jzg.quote.guoren.api.entity.Request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @description: 投保单状态查询请求参数
+ * @author: shenwd
+ * @date: 2025/3/18 11:53
+ **/
+@Data
+@NoArgsConstructor
+public class OrderStateRequest {
+
+    @JsonProperty("proposalNos")
+    private List<String> proposalNos = new ArrayList<>();
+
+    public void addProposalNos(String proposalNo) {
+        if(StringUtils.isNotEmpty(proposalNo)){
+            this.proposalNos.add(proposalNo);
+        }
+    }
+
+}

+ 3 - 3
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Request/PayRequest.java

@@ -5,7 +5,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.jzg.commons.util.StringUtils;
 import com.jzg.quote.guoren.api.entity.GuoRenApiOrder;
-import com.jzg.quote.guoren.api.entity.dto.ChannelInfoDTO;
+import com.jzg.quote.guoren.api.entity.GuoRenConfigureParameters;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
@@ -51,7 +51,7 @@ public class PayRequest {
     private String orderCode;
 
     @JsonIgnore
-    public static PayRequest buildParam(GuoRenApiOrder guoRenApiOrder, String redirectUrl, ChannelInfoDTO channelInfo) {
+    public static PayRequest buildParam(GuoRenApiOrder guoRenApiOrder, String redirectUrl, GuoRenConfigureParameters parameters) {
 
 
         PayRequest req = new PayRequest();
@@ -70,7 +70,7 @@ public class PayRequest {
         //非车险(N);车险(Y);组合险(P)
         req.setRiskType("Y");
         req.setRedirectUrl(redirectUrl);
-        req.setComCode(channelInfo.getComCode());
+        req.setComCode(parameters.getComCode());
         req.setVerificationCode("");
         BigDecimal amount = guoRenApiOrder.getJqPremium().add(guoRenApiOrder.getSyPremium()).add(guoRenApiOrder.getJyPremium());
         req.setAmount(amount.doubleValue());

+ 29 - 0
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Request/SpecialAgreementRequest.java

@@ -0,0 +1,29 @@
+package com.jzg.quote.guoren.api.entity.Request;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @description: todo
+ * @author: shenwd
+ * @date: 2025/3/17 09:35
+ **/
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class SpecialAgreementRequest implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 3103644274848840488L;
+
+    @JsonProperty("comCode")
+    private String comCode;
+
+    @JsonProperty("riskCode")
+    private String riskCode;
+}

+ 3 - 3
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Request/SubmitAuditRequest.java

@@ -4,7 +4,7 @@ import com.alibaba.fastjson.annotation.JSONField;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.jzg.quote.guoren.api.entity.GuoRenApiOrder;
-import com.jzg.quote.guoren.api.entity.dto.ChannelInfoDTO;
+import com.jzg.quote.guoren.api.entity.GuoRenConfigureParameters;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
@@ -33,10 +33,10 @@ public class SubmitAuditRequest {
      * @date: 2023年08月14日 0014
      */
     @JsonIgnore
-    public static SubmitAuditRequest buildParam(GuoRenApiOrder guoRenApiOrder, ChannelInfoDTO channelInfo) {
+    public static SubmitAuditRequest buildParam(GuoRenApiOrder guoRenApiOrder, GuoRenConfigureParameters parameters) {
 
         SubmitAuditRequest req = new SubmitAuditRequest();
-        req.setUserCode(channelInfo.getHandlerCode());
+        req.setUserCode(parameters.getHandlerCode());
 
         List<ProposalNoSubListDTO> proposalNoSubList = new ArrayList<>();
         ProposalNoSubListDTO dto = new ProposalNoSubListDTO();

+ 3 - 4
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Request/VinQueryRequest.java

@@ -3,7 +3,6 @@ package com.jzg.quote.guoren.api.entity.Request;
 import com.alibaba.fastjson.annotation.JSONField;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.jzg.quote.guoren.api.entity.GuoRenConfigureParameters;
-import com.jzg.quote.guoren.api.entity.dto.ChannelInfoDTO;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
@@ -50,11 +49,11 @@ public class VinQueryRequest {
     @JSONField(name = "userCode")
     private String userCode;
 
-    public VinQueryRequest(VinQueryRequest vinQueryReq, ChannelInfoDTO channelInfoDTO) {
+    public VinQueryRequest(VinQueryRequest vinQueryReq, GuoRenConfigureParameters parameters) {
         this.frameNo = vinQueryReq.getFrameNo();
         this.engineNo = vinQueryReq.getEngineNo();
         this.licenseNo = vinQueryReq.getLicenseNo();
-        this.comCode = channelInfoDTO.getComCode();
-        this.userCode = channelInfoDTO.getHandlerCode();
+        this.comCode = parameters.getComCode();
+        this.userCode = parameters.getHandlerCode();
     }
 }

+ 111 - 0
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Response/ChannelInfoResponse.java

@@ -0,0 +1,111 @@
+package com.jzg.quote.guoren.api.entity.Response;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.jzg.quotation.commons.standard.ConfigureParameters;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @description: 渠道信息 响应
+ * @author: shenwd
+ * @date: 2025/3/17 14:26
+ **/
+@NoArgsConstructor
+@Data
+public class ChannelInfoResponse {
+    @JsonProperty(value = "resultCode")
+    @JSONField(name = "resultCode")
+    private Integer resultCode;
+    @JsonProperty(value = "data")
+    @JSONField(name = "data")
+    private List<DataDTO> data;
+
+    @NoArgsConstructor
+    @Data
+    public static class DataDTO implements ConfigureParameters {
+        @JsonProperty(value = "prptmain")
+        @JSONField(name = "prptmain")
+        private PrptmainDTO prptmain;
+        @JsonProperty(value = "areaCode")
+        @JSONField(name = "areaCode")
+        private String areaCode;
+        @JsonProperty(value = "areaName")
+        @JSONField(name = "areaName")
+        private String areaName;
+
+        @NoArgsConstructor
+        @Data
+        public static class PrptmainDTO {
+            @JsonProperty(value = "comName")
+            @JSONField(name = "comName")
+            private String comName;
+            @JsonProperty(value = "businessNature")
+            @JSONField(name = "businessNature")
+            private String businessNature;
+            @JsonProperty(value = "comCode")
+            @JSONField(name = "comCode")
+            private String comCode;
+
+            //userCode
+            @JsonProperty(value = "handlerCode")
+            @JSONField(name = "handlerCode")
+            private String handlerCode;
+            @JsonProperty(value = "agentCode")
+            @JSONField(name = "agentCode")
+            private String agentCode;
+            @JsonProperty(value = "agreementNo")
+            @JSONField(name = "agreementNo")
+            private String agreementNo;
+            @JsonProperty(value = "unitMaintenanceCode")
+            @JSONField(name = "unitMaintenanceCode")
+            private String unitMaintenanceCode;
+            @JsonProperty(value = "unitmainTenanceType1")
+            @JSONField(name = "unitmainTenanceType1")
+            private String unitmainTenanceType1;
+            @JsonProperty(value = "unitmainTenanceType2")
+            @JSONField(name = "unitmainTenanceType2")
+            private String unitmainTenanceType2;
+            @JsonProperty(value = "unitMaintenanceName")
+            @JSONField(name = "unitMaintenanceName")
+            private String unitMaintenanceName;
+            @JsonProperty(value = "unitmainTenanceType1Name")
+            @JSONField(name = "unitmainTenanceType1Name")
+            private String unitmainTenanceType1Name;
+            @JsonProperty(value = "unitmainTenanceType2Name")
+            @JSONField(name = "unitmainTenanceType2Name")
+            private String unitmainTenanceType2Name;
+            @JsonProperty(value = "channelTypeOne")
+            @JSONField(name = "channelTypeOne")
+            private String channelTypeOne;
+            @JsonProperty(value = "channelTypeOneName")
+            @JSONField(name = "channelTypeOneName")
+            private String channelTypeOneName;
+            @JsonProperty(value = "channelTypeTwo")
+            @JSONField(name = "channelTypeTwo")
+            private String channelTypeTwo;
+            @JsonProperty(value = "channelTypeTwoName")
+            @JSONField(name = "channelTypeTwoName")
+            private String channelTypeTwoName;
+            @JsonProperty(value = "upDateTime")
+            @JSONField(name = "upDateTime")
+            private String upDateTime;
+            @JsonProperty(value = "handler1Name")
+            @JSONField(name = "handler1Name")
+            private String handler1Name;
+            @JsonProperty(value = "agentName")
+            @JSONField(name = "agentName")
+            private String agentName;
+            @JsonProperty(value = "deGentType")
+            @JSONField(name = "deGentType")
+            private String deGentType;
+            @JsonProperty(value = "saleGentType")
+            @JSONField(name = "saleGentType")
+            private String saleGentType;
+            //归属业务员名称
+            private String handlerName;
+        }
+    }
+}

+ 43 - 0
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Response/NonAutoInsOrderResponse.java

@@ -0,0 +1,43 @@
+package com.jzg.quote.guoren.api.entity.Response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @description: 创建非车订单 返回参数
+ * @author: shenwd
+ * @date: 2025/3/16 18:04
+ **/
+@Data
+@NoArgsConstructor
+public class NonAutoInsOrderResponse implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 4191304012562419095L;
+
+    @JsonProperty("code")
+    private String code;
+
+    @JsonProperty("msg")
+    private String message;
+
+    @JsonProperty("data")
+    private DataDTO data;
+
+    @NoArgsConstructor
+    @Data
+    public static class DataDTO {
+        @JsonProperty("orderCode")
+        private String orderCode;
+
+        /**
+         * 非车总保费
+         */
+        @JsonProperty("noCarPremium")
+        private String noCarPremium;
+    }
+}

+ 65 - 0
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Response/OrderStateResponse.java

@@ -0,0 +1,65 @@
+package com.jzg.quote.guoren.api.entity.Response;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @description: 投保单状态查询 出参
+ * @author: shenwd
+ * @date: 2025/3/18 11:56
+ **/
+@Data
+@NoArgsConstructor
+public class OrderStateResponse {
+
+    @JsonProperty(value = "resultCode")
+    @JSONField(name = "resultCode")
+    private Integer resultCode;
+
+    @JsonProperty(value = "resultMsg")
+    @JSONField(name = "resultMsg")
+    private String resultMsg;
+
+    @JsonProperty(value = "data")
+    @JSONField(name = "data")
+    private List<DataDTO> data;
+
+    @NoArgsConstructor
+    @Data
+    public static class DataDTO {
+
+        /**
+         * 投保单号
+         */
+        @JsonProperty(value = "proposalNo")
+        @JSONField(name = "proposalNo")
+        private String proposalNo;
+
+        /**
+         * 保单号
+         */
+        @JsonProperty(value = "policyNo")
+        @JSONField(name = "policyNo")
+        private String policyNo;
+
+        /**
+         * 核保状态
+         * (0初始值/1通过/2不通过/3 无需核保 /9待核保/)
+         */
+        @JsonProperty(value = "underwriteFlag")
+        @JSONField(name = "underwriteFlag")
+        private String underwriteFlag;
+
+        /**
+         * 其他状态
+         * 0是正常,2是删除
+         */
+        @JsonProperty(value = "othFlag")
+        @JSONField(name = "othFlag")
+        private String othFlag;
+    }
+}

+ 27 - 0
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Response/PremiumResponse.java

@@ -40,24 +40,51 @@ public class PremiumResponse {
         @JsonIgnore
         private String biEndDate;
 
+        /**
+         * 险种列表
+         */
         @JsonProperty(value = "itemVOList")
         @JSONField(name = "itemVOList")
         private List<ItemVOListDTO> itemVOList;
+
+        /**
+         * 车船税
+         */
         @JsonProperty(value = "carShipTaxRespVO")
         @JSONField(name = "carShipTaxRespVO")
         private CarShipTaxRespVODTO carShipTaxRespVO;
+
+        /**
+         * 商业险保费
+         */
         @JsonProperty(value = "sumPremiumBI")
         @JSONField(name = "sumPremiumBI")
         private Double sumPremiumBI;
+
+        /**
+         * 交强险保费
+         */
         @JsonProperty(value = "sumPremiumCI")
         @JSONField(name = "sumPremiumCI")
         private Double sumPremiumCI;
+
+        /**
+         * 车船税
+         */
         @JsonProperty(value = "sumPayTax")
         @JSONField(name = "sumPayTax")
         private Double sumPayTax;
+
+        /**
+         * 商业险特约
+         */
         @JsonProperty(value = "biPrptenages")
         @JSONField(name = "biPrptenages")
         private List<BiPrptenagesDTO> biPrptenages;
+
+        /**
+         * 交强险特约
+         */
         @JsonProperty(value = "ciPrptenages")
         @JSONField(name = "ciPrptenages")
         private List<CiPrptenagesDTO> ciPrptenages;

+ 63 - 0
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Response/SpecialAgreementResponse.java

@@ -0,0 +1,63 @@
+package com.jzg.quote.guoren.api.entity.Response;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @description: 特别约定 响应参数
+ * @author: shenwd
+ * @date: 2025/3/17 08:57
+ **/
+@Data
+@NoArgsConstructor
+public class SpecialAgreementResponse implements Serializable {
+
+    @JsonProperty("resultCode")
+    private Integer resultCode;
+
+    @JsonProperty("resultMsg")
+    private String resultMsg;
+
+    @JsonProperty("data")
+    private List<DataDTO> data;
+
+    @NoArgsConstructor
+    @Data
+    @AllArgsConstructor
+    public static class DataDTO implements Serializable {
+
+        @Serial
+        private static final long serialVersionUID = 933885724259907814L;
+
+        //        @ApiModelProperty("特约编码")
+        @JsonProperty("clauseCode")
+        private String clauseCode;
+
+//        @ApiModelProperty("特约名")
+        @JsonProperty("clauses")
+        private String clauses;
+
+        @JsonProperty("flag")
+        private String flag;
+
+//        @ApiModelProperty("特约内容")
+        @JsonProperty("clausesContext")
+        private String clausesContext;
+
+        @JsonProperty("status")
+        private String status;
+
+        @JsonProperty("readOnly")
+        private String readOnly;
+
+        @JsonProperty("total")
+        private String total;
+
+    }
+}

+ 10 - 0
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/Response/SubmitAuditResponse.java

@@ -31,9 +31,19 @@ public class SubmitAuditResponse {
         @JsonProperty(value = "message")
         @JSONField(name = "message")
         private String message;
+
+        /**
+         * 交强险投保单状态
+         * 核保状态 0初始值/1通过/2不通过/3 无需核保 9待核保
+         */
         @JsonProperty(value = "underWriteFlagCI")
         @JSONField(name = "underWriteFlagCI")
         private String underWriteFlagCI;
+
+        /**
+         * 商业险投保单状态
+         * 核保状态 0初始值/1通过/2不通过/3 无需核保 9待核保
+         */
         @JsonProperty(value = "underWriteFlagBI")
         @JSONField(name = "underWriteFlagBI")
         private String underWriteFlagBI;

+ 0 - 167
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/dto/ChannelInfoDTO.java

@@ -1,167 +0,0 @@
-package com.jzg.quote.guoren.api.entity.dto;
-
-import com.alibaba.fastjson.annotation.JSONField;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.jzg.quotation.commons.standard.ConfigureParameters;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.io.Serial;
-
-/**
- * @description: 渠道信息 获取配置的信息
- * @author: shenwd
- * @date: 2025/3/14 11:19
- **/
-@NoArgsConstructor
-@Data
-public class ChannelInfoDTO implements ConfigureParameters {
-
-    @Serial
-    private static final long serialVersionUID = -2356470518483047248L;
-
-    /**
-     * 地区代码
-     */
-    @JsonProperty(value = "areaCode")
-    @JSONField(name = "areaCode")
-    private String areaCode;
-
-    /**
-     * 地区名称
-     */
-    @JsonProperty(value = "areaName")
-    @JSONField(name = "areaName")
-    private String areaName;
-    /**
-     * 归属机构代码
-     */
-    @JsonProperty(value = "comCode")
-    @JSONField(name = "comCode")
-    private String comCode;
-
-    /**
-     * 归属机构名称
-     */
-    @JsonProperty(value = "comName")
-    @JSONField(name = "comName")
-    private String comName;
-
-    @JsonProperty(value = "businessNature")
-    @JSONField(name = "businessNature")
-    private String businessNature;
-
-    /**
-     * 归属业务员代码
-     */
-    @JsonProperty(value = "handlerCode")
-    @JSONField(name = "handlerCode")
-    private String handlerCode;
-
-    /**
-     * 代理代码
-     */
-    @JsonProperty(value = "agentCode")
-    @JSONField(name = "agentCode")
-    private String agentCode;
-
-    @JsonProperty(value = "agreementNo")
-    @JSONField(name = "agreementNo")
-    private String agreementNo;
-
-    /**
-     * 决策单元代码
-     */
-    @JsonProperty(value = "unitMaintenanceCode")
-    @JSONField(name = "unitMaintenanceCode")
-    private String unitMaintenanceCode;
-
-    /**
-     * 决策单元大类代码
-     */
-    @JsonProperty(value = "unitmainTenanceType1")
-    @JSONField(name = "unitmainTenanceType1")
-    private String unitmainTenanceType1;
-
-    /**
-     * 决策单元小类代码
-     */
-    @JsonProperty(value = "unitmainTenanceType2")
-    @JSONField(name = "unitmainTenanceType2")
-    private String unitmainTenanceType2;
-
-    /**
-     * 决策单元名称
-     */
-    @JsonProperty(value = "unitMaintenanceName")
-    @JSONField(name = "unitMaintenanceName")
-    private String unitMaintenanceName;
-
-    /**
-     * 决策单元大类名称
-     */
-    @JsonProperty(value = "unitmainTenanceType1Name")
-    @JSONField(name = "unitmainTenanceType1Name")
-    private String unitmainTenanceType1Name;
-
-    /**
-     * 决策单元小类名称
-     */
-    @JsonProperty(value = "unitmainTenanceType2Name")
-    @JSONField(name = "unitmainTenanceType2Name")
-    private String unitmainTenanceType2Name;
-
-    /**
-     * 部门代码
-     */
-    @JsonProperty(value = "channelTypeOne")
-    @JSONField(name = "channelTypeOne")
-    private String channelTypeOne;
-
-    /**
-     * 部门名称
-     */
-    @JsonProperty(value = "channelTypeOneName")
-    @JSONField(name = "channelTypeOneName")
-    private String channelTypeOneName;
-
-    /**
-     * 渠道大类代码
-     */
-    @JsonProperty(value = "channelTypeTwo")
-    @JSONField(name = "channelTypeTwo")
-    private String channelTypeTwo;
-
-    /**
-     * 渠道大类名称
-     */
-    @JsonProperty(value = "channelTypeTwoName")
-    @JSONField(name = "channelTypeTwoName")
-    private String channelTypeTwoName;
-
-    @JsonProperty(value = "upDateTime")
-    @JSONField(name = "upDateTime")
-    private String upDateTime;
-
-    /**
-     * 归属业务员名称
-     */
-    @JsonProperty(value = "handler1Name")
-    @JSONField(name = "handler1Name")
-    private String handler1Name;
-
-    @JsonProperty(value = "agentName")
-    @JSONField(name = "agentName")
-    private String agentName;
-
-    @JsonProperty(value = "deGentType")
-    @JSONField(name = "deGentType")
-    private String deGentType;
-
-    @JsonProperty(value = "saleGentType")
-    @JSONField(name = "saleGentType")
-    private String saleGentType;
-
-    //归属业务员名称
-    private String handlerName;
-}

+ 39 - 0
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/vo/GuoRenAccidentalDrivingVo.java

@@ -0,0 +1,39 @@
+package com.jzg.quote.guoren.api.entity.vo;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+* @description: 国任非车险参数
+* @author: shenwd
+* @date: 2025/3/17 15:09
+**/
+@Data
+public class GuoRenAccidentalDrivingVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = -640980840641466853L;
+
+    //    @ApiModelProperty("商品号")
+    private String goodsCode;
+
+//    @ApiModelProperty("份数")
+    private int quantity;
+
+//    @ApiModelProperty("商品名称")
+    private String goodsName;
+
+//    @ApiModelProperty("产品代码")
+    private String prodCode;
+
+//    @ApiModelProperty("险种代码")
+    private String riskCode;
+
+//    @ApiModelProperty("保额")
+    private String amount;
+
+//    @ApiModelProperty("保费")
+    private String premium;
+}

+ 10 - 0
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/entity/vo/GuoRenSpecialAgreementVo.java

@@ -1,6 +1,8 @@
 package com.jzg.quote.guoren.api.entity.vo;
 
+import com.jzg.commons.constants.InsuranceRisk;
 import com.jzg.quote.guoren.api.entity.Request.PremiumRequest;
+import com.jzg.quote.guoren.api.entity.Response.SpecialAgreementResponse;
 import lombok.Data;
 
 import java.io.Serial;
@@ -34,6 +36,14 @@ public class GuoRenSpecialAgreementVo implements Serializable {
 //    @ApiModelProperty("险种名称")
     private String riskName;
 
+    public GuoRenSpecialAgreementVo(SpecialAgreementResponse.DataDTO dataDTO, InsuranceRisk insuranceRisk) {
+        this.clauseCode = dataDTO.getClauseCode();
+        this.clauses = dataDTO.getClauses();
+        this.clausesContext = dataDTO.getClausesContext();
+        this.riskName = insuranceRisk.getShortName();
+        this.riskCode = insuranceRisk.getCode();
+    }
+
     public static List<PremiumRequest.PrptengageListDTO> toPrptengageListDTO(List<GuoRenSpecialAgreementVo> specialAgreementVo) {
         List<PremiumRequest.PrptengageListDTO> prptengageListDTOS = new ArrayList<>();
         for (int i = 0; i < specialAgreementVo.size(); i++) {

+ 285 - 30
tenant/insurance/quotation-guoren/src/main/java/com/jzg/quote/guoren/api/service/Impl/GuoRenApiRequestImpl.java

@@ -1,40 +1,58 @@
 package com.jzg.quote.guoren.api.service.Impl;
 
 import cn.hutool.core.collection.CollUtil;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.fasterxml.jackson.core.JsonProcessingException;
+import com.jzg.commons.constants.InsuranceRisk;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.commons.util.AssertionUtils;
 import com.jzg.commons.util.StringUtils;
+import com.jzg.quotation.commons.constant.enums.base.PolicyPrintType;
 import com.jzg.quotation.commons.entity.vo.aggregated.InsuranceUploadImageVo;
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteResultsVo;
 import com.jzg.quotation.commons.entity.vo.aggregated.QuoteVo;
 import com.jzg.quotation.commons.entity.vo.aggregated.UnderwritingVo;
 import com.jzg.quotation.commons.entity.vo.base.OrderBase;
+import com.jzg.quotation.commons.entity.vo.image.InsuranceImageVo;
+import com.jzg.quotation.commons.entity.vo.quote.AccidentalDrivingVo;
 import com.jzg.quotation.commons.entity.vo.quote.CarInfoVo;
 import com.jzg.quotation.commons.standard.conversion.ConfigureParametersConversion;
 import com.jzg.quotation.commons.utils.DateTimeUtil;
+import com.jzg.quotation.commons.utils.HttpUtil;
+import com.jzg.quote.guoren.api.build.GuoRenApiQuoteResultsVoBuild;
 import com.jzg.quote.guoren.api.component.GuoRenRequestApiComponent;
+import com.jzg.quote.guoren.api.constant.enums.GuoRenRiskCode;
 import com.jzg.quote.guoren.api.constant.enums.PlatformInterfaceCode;
 import com.jzg.quote.guoren.api.entity.GuoRenApiOrder;
 import com.jzg.quote.guoren.api.entity.GuoRenConfigureParameters;
-import com.jzg.quote.guoren.api.entity.Request.CarPriceMuchRequest;
-import com.jzg.quote.guoren.api.entity.Request.CarPriceRequest;
-import com.jzg.quote.guoren.api.entity.Request.VinQueryRequest;
-import com.jzg.quote.guoren.api.entity.Response.CarPriceMuchResponse;
-import com.jzg.quote.guoren.api.entity.Response.CarPriceResponse;
-import com.jzg.quote.guoren.api.entity.Response.VinQueryResponse;
-import com.jzg.quote.guoren.api.entity.dto.ChannelInfoDTO;
+import com.jzg.quote.guoren.api.entity.Request.*;
+import com.jzg.quote.guoren.api.entity.Response.*;
+import com.jzg.quote.guoren.api.entity.vo.GuoRenAccidentalDrivingVo;
+import com.jzg.quote.guoren.api.entity.vo.GuoRenSpecialAgreementVo;
+import com.jzg.quote.guoren.api.properties.GuoRenApiConfigurationProperties;
 import com.jzg.quote.guoren.api.service.GuoRenApiOrderService;
 import com.jzg.quote.guoren.api.service.GuoRenApiRequest;
 import lombok.RequiredArgsConstructor;
+import org.apache.commons.httpclient.methods.multipart.FilePart;
+import org.apache.commons.httpclient.methods.multipart.Part;
+import org.apache.commons.httpclient.methods.multipart.StringPart;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 
-import java.util.Comparator;
-import java.util.List;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
+import static com.jzg.quotation.commons.constant.CacheConstant.GR_SPECIAL_AGREEMENT_KEY;
+import static com.jzg.quotation.commons.constant.CacheConstant.GR_SPECIAL_AGREEMENT_TIME;
+
 /**
  * @description:
  * @author: shenwd
@@ -43,9 +61,17 @@ import java.util.stream.Collectors;
 @Service
 @RequiredArgsConstructor
 public class GuoRenApiRequestImpl implements GuoRenApiRequest {
+    private static final Logger logger = LoggerFactory.getLogger(GuoRenApiRequestImpl.class);
+
     private final GuoRenRequestApiComponent guoRenRequestApiComponent;
 
     private final GuoRenApiOrderService guoRenApiOrderService;
+
+    private final GuoRenApiConfigurationProperties properties;
+
+    private final RedisTemplate redisTemplate;
+
+
     /**
      * 报价
      * @param quoteVo 报价实体
@@ -57,23 +83,59 @@ public class GuoRenApiRequestImpl implements GuoRenApiRequest {
         //配置信息
         GuoRenConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(GuoRenConfigureParameters.class, orderBase.getAttributionInformationVo().getConfigInfo());
         CarInfoVo carInfoVo = quoteVo.getCarInfoVo();
-        ChannelInfoDTO channelInfoDTO = gainChannelConfigInfo(orderBase);
         //vin码查询
         VinQueryRequest vinQueryRequest = new VinQueryRequest();
         vinQueryRequest.setEngineNo(carInfoVo.getEngineNo());
         vinQueryRequest.setFrameNo(carInfoVo.getVinNo());
         vinQueryRequest.setLicenseNo(carInfoVo.getLicenseNo());
 
-        VinQueryResponse.DataDTO vinQuery = vinQuery(vinQueryRequest, channelInfoDTO);
+        VinQueryResponse.DataDTO vinQuery = vinQuery(vinQueryRequest, parameters);
         AssertionUtils.isEmpty(vinQuery, "未找到匹配的车辆信息");
 
         //车价查询
-        CarPriceResponse.DataDTO carPriceQuery = carPriceQuery(quoteVo, vinQuery, channelInfoDTO);
+        CarPriceResponse.DataDTO carPriceQuery = carPriceQuery(quoteVo, vinQuery, parameters);
         AssertionUtils.isEmpty(carPriceQuery, "车价获取失败");
 
+        //创建非车订单
+        boolean isNoCar = false;
+        String jsPremium = "0";
+        String orderCode = null;
+        String noCarPremium = "";
+        String goodsCode = "";
+        GuoRenAccidentalDrivingVo accidentalDrivingVo = getGuoRenAccidentalDrivingVo(quoteVo.getAccidentalDrivings());
+        if (accidentalDrivingVo != null) {
+            NonAutoInsOrderResponse nonAutoInsOrderResponse = nonAutoInsOrder(quoteVo, accidentalDrivingVo,
+                    carPriceQuery.getInputvo(), parameters, vinQuery);
+            AssertionUtils.isEmpty(nonAutoInsOrderResponse.getData(), nonAutoInsOrderResponse.getMessage());
+            orderCode = nonAutoInsOrderResponse.getData().getOrderCode();
+            isNoCar = true;
+            jsPremium = nonAutoInsOrderResponse.getData().getNoCarPremium();
+            noCarPremium = nonAutoInsOrderResponse.getData().getNoCarPremium();
+            goodsCode = accidentalDrivingVo.getGoodsCode();
+        }
 
+        //获取特约数据
+        List<GuoRenSpecialAgreementVo> specialAgreements = getSpecialAgreements(orderBase, parameters);
 
-        return null;
+        // 4、保费计算
+        PremiumResponse premiumResponse = premiumQuery(quoteVo, carPriceQuery, vinQuery, isNoCar,
+                specialAgreements, noCarPremium, goodsCode);
+        PremiumResponse.DataDTO premiumResult = premiumResponse.getData();
+        AssertionUtils.isEmpty(premiumResult, "保费计算失败");
+
+        //保存投保单 该接口返回投保单号
+        InsuranceSlipResponse insuranceSlipResponse = guoRenRequestApiComponent.insuranceSlip(quoteVo,
+                carPriceQuery.getInputvo(), orderCode, specialAgreements);
+
+        GuoRenApiOrder guoRenApiOrder = new GuoRenApiOrder();
+        guoRenApiOrder.setOrdersNo(orderBase.getOrdersNo());
+        guoRenApiOrder.setJqPremium(new BigDecimal(premiumResult.getSumPremiumCI()));
+        guoRenApiOrder.setSyPremium(new BigDecimal(premiumResult.getSumPremiumBI()));
+        guoRenApiOrder.setJqApplyNo(insuranceSlipResponse.getData().getProposalNoDetailVo().getProposalNoCI());
+        guoRenApiOrder.setSyApplyNo(insuranceSlipResponse.getData().getProposalNoDetailVo().getProposalNoBI());
+        guoRenApiOrderService.save(guoRenApiOrder);
+
+        return GuoRenApiQuoteResultsVoBuild.buildQuoteResultsVo(quoteVo, premiumResponse);
     }
 
     /**
@@ -83,36 +145,81 @@ public class GuoRenApiRequestImpl implements GuoRenApiRequest {
      */
     @Override
     public void underwriting(UnderwritingVo underwritingVo) {
+        OrderBase orderBase = underwritingVo.getOrder();
+        //配置信息
+        GuoRenConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(GuoRenConfigureParameters.class, orderBase.getAttributionInformationVo().getConfigInfo());
+        GuoRenApiOrder guoRenApiOrder = guoRenApiOrderService.findByOrdersNo(orderBase.getOrdersNo());
 
+        SubmitAuditResponse auditResponse = guoRenRequestApiComponent.submitAudit(guoRenApiOrder, parameters);
     }
 
     /**
      * 获取支付链接
-     *
      * @param orderBase
      */
     @Override
     public String getPaymentLink(OrderBase orderBase) throws JsonProcessingException {
+        //配置信息
+        GuoRenConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(GuoRenConfigureParameters.class, orderBase.getAttributionInformationVo().getConfigInfo());
+        GuoRenApiOrder guoRenApiOrder = guoRenApiOrderService.findByOrdersNo(orderBase.getOrdersNo());
+
+        PayResponse.DataDTO dataDTO = guoRenRequestApiComponent.getPaid(guoRenApiOrder, parameters);
+
         return "";
     }
 
     /**
      * 上传影像
-     *
      * @param insuranceUploadImageVo
      */
     @Override
     public void uploadImage(InsuranceUploadImageVo insuranceUploadImageVo) {
+        OrderBase orderBase = insuranceUploadImageVo.getOrder();
+        //配置信息
+        GuoRenConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(GuoRenConfigureParameters.class, orderBase.getAttributionInformationVo().getConfigInfo());
 
+        GuoRenApiOrder guoRenApiOrder = guoRenApiOrderService.findByOrdersNo(insuranceUploadImageVo.getOrder().getOrdersNo());
+        imageUpdate(guoRenApiOrder, parameters, insuranceUploadImageVo);
     }
 
     /**
      * 下载保单
-     *
      * @param orderBase
      */
     @Override
     public void downloadPolicy(OrderBase orderBase) {
+        //配置信息
+        GuoRenConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(GuoRenConfigureParameters.class, orderBase.getAttributionInformationVo().getConfigInfo());
+
+        String policyPrintType = "";//以后增加赋值
+        GuoRenApiOrder guoRenApiOrder = guoRenApiOrderService.findByOrdersNo(orderBase.getOrdersNo());
+        String riskCode = "";
+        String templateName;
+        String busNo = "";
+        String url;
+
+        if (InsuranceRisk.TRAFFIC.getCode().equals(riskCode)) {
+            PolicyResponse ciResponse = guoRenRequestApiComponent.policyPrint(guoRenApiOrder.getJqPolicyNo());
+            if (PolicyPrintType.PPT_1.getCode().equals(policyPrintType)) {
+                templateName = "-交强险标志.pdf";
+                //交强险标志
+                url = properties.getPolicyFlagUrl() + ciResponse.getData();
+            } else {
+                templateName = "-交强险保单.pdf";
+                url = properties.getPolicyUrl() + ciResponse.getData();
+            }
+        } else if (InsuranceRisk.BUSINESS.getCode().equals(riskCode)) {
+            templateName = "-商业险保单.pdf";
+            PolicyResponse biResponse = guoRenRequestApiComponent.policyPrint(guoRenApiOrder.getSyPolicyNo());
+            url = properties.getPolicyUrl() + biResponse.getData();
+        } else if (InsuranceRisk.ACCIDENT.getCode().equals(riskCode)) {
+            //busNo = policyPrintVo.getPolicyNumber();
+            url = guoRenRequestApiComponent.noCarElectronicPolicy(properties.getChannelCode(),
+                    orderBase.getOrdersNo(), busNo);//以后需观察参数是否正确
+            templateName = busNo + "-非车险保单.pdf";
+        } else {
+            throw new SystemException("保险编号异常");
+        }
 
     }
 
@@ -123,18 +230,16 @@ public class GuoRenApiRequestImpl implements GuoRenApiRequest {
      */
     @Override
     public void queryOrderState(OrderBase orderBase) {
+        //配置信息
+        GuoRenConfigureParameters parameters = ConfigureParametersConversion.conversionEntity(GuoRenConfigureParameters.class, orderBase.getAttributionInformationVo().getConfigInfo());
+        GuoRenApiOrder guoRenApiOrder = guoRenApiOrderService.findByOrdersNo(orderBase.getOrdersNo());
 
-    }
+        OrderStateRequest orderStateRequest = new OrderStateRequest();
+        orderStateRequest.addProposalNos(guoRenApiOrder.getJqApplyNo());
+        orderStateRequest.addProposalNos(guoRenApiOrder.getSyApplyNo());
 
-    /**
-     * 获取渠道配置信息
-     * @author: lig
-     * @date: 2023年08月25日 0025
-     */
-    private ChannelInfoDTO gainChannelConfigInfo(OrderBase orderBase) {
-        ChannelInfoDTO channelInfoDTO = ConfigureParametersConversion.conversionEntity(ChannelInfoDTO.class, orderBase.getAttributionInformationVo().getConfigInfo());
-        AssertionUtils.isEmpty(channelInfoDTO, "请先配置保险公司渠道信息");
-        return channelInfoDTO;
+        OrderStateResponse orderStateResponse = guoRenRequestApiComponent.request(orderStateRequest, PlatformInterfaceCode.API_IIRBT00010,
+                OrderStateResponse.class);
     }
 
     /**
@@ -143,8 +248,8 @@ public class GuoRenApiRequestImpl implements GuoRenApiRequest {
      * @author: lig
      * @date: 2023年08月18日 0018
      */
-    public VinQueryResponse.DataDTO vinQuery(VinQueryRequest vinQueryReq, ChannelInfoDTO channelInfo) {
-        VinQueryRequest req = new VinQueryRequest(vinQueryReq, channelInfo);
+    public VinQueryResponse.DataDTO vinQuery(VinQueryRequest vinQueryReq, GuoRenConfigureParameters parameters) {
+        VinQueryRequest req = new VinQueryRequest(vinQueryReq, parameters);
         VinQueryResponse resp = guoRenRequestApiComponent.request(req, PlatformInterfaceCode.API_IIRBT00009,
                 VinQueryResponse.class);
         if (resp.getResultCode() == 1) {
@@ -157,9 +262,9 @@ public class GuoRenApiRequestImpl implements GuoRenApiRequest {
      * 车价查询
      */
     public CarPriceResponse.DataDTO carPriceQuery(QuoteVo quoteVo, VinQueryResponse.DataDTO vinQ,
-                                                  ChannelInfoDTO channelInfo) {
+                                                  GuoRenConfigureParameters parameters) {
 
-        CarPriceRequest req = CarPriceRequest.buildCarPriceParam(quoteVo, vinQ, channelInfo);
+        CarPriceRequest req = CarPriceRequest.buildCarPriceParam(quoteVo, vinQ, parameters);
         JSONObject request = guoRenRequestApiComponent.request(req, PlatformInterfaceCode.API_IIRBT00003);
         Object cars = request.get("cars");
 
@@ -226,4 +331,154 @@ public class GuoRenApiRequestImpl implements GuoRenApiRequest {
         return resp.getData();
 
     }
+
+    /**
+     * 意外险转换
+     * @param accidentalDrivingVoList
+     * @return
+     */
+    public GuoRenAccidentalDrivingVo getGuoRenAccidentalDrivingVo(List<AccidentalDrivingVo> accidentalDrivingVoList) {
+        GuoRenAccidentalDrivingVo guoRenAccidentalDrivingVo = new GuoRenAccidentalDrivingVo();
+        if (accidentalDrivingVoList != null && !accidentalDrivingVoList.isEmpty()) {
+            AccidentalDrivingVo accidentalDrivingVo = accidentalDrivingVoList.get(0);
+            guoRenAccidentalDrivingVo.setAmount(accidentalDrivingVo.getSumAmount());
+            guoRenAccidentalDrivingVo.setPremium(accidentalDrivingVo.getSumPremium());
+            guoRenAccidentalDrivingVo.setRiskCode(accidentalDrivingVo.getRiskCode());
+            guoRenAccidentalDrivingVo.setQuantity(accidentalDrivingVo.getQuantity());
+            guoRenAccidentalDrivingVo.setProdCode(accidentalDrivingVo.getProductCode());
+            guoRenAccidentalDrivingVo.setGoodsCode(accidentalDrivingVo.getProductCategoryCode());
+            guoRenAccidentalDrivingVo.setGoodsName(accidentalDrivingVo.getProductCategoryName());
+        }
+        return guoRenAccidentalDrivingVo;
+    }
+
+    /**
+     * 创建非车订单
+     * @author: lig
+     * @date: 2023-09-28
+     */
+    public NonAutoInsOrderResponse nonAutoInsOrder(QuoteVo quoteVo,
+                                                   GuoRenAccidentalDrivingVo accidentalDrivingVo,
+                                                   String carPriceUuid, GuoRenConfigureParameters channelInfo,
+                                                   VinQueryResponse.DataDTO vinQ) {
+        //构造请求参数
+        NonAutoInsOrderRequest nonAutoInsOrderReq = new NonAutoInsOrderRequest(quoteVo, vinQ, accidentalDrivingVo,
+                channelInfo,
+                carPriceUuid, properties.getChannelCode());
+        return guoRenRequestApiComponent.request(nonAutoInsOrderReq, PlatformInterfaceCode.API_IIIRBT00054,
+                NonAutoInsOrderResponse.class);
+    }
+
+    /**
+     * 查询国任特约数据
+     * @param orderBase 原参数为agreementId,以后看orderbase中的配置信息map中是否可以获取
+     * @return
+     */
+    public List<GuoRenSpecialAgreementVo> getSpecialAgreements(OrderBase orderBase, GuoRenConfigureParameters parameters) {
+        // 获取协议配置信息
+        String specialAgreementKey = GR_SPECIAL_AGREEMENT_KEY + orderBase.getOrdersNo();
+
+        // 从缓存中获取数据
+        String info = (String) redisTemplate.opsForValue().get(specialAgreementKey);
+        if (!StringUtils.isEmpty(info)) {
+            List<GuoRenSpecialAgreementVo> list = JSON.parseArray(info, GuoRenSpecialAgreementVo.class);
+            return list;
+        }
+
+        List<GuoRenSpecialAgreementVo> list = new ArrayList<>();
+        for (InsuranceRisk insuranceRisk : InsuranceRisk.getInsuranceRisk()) {
+            String riskCode = GuoRenRiskCode.toInsuranceRisk(insuranceRisk.getCode());
+            SpecialAgreementRequest specialAgreementRequest = new SpecialAgreementRequest(parameters.getComCode(),
+                    riskCode);
+            SpecialAgreementResponse response = guoRenRequestApiComponent.request(specialAgreementRequest,
+                    PlatformInterfaceCode.API_IIRBT00005, SpecialAgreementResponse.class);
+
+            AssertionUtils.isFail("1".equals(response.getResultCode().toString()), response.getResultMsg());
+
+            List<GuoRenSpecialAgreementVo> collect =
+                    response.getData().stream().map(x -> new GuoRenSpecialAgreementVo(x, insuranceRisk)).collect(Collectors.toList());
+            list.addAll(collect);
+        }
+
+        // 数据存入缓存
+        if (!list.isEmpty()) {
+            redisTemplate.opsForValue().set(specialAgreementKey, JSON.toJSONString(list), GR_SPECIAL_AGREEMENT_TIME,
+                    TimeUnit.DAYS);
+        }
+        return list;
+    }
+
+    public PremiumResponse premiumQuery(QuoteVo quoteVo, CarPriceResponse.DataDTO carPriceQuery, VinQueryResponse.DataDTO vinQuery, Boolean isNoCar,
+                                        List<GuoRenSpecialAgreementVo> specialAgreements, String noCarPremium, String goodsCode) {
+        //请求信息列表
+        List<String> requestInfoList = new ArrayList<>();
+        boolean boo;
+        //构造请求参数
+        PremiumRequest premiumRequest = PremiumRequest.buildQuoteParam(quoteVo, carPriceQuery, vinQuery, isNoCar, specialAgreements, noCarPremium, goodsCode);
+        PremiumResponse premiumResponse = guoRenRequestApiComponent.request(premiumRequest, PlatformInterfaceCode.API_IIRBT00004, PremiumResponse.class);
+
+        premiumResponse.getData().setCiStartDate(premiumRequest.getCi().getPrpTmain().getStartDate());
+        premiumResponse.getData().setCiEndDate(premiumRequest.getCi().getPrpTmain().getEndDate());
+        premiumResponse.getData().setBiStartDate(premiumRequest.getBi().getPrpTmain().getStartDate());
+        premiumResponse.getData().setBiEndDate(premiumRequest.getBi().getPrpTmain().getEndDate());
+
+        return premiumResponse;
+    }
+
+    /**
+     * 影像上传 调用三方
+     */
+    public void imageUpdate(GuoRenApiOrder guoRenApiOrder, GuoRenConfigureParameters parameters, InsuranceUploadImageVo insuranceUploadImageVo) {
+
+        //构造请求参数
+        Map<String, Object> formMap = new HashMap<>();
+        formMap.put("businessNo", StringUtils.isEmpty(guoRenApiOrder.getJqApplyNo()) ? guoRenApiOrder.getSyApplyNo() : guoRenApiOrder.getJqApplyNo());
+        formMap.put("operatorCode", parameters.getHandlerCode());
+        formMap.put("comCode", parameters.getComCode());
+        formMap.put("fileGroup", "DZ");
+
+        List<InsuranceImageVo> imageVoList = insuranceUploadImageVo.getImageVoList();
+        Map<String, String> map = new HashMap<>();
+
+        imageVoList.forEach(insuranceImageVo -> {
+            for (InsuranceImageVo.ImageDTO imageDTO : insuranceImageVo.getImageBase64List()) {
+                String imageBase64Str = imageDTO.getImageBase64Str();
+                byte[] imageBytes = Base64.getDecoder().decode(imageBase64Str);
+                try {
+                    //需要设置一个临时图片路径
+                    FileOutputStream fileOutputStream = new FileOutputStream("图片临时路径");
+                    fileOutputStream.write(imageBytes);
+                    fileOutputStream.close();
+                    FilePart file1 = new FilePart("file", new File("图片临时路径"));
+
+                    Part[] parts = {file1, new StringPart("businessNo", formMap.get("businessNo").toString()),
+                            new StringPart("operatorCode",
+                                    formMap.get("operatorCode").toString()), new StringPart("comCode",
+                            formMap.get("comCode").toString()),
+                            new StringPart("fileGroup", formMap.get("fileGroup").toString())};
+
+                    String result = HttpUtil.sendPostFromFile(parts, properties.getUploadUrl());
+                    if (StringUtils.isEmpty(result)) {
+                        throw new SystemException("国任,影像上传失败");
+                    }
+
+                    JSONObject jsonObject = JSON.parseObject(result);
+
+                    if (StringUtils.toInt(jsonObject.get("resultCode")) != 0) {
+                        throw new SystemException("国任,影像上传失败");
+                    }
+                    map.put(insuranceImageVo.getImageCode(), imageDTO.getImageId());
+
+                } catch (Exception e) {
+                    logger.error("国任上传影像异常:{}", e.getMessage());
+                    // 上传的影像存入redis
+                    //insImagesUploadCacheComponents.setUploadImageCache(insuranceUploadImageVo.getOrder().getOrdersNo(), map);
+                    throw new SystemException("国任,影像上传失败,类型:" + insuranceImageVo.getImageType());
+                }
+            }
+        });
+
+        //insImagesUploadCacheComponents.setUploadImageCache(iac.getCompanyId(), map);
+    }
+
 }

+ 1 - 2
tenant/insurance/quotation-huatai/src/main/java/com/jzg/quote/huatai/api/component/HuiTaiUploadImageComponent.java

@@ -121,8 +121,7 @@ public class HuiTaiUploadImageComponent {
      */
     private FileuploadResult fileupload(String domain, String token, HuaTaiImageInitParamResponse initParamResponse, String imageBase64Str,
                                         String fileName) {
-        Charset charset = Charset.forName(CharsetKit.UTF_8);
-        byte[] bytes = imageBase64Str.getBytes(charset);
+        byte[] bytes = Base64.getDecoder().decode(imageBase64Str);
         double v = (double) bytes.length / 1024;
         HttpHeaders httpHeaders = new HttpHeaders();
         httpHeaders.setAccept(Collections.singletonList(MediaType.MULTIPART_FORM_DATA));