|
|
@@ -4,7 +4,6 @@ import cn.com.taiji.common.manager.net.http.ServiceHandleException; |
|
|
|
import cn.com.taiji.common.pub.StringTools; |
|
|
|
import cn.com.taiji.core.entity.basic.QtkCustomerInfo; |
|
|
|
import cn.com.taiji.core.entity.basic.QtkVehicleInfo; |
|
|
|
import cn.com.taiji.core.entity.comm.OcrResult; |
|
|
|
import cn.com.taiji.core.entity.dict.basic.IdType; |
|
|
|
import cn.com.taiji.core.entity.dict.basic.SourceType; |
|
|
|
import cn.com.taiji.core.entity.dict.basic.UseUserType; |
|
|
@@ -13,10 +12,9 @@ import cn.com.taiji.core.entity.dict.issue.IssueOrderStep; |
|
|
|
import cn.com.taiji.core.entity.issue.IssueOrderinfo; |
|
|
|
import cn.com.taiji.core.entity.issue.IssueOrderinfoExt; |
|
|
|
import cn.com.taiji.core.entity.issue.IssueProduct; |
|
|
|
import cn.com.taiji.core.entity.issue.TransactionStatus; |
|
|
|
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeResponse; |
|
|
|
import cn.com.taiji.core.model.comm.protocol.ias.order.VehicleUploadRequest; |
|
|
|
import cn.com.taiji.core.model.comm.protocol.ods.ois.issue.OisBasicDataUpdateRequest; |
|
|
|
import cn.com.taiji.core.model.comm.protocol.ias.order.VehicleUploadResponse; |
|
|
|
import cn.com.taiji.core.model.comm.protocol.ods.oqs.issue.OqsVehicleQueryRequest; |
|
|
|
import cn.com.taiji.core.model.comm.protocol.ods.oqs.issue.OqsVehicleQueryResponse; |
|
|
|
import cn.com.taiji.core.model.comm.protocol.valid.ErrorMsgBuilder; |
|
|
@@ -24,12 +22,10 @@ import cn.com.taiji.core.model.comm.protocol.valid.GlyServiceError; |
|
|
|
import cn.com.taiji.core.repo.jpa.comm.OcrResultRepo; |
|
|
|
import cn.com.taiji.ias.dict.DataType; |
|
|
|
import cn.com.taiji.ias.model.ServiceLogEvent; |
|
|
|
import cn.hutool.core.util.ObjectUtil; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
import java.time.LocalDateTime; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.Objects; |
|
|
|
|
|
|
@@ -39,12 +35,6 @@ public class VehicleUploadManager extends AbstractOrderManager<VehicleUploadRequ |
|
|
|
public static final String ORDER_EXT = "orderExt"; |
|
|
|
public static final String STATUS = "status"; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private VehicleManageRepo vehicleManageRepo; |
|
|
|
@Autowired |
|
|
|
private IssueOrderVerificationRuleManager issueOrderVerificationRuleManager; |
|
|
|
@Autowired |
|
|
|
private CsmsnReleaseProStandardsRepo csmsnReleaseProStandardsRepo; |
|
|
|
@Autowired |
|
|
|
private OcrResultRepo ocrResultRepo; |
|
|
|
|
|
|
@@ -110,7 +100,7 @@ public class VehicleUploadManager extends AbstractOrderManager<VehicleUploadRequ |
|
|
|
// 保存订单 |
|
|
|
IssueOrderinfoExt ext = saveOrder(order, vehicleInfo, request); |
|
|
|
// 自动审核 货车类型走 人工审核 |
|
|
|
Boolean b = audit(request, order, ext); |
|
|
|
// Boolean b = audit(request, order, ext); |
|
|
|
// 保存办理记录日志 |
|
|
|
// bizServiceLog(request.getOpenId(), ServiceType.VECHICLEINFORMATIONCHANGE, order, order.getVehicleId()); |
|
|
|
// 操作日志 |
|
|
@@ -118,7 +108,7 @@ public class VehicleUploadManager extends AbstractOrderManager<VehicleUploadRequ |
|
|
|
dataStream.put(ORDER, order); |
|
|
|
dataStream.put(VEHICLE_INFO, vehicleInfo); |
|
|
|
dataStream.put(ORDER_EXT, ext); |
|
|
|
dataStream.put(STATUS,b?1:2); |
|
|
|
// dataStream.put(STATUS,b?1:2); |
|
|
|
//回调通知渠道 |
|
|
|
if (SourceType.CHANNEL.equals(order.getOrderSource())) { |
|
|
|
callBackQd(order, ext.getCancelReason()); |
|
|
@@ -126,28 +116,28 @@ public class VehicleUploadManager extends AbstractOrderManager<VehicleUploadRequ |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
protected AbstractSignTypeResponse getRes(IssueVehicleUploadRequest req, ServiceLogEvent event, |
|
|
|
protected AbstractSignTypeResponse getRes(VehicleUploadRequest req, ServiceLogEvent event, |
|
|
|
Map<String, Object> dataStream) throws ServiceHandleException { |
|
|
|
// CsmsnOrderinfo order = (CsmsnOrderinfo)dataStream.get(ORDER); |
|
|
|
CsmsnOrderinfoExt csmsnOrderinfoExt = (CsmsnOrderinfoExt)dataStream.get(ORDER_EXT); |
|
|
|
// CsmsnOrderinfoExt csmsnOrderinfoExt = (CsmsnOrderinfoExt)dataStream.get(ORDER_EXT); |
|
|
|
Integer i = (Integer)dataStream.get(STATUS); |
|
|
|
IssueVehicleUploadResponse res = new IssueVehicleUploadResponse(); |
|
|
|
VehicleUploadResponse res = new VehicleUploadResponse(); |
|
|
|
res.setReceiveTime(getReceiveTimeStr(event)); |
|
|
|
// res.setVehicleId(order.getVehicleId()); |
|
|
|
res.setApprovalStatus(i); |
|
|
|
res.setReason(csmsnOrderinfoExt.getAuditReason()); |
|
|
|
// res.setReason(csmsnOrderinfoExt.getAuditReason()); |
|
|
|
return res; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
protected void onSuccessInternal(IssueVehicleUploadRequest req, ServiceLogEvent event, |
|
|
|
protected void onSuccessInternal(VehicleUploadRequest req, ServiceLogEvent event, |
|
|
|
Map<String, Object> dataStream) { |
|
|
|
CsmsnOrderinfo order = (CsmsnOrderinfo)dataStream.get(ORDER); |
|
|
|
// CsmsnOrderinfo order = (CsmsnOrderinfo)dataStream.get(ORDER); |
|
|
|
QtkVehicleInfo vehicleInfo = (QtkVehicleInfo)dataStream.get(VEHICLE_INFO); |
|
|
|
executor.execute(() -> { |
|
|
|
try { |
|
|
|
syncVehicleInfo(order, vehicleInfo); |
|
|
|
uploadYgzVehicleInfo(order, vehicleInfo); |
|
|
|
// syncVehicleInfo(order, vehicleInfo); |
|
|
|
// uploadYgzVehicleInfo(order, vehicleInfo); |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("同步车辆数据失败", e); |
|
|
|
} |
|
|
@@ -155,23 +145,23 @@ public class VehicleUploadManager extends AbstractOrderManager<VehicleUploadRequ |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public void uploadYgzVehicleInfo(CsmsnOrderinfo order, QtkVehicleInfo vehicleInfo) throws ServiceHandleException { |
|
|
|
TransactionStatus transactionStatus = |
|
|
|
transactionManager.findByBizTypeAndBizId(ISSUE_VEHICLE_UPLOAD, order.getOrderNo()); |
|
|
|
// FIXME 改成实时上传? |
|
|
|
ygzUploader.saveLocalVehicleRequestJson(vehicleInfo, Operation.valueOf(transactionStatus.getInfo()), |
|
|
|
DataSourceEnum.DSI_INTERFACE); |
|
|
|
transactionManager.deleteById(transactionStatus.getId()); |
|
|
|
} |
|
|
|
|
|
|
|
public void syncVehicleInfo(CsmsnOrderinfo order, QtkVehicleInfo vehicleInfo) throws ServiceHandleException { |
|
|
|
TransactionStatus transactionStatus = |
|
|
|
transactionManager.findByBizTypeAndBizId(ISSUE_VEHICLE_SYNC, order.getOrderNo()); |
|
|
|
OisBasicDataUpdateRequest req = new OisBasicDataUpdateRequest(); |
|
|
|
req.setVehicleInfo(vehicleInfo); |
|
|
|
jsonPostRepeat(req); |
|
|
|
transactionManager.deleteById(transactionStatus.getId()); |
|
|
|
} |
|
|
|
// public void uploadYgzVehicleInfo(CsmsnOrderinfo order, QtkVehicleInfo vehicleInfo) throws ServiceHandleException { |
|
|
|
// TransactionStatus transactionStatus = |
|
|
|
// transactionManager.findByBizTypeAndBizId(ISSUE_VEHICLE_UPLOAD, order.getOrderNo()); |
|
|
|
// // FIXME 改成实时上传? |
|
|
|
// ygzUploader.saveLocalVehicleRequestJson(vehicleInfo, Operation.valueOf(transactionStatus.getInfo()), |
|
|
|
// DataSourceEnum.DSI_INTERFACE); |
|
|
|
// transactionManager.deleteById(transactionStatus.getId()); |
|
|
|
// } |
|
|
|
// |
|
|
|
// public void syncVehicleInfo(CsmsnOrderinfo order, QtkVehicleInfo vehicleInfo) throws ServiceHandleException { |
|
|
|
// TransactionStatus transactionStatus = |
|
|
|
// transactionManager.findByBizTypeAndBizId(ISSUE_VEHICLE_SYNC, order.getOrderNo()); |
|
|
|
// OisBasicDataUpdateRequest req = new OisBasicDataUpdateRequest(); |
|
|
|
// req.setVehicleInfo(vehicleInfo); |
|
|
|
// jsonPostRepeat(req); |
|
|
|
// transactionManager.deleteById(transactionStatus.getId()); |
|
|
|
// } |
|
|
|
|
|
|
|
private IssueOrderinfoExt saveOrder(IssueOrderinfo order, QtkVehicleInfo vehicleInfo, VehicleUploadRequest request) throws ServiceHandleException { |
|
|
|
order.setVehicleClass(vehicleInfo.getType()); |
|
|
@@ -427,76 +417,76 @@ public class VehicleUploadManager extends AbstractOrderManager<VehicleUploadRequ |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private Boolean audit(VehicleUploadRequest request, IssueOrderinfo order, IssueOrderinfoExt ext) { |
|
|
|
Boolean b = autoVerifyV2(request,order, ext); |
|
|
|
Boolean c = issueOrderVerificationRuleManager.autoVerify(order, csmsnOrderinfoExt); |
|
|
|
logger.info("系统审核结果 orderNo:{},autoVerify:{}", order.getOrderNo(), b); |
|
|
|
// 是否被人工审核 1:人工 2:系统 0:未审核。人工审核时再变成1 |
|
|
|
order.setArtificialStatus(2); |
|
|
|
if (order.getVanType() == 2) { |
|
|
|
order.setOrderStep(IssueOrderStep.ORDER_STEP_6.getCode()); |
|
|
|
}else if (b && c) { |
|
|
|
if (OrderSourceEnum.CHANNEL.equals(request.getSource())) { |
|
|
|
if (request.getChannelType().equals(1)) {// 线上 |
|
|
|
//20250408修改,线上不需要支付,审核通过直接待签约 |
|
|
|
order.setOrderStep(IssueOrderStep.ORDER_STEP_3.getCode());//待签约 |
|
|
|
} else {//线下 |
|
|
|
order.setOrderStep(IssueOrderStep.ORDER_STEP_4.getCode());//线下待支付 |
|
|
|
} |
|
|
|
}else { |
|
|
|
Integer nextStep = order.getWhetherToMail() ? IssueOrderStep.ORDER_STEP_8.getCode() |
|
|
|
: IssueOrderStep.ORDER_STEP_10.getCode();//待发货,待激活 |
|
|
|
order.setOrderStep(nextStep); |
|
|
|
} |
|
|
|
}else { |
|
|
|
order.setOrderStep(IssueOrderStep.ORDER_STEP_6.getCode()); |
|
|
|
} |
|
|
|
orderInfoRepo.save(order); |
|
|
|
return b; |
|
|
|
} |
|
|
|
public Boolean autoVerifyV2(IssueVehicleUploadRequest request,CsmsnOrderinfo orderInfo, CsmsnOrderinfoExt orderinfoExt) { |
|
|
|
try { |
|
|
|
logger.info("车辆核验>>>"); |
|
|
|
VerificationRuleRequest vehicleCheck = new VerificationRuleRequest(); |
|
|
|
vehicleCheck.setOrderId(orderInfo.getOrderNo()); |
|
|
|
vehicleCheck.setVehicleId(orderInfo.getVehicleId()); |
|
|
|
vehicleCheck.setIsOnline(1); |
|
|
|
vehicleCheck.setBussinessType(1); |
|
|
|
vehicleCheck.setType(orderInfo.getVehicleClass());// 车型,收费车型,对应vehicle.type |
|
|
|
vehicleCheck.setVehicleCustomerType(orderinfoExt.getUseUserType()); |
|
|
|
// fixme 车辆检测后面更换新接口,这里要更改成调新接口 |
|
|
|
//20250334增加车主校验 |
|
|
|
String idError = ""; |
|
|
|
boolean idOcrFlag = true; |
|
|
|
if (StringTools.hasText(request.getOwnerPosImgUrl())) { |
|
|
|
String post = request.getOwnerPosImgUrl().substring(request.getOwnerPosImgUrl().lastIndexOf("/") + 1); |
|
|
|
List<OcrResult> vehicleLicenseFront = |
|
|
|
ocrResultRepo.findByUrlLikeAndOcrTypeOrderByCreateTimeDesc("%" + post + "%", "id_front"); |
|
|
|
if (!ObjectUtil.isEmpty(vehicleLicenseFront)) { |
|
|
|
OcrResult ocrResult = vehicleLicenseFront.get(0); |
|
|
|
IdCardOcrResponse idCardOcrResponse = com.alibaba.fastjson2.JSON.parseObject(ocrResult.getResult(), IdCardOcrResponse.class); |
|
|
|
if (!idCardOcrResponse.getName().equals(request.getIdName())) { |
|
|
|
idError= "ocr姓名与身份证识别不一致"; |
|
|
|
idOcrFlag = false; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
VerificationRuleResponse response = issueOrderVerificationRuleManager.assVerificationRule(vehicleCheck); |
|
|
|
if (2 == response.getStatus() && idOcrFlag) { |
|
|
|
return true; |
|
|
|
} |
|
|
|
// FIXME 记录一下(机审失败原因,现在扩展表,所以也要更新扩展表) |
|
|
|
// orderInfo.setAuditReason(response.getMsg()); |
|
|
|
orderinfoExt.setAuditReason(response.getMsg()+","+idError); |
|
|
|
// orderInfoRepo.save(orderInfo); |
|
|
|
orderInfoExtRepo.save(orderinfoExt); |
|
|
|
return false; |
|
|
|
} catch (Exception e) { |
|
|
|
logger.error("车辆核验异常", e); |
|
|
|
orderinfoExt.setAuditReason("车辆核验异常"); |
|
|
|
// orderInfoRepo.save(orderInfo); |
|
|
|
orderInfoExtRepo.save(orderinfoExt); |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
// private Boolean audit(VehicleUploadRequest request, IssueOrderinfo order, IssueOrderinfoExt ext) { |
|
|
|
// Boolean b = autoVerifyV2(request,order, ext); |
|
|
|
// Boolean c = issueOrderVerificationRuleManager.autoVerify(order, csmsnOrderinfoExt); |
|
|
|
// logger.info("系统审核结果 orderNo:{},autoVerify:{}", order.getOrderNo(), b); |
|
|
|
// // 是否被人工审核 1:人工 2:系统 0:未审核。人工审核时再变成1 |
|
|
|
// order.setArtificialStatus(2); |
|
|
|
// if (order.getVanType() == 2) { |
|
|
|
// order.setOrderStep(IssueOrderStep.ORDER_STEP_6.getCode()); |
|
|
|
// }else if (b && c) { |
|
|
|
// if (OrderSourceEnum.CHANNEL.equals(request.getSource())) { |
|
|
|
// if (request.getChannelType().equals(1)) {// 线上 |
|
|
|
// //20250408修改,线上不需要支付,审核通过直接待签约 |
|
|
|
// order.setOrderStep(IssueOrderStep.ORDER_STEP_3.getCode());//待签约 |
|
|
|
// } else {//线下 |
|
|
|
// order.setOrderStep(IssueOrderStep.ORDER_STEP_4.getCode());//线下待支付 |
|
|
|
// } |
|
|
|
// }else { |
|
|
|
// Integer nextStep = order.getWhetherToMail() ? IssueOrderStep.ORDER_STEP_8.getCode() |
|
|
|
// : IssueOrderStep.ORDER_STEP_10.getCode();//待发货,待激活 |
|
|
|
// order.setOrderStep(nextStep); |
|
|
|
// } |
|
|
|
// }else { |
|
|
|
// order.setOrderStep(IssueOrderStep.ORDER_STEP_6.getCode()); |
|
|
|
// } |
|
|
|
// orderInfoRepo.save(order); |
|
|
|
// return b; |
|
|
|
// } |
|
|
|
// public Boolean autoVerifyV2(IssueVehicleUploadRequest request,CsmsnOrderinfo orderInfo, CsmsnOrderinfoExt orderinfoExt) { |
|
|
|
// try { |
|
|
|
// logger.info("车辆核验>>>"); |
|
|
|
// VerificationRuleRequest vehicleCheck = new VerificationRuleRequest(); |
|
|
|
// vehicleCheck.setOrderId(orderInfo.getOrderNo()); |
|
|
|
// vehicleCheck.setVehicleId(orderInfo.getVehicleId()); |
|
|
|
// vehicleCheck.setIsOnline(1); |
|
|
|
// vehicleCheck.setBussinessType(1); |
|
|
|
// vehicleCheck.setType(orderInfo.getVehicleClass());// 车型,收费车型,对应vehicle.type |
|
|
|
// vehicleCheck.setVehicleCustomerType(orderinfoExt.getUseUserType()); |
|
|
|
// // fixme 车辆检测后面更换新接口,这里要更改成调新接口 |
|
|
|
// //20250334增加车主校验 |
|
|
|
// String idError = ""; |
|
|
|
// boolean idOcrFlag = true; |
|
|
|
// if (StringTools.hasText(request.getOwnerPosImgUrl())) { |
|
|
|
// String post = request.getOwnerPosImgUrl().substring(request.getOwnerPosImgUrl().lastIndexOf("/") + 1); |
|
|
|
// List<OcrResult> vehicleLicenseFront = |
|
|
|
// ocrResultRepo.findByUrlLikeAndOcrTypeOrderByCreateTimeDesc("%" + post + "%", "id_front"); |
|
|
|
// if (!ObjectUtil.isEmpty(vehicleLicenseFront)) { |
|
|
|
// OcrResult ocrResult = vehicleLicenseFront.get(0); |
|
|
|
// IdCardOcrResponse idCardOcrResponse = com.alibaba.fastjson2.JSON.parseObject(ocrResult.getResult(), IdCardOcrResponse.class); |
|
|
|
// if (!idCardOcrResponse.getName().equals(request.getIdName())) { |
|
|
|
// idError= "ocr姓名与身份证识别不一致"; |
|
|
|
// idOcrFlag = false; |
|
|
|
// } |
|
|
|
// } |
|
|
|
// } |
|
|
|
// VerificationRuleResponse response = issueOrderVerificationRuleManager.assVerificationRule(vehicleCheck); |
|
|
|
// if (2 == response.getStatus() && idOcrFlag) { |
|
|
|
// return true; |
|
|
|
// } |
|
|
|
// // FIXME 记录一下(机审失败原因,现在扩展表,所以也要更新扩展表) |
|
|
|
// // orderInfo.setAuditReason(response.getMsg()); |
|
|
|
// orderinfoExt.setAuditReason(response.getMsg()+","+idError); |
|
|
|
//// orderInfoRepo.save(orderInfo); |
|
|
|
// orderInfoExtRepo.save(orderinfoExt); |
|
|
|
// return false; |
|
|
|
// } catch (Exception e) { |
|
|
|
// logger.error("车辆核验异常", e); |
|
|
|
// orderinfoExt.setAuditReason("车辆核验异常"); |
|
|
|
//// orderInfoRepo.save(orderInfo); |
|
|
|
// orderInfoExtRepo.save(orderinfoExt); |
|
|
|
// return false; |
|
|
|
// } |
|
|
|
// } |
|
|
|
} |