Commit 4ec9698a authored by 杨钧's avatar 杨钧

增加查询进件流水方法

parent 183c30cd
package cn.quantgroup.customer.model.kaordermapping;
import lombok.*;
import javax.persistence.*;
import java.sql.Timestamp;
/**
* Created with suntao on 2018/5/24
*/
@Data
public class ApplyRequestHistory {
private Long id;
private String requestId;
private String phoneNo;
private Long userId;
private String userName;
private String uuid;
private String idNo;
private Long channelId;
private String productId;
private Boolean isSuccess;
private String descriptionValue;
private String descriptionDetail;
private int idType = 0;
private int applyType;
private int requestType;
private String md5;
private String channelOrderNo;
private Long orderMappingId;
private String extData;
private Timestamp createdAt = new Timestamp(System.currentTimeMillis());
}
package cn.quantgroup.customer.service; package cn.quantgroup.customer.service;
import cn.quantgroup.customer.model.kaordermapping.ApplyRequestHistory;
import cn.quantgroup.customer.model.kaordermapping.ChannelConfigurationResult; import cn.quantgroup.customer.model.kaordermapping.ChannelConfigurationResult;
import cn.quantgroup.customer.model.kaordermapping.LoanOrderMapping; import cn.quantgroup.customer.model.kaordermapping.LoanOrderMapping;
import cn.quantgroup.customer.model.order.CallbackRecord; import cn.quantgroup.customer.model.order.CallbackRecord;
...@@ -35,4 +36,12 @@ public interface IKaService { ...@@ -35,4 +36,12 @@ public interface IKaService {
* @return * @return
*/ */
JsonResult<List<CallbackRecord>> querySendRecords(String applyNo, Long channelId, Boolean aTrue); JsonResult<List<CallbackRecord>> querySendRecords(String applyNo, Long channelId, Boolean aTrue);
/**
* 查询最新渠道进件请求流水
* @param applyNo
* @param channelId
* @return
*/
JsonResult<ApplyRequestHistory> queryLatestChannelRequestFlows(String applyNo, Long channelId);
} }
...@@ -2,6 +2,7 @@ package cn.quantgroup.customer.service.impl; ...@@ -2,6 +2,7 @@ package cn.quantgroup.customer.service.impl;
import cn.quantgroup.customer.enums.ErrorCodeEnum; import cn.quantgroup.customer.enums.ErrorCodeEnum;
import cn.quantgroup.customer.exception.BusinessException; import cn.quantgroup.customer.exception.BusinessException;
import cn.quantgroup.customer.model.kaordermapping.ApplyRequestHistory;
import cn.quantgroup.customer.model.kaordermapping.ChannelConfigurationResult; import cn.quantgroup.customer.model.kaordermapping.ChannelConfigurationResult;
import cn.quantgroup.customer.model.kaordermapping.LoanOrderMapping; import cn.quantgroup.customer.model.kaordermapping.LoanOrderMapping;
import cn.quantgroup.customer.model.order.CallbackRecord; import cn.quantgroup.customer.model.order.CallbackRecord;
...@@ -201,4 +202,43 @@ public class KaServiceImpl implements IKaService { ...@@ -201,4 +202,43 @@ public class KaServiceImpl implements IKaService {
throw new BusinessException(ErrorCodeEnum.NET_ERROR); throw new BusinessException(ErrorCodeEnum.NET_ERROR);
} }
} }
@Override
public JsonResult<ApplyRequestHistory> queryLatestChannelRequestFlows(String applyNo, Long channelId) {
String logPre = "[KaServiceImpl.queryLatestChannelRequestFlows] 查询最新渠道进件请求流水";
log.info("{}, applyNo={},channelId={}", logPre, applyNo,channelId);
String url = kaSysUrl + "/external/query/applyRequest";
try {
Map<String, Object> param = Maps.newHashMap();
if(Objects.isNull(channelId) || StringUtils.isBlank(applyNo)){
log.error("{} 查询渠道进件流水,渠道号和渠道订单号不允许为空 applyNo={},channelId={}", logPre, applyNo, channelId);
return JsonResult.buildErrorStateResult(ErrorCodeEnum.PARAM_ERROR.getMessage(), ErrorCodeEnum.PARAM_ERROR.getCode());
}
param.put("applyNo", applyNo);
param.put("channelId", String.valueOf(channelId));
String result;
try {
result = httpService.get(url, param);
} catch (Exception e) {
log.error(" {} http请求异常 url={},param={}", logPre, url, param, e);
return JsonResult.buildErrorStateResult("通讯异常", null);
}
log.info("{} 请求ka系统返回值:{}", logPre, result);
if (StringUtils.isBlank(result)) {
log.error("{} 返回结果为空,查询失败 jsonResult={}", logPre, result);
return JsonResult.buildErrorStateResult("查询数据异常", null);
}
TypeReference<JsonResult<ApplyRequestHistory>> typeToken = new TypeReference<JsonResult<ApplyRequestHistory>>() {
};
return JSONTools.deserialize(result, typeToken);
} catch (Exception e) {
log.error("{} 网络通讯异常,applyNo={},channelId={},ex:{}", applyNo,channelId, ExceptionUtils.getStackTrace(e));
throw new BusinessException(ErrorCodeEnum.NET_ERROR);
}
}
} }
...@@ -3,6 +3,7 @@ package cn.quantgroup.customer.service.impl; ...@@ -3,6 +3,7 @@ package cn.quantgroup.customer.service.impl;
import cn.quantgroup.customer.enums.ErrorCodeEnum; import cn.quantgroup.customer.enums.ErrorCodeEnum;
import cn.quantgroup.customer.enums.OrderStatusEnums; import cn.quantgroup.customer.enums.OrderStatusEnums;
import cn.quantgroup.customer.model.Tuple; import cn.quantgroup.customer.model.Tuple;
import cn.quantgroup.customer.model.kaordermapping.ApplyRequestHistory;
import cn.quantgroup.customer.model.kaordermapping.LoanOrderMapping; import cn.quantgroup.customer.model.kaordermapping.LoanOrderMapping;
import cn.quantgroup.customer.model.order.*; import cn.quantgroup.customer.model.order.*;
import cn.quantgroup.customer.rest.param.ordermapping.OrderQueryParam; import cn.quantgroup.customer.rest.param.ordermapping.OrderQueryParam;
...@@ -114,22 +115,81 @@ public class OrderServiceImpl implements IOrderService { ...@@ -114,22 +115,81 @@ public class OrderServiceImpl implements IOrderService {
// 查询订单信息 查询ka // 查询订单信息 查询ka
JsonResult<LoanOrderMapping> orderMappingResult = kaService.findOrderMapping(orderQuery); JsonResult<LoanOrderMapping> orderMappingResult = kaService.findOrderMapping(orderQuery);
LoanOrderMapping loanOrderMapping; LoanOrderMapping loanOrderMapping;
if (!orderMappingResult.isSuccess() || Objects.isNull(loanOrderMapping = orderMappingResult.getData())) { if (!orderMappingResult.isSuccess()) {
log.error("{} 查询订单信息orderMapping失败 result={} orderQuery={}", logPre, orderMappingResult, orderQuery); log.error("{} 查询订单信息orderMapping失败 result={} orderQuery={}", logPre, orderMappingResult, orderQuery);
return JsonResult.buildErrorStateResult(ErrorCodeEnum.RETURN_ERROR.getMessage(), ErrorCodeEnum.RETURN_ERROR.getCode()); return JsonResult.buildErrorStateResult(ErrorCodeEnum.RETURN_ERROR.getMessage(), ErrorCodeEnum.RETURN_ERROR.getCode());
} }
loanOrderMapping = orderMappingResult.getData();
// 可能是进件失败,此时需要根据渠道订单号和渠道号查询进件request表
if(Objects.isNull(loanOrderMapping)){
if(Objects.isNull(orderQuery.getChannelId()) || StringUtils.isBlank(orderQuery.getChannelOrderNo())){
log.error("{} orderMapping为空,且渠道号和渠道订单号为空 result={} orderQuery={}", logPre, orderMappingResult, orderQuery);
return JsonResult.buildErrorStateResult(ErrorCodeEnum.PARAM_ERROR.getMessage(), ErrorCodeEnum.PARAM_ERROR.getCode());
}else{
return buildNoOrderMapping(orderQuery.getChannelOrderNo(),orderQuery.getChannelId());
}
}else{
return buildHasOrderMapping(orderQuery,loanOrderMapping);
}
}
/**
* 处理查询不到orderMapping的情况,可能是进件失败,也可能不存在该笔订单
* @param channelOrderNo
* @param channelId
* @return
*/
private JsonResult buildNoOrderMapping(String channelOrderNo, Long channelId) {
String logPre = "OrderServiceImpl.buildNoOrderMapping";
// 查询订单信息 查询ka
JsonResult<ApplyRequestHistory> orderMappingResult = kaService.queryLatestChannelRequestFlows(channelOrderNo,channelId);
ApplyRequestHistory applyRequestHistory;
if (!orderMappingResult.isSuccess() || Objects.isNull(applyRequestHistory = orderMappingResult.getData())) {
log.error("{} 最新渠道进件请求流水失败,不存在进件流水信息 result={} channelOrderNo={},channelId={}", logPre, orderMappingResult, channelOrderNo,channelId);
return JsonResult.buildErrorStateResult(ErrorCodeEnum.RETURN_ERROR.getMessage(), ErrorCodeEnum.RETURN_ERROR.getCode());
}
// 存在进件信息,可能是进件失败
final String statusStr = "进件失败";
OrderInfo orderInfo = OrderInfo.builder()
.channelOrderNo(channelOrderNo)
.channelId(channelId)
.status(statusStr)
.remark(applyRequestHistory.getDescriptionDetail())
.build();
OrderInfoVo orderInfoVo = OrderInfoVo.builder()
.orderInfo(orderInfo)
.noticeList(Collections.emptyList())
.build();
log.info("{} 查询订单信息,返回信息 orderInfoVo={}", logPre, orderInfoVo);
return JsonResult.buildSuccessResult("处理成功", orderInfoVo);
}
/**
* 处理渠道订单表有数据的情形
* @param orderQuery
* @param loanOrderMapping
* @return
*/
private JsonResult buildHasOrderMapping(OrderQueryParam orderQuery, LoanOrderMapping loanOrderMapping) {
String logPre = "OrderServiceImpl.buildHasOrderMapping";
// 查询订单状态 xyqb // 查询订单状态 xyqb
orderQuery.setApplyOrderNo(loanOrderMapping.getApplyNo()); orderQuery.setApplyOrderNo(loanOrderMapping.getApplyNo());
orderQuery.setLoanId(loanOrderMapping.getLoanId()); orderQuery.setLoanId(loanOrderMapping.getLoanId());
orderQuery.setChannelId(loanOrderMapping.getRegisteredFrom()); orderQuery.setChannelId(loanOrderMapping.getRegisteredFrom());
JsonResult<OrderStatus> orderStatusResult = xyqbService.orderStatusQuery(orderQuery); JsonResult<OrderStatus> orderStatusResult = xyqbService.orderStatusQuery(orderQuery);
OrderStatus orderStatus; OrderStatus orderStatus;
if (!orderStatusResult.isSuccess() || Objects.isNull(orderStatus = orderStatusResult.getData())) { if (!orderStatusResult.isSuccess()) {
log.error("{} 查询订单状态 orderStatus 失败 result={} orderQuery={}", logPre, orderStatusResult, orderQuery); log.error("{} 查询订单状态 orderStatus 失败 result={} orderQuery={}", logPre, orderStatusResult, orderQuery);
return JsonResult.buildErrorStateResult(ErrorCodeEnum.RETURN_ERROR.getMessage(), ErrorCodeEnum.RETURN_ERROR.getCode()); return JsonResult.buildErrorStateResult(ErrorCodeEnum.RETURN_ERROR.getMessage(), ErrorCodeEnum.RETURN_ERROR.getCode());
} }
orderStatus = orderStatusResult.getData();
// 查询通知记录 查询ka // 查询通知记录 查询ka
JsonResult<List<CallbackRecord>> callbackListResult = queryOrderCallback(orderQuery); JsonResult<List<CallbackRecord>> callbackListResult = queryOrderCallback(orderQuery);
if (!callbackListResult.isSuccess()) { if (!callbackListResult.isSuccess()) {
...@@ -137,12 +197,14 @@ public class OrderServiceImpl implements IOrderService { ...@@ -137,12 +197,14 @@ public class OrderServiceImpl implements IOrderService {
return JsonResult.buildErrorStateResult(ErrorCodeEnum.RETURN_ERROR.getMessage(), ErrorCodeEnum.RETURN_ERROR.getCode()); return JsonResult.buildErrorStateResult(ErrorCodeEnum.RETURN_ERROR.getMessage(), ErrorCodeEnum.RETURN_ERROR.getCode());
} }
final String statusStr = "进件成功";
OrderInfo orderInfo = OrderInfo.builder() OrderInfo orderInfo = OrderInfo.builder()
.channelOrderNo(loanOrderMapping.getChannelOrderNo()) .channelOrderNo(loanOrderMapping.getChannelOrderNo())
.applyNo(loanOrderMapping.getApplyNo()) .applyNo(loanOrderMapping.getApplyNo())
.channelId(loanOrderMapping.getRegisteredFrom()) .channelId(loanOrderMapping.getRegisteredFrom())
.loanId(loanOrderMapping.getLoanId()) .loanId(loanOrderMapping.getLoanId())
.status(orderStatus.getStatus().getValue()) .status(Objects.nonNull(orderStatus)?orderStatus.getStatus().getValue():statusStr)
.remark(statusStr)
.build(); .build();
OrderInfoVo orderInfoVo = OrderInfoVo.builder() OrderInfoVo orderInfoVo = OrderInfoVo.builder()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment