Parcourir la source

华泰核保提示信息调整及公共方法提炼

cuixinpeng il y a 2 ans
Parent
commit
16939dac80

+ 19 - 0
src/main/java/com/ydtech/modules/order/entity/api/huatai/constants/HuaTaiSubmitCommon.java

@@ -0,0 +1,19 @@
+package com.ydtech.modules.order.entity.api.huatai.constants;
+
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * @Author CXP
+ * @Date 2023/11/14 10:48
+ */
+@NoArgsConstructor
+@Data
+public class HuaTaiSubmitCommon implements Serializable {
+
+    private static final long serialVersionUID = 1909906073374479618L;
+    String totalUnderWriteInd;
+    String notion;
+}

+ 16 - 1
src/main/java/com/ydtech/modules/order/entity/api/huatai/request/HuaTaiQuotedPriceRequest.java

@@ -498,10 +498,15 @@ public class HuaTaiQuotedPriceRequest extends HuaTaiBaseRequest {
                     coverageDto.expiryDate = contractMain.getExpiryDate();
                     coverageDto.unitAmount =  String.valueOf(kindInfoVo.getUnitAmount());
                     // 车损
-                    if ("A".equals(code)) {//中煤特殊处理
+                    if ("A".equals(code)) {
                         //车损险保额
                         coverageDto.amount = actualValueResponse.getActualValue();
                     }
+                    //含三者时,自动赠送救援俩次
+                    if ("B".equals(code)) {
+                        CoverageDto coverageDtoTemp =getSRCoverage(contractMain);
+                        list.add(coverageDtoTemp);
+                    }
                     // 司机
                     if (ArrayUtil.indexOf(InsuranceTypeCorrespondence.getDriver(), code) >= 0) {
                         coverageDto.quantity = "1";
@@ -521,6 +526,16 @@ public class HuaTaiQuotedPriceRequest extends HuaTaiBaseRequest {
                 }
                 return list;
             }
+            //SR	附加机动车道路救援服务特约条款
+            public CoverageDto getSRCoverage(ContractMainDto contractMain){
+                CoverageDto coverageDto = new CoverageDto();
+                coverageDto.kindCode = "SR";
+                coverageDto.kindName = "附加机动车道路救援服务特约条款";
+                coverageDto.validDate = contractMain.getValidDate();
+                coverageDto.expiryDate = contractMain.getExpiryDate();
+                coverageDto.serviceTimes = "2";
+                return  coverageDto;
+            }
             /**
              * 交强险
              *

+ 59 - 46
src/main/java/com/ydtech/modules/order/service/impl/HuaTaiOrderApiServiceImpl.java

@@ -17,6 +17,7 @@ import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrders;
 import com.ydtech.modules.order.entity.TaxArrears;
 import com.ydtech.modules.order.entity.api.huatai.HuaTaiBaseRequestHead;
+import com.ydtech.modules.order.entity.api.huatai.constants.HuaTaiSubmitCommon;
 import com.ydtech.modules.order.entity.api.huatai.request.*;
 import com.ydtech.modules.order.entity.api.huatai.response.*;
 import com.ydtech.modules.order.entity.config.HuaTaiConfigureParameters;
@@ -230,24 +231,24 @@ public class HuaTaiOrderApiServiceImpl implements HuaTaiOrderApiService {
 
         if ("4".equals(totalStatus)) {
             //再调用缴费接口获取缴费链接
-            String payUrl = getPaymentUrl(insAreaCompany, huaTaiConfigureParameters);
-            if (StringUtils.isNotEmpty(payUrl)) {
-                insAreaCompany.setPaymentLink(payUrl);
-                insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());
-                insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
-                return HttpResult.ok("核保成功");
-            } else {
-                insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_AUDIT.getCode());
-                insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
-                return HttpResult.error("获取支付链接失败");
-            }
+            return getPayURL(insAreaCompany,huaTaiConfigureParameters);
         } else if ("1".equals(totalStatus)) {
-            //再次调用提交核保接口
+            //调用提交核保接口
             HuaTaiSubmitStatusQueryResponse submitStatusQueryResponse = submitStatus(insAreaCompany, huaTaiConfigureParameters, "1");
+            HuaTaiSubmitCommon huaTaiSubmitCommon = getSubmitStatus(insAreaCompany,submitStatusQueryResponse);
             //根据核保返回信息进行更新
-            insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_AUDIT.getCode());
-            insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
-            return HttpResult.error("已转人工核保");
+            if ("8".equals(huaTaiSubmitCommon.getTotalUnderWriteInd())) {//已通过核保未实收
+                //再调用缴费接口获取缴费链接
+                return getPayURL(insAreaCompany,huaTaiConfigureParameters);
+            } else if ("9".equals(huaTaiSubmitCommon.getTotalUnderWriteInd())) {//待核保
+                insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_AUDIT.getCode());
+                insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+                return HttpResult.ok("已转人工核保");
+            } else{//当状态为核保不通过时,调整保单状态为报价中
+                insAreaCompany.setOrderstatus(InsOrderStatusEnum.QUOTE_ING.getCode());
+                insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+                return HttpResult.error("核保不通过:" + huaTaiSubmitCommon.getNotion());//需要处理放入核保原因
+            }
         } else {
             String notion = jqNotion.toString() + syNotion.toString();
             insAreaCompany.setOrderstatus(InsOrderStatusEnum.TO_BACK.getCode());
@@ -256,6 +257,19 @@ public class HuaTaiOrderApiServiceImpl implements HuaTaiOrderApiService {
         }
     }
 
+    private HttpResult<Object> getPayURL(InsAreaCompany insAreaCompany,HuaTaiConfigureParameters huaTaiConfigureParameters){
+        String payUrl = getPaymentUrl(insAreaCompany, huaTaiConfigureParameters);
+        if (StringUtils.isNotEmpty(payUrl)) {
+            insAreaCompany.setPaymentLink(payUrl);
+            insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());
+            insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+            return HttpResult.ok("核保成功");
+        } else {
+            insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_AUDIT.getCode());
+            insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+            return HttpResult.error("获取支付链接失败");
+        }
+    }
     @Override
     public HttpResult<Object> submitImage(String companyId) {
         InsAreaCompany insAreaCompany = insAreaCompanyService.getById(companyId);
@@ -407,18 +421,19 @@ public class HuaTaiOrderApiServiceImpl implements HuaTaiOrderApiService {
     }
 
     /**
+     * 调用转投保接口
      * @param yaQuoteInfoVo
      * @param insAreaCompany
      * @param huaTaiConfigureParameters
      * @return
      */
-    public HuaTaiSubmitResponse submitForUnderwriting(YaQuoteInfoVo yaQuoteInfoVo, InsAreaCompany insAreaCompany, HuaTaiConfigureParameters huaTaiConfigureParameters) {
+    private HuaTaiSubmitResponse submitForUnderwriting(YaQuoteInfoVo yaQuoteInfoVo, InsAreaCompany insAreaCompany, HuaTaiConfigureParameters huaTaiConfigureParameters) {
         HuaTaiSubmitRequest submitRequest = new HuaTaiSubmitRequest(yaQuoteInfoVo, insAreaCompany, huaTaiConfigureParameters);
         submitRequest.setHead(new HuaTaiBaseRequestHead(huaTaiConfigureParameters));
         return huaTaiRequestApiComponents.submit(submitRequest, HuaTaiSubmitResponse.class);
     }
 
-    public QuoteRespVo getQuoteRespVo(HuaTaiQuotedPriceResponse quotedPriceResponse, BaseQuoteInfoVo yaQuoteInfoVo) {
+    private QuoteRespVo getQuoteRespVo(HuaTaiQuotedPriceResponse quotedPriceResponse, BaseQuoteInfoVo yaQuoteInfoVo) {
         double jqPremium = 0;
         double syPremium = 0;
         double jqDiscount = 0;
@@ -498,7 +513,7 @@ public class HuaTaiOrderApiServiceImpl implements HuaTaiOrderApiService {
         return quoteRespVo;
     }
 
-    public HttpResult<QuoteRespVo> responseOrder(HuaTaiQuotedPriceResponse quotedPriceResponse, QuoteRespVo quoteRespVo, PtlAgreementAttribution ptlAgreementAttribution) {
+    private HttpResult<QuoteRespVo> responseOrder(HuaTaiQuotedPriceResponse quotedPriceResponse, QuoteRespVo quoteRespVo, PtlAgreementAttribution ptlAgreementAttribution) {
         //保存订单信息
         InsAreaCompany insAreaCompany = new InsAreaCompany(quoteRespVo, ptlAgreementAttribution);
         //华泰没有总订单号,使用自定义订单号
@@ -533,7 +548,6 @@ public class HuaTaiOrderApiServiceImpl implements HuaTaiOrderApiService {
 
     /**
      * 提交核保及查询核保状态接口
-     *
      * @param companyId
      * @return
      */
@@ -548,13 +562,35 @@ public class HuaTaiOrderApiServiceImpl implements HuaTaiOrderApiService {
         }
 
         // 2. 组装请求体
+        HuaTaiSubmitStatusQueryResponse submitStatusQueryResponse = submitStatus(insAreaCompany, huaTaiConfigureParameters, "2");
+
+        HuaTaiSubmitCommon huaTaiSubmitCommon = getSubmitStatus(insAreaCompany,submitStatusQueryResponse);
+
+        // 3. 通过返回核保状态修改状态
+        if ("8".equals(huaTaiSubmitCommon.getTotalUnderWriteInd())) {//已通过核保未实收
+            //再调用缴费接口获取缴费链接
+            return getPayURL(insAreaCompany,huaTaiConfigureParameters);
+        } else if ("6".equals(huaTaiSubmitCommon.getTotalUnderWriteInd())) {//当状态为核保不通过时,调整保单状态为报价中
+            insAreaCompany.setOrderstatus(InsOrderStatusEnum.QUOTE_ING.getCode());
+            insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+            return HttpResult.error("核保不通过:" + huaTaiSubmitCommon.getNotion());//需要处理放入核保原因
+        } else if ("9".equals(huaTaiSubmitCommon.getTotalUnderWriteInd())) {//待核保
+            return HttpResult.ok("正在核保中");//需要处理放入核保原因
+        } else if ("1".equals(huaTaiSubmitCommon.getTotalUnderWriteInd())) {//已通过核保已实收
+            return HttpResult.ok("已经核保通过且生成保单,若实际状态为待缴费,请点击缴费状态查询进行更新!");
+        } else {
+            return HttpResult.error("未知错误,当前核保状态为"+huaTaiSubmitCommon.getTotalUnderWriteInd());
+        }
+    }
+
+    private HuaTaiSubmitCommon getSubmitStatus(InsAreaCompany insAreaCompany ,HuaTaiSubmitStatusQueryResponse submitStatusQueryResponse){
+        HuaTaiSubmitCommon huaTaiSubmitCommon = new HuaTaiSubmitCommon();
         boolean haveJQFlag = false;
         boolean haveSYFlag = false;
         String jqStatus = "";
         String syStatus = "";
         StringBuffer jqNotion = new StringBuffer();
         StringBuffer syNotion = new StringBuffer();
-        HuaTaiSubmitStatusQueryResponse submitStatusQueryResponse = submitStatus(insAreaCompany, huaTaiConfigureParameters, "2");
         for (HuaTaiSubmitStatusQueryResponse.AppliResult appliResult : submitStatusQueryResponse.getAppliResult()) {
             if (StringUtils.isNotEmpty(insAreaCompany.getJqapplyno())) {
                 haveJQFlag = true;
@@ -612,33 +648,10 @@ public class HuaTaiOrderApiServiceImpl implements HuaTaiOrderApiService {
                 totalUnderWriteInd = "6";
             }
         }
-        String underWriteInd = "";
-        // 3. 通过返回核保状态修改状态
-        if ("8".equals(totalUnderWriteInd)) {
-            //再调用缴费接口获取缴费链接
-            String payUrl = getPaymentUrl(insAreaCompany, huaTaiConfigureParameters);
-            if (StringUtils.isNotEmpty(payUrl)) {
-                insAreaCompany.setPaymentLink(payUrl);
-                insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());
-                insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
-                return HttpResult.ok("核保成功");
-            } else {
-                insAreaCompany.setOrderstatus(InsOrderStatusEnum.WAIT_AUDIT.getCode());
-                insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
-                return HttpResult.error("获取支付链接失败");
-            }
-        } else if ("6".equals(underWriteInd)) {//当状态为核保不通过时,调整保单状态为报价中
-            String notion = jqNotion.toString() + syNotion.toString();
-            insAreaCompany.setOrderstatus(InsOrderStatusEnum.QUOTE_ING.getCode());
-            insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
-            return HttpResult.error("核保不通过:" + notion);//需要处理放入核保原因
-        } else if ("9".equals(underWriteInd)) {//当状态为核保不通过时,调整保单状态为报价中
-            return HttpResult.ok("正在核保中");//需要处理放入核保原因
-        } else {
-            return HttpResult.ok(underWriteInd);
-        }
+        huaTaiSubmitCommon.setTotalUnderWriteInd(totalUnderWriteInd);
+        huaTaiSubmitCommon.setNotion(jqNotion.toString()+syNotion.toString());
+        return huaTaiSubmitCommon;
     }
-
     /**
      * 提交核保或核保查询接口
      *