Эх сурвалжийг харах

中煤API新增核保状态查询接口;调整使用页面传入使用性质转换报价保司参数逻辑;报价完存储保司投保单号到insareaCompany子订单表;统一保司投保单号查询订单表逻辑

cuixinpeng 3 жил өмнө
parent
commit
45f4f2606c

+ 19 - 12
src/main/java/com/ydtech/modules/order/components/ZhongmeiRequestApiComponents.java

@@ -7,11 +7,13 @@ import com.ydtech.constants.InsuranceEnum;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.order.entity.api.zm.BaseRequest;
 import com.ydtech.modules.order.entity.api.zm.BaseResponse;
+import com.ydtech.modules.order.entity.api.zm.constants.TransCode;
 import com.ydtech.modules.order.entity.api.zm.request.*;
 import com.ydtech.modules.order.entity.api.zm.response.*;
 import com.ydtech.modules.order.utils.AESUtilsWithDataBase;
 import com.ydtech.modules.order.utils.InsuranceLog;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
@@ -112,8 +114,13 @@ public class ZhongmeiRequestApiComponents {
      * @param verify  结果是否需要验证
      * @return 响应内容
      */
-    private <Q extends BaseRequest, S extends BaseResponse> S request(Q request, Class<S> tClass, boolean verify, String domain) {
-        String url = domain + request.getHead().getTransCode() + ".do";
+    private <Q extends BaseRequest, S extends BaseResponse> S request(Q request, Class<S> tClass, boolean verify, String domain,String urlInterface) {
+        String url = domain ;
+        if(StringUtils.isNotEmpty(urlInterface)){
+            url = url + urlInterface + ".do";
+        }else{
+            url = url + request.getHead().getTransCode() + ".do";
+        }
         S response = post(request, url, tClass);
         if (verify) {
             validationResults(response);
@@ -126,8 +133,8 @@ public class ZhongmeiRequestApiComponents {
      * @param <S> Response 响应体
      *            常规
      */
-    private <Q extends BaseRequest, S extends BaseResponse> S routineRequest(Q request, Class<S> tClass, boolean verify) {
-        return request(request, tClass, verify, properties.getUrl());
+    private <Q extends BaseRequest, S extends BaseResponse> S routineRequest(Q request, Class<S> tClass, boolean verify,String urlInterface) {
+        return request(request, tClass, verify, properties.getUrl(),urlInterface);
     }
 
     /**
@@ -136,7 +143,7 @@ public class ZhongmeiRequestApiComponents {
      *            影像
      */
     private <Q extends BaseRequest, S extends BaseResponse> void imageRequest(Q request, Class<S> tClass, boolean verify) {
-        request(request, tClass, verify, properties.getUrl());
+        request(request, tClass, verify, properties.getUrl(),"");
     }
 
     /**
@@ -145,7 +152,7 @@ public class ZhongmeiRequestApiComponents {
      *            短信
      */
     private <Q extends BaseRequest, S extends BaseResponse> S smsRequest(Q request, Class<S> tClass, boolean verify) {
-        return request(request, tClass, verify, properties.getSmsUrl());
+        return request(request, tClass, verify, properties.getSmsUrl(),"");
     }
 
 
@@ -153,14 +160,14 @@ public class ZhongmeiRequestApiComponents {
      * 车型查询 传入必要车辆信息,返回车型列表给用户选择
      */
     public List<ModelsQueryResponse.SimpleStadarCarDTO> modelQuery(ModelsQueryRequest request, Class<ModelsQueryResponse> tClass) {
-        return routineRequest(request, tClass, true).getSimpleStadarCar();
+        return routineRequest(request, tClass, true,"").getSimpleStadarCar();
     }
 
     /**
      * 报价 传入必要投保方案信息,返回投保单保费及车船税
      */
     public QuotedPriceResponse quotedPrice(QuotedPriceRequest request, Class<QuotedPriceResponse> tClass) {
-        return routineRequest(request, tClass, true);
+        return routineRequest(request, tClass, true,"");
     }
 
     /**
@@ -170,7 +177,7 @@ public class ZhongmeiRequestApiComponents {
         request.setCallbackUrl(properties.getCallbackDomain() + properties.getCallbackUrl());
         request.setPageUrl(properties.getPageUrl());
         request.setPassMsgUrl(properties.getCallbackDomain() + properties.getPassMsgUrl());
-        return routineRequest(request, tClass, false);
+        return routineRequest(request, tClass, false,"");
     }
 
     /**
@@ -184,21 +191,21 @@ public class ZhongmeiRequestApiComponents {
      * 缴费查询
      */
     public OrderStatusResponse orderStatus(OrderStatusRequest request, Class<OrderStatusResponse> tClass) {
-        return routineRequest(request, tClass, true);
+        return routineRequest(request, tClass, true,"");
     }
 
     /**
      * 核保状态查询 传入单号查询该单核保状态
      */
     public SubmitStatusQueryResponse submitStatus(SubmitStatusQueryRequest request, Class<SubmitStatusQueryResponse> tClass) {
-        return routineRequest(request, tClass, true);
+        return routineRequest(request, tClass, true, TransCode.SUBMIT_STATUS);
     }
 
     /**
      * 电子保单下载 传入单号相关信息下载电子保单
      */
     public InsurancePolicyPrintResponse insurancePolicyPrint(InsurancePolicyPrintRequest request, Class<InsurancePolicyPrintResponse> tClass) {
-        return routineRequest(request, tClass, true);
+        return routineRequest(request, tClass, true,"");
     }
 
     /**

+ 11 - 0
src/main/java/com/ydtech/modules/order/constants/InsuranceTypeCorrespondence.java

@@ -38,6 +38,14 @@ public class InsuranceTypeCorrespondence {
         RISK.put("0510", "0361");
     }
 
+    //中煤使用性质转换关系
+    protected static final Map<String, String> ZM_CAR_MotorUsageTypeCode = new HashMap<>();
+
+    static {
+        ZM_CAR_MotorUsageTypeCode.put("XX", "01");//营业
+        ZM_CAR_MotorUsageTypeCode.put("8A", "02");//非营业
+    }
+
     public static String[] getJinZhangGuiType() {
         return JINZHANGGUI_TYPE;
     }
@@ -66,4 +74,7 @@ public class InsuranceTypeCorrespondence {
         return RISK;
     }
 
+    public static Map<String, String> getZM_CAR_MotorUsageTypeCode() {
+        return ZM_CAR_MotorUsageTypeCode;
+    }
 }

+ 5 - 0
src/main/java/com/ydtech/modules/order/controller/ZhongMeiOrderApiController.java

@@ -97,4 +97,9 @@ public class ZhongMeiOrderApiController {
         return this.zhongMeiOrderApiService.auditCallback(approvedRequest);
     }
 
+    @PostMapping("/auditStatusQuery")
+    @ApiOperation(value = "核保状态查询")
+    public HttpResult<Object> auditStatusQuery(@RequestSingleParam(value = "companyId") String companyId) {
+        return this.zhongMeiOrderApiService.auditStatusQuery(companyId);
+    }
 }

+ 1 - 1
src/main/java/com/ydtech/modules/order/entity/api/zm/request/QuotedPriceRequest.java

@@ -254,7 +254,7 @@ public class QuotedPriceRequest extends BaseRequest {
                     this.plateColorCode = "01";
                     this.carCheckStatus = null;
                     this.carUseType = "01";
-                    this.motorUsageTypeCode = "02";
+                    this.motorUsageTypeCode = InsuranceTypeCorrespondence.getZM_CAR_MotorUsageTypeCode().get(carInfoVo.getCarnature());
                 }
             }
 

+ 1 - 1
src/main/java/com/ydtech/modules/order/entity/api/zm/request/SubmitStatusQueryRequest.java

@@ -30,7 +30,7 @@ public class SubmitStatusQueryRequest extends BaseRequest {
 
     @Override
     public BaseRequestHead getHead() {
-        super.getHead().setTransCode(TransCode.SUBMIT_STATUS);
+        super.getHead().setTransCode(TransCode.SUBMIT_STATUS_QUERY);
         return super.getHead();
     }
 

+ 18 - 0
src/main/java/com/ydtech/modules/order/entity/api/zm/response/SubmitStatusQueryResponse.java

@@ -17,12 +17,30 @@ public class SubmitStatusQueryResponse extends BaseResponse {
 
     private static final long serialVersionUID = 3300504283034316836L;
 
+    /**
+     * 核保状态
+     * 初始状态/核保通过/核保不通过/自动核保/拒保/复核通过/承保确认/复核不通过/待复核/待核保
+     */
     @JsonProperty("underWriteInd")
     private String underWriteInd;
 
+    /**
+     * 主投保单号
+     */
     @JsonProperty("proposalNo")
     private String proposalNo;
 
+    /**
+     * 支付地址
+     * 当核保状态为通过时返回该字段
+     */
     @JsonProperty("payUrl")
     private String payUrl;
+
+    /**
+     * 下发原因
+     * 当核保不通过时,返回下发修改原因
+     */
+    @JsonProperty("issuedReason")
+    private String issuedReason;
 }

+ 7 - 0
src/main/java/com/ydtech/modules/order/service/ZhongMeiOrderApiService.java

@@ -57,4 +57,11 @@ public interface ZhongMeiOrderApiService extends BaseOrderService<AccidentalDriv
      * @return 响应
      */
     HttpResult<Object> paymentEnquiry(String companyId);
+
+    /**
+     * 核保状态查询
+     * @param companyId
+     * @return
+     */
+    HttpResult<Object> auditStatusQuery(String companyId);
 }

+ 39 - 9
src/main/java/com/ydtech/modules/order/service/impl/ZhongMeiOrderApiServiceImpl.java

@@ -148,7 +148,7 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
 
     @Override
     public HttpResult<Object> audit(String companyId) {
-        InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(companyId);
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getByInsOrderNo(companyId);
         // 1. 协议id获取配置实体
         ZmConfigureParameters zmConfigureParameters = configureParametersComponents.toEntity(ZmConfigureParameters.class, insAreaCompany.getAgreementId());
 
@@ -160,6 +160,7 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
         // 3. 人工核保
         if (SubmitStatus.S_3.getCode().equals(response.getSubmitStatus())) {
             insAreaCompany.setOrderstatus(InsOrderStatus.S_1.getCode());
+            insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
             return HttpResult.error(response.getSubmitNotion());
         }
         zhongmeiRequestApiComponents.validationResults(response);
@@ -176,7 +177,7 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
 
     @Override
     public HttpResult<Object> submitImage(String companyId) {
-        InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(companyId);
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getByInsOrderNo(companyId);
         // 1. 协议id获取配置实体
         ZmConfigureParameters zmConfigureParameters = configureParametersComponents.toEntity(ZmConfigureParameters.class, insAreaCompany.getAgreementId());
 
@@ -200,7 +201,7 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
             if (coverageRequest.getStatus() == PaymentStatusEnum.P_2.getCode()) {
                 // 主投保单号
                 String proposalNo = coverageRequest.getProposalNo();
-                InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(proposalNo);
+                InsAreaCompany insAreaCompany = insAreaCompanyService.getByInsOrderNo(proposalNo);
                 // 保单号
                 insAreaCompany.setJqpolicyno(coverageRequest.getForcePolicyNo());
                 insAreaCompany.setSypolicyno(coverageRequest.getBizPolicyNo());
@@ -220,7 +221,7 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
         try {
             // 主投保单号
             String contractNo = approvedRequest.getContractNo();
-            InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(contractNo);
+            InsAreaCompany insAreaCompany = insAreaCompanyService.getByInsOrderNo(contractNo);
             if (AuditStatusEnum.S_1.getCode().equals(approvedRequest.getStatusCode())) {
                 insAreaCompany.setJqapplyno(approvedRequest.getProposalNoJ());
                 insAreaCompany.setSyapplyno(approvedRequest.getProposalNoS());
@@ -273,7 +274,7 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
 
     @Override
     public HttpResult<List<String>> getPolicyPrint(PolicyPrintVo policyPrintVo) {
-        InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(policyPrintVo.getCompanyId());
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getByInsOrderNo(policyPrintVo.getCompanyId());
         // 1. 协议id获取配置实体
         ZmConfigureParameters zmConfigureParameters = configureParametersComponents.toEntity(ZmConfigureParameters.class, insAreaCompany.getAgreementId());
 
@@ -383,10 +384,7 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
         //保存订单信息
         InsAreaCompany insAreaCompany = new InsAreaCompany(quoteRespVo, ptlAgreementAttribution);
         insAreaCompany.setId(quotedPriceResponse.getBusinessNo());
-        // 协议id
-//        insAreaCompany.setJqapplyno(submitResponse.getForceProposalNo());
-//        insAreaCompany.setSyapplyno(submitResponse.getBizProposalNo());
-//        insAreaCompany.setInsOrderNo(quotedPriceResponse.getBusinessNo());
+        insAreaCompany.setInsOrderNo(quotedPriceResponse.getBusinessNo());
         // 车船税
         TaxArrears taxArrears = new TaxArrears("往年欠税", quotedPriceResponse.getTaxinfo().getPrePayTax(), quotedPriceResponse.getTaxinfo().getDelayPayTax());
         List<TaxArrears> taxArrearsList = Collections.singletonList(taxArrears);
@@ -398,6 +396,38 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
         return HttpResult.ok(quotedPriceResponse.getHead().getReturnMessage(), quoteRespVo);
     }
 
+    @Override
+    public HttpResult<Object> auditStatusQuery(String companyId) {
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getByInsOrderNo(companyId);
+        // 1. 协议id获取配置实体
+        ZmConfigureParameters zmConfigureParameters = configureParametersComponents.toEntity(ZmConfigureParameters.class, insAreaCompany.getAgreementId());
+
+        if (insAreaCompany.getOrderstatus().equals(InsOrderStatus.S_2.getCode())) {
+            return HttpResult.ok(InsOrderStatus.S_2.getDesc());
+        }
+
+        // 2. 组装请求体
+        SubmitStatusQueryRequest submitStatusQueryRequest = new SubmitStatusQueryRequest();
+        submitStatusQueryRequest.setProposalNo(insAreaCompany.getInsOrderNo());
+        submitStatusQueryRequest.setHead(new BaseRequestHead(zmConfigureParameters));
+
+        SubmitStatusQueryResponse submitStatusQueryResponse = zhongmeiRequestApiComponents.submitStatus(submitStatusQueryRequest, SubmitStatusQueryResponse.class);
+        String underWriteInd = submitStatusQueryResponse.getUnderWriteInd();
+
+        // 3. 通过返回核保状态修改状态
+        if ("核保通过".equals(underWriteInd) || "自动核保".equals(underWriteInd)) {
+            insAreaCompany.setPaymentLink(submitStatusQueryResponse.getPayUrl());
+            insAreaCompany.setOrderstatus(InsOrderStatus.S_2.getCode());//当核保状态返回核保通过时,调整保单状态为已核保待缴费
+            insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+            return HttpResult.ok(underWriteInd);
+        }else if("核保不通过".equals(underWriteInd)){//当状态为核保不通过时,调整保单状态为报价中
+            insAreaCompany.setOrderstatus(InsOrderStatus.S_0.getCode());
+            insAreaCompanyService.updateCompanyAndOrders(insAreaCompany);
+            return HttpResult.error("核保不通过:"+submitStatusQueryResponse.getIssuedReason());
+        }else {
+            return HttpResult.ok(underWriteInd);
+        }
+    }
 
 }