|
|
@@ -22,6 +22,7 @@ import com.ydtech.modules.order.entity.api.zm.constants.InsuranceTypeCorresponde
|
|
|
import com.ydtech.modules.order.entity.api.zm.constants.enums.AuditStatusEnum;
|
|
|
import com.ydtech.modules.order.entity.api.zm.constants.enums.DocumentTypeEnum;
|
|
|
import com.ydtech.modules.order.entity.api.zm.constants.enums.PaymentStatusEnum;
|
|
|
+import com.ydtech.modules.order.entity.api.zm.constants.enums.ReturnCodeEnum;
|
|
|
import com.ydtech.modules.order.entity.api.zm.request.*;
|
|
|
|
|
|
import com.ydtech.modules.order.entity.api.zm.response.*;
|
|
|
@@ -35,16 +36,21 @@ import com.ydtech.modules.order.service.InsOrdersService;
|
|
|
import com.ydtech.modules.order.service.InsTaskImagesService;
|
|
|
import com.ydtech.modules.order.service.ZhongMeiOrderApiService;
|
|
|
import com.ydtech.utils.CalculateUtils;
|
|
|
-import com.ydtech.utils.StringUtils;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.core.ParameterizedTypeReference;
|
|
|
+import org.springframework.data.redis.core.StringRedisTemplate;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.ObjectUtils;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
+import static com.ydtech.constants.RedisConstant.ZM_AUDIT_RETURN_MESSAGE;
|
|
|
+import static com.ydtech.constants.RedisConstant.ZM_AUDIT_RETURN_MESSAGE_TIME;
|
|
|
+
|
|
|
@Service
|
|
|
@Slf4j
|
|
|
public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
|
|
|
@@ -61,17 +67,21 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
|
|
|
|
|
|
private final ZhongmeiRequestComponents zhongmeiRequestComponents;
|
|
|
|
|
|
- public ZhongMeiOrderApiServiceImpl(InsOrdersService insOrdersService, InsAreaCompanyService insAreaCompanyService, InsTaskImagesService insTaskImagesService, ZhongmeiRequestApiComponents zhongmeiRequestApiComponents, EsmInsCompanyService esmInsCompanyService, ZhongmeiRequestComponents zhongmeiRequestComponents) {
|
|
|
+ private final StringRedisTemplate redisTemplate;
|
|
|
+
|
|
|
+
|
|
|
+ public ZhongMeiOrderApiServiceImpl(InsOrdersService insOrdersService, InsAreaCompanyService insAreaCompanyService, InsTaskImagesService insTaskImagesService, ZhongmeiRequestApiComponents zhongmeiRequestApiComponents, EsmInsCompanyService esmInsCompanyService, ZhongmeiRequestComponents zhongmeiRequestComponents, StringRedisTemplate redisTemplate) {
|
|
|
this.insOrdersService = insOrdersService;
|
|
|
this.insAreaCompanyService = insAreaCompanyService;
|
|
|
this.insTaskImagesService = insTaskImagesService;
|
|
|
this.zhongmeiRequestApiComponents = zhongmeiRequestApiComponents;
|
|
|
this.esmInsCompanyService = esmInsCompanyService;
|
|
|
this.zhongmeiRequestComponents = zhongmeiRequestComponents;
|
|
|
+ this.redisTemplate = redisTemplate;
|
|
|
}
|
|
|
|
|
|
private void modelInquiry(String modelName, List<ModelsQueryResponse.SimpleStadarCarDTO> simpleStadarCarDTOS) {
|
|
|
- if (!simpleStadarCarDTOS.isEmpty()){
|
|
|
+ if (!simpleStadarCarDTOS.isEmpty()) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
@@ -116,8 +126,8 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
|
|
|
// 1.2 过滤车型
|
|
|
List<ModelsQueryResponse.SimpleStadarCarDTO> stadarCarDTOS = new ArrayList<>();
|
|
|
|
|
|
- if(!StringUtils.isEmpty(carInfo.getCaryear())){
|
|
|
- stadarCarDTOS = simpleStadarCarDTOS.stream().filter(car -> carInfo.getCaryear().equals(car.getLfDate())).collect(Collectors.toList());
|
|
|
+ if (!StringUtils.isEmpty(carInfo.getCaryear())) {
|
|
|
+ stadarCarDTOS = simpleStadarCarDTOS.stream().filter(car -> carInfo.getCaryear().equals(car.getLfDate())).collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
if (!stadarCarDTOS.isEmpty()) {
|
|
|
@@ -136,6 +146,11 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
|
|
|
QuoteRespVo quoteRespVo = getQuoteRespVo(quotedPriceResponse, quoteInfo);
|
|
|
// 2. 第一次提交核保 并且获取投保单号
|
|
|
SubmitResponse response = submitForUnderwriting(quotedPriceResponse.getOrderNo(), carInfo.getFrameNo(), quoteInfo.getPolicyHolderInfo());
|
|
|
+
|
|
|
+ // 3. 将错误的核保信息存入redis
|
|
|
+ if (StringUtils.isEmpty(response.getProposalNo())) {
|
|
|
+ redisTemplate.opsForValue().set(ZM_AUDIT_RETURN_MESSAGE + quoteRespVo.getCompanyId(), response.getHead().getReturnMessage(), ZM_AUDIT_RETURN_MESSAGE_TIME, TimeUnit.MINUTES);
|
|
|
+ }
|
|
|
return responseOrder(quotedPriceResponse, quoteRespVo, esmInsCompany, response);
|
|
|
}
|
|
|
|
|
|
@@ -146,10 +161,10 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
|
|
|
InsOrders insOrders = insOrdersService.getById(insAreaCompany.getOrderno());
|
|
|
JSONObject ownerinfo = insOrders.getApplyinfo();
|
|
|
CustomerInfoVo customerInfoVo = JSON.toJavaObject(ownerinfo, CustomerInfoVo.class);
|
|
|
- // 第二次 提交核保
|
|
|
+ // 1. 第二次 提交核保
|
|
|
SubmitResponse response = submitForUnderwriting(insAreaCompany.getId(), insOrders.getFrameno(), customerInfoVo);
|
|
|
HttpResult httpResult;
|
|
|
- // 人工核保
|
|
|
+ // 2. 人工核保
|
|
|
if (response.getHead().getReturnMessage().contains(InsuranceTypeCorrespondence.MANUAL_UNDERWRITING)) {
|
|
|
insAreaCompany.setOrderstatus(InsOrderStatus.S_1.getCode());
|
|
|
httpResult = HttpResult.error(response.getHead().getReturnMessage());
|
|
|
@@ -176,6 +191,16 @@ public class ZhongMeiOrderApiServiceImpl implements ZhongMeiOrderApiService {
|
|
|
InsOrders insOrders = insOrdersService.getById(insAreaCompany.getOrderno());
|
|
|
// 投保单号(总)
|
|
|
String insOrderNo = insAreaCompany.getInsOrderNo();
|
|
|
+ // 没有投保单号
|
|
|
+ if (StringUtils.isEmpty(insOrderNo)) {
|
|
|
+ String s = redisTemplate.opsForValue().get(ZM_AUDIT_RETURN_MESSAGE + companyId);
|
|
|
+ if (StringUtils.isEmpty(s)) {
|
|
|
+ throw new SystemException("请重新报价,再核保。");
|
|
|
+ } else {
|
|
|
+ throw new SystemException(s);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
List<InsTaskImagesBase64> insTaskImagesBase64s = insTaskImagesService.findByOrderNo(insOrders.getOrderno());
|
|
|
if (insTaskImagesBase64s.isEmpty()) {
|
|
|
throw new SystemException("请检查影像是否上传了");
|