|
@@ -1,11 +1,13 @@
|
|
|
package com.ydtech.modules.order.service.impl;
|
|
package com.ydtech.modules.order.service.impl;
|
|
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
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;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
|
|
+import com.fasterxml.jackson.annotation.JsonProperty;
|
|
|
import com.ydtech.constants.enums.InsuranceOrderPdf;
|
|
import com.ydtech.constants.enums.InsuranceOrderPdf;
|
|
|
import com.ydtech.constants.enums.InsuranceRisk;
|
|
import com.ydtech.constants.enums.InsuranceRisk;
|
|
|
import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
|
|
import com.ydtech.constants.enums.dict.InsOrderStatusEnum;
|
|
@@ -16,7 +18,9 @@ import com.ydtech.modules.admin.service.SysAreaService;
|
|
|
import com.ydtech.modules.ins.model.vo.*;
|
|
import com.ydtech.modules.ins.model.vo.*;
|
|
|
import com.ydtech.modules.order.components.ConfigureParametersComponents;
|
|
import com.ydtech.modules.order.components.ConfigureParametersComponents;
|
|
|
import com.ydtech.modules.order.components.InsImagesUploadCacheComponents;
|
|
import com.ydtech.modules.order.components.InsImagesUploadCacheComponents;
|
|
|
|
|
+import com.ydtech.modules.order.components.VerificationCodeIdentification;
|
|
|
import com.ydtech.modules.order.components.chengtai.ChengTaiRequestApiComponents;
|
|
import com.ydtech.modules.order.components.chengtai.ChengTaiRequestApiComponents;
|
|
|
|
|
+import com.ydtech.modules.order.components.gouren.GuorenDuplicateInsuranceComponent;
|
|
|
import com.ydtech.modules.order.constants.UnderwritingStatus;
|
|
import com.ydtech.modules.order.constants.UnderwritingStatus;
|
|
|
import com.ydtech.modules.order.entity.*;
|
|
import com.ydtech.modules.order.entity.*;
|
|
|
import com.ydtech.modules.order.entity.api.chengtai.constants.CtKindCodeEnum;
|
|
import com.ydtech.modules.order.entity.api.chengtai.constants.CtKindCodeEnum;
|
|
@@ -25,7 +29,10 @@ import com.ydtech.modules.order.entity.api.chengtai.constants.ResponseCode;
|
|
|
import com.ydtech.modules.order.entity.api.chengtai.constants.RiskCodeEnum;
|
|
import com.ydtech.modules.order.entity.api.chengtai.constants.RiskCodeEnum;
|
|
|
import com.ydtech.modules.order.entity.api.chengtai.request.*;
|
|
import com.ydtech.modules.order.entity.api.chengtai.request.*;
|
|
|
import com.ydtech.modules.order.entity.api.chengtai.response.*;
|
|
import com.ydtech.modules.order.entity.api.chengtai.response.*;
|
|
|
|
|
+import com.ydtech.modules.order.entity.api.zijin.request.CalculatePremiumRequest;
|
|
|
import com.ydtech.modules.order.entity.config.ChengTaiConfigureParameters;
|
|
import com.ydtech.modules.order.entity.config.ChengTaiConfigureParameters;
|
|
|
|
|
+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.ReadPdfUrlListDto;
|
|
import com.ydtech.modules.order.entity.dto.ReadPdfUrlListDto;
|
|
|
import com.ydtech.modules.order.entity.filter.CarModelsFilterUtils;
|
|
import com.ydtech.modules.order.entity.filter.CarModelsFilterUtils;
|
|
|
import com.ydtech.modules.order.entity.po.InsTaskImagesBase64;
|
|
import com.ydtech.modules.order.entity.po.InsTaskImagesBase64;
|
|
@@ -35,10 +42,10 @@ import com.ydtech.modules.order.entity.vo.PolicyPrintVo;
|
|
|
import com.ydtech.modules.order.service.*;
|
|
import com.ydtech.modules.order.service.*;
|
|
|
import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
|
|
import com.ydtech.modules.protocol.entity.po.PtlAgreementAttribution;
|
|
|
import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
|
|
import com.ydtech.modules.protocol.service.PtlAgreementAttributionService;
|
|
|
-import com.ydtech.utils.CalculateUtils;
|
|
|
|
|
-import com.ydtech.utils.DateTimeUtil;
|
|
|
|
|
-import com.ydtech.utils.StringUtils;
|
|
|
|
|
|
|
+import com.ydtech.utils.*;
|
|
|
import com.ydtech.utils.baidu.FileUtil;
|
|
import com.ydtech.utils.baidu.FileUtil;
|
|
|
|
|
+import lombok.Data;
|
|
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.http.HttpHeaders;
|
|
import org.springframework.http.HttpHeaders;
|
|
@@ -166,12 +173,117 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
|
|
|
if(!ResponseCode.R_000.getCode().equals(insurePremiumResponse.getCode()) && insurePremiumResponse.getMessage().contains("重复投保")){
|
|
if(!ResponseCode.R_000.getCode().equals(insurePremiumResponse.getCode()) && insurePremiumResponse.getMessage().contains("重复投保")){
|
|
|
// 交强险 商业险 重复投保处理
|
|
// 交强险 商业险 重复投保处理
|
|
|
this.repetitionInsure(insurePremiumResponse,insurePremiumRequest);
|
|
this.repetitionInsure(insurePremiumResponse,insurePremiumRequest);
|
|
|
- InsurePremiumResponse response = chengTaiRequestApiComponents.quoteApi(insurePremiumRequest,httpHeaders);
|
|
|
|
|
- return response;
|
|
|
|
|
|
|
+ insurePremiumResponse = chengTaiRequestApiComponents.quoteApi(insurePremiumRequest,httpHeaders);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 转保车处理
|
|
|
|
|
+ InsurePremiumResponse.BiContractDTO biContract = insurePremiumResponse.getBiContract();
|
|
|
|
|
+ InsurePremiumResponse.CiContractDTO ciContract = insurePremiumResponse.getCiContract();
|
|
|
|
|
+ Double biTotalPremium = null;
|
|
|
|
|
+ Double ciTotalPremium = null;
|
|
|
|
|
+ Boolean biBoo = false;
|
|
|
|
|
+ Boolean ciBoo = false;
|
|
|
|
|
+ if(Objects.nonNull(biContract)){
|
|
|
|
|
+ biTotalPremium = biContract.getContractMain().getTotalPremium();
|
|
|
|
|
+ if(Objects.isNull(biTotalPremium)){
|
|
|
|
|
+ biBoo = true;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if(Objects.nonNull(ciContract)){
|
|
|
|
|
+ ciTotalPremium = ciContract.getContractMain().getTotalPremium();
|
|
|
|
|
+ if(Objects.isNull(ciTotalPremium)){
|
|
|
|
|
+ ciBoo = true;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (biBoo || ciBoo) {
|
|
|
|
|
+ this.platRepetition(biContract,ciContract,insurePremiumRequest);
|
|
|
|
|
+ insurePremiumResponse = chengTaiRequestApiComponents.quoteApi(insurePremiumRequest,httpHeaders);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if(!ResponseCode.R_000.getCode().equals(insurePremiumResponse.getCode()) && insurePremiumResponse.getMessage().contains("录入的校验码有误")){
|
|
|
|
|
+ this.replaceByte(insurePremiumRequest);
|
|
|
|
|
+ insurePremiumResponse = chengTaiRequestApiComponents.quoteApi(insurePremiumRequest,httpHeaders);
|
|
|
}
|
|
}
|
|
|
return insurePremiumResponse;
|
|
return insurePremiumResponse;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 错误字符替换
|
|
|
|
|
+ * @param insurePremiumRequest
|
|
|
|
|
+ */
|
|
|
|
|
+ private void replaceByte(InsurePremiumRequest insurePremiumRequest) {
|
|
|
|
|
+ InsurePremiumRequest.CiContractDTO ciContractReq = insurePremiumRequest.getCiContract();
|
|
|
|
|
+ InsurePremiumRequest.BiContractDTO biContractReq = insurePremiumRequest.getBiContract();
|
|
|
|
|
+ if(Objects.nonNull(ciContractReq)){
|
|
|
|
|
+ InsurePremiumRequest.CiContractDTO.PlatFormMessageDTO platFormMessageDTO = ciContractReq.getPlatFormMessage();
|
|
|
|
|
+ platFormMessageDTO.setAnswer(replacingStrings(platFormMessageDTO.getAnswer()));
|
|
|
|
|
+ }
|
|
|
|
|
+ if(Objects.nonNull(biContractReq)){
|
|
|
|
|
+ InsurePremiumRequest.BiContractDTO.PlatFormMessageDTO platFormMessageDTO = biContractReq.getPlatFormMessage();
|
|
|
|
|
+ platFormMessageDTO.setAnswer(replacingStrings(platFormMessageDTO.getAnswer()));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public static String replacingStrings(String code) {
|
|
|
|
|
+ if (StringUtils.isEmpty(code)) {
|
|
|
|
|
+ return code;
|
|
|
|
|
+ }
|
|
|
|
|
+ if (code.length() > 4) {
|
|
|
|
|
+ return code.substring(code.length() - 4);
|
|
|
|
|
+ }
|
|
|
|
|
+ return code
|
|
|
|
|
+ .replace("3", "j")
|
|
|
|
|
+ .replace("0", "o");
|
|
|
|
|
+ }
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 转保车处理
|
|
|
|
|
+ * @param biContract
|
|
|
|
|
+ * @param ciContract
|
|
|
|
|
+ * @param insurePremiumRequest
|
|
|
|
|
+ */
|
|
|
|
|
+ private void platRepetition(InsurePremiumResponse.BiContractDTO biContract, InsurePremiumResponse.CiContractDTO ciContract, InsurePremiumRequest insurePremiumRequest) {
|
|
|
|
|
+ String jqImageStr = null;
|
|
|
|
|
+ String syImageStr = null;
|
|
|
|
|
+
|
|
|
|
|
+ //交强险
|
|
|
|
|
+ if (Objects.nonNull(ciContract)) {
|
|
|
|
|
+ jqImageStr = ciContract.getPlatFormMessage().getQuestion();
|
|
|
|
|
+ }
|
|
|
|
|
+ //商业险
|
|
|
|
|
+ if (Objects.nonNull(biContract)) {
|
|
|
|
|
+ syImageStr = biContract.getPlatFormMessage().getQuestion();
|
|
|
|
|
+ }
|
|
|
|
|
+ Map<String, String> bodyMap = new HashMap<>();
|
|
|
|
|
+ bodyMap.put("jqImage", com.ydtech.utils.StringUtils.toString(jqImageStr, ""));
|
|
|
|
|
+ bodyMap.put("syImage", com.ydtech.utils.StringUtils.toString(syImageStr, ""));
|
|
|
|
|
+ String sendBody = JsonUtils.toJson(bodyMap);
|
|
|
|
|
+ String ocrStr = HttpUtil.sendPost("http://39.98.41.104:8088/getres", sendBody);
|
|
|
|
|
+ CheckCodeResp resp = JSONUtil.toBean(ocrStr, CheckCodeResp.class);
|
|
|
|
|
+
|
|
|
|
|
+ if(Objects.nonNull(ciContract)){
|
|
|
|
|
+ InsurePremiumRequest.CiContractDTO ciContractReq = insurePremiumRequest.getCiContract();
|
|
|
|
|
+ InsurePremiumRequest.CiContractDTO.PlatFormMessageDTO platFormMessage = ciContractReq.getPlatFormMessage();
|
|
|
|
|
+ if(Objects.isNull(platFormMessage)){
|
|
|
|
|
+ platFormMessage = new InsurePremiumRequest.CiContractDTO.PlatFormMessageDTO();
|
|
|
|
|
+ }
|
|
|
|
|
+ BeanUtils.copyProperties(ciContract.getPlatFormMessage(), platFormMessage);
|
|
|
|
|
+ platFormMessage.setAnswer(resp.jqImageCode);
|
|
|
|
|
+ ciContractReq.setPlatFormMessage(platFormMessage);
|
|
|
|
|
+ insurePremiumRequest.setCiContract(ciContractReq);
|
|
|
|
|
+ }
|
|
|
|
|
+ if(Objects.nonNull(biContract)){
|
|
|
|
|
+ InsurePremiumRequest.BiContractDTO biContractReq = insurePremiumRequest.getBiContract();
|
|
|
|
|
+ InsurePremiumRequest.BiContractDTO.PlatFormMessageDTO platFormMessage = biContractReq.getPlatFormMessage();
|
|
|
|
|
+ if(Objects.isNull(platFormMessage)){
|
|
|
|
|
+ platFormMessage = new InsurePremiumRequest.BiContractDTO.PlatFormMessageDTO();
|
|
|
|
|
+ }
|
|
|
|
|
+ BeanUtils.copyProperties(biContract.getPlatFormMessage(), platFormMessage);
|
|
|
|
|
+ platFormMessage.setAnswer(resp.syImageCode);
|
|
|
|
|
+ biContractReq.setPlatFormMessage(platFormMessage);
|
|
|
|
|
+ insurePremiumRequest.setBiContract(biContractReq);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 重复投保时间处理
|
|
* 重复投保时间处理
|
|
|
*
|
|
*
|
|
@@ -845,4 +957,15 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
|
|
|
String dir = "carInsPolicy/" + licensePlate + "/";
|
|
String dir = "carInsPolicy/" + licensePlate + "/";
|
|
|
return FileUtil.netUrlToFile(url, dir, fileName, uploadFilePath, apiUrl + showFileUrl);
|
|
return FileUtil.netUrlToFile(url, dir, fileName, uploadFilePath, apiUrl + showFileUrl);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ @Data
|
|
|
|
|
+ static class CheckCodeResp {
|
|
|
|
|
+
|
|
|
|
|
+ @JsonProperty(value = "jqImageCode")
|
|
|
|
|
+ String jqImageCode;
|
|
|
|
|
+
|
|
|
|
|
+ @JsonProperty(value = "syImageCode")
|
|
|
|
|
+ String syImageCode;
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|