Commit 7f6bafa3 authored by 王向伟's avatar 王向伟

审核接口添加动态利率

parent bfc4a674
...@@ -28,10 +28,7 @@ import cn.quantgroup.cashloanflowboss.spi.clotho.service.ClothoCenterService; ...@@ -28,10 +28,7 @@ import cn.quantgroup.cashloanflowboss.spi.clotho.service.ClothoCenterService;
import cn.quantgroup.cashloanflowboss.spi.jolyne.JolyneService; import cn.quantgroup.cashloanflowboss.spi.jolyne.JolyneService;
import cn.quantgroup.cashloanflowboss.spi.opapi.OPCenter; import cn.quantgroup.cashloanflowboss.spi.opapi.OPCenter;
import cn.quantgroup.cashloanflowboss.spi.user.service.XyqbUserService; import cn.quantgroup.cashloanflowboss.spi.user.service.XyqbUserService;
import cn.quantgroup.cashloanflowboss.spi.xyqb.entity.Contract; import cn.quantgroup.cashloanflowboss.spi.xyqb.entity.*;
import cn.quantgroup.cashloanflowboss.spi.xyqb.entity.FinanceProduct;
import cn.quantgroup.cashloanflowboss.spi.xyqb.entity.LoanApplicationHistory;
import cn.quantgroup.cashloanflowboss.spi.xyqb.entity.QuotaProduct;
import cn.quantgroup.cashloanflowboss.spi.xyqb.repository.CancelPreLoanRepository; import cn.quantgroup.cashloanflowboss.spi.xyqb.repository.CancelPreLoanRepository;
import cn.quantgroup.cashloanflowboss.spi.xyqb.service.XYQBCenterService; import cn.quantgroup.cashloanflowboss.spi.xyqb.service.XYQBCenterService;
import cn.quantgroup.cashloanflowboss.utils.JSONTools; import cn.quantgroup.cashloanflowboss.utils.JSONTools;
...@@ -53,6 +50,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -53,6 +50,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Predicate;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentMap; import java.util.concurrent.ConcurrentMap;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -111,7 +109,7 @@ public class OrderServiceImpl implements OrderService { ...@@ -111,7 +109,7 @@ public class OrderServiceImpl implements OrderService {
private List<Long> channels; private List<Long> channels;
@PostConstruct @PostConstruct
public void init(){ public void init() {
channels = Stream.of(multipleOrderChannel.split(",")).map(Long::valueOf).collect(Collectors.toList()); channels = Stream.of(multipleOrderChannel.split(",")).map(Long::valueOf).collect(Collectors.toList());
} }
...@@ -219,8 +217,18 @@ public class OrderServiceImpl implements OrderService { ...@@ -219,8 +217,18 @@ public class OrderServiceImpl implements OrderService {
FinanceProduct financeProduct = xyqbCenterService.getByFundCorpId(Long.valueOf(fundId)); FinanceProduct financeProduct = xyqbCenterService.getByFundCorpId(Long.valueOf(fundId));
log.info("approveOpt审批,fundProductId={}", financeProduct.getId()); log.info("approveOpt审批,fundProductId={}", financeProduct.getId());
// 资方 及 期数额度规则 // 资方 及 期数额度规则
String fundFormat = String.format(OrderUtil.financeProductsFormat, approveVo.getAmount(), approveVo.getAmount(),
BigDecimal fundRate = getFundRate(orderMapping.getApplyNo());
String fundFormat = null;
if(Objects.isNull(fundRate)){
fundFormat = String.format(OrderUtil.financeProductsFormat, approveVo.getAmount(), approveVo.getAmount(),
approveVo.getPeriod(), fundId, financeProduct.getId()); approveVo.getPeriod(), fundId, financeProduct.getId());
}else {
fundFormat = String.format(OrderUtil.financeProductsWithFundRateFormat, approveVo.getAmount(), approveVo.getAmount(),
approveVo.getPeriod(), fundId, fundRate.toString(),financeProduct.getId());
}
saveOrUpdateOrderApprove(approveVo, orderMapping, fundId); saveOrUpdateOrderApprove(approveVo, orderMapping, fundId);
ClfChannelConfiguration clfChannelConfiguration = clfCenterService.findChannelConfigurationByChannelId(orderMapping.getRegisteredFrom()); ClfChannelConfiguration clfChannelConfiguration = clfCenterService.findChannelConfigurationByChannelId(orderMapping.getRegisteredFrom());
if (clfChannelConfiguration == null) { if (clfChannelConfiguration == null) {
...@@ -231,7 +239,7 @@ public class OrderServiceImpl implements OrderService { ...@@ -231,7 +239,7 @@ public class OrderServiceImpl implements OrderService {
if (channels.contains(orderMapping.getRegisteredFrom())) { if (channels.contains(orderMapping.getRegisteredFrom())) {
data = getApproveObjectMap(approveVo, orderMapping, xUser, fundFormat, 9); data = getApproveObjectMap(approveVo, orderMapping, xUser, fundFormat, 9);
}else { } else {
quotaProduct = xyqbCenterService.getXyqbProduct(clfChannelConfiguration.getXyqbProductId()); quotaProduct = xyqbCenterService.getXyqbProduct(clfChannelConfiguration.getXyqbProductId());
if (quotaProduct == null) { if (quotaProduct == null) {
return new Tuple(false, "审批失败,xyqb.quota_product配置为空(".concat(clfChannelConfiguration.getXyqbProductId()).concat(")")); return new Tuple(false, "审批失败,xyqb.quota_product配置为空(".concat(clfChannelConfiguration.getXyqbProductId()).concat(")"));
...@@ -850,4 +858,40 @@ public class OrderServiceImpl implements OrderService { ...@@ -850,4 +858,40 @@ public class OrderServiceImpl implements OrderService {
} }
} }
/**
*
* @param applyNo
* @return
*/
private BigDecimal getFundRate(String applyNo) {
log.info("getFundRate 通过授信订单号获取动态年利率 applyNo={}", applyNo);
ApplyScenarioInfoEntity applyScenarioInfoEntity = xyqbCenterService.findFirstByApplyNo(applyNo);
if (Objects.isNull(applyScenarioInfoEntity)) {
log.info("getFundRate applyNo={} 没有动态年利率", applyNo);
return null;
}
String scenarioData = applyScenarioInfoEntity.getScenarioData();
if (StringUtils.isBlank(scenarioData)) {
log.error("getFundRate 场景数据为空 applyScenarioInfo={}", applyScenarioInfoEntity);
return null;
}
JSONObject jsonObject = JSONObject.parseObject(scenarioData);
BigDecimal rate = jsonObject.getBigDecimal("rate");
if (Objects.isNull(rate)) {
log.error("getFundRate 获取年利率为空 applyScenarioInfo={}", applyScenarioInfoEntity);
return null;
}
BigDecimal result = rate.divide(new BigDecimal("100"));
DecimalFormat format6 = new DecimalFormat("#####0.000000");
String format = format6.format(result);
return new BigDecimal(format);
}
} }
...@@ -24,6 +24,7 @@ import java.util.List; ...@@ -24,6 +24,7 @@ import java.util.List;
public class OrderUtil { public class OrderUtil {
// public static final String financeProductsFormat = "[{\"min\":%s,\"max\":%s,\"terms\":[{\"term\":%s,\"fundInfo\":[{\"fundId\":%s,\"rate\":\"0\",\"rateType\":1,\"priority\":\"1\",\"feeType\":\"1\"}]}]}]"; // public static final String financeProductsFormat = "[{\"min\":%s,\"max\":%s,\"terms\":[{\"term\":%s,\"fundInfo\":[{\"fundId\":%s,\"rate\":\"0\",\"rateType\":1,\"priority\":\"1\",\"feeType\":\"1\"}]}]}]";
public static final String financeProductsFormat = "[{\"min\":%s,\"max\":%s,\"terms\":[{\"term\":%s,\"fundInfo\":[{\"fundId\":%s,\"rate\":\"0\",\"rateType\":1,\"priority\":\"1\",\"feeType\":\"1\",\"fundProductId\":%s}]}]}]"; public static final String financeProductsFormat = "[{\"min\":%s,\"max\":%s,\"terms\":[{\"term\":%s,\"fundInfo\":[{\"fundId\":%s,\"rate\":\"0\",\"rateType\":1,\"priority\":\"1\",\"feeType\":\"1\",\"fundProductId\":%s}]}]}]";
public static final String financeProductsWithFundRateFormat = "[{\"min\":%s,\"max\":%s,\"terms\":[{\"term\":%s,\"fundInfo\":[{\"fundId\":%s,\"fundRate\":%s,\"rate\":\"0\",\"rateType\":1,\"priority\":\"1\",\"feeType\":\"1\",\"fundProductId\":%s}]}]}]";
/** /**
* *
* @param kaNoticeType * @param kaNoticeType
......
package cn.quantgroup.cashloanflowboss.spi.xyqb.entity;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import javax.persistence.*;
import java.math.BigDecimal;
import java.sql.Timestamp;
/**
* 渠道申请场景数据实体类
* @author chenglong.han
* @date 2020/5/8
*/
@Data
@Entity
@Slf4j
@Table(name = "apply_scenario_info")
public class ApplyScenarioInfoEntity {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
/**
* 用户id
*/
@Column(name = "user_id")
private Long userId;
/**
* 授信订单号
*/
@Column(name = "order_no")
private String orderNo;
/**
* 申请渠道
*/
@Column(name = "channel_id")
private Long channelId;
/**
* 申请产品id
*/
@Column(name = "quota_product_id")
private Long quotaProductId;
/**
* 账单出账日
*/
@Column(name = "bill_day")
private Integer billDay;
/**
* 账单还款日
*/
@Column(name = "repay_day")
private Integer repayDay;
/**
* 申请金额
*/
@Column(name = "apply_amount")
private BigDecimal applyAmount;
/**
* 申请期数
*/
@Column(name = "apply_term")
private Integer applyTerm;
/**
* JSON场景数据
*/
@Column(name = "scenario_data")
private String scenarioData;
/**
* 创建时间
*/
@Column(name = "created_at")
private Timestamp createdAt;
/**
* 更新时间
*/
@Column(name = "updated_at")
private Timestamp updatedAt;
@PrePersist
public void prePersist() {
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
createdAt = timestamp;
updatedAt = timestamp;
}
@PreUpdate
public void preUpdate() {
updatedAt = new Timestamp(System.currentTimeMillis());
}
}
package cn.quantgroup.cashloanflowboss.spi.xyqb.repository;
import cn.quantgroup.cashloanflowboss.spi.xyqb.entity.ApplyScenarioInfoEntity;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* 场景数据DAO
*
* @author chenglong.han
* @date 2020/5/8
*/
public interface IApplyScenarioInfoRepository extends JpaRepository<ApplyScenarioInfoEntity, Long> {
/**
* 根据申请单号查询记录
*
* @param applyOrderNo
* @return
*/
ApplyScenarioInfoEntity findFirstByOrderNo(String applyOrderNo);
}
...@@ -61,4 +61,6 @@ public interface XYQBCenterService { ...@@ -61,4 +61,6 @@ public interface XYQBCenterService {
*/ */
FinanceProduct getByFundCorpId(Long fundCorpId); FinanceProduct getByFundCorpId(Long fundCorpId);
ApplyScenarioInfoEntity findFirstByApplyNo(String applyNo);
} }
...@@ -61,6 +61,9 @@ public class XYQBCenterServiceImpl implements XYQBCenterService { ...@@ -61,6 +61,9 @@ public class XYQBCenterServiceImpl implements XYQBCenterService {
@Autowired @Autowired
private XYQBCenter xyqbCenter; private XYQBCenter xyqbCenter;
@Autowired
private IApplyScenarioInfoRepository applyScenarioInfoRepository;
/** /**
* 更新合同状态 * 更新合同状态
...@@ -279,4 +282,10 @@ public class XYQBCenterServiceImpl implements XYQBCenterService { ...@@ -279,4 +282,10 @@ public class XYQBCenterServiceImpl implements XYQBCenterService {
public FinanceProduct getByFundCorpId(Long fundCorpId) { public FinanceProduct getByFundCorpId(Long fundCorpId) {
return financeProductRepository.findByFundCorpId(fundCorpId); return financeProductRepository.findByFundCorpId(fundCorpId);
} }
@Override
public ApplyScenarioInfoEntity findFirstByApplyNo(String applyNo) {
return applyScenarioInfoRepository.findFirstByOrderNo(applyNo);
}
} }
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