提交 10c62137 authored 作者: liuhaiquan's avatar liuhaiquan

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

......@@ -139,6 +139,7 @@ public enum PerformanceResultEnum implements ResultEnum {
OWNER_LOAN_RECORD_PAY_STATUS_ERROR(1850, "状态已变更无法支付"),
OWNER_LOAN_RECORD_CANCEL_STATUS_ERROR(1851, "状态已变更无法取消"),
OWNER_LOAN_RECORD_ADJUST_STATUS_ERROR(1851, "状态已变更无法核销"),
OWNER_LOAN_RECORD_PAY_WAIT_ERROR(1852,"当前借款单状态不是待付款"),
OWNER_LOAN_PAYMENT_STATUS_ERROR(1851, "状态已变变更"),
......
......@@ -99,14 +99,14 @@ public class OrderChildLoanComponent {
if (OrderGoodsOverWeightEnum.NO.getCode().equals(overWeight)) {
log.info("3.进行标吨判断");
determine(quotationDetailVO.getPlatformFreightQuotation().multiply(new BigDecimal(35)), ownerInfoFeignVO, orderGoods, childNo, overWeight);
determine(quotationDetailVO.getPlatformFreightQuotation().multiply(new BigDecimal(35)), ownerInfoFeignVO, orderGoods, childNo, overWeight, quotationDetailVO.getPlatformFreightQuotation());
} else {
log.info("3.进行超吨判断");
determine(quotationDetailVO.getPlatformFreightQuotation().multiply(new BigDecimal(50)), ownerInfoFeignVO, orderGoods, childNo, overWeight);
determine(quotationDetailVO.getPlatformFreightQuotation().multiply(new BigDecimal(50)), ownerInfoFeignVO, orderGoods, childNo, overWeight, quotationDetailVO.getPlatformFreightQuotation());
}
}
public void determine(BigDecimal orderChildPrice, OwnerInfoFeignVO ownerInfoFeignVO, OrderGoods orderGoods, String childNo, Integer overWeight) {
public void determine(BigDecimal orderChildPrice, OwnerInfoFeignVO ownerInfoFeignVO, OrderGoods orderGoods, String childNo, Integer overWeight, BigDecimal platPrice) {
log.info("4.预估运费{},货主{},订单号{},运单号{}", orderChildPrice, ownerInfoFeignVO.getUserNo(), orderGoods.getOrderNo(), childNo);
List<OwnerRunningWaterRecord> runningWaterRecordList = ownerRunningWaterRecordDao.getOwnerRunningWaterRecord(orderGoods.getOrderNo());
BigDecimal frozen = runningWaterRecordList.stream().filter(item -> {
......@@ -131,10 +131,11 @@ public class OrderChildLoanComponent {
size = orderChildList.size();
}
if (OrderGoodsOverWeightEnum.NO.getCode().equals(overWeight)) {
orderChildSum = orderGoods.getPendingOrderFreight().multiply(new BigDecimal(35)).multiply(new BigDecimal(size));
orderChildSum = platPrice.multiply(new BigDecimal(35)).multiply(new BigDecimal(size));
} else {
orderChildSum = orderGoods.getPendingOrderFreight().multiply(new BigDecimal(50)).multiply(new BigDecimal(size));
orderChildSum = platPrice.multiply(new BigDecimal(50)).multiply(new BigDecimal(size));
}
log.info("5.1 查询未结算运单, 运单数量{},订单号{}", size, orderGoods.getOrderNo());
BigDecimal ans = subtract.subtract(orderChildSum);
log.info("6.当前订单冻结的预付运费还有剩余, 查询查询未结算的运单(没有产生扣除流水的运单)总计{},订单冻结预付运费剩余{}", orderChildSum, subtract);
......
......@@ -56,7 +56,7 @@ public class CarrierOwnerRepaymentController {
@ApiOperation(value = "核销",notes = "<br>By:姜文业")
@GetMapping("/adjust")
public Result<Object> adjust(@RequestParam("id") @NotNull(message = "id不能为空") Integer id) {
ownerRepaymentService.adjust(id);
return Result.ok();
}
......
......@@ -17,7 +17,7 @@ import java.util.List;
public class OrderChildLoanRetryRecordDaoImpl extends BaseDaoImpl<OrderChildLoanRetryRecordMapper, OrderChildLoanRetryRecord, Integer> implements OrderChildLoanRetryRecordDao {
@Override
public List<OrderChildLoanRetryRecord> selectListByIdAsc() {
return baseMapper.selectList(lQrWrapper().orderByAsc(OrderChildLoanRetryRecord::getId));
public List<OrderChildLoanRetryRecord> selectListByOwnerUserNoAndIdAsc(Long userNo) {
return baseMapper.selectList(lQrWrapper().eq(OrderChildLoanRetryRecord::getOwnerUserNo, userNo).orderByAsc(OrderChildLoanRetryRecord::getId));
}
}
......@@ -75,6 +75,11 @@ public class OwnerRepaymentDaoImpl extends BaseDaoImpl<OwnerRepaymentMapper, Own
.set(OwnerRepayment::getStatus, ownerRepayment.getStatus())
.set(OwnerRepayment::getRunningWaterOpenNo,ownerRepayment.getRunningWaterOpenNo())
.set(OwnerRepayment::getMerchantRunningWaterNo,ownerRepayment.getMerchantRunningWaterNo())
.set(OwnerRepayment::getPayChannel,ownerRepayment.getPayChannel())
.set(OwnerRepayment::getPayment,ownerRepayment.getPayment())
.set(OwnerRepayment::getPaymentAccount,ownerRepayment.getPaymentAccount())
);
}
......
......@@ -13,5 +13,5 @@ import java.util.List;
*/
public interface OrderChildLoanRetryRecordDao extends BaseDao<OrderChildLoanRetryRecordMapper, OrderChildLoanRetryRecord, Integer> {
List<OrderChildLoanRetryRecord> selectListByIdAsc();
List<OrderChildLoanRetryRecord> selectListByOwnerUserNoAndIdAsc(Long userNo);
}
......@@ -31,6 +31,7 @@ public class EventListenerComponent {
@EventListener(classes = {SettlementUpdateEvent.class})
public void listen(SettlementUpdateEvent event) {
log.info("SettlementUpdateEvent事件执行");
SettlementOwnerDetail settlementOwnerDetail = event.getSettlementOwnerDetail();
SettlementDriverDetail settlementDriverDetail = event.getSettlementDriverDetail();
log.info("当前货主结算信息{},车主结算信息:{}", JSONUtil.parse(settlementOwnerDetail), JSONUtil.parse(settlementDriverDetail));
......@@ -40,12 +41,14 @@ public class EventListenerComponent {
OrderChildLoanRetryRecord entity = new OrderChildLoanRetryRecord();
entity.setSettlementOwnerId(settlementOwnerDetail.getId());
entity.setSettlementDriverId(settlementDriverDetail.getId());
entity.setOwnerUserNo(settlementOwnerDetail.getOwnerUserNo());
// 保存重试记录
orderChildLoanRetryRecordDao.saveEntity(entity);
}
@EventListener(classes = {OwnerRepaymentUpdateEvent.class})
public void listen(OwnerRepaymentUpdateEvent event) {
log.info("OwnerRepaymentUpdateEvent事件执行");
OwnerRepayment update = new OwnerRepayment();
update.setId(event.getId());
update.setBeOverdue(OwnerRePaymentEnum.BeOverdue.YES.getCode());
......
......@@ -49,12 +49,14 @@ public class OwnerLoanListener {
//生成借款标识
orderChildLoanComponent.childLoanConfirmAfterProcess(settlementDriverDetail, settlementOwnerDetail, orderChild);
} catch (Exception e) {
log.error("处理货主借款监听器执行异常,数据为{}", message, e);
//未借款
settlementDriverDetail.setLoanFlag(OwnerLoanRecordEnum.LoanFlag.NO_LOAN.getCode());
applicationEventPublisher.publishEvent(new SettlementUpdateEvent(this, settlementDriverDetail, settlementOwnerDetail));
log.error("处理货主借款监听器执行异常,数据为{}", message, e);
return;
}
log.info("处理货主借款监听器执行成功");
settlementOwnerDetailDao.updateInvoiceType(settlementOwnerDetail);
settlementDriverDetailDao.updateInvoiceTypeAndPrepayFreightFlag(settlementDriverDetail);
......
......@@ -27,6 +27,10 @@ public class OrderChildLoanRetryRecord implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@TableField("owner_user_no")
@ApiModelProperty("货主编号")
private Long ownerUserNo;
@TableField("settlement_driver_id")
@ApiModelProperty("车主计费主键")
private Integer settlementDriverId;
......
......@@ -3,9 +3,11 @@ package com.clx.performance.service.impl.loan;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.loan.OwnerLoanAccountApproveDao;
import com.clx.performance.dao.loan.OwnerLoanAccountDao;
import com.clx.performance.enums.OwnerAccountEnum;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.loan.OwnerLoanAccountApproveEnum;
import com.clx.performance.model.loan.OwnerLoanAccount;
import com.clx.performance.model.loan.OwnerLoanAccountApprove;
import com.clx.performance.param.pc.loan.carrier.OwnerLoanAccountApproveParam;
import com.clx.performance.param.pc.loan.carrier.PageOwnerLoanAccountApproveParam;
......@@ -13,6 +15,8 @@ import com.clx.performance.service.loan.OwnerLoanAccountApproveService;
import com.clx.performance.service.loan.OwnerLoanAccountService;
import com.clx.performance.struct.loan.OwnerLoanAccountApproveStruct;
import com.clx.performance.vo.pc.loan.carrier.OwnerLoanAccountApproveVO;
import com.msl.common.base.Optional;
import com.msl.common.exception.ServiceSystemException;
import com.msl.user.data.UserSessionData;
import com.msl.user.utils.TokenUtil;
import lombok.AllArgsConstructor;
......@@ -38,6 +42,7 @@ public class OwnerLoanAccountApproveServiceImpl implements OwnerLoanAccountAppr
private final OwnerLoanAccountApproveStruct ownerLoanAccountApproveStruct;
private final OwnerLoanAccountService ownerLoanAccountService;
private final OwnerLoanAccountDao ownerLoanAccountDao;
@Override
public IPage<OwnerLoanAccountApproveVO> pageOwnerLoanAccountApprove(PageOwnerLoanAccountApproveParam param) {
IPage<OwnerLoanAccountApprove> page = ownerLoanAccountApproveDao.pageOwnerLoanAccountApprove(param);
......@@ -61,6 +66,12 @@ public class OwnerLoanAccountApproveServiceImpl implements OwnerLoanAccountAppr
@Override
public void openOwnerLoanAccountApprove() {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
Optional<OwnerLoanAccount> optional = ownerLoanAccountDao.getOneByField(OwnerLoanAccount::getOwnerUserNo,
loginUserInfo.getUserNo());
if(optional.isPresent()){
throw new ServiceSystemException(PerformanceResultEnum.DATA_NOT_FIND,"您已经申请过借款用户,请勿重复申请");
}
OwnerLoanAccountApprove entity = new OwnerLoanAccountApprove();
entity.setAccountType(OwnerAccountEnum.AccountTypeStatus.LOAN_ACCOUNT.getCode());
entity.setOwnerUserNo(loginUserInfo.getUserNo());
......
......@@ -14,6 +14,7 @@ import com.clx.performance.enums.loan.BankTradeEnum;
import com.clx.performance.enums.loan.OwnerLoanAccountApproveEnum;
import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
import com.clx.performance.enums.loan.OwnerRePaymentEnum;
import com.clx.performance.extranal.user.OwnerInfoService;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.breakcontract.BreakContractSettlementDriver;
import com.clx.performance.model.loan.*;
......@@ -27,6 +28,7 @@ import com.clx.performance.struct.loan.OwnerLoanAccountStruct;
import com.clx.performance.vo.pc.loan.carrier.CarrierOwnerLoanAccountVO;
import com.clx.performance.vo.pc.loan.owner.OwnerAccountVO;
import com.clx.performance.vo.pc.nbbank.NbBankOrderPayResultVO;
import com.clx.user.vo.feign.OwnerInfoFeignVO;
import com.msl.common.base.Optional;
import com.msl.common.convertor.aspect.UnitCovert;
import com.msl.user.data.UserSessionData;
......@@ -58,15 +60,7 @@ public class OwnerLoanAccountServiceImpl implements OwnerLoanAccountService {
private final OwnerLoanAccountStruct ownerLoanAccountStruct;
private final OrderChildDao orderChildDao;
private final SettlementDriverDetailDao settlementDriverDetailDao;
private final SettlementOwnerDetailDao settlementOwnerDetailDao;
private final OrderChildLoanRetryRecordDao orderChildLoanRetryRecordDao;
private final RabbitTemplate rabbitTemplate;
private final OwnerInfoService ownerInfoService;
private final OwnerRepaymentDao ownerRepaymentDao;
......@@ -140,6 +134,10 @@ public class OwnerLoanAccountServiceImpl implements OwnerLoanAccountService {
bankTrade.setTradeType(BankTradeEnum.TradeType.ORDER_TRANSFER_PAY.getCode());
}
ownerRepayment.setStatus(OwnerLoanRecordEnum.Status.PAYING.getCode());
ownerRepayment.setPayChannel(param.getPayChannel());
OwnerInfoFeignVO ownerInfo = ownerInfoService.getOwnerInfo(TokenUtil.getLoginUserInfo().getUserNo());
ownerRepayment.setPayment(ownerInfo.getName());
ownerRepayment.setPaymentAccount(ownerInfo.getOwnerBankAccount());
// 更新还款支付信息
ownerRepaymentDao.updateRePay(ownerRepayment);
......@@ -147,8 +145,8 @@ public class OwnerLoanAccountServiceImpl implements OwnerLoanAccountService {
bankTrade.setRelationNo(ownerRepayment.getRepaymentNo().toString());
bankTrade.setOrderType(BankTradeEnum.OrderType.OWNER_LOAN_RECORD.getCode());
bankTrade.setAmount(ownerLoanRecord.getLoanBalance());
bankTrade.setMerchantRunningWaterNo(ownerLoanRecord.getMerchantRunningWaterNo());
bankTrade.setRunningWaterOpenNo(ownerLoanRecord.getRunningWaterOpenNo());
bankTrade.setMerchantRunningWaterNo(ownerRepayment.getMerchantRunningWaterNo());
bankTrade.setRunningWaterOpenNo(ownerRepayment.getRunningWaterOpenNo());
bankTrade.setRemark("还款单");
// 保存银行交易记录
bankTradeDao.saveEntity(bankTrade);
......
......@@ -225,6 +225,9 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
initOwnerLoanRunningWaterRecord(ownerLoanRecord);
//生成还款记录
initOwnerRepayment(ownerLoanRecord);
//执行货主未处理借款标志的计费(运单确认生成后因为借款不够阻塞流程的相关计费进行处理)
orderChildLoanProcess(ownerLoanRecord.getOwnerUserNo());
break;
}
}
......@@ -326,7 +329,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
ownerRepayment.setCreateBy(ownerLoanRecord.getOwnerUserName());
ownerRepayment.setRepaymentBalance(ownerLoanRecord.getLoanBalance());
ownerRepayment.setRepaymentNo(idGenerateSnowFlake.nextId(2L));
ownerRepayment.setGoodsName("运费");
ownerRepayment.setPayee(ownerLoanRecord.getPayee());
ownerRepayment.setPayeeAccount(ownerLoanRecord.getPayeeAccount());
......@@ -379,7 +382,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
PerformanceResultEnum.DATA_NOT_FIND);
CarrierCashierInfoVO vo = ownerLoanRecordStruct.convertCashierInfo(ownerLoanRecord);
Borrower borrower = borrowerDao.getEntityByKey(ownerLoanRecord.getBorrowerId()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
if (Objects.equals(borrower.getDeleteStatus(), DeleteStatusEnum.NO.getCode())) {
if (Objects.equals(borrower.getDeleteStatus(), DeleteStatusEnum.YES.getCode())) {
throw new ServiceSystemException(PerformanceResultEnum.DATA_NOT_FIND);
}
vo.setOrderPayWay(false);
......@@ -625,7 +628,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
*/
@Override
public void orderChildLoanProcess(Long ownerUserNo) {
List<OrderChildLoanRetryRecord> orderChildLoanRetryRecordList = orderChildLoanRetryRecordDao.selectListByIdAsc();
List<OrderChildLoanRetryRecord> orderChildLoanRetryRecordList = orderChildLoanRetryRecordDao.selectListByOwnerUserNoAndIdAsc(ownerUserNo);
for (OrderChildLoanRetryRecord retryRecord : orderChildLoanRetryRecordList) {
//生成借款标识
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao.getEntityByKey(retryRecord.getSettlementDriverId()).get();
......
......@@ -85,5 +85,6 @@ public class OwnerPaymentServiceImpl implements OwnerPaymentService {
ownerPayment.setStatus(OwnerPaymentEnum.Status.PAYING.getCode());
ownerPaymentDao.updateStatusAndMerchantRunningWaterNo(ownerPayment);
}
}
}
......@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.message.feign.ClxMessageOpenapiFeign;
import com.clx.message.req.message.AliSmsMessageReq;
import com.clx.order.enums.ResultEnum;
import com.clx.performance.component.IdGenerateSnowFlake;
import com.clx.performance.config.ClxMessageConfig;
import com.clx.performance.config.loan.ClxPayeeConfig;
......@@ -309,5 +310,22 @@ public class OwnerRepaymentServiceImpl implements OwnerRepaymentService {
ownerRepaymentDao.updateStatusById(ownerRepayment);
}
@Override
public void adjust(Integer id) {
OwnerRepayment ownerRepayment = ownerRepaymentDao.getEntityByKey(id).orElseThrow(ResultEnum.DATA_NOT_FIND);
if (!ownerRepayment.getStatus().equals(OwnerRePaymentEnum.Status.PAYING.getCode())) {
log.info("还款记录状态异常,不是付款中,不能核销");
throw new ServiceSystemException(PerformanceResultEnum.OWNER_LOAN_RECORD_ADJUST_STATUS_ERROR);
}
NbBankOrderResultVO resultVO = bankService.adjust(ownerRepayment.getMerchantRunningWaterNo(),ownerRepayment.getRepaymentBalance().intValue());
if(Objects.equals(resultVO.getStatus(),NbBankStatusEnum.Status.SUCCESS.getCode())){
ownerRepayment.setStatus(OwnerRePaymentEnum.Status.PAY_SUCCESS.getCode());
}else{
ownerRepayment.setStatus(OwnerRePaymentEnum.Status.PAY_FAIL.getCode());
}
// 更新借款信息
ownerRepaymentDao.updateStatusById(ownerRepayment);
}
}
......@@ -76,14 +76,14 @@ public class NbBankServiceImpl implements NbBankService {
/**
* 订单支付
* @param loanNo 借款单号
* @param no 单号
* @param amount 金额分
* @param payAcctOpenBankId 开户行号
* @param payAcctNo 付款账号
* @param payAcctNm 付款户名
*/
@Override
public NbBankOrderPayResultVO orderDirectPay(Long loanNo, String remark, Integer amount,
public NbBankOrderPayResultVO orderDirectPay(Long no, String remark, Integer amount,
String payAcctOpenBankId, String payAcctNo, String payAcctNm) {
String merSeqNo = idGenerateSnowFlake.nextIdToString(1L);
......@@ -94,7 +94,7 @@ public class NbBankServiceImpl implements NbBankService {
String transSeqNo = data.getString("transSeqNo");
if (StringUtils.isBlank(transSeqNo)) {
log.info("宁波银行订单支付失败,单号{},返回结果:{}", loanNo, data);
log.info("宁波银行订单支付失败,单号{},返回结果:{}", no, data);
throw new ServiceSystemException(PerformanceResultEnum.NB_BANK_ORDER_PAY_ERROR);
}
NbBankOrderPayResultVO result = new NbBankOrderPayResultVO();
......
......@@ -40,4 +40,6 @@ public interface OwnerRepaymentService {
void paySuccess(String merSeqNo);
void payFail(String merSeqNo);
void adjust(Integer id);
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论