Преглед изворни кода

Merge remote-tracking branch 'origin/test' into test

Qchen пре 1 година
родитељ
комит
5980ec4c45
17 измењених фајлова са 225 додато и 36 уклоњено
  1. 7 0
      src/main/java/com/ydtech/constants/enums/dict/InsOrderStatusEnum.java
  2. 21 0
      src/main/java/com/ydtech/modules/admin/service/impl/TaskStatisticsServiceImpl.java
  3. 3 0
      src/main/java/com/ydtech/modules/order/aop/aspect/QuoteVerificationAspect.java
  4. 3 1
      src/main/java/com/ydtech/modules/order/components/zijin/ZijinDuplicateInsuranceComponents.java
  5. 10 0
      src/main/java/com/ydtech/modules/order/entity/InsAreaCompany.java
  6. 13 0
      src/main/java/com/ydtech/modules/order/entity/vo/InsOrdersEditingVo.java
  7. 8 0
      src/main/java/com/ydtech/modules/order/service/InsAreaCompanyService.java
  8. 8 0
      src/main/java/com/ydtech/modules/order/service/InsOrdersService.java
  9. 6 0
      src/main/java/com/ydtech/modules/order/service/impl/BoHaiOrderApiServiceImpl.java
  10. 8 0
      src/main/java/com/ydtech/modules/order/service/impl/DaJiaOrderServiceImpl.java
  11. 39 26
      src/main/java/com/ydtech/modules/order/service/impl/GuorenOrderApiServiceImpl.java
  12. 17 1
      src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyServiceImpl.java
  13. 7 0
      src/main/java/com/ydtech/modules/order/service/impl/InsCrawlerOrderServiceImpl.java
  14. 41 0
      src/main/java/com/ydtech/modules/order/service/impl/InsOrdersServiceImpl.java
  15. 17 6
      src/main/java/com/ydtech/modules/order/service/impl/YongchengOrderApiServiceImpl.java
  16. 13 0
      src/main/java/com/ydtech/modules/order/service/impl/ZijinOrderApiServiceImpl.java
  17. 4 2
      src/main/resources/mapper/modules/order/InsAreaCompanyMapper.xml

+ 7 - 0
src/main/java/com/ydtech/constants/enums/dict/InsOrderStatusEnum.java

@@ -26,6 +26,13 @@ public enum InsOrderStatusEnum implements IBaseEnum {
 
 
     //人工核保退回状态,直至再次提交核保,状态修改为待核保
     //人工核保退回状态,直至再次提交核保,状态修改为待核保
     TO_BACK("4", "核保退回", 6, 0),
     TO_BACK("4", "核保退回", 6, 0),
+
+    //报价失败
+    QUOTE_FAILED("10","报价失败",8,0),
+
+    //重复投保
+    REPEAT_INSURE("11","重复投保",9,0)
+
     //撤回二维码
     //撤回二维码
 //    BACK_QR_CODE("5", "撤销二维码", 7, 0),
 //    BACK_QR_CODE("5", "撤销二维码", 7, 0),
     ;
     ;

+ 21 - 0
src/main/java/com/ydtech/modules/admin/service/impl/TaskStatisticsServiceImpl.java

@@ -752,6 +752,27 @@ public class TaskStatisticsServiceImpl  implements TaskStatisticsService {
      **/
      **/
     @Override
     @Override
     public HttpResult insuranceCompanyExcel(TaskStatisticsVo taskStatisticsVo) {
     public HttpResult insuranceCompanyExcel(TaskStatisticsVo taskStatisticsVo) {
+        if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getProvinceId())){
+            String provinceId =   this.removeTrailingZeros(taskStatisticsVo.getProvinceId());
+            taskStatisticsVo.setProvinceId(provinceId);
+
+        }
+        if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getCityId())){
+            String cityId =   this.removeTrailingZeros(taskStatisticsVo.getCityId());
+            taskStatisticsVo.setCityId(cityId);
+        }
+        if(com.ydtech.utils.StringUtils.isNotEmpty(taskStatisticsVo.getCountyId())){
+            String countyId =   this.removeTrailingZeros(taskStatisticsVo.getCountyId());
+            taskStatisticsVo.setCountyId(countyId);
+        }
+
+        if(StringUtils.isNotEmpty(taskStatisticsVo.getDays())){
+            if("7".equals(taskStatisticsVo.getDays())){
+                taskStatisticsVo.setDays("2");
+            } else if ("30".equals(taskStatisticsVo.getDays())) {
+                taskStatisticsVo.setDays("3");
+            }
+        }
         List<InsuranceCompanyExcel> list = this.insAreaCompanyMapper.insuranceCompanyExcel(taskStatisticsVo);
         List<InsuranceCompanyExcel> list = this.insAreaCompanyMapper.insuranceCompanyExcel(taskStatisticsVo);
         String uploadPath = this.uploadPath + "/excel/";
         String uploadPath = this.uploadPath + "/excel/";
         Path path = Paths.get(uploadPath);
         Path path = Paths.get(uploadPath);

+ 3 - 0
src/main/java/com/ydtech/modules/order/aop/aspect/QuoteVerificationAspect.java

@@ -135,6 +135,9 @@ public class QuoteVerificationAspect {
                     }
                     }
 
 
                 }else{
                 }else{
+                    //将匹配失败的费用日志存储
+                    insAreaCompanyService.updateFeeMatchErrMsg(result.getData().getCompanyId(),logs.toString());
+
                     //输出费用匹配失败日志
                     //输出费用匹配失败日志
                     result.getData().setFeeNoDescription(logs.toString());
                     result.getData().setFeeNoDescription(logs.toString());
                 }
                 }

+ 3 - 1
src/main/java/com/ydtech/modules/order/components/zijin/ZijinDuplicateInsuranceComponents.java

@@ -103,7 +103,9 @@ public class ZijinDuplicateInsuranceComponents extends ResponseMessageAbstractHa
         }
         }
 
 
         if (jqEndDate.isEmpty() && syEndDate.isEmpty()) {
         if (jqEndDate.isEmpty() && syEndDate.isEmpty()) {
-            throw new SystemException(rtnMsg);
+            // 修改 需要在外部获取异常信息
+            return calculatePremiumResponse;
+//            throw new SystemException(rtnMsg);
         }
         }
         repeatNumber -= 1;
         repeatNumber -= 1;
         baseInfo.setTrafficTime(jqEndDate);
         baseInfo.setTrafficTime(jqEndDate);

+ 10 - 0
src/main/java/com/ydtech/modules/order/entity/InsAreaCompany.java

@@ -513,6 +513,16 @@ public class InsAreaCompany implements Serializable {
     @TableField("order_source")
     @TableField("order_source")
     private Integer orderSource;
     private Integer orderSource;
 
 
+    //费用匹配信息
+    @TableField("fee_match_err_msg")
+//    @TableField(exist = false)
+    private String feeMatchErrMsg;
+
+    //报价错误信息
+    @TableField("quote_err_msg")
+//    @TableField(exist = false)
+    private String quoteErrMsg;
+
     /**
     /**
      * 0 删除 1 正常
      * 0 删除 1 正常
      * 删除订单
      * 删除订单

+ 13 - 0
src/main/java/com/ydtech/modules/order/entity/vo/InsOrdersEditingVo.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
 import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.modules.ins.model.vo.AccidentResponseVo;
 import com.ydtech.modules.ins.model.vo.AccidentResponseVo;
 import com.ydtech.modules.ins.model.vo.QuoteKindRespVo;
 import com.ydtech.modules.ins.model.vo.QuoteKindRespVo;
 import com.ydtech.modules.ins.model.vo.QuoteRiskRespVo;
 import com.ydtech.modules.ins.model.vo.QuoteRiskRespVo;
@@ -252,6 +253,15 @@ public class InsOrdersEditingVo extends InsOrders implements Serializable {
         @ApiModelProperty("驾意险名称")
         @ApiModelProperty("驾意险名称")
         private String jyName;
         private String jyName;
 
 
+        @ApiModelProperty("费用匹配信息")
+        private String feeMatchErrMsg;
+
+        @ApiModelProperty("报价错误信息")
+        private String quoteErrMsg;
+
+        @ApiModelProperty("状态信息")
+        private String orderStatusInfo;
+
         public void feeVacant() {
         public void feeVacant() {
             this.jqExportFee = null;
             this.jqExportFee = null;
             this.syExportFee = null;
             this.syExportFee = null;
@@ -295,6 +305,9 @@ public class InsOrdersEditingVo extends InsOrders implements Serializable {
             this.jqLossRation = insAreaCompany.getJqLossRation();
             this.jqLossRation = insAreaCompany.getJqLossRation();
             this.syLossRation = insAreaCompany.getSyLossRation();
             this.syLossRation = insAreaCompany.getSyLossRation();
             this.ubiPredictedInfoScore = insAreaCompany.getUbiPredictedInfoScore();
             this.ubiPredictedInfoScore = insAreaCompany.getUbiPredictedInfoScore();
+            this.feeMatchErrMsg = insAreaCompany.getFeeMatchErrMsg();
+            this.quoteErrMsg = insAreaCompany.getQuoteErrMsg();
+            this.orderStatusInfo = InsOrderStatusEnum.matchKey(insAreaCompany.getOrderstatus()).getDesc();
         }
         }
     }
     }
 
 

+ 8 - 0
src/main/java/com/ydtech/modules/order/service/InsAreaCompanyService.java

@@ -259,4 +259,12 @@ public interface InsAreaCompanyService extends IService<InsAreaCompany> {
      *  @Description: 财务查询所有的驳回订单数据
      *  @Description: 财务查询所有的驳回订单数据
      */
      */
     Page<InsAreaCompany> getAllRejectOrders(Page page, RejectPageQueryVo rejectPageQueryVo);
     Page<InsAreaCompany> getAllRejectOrders(Page page, RejectPageQueryVo rejectPageQueryVo);
+
+    /**
+     * 更新费用匹配失败的日志
+     * @param companyId
+     * @param feeMatchErrMsg
+     * @return
+     */
+    boolean updateFeeMatchErrMsg(String companyId,String feeMatchErrMsg);
 }
 }

+ 8 - 0
src/main/java/com/ydtech/modules/order/service/InsOrdersService.java

@@ -3,6 +3,7 @@ package com.ydtech.modules.order.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.ins.model.InsOrdersExcelVo;
 import com.ydtech.modules.ins.model.InsOrdersExcelVo;
@@ -17,6 +18,7 @@ import com.ydtech.modules.order.entity.vo.*;
 import com.ydtech.modules.order.entity.vo.telemarketing.TelemarketingAuditOrderQueryVo;
 import com.ydtech.modules.order.entity.vo.telemarketing.TelemarketingAuditOrderQueryVo;
 import com.ydtech.modules.order.entity.vo.zj.ZjQuoteAccidentVo;
 import com.ydtech.modules.order.entity.vo.zj.ZjQuoteAccidentVo;
 import com.ydtech.modules.protocol.entity.dto.PtlAgreementInsCompanyDto;
 import com.ydtech.modules.protocol.entity.dto.PtlAgreementInsCompanyDto;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
 
 
 import java.util.List;
 import java.util.List;
 
 
@@ -273,4 +275,10 @@ public interface InsOrdersService extends IService<InsOrders> {
      */
      */
     List<String> queryInsuredInOrder(QueryLicenseInOrderVo queryInsuredInOrderVo);
     List<String> queryInsuredInOrder(QueryLicenseInOrderVo queryInsuredInOrderVo);
 
 
+    /**
+     * 生成失败订单数据
+     * @return
+     */
+    boolean responseFailedOrder(BaseQuoteVo quoteVo, PtlAgreementAttribution ptlAgreementAttribution, InsOrders insOrder, String errorMessage, InsOrderStatusEnum statusEnum);
+
 }
 }

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

@@ -192,6 +192,12 @@ public class BoHaiOrderApiServiceImpl implements BoHaiOrderApiService {
                         throw new SystemException(response.getResponseMsg());
                         throw new SystemException(response.getResponseMsg());
                     }
                     }
                 } else {
                 } else {
+                    InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.QUOTE_FAILED;
+                    InsOrders byId = insOrdersService.getById(quoteVo.getOrderNo());
+                    if(responseMsg.contains("重复投保")){
+                        insOrderStatusEnum = InsOrderStatusEnum.REPEAT_INSURE;
+                    }
+                    insOrdersService.responseFailedOrder(quoteVo,ptlAgreementAttribution,byId,responseMsg,insOrderStatusEnum);
                     throw new SystemException(responseMsg);
                     throw new SystemException(responseMsg);
                 }
                 }
                 // add by hxl  2024-04-07  报价接口报错  算费微服务返回报错信息_保信返回错误信息:录入的校验码有误
                 // add by hxl  2024-04-07  报价接口报错  算费微服务返回报错信息_保信返回错误信息:录入的校验码有误

+ 8 - 0
src/main/java/com/ydtech/modules/order/service/impl/DaJiaOrderServiceImpl.java

@@ -262,6 +262,14 @@ public class DaJiaOrderServiceImpl implements DaJiaOrderService {
                 HttpResult<QuoteRespVo> quoteRespVoHttpResult = responseOrder(odr1009Response, quoteRespVo, ptlAgreementAttribution, orderNo, quoteInfoVo, busiId, nvhlodr1001Response, insAreaCompanyAccidentalDriving);
                 HttpResult<QuoteRespVo> quoteRespVoHttpResult = responseOrder(odr1009Response, quoteRespVo, ptlAgreementAttribution, orderNo, quoteInfoVo, busiId, nvhlodr1001Response, insAreaCompanyAccidentalDriving);
                 return quoteRespVoHttpResult;
                 return quoteRespVoHttpResult;
             } else {
             } else {
+                String errorMessage = odr1009Response.getResult().getJqAppStatusMessage().toString() + odr1009Response.getResult().getSyAppStatusMessage().toString();
+                //如果错误信息中存在重复投保则订单状态置为重复投保
+                InsOrderStatusEnum orderStatusEnum = InsOrderStatusEnum.QUOTE_FAILED;
+                if(odr1009Response.getResult().getJqAppStatusMessage().toString().contains("重复投保")) {
+                    orderStatusEnum = InsOrderStatusEnum.REPEAT_INSURE;
+                }
+                insOrdersService.responseFailedOrder(t,ptlAgreementAttribution, insOrders, errorMessage, orderStatusEnum);
+
                 if (Message.M0003.getCode().equals(odr1009Response.getStatus())) {
                 if (Message.M0003.getCode().equals(odr1009Response.getStatus())) {
                     return HttpResult.error("报价失败,原因:" + odr1009Response.getMessage());
                     return HttpResult.error("报价失败,原因:" + odr1009Response.getMessage());
                 }
                 }

+ 39 - 26
src/main/java/com/ydtech/modules/order/service/impl/GuorenOrderApiServiceImpl.java

@@ -233,7 +233,7 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
         log.debug("--------报价开始,订单号:{},协议号:{}--------------", quoteVo.getOrderNo(), quoteVo.getAgreementId());
         log.debug("--------报价开始,订单号:{},协议号:{}--------------", quoteVo.getOrderNo(), quoteVo.getAgreementId());
         // 获取协议配置信息
         // 获取协议配置信息
         ChannelInfoDto channelInfo = gainChannelConfigInfo(quoteVo.getAgreementId());
         ChannelInfoDto channelInfo = gainChannelConfigInfo(quoteVo.getAgreementId());
-        BaseQuoteInfoVo yaQuoteInfoVo = insOrdersComponents.getQuoteInfo(quoteVo.getOrderNo(),quoteVo.getKinds());
+        BaseQuoteInfoVo yaQuoteInfoVo = insOrdersComponents.getQuoteInfo(quoteVo.getOrderNo(), quoteVo.getKinds());
         InsOrders order = insOrdersService.getById(yaQuoteInfoVo.getOrderNo());
         InsOrders order = insOrdersService.getById(yaQuoteInfoVo.getOrderNo());
         CarInfoVo carInfo = yaQuoteInfoVo.getCarInfo();
         CarInfoVo carInfo = yaQuoteInfoVo.getCarInfo();
 
 
@@ -271,8 +271,21 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
         // 特别约定
         // 特别约定
         List<GuoRenSpecialAgreementVo> specialAgreementVo = quoteVo.getGuoRenSpecialAgreementVo();
         List<GuoRenSpecialAgreementVo> specialAgreementVo = quoteVo.getGuoRenSpecialAgreementVo();
         // 4、保费计算
         // 4、保费计算
-        PremiumResp.DataDTO premiumResult = premiumQuery(yaQuoteInfoVo, carPriceResult, vinQ, isNoCar,
+        PremiumResp resp = premiumQuery(yaQuoteInfoVo, carPriceResult, vinQ, isNoCar,
                 specialAgreementVo, noCarPremium, goodsCode);
                 specialAgreementVo, noCarPremium, goodsCode);
+
+        if (resp.getResultCode() == 1) {
+            InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.QUOTE_FAILED;
+            if(resp.getResultMsg().contains("重复投保"))
+            {
+                insOrderStatusEnum = InsOrderStatusEnum.REPEAT_INSURE;
+            }
+            PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(quoteVo.getAgreementId());
+            insOrdersService.responseFailedOrder(quoteVo,ptlAgreementAttribution, order,resp.getResultMsg(),insOrderStatusEnum);
+            throw new SystemException(resp.getResultMsg() == null ? "保费计算失败,请联系管理员" : resp.getResultMsg());
+        }
+
+        PremiumResp.DataDTO premiumResult = resp.getData();
         AssertionUtils.isEmpty(premiumResult, "保费计算失败");
         AssertionUtils.isEmpty(premiumResult, "保费计算失败");
 
 
         // 5、 生成订单
         // 5、 生成订单
@@ -297,12 +310,12 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
 
 
 
 
         InsAreaCompanyAccidentalDriving insAreaCompanyAccidentalDriving = new InsAreaCompanyAccidentalDriving();
         InsAreaCompanyAccidentalDriving insAreaCompanyAccidentalDriving = new InsAreaCompanyAccidentalDriving();
-        if(accidentalDrivingVo != null) {
+        if (accidentalDrivingVo != null) {
             insAreaCompanyAccidentalDriving.setRideRiskCode(quoteVo.getAccidentalDrivingVo().getProdCode());
             insAreaCompanyAccidentalDriving.setRideRiskCode(quoteVo.getAccidentalDrivingVo().getProdCode());
             insAreaCompanyAccidentalDriving.setRideRiskName(quoteVo.getAccidentalDrivingVo().getGoodsName());
             insAreaCompanyAccidentalDriving.setRideRiskName(quoteVo.getAccidentalDrivingVo().getGoodsName());
             insAreaCompanyAccidentalDriving.setQuantity(quoteVo.getAccidentalDrivingVo().getQuantity());
             insAreaCompanyAccidentalDriving.setQuantity(quoteVo.getAccidentalDrivingVo().getQuantity());
         }
         }
-        insAreaCompanyService.insertCompanyAndOrders(iac,insAreaCompanyAccidentalDriving);
+        insAreaCompanyService.insertCompanyAndOrders(iac, insAreaCompanyAccidentalDriving);
         quoteRespVo.setCompanyId(iac.getId());
         quoteRespVo.setCompanyId(iac.getId());
         // 返回核心车型
         // 返回核心车型
         quoteRespVo.setCoreModels(vinQ.toCoreModelsVo());
         quoteRespVo.setCoreModels(vinQ.toCoreModelsVo());
@@ -327,7 +340,7 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
         //子订单
         //子订单
         InsAreaCompany iac = insAreaCompanyService.getByIdIsExist(quoteOrderNo);
         InsAreaCompany iac = insAreaCompanyService.getByIdIsExist(quoteOrderNo);
 
 
-        String oldStatus =iac.getOrderstatus();
+        String oldStatus = iac.getOrderstatus();
         // 获取协议配置信息
         // 获取协议配置信息
         ChannelInfoDto channelInfo = gainChannelConfigInfo(iac.getAgreementId());
         ChannelInfoDto channelInfo = gainChannelConfigInfo(iac.getAgreementId());
 
 
@@ -345,7 +358,7 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
         String statusJq = auditResp.getData().get(0).getUnderWriteFlagCI();
         String statusJq = auditResp.getData().get(0).getUnderWriteFlagCI();
         String statusSy = auditResp.getData().get(0).getUnderWriteFlagBI();
         String statusSy = auditResp.getData().get(0).getUnderWriteFlagBI();
         String message = auditResp.getData().get(0).getMessage();
         String message = auditResp.getData().get(0).getMessage();
-        if (StringUtils.isEmpty(statusJq) && StringUtils.isEmpty(statusSy)){
+        if (StringUtils.isEmpty(statusJq) && StringUtils.isEmpty(statusSy)) {
             return HttpResult.error("核保失败:" + message);
             return HttpResult.error("核保失败:" + message);
         }
         }
         //单交  核保状态 0初始值/1通过/2不通过/3 无需核保 9待核保
         //单交  核保状态 0初始值/1通过/2不通过/3 无需核保 9待核保
@@ -384,7 +397,7 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
         if (iac.getOrderstatus().equals(InsOrderStatusEnum.WAIT_AUDIT.getCode())) {
         if (iac.getOrderstatus().equals(InsOrderStatusEnum.WAIT_AUDIT.getCode())) {
             iac.setUnderwritingStatus(UnderwritingStatus.US_2.getCode());
             iac.setUnderwritingStatus(UnderwritingStatus.US_2.getCode());
             //  add  by  hxl  添加自动更新状态
             //  add  by  hxl  添加自动更新状态
-            insSubOrderUpdateDetailService.insertData(iac,oldStatus,iac.getOrderstatus(),"1");
+            insSubOrderUpdateDetailService.insertData(iac, oldStatus, iac.getOrderstatus(), "1");
             insAreaCompanyService.updateCompanyAndOrdersMessage(iac, message);
             insAreaCompanyService.updateCompanyAndOrdersMessage(iac, message);
             return HttpResult.error(message);
             return HttpResult.error(message);
         }
         }
@@ -396,7 +409,7 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
             return HttpResult.error(message);
             return HttpResult.error(message);
         }
         }
         //  add  by  hxl  添加自动更新状态
         //  add  by  hxl  添加自动更新状态
-        insSubOrderUpdateDetailService.insertData(iac,oldStatus,iac.getOrderstatus(),"1");
+        insSubOrderUpdateDetailService.insertData(iac, oldStatus, iac.getOrderstatus(), "1");
         InsUtils.buildOrderStatus(order, iac);
         InsUtils.buildOrderStatus(order, iac);
         if (iac.getOrderstatus().equals(InsOrderStatusEnum.WAIT_PAY.getCode())) {
         if (iac.getOrderstatus().equals(InsOrderStatusEnum.WAIT_PAY.getCode())) {
             //获取签名地址
             //获取签名地址
@@ -449,7 +462,7 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
                 if (jqBoo || syBoo || jqSyBoo) {
                 if (jqBoo || syBoo || jqSyBoo) {
 
 
                     //  add  by  hxl  添加自动更新状态
                     //  add  by  hxl  添加自动更新状态
-                    insSubOrderUpdateDetailService.insertData(iac,iac.getOrderstatus(),InsOrderStatusEnum.WAIT_PAY.getCode(),"1");
+                    insSubOrderUpdateDetailService.insertData(iac, iac.getOrderstatus(), InsOrderStatusEnum.WAIT_PAY.getCode(), "1");
                     iac.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());
                     iac.setOrderstatus(InsOrderStatusEnum.WAIT_PAY.getCode());
                     //更新支付链接
                     //更新支付链接
                     SignatureResponse signature = guorenRequestApiComponent.signature(iac);
                     SignatureResponse signature = guorenRequestApiComponent.signature(iac);
@@ -476,7 +489,7 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
             // 支付
             // 支付
             if (updateFlag) {
             if (updateFlag) {
                 //  add  by  hxl  添加自动更新状态
                 //  add  by  hxl  添加自动更新状态
-                insSubOrderUpdateDetailService.insertData(iac,iac.getOrderstatus(),InsOrderStatusEnum.ACCEPT_INSURANCE.getCode(),"1");
+                insSubOrderUpdateDetailService.insertData(iac, iac.getOrderstatus(), InsOrderStatusEnum.ACCEPT_INSURANCE.getCode(), "1");
                 iac.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
                 iac.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
                 guorenRequestApiComponent.queryNoCarPolicyNo(iac);
                 guorenRequestApiComponent.queryNoCarPolicyNo(iac);
                 insAreaCompanyService.updateCompanyAndOrders(iac);
                 insAreaCompanyService.updateCompanyAndOrders(iac);
@@ -628,9 +641,6 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
     }
     }
 
 
 
 
-
-
-
     @Override
     @Override
     @Transactional
     @Transactional
     public HttpResult callBackApi(HttpServletRequest request) {
     public HttpResult callBackApi(HttpServletRequest request) {
@@ -655,7 +665,7 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
             InsAreaCompany iac = insAreaCompanyService.getByInsOrderNo(orderId);
             InsAreaCompany iac = insAreaCompanyService.getByInsOrderNo(orderId);
             if (null != iac) {
             if (null != iac) {
                 //  add  by  hxl  添加自动更新状态
                 //  add  by  hxl  添加自动更新状态
-                insSubOrderUpdateDetailService.insertData(iac,iac.getOrderstatus(),InsOrderStatusEnum.ACCEPT_INSURANCE.getCode(),"1");
+                insSubOrderUpdateDetailService.insertData(iac, iac.getOrderstatus(), InsOrderStatusEnum.ACCEPT_INSURANCE.getCode(), "1");
                 iac.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
                 iac.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
                 InsOrders order = insOrdersService.getById(iac.getOrderno());
                 InsOrders order = insOrdersService.getById(iac.getOrderno());
                 if (StringUtils.toInt(order.getOrderstatus()) < StringUtils.toInt(iac.getOrderstatus())) {
                 if (StringUtils.toInt(order.getOrderstatus()) < StringUtils.toInt(iac.getOrderstatus())) {
@@ -826,7 +836,7 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
         for (PremiumResp.DataDTO.CiInsureDemandDTO ciInsureDemandDTO : ciInsureDemandDTOS) {
         for (PremiumResp.DataDTO.CiInsureDemandDTO ciInsureDemandDTO : ciInsureDemandDTOS) {
             if (GuoRenRiskCode.R_0507.getCode().equals(ciInsureDemandDTO.getRiskCode())) {
             if (GuoRenRiskCode.R_0507.getCode().equals(ciInsureDemandDTO.getRiskCode())) {
                 quoteRespVo.setJqClaims(ciInsureDemandDTO.getClaimTimes());
                 quoteRespVo.setJqClaims(ciInsureDemandDTO.getClaimTimes());
-            }else if(GuoRenRiskCode.R_0518.getCode().equals(ciInsureDemandDTO.getRiskCode())){
+            } else if (GuoRenRiskCode.R_0518.getCode().equals(ciInsureDemandDTO.getRiskCode())) {
                 quoteRespVo.setSyClaims(ciInsureDemandDTO.getClaimTimes());
                 quoteRespVo.setSyClaims(ciInsureDemandDTO.getClaimTimes());
             }
             }
         }
         }
@@ -1067,7 +1077,7 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
     /**
     /**
      * 保费计算
      * 保费计算
      */
      */
-    public PremiumResp.DataDTO premiumQuery(BaseQuoteInfoVo yaQuoteInfoVo,
+    public PremiumResp premiumQuery(BaseQuoteInfoVo yaQuoteInfoVo,
                                             CarPriceResp.DataDTO carPriceResult,
                                             CarPriceResp.DataDTO carPriceResult,
                                             VinQueryResp.DataDTO vinQ,
                                             VinQueryResp.DataDTO vinQ,
                                             boolean isNoCar,
                                             boolean isNoCar,
@@ -1081,7 +1091,7 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
         //构造请求参数
         //构造请求参数
         PremiumReq req = PremiumReq.buildQuoteParam(yaQuoteInfoVo, carPriceResult, vinQ, isNoCar, specialAgreementVo, noCarPremium, goodsCode);
         PremiumReq req = PremiumReq.buildQuoteParam(yaQuoteInfoVo, carPriceResult, vinQ, isNoCar, specialAgreementVo, noCarPremium, goodsCode);
         PremiumResp resp;
         PremiumResp resp;
-
+        int a = 0;
         for (; ; ) {
         for (; ; ) {
             resp = guorenRequestApiComponent.request(req, PlatformInterfaceCode.API_IIRBT00004, PremiumResp.class);
             resp = guorenRequestApiComponent.request(req, PlatformInterfaceCode.API_IIRBT00004, PremiumResp.class);
             req.getCi().getPrpTmain().setAnswer(null);
             req.getCi().getPrpTmain().setAnswer(null);
@@ -1089,19 +1099,26 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
             //1、 交强险重复投保 替换时间
             //1、 交强险重复投保 替换时间
             boo = GuorenDuplicateInsuranceComponent.processor(resp, requestInfoList, req);
             boo = GuorenDuplicateInsuranceComponent.processor(resp, requestInfoList, req);
             if (boo) {
             if (boo) {
+                a++;
                 continue;
                 continue;
             }
             }
 
 
             boo = GuorenDuplicateInsuranceComponent.theCheckCodeIsWrong(resp);
             boo = GuorenDuplicateInsuranceComponent.theCheckCodeIsWrong(resp);
             if (boo) {
             if (boo) {
+                a++;
                 continue;
                 continue;
             }
             }
             //2、 转保
             //2、 转保
             boo = GuorenDuplicateInsuranceComponent.buildCheckCodeParam(resp, requestInfoList, req);
             boo = GuorenDuplicateInsuranceComponent.buildCheckCodeParam(resp, requestInfoList, req);
             if (boo) {
             if (boo) {
+                a++;
                 continue;
                 continue;
             }
             }
 
 
+            if (a > 6) {
+                break;
+            }
+
             break;
             break;
         }
         }
 
 
@@ -1110,11 +1127,7 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
         resp.getData().setBiStartDate(req.getBi().getPrpTmain().getStartDate());
         resp.getData().setBiStartDate(req.getBi().getPrpTmain().getStartDate());
         resp.getData().setBiEndDate(req.getBi().getPrpTmain().getEndDate());
         resp.getData().setBiEndDate(req.getBi().getPrpTmain().getEndDate());
 
 
-        if (resp.getResultCode() == 1) {
-            throw new SystemException(resp.getResultMsg() == null ? "保费计算失败,请联系管理员" : resp.getResultMsg());
-        }
-        return resp.getData();
-
+        return resp;
     }
     }
 
 
 
 
@@ -1215,11 +1228,11 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
             // 支付
             // 支付
             if (updateFlag) {
             if (updateFlag) {
                 //设置支付时间
                 //设置支付时间
-                if(iac.getPayDate()==null){
+                if (iac.getPayDate() == null) {
                     iac.setPayDate(LocalDateTime.now());
                     iac.setPayDate(LocalDateTime.now());
                 }
                 }
                 //  add  by  hxl  添加自动更新状态
                 //  add  by  hxl  添加自动更新状态
-                insSubOrderUpdateDetailService.insertData(iac,iac.getOrderstatus(),InsOrderStatusEnum.ACCEPT_INSURANCE.getCode(),"1");
+                insSubOrderUpdateDetailService.insertData(iac, iac.getOrderstatus(), InsOrderStatusEnum.ACCEPT_INSURANCE.getCode(), "1");
                 iac.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
                 iac.setOrderstatus(InsOrderStatusEnum.ACCEPT_INSURANCE.getCode());
                 guorenRequestApiComponent.queryNoCarPolicyNo(iac);
                 guorenRequestApiComponent.queryNoCarPolicyNo(iac);
                 insAreaCompanyService.updateCompanyAndOrdersNew(iac);
                 insAreaCompanyService.updateCompanyAndOrdersNew(iac);
@@ -1232,11 +1245,11 @@ public class GuorenOrderApiServiceImpl implements GuorenOrderApiService {
     public boolean cancelOrder(InsAreaCompany insAreaCompany) {
     public boolean cancelOrder(InsAreaCompany insAreaCompany) {
         String jqapplyno = insAreaCompany.getJqapplyno();
         String jqapplyno = insAreaCompany.getJqapplyno();
         List<String> list = new ArrayList<>();
         List<String> list = new ArrayList<>();
-        if(StringUtils.isNotEmpty(jqapplyno)){
+        if (StringUtils.isNotEmpty(jqapplyno)) {
             list.add(jqapplyno);
             list.add(jqapplyno);
         }
         }
         String syapplyno = insAreaCompany.getSyapplyno();
         String syapplyno = insAreaCompany.getSyapplyno();
-        if(StringUtils.isNotEmpty(syapplyno)){
+        if (StringUtils.isNotEmpty(syapplyno)) {
             list.add(syapplyno);
             list.add(syapplyno);
         }
         }
 
 

+ 17 - 1
src/main/java/com/ydtech/modules/order/service/impl/InsAreaCompanyServiceImpl.java

@@ -574,7 +574,7 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
 
 
         List<PtlAgreementProductCostsNew> costsNews = ptlAgreementProductCostsNewService.getByAgreementId(agreementProductQueryVo);
         List<PtlAgreementProductCostsNew> costsNews = ptlAgreementProductCostsNewService.getByAgreementId(agreementProductQueryVo);
 
 
-        if (costsNews.isEmpty()) {
+        if (costsNews.isEmpty() && !Objects.isNull(quoteVo.getNowCostsId())) {
             throw new SystemException("没有找到费用信息");
             throw new SystemException("没有找到费用信息");
         }
         }
         PtlAgreementProductCostsNew ptlAgreementProductCostsNew = costsNews.get(0);
         PtlAgreementProductCostsNew ptlAgreementProductCostsNew = costsNews.get(0);
@@ -1088,6 +1088,22 @@ public class InsAreaCompanyServiceImpl extends ServiceImpl<InsAreaCompanyMapper,
         return baseMapper.getAllRejectOrders(page, rejectPageQueryVo);
         return baseMapper.getAllRejectOrders(page, rejectPageQueryVo);
     }
     }
 
 
+    /**
+     * 更新费用匹配失败的日志
+     * @param companyId
+     * @param feeMatchErrMsg
+     * @return
+     */
+    @Override
+    public boolean updateFeeMatchErrMsg(String companyId, String feeMatchErrMsg) {
+        InsAreaCompany insAreaCompany = baseMapper.selectOne(new LambdaQueryWrapper<InsAreaCompany>()
+                .eq(InsAreaCompany::getId, companyId));
+        if(Objects.isNull(insAreaCompany))
+            return false;
+        insAreaCompany.setFeeMatchErrMsg(feeMatchErrMsg);
+        return baseMapper.updateById(insAreaCompany) > 0;
+    }
+
 }
 }
 
 
 
 

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

@@ -135,6 +135,13 @@ public class InsCrawlerOrderServiceImpl implements InsCrawlerOrderService {
         CrawlerQuoteResponse response = insCrawlerOrderComponents.request(apiUrl, ptlAgreementAttribution.getInsCompanyId(),
         CrawlerQuoteResponse response = insCrawlerOrderComponents.request(apiUrl, ptlAgreementAttribution.getInsCompanyId(),
                 PtlCrawlerApiType.API_2.getDesc(), crawlerQuoteRequest, CrawlerQuoteResponse.class);
                 PtlCrawlerApiType.API_2.getDesc(), crawlerQuoteRequest, CrawlerQuoteResponse.class);
         if (response.getCode() != 200) {
         if (response.getCode() != 200) {
+            InsOrders order = insOrdersService.getById(t.getOrderNo());
+            //判断错误订单是否是重复投保
+            InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.QUOTE_FAILED;
+            if(response.getMessage().contains("重复投保")){
+                insOrderStatusEnum = InsOrderStatusEnum.REPEAT_INSURE;
+            }
+            insOrdersService.responseFailedOrder(t,ptlAgreementAttribution,order,response.getMessage(),insOrderStatusEnum);
             throw new SystemException(response.getMessage());
             throw new SystemException(response.getMessage());
         }
         }
 
 

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

@@ -1,5 +1,6 @@
 package com.ydtech.modules.order.service.impl;
 package com.ydtech.modules.order.service.impl;
 
 
+import cn.hutool.core.collection.CollUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
@@ -31,6 +32,7 @@ import com.ydtech.modules.admin.model.dto.SysUserLinkPtlAgreementDto;
 import com.ydtech.modules.admin.model.po.SysUserIsDial;
 import com.ydtech.modules.admin.model.po.SysUserIsDial;
 import com.ydtech.modules.admin.service.*;
 import com.ydtech.modules.admin.service.*;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.base.controller.BaseController;
+import com.ydtech.modules.esm.model.EsmInsCompany;
 import com.ydtech.modules.esm.model.EsmUserReferrer;
 import com.ydtech.modules.esm.model.EsmUserReferrer;
 import com.ydtech.modules.esm.service.EsmUserReferrerService;
 import com.ydtech.modules.esm.service.EsmUserReferrerService;
 import com.ydtech.modules.fee.service.CostsCalcService;
 import com.ydtech.modules.fee.service.CostsCalcService;
@@ -66,6 +68,7 @@ import com.ydtech.modules.order.service.*;
 import com.ydtech.modules.protocol.entity.constants.PtlApiType;
 import com.ydtech.modules.protocol.entity.constants.PtlApiType;
 import com.ydtech.modules.protocol.entity.dto.PtlAgreementInsCompanyDto;
 import com.ydtech.modules.protocol.entity.dto.PtlAgreementInsCompanyDto;
 import com.ydtech.modules.protocol.entity.po.PtlAgreement;
 import com.ydtech.modules.protocol.entity.po.PtlAgreement;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
 import com.ydtech.modules.protocol.service.PtlAgreementService;
 import com.ydtech.modules.protocol.service.PtlAgreementService;
 import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
 import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
 import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew;
 import com.ydtech.modules.protocols.entity.po.PtlAgreementProductCostsNew;
@@ -2030,6 +2033,44 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         return baseMapper.queryInsured(queryInsuredInOrderVo, userId);
         return baseMapper.queryInsured(queryInsuredInOrderVo, userId);
     }
     }
 
 
+    @Override
+    public boolean responseFailedOrder(BaseQuoteVo quoteVo, PtlAgreementAttribution ptlAgreementAttribution, InsOrders insOrder, String errorMessage, InsOrderStatusEnum statusEnum) {
+
+        //保存订单信息
+        InsAreaCompany insAreaCompany = new InsAreaCompany();
+        insAreaCompany.setEntryStatus(insOrder.getEntryStatus());
+        insAreaCompany.setOrderno(insOrder.getOrderno());
+        insAreaCompany.setApiType(PtlApiType.PTL_API_1.getCode());
+        insAreaCompany.setOrderstatus(statusEnum.getCode());
+        insAreaCompany.setCreatetime(LocalDateTime.now());
+        insAreaCompany.setCompanyId(quoteVo.getCompanyId());
+        insAreaCompany.setInscompany(ptlAgreementAttribution.getInsCompanyName());
+        insAreaCompany.setAgreementId(quoteVo.getAgreementId());
+
+        insAreaCompany.setJqStartDate(insOrder.getJqstartdate());
+        insAreaCompany.setJqEndDate(insOrder.getJqenddate());
+        insAreaCompany.setSyStartDate(insOrder.getSystartdate());
+        insAreaCompany.setSyEndDate(insOrder.getSyenddate());
+
+        if (CollUtil.isEmpty(quoteVo.getRisks())) {
+            insAreaCompany.setRiskinfo(new JSONArray());
+        } else {
+            insAreaCompany.setRiskinfo(JSON.parseArray(JSON.toJSONString(quoteVo.getRisks())));
+        }
+
+        if (CollUtil.isEmpty(quoteVo.getKinds())) {
+            insAreaCompany.setKindinfo(new JSONArray());
+        } else {
+            insAreaCompany.setKindinfo(JSON.parseArray(JSON.toJSONString(quoteVo.getKinds())));
+        }
+
+        insAreaCompany.setQuoteErrMsg(errorMessage);
+
+        InsAreaCompanyAccidentalDriving insAreaCompanyAccidentalDriving = new InsAreaCompanyAccidentalDriving();
+        insAreaCompanyService.insertCompanyAndOrders(insAreaCompany, insAreaCompanyAccidentalDriving);
+        return true;
+    }
+
     /**
     /**
      * 更新订单的起保与终保时间
      * 更新订单的起保与终保时间
      */
      */

+ 17 - 6
src/main/java/com/ydtech/modules/order/service/impl/YongchengOrderApiServiceImpl.java

@@ -71,6 +71,8 @@ import com.ydtech.modules.order.entity.vo.*;
 import com.ydtech.modules.order.service.*;
 import com.ydtech.modules.order.service.*;
 import com.ydtech.modules.order.utils.InsuranceLog;
 import com.ydtech.modules.order.utils.InsuranceLog;
 import com.ydtech.modules.protocol.entity.constants.PtlApiType;
 import com.ydtech.modules.protocol.entity.constants.PtlApiType;
+import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
+import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
 import com.ydtech.modules.protocol.utils.AssertionUtils;
 import com.ydtech.modules.protocol.utils.AssertionUtils;
 import com.ydtech.utils.DateTimeUtil;
 import com.ydtech.utils.DateTimeUtil;
 import com.ydtech.utils.StringUtils;
 import com.ydtech.utils.StringUtils;
@@ -166,6 +168,9 @@ public class YongchengOrderApiServiceImpl implements YongchengOrderApiService {
     @Autowired
     @Autowired
     private InsSubOrderUpdateDetailService insSubOrderUpdateDetailService;
     private InsSubOrderUpdateDetailService insSubOrderUpdateDetailService;
 
 
+    @Autowired
+    private PtlAgreementAttributionService ptlAgreementAttributionService;
+
     public void gainVehicleModel(YcConfigureParameters ycConfigureParameters, CarInfoVo carInfo, CoreModelsVo coreModelsVo) {
     public void gainVehicleModel(YcConfigureParameters ycConfigureParameters, CarInfoVo carInfo, CoreModelsVo coreModelsVo) {
         CarModel_Req carModelReq = new CarModel_Req();
         CarModel_Req carModelReq = new CarModel_Req();
         carModelReq.setFrameNo(carInfo.getFrameNo());
         carModelReq.setFrameNo(carInfo.getFrameNo());
@@ -318,9 +323,7 @@ public class YongchengOrderApiServiceImpl implements YongchengOrderApiService {
             //1、商业险重复投保处理
             //1、商业险重复投保处理
             String sy = commerceRepetitionInsure(rr, m, requestInfoList, appSYFlag);
             String sy = commerceRepetitionInsure(rr, m, requestInfoList, appSYFlag);
 
 
-            if (jq.isEmpty() && sy.isEmpty()) {
-                throw new SystemException(errorMsg);
-            } else {
+            if (!jq.isEmpty() || !sy.isEmpty()) {
                 InsuranceLog.infoLog(InsuranceEnum.AICS.getPinyin(), "\n\n---------> {} - 重复投保处理", vinNo);
                 InsuranceLog.infoLog(InsuranceEnum.AICS.getPinyin(), "\n\n---------> {} - 重复投保处理", vinNo);
                 return this.getResponse(m, vinNo, requestInfoList, yaQuoteInfoVo);
                 return this.getResponse(m, vinNo, requestInfoList, yaQuoteInfoVo);
             }
             }
@@ -403,14 +406,22 @@ public class YongchengOrderApiServiceImpl implements YongchengOrderApiService {
             throw new SystemException(errorInfo.toString());
             throw new SystemException(errorInfo.toString());
         }
         }
 
 
+        //查询订单信息
+        InsOrders order = insOrdersService.getById(yaQuoteInfoVo.getOrderNo());
+
         //报价失败
         //报价失败
         if (!"000000".equals(rr.getHead().getErrorCode())) {
         if (!"000000".equals(rr.getHead().getErrorCode())) {
+            //保存报价失败的子订单
+            InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.QUOTE_FAILED;
+            if(rr.getHead().getErrorMessage().contains("重复投保"))
+            {
+                insOrderStatusEnum = InsOrderStatusEnum.REPEAT_INSURE;
+            }
+            PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(quoteVo.getAgreementId());
+            insOrdersService.responseFailedOrder(quoteVo,ptlAgreementAttribution, order,rr.getHead().getErrorMessage(),insOrderStatusEnum);
             return HttpResult.error(rr.getHead().getErrorMessage());
             return HttpResult.error(rr.getHead().getErrorMessage());
         }
         }
 
 
-        //查询订单信息
-        InsOrders order = insOrdersService.getById(yaQuoteInfoVo.getOrderNo());
-
         QuoteRespVo quoteRespVo = YcBuildData.buildQuoteRespVo(order, rr, yaQuoteInfoVo);
         QuoteRespVo quoteRespVo = YcBuildData.buildQuoteRespVo(order, rr, yaQuoteInfoVo);
         //8 生成订单
         //8 生成订单
         InsAreaCompany iac = responseOrder(order, quoteRespVo, rr, quoteVo);
         InsAreaCompany iac = responseOrder(order, quoteRespVo, rr, quoteVo);

+ 13 - 0
src/main/java/com/ydtech/modules/order/service/impl/ZijinOrderApiServiceImpl.java

@@ -151,6 +151,19 @@ public class ZijinOrderApiServiceImpl implements ZijinOrderApiService {
         String message = "";
         String message = "";
         CalculatePremiumResponse calculatePremiumResponse = zijinRequestApiComponents.calculatePremium(calculatePremiumRequest,
         CalculatePremiumResponse calculatePremiumResponse = zijinRequestApiComponents.calculatePremium(calculatePremiumRequest,
                 httpHeaders, modelQueryRequest, message, queryActualValueRequest, REPEAT_NUMBER, RETRY_NUMBER);
                 httpHeaders, modelQueryRequest, message, queryActualValueRequest, REPEAT_NUMBER, RETRY_NUMBER);
+
+        if(!calculatePremiumResponse.getRtnCode().equals(ResultEnum.C_0000)){
+            QuoteRespVo resp  = new QuoteRespVo();
+            InsOrders order = insOrdersService.getById(quoteVo.getOrderNo());
+            InsOrderStatusEnum insOrderStatusEnum = InsOrderStatusEnum.QUOTE_FAILED;
+            if(calculatePremiumResponse.getRtnMsg().contains("重复投保"))
+            {
+                insOrderStatusEnum = InsOrderStatusEnum.REPEAT_INSURE;
+            }
+            insOrdersService.responseFailedOrder(quoteVo,ptlAgreementAttribution, order,calculatePremiumResponse.getRtnMsg(),insOrderStatusEnum);
+            throw new SystemException(calculatePremiumResponse.getRtnMsg());
+        }
+
         // 警告信息
         // 警告信息
         QuoteRespVo quoteRespVo = getQuoteRespVo(calculatePremiumResponse, quoteInfoVo, quoteVo.getAccidentalDrivingVo(), isEnergy);
         QuoteRespVo quoteRespVo = getQuoteRespVo(calculatePremiumResponse, quoteInfoVo, quoteVo.getAccidentalDrivingVo(), isEnergy);
         if (!StringUtils.isEmpty(message)) {
         if (!StringUtils.isEmpty(message)) {

+ 4 - 2
src/main/resources/mapper/modules/order/InsAreaCompanyMapper.xml

@@ -71,6 +71,8 @@
         <result property="syRenewal" column="sy_renewal" jdbcType="VARCHAR"/>
         <result property="syRenewal" column="sy_renewal" jdbcType="VARCHAR"/>
         <result property="jqClaims" column="jq_claims" jdbcType="VARCHAR"/>
         <result property="jqClaims" column="jq_claims" jdbcType="VARCHAR"/>
         <result property="syClaims" column="sy_claims" jdbcType="VARCHAR"/>
         <result property="syClaims" column="sy_claims" jdbcType="VARCHAR"/>
+        <result property="feeMatchErrMsg" column="fee_match_err_msg" jdbcType="VARCHAR"/>
+        <result property="quoteErrMsg" column="quote_err_msg" jdbcType="VARCHAR"/>
 
 
     </resultMap>
     </resultMap>
 
 
@@ -2824,7 +2826,7 @@
         COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END ) / COUNT( CASE WHEN iac.orderstatus = 0 THEN 1 END ) AS "closeRate",
         COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END ) / COUNT( CASE WHEN iac.orderstatus = 0 THEN 1 END ) AS "closeRate",
         COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END ) / COUNT( iac.orderstatus ) AS "contributionRate",
         COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END ) / COUNT( iac.orderstatus ) AS "contributionRate",
         COUNT( CASE WHEN iac.orderstatus = 0 THEN 1 END ) / COUNT( iac.orderstatus ) AS "quotationRate",
         COUNT( CASE WHEN iac.orderstatus = 0 THEN 1 END ) / COUNT( iac.orderstatus ) AS "quotationRate",
-        COUNT( CASE WHEN ifa.auditstatus = 1 THEN 1 END ) AS "auditOrder"
+        COUNT( CASE WHEN iac.orderstatus = 1 THEN 1 END ) AS "auditOrder"
         FROM
         FROM
         ins_area_company iac
         ins_area_company iac
         LEFT JOIN ins_fee_audit ifa ON ifa.ins_order_no = iac.id
         LEFT JOIN ins_fee_audit ifa ON ifa.ins_order_no = iac.id
@@ -2844,7 +2846,7 @@
                 and io.deptid like "${taskStatisticsVo.houseId}%"
                 and io.deptid like "${taskStatisticsVo.houseId}%"
             </if>
             </if>
             <if test="taskStatisticsVo.createtimeStart !=null and taskStatisticsVo.createtimeStart != '' and taskStatisticsVo.createtimeEnd !=null and taskStatisticsVo.createtimeEnd != ''">
             <if test="taskStatisticsVo.createtimeStart !=null and taskStatisticsVo.createtimeStart != '' and taskStatisticsVo.createtimeEnd !=null and taskStatisticsVo.createtimeEnd != ''">
-                AND   DATE_FORMAT( io.createtime, '%Y-%m-%d')   BETWEEN #{taskStatisticsVo.createtimeStart} AND #{taskStatisticsVo.createtimeEnd}
+                AND   DATE_FORMAT( iac.createtime, '%Y-%m-%d')   BETWEEN DATE_FORMAT(#{taskStatisticsVo.createtimeStart},'%Y-%m-%d') AND DATE_FORMAT( #{taskStatisticsVo.createtimeEnd}, '%Y-%m-%d')
             </if>
             </if>
             <if test="taskStatisticsVo.beginDate !=null and taskStatisticsVo.beginDate != '' and taskStatisticsVo.endDate !=null and taskStatisticsVo.endDate != ''">
             <if test="taskStatisticsVo.beginDate !=null and taskStatisticsVo.beginDate != '' and taskStatisticsVo.endDate !=null and taskStatisticsVo.endDate != ''">
                 AND   DATE_FORMAT( iac.createtime, '%Y-%m-%d')   BETWEEN DATE_FORMAT( #{taskStatisticsVo.beginDate}, '%Y-%m-%d')  AND DATE_FORMAT( #{taskStatisticsVo.endDate}, '%Y-%m-%d')
                 AND   DATE_FORMAT( iac.createtime, '%Y-%m-%d')   BETWEEN DATE_FORMAT( #{taskStatisticsVo.beginDate}, '%Y-%m-%d')  AND DATE_FORMAT( #{taskStatisticsVo.endDate}, '%Y-%m-%d')