Commit 2783a80d authored by suntao's avatar suntao

审批

parent 26485db9
package cn.quantgroup.cashloanflowboss.api.optlog.entity; package cn.quantgroup.cashloanflowboss.api.optlog.entity;
import cn.quantgroup.cashloanflowboss.api.optlog.model.OptEnumName;
import lombok.Data; import lombok.Data;
import javax.persistence.*; import javax.persistence.*;
...@@ -35,6 +36,12 @@ public class OptHistoryLog { ...@@ -35,6 +36,12 @@ public class OptHistoryLog {
@Column(name = "channel_id") @Column(name = "channel_id")
private Long channelId; private Long channelId;
/**
* 操作节点名称
*/
@Column(name = "opt_enum_name")
private OptEnumName optEnumName;
/** /**
* 操作节点名称 * 操作节点名称
*/ */
......
package cn.quantgroup.cashloanflowboss.api.optlog.model;
/**
* function:
* date: 2019/9/23
*
* @author: suntao
*/
public enum OptEnumName {
PER_AUDIT("预审"),
APPLY_IN("用户进件"),
WITHDRAW("用户提现"),
AUDIT("审批操作"),
SECORD_AUDIT("二次风控审批操作"),
PAY("放款操作"),
PRE_CANCEL("贷前关单操作"),
LOAN_CANCEL("贷后关单操作"),
ALL_REPAID("结清订单操作");
private String desc;
OptEnumName(String desc) {
this.desc = desc;
}
public String getDesc() {
return this.desc;
}
}
...@@ -22,8 +22,11 @@ import java.util.List; ...@@ -22,8 +22,11 @@ import java.util.List;
public interface OptHistoryLogRepository extends PagingAndSortingRepository<OptHistoryLog, Long>, JpaSpecificationExecutor<OptHistoryLog> { public interface OptHistoryLogRepository extends PagingAndSortingRepository<OptHistoryLog, Long>, JpaSpecificationExecutor<OptHistoryLog> {
@Query(value = "select * opt_history_log where channel_order_number=?1 and opt_name = ?2 limit 1", nativeQuery = true) @Query(value = "select * opt_history_log where channel_order_number=?1 and opt_enum_name = ?2 limit 1", nativeQuery = true)
OptHistoryLog findByChannelOrderNumberAndOptName(String channelOrderNumber, String opName); OptHistoryLog findByChannelOrderNumberAndOptName(String channelOrderNumber, int opName);
@Query(value = "select * opt_history_log where channel_order_number=?1 and opt_enum_name = ?2 and opt_result=1 limit 1", nativeQuery = true)
OptHistoryLog findByChannelOrderNumberAndOptNameAndSuccess(String channelOrderNumber, int opName);
List<OptHistoryLog> findByChannelOrderNumber(String channelOrderNumber); List<OptHistoryLog> findByChannelOrderNumber(String channelOrderNumber);
......
package cn.quantgroup.cashloanflowboss.api.optlog.service; package cn.quantgroup.cashloanflowboss.api.optlog.service;
import cn.quantgroup.cashloanflowboss.api.optlog.entity.OptHistoryLog; import cn.quantgroup.cashloanflowboss.api.optlog.entity.OptHistoryLog;
import cn.quantgroup.cashloanflowboss.api.optlog.model.OptEnumName;
import cn.quantgroup.cashloanflowboss.api.order.model.OrderBaseModel; import cn.quantgroup.cashloanflowboss.api.order.model.OrderBaseModel;
import java.util.List; import java.util.List;
...@@ -18,5 +19,6 @@ public interface OptHistoryLogService { ...@@ -18,5 +19,6 @@ public interface OptHistoryLogService {
void save(OptHistoryLog optHistoryLog); void save(OptHistoryLog optHistoryLog);
OptHistoryLog findByChannelOrderNumberAndOptName(String channelOrderNumber, String opName); OptHistoryLog findByChannelOrderNumberAndOptName(String channelOrderNumber, OptEnumName opName);
OptHistoryLog findByChannelOrderNumberAndOptNameAndSuccess(String channelOrderNumber, OptEnumName opName);
} }
package cn.quantgroup.cashloanflowboss.api.optlog.service; package cn.quantgroup.cashloanflowboss.api.optlog.service;
import cn.quantgroup.cashloanflowboss.api.optlog.entity.OptHistoryLog; import cn.quantgroup.cashloanflowboss.api.optlog.entity.OptHistoryLog;
import cn.quantgroup.cashloanflowboss.api.optlog.model.OptEnumName;
import cn.quantgroup.cashloanflowboss.api.optlog.repository.OptHistoryLogRepository; import cn.quantgroup.cashloanflowboss.api.optlog.repository.OptHistoryLogRepository;
import cn.quantgroup.cashloanflowboss.api.order.model.OrderBaseModel; import cn.quantgroup.cashloanflowboss.api.order.model.OrderBaseModel;
import cn.quantgroup.cashloanflowboss.api.order.util.OrderUtil; import cn.quantgroup.cashloanflowboss.api.order.util.OrderUtil;
...@@ -114,8 +115,13 @@ public class OptHistoryLogServiceImpl implements OptHistoryLogService { ...@@ -114,8 +115,13 @@ public class OptHistoryLogServiceImpl implements OptHistoryLogService {
@Override @Override
public OptHistoryLog findByChannelOrderNumberAndOptName(String channelOrderNumber, String opName) { public OptHistoryLog findByChannelOrderNumberAndOptName(String channelOrderNumber, OptEnumName opName) {
return optHistoryLogRepository.findByChannelOrderNumberAndOptName(channelOrderNumber, opName); return optHistoryLogRepository.findByChannelOrderNumberAndOptName(channelOrderNumber, opName.ordinal());
}
@Override
public OptHistoryLog findByChannelOrderNumberAndOptNameAndSuccess(String channelOrderNumber, OptEnumName opName) {
return optHistoryLogRepository.findByChannelOrderNumberAndOptNameAndSuccess(channelOrderNumber, opName.ordinal());
} }
} }
...@@ -38,7 +38,6 @@ public class OrderVo { ...@@ -38,7 +38,6 @@ public class OrderVo {
audit("审批"), audit("审批"),
cancel("贷前关单"), cancel("贷前关单"),
second_audit("二次风控审批"), second_audit("二次风控审批"),
reload_second_audit_job("刷新待放款任务"),
pay_succ("放款成功"), pay_succ("放款成功"),
pay_fail("放款失败"), pay_fail("放款失败"),
withdraw_second("存管提现"), withdraw_second("存管提现"),
......
package cn.quantgroup.cashloanflowboss.api.order.service; package cn.quantgroup.cashloanflowboss.api.order.service;
import cn.quantgroup.cashloanflowboss.api.optlog.entity.OptHistoryLog; import cn.quantgroup.cashloanflowboss.api.optlog.entity.OptHistoryLog;
import cn.quantgroup.cashloanflowboss.api.optlog.model.OptEnumName;
import cn.quantgroup.cashloanflowboss.api.optlog.service.OptHistoryLogServiceImpl; import cn.quantgroup.cashloanflowboss.api.optlog.service.OptHistoryLogServiceImpl;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.CallbackFailRecord; import cn.quantgroup.cashloanflowboss.spi.clf.entity.CallbackFailRecord;
import cn.quantgroup.cashloanflowboss.spi.clf.model.LoanProgress; import cn.quantgroup.cashloanflowboss.spi.clf.model.LoanProgress;
...@@ -271,29 +272,31 @@ public class OrderServiceImpl implements OrderService{ ...@@ -271,29 +272,31 @@ public class OrderServiceImpl implements OrderService{
} }
// 操作记录 // 操作记录
String optLogDetail = approveVo.getIsPass() ? "审批通过:" : "审批拒绝:";
OptHistoryLog optHistoryLog = new OptHistoryLog(); OptHistoryLog optHistoryLog = new OptHistoryLog();
optHistoryLog.setChannelOrderNumber(approveVo.getChannelOrderNumber()); optHistoryLog.setChannelOrderNumber(approveVo.getChannelOrderNumber());
optHistoryLog.setCreditNumber(orderMapping.getApplyNo()); optHistoryLog.setCreditNumber(orderMapping.getApplyNo());
optHistoryLog.setLoanId(orderMapping.getLoanId()); optHistoryLog.setLoanId(orderMapping.getLoanId());
optHistoryLog.setChannelId(orderMapping.getRegisteredFrom()); optHistoryLog.setChannelId(orderMapping.getRegisteredFrom());
optHistoryLog.setOptName("审批操作"); optHistoryLog.setOptEnumName(OptEnumName.AUDIT);
optHistoryLog.setOptName(OptEnumName.AUDIT.getDesc());
optHistoryLog.setCreateTime(new Date()); optHistoryLog.setCreateTime(new Date());
Boolean optResult; Boolean optResult;
if ("success".equals(approveStringResult)) { if ("success".equals(approveStringResult)) {
optLogDetail = optLogDetail.concat(corpPolicyValidate ? "" : "资产计划未配置,请联系管理员配置");
optHistoryLog.setOptLogDetail(corpPolicyValidate ? "" : "资产计划未配置,请联系管理员配置");
optHistoryLog.setOptResult(true); optHistoryLog.setOptResult(true);
optResult = true; optResult = true;
log.info("审批申请成功,channelOrderNumber={}", orderMapping.getChannelOrderNo()); log.info("审批申请成功,channelOrderNumber={}", orderMapping.getChannelOrderNo());
} else { } else {
optLogDetail = optLogDetail.concat("审批失败");
optHistoryLog.setOptResult(false); optHistoryLog.setOptResult(false);
optHistoryLog.setOptLogDetail("审批失败");
log.info("审批申请失败,channelOrderNumber={},requestParam={}", orderMapping.getChannelOrderNo(), JSONTools.serialize(data)); log.info("审批申请失败,channelOrderNumber={},requestParam={}", orderMapping.getChannelOrderNo(), JSONTools.serialize(data));
optResult = false; optResult = false;
} }
optHistoryLog.setOptLogDetail(optLogDetail);
optHistoryLogService.save(optHistoryLog); optHistoryLogService.save(optHistoryLog);
return new Tuple<>(optResult, corpPolicyValidate); return new Tuple<>(optResult, corpPolicyValidate);
...@@ -310,21 +313,19 @@ public class OrderServiceImpl implements OrderService{ ...@@ -310,21 +313,19 @@ public class OrderServiceImpl implements OrderService{
@Override @Override
public boolean secondAudit(String channelOrderNumber) { public boolean secondAudit(String channelOrderNumber) {
String opName = "二次审批操作"; OptEnumName secondAudit = OptEnumName.SECORD_AUDIT;
boolean result = true; boolean result = true;
// 操作记录 // 操作记录
OptHistoryLog optHistoryLog = new OptHistoryLog(); OptHistoryLog optHistoryLog = new OptHistoryLog();
optHistoryLog.setChannelOrderNumber(channelOrderNumber); optHistoryLog.setChannelOrderNumber(channelOrderNumber);
optHistoryLog.setOptEnumName(secondAudit);
optHistoryLog.setOptName(secondAudit.getDesc());
ClfOrderMapping orderMapping = this.clfOrderMappingRepository.findByChannelOrderNoLastOne(channelOrderNumber); ClfOrderMapping orderMapping = this.clfOrderMappingRepository.findByChannelOrderNoLastOne(channelOrderNumber);
if (orderMapping == null || orderMapping.getLoanId() == null) { if (orderMapping == null || orderMapping.getLoanId() == null) {
log.info("secondAudit,orderMapping为空或者loanId为空,channelOrderNumber=".concat(channelOrderNumber)); log.info("secondAudit,orderMapping为空或者loanId为空,channelOrderNumber=".concat(channelOrderNumber));
optHistoryLog.setOptName(opName);
optHistoryLog.setOptLogDetail("orderMapping为空或者loanId为空,操作失败"); optHistoryLog.setOptLogDetail("orderMapping为空或者loanId为空,操作失败");
optHistoryLog.setOptResult(false); optHistoryLog.setOptResult(false);
optHistoryLog.setCreateTime(new Date()); optHistoryLog.setCreateTime(new Date());
...@@ -335,11 +336,10 @@ public class OrderServiceImpl implements OrderService{ ...@@ -335,11 +336,10 @@ public class OrderServiceImpl implements OrderService{
optHistoryLog.setCreditNumber(orderMapping.getApplyNo()); optHistoryLog.setCreditNumber(orderMapping.getApplyNo());
optHistoryLog.setLoanId(orderMapping.getLoanId()); optHistoryLog.setLoanId(orderMapping.getLoanId());
optHistoryLog.setChannelId(orderMapping.getRegisteredFrom()); optHistoryLog.setChannelId(orderMapping.getRegisteredFrom());
optHistoryLog.setOptName(opName);
optHistoryLog.setCreateTime(new Date()); optHistoryLog.setCreateTime(new Date());
OptHistoryLog optHistoryLogExsit = optHistoryLogService.findByChannelOrderNumberAndOptName(channelOrderNumber, opName); OptHistoryLog optHistoryLogExsit = optHistoryLogService.findByChannelOrderNumberAndOptNameAndSuccess(channelOrderNumber, secondAudit);
if (optHistoryLogExsit != null && optHistoryLogExsit.getOptResult()) { if (optHistoryLogExsit != null) {
log.info("secondAudit,已经操作成功,channelOrderNumber=".concat(channelOrderNumber)); log.info("secondAudit,已经操作成功,channelOrderNumber=".concat(channelOrderNumber));
optHistoryLog.setOptLogDetail("已经操作成功. 重复操作"); optHistoryLog.setOptLogDetail("已经操作成功. 重复操作");
optHistoryLog.setOptResult(true); optHistoryLog.setOptResult(true);
...@@ -434,7 +434,7 @@ public class OrderServiceImpl implements OrderService{ ...@@ -434,7 +434,7 @@ public class OrderServiceImpl implements OrderService{
ClfOrderMapping orderMapping = this.clfOrderMappingRepository.findByChannelOrderNoAndRegisteredFromLastOne(lendingFormModel.getChannelOrderNumber(), lendingFormModel.getChannelId()); ClfOrderMapping orderMapping = this.clfOrderMappingRepository.findByChannelOrderNoAndRegisteredFromLastOne(lendingFormModel.getChannelOrderNumber(), lendingFormModel.getChannelId());
String optDetail = ""; String optDetail = lendingFormModel.getResult() ? "放款成功:" : "放款失败:";
// 操作记录 // 操作记录
OptHistoryLog optHistoryLog = new OptHistoryLog(); OptHistoryLog optHistoryLog = new OptHistoryLog();
...@@ -442,7 +442,8 @@ public class OrderServiceImpl implements OrderService{ ...@@ -442,7 +442,8 @@ public class OrderServiceImpl implements OrderService{
optHistoryLog.setCreditNumber(orderMapping.getApplyNo()); optHistoryLog.setCreditNumber(orderMapping.getApplyNo());
optHistoryLog.setLoanId(orderMapping.getLoanId()); optHistoryLog.setLoanId(orderMapping.getLoanId());
optHistoryLog.setChannelId(orderMapping.getRegisteredFrom()); optHistoryLog.setChannelId(orderMapping.getRegisteredFrom());
optHistoryLog.setOptName("放款操作"); optHistoryLog.setOptEnumName(OptEnumName.PAY);
optHistoryLog.setOptName(OptEnumName.PAY.getDesc());
optHistoryLog.setCreateTime(new Date()); optHistoryLog.setCreateTime(new Date());
...@@ -730,17 +731,17 @@ public class OrderServiceImpl implements OrderService{ ...@@ -730,17 +731,17 @@ public class OrderServiceImpl implements OrderService{
tuple.setValue(buttonList); tuple.setValue(buttonList);
return tuple; return tuple;
case "APPROVE_ING" : case "APPROVE_ING" :
OrderApprove orderApprove = orderApproveRepository.findByCreditNumber(orderMapping.getApplyNo()); OptHistoryLog optHistoryLog = optHistoryLogService.findByChannelOrderNumberAndOptNameAndSuccess(orderMapping.getChannelOrderNo(), OptEnumName.AUDIT);
if (orderApprove == null) { if (optHistoryLog == null) {
tuple.setKey("审批中");
tuple.setValue(buttonList);
} else {
OrderVo.OptButton buttonApprove2 = new OrderVo.OptButton(); OrderVo.OptButton buttonApprove2 = new OrderVo.OptButton();
buttonApprove2.setAction(OrderVo.OptButtonAction.audit.name()); buttonApprove2.setAction(OrderVo.OptButtonAction.audit.name());
buttonApprove2.setName(OrderVo.OptButtonAction.audit.getDesc()); buttonApprove2.setName(OrderVo.OptButtonAction.audit.getDesc());
buttonList.add(buttonApprove2); buttonList.add(buttonApprove2);
tuple.setKey("授信成功,待审批"); tuple.setKey("授信成功,待审批");
tuple.setValue(buttonList); tuple.setValue(buttonList);
} else {
tuple.setKey("审批中(等待几分钟)");
tuple.setValue(buttonList);
} }
return tuple; return tuple;
case "REJECT" : case "REJECT" :
......
package cn.quantgroup.cashloanflowboss.api.order.util; package cn.quantgroup.cashloanflowboss.api.order.util;
import cn.quantgroup.cashloanflowboss.api.optlog.entity.OptHistoryLog; import cn.quantgroup.cashloanflowboss.api.optlog.entity.OptHistoryLog;
import cn.quantgroup.cashloanflowboss.api.optlog.model.OptEnumName;
import cn.quantgroup.cashloanflowboss.api.order.entity.OrderApprove; import cn.quantgroup.cashloanflowboss.api.order.entity.OrderApprove;
import cn.quantgroup.cashloanflowboss.core.base.Tuple; import cn.quantgroup.cashloanflowboss.core.base.Tuple;
import cn.quantgroup.cashloanflowboss.spi.clf.entity.ApplyRequestHistory; import cn.quantgroup.cashloanflowboss.spi.clf.entity.ApplyRequestHistory;
...@@ -10,6 +11,7 @@ import cn.quantgroup.cashloanflowboss.spi.clf.model.KANoticeType; ...@@ -10,6 +11,7 @@ import cn.quantgroup.cashloanflowboss.spi.clf.model.KANoticeType;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import java.awt.font.OpenType;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -129,11 +131,16 @@ public class OrderUtil { ...@@ -129,11 +131,16 @@ public class OrderUtil {
return new Tuple(kaNoticeType, "未知状态"); return new Tuple(kaNoticeType, "未知状态");
} }
/**
* ka 的 进件记录 转换成 操作记录
* @param applyRequestHistoryList
* @param orderMapping
* @return
*/
public static List<OptHistoryLog> convertApplyRequestHistoryList2OptHistoryLogList(List<ApplyRequestHistory> applyRequestHistoryList, ClfOrderMapping orderMapping) { public static List<OptHistoryLog> convertApplyRequestHistoryList2OptHistoryLogList(List<ApplyRequestHistory> applyRequestHistoryList, ClfOrderMapping orderMapping) {
List<OptHistoryLog> optHistoryLogs = new ArrayList<>(); List<OptHistoryLog> optHistoryLogs = new ArrayList<>();
for (ApplyRequestHistory applyRequestHistory : applyRequestHistoryList) { for (ApplyRequestHistory applyRequestHistory : applyRequestHistoryList) {
OptHistoryLog optHistoryLog = new OptHistoryLog(); OptHistoryLog optHistoryLog = new OptHistoryLog();
optHistoryLog.setId(0L);
optHistoryLog.setChannelOrderNumber(applyRequestHistory.getChannelOrderNo()); optHistoryLog.setChannelOrderNumber(applyRequestHistory.getChannelOrderNo());
optHistoryLog.setCreditNumber(orderMapping.getApplyNo()); optHistoryLog.setCreditNumber(orderMapping.getApplyNo());
optHistoryLog.setLoanId(orderMapping.getLoanId()); optHistoryLog.setLoanId(orderMapping.getLoanId());
...@@ -149,6 +156,11 @@ public class OrderUtil { ...@@ -149,6 +156,11 @@ public class OrderUtil {
return optHistoryLogs; return optHistoryLogs;
} }
/**
* ka api 提现转换 opt
* @param withdrawRecordList
* @return
*/
public static List<OptHistoryLog> convertWithdrawRecordList2UserOptHistoryLogList(List<WithdrawRecord> withdrawRecordList) { public static List<OptHistoryLog> convertWithdrawRecordList2UserOptHistoryLogList(List<WithdrawRecord> withdrawRecordList) {
if (CollectionUtils.isEmpty(withdrawRecordList)) { if (CollectionUtils.isEmpty(withdrawRecordList)) {
return null; return null;
...@@ -158,7 +170,7 @@ public class OrderUtil { ...@@ -158,7 +170,7 @@ public class OrderUtil {
OptHistoryLog optHistoryLog = new OptHistoryLog(); OptHistoryLog optHistoryLog = new OptHistoryLog();
optHistoryLog.setChannelOrderNumber(withdrawRecord.getChannelOrderNo()); optHistoryLog.setChannelOrderNumber(withdrawRecord.getChannelOrderNo());
optHistoryLog.setChannelId(withdrawRecord.getChannelId()); optHistoryLog.setChannelId(withdrawRecord.getChannelId());
optHistoryLog.setOptName("api提现操作"); optHistoryLog.setOptName(OptEnumName.WITHDRAW.getDesc());
optHistoryLog.setOptUser(""); optHistoryLog.setOptUser("");
optHistoryLog.setOptLogDetail(withdrawRecord.getDescriptionDetail()); optHistoryLog.setOptLogDetail(withdrawRecord.getDescriptionDetail());
optHistoryLog.setExtData(""); optHistoryLog.setExtData("");
......
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