ソースを参照

中煤Api对接完成

BifronsV 3 年 前
コミット
28c99367bb

+ 6 - 6
src/main/java/com/ydtech/components/ZhongmeiRequestApiComponents.java

@@ -65,34 +65,34 @@ public class ZhongmeiRequestApiComponents {
      * @param verify     结果是否需要验证
      * @return 响应内容
      */
-    public <Request extends BaseRequest, Response extends BaseResponse> Response request(Request request, Class<Response> tClass, boolean verify, String domain) {
-        String url = domain + request.getHead().getTransCode() + ".do";
+    private <Request extends BaseRequest, Response extends BaseResponse> Response request(Request request, Class<Response> tClass, boolean verify, String domain) {
         request.setHead(properties.getHead());
+        String url = domain + request.getHead().getTransCode() + ".do";
         Response response = post(request, url, tClass);
         if (verify) {
             validationResults(response);
         }
-        return post(request, url, tClass);
+        return response;
     }
 
     /**
      * 常规
      */
-    public <Request extends BaseRequest, Response extends BaseResponse> Response routineRequest(Request request, Class<Response> tClass, boolean verify) {
+    private <Request extends BaseRequest, Response extends BaseResponse> Response routineRequest(Request request, Class<Response> tClass, boolean verify) {
         return request(request, tClass, verify, properties.getUrl());
     }
 
     /**
      * 影像
      */
-    public <Request extends BaseRequest, Response extends BaseResponse> void imageRequest(Request request, Class<Response> tClass, boolean verify) {
+    private <Request extends BaseRequest, Response extends BaseResponse> void imageRequest(Request request, Class<Response> tClass, boolean verify) {
         request(request, tClass, verify, properties.getImageUrl());
     }
 
     /**
      * 短信
      */
-    public <Request extends BaseRequest, Response extends BaseResponse> Response smsRequest(Request request, Class<Response> tClass, boolean verify) {
+    private  <Request extends BaseRequest, Response extends BaseResponse> Response smsRequest(Request request, Class<Response> tClass, boolean verify) {
         return request(request, tClass, verify, properties.getSmsUrl());
     }
 

+ 11 - 4
src/main/java/com/ydtech/modules/order/controller/ZhongMeiOrderApiController.java

@@ -11,6 +11,7 @@ import com.ydtech.modules.order.entity.api.zm.request.CoverageRequest;
 import com.ydtech.modules.order.entity.vo.AccidentalDrivingVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
+import com.ydtech.modules.order.entity.vo.PolicyPrintVo;
 import com.ydtech.modules.order.service.InsOrdersService;
 import com.ydtech.modules.order.service.ZhongMeiOrderApiService;
 import io.swagger.annotations.Api;
@@ -50,20 +51,26 @@ public class ZhongMeiOrderApiController {
 
     @PostMapping(value = "/audit")
     @ApiOperation(value = "提交核保")
-    public HttpResult audit(@RequestSingleParam(value = "companyId") String companyId) throws IOException {
+    public HttpResult audit(@RequestSingleParam(value = "companyId") String companyId) {
         return this.zhongMeiOrderApiService.audit(companyId);
     }
 
     @PostMapping(value = "/submitImage")
     @ApiOperation(value = "提交影像信息")
-    public HttpResult submitImage(@RequestSingleParam(value = "companyId") String companyId) throws IOException {
+    public HttpResult submitImage(@RequestSingleParam(value = "companyId") String companyId)  {
         return this.zhongMeiOrderApiService.submitImage(companyId);
     }
 
     @PostMapping("/getPolicyPrint")
     @ApiOperation(value = "电子保单")
-    public HttpResult getPolicyPrint(@RequestSingleParam(value = "companyId") String companyId) throws IOException {
-        return this.zhongMeiOrderApiService.getPolicyPrint(companyId, "0507", "1");
+    public HttpResult getPolicyPrint(@RequestBody PolicyPrintVo policyPrintVo) {
+        return this.zhongMeiOrderApiService.getPolicyPrint(policyPrintVo);
+    }
+
+    @PostMapping("/paymentEnquiry")
+    @ApiOperation(value = "缴费查询")
+    public HttpResult paymentEnquiry(@RequestSingleParam(value = "companyId") String companyId){
+        return this.zhongMeiOrderApiService.paymentEnquiry(companyId);
     }
 
     @PostMapping("/underwritingCallback")

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

@@ -12,7 +12,7 @@ import java.io.Serializable;
  * @date 2023/4/21 10:26
  */
 @Data
-public class BaseResponse implements Serializable {
+public abstract class BaseResponse implements Serializable {
 
     private static final long serialVersionUID = 8207943692209619441L;
     @JsonProperty(value = "head")

+ 1 - 1
src/main/java/com/ydtech/modules/order/entity/api/zm/constants/TransCode.java

@@ -11,7 +11,7 @@ public class TransCode {
     //车型查询
     public static final String MODELS_QUERY = "ModelsQuery";
     //报价
-    public static final String QUOTE_PRICE = "QuotePrice";
+    public static final String QUOTE_PRICE = "QuotedPrice";
     //提交核保
     public static final String SUBMIT = "Submit";
     //缴费查询

+ 25 - 0
src/main/java/com/ydtech/modules/order/entity/api/zm/constants/enums/PaymentStatusEnum.java

@@ -0,0 +1,25 @@
+package com.ydtech.modules.order.entity.api.zm.constants.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.Getter;
+
+/**
+ * @author wenks
+ * @version 0.0.2
+ * @description TODO
+ * @date 2023/4/25 18:30
+ */
+@AllArgsConstructor
+@Getter
+public enum PaymentStatusEnum {
+
+    P_1(0, "支付失败/未缴费"),
+    P_2(1, "支付成功但承保确认失败"),
+    P_3(2, "承保成功");
+
+    private final int code;
+
+    private final String meaning;
+
+}

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

@@ -25,7 +25,7 @@ public class SubmitRequest extends BaseRequest {
     @JsonProperty("VIN")
     private String vin;
     @JsonProperty("checkCode")
-    private String checkCode = "123456";
+    private String checkCode;
     @JsonProperty("deliveryInfo")
     private DeliveryInfoDTO deliveryInfo;
     @JsonProperty("pageUrl")

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

@@ -1,7 +1,9 @@
 package com.ydtech.modules.order.entity.api.zm.response;
 
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.ydtech.modules.order.entity.api.zm.BaseRequestHead;
 import com.ydtech.modules.order.entity.api.zm.BaseResponse;
+import com.ydtech.modules.order.entity.api.zm.constants.TransCode;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
@@ -36,6 +38,7 @@ public class QuotedPriceResponse extends BaseResponse {
     @JsonProperty("vin")
     private String vin;
 
+
     @NoArgsConstructor
     @Data
     public static class BizPremiumDTO {

+ 2 - 2
src/main/java/com/ydtech/modules/order/entity/vo/OrderVo.java

@@ -148,8 +148,8 @@ public class OrderVo implements Serializable {
     /**
      * 主键
      */
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
+    @TableId(value = "id")
+    private String id;
 
     /**
      * 保险名称

+ 30 - 0
src/main/java/com/ydtech/modules/order/entity/vo/PolicyPrintVo.java

@@ -0,0 +1,30 @@
+package com.ydtech.modules.order.entity.vo;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author wenks
+ * @version 0.0.2
+ * @description TODO
+ * @date 2023/4/26 14:58
+ */
+@Data
+@ApiModel("获取保单")
+public class PolicyPrintVo implements Serializable {
+
+    private static final long serialVersionUID = -7936960705993238646L;
+
+    @ApiModelProperty("子订单")
+    String companyId;
+
+    @ApiModelProperty("保险编号")
+    String riskCode;
+
+    @ApiModelProperty("1 标志 2 保单")
+    String type;
+}

+ 9 - 3
src/main/java/com/ydtech/modules/order/service/ZhongMeiOrderApiService.java

@@ -6,6 +6,7 @@ import com.ydtech.modules.order.entity.api.zm.request.CoverageRequest;
 import com.ydtech.modules.order.entity.vo.AccidentalDrivingVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
+import com.ydtech.modules.order.entity.vo.PolicyPrintVo;
 
 import javax.servlet.http.HttpServletRequest;
 
@@ -34,10 +35,15 @@ public interface ZhongMeiOrderApiService extends BaseOrderService<AccidentalDriv
     /**
      * 中煤保单下载
      *
-     * @param companyId 子订单号
      * @return 响应
      */
-    HttpResult getPolicyPrint(String companyId, String riskCode, String type);
-
+    HttpResult getPolicyPrint(PolicyPrintVo policyPrintVo);
 
+    /**
+     * 缴费查询
+     *
+     * @param companyId 子订单号
+     * @return 响应
+     */
+    HttpResult paymentEnquiry(String companyId);
 }

+ 6 - 0
src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java

@@ -149,9 +149,15 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             if ("0510".equals(risk.getRiskCode())) { //商业
                 insOrders.setSystartdate(risk.getStartDate());
                 insOrders.setSyenddate(risk.getEndDate());
+
+                if(quoteInfoVo.getKindList().size() == 0){
+                    throw new SystemException("商业险险种未选择,不允许报价");
+                }
+
             }
         }
 
+
         // 2.3.1 险种信息
         insOrders.setRisk(JSONObject.parseArray(JSONObject.toJSONString(quoteInfoVo.getRiskList())));
         insOrders.setKing(JSONObject.parseArray(JSONObject.toJSONString(quoteInfoVo.getKindList())));

+ 37 - 18
src/main/java/com/ydtech/modules/order/service/impl/ZhongMeiOrderApiServiceImpl.java

@@ -20,19 +20,19 @@ import com.ydtech.modules.order.entity.TaxArrears;
 import com.ydtech.modules.order.entity.api.zm.constants.InsuranceTypeCorrespondence;
 import com.ydtech.modules.order.entity.api.zm.constants.enums.AuditStatusEnum;
 import com.ydtech.modules.order.entity.api.zm.constants.enums.DocumentTypeEnum;
+import com.ydtech.modules.order.entity.api.zm.constants.enums.PaymentStatusEnum;
 import com.ydtech.modules.order.entity.api.zm.request.*;
 
 import com.ydtech.modules.order.entity.api.zm.response.*;
 import com.ydtech.modules.order.entity.vo.AccidentalDrivingVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteInfoVo;
 import com.ydtech.modules.order.entity.vo.BaseQuoteVo;
+import com.ydtech.modules.order.entity.vo.PolicyPrintVo;
 import com.ydtech.modules.order.service.InsAreaCompanyService;
 import com.ydtech.modules.order.service.InsOrdersService;
 import com.ydtech.modules.order.service.ZhongMeiOrderApiService;
 import com.ydtech.utils.CalculateUtils;
-import com.ydtech.utils.StringUtils;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 
@@ -44,15 +44,6 @@ import java.util.stream.Collectors;
 @Slf4j
 public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
 
-    @Value("${ZMUrl}")
-    private String ZMUrl;
-
-    @Value("${ZMToken}")
-    private String ZMToken;
-
-    @Value("${ZMIMGUrl}")
-    private String ZMIMGUrl;
-
     private final InsOrdersService insOrdersService;
 
     private final InsAreaCompanyService insAreaCompanyService;
@@ -146,7 +137,7 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
         // 投保单号(总)
         String insOrderNo = insAreaCompany.getInsOrderNo();
         List<InsTaskImage> insTaskImages = insTaskImageService.selectByTaskId(insOrders.getQuoteno());
-        if(insTaskImages.size() == 0){
+        if (insTaskImages.size() == 0) {
             throw new SystemException("请检查影像是否上传了");
         }
         UploadImageRequest request = new UploadImageRequest(insTaskImages, insOrderNo);
@@ -159,7 +150,7 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
         String s = JSONObject.toJSONString(coverageRequest);
         log.info("中煤承保回调参数------>{}", s);
 
-        if (coverageRequest.getStatus() == 1) {
+        if (coverageRequest.getStatus() == PaymentStatusEnum.P_3.getCode()) {
             // 主投保单号
             String proposalNo = coverageRequest.getProposalNo();
             InsAreaCompany insAreaCompany = insAreaCompanyService.getByInsOrderNo(proposalNo);
@@ -196,11 +187,35 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
     }
 
     @Override
-    public HttpResult getPolicyPrint(String companyId, String riskCode, String type) {
-        InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(companyId);
-        String policyNo;
-        String code = DocumentTypeEnum.code(type);
+    public HttpResult paymentEnquiry(String companyId) {
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getByInsOrderNo(companyId);
+        if(insAreaCompany.getOrderstatus().equals(InsOrderStatus.S_3.getCode())){
+            return HttpResult.ok("此订单已承保");
+        }
+        OrderStatusRequest orderStatusRequest = new OrderStatusRequest();
+        orderStatusRequest.setOrderNo(insAreaCompany.getId());
+        orderStatusRequest.setSubProposalNo(insAreaCompany.getInsOrderNo());
+        OrderStatusResponse orderStatusResponse = zhongmeiRequestApiComponents.orderStatus(orderStatusRequest, OrderStatusResponse.class);
+        String status = orderStatusResponse.getStatus();
+        if(status.equals(PaymentStatusEnum.P_3.getCode())){
+            insAreaCompany.setJqpolicyno(orderStatusResponse.getSubContractNoJ());
+            insAreaCompany.setSypolicyno(orderStatusResponse.getSubContractNoS());
+            insAreaCompany.setJypolicyno(orderStatusResponse.getAccidentNo());
+            insAreaCompany.setOrderstatus(InsOrderStatus.S_3.getCode());
+            insOrdersService.updateByOrderStatus(insAreaCompany.getOrderno(), insAreaCompany.getOrderstatus());
+            insAreaCompanyService.updateById(insAreaCompany);
+            return HttpResult.ok("");
+        }
+
+        return HttpResult.error(Enum.valueOf(PaymentStatusEnum.class, "P_" + status));
+    }
 
+    @Override
+    public HttpResult getPolicyPrint(PolicyPrintVo policyPrintVo) {
+        InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(policyPrintVo.getCompanyId());
+        String policyNo;
+        String code = DocumentTypeEnum.code(policyPrintVo.getType());
+        String riskCode = policyPrintVo.getRiskCode();
         if (InsuranceTypeCorrespondence.TRAFFIC.equals(riskCode)) {
             policyNo = insAreaCompany.getJqpolicyno();
         } else if (InsuranceTypeCorrespondence.BUSINESS.equals(riskCode)) {
@@ -209,6 +224,7 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
             throw new SystemException("险种代码不存在");
         }
         InsurancePolicyPrintRequest request = new InsurancePolicyPrintRequest();
+        request.setRiskCode(InsuranceTypeCorrespondence.RISK.get(riskCode));
         request.setPolicyNo(policyNo);
         request.setDocumentType(code);
         InsurancePolicyPrintResponse response = zhongmeiRequestApiComponents.insurancePolicyPrint(request, InsurancePolicyPrintResponse.class);
@@ -274,9 +290,12 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
             kind.setKindCode(kindInfoVo.getKindCode());
             kind.setKindName(kindInfoVo.getKindName());
             kind.setAmount(kindInfoVo.getAmount());
+            int i = ArrayUtil.indexOf(InsuranceTypeCorrespondence.JINZHANGGUI_TYPE, kindInfoVo.getKindCode());
+
             QuotedPriceResponse.BizPremiumDTO.CoverageListDTO coverageListDTOS = coverageList.stream().filter(
-                            a -> ArrayUtil.indexOf(InsuranceTypeCorrespondence.CONNECT_INSURANCE_TYPE, a.getKindCode()) > 0)
+                            a -> a.getKindCode().equals(InsuranceTypeCorrespondence.CONNECT_INSURANCE_TYPE[i]))
                     .collect(Collectors.toList()).get(0);
+
             kind.setCoveragePremium(coverageListDTOS.getPremium());
             kind.setUnitAmount(kindInfoVo.getUnitAmount());
             if (!ObjectUtils.isEmpty(kindInfoVo.getDeductibleRate())) {

+ 1 - 1
src/main/resources/application-test.yml

@@ -297,7 +297,7 @@ zm:
     imageUrl: https://test.echinacoal.com/singlePlatform/others/
     smsUrl: https://test.echinacoal.com/singlePlatform/prpall/
     pageUrl: https://www.baidu.com/
-    callbackDomain: http://test.baoxianzhanggui.com:8090
+    callbackDomain: http://test.baoxianzhanggui.com:8080
     callbackUrl: /order/zhongMeiApi/underwritingCallback
     passMsgUrl: /order/zhongMeiApi/auditCallback