Bladeren bron

永诚财险驾意险保单不返回问题

wks 2 jaren geleden
bovenliggende
commit
71211a45f1

+ 11 - 10
src/main/java/com/ydtech/modules/ins/model/yc/YcBuildData.java

@@ -30,24 +30,25 @@ import java.util.stream.Collectors;
 public class YcBuildData {
 
     //身份证有效期   长期可传:2099-12-30
-    public static String ID_CARD_INDATE = "2099-12-30";
+    public static final String ID_CARD_INDATE = "2099-12-30";
     //接口 车型查询
-    public static String API_MODEL = "newQueryVehicleTypesService";
+    public static final String API_MODEL = "newQueryVehicleTypesService";
     //接口 报价
-    public static String API_QUOTE = "NewPremiumXnyCalculationService";
+    public static final String API_QUOTE = "NewPremiumXnyCalculationService";
     //接口 核保
-    public static String API_AUDIT = "NewXnyUnderwritingService";
+    public static final String API_AUDIT = "NewXnyUnderwritingService";
     //接口 影像上传
-    public static String API_UPLOAD = "newImageUpService";
+    public static final String API_UPLOAD = "newImageUpService";
     //接口 支付
-    public static String API_PAY = "newGetPayNoService";
+    public static final String API_PAY = "newGetPayNoService";
     //接口 电子保单
-    public static String API_GUARANTEE_SLIP = "DzbdWebService";
+    public static final String API_GUARANTEE_SLIP = "DzbdWebService";
     //接口 补传回调及订单信息查询接口
-    public static String API_ORDER_QUERY = "payCallback";
+    public static final String API_ORDER_QUERY = "payCallback";
     //接口 意外险
-    public static String API_ACCIDENT = "NewQueryYwCvrgWebService";
-
+    public static final String API_ACCIDENT = "NewQueryYwCvrgWebService";
+    // 驾意险确保
+    public static final String API_SUBMIT_POLICY = "SubmitpolicyWebService";
 
     /**
      * 构造 商业险数据  通过报价 响应数据

+ 12 - 0
src/main/java/com/ydtech/modules/order/components/yongcheng/YongchengRequestApiComponents.java

@@ -24,6 +24,8 @@ import com.ydtech.modules.ins.model.yc.policy.response.PolicyResponse;
 import com.ydtech.modules.ins.model.yc.ruote.Ruote;
 import com.ydtech.modules.ins.model.yc.ruote.response.RuoteResponse;
 import com.ydtech.modules.order.entity.api.yongcheng.constants.RequestUrl;
+import com.ydtech.modules.order.entity.api.yongcheng.request.AccidentUnderwritingRequest;
+import com.ydtech.modules.order.entity.api.yongcheng.response.AccidentUnderwritingResponse;
 import com.ydtech.modules.order.utils.InsuranceLog;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.text.StringEscapeUtils;
@@ -189,6 +191,16 @@ public class YongchengRequestApiComponents {
         return post(callbackAnOrder, RequestUrl.API_ORDER_QUERY, String.class);
     }
 
+    /**
+     * 意外险确保接口
+     *
+     * @param accidentUnderwritingRequest 意外险确保 请求参数
+     * @return  意外险响应参数
+     * @throws JsonProcessingException 序列化失败
+     */
+    public AccidentUnderwritingResponse submitPolicy(AccidentUnderwritingRequest accidentUnderwritingRequest) throws JsonProcessingException {
+        return post(accidentUnderwritingRequest, RequestUrl.API_SUBMIT_POLICY, AccidentUnderwritingResponse.class);
+    }
 
     /**
      * 电子保单

+ 0 - 2
src/main/java/com/ydtech/modules/order/controller/YongChengOrderApiController.java

@@ -183,6 +183,4 @@ public class YongChengOrderApiController {
         return HttpResult.ok("更新成功");
     }
 
-
-
 }

+ 24 - 0
src/main/java/com/ydtech/modules/order/entity/api/yongcheng/constants/MessageStatusCode.java

@@ -0,0 +1,24 @@
+package com.ydtech.modules.order.entity.api.yongcheng.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @version
+ * @description: 永城请求状态码
+ * @author: wenks
+ * @date: 2023/12/15 11:45
+ **/
+@AllArgsConstructor
+@Getter
+public enum MessageStatusCode {
+
+    E0000("E0000"  , "成功"),
+    E0001("E0001"  , "失败");
+
+    private final String code;
+
+    private final String desc;
+
+}

+ 2 - 1
src/main/java/com/ydtech/modules/order/entity/api/yongcheng/constants/RequestUrl.java

@@ -15,7 +15,8 @@ public enum RequestUrl {
     API_PAY("newGetPayNoService", "支付"),
     API_GUARANTEE_SLIP("DzbdWebService", "电子保单"),
     API_ORDER_QUERY("payCallback", "补传回调及订单信息查询接口"),
-    API_ACCIDENT("NewQueryYwCvrgWebService", "意外险");
+    API_ACCIDENT("NewQueryYwCvrgWebService", "意外险"),
+    API_SUBMIT_POLICY("SubmitpolicyWebService", "意外险确保接口");
 
     private final String uri;
 

+ 85 - 0
src/main/java/com/ydtech/modules/order/entity/api/yongcheng/request/AccidentUnderwritingRequest.java

@@ -0,0 +1,85 @@
+package com.ydtech.modules.order.entity.api.yongcheng.request;
+
+
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
+import com.ydtech.modules.ins.model.yc.YcConfigureParameters;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @version 驾意险确保接口 请求
+ * @author: wenks
+ * @date: 2023/12/15 10:53
+ **/
+@Data
+@JacksonXmlRootElement(localName = "tns:submitpolicy")
+public class AccidentUnderwritingRequest implements Serializable {
+
+    private static final long serialVersionUID = 234637494519131079L;
+
+    @JacksonXmlProperty(localName = "request")
+    private RequestDTO request;
+
+    public AccidentUnderwritingRequest(String password, String username, String insOrderNo) {
+        this.request = new RequestDTO(password, username, insOrderNo);
+    }
+
+    @Data
+    private static class RequestDTO implements Serializable{
+
+        private static final long serialVersionUID = 1394411251449953264L;
+
+
+        @JacksonXmlProperty(localName = "authorityData")
+        private AuthorityDataDTO authorityData;
+
+        @JacksonXmlProperty(localName = "condition")
+        private ConditionDTO condition;
+
+        public RequestDTO(String password, String username, String insOrderNo) {
+            this.authorityData = new AuthorityDataDTO(password, username);
+            this.condition = new ConditionDTO(insOrderNo);
+        }
+
+        @Data
+        @AllArgsConstructor
+        private static class AuthorityDataDTO implements Serializable{
+
+            private static final long serialVersionUID = 6186106255145038806L;
+
+            /**
+             * 密码
+             */
+            @JacksonXmlProperty(localName = "password")
+            private String password;
+
+            /**
+             *  密码
+             */
+            @JacksonXmlProperty(localName = "userName")
+            private String userName;
+
+        }
+
+        @Data
+        @AllArgsConstructor
+        private static class ConditionDTO implements Serializable{
+
+            private static final long serialVersionUID = -7041888457136835463L;
+
+            /**
+             * 订单号
+             */
+            @JacksonXmlProperty(localName = "ordercode")
+            private String orderCode;
+
+        }
+
+
+    }
+
+
+}

+ 63 - 0
src/main/java/com/ydtech/modules/order/entity/api/yongcheng/response/AccidentUnderwritingResponse.java

@@ -0,0 +1,63 @@
+package com.ydtech.modules.order.entity.api.yongcheng.response;
+
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
+import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
+import com.ydtech.modules.order.entity.api.yongcheng.request.AccidentUnderwritingRequest;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @version 
+ * @description: 意外险确保 响应
+ * @author: wenks 
+ * @date: 2023/12/15 10:53
+ **/
+@Data
+@JacksonXmlRootElement(localName = "packet")
+public class AccidentUnderwritingResponse {
+
+    @JacksonXmlProperty(localName = "head")
+    private HeadDTO head;
+
+
+    @Data
+    public static class PacketDTO implements Serializable {
+
+        private static final long serialVersionUID = -533021121644815315L;
+
+        @JacksonXmlProperty(localName = "head")
+        private HeadDTO head;
+
+    }
+
+    @Data
+    public static class HeadDTO implements Serializable {
+
+        private static final long serialVersionUID = 6186106255145038806L;
+
+
+        @JacksonXmlProperty(localName = "responseCompleteMessageStatus")
+        private ResponseCompleteMessageStatus responseCompleteMessageStatus;
+
+        @Data
+        public static class ResponseCompleteMessageStatus implements Serializable {
+
+            private static final long serialVersionUID = -7041888457136835463L;
+
+            /**
+             * 返回消息码
+             */
+            @JacksonXmlProperty(localName = "messageStatusCode")
+            private String messageStatusCode;
+
+            /**
+             * 返回信息
+             */
+            @JacksonXmlProperty(localName = "messageStatusDescription")
+            private String messageStatusDescription;
+
+        }
+
+    }
+}

+ 32 - 2
src/main/java/com/ydtech/modules/order/service/impl/YongchengOrderApiServiceImpl.java

@@ -59,6 +59,9 @@ import com.ydtech.modules.order.components.VerificationCodeIdentification;
 import com.ydtech.modules.order.components.yongcheng.YongchengRequestApiComponents;
 import com.ydtech.modules.order.entity.InsAreaCompany;
 import com.ydtech.modules.order.entity.InsOrders;
+import com.ydtech.modules.order.entity.api.yongcheng.constants.MessageStatusCode;
+import com.ydtech.modules.order.entity.api.yongcheng.request.AccidentUnderwritingRequest;
+import com.ydtech.modules.order.entity.api.yongcheng.response.AccidentUnderwritingResponse;
 import com.ydtech.modules.order.entity.crawler.request.RecognitionRequest;
 import com.ydtech.modules.order.entity.crawler.response.RecognitionResponse;
 import com.ydtech.modules.order.entity.dto.DrivingInsuranceDto;
@@ -732,13 +735,14 @@ public class YongchengOrderApiServiceImpl implements YongchengOrderApiService {
 
         // 获取协议配置信息
         YcConfigureParameters ycConfigureParameters = gainYcConfigParams(iac.getAgreementId());
+
         //0 支付回调 1核保回调 5直接返回字符串信息
         String type = "5";
         //组装参数
         CallbackAnOrder o = CallbackAnOrder.buildCallbackAnOrderParam(iac, ycConfigureParameters.gainAuthorityDataXml(), type);
-
         //接口请求
         try {
+            submitPolicy(iac.getJypremium(), ycConfigureParameters, iac.getInsOrderNo());
             String cleanStr = yongchengRequestApiComponents.payCallback(o);
             CallBackRequest param = CallBackRequest.buildCallBackParam(cleanStr);
             log.info("永诚API方式 - 补传回调 - 参数:{},车牌号:{}", JSON.toJSONString(param), order.getLicenseno());
@@ -756,7 +760,7 @@ public class YongchengOrderApiServiceImpl implements YongchengOrderApiService {
                         iac.setJqpolicyno(param.getCiPolicyNo());
                     }
 
-                    if (StringUtils.isNotEmpty(param.getYwPolicyNo())) {
+                    if (StringUtils.isNotEmpty(param.getYwPolicyAppNo())) {
                         DrivingInsuranceDto drivingInsuranceDto = new DrivingInsuranceDto();
                         drivingInsuranceDto.setPolicyNumber(param.getYwPolicyNo());
                         drivingInsuranceDto.setApplicationNumber(param.getYwPolicyAppNo());
@@ -794,6 +798,32 @@ public class YongchengOrderApiServiceImpl implements YongchengOrderApiService {
         throw new SystemException("获取支付连接失败");
     }
 
+
+    /**
+     * 驾意险确保接口
+     *
+     * @param  jyPremium 驾意险
+     * @param ycConfigureParameters 永城配置信息
+     * @param insOrderNo 永诚订单号
+     * @throws JsonProcessingException
+     */
+    public void submitPolicy(final BigDecimal jyPremium, final YcConfigureParameters ycConfigureParameters, final String insOrderNo) throws JsonProcessingException {
+        if(jyPremium.compareTo(new BigDecimal(0)) > 0){
+            return;
+        }
+
+        final AccidentUnderwritingRequest accidentUnderwritingRequest =
+                new AccidentUnderwritingRequest(ycConfigureParameters.getPassword(), ycConfigureParameters.getUserName(), insOrderNo);
+
+        final AccidentUnderwritingResponse accidentUnderwritingResponse = yongchengRequestApiComponents.submitPolicy(accidentUnderwritingRequest);
+        AccidentUnderwritingResponse.HeadDTO.ResponseCompleteMessageStatus responseCompleteMessageStatus
+                = accidentUnderwritingResponse.getHead().getResponseCompleteMessageStatus();
+        if (!MessageStatusCode.E0000.getCode().equals(responseCompleteMessageStatus.getMessageStatusCode())) {
+            throw new SystemException(responseCompleteMessageStatus.getMessageStatusDescription());
+        }
+
+    }
+
     /**
      * 补传回调
      */