提交 226f7387 authored 作者: huyufan's avatar huyufan

Merge remote-tracking branch 'origin/v10.7_borrowing_and_repayment_20240118' into test

......@@ -41,6 +41,7 @@ import com.clx.user.feign.OwnerFeign;
import com.clx.user.vo.feign.OwnerInfoFeignVO;
import com.msl.common.base.Optional;
import com.msl.common.enums.ResultCodeEnum;
import com.msl.common.exception.ServiceSystemException;
import com.msl.common.result.Result;
import com.msl.common.utils.DateUtils;
import com.msl.document.api.feign.ContractEvidenceFeign;
......@@ -72,7 +73,7 @@ import java.util.stream.Collectors;
@Service
@Slf4j
@AllArgsConstructor
public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
private final OwnerLoanRecordDao ownerLoanRecordDao;
......@@ -87,7 +88,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
private final OwnerBindCardRecordDao ownerBindCardRecordDao;
private final NbBankService bankService;
private final OwnerLoanAccountRunningWaterRecordDao ownerLoanAccountRunningWaterRecordDao;
private final BorrowerDao borrowerDao;
......@@ -98,10 +99,6 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
private final ContractTemplateFeign contractTemplateFeign;
private final PaymentFromConfig paymentFromConfig;
private final DataSourceTransactionManager dataSourceTransactionManager;
private final TransactionDefinition transactionDefinition;
@Override
public IPage<OwnerLoanRecordVO> pageOwnerLoanRecord(PageCarrierOwnerLoanRecordParam param) {
IPage<OwnerLoanRecord> page = ownerLoanRecordDao.pageOwnerLoanRecord(param);
......@@ -114,8 +111,6 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
}
@Override
public void ownerLoanRecordSubmit(OwnerLoanRecordParam param) {
......@@ -152,7 +147,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
if (OwnerLoanRecordEnum.LoanType.FUND.getCode().equals(param.getLoanType())) {
//资金 TODO 调宁波银企直连的产品,从诚联信账户中给鑫祥和执行转账
NbBankOrderPayResultVO orderPayResultVO = bankService.orderDirectPay(param.getLoanNo() ,
NbBankOrderPayResultVO orderPayResultVO = bankService.orderDirectPay(param.getLoanNo(),
ownerLoanRecord.getLoanBalance().intValue(), "", "", "");
ownerLoanRecord.setRunningWaterOpenNo(orderPayResultVO.getTransSeqNo());
ownerLoanRecord.setMerchantRunningWaterNo(orderPayResultVO.getMerSeqNo());
......@@ -199,6 +194,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
/**
* 生成借款流水
*
* @param ownerLoanRecord
*/
private void initOwnerLoanRunningWaterRecord(OwnerLoanRecord ownerLoanRecord) {
......@@ -220,6 +216,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
/**
* 生成还款记录
*
* @param ownerLoanRecord
*/
private void initOwnerRepayment(OwnerLoanRecord ownerLoanRecord) {
......@@ -248,14 +245,14 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
@Override
public OwnerLoanRecordDetail getOwnerLoanRecordDetail() {
List<BorrowerSelectVO> borrowerList = borrowerDao.selectAllBorrowConfig();
Map<String,BorrowerSelectVO> map = new TreeMap<>();
Map<String, BorrowerSelectVO> map = new TreeMap<>();
for (BorrowerSelectVO item : borrowerList) {
if(map.containsKey(item.getName())){
if(Objects.equals(item.getType(),OwnerLoanRecordEnum.LoanType.VIRTUAL_CURRENCY.getCode())){
map.put(item.getName(),item);
if (map.containsKey(item.getName())) {
if (Objects.equals(item.getType(), OwnerLoanRecordEnum.LoanType.VIRTUAL_CURRENCY.getCode())) {
map.put(item.getName(), item);
}
}else{
map.put(item.getName(),item);
} else {
map.put(item.getName(), item);
}
}
OwnerLoanRecordDetail detail = new OwnerLoanRecordDetail();
......@@ -269,8 +266,8 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
detail.setCompanyName(ownerInfoFeignVO.getCompanyName());
//收款方
List<PayeeVO> payeeList =ClxPayeeConfig.payeeList.stream().map(
item-> PayeeVO.builder().name(item.getName()).account(item.getAccount()).id(item.getId()).build()
List<PayeeVO> payeeList = ClxPayeeConfig.payeeList.stream().map(
item -> PayeeVO.builder().name(item.getName()).account(item.getAccount()).id(item.getId()).build()
).collect(Collectors.toList());
detail.setPayeeList(payeeList);
......@@ -278,8 +275,6 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
}
@Override
public CarrierCashierInfoVO getCashierInfo(Integer id) {
OwnerLoanRecord ownerLoanRecord = ownerLoanRecordDao.getEntityByKey(id).orElseThrow(
......@@ -319,12 +314,13 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
PerformanceResultEnum.DATA_NOT_FIND);
ExportOwnerLoanRecordVO exportOwnerLoanRecordVO = ownerLoanRecordStruct.convert(ownerLoanRecord);
//货主借款: 收款方鑫祥和 付款方为诚联信 借款方为货主
Map<String,String> map = JSON.parseObject(JSON.toJSONString(exportOwnerLoanRecordVO), new TypeReference<Map<String,String>>(){});
Map<String, String> map = JSON.parseObject(JSON.toJSONString(exportOwnerLoanRecordVO), new TypeReference<Map<String, String>>() {
});
// 创建合同
GenerateContractParam feignParam = new GenerateContractParam();
if(Objects.equals(OwnerRePaymentEnum.Channel.ORDER.getCode(),param.getPayWay())){
if (Objects.equals(OwnerRePaymentEnum.Channel.ORDER.getCode(), param.getPayWay())) {
feignParam.setTemplateNo(paymentFromConfig.getLoanOrderTemplateNo());
}else{
} else {
feignParam.setTemplateNo(paymentFromConfig.getLoanTransferTemplateNo());
}
......@@ -335,48 +331,44 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
}
@Override
@Transactional(rollbackFor = Exception.class)
public void getLoanBalance(LoanBalanceDTO param) {
BigDecimal orderChildPrice = param.getOrderChildPrice();
Long userNo = param.getOwnerUserNo();
String childNo = param.getChildNo();
log.info("执行借款,借款金额{}, 货主编号:{}, 运单号:{}", orderChildPrice, userNo, childNo);
TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
try {
List<OwnerLoanRecord> updateList = new LinkedList<>();
List<OwnerLoanRecord> ownerLoanRecords = ownerLoanRecordDao.selectLoanBalance(userNo);
BigDecimal orderChildPriceTemp = orderChildPrice;
for (OwnerLoanRecord ownerLoanRecord : ownerLoanRecords) {
BigDecimal loanResidueBalance = ownerLoanRecord.getLoanResidueBalance();
log.info("当前借款金额:{},借款单号{},借款剩余金额{}", orderChildPriceTemp, ownerLoanRecord.getLoanNo(), loanResidueBalance);
if (loanResidueBalance.compareTo(orderChildPriceTemp) >= 0) {
log.info("当前借款单的剩余金额足够借款金额");
generateFrozenOwnerLoanRunningWater(ownerLoanRecord, childNo, orderChildPrice);
updateList.add(ownerLoanRecord.setLoanResidueBalance(loanResidueBalance.subtract(orderChildPriceTemp)));
orderChildPriceTemp = BigDecimal.ZERO;
break;
} else {
log.info("当前借款单的剩余金额不够抵扣借款金额,先进行扣除当前借款所有剩余");
generateFrozenOwnerLoanRunningWater(ownerLoanRecord, childNo, orderChildPrice);
updateList.add(ownerLoanRecord.setLoanResidueBalance(BigDecimal.ZERO));
orderChildPriceTemp = orderChildPriceTemp.subtract(loanResidueBalance);
}
}
if (orderChildPriceTemp.compareTo(BigDecimal.ZERO) != 0) {
log.info("执行借款发现:货主货款不足,进行手动回滚事务");
dataSourceTransactionManager.rollback(transactionStatus);
List<OwnerLoanRecord> updateList = new LinkedList<>();
List<OwnerLoanRecord> ownerLoanRecords = ownerLoanRecordDao.selectLoanBalance(userNo);
BigDecimal orderChildPriceTemp = orderChildPrice;
for (OwnerLoanRecord ownerLoanRecord : ownerLoanRecords) {
BigDecimal loanResidueBalance = ownerLoanRecord.getLoanResidueBalance();
log.info("当前借款金额:{},借款单号{},借款剩余金额{}", orderChildPriceTemp, ownerLoanRecord.getLoanNo(), loanResidueBalance);
if (loanResidueBalance.compareTo(orderChildPriceTemp) >= 0) {
log.info("当前借款单的剩余金额足够借款金额");
generateFrozenOwnerLoanRunningWater(ownerLoanRecord, childNo, orderChildPrice);
updateList.add(ownerLoanRecord.setLoanResidueBalance(loanResidueBalance.subtract(orderChildPriceTemp)));
orderChildPriceTemp = BigDecimal.ZERO;
break;
} else {
log.info("当前借款单的剩余金额不够抵扣借款金额,先进行扣除当前借款所有剩余");
generateFrozenOwnerLoanRunningWater(ownerLoanRecord, childNo, orderChildPrice);
updateList.add(ownerLoanRecord.setLoanResidueBalance(BigDecimal.ZERO));
orderChildPriceTemp = orderChildPriceTemp.subtract(loanResidueBalance);
}
}
for (OwnerLoanRecord update : updateList) {
ownerLoanRecordDao.updateEntityByKey(update);
}
log.info("执行借款成功,借款金额{}, 货主编号:{}, 运单号:{}", orderChildPrice, userNo, childNo);
} catch (Exception e) {
log.info("借款产生异常,异常信息:{}", ExceptionUtils.getThrowableCount(e));
dataSourceTransactionManager.rollback(transactionStatus);
if (orderChildPriceTemp.compareTo(BigDecimal.ZERO) != 0) {
throw new ServiceSystemException(PerformanceResultEnum.HTTP_ERROR, "执行借款发现:货主货款不足");
}
for (OwnerLoanRecord update : updateList) {
ownerLoanRecordDao.updateEntityByKey(update);
}
log.info("执行借款成功,借款金额{}, 货主编号:{}, 运单号:{}", orderChildPrice, userNo, childNo);
}
public void generateFrozenOwnerLoanRunningWater(OwnerLoanRecord ownerLoanRecord, String childNo, BigDecimal orderChildPrice) {
log.info("13.生成借款冻结流水");
OwnerLoanAccount update = new OwnerLoanAccount();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论