|
|
@@ -43,6 +43,7 @@ import java.text.SimpleDateFormat;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
|
|
|
@QuoteCrawlerService(value = InsuranceCode.INSURANCE_TKIC)
|
|
|
@RequiredArgsConstructor
|
|
|
@@ -174,6 +175,7 @@ public class TKQuotationBaseServiceImpl implements TKQuotationBaseService {
|
|
|
|
|
|
@Override
|
|
|
public UnderwritingResultsVo underwriting(UnderwritingVo underwritingVo) {
|
|
|
+ log.info("泰康开始处理核保流程,参数:{}", JSONObject.toJSONString(underwritingVo));
|
|
|
AttributionInformationVo attributionInformationVo = underwritingVo.getOrder().getAttributionInformationVo();
|
|
|
TKLoginSession session = loginSession(attributionInformationVo.getUsername(), attributionInformationVo.getPassword());
|
|
|
PreciseInitResult preciseInitResult = redisCacheUtil.getPreciseInitResult(underwritingVo.getOrder().getOrdersNo());
|
|
|
@@ -186,16 +188,45 @@ public class TKQuotationBaseServiceImpl implements TKQuotationBaseService {
|
|
|
TKInsureInfo insureInfo = tkSimpleService.dataCreateInsureInfo(initProposalResult, insOrdersCarUserInfo);
|
|
|
log.info("车主信息:{}", new Gson().toJson(insureInfo));
|
|
|
// # 车险投保单报价下单
|
|
|
- TKEntranceFor000038Result tkEntranceFor000038Result = tkSimpleService.orderSubmit(session, preciseInitResult.getMainOrderId(), insureInfo);
|
|
|
+ TKEntranceFor000038Result.Response tkEntranceFor000038Result = tkSimpleService.orderSubmit(session, preciseInitResult.getMainOrderId(), insureInfo);
|
|
|
UnderwritingResultsVo underwritingResultsVo = new UnderwritingResultsVo();
|
|
|
- if (tkEntranceFor000038Result == null) {
|
|
|
- underwritingResultsVo.setUnderwritingResult("核保失败");
|
|
|
+ if (tkEntranceFor000038Result == null || tkEntranceFor000038Result.getStatus() == 0) {
|
|
|
+ underwritingResultsVo.setUnderwritingResult("核保失败: " + Objects.requireNonNull(tkEntranceFor000038Result).getMessage());
|
|
|
underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.AUDIT_FAIL);
|
|
|
tkCrawlerOrderService.save(underwritingVo, underwritingResultsVo, preciseInitResult.getMainOrderId(), false);
|
|
|
return underwritingResultsVo;
|
|
|
}
|
|
|
- // 核保通过
|
|
|
- TKOrderData tkOrderData = tkEntranceFor000038Result.getData();
|
|
|
+
|
|
|
+ // 调用 entranceFor000021,为获取支付链接做预处理 TODO
|
|
|
+ log.info("orderSubmit 开始调用 entranceFor000021(支付链接预处理),mainOrderId={}", preciseInitResult.getMainOrderId());
|
|
|
+ TKEntranceFor000021Result tkEntranceFor000021Result = httpService.entranceFor000021(session.getToken(), session.getFromid(), preciseInitResult.getMainOrderId());
|
|
|
+ log.info("orderSubmit entranceFor000021 调用完成,tkEntranceFor000021Result={}", JSONObject.toJSONString(tkEntranceFor000021Result));
|
|
|
+
|
|
|
+ // 调用 entranceFor000052,基于核保结果做后续处理
|
|
|
+ log.info("orderSubmit 开始调用 entranceFor000052,mainOrderId={}", preciseInitResult.getMainOrderId());
|
|
|
+ TKEntranceFor000052Result tkEntranceFor000052Result = httpService.entranceFor000052(session.getToken(), tkEntranceFor000038Result.getData());
|
|
|
+ log.info("orderSubmit entranceFor000052 调用完成,tkEntranceFor000052Result={}", JSONObject.toJSONString(tkEntranceFor000052Result));
|
|
|
+
|
|
|
+ // 获取核保返回数据
|
|
|
+ TKOrderData tkOrderData = tkEntranceFor000038Result.getData().getData();
|
|
|
+
|
|
|
+ // 检查 resultType 判断核保是否自核通过(与Python逻辑一致)
|
|
|
+ String resultType = tkOrderData.getResultType();
|
|
|
+ if (!"自核通过".equals(resultType)) {
|
|
|
+ // 非自核通过,判定为人工核保或其他状态
|
|
|
+ String spResMsg = tkOrderData.getSpResMsg();
|
|
|
+ String checkReason = tkEntranceFor000038Result.getData().getCheckReason() != null
|
|
|
+ ? tkEntranceFor000038Result.getData().getCheckReason().toString()
|
|
|
+ : "";
|
|
|
+ String msg = (spResMsg != null && !spResMsg.isEmpty()) ? spResMsg : ("请联系运维人员处理" + checkReason);
|
|
|
+ underwritingResultsVo.setUnderwritingResult("人工审核返回:" + msg);
|
|
|
+ underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.AUDIT_FAIL);
|
|
|
+ tkCrawlerOrderService.save(underwritingVo, underwritingResultsVo, preciseInitResult.getMainOrderId(), true);
|
|
|
+ log.info("泰康核保流程结束(人工核保),结果:{}", JSONObject.toJSONString(underwritingResultsVo));
|
|
|
+ return underwritingResultsVo;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 自核通过,继续处理
|
|
|
// 核保成功,保单编号缓存
|
|
|
redisCacheUtil.setCache(tkOrderData.getProposalNo(), underwritingVo.getOrder().getOrdersNo(), "HB");
|
|
|
// 保司订单号
|
|
|
@@ -210,16 +241,12 @@ public class TKQuotationBaseServiceImpl implements TKQuotationBaseService {
|
|
|
underwritingResultsVo.setUnderwritingResult("核保成功");
|
|
|
// 核保状态
|
|
|
underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.PAY_PENDING);
|
|
|
- // 验车标志,需要验车,需要上传影像
|
|
|
- if ("1".equals(tkEntranceFor000038Result.getCheckCarFlag()) && "9".equals(tkEntranceFor000038Result.getData().getUnderWriteFlag())) {
|
|
|
- buildCheckCar(tkEntranceFor000038Result, underwritingVo, preciseInitResult, underwritingResultsVo);
|
|
|
- }
|
|
|
- // 人工核保
|
|
|
- if ("2".equals(tkOrderData.getCarCheckStatus())) {
|
|
|
- underwritingResultsVo.setUnderwritingResult("人工审核返回:" + tkOrderData.getSpResMsg());
|
|
|
- underwritingResultsVo.setUnderwritingStatus(InsOrderStatusEnum.AUDIT_FAIL);
|
|
|
+ // 验车标志,需要验车,需要上传影像(仅检查 checkCarFlag 是否为 1)
|
|
|
+ if ("1".equals(tkEntranceFor000038Result.getData().getCheckCarFlag())) {
|
|
|
+ buildCheckCar(tkEntranceFor000038Result.getData(), underwritingVo, preciseInitResult, underwritingResultsVo);
|
|
|
}
|
|
|
tkCrawlerOrderService.save(underwritingVo, underwritingResultsVo, preciseInitResult.getMainOrderId(), true);
|
|
|
+ log.info("泰康核保流程结束,结果:{}", JSONObject.toJSONString(underwritingResultsVo));
|
|
|
return underwritingResultsVo;
|
|
|
}
|
|
|
|