|
@@ -1,9 +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.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
|
+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;
|
|
@@ -14,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;
|
|
@@ -23,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;
|
|
@@ -33,15 +42,15 @@ 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.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;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
-import java.math.BigDecimal;
|
|
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
@@ -66,6 +75,9 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private InsAreaCompanyService insAreaCompanyService;
|
|
private InsAreaCompanyService insAreaCompanyService;
|
|
|
|
|
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private InsAreaCompanyRelatedInfoService insAreaCompanyRelatedInfoService;
|
|
|
|
|
+
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private InsTaskImagesService insTaskImagesService;
|
|
private InsTaskImagesService insTaskImagesService;
|
|
|
|
|
|
|
@@ -97,7 +109,6 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
|
|
|
ChengTaiConfigureParameters parameters = configureParametersComponents.toEntity(ChengTaiConfigureParameters.class,
|
|
ChengTaiConfigureParameters parameters = configureParametersComponents.toEntity(ChengTaiConfigureParameters.class,
|
|
|
ptlAgreementAttribution);
|
|
ptlAgreementAttribution);
|
|
|
HttpHeaders httpHeaders = chengTaiRequestApiComponents.getHttpHeaders(parameters,ChengTaiRequestApiComponents.RECURSIVE_HIERARCHY);
|
|
HttpHeaders httpHeaders = chengTaiRequestApiComponents.getHttpHeaders(parameters,ChengTaiRequestApiComponents.RECURSIVE_HIERARCHY);
|
|
|
-
|
|
|
|
|
/** 2. 查询车型 */
|
|
/** 2. 查询车型 */
|
|
|
CarInfoRequest carInfoRequest = new CarInfoRequest(quoteInfoVo.getCarInfo(), parameters);
|
|
CarInfoRequest carInfoRequest = new CarInfoRequest(quoteInfoVo.getCarInfo(), parameters);
|
|
|
CarInfoResponse carInfoResponse = chengTaiRequestApiComponents.carinfoQuery(carInfoRequest, httpHeaders);
|
|
CarInfoResponse carInfoResponse = chengTaiRequestApiComponents.carinfoQuery(carInfoRequest, httpHeaders);
|
|
@@ -112,8 +123,10 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
|
|
|
/** 4. 报价 */
|
|
/** 4. 报价 */
|
|
|
PersonAreaVo personAreaVo = new PersonAreaVo();
|
|
PersonAreaVo personAreaVo = new PersonAreaVo();
|
|
|
buildRegion(quoteInfoVo,personAreaVo);
|
|
buildRegion(quoteInfoVo,personAreaVo);
|
|
|
- InsurePremiumRequest insurePremiumRequest = new InsurePremiumRequest(quoteInfoVo,carModelListDTO, carActualValueResponse,personAreaVo,parameters,quoteVo, carModelListDTO);
|
|
|
|
|
- InsurePremiumResponse insurePremiumResponse = chengTaiRequestApiComponents.quoteApi(insurePremiumRequest,httpHeaders);
|
|
|
|
|
|
|
+ InsurePremiumRequest insurePremiumRequest = new InsurePremiumRequest(quoteInfoVo,carModelListDTO, carActualValueResponse,personAreaVo,parameters,quoteVo);
|
|
|
|
|
+
|
|
|
|
|
+ // 重复报价
|
|
|
|
|
+ InsurePremiumResponse insurePremiumResponse = this.getResponse(insurePremiumRequest, httpHeaders);
|
|
|
|
|
|
|
|
String message = "";
|
|
String message = "";
|
|
|
if(!ResponseCode.R_000.getCode().equals(insurePremiumResponse.getCode())){
|
|
if(!ResponseCode.R_000.getCode().equals(insurePremiumResponse.getCode())){
|
|
@@ -149,6 +162,199 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
|
|
|
return responseOrder(insurePremiumResponse, quoteRespVo, ptlAgreementAttribution, insurePremiumResponse.getOrderId());
|
|
return responseOrder(insurePremiumResponse, quoteRespVo, ptlAgreementAttribution, insurePremiumResponse.getOrderId());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 重复报价
|
|
|
|
|
+ * @param insurePremiumRequest
|
|
|
|
|
+ * @param httpHeaders
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ private InsurePremiumResponse getResponse(InsurePremiumRequest insurePremiumRequest, HttpHeaders httpHeaders) throws Exception {
|
|
|
|
|
+ InsurePremiumResponse insurePremiumResponse = chengTaiRequestApiComponents.quoteApi(insurePremiumRequest,httpHeaders);
|
|
|
|
|
+ if(!ResponseCode.R_000.getCode().equals(insurePremiumResponse.getCode()) && insurePremiumResponse.getMessage().contains("重复投保")){
|
|
|
|
|
+ // 交强险 商业险 重复投保处理
|
|
|
|
|
+ this.repetitionInsure(insurePremiumResponse,insurePremiumRequest);
|
|
|
|
|
+ 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;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 错误字符替换
|
|
|
|
|
+ * @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);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 重复投保时间处理
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param insurePremiumResponse
|
|
|
|
|
+ * @param insurePremiumRequest
|
|
|
|
|
+ */
|
|
|
|
|
+ private void repetitionInsure(InsurePremiumResponse insurePremiumResponse, InsurePremiumRequest insurePremiumRequest) {
|
|
|
|
|
+ String err = insurePremiumResponse.getMessage();
|
|
|
|
|
+ List<String> errList = Arrays.asList(err.split("。"));
|
|
|
|
|
+ if(CollUtil.isEmpty(errList)){ return; }
|
|
|
|
|
+
|
|
|
|
|
+ // 定义时间格式
|
|
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
+ DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
|
|
|
|
|
+ errList.stream().forEach(a ->{
|
|
|
|
|
+ if (a.contains("交强险平台") && a.contains("重复投保")){
|
|
|
|
|
+ InsurePremiumRequest.CiContractDTO ciContract = insurePremiumRequest.getCiContract();
|
|
|
|
|
+ InsurePremiumRequest.CiContractDTO.ContractMainDTO contractMain = ciContract.getContractMain();
|
|
|
|
|
+
|
|
|
|
|
+ LocalDateTime dateTime = null;
|
|
|
|
|
+ if(a.contains("终保日期")){
|
|
|
|
|
+ String startTime = a.substring(a.indexOf("终保日期")+5,a.indexOf("终保日期")+21);
|
|
|
|
|
+ // 解析原始时间
|
|
|
|
|
+ dateTime = LocalDateTime.parse(startTime, formatter1);
|
|
|
|
|
+ }else{
|
|
|
|
|
+ String startTime = contractMain.getExpiryDate();
|
|
|
|
|
+ // 解析原始时间
|
|
|
|
|
+ dateTime = LocalDateTime.parse(startTime, formatter);
|
|
|
|
|
+ }
|
|
|
|
|
+ LocalDateTime tomorrowMidnight = dateTime;
|
|
|
|
|
+ //判断是否是整点 如果是整点则不进行明天的零点操作
|
|
|
|
|
+ if(dateTime.getHour() != 0 || dateTime.getMinute() != 0 || dateTime.getSecond() != 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ tomorrowMidnight = dateTime.toLocalDate().plusDays(1).atStartOfDay();
|
|
|
|
|
+ }
|
|
|
|
|
+ LocalDateTime end = tomorrowMidnight.plusYears(1L);
|
|
|
|
|
+ contractMain.setValidDate(DateTimeUtil.format(tomorrowMidnight, DateTimeUtil.DATETIME_PATTERN));
|
|
|
|
|
+ LocalDateTime localDateTime = end.minusSeconds(1L);
|
|
|
|
|
+ contractMain.setExpiryDate(DateTimeUtil.format(localDateTime, DateTimeUtil.DATETIME_PATTERN));
|
|
|
|
|
+ ciContract.setContractMain(contractMain);
|
|
|
|
|
+ insurePremiumRequest.setCiContract(ciContract);
|
|
|
|
|
+ }
|
|
|
|
|
+ if (a.contains("商业险险平台") && a.contains("重复投保")){
|
|
|
|
|
+ InsurePremiumRequest.BiContractDTO biContract = insurePremiumRequest.getBiContract();
|
|
|
|
|
+ InsurePremiumRequest.BiContractDTO.ContractMainDTO contractMain = biContract.getContractMain();
|
|
|
|
|
+ LocalDateTime dateTime = null;
|
|
|
|
|
+ if(a.contains("终保日期")){
|
|
|
|
|
+ String startTime = a.substring(a.indexOf("终保日期")+5,a.indexOf("终保日期")+21);
|
|
|
|
|
+ // 解析原始时间
|
|
|
|
|
+ dateTime = LocalDateTime.parse(startTime, formatter1);
|
|
|
|
|
+ }else{
|
|
|
|
|
+ String startTime = contractMain.getExpiryDate();
|
|
|
|
|
+ // 解析原始时间
|
|
|
|
|
+ dateTime = LocalDateTime.parse(startTime, formatter);
|
|
|
|
|
+ }
|
|
|
|
|
+ LocalDateTime tomorrowMidnight = dateTime;
|
|
|
|
|
+ //判断是否是整点 如果是整点则不进行明天的零点操作
|
|
|
|
|
+ if(dateTime.getHour() != 0 || dateTime.getMinute() != 0 || dateTime.getSecond() != 0)
|
|
|
|
|
+ {
|
|
|
|
|
+ tomorrowMidnight = dateTime.toLocalDate().plusDays(1).atStartOfDay();
|
|
|
|
|
+ }
|
|
|
|
|
+ LocalDateTime end = tomorrowMidnight.plusYears(1L);
|
|
|
|
|
+ contractMain.setValidDate(DateTimeUtil.format(tomorrowMidnight, DateTimeUtil.DATETIME_PATTERN));
|
|
|
|
|
+ LocalDateTime localDateTime = end.minusSeconds(1L);
|
|
|
|
|
+ contractMain.setExpiryDate(DateTimeUtil.format(localDateTime, DateTimeUtil.DATETIME_PATTERN));
|
|
|
|
|
+ biContract.setContractMain(contractMain);
|
|
|
|
|
+ insurePremiumRequest.setBiContract(biContract);
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private HttpResult<QuoteRespVo> responseOrder(InsurePremiumResponse insurePremiumResponse, QuoteRespVo quoteRespVo, PtlAgreementAttribution ptlAgreementAttribution, String orderId) {
|
|
private HttpResult<QuoteRespVo> responseOrder(InsurePremiumResponse insurePremiumResponse, QuoteRespVo quoteRespVo, PtlAgreementAttribution ptlAgreementAttribution, String orderId) {
|
|
|
// 保存订单信息
|
|
// 保存订单信息
|
|
|
InsAreaCompany insAreaCompany = new InsAreaCompany(quoteRespVo, ptlAgreementAttribution);
|
|
InsAreaCompany insAreaCompany = new InsAreaCompany(quoteRespVo, ptlAgreementAttribution);
|
|
@@ -161,8 +367,8 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
|
|
|
if(Objects.nonNull(insurePremiumResponse.getCiContract())){
|
|
if(Objects.nonNull(insurePremiumResponse.getCiContract())){
|
|
|
if(Objects.nonNull(insurePremiumResponse.getCiContract().getTax())){
|
|
if(Objects.nonNull(insurePremiumResponse.getCiContract().getTax())){
|
|
|
InsurePremiumResponse.CiContractDTO.TaxDTO taxDTO = insurePremiumResponse.getCiContract().getTax();
|
|
InsurePremiumResponse.CiContractDTO.TaxDTO taxDTO = insurePremiumResponse.getCiContract().getTax();
|
|
|
- TaxArrears taxArrears = new TaxArrears("往年欠税", taxDTO.getAnnualTaxDue().doubleValue(),
|
|
|
|
|
- taxDTO.getSumOverdue().doubleValue());
|
|
|
|
|
|
|
+ TaxArrears taxArrears = new TaxArrears("往年欠税", taxDTO.getAnnualTaxDue(),
|
|
|
|
|
+ taxDTO.getSumOverdue());
|
|
|
List<TaxArrears> taxArrearsList = Collections.singletonList(taxArrears);
|
|
List<TaxArrears> taxArrearsList = Collections.singletonList(taxArrears);
|
|
|
insAreaCompany.setTaxArrears(JSON.parseArray(JSON.toJSONString(taxArrearsList)));
|
|
insAreaCompany.setTaxArrears(JSON.parseArray(JSON.toJSONString(taxArrearsList)));
|
|
|
|
|
|
|
@@ -172,17 +378,19 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
|
|
|
List<InsAreaCompanyAccidentalDriving> insAreaCompanyAccidentalDrivings = new ArrayList<>();
|
|
List<InsAreaCompanyAccidentalDriving> insAreaCompanyAccidentalDrivings = new ArrayList<>();
|
|
|
accident.forEach(accidentalDriving -> {
|
|
accident.forEach(accidentalDriving -> {
|
|
|
InsAreaCompanyAccidentalDriving insAreaCompanyAccidentalDriving = new InsAreaCompanyAccidentalDriving();
|
|
InsAreaCompanyAccidentalDriving insAreaCompanyAccidentalDriving = new InsAreaCompanyAccidentalDriving();
|
|
|
- insAreaCompanyAccidentalDriving.setCompanyId(insAreaCompany.getCompanyId());
|
|
|
|
|
|
|
+ insAreaCompanyAccidentalDriving.setCompanyId(insAreaCompany.getId());
|
|
|
insAreaCompanyAccidentalDriving.setQuantity(Integer.parseInt(accidentalDriving.getQuantity()));
|
|
insAreaCompanyAccidentalDriving.setQuantity(Integer.parseInt(accidentalDriving.getQuantity()));
|
|
|
insAreaCompanyAccidentalDriving.setRideRiskCode(accidentalDriving.getProjectCode());
|
|
insAreaCompanyAccidentalDriving.setRideRiskCode(accidentalDriving.getProjectCode());
|
|
|
insAreaCompanyAccidentalDriving.setRideRiskName(accidentalDriving.getProjectName());
|
|
insAreaCompanyAccidentalDriving.setRideRiskName(accidentalDriving.getProjectName());
|
|
|
insAreaCompanyAccidentalDrivings.add(insAreaCompanyAccidentalDriving);
|
|
insAreaCompanyAccidentalDrivings.add(insAreaCompanyAccidentalDriving);
|
|
|
});
|
|
});
|
|
|
-
|
|
|
|
|
- // 特约
|
|
|
|
|
- insAreaCompany.setJqappoint(quoteRespVo.getJqappoint());
|
|
|
|
|
- insAreaCompany.setSyappoint(quoteRespVo.getSyappoint());
|
|
|
|
|
insAreaCompanyService.insertCompanyAndOrders(insAreaCompany, insAreaCompanyAccidentalDrivings);
|
|
insAreaCompanyService.insertCompanyAndOrders(insAreaCompany, insAreaCompanyAccidentalDrivings);
|
|
|
|
|
+ // 保存交强特约信息
|
|
|
|
|
+ InsAreaCompanyRelatedInfo info = new InsAreaCompanyRelatedInfo();
|
|
|
|
|
+ info.setCompanyId(insAreaCompany.getId());
|
|
|
|
|
+ info.setJqappoint(quoteRespVo.getJqappoint());
|
|
|
|
|
+ info.setSyappoint(quoteRespVo.getSyappoint());
|
|
|
|
|
+ insAreaCompanyRelatedInfoService.save(info);
|
|
|
quoteRespVo.setCompanyId(insAreaCompany.getId());
|
|
quoteRespVo.setCompanyId(insAreaCompany.getId());
|
|
|
return HttpResult.ok("报价成功", quoteRespVo);
|
|
return HttpResult.ok("报价成功", quoteRespVo);
|
|
|
|
|
|
|
@@ -199,17 +407,17 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
|
|
|
// 交强
|
|
// 交强
|
|
|
if(Objects.nonNull(insurePremiumResponse.getCiContract())){
|
|
if(Objects.nonNull(insurePremiumResponse.getCiContract())){
|
|
|
InsurePremiumResponse.CiContractDTO.ContractMainDTO ciContractMain = insurePremiumResponse.getCiContract().getContractMain();
|
|
InsurePremiumResponse.CiContractDTO.ContractMainDTO ciContractMain = insurePremiumResponse.getCiContract().getContractMain();
|
|
|
- jqPremium = ciContractMain.getTotalPremium().doubleValue();
|
|
|
|
|
|
|
+ jqPremium = ciContractMain.getTotalPremium();
|
|
|
quoteRespVo.setStartDateJq(ciContractMain.getValidDate());
|
|
quoteRespVo.setStartDateJq(ciContractMain.getValidDate());
|
|
|
quoteRespVo.setEndDateJq(ciContractMain.getExpiryDate());
|
|
quoteRespVo.setEndDateJq(ciContractMain.getExpiryDate());
|
|
|
//车船税
|
|
//车船税
|
|
|
InsurePremiumResponse.CiContractDTO.TaxDTO taxDTO = insurePremiumResponse.getCiContract().getTax();
|
|
InsurePremiumResponse.CiContractDTO.TaxDTO taxDTO = insurePremiumResponse.getCiContract().getTax();
|
|
|
- sumPayTax = taxDTO.getSumTax().doubleValue();
|
|
|
|
|
|
|
+ sumPayTax = taxDTO.getSumTax();
|
|
|
}
|
|
}
|
|
|
//商业
|
|
//商业
|
|
|
if(Objects.nonNull(insurePremiumResponse.getBiContract())){
|
|
if(Objects.nonNull(insurePremiumResponse.getBiContract())){
|
|
|
InsurePremiumResponse.BiContractDTO.ContractMainDTO biContractMain = insurePremiumResponse.getBiContract().getContractMain();
|
|
InsurePremiumResponse.BiContractDTO.ContractMainDTO biContractMain = insurePremiumResponse.getBiContract().getContractMain();
|
|
|
- syPremium = biContractMain.getTotalPremium().doubleValue();
|
|
|
|
|
|
|
+ syPremium = biContractMain.getTotalPremium();
|
|
|
quoteRespVo.setStartDateSy(biContractMain.getValidDate());
|
|
quoteRespVo.setStartDateSy(biContractMain.getValidDate());
|
|
|
quoteRespVo.setEndDateSy(biContractMain.getExpiryDate());
|
|
quoteRespVo.setEndDateSy(biContractMain.getExpiryDate());
|
|
|
}
|
|
}
|
|
@@ -220,7 +428,7 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
|
|
|
InsurePremiumResponse.AccContractDTO.toAccidentResponseVoList(accContract,quoteVo);
|
|
InsurePremiumResponse.AccContractDTO.toAccidentResponseVoList(accContract,quoteVo);
|
|
|
quoteRespVo.setAccident(accidentResponseVos);
|
|
quoteRespVo.setAccident(accidentResponseVos);
|
|
|
// 驾意险价格
|
|
// 驾意险价格
|
|
|
- jyPremium = Double.parseDouble(accContract.getContractMain().getTotalPremium());
|
|
|
|
|
|
|
+ jyPremium = accContract.getContractMain().getTotalPremium();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
List<QuoteKindRespVo> kindList1 = new ArrayList<>();
|
|
List<QuoteKindRespVo> kindList1 = new ArrayList<>();
|
|
@@ -245,8 +453,8 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
|
|
|
CtKindCodeEnum ctKindCodeEnum = Enum.valueOf(CtKindCodeEnum.class, kindInfoVo.getKindCode());
|
|
CtKindCodeEnum ctKindCodeEnum = Enum.valueOf(CtKindCodeEnum.class, kindInfoVo.getKindCode());
|
|
|
InsurePremiumResponse.BiContractDTO.CoverageDTO coverageDTO = coverage.stream().filter(a -> a.getKindCode().equals(ctKindCodeEnum.getCode())).collect(Collectors.toList()).get(0);
|
|
InsurePremiumResponse.BiContractDTO.CoverageDTO coverageDTO = coverage.stream().filter(a -> a.getKindCode().equals(ctKindCodeEnum.getCode())).collect(Collectors.toList()).get(0);
|
|
|
kind.setAmount(coverageDTO.getAmount().doubleValue());
|
|
kind.setAmount(coverageDTO.getAmount().doubleValue());
|
|
|
- kind.setCoveragePremium(coverageDTO.getCoveragePremium().doubleValue());
|
|
|
|
|
- kind.setUnitAmount(coverageDTO.getUnitAmount() != null ? coverageDTO.getUnitAmount().doubleValue() : 0);
|
|
|
|
|
|
|
+ kind.setCoveragePremium(coverageDTO.getCoveragePremium());
|
|
|
|
|
+ kind.setUnitAmount(Objects.isNull(coverageDTO.getUnitAmount()) ? 0 : coverageDTO.getUnitAmount() );
|
|
|
kind.setServiceTimes(coverageDTO.getQuantity());
|
|
kind.setServiceTimes(coverageDTO.getQuantity());
|
|
|
if (!ObjectUtils.isEmpty(kindInfoVo.getDeductibleRate())) {
|
|
if (!ObjectUtils.isEmpty(kindInfoVo.getDeductibleRate())) {
|
|
|
kind.setDeductibleRate(Double.parseDouble(kindInfoVo.getDeductibleRate()));
|
|
kind.setDeductibleRate(Double.parseDouble(kindInfoVo.getDeductibleRate()));
|
|
@@ -385,6 +593,9 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
|
|
|
public HttpResult<Object> audit(String companyId) throws Exception {
|
|
public HttpResult<Object> audit(String companyId) throws Exception {
|
|
|
InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(companyId);
|
|
InsAreaCompany insAreaCompany = insAreaCompanyService.getByIdIsExist(companyId);
|
|
|
InsOrders insOrders = insOrdersService.getById(insAreaCompany.getOrderno());
|
|
InsOrders insOrders = insOrdersService.getById(insAreaCompany.getOrderno());
|
|
|
|
|
+ LambdaQueryWrapper<InsAreaCompanyRelatedInfo> infoLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ infoLambdaQueryWrapper.eq(InsAreaCompanyRelatedInfo::getCompanyId, insAreaCompany.getId());
|
|
|
|
|
+ List<InsAreaCompanyRelatedInfo> infoList = insAreaCompanyRelatedInfoService.list(infoLambdaQueryWrapper);
|
|
|
// 1 通过 协议id获取配置实体
|
|
// 1 通过 协议id获取配置实体
|
|
|
PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(insAreaCompany.getAgreementId());
|
|
PtlAgreementAttribution ptlAgreementAttribution = ptlAgreementAttributionService.getById(insAreaCompany.getAgreementId());
|
|
|
ChengTaiConfigureParameters parameters = configureParametersComponents.toEntity(ChengTaiConfigureParameters.class,
|
|
ChengTaiConfigureParameters parameters = configureParametersComponents.toEntity(ChengTaiConfigureParameters.class,
|
|
@@ -398,25 +609,27 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
|
|
|
|
|
|
|
|
List<SubmitVerifyRequest.EngageListDTO> engageDTO = new ArrayList<>();
|
|
List<SubmitVerifyRequest.EngageListDTO> engageDTO = new ArrayList<>();
|
|
|
// 获取特约
|
|
// 获取特约
|
|
|
- List<SubmitVerifyRequest.EngageListDTO> ciEngageDTO = JSON.parseArray(insAreaCompany.getJqappoint(),
|
|
|
|
|
- SubmitVerifyRequest.EngageListDTO.class);
|
|
|
|
|
- if(CollUtil.isNotEmpty(ciEngageDTO)){
|
|
|
|
|
- for (SubmitVerifyRequest.EngageListDTO engageListDTO : ciEngageDTO) {
|
|
|
|
|
- engageListDTO.setRiskCode(RiskCodeEnum.R1002.getCode());
|
|
|
|
|
|
|
+ if (CollUtil.isNotEmpty(infoList)){
|
|
|
|
|
+ List<SubmitVerifyRequest.EngageListDTO> ciEngageDTO = JSON.parseArray(infoList.get(0).getJqappoint(),
|
|
|
|
|
+ SubmitVerifyRequest.EngageListDTO.class);
|
|
|
|
|
+ if(CollUtil.isNotEmpty(ciEngageDTO)){
|
|
|
|
|
+ for (SubmitVerifyRequest.EngageListDTO engageListDTO : ciEngageDTO) {
|
|
|
|
|
+ engageListDTO.setRiskCode(RiskCodeEnum.R1002.getCode());
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
- List<SubmitVerifyRequest.EngageListDTO> biEngageDTO = JSON.parseArray(insAreaCompany.getSyappoint(),
|
|
|
|
|
- SubmitVerifyRequest.EngageListDTO.class);
|
|
|
|
|
- if(CollUtil.isNotEmpty(biEngageDTO)){
|
|
|
|
|
- for (SubmitVerifyRequest.EngageListDTO engageListDTO : biEngageDTO) {
|
|
|
|
|
- engageListDTO.setRiskCode(RiskCodeEnum.R0821.getCode());
|
|
|
|
|
|
|
+ List<SubmitVerifyRequest.EngageListDTO> biEngageDTO = JSON.parseArray(infoList.get(0).getSyappoint(),
|
|
|
|
|
+ SubmitVerifyRequest.EngageListDTO.class);
|
|
|
|
|
+ if(CollUtil.isNotEmpty(biEngageDTO)){
|
|
|
|
|
+ for (SubmitVerifyRequest.EngageListDTO engageListDTO : biEngageDTO) {
|
|
|
|
|
+ engageListDTO.setRiskCode(RiskCodeEnum.R0821.getCode());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if(CollUtil.isNotEmpty(ciEngageDTO)){
|
|
|
|
|
+ engageDTO.addAll(ciEngageDTO);
|
|
|
|
|
+ }
|
|
|
|
|
+ if(CollUtil.isNotEmpty(biEngageDTO)){
|
|
|
|
|
+ engageDTO.addAll(biEngageDTO);
|
|
|
}
|
|
}
|
|
|
- }
|
|
|
|
|
- if(CollUtil.isNotEmpty(ciEngageDTO)){
|
|
|
|
|
- engageDTO.addAll(ciEngageDTO);
|
|
|
|
|
- }
|
|
|
|
|
- if(CollUtil.isNotEmpty(biEngageDTO)){
|
|
|
|
|
- engageDTO.addAll(biEngageDTO);
|
|
|
|
|
}
|
|
}
|
|
|
// 投保保存
|
|
// 投保保存
|
|
|
SubmitVerifyRequest submitVerifyRequest = new SubmitVerifyRequest(parameters,insAreaCompany,
|
|
SubmitVerifyRequest submitVerifyRequest = new SubmitVerifyRequest(parameters,insAreaCompany,
|
|
@@ -679,9 +892,17 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public ReadPdfUrlListDto getPolicyByCompanyIdPdfList(InsAreaCompany insAreaCompany, InsOrders insOrders, boolean flag) {
|
|
public ReadPdfUrlListDto getPolicyByCompanyIdPdfList(InsAreaCompany insAreaCompany, InsOrders insOrders, boolean flag) {
|
|
|
|
|
+ JSONArray array = insAreaCompany.getAccidentInfo();
|
|
|
|
|
+ String jypolicyno = null;
|
|
|
|
|
+ if(CollUtil.isNotEmpty(array)){
|
|
|
|
|
+ List<AccidentResponseVo> accidentResponseVos = insAreaCompany.getAccidentInfo().toJavaList(AccidentResponseVo.class);
|
|
|
|
|
+ jypolicyno = accidentResponseVos.get(0).getPolicyNumber();
|
|
|
|
|
+ }
|
|
|
|
|
+ insAreaCompany.setJyPolicyNo(jypolicyno);
|
|
|
String jqPath = getPdfUrl(insAreaCompany, insOrders,InsuranceRisk.TRAFFIC_CODE,PolicyPrintVo.PolicyPrintType.PPT_2.getCode(),insAreaCompany.getJqpolicyno(),flag);
|
|
String jqPath = getPdfUrl(insAreaCompany, insOrders,InsuranceRisk.TRAFFIC_CODE,PolicyPrintVo.PolicyPrintType.PPT_2.getCode(),insAreaCompany.getJqpolicyno(),flag);
|
|
|
String syPath = getPdfUrl(insAreaCompany,insOrders,InsuranceRisk.BUSINESS_CODE,PolicyPrintVo.PolicyPrintType.PPT_2.getCode(), insAreaCompany.getSypolicyno(),flag);
|
|
String syPath = getPdfUrl(insAreaCompany,insOrders,InsuranceRisk.BUSINESS_CODE,PolicyPrintVo.PolicyPrintType.PPT_2.getCode(), insAreaCompany.getSypolicyno(),flag);
|
|
|
- InsAreaCompanyExternalPolicy insAreaCompanyExternalPolicy =new InsAreaCompanyExternalPolicy(insAreaCompany.getId(),jqPath,syPath,null,null);
|
|
|
|
|
|
|
+ String jyPath = getPdfUrl(insAreaCompany,insOrders,InsuranceRisk.ACCIDENT_CODE,PolicyPrintVo.PolicyPrintType.PPT_2.getCode(), jypolicyno,flag);
|
|
|
|
|
+ InsAreaCompanyExternalPolicy insAreaCompanyExternalPolicy =new InsAreaCompanyExternalPolicy(insAreaCompany.getId(),jqPath,syPath,jyPath,null);
|
|
|
return new ReadPdfUrlListDto(insAreaCompanyExternalPolicy,insAreaCompany,null);
|
|
return new ReadPdfUrlListDto(insAreaCompanyExternalPolicy,insAreaCompany,null);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -716,6 +937,10 @@ public class ChengTaiOrderApiServiceImpl implements ChengTaiOrderApiService {
|
|
|
templateName = pathPrefix + InsuranceOrderPdf.SYBD.getDesc();
|
|
templateName = pathPrefix + InsuranceOrderPdf.SYBD.getDesc();
|
|
|
url = response.getBiDownLoad();
|
|
url = response.getBiDownLoad();
|
|
|
break;
|
|
break;
|
|
|
|
|
+ case InsuranceRisk.ACCIDENT_CODE:
|
|
|
|
|
+ templateName = pathPrefix + InsuranceOrderPdf.JYBD.getDesc();
|
|
|
|
|
+ url = response.getAhiDownLoad();
|
|
|
|
|
+ break;
|
|
|
}
|
|
}
|
|
|
} catch (Exception e){
|
|
} catch (Exception e){
|
|
|
throw new SystemException(e.toString());
|
|
throw new SystemException(e.toString());
|
|
@@ -732,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;
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|