提交 04a81113 authored 作者: huyufan's avatar huyufan

bug处理

上级 cf5a92a4
......@@ -205,4 +205,21 @@ public class RabbitBeanConfig {
}
/**
* 货主借款冻结释放队列
* @return
*/
@Bean
public Queue ownerLoanThawQueue() {
return new Queue(RabbitKeyConstants.OWNER_LOAN_THAW_QUEUE, true, false, false);
}
/**
* 货主还款bind
* @return
*/
@Bean
public Binding ownerLoanThawBind() {
return BindingBuilder.bind(ownerLoanThawQueue()).to(ownerLoanExchange()).with(RabbitKeyConstants.OWNER_LOAN_THAW_ROUTE_KEY);
}
}
......@@ -90,9 +90,9 @@ public class RabbitKeyConstants {
public static final String OWNER_LOAN_PAY_QUEUE ="clx-performance.loan.pay.queue";
public static final String OWNER_LOAN_ROUTE_KEY ="clx-performance.loan.route.key";
public static final String OWNER_LOAN_THAW_ROUTE_KEY ="clx-performance.loan.thaw.route.key";
public static final String OWNER_LOAN_QUEUE ="clx-performance.loan.queue";
public static final String OWNER_LOAN_THAW_QUEUE ="clx-performance.loan.thaw.queue";
public static final String OWNER_REPAYMENT_QUEUE ="clx-performance.owner.repayment.queue";
public static final String OWNER_REPAYMENT_ROUTE_KEY ="clx-performance.owner.repayment.route.key";
......
......@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.exceptions.ExceptionUtil;
import cn.hutool.json.JSONUtil;
import com.clx.performance.component.OrderChildLoanComponent;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.loan.OrderChildLoanRetryRecordDao;
import com.clx.performance.dao.loan.OwnerLoanAccountRunningWaterRecordDao;
import com.clx.performance.dao.loan.OwnerRepaymentDao;
......@@ -11,6 +12,7 @@ import com.clx.performance.dao.settle.SettlementDriverDao;
import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.dto.OwnerLoanMqDTO;
import com.clx.performance.enums.loan.BankTradeEnum;
import com.clx.performance.enums.loan.OwnerLoanAccountRunningWaterRecordEnum;
import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
import com.clx.performance.enums.loan.OwnerRePaymentEnum;
......@@ -24,6 +26,9 @@ import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.service.settle.SettlementMqService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.event.EventListener;
import org.springframework.scheduling.annotation.Async;
......@@ -35,6 +40,7 @@ import org.springframework.transaction.event.TransactionalEventListener;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
......@@ -61,6 +67,8 @@ public class EventListenerComponent {
private final OwnerLoanAccountRunningWaterRecordDao ownerLoanAccountRunningWaterRecordDao;
private final RabbitTemplate rabbitTemplate;
@EventListener(classes = {SettlementUpdateEvent.class})
public void listen(SettlementUpdateEvent event) {
......@@ -177,33 +185,12 @@ public class EventListenerComponent {
public void listen(OwnerLoanThawEvent event) {
log.info("OwnerLoanThawEvent事件执行");
log.info("需要解冻借款的的运单号:{}", event.getChildNo());
Message message = MessageBuilder.withBody(event.getChildNo().getBytes()).build();
List<OwnerLoanAccountRunningWaterRecord> runningWaterRecordList = ownerLoanAccountRunningWaterRecordDao.getListByChildNoAndRunningWaterType(event.getChildNo());
if (CollectionUtil.isEmpty(runningWaterRecordList)) {
return;
}
Map<Integer, List<OwnerLoanAccountRunningWaterRecord>> listMap = runningWaterRecordList.stream().collect(Collectors.groupingBy(OwnerLoanAccountRunningWaterRecord::getRunningWaterType));
List<OwnerLoanAccountRunningWaterRecord> thawRecord = listMap.get(OwnerLoanAccountRunningWaterRecordEnum.RunWaterType.APPROVE_THAW.getCode());
if (CollectionUtil.isNotEmpty(thawRecord)) {
log.info("3.1 有借款解冻记录,说明是是重复记录,直接返回");
return;
} else {
runningWaterRecordList = listMap.get(OwnerLoanAccountRunningWaterRecordEnum.RunWaterType.APPROVE_FROZEN.getCode());
}
Long ownerUserNo = runningWaterRecordList.get(0).getOwnerUserNo();
log.info("当前解冻货主:{},流水记录长度{},流水记录{}", ownerUserNo, runningWaterRecordList.size(), JSONUtil.parse(runningWaterRecordList));
for (OwnerLoanAccountRunningWaterRecord record : runningWaterRecordList) {
Long loanNo = record.getLoanNo();
Integer loanType = record.getLoanType();
String ownerUserName = record.getOwnerUserName();
String childNo = record.getChildNo();
BigDecimal balance = record.getAlterationBalance();
//解冻借款
orderChildLoanComponent.thawOwnerLoanAccount(loanNo, loanType, ownerUserNo, record.getMobile(), ownerUserName, childNo, balance);
}
rabbitTemplate.send(
RabbitKeyConstants.OWNER_LOAN_EXCHANGE, RabbitKeyConstants.OWNER_LOAN_THAW_ROUTE_KEY, message
);
}
}
package com.clx.performance.listener;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONUtil;
import com.clx.performance.component.OrderChildLoanComponent;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.loan.OwnerLoanAccountRunningWaterRecordDao;
import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.dto.OwnerLoanMqDTO;
import com.clx.performance.enums.loan.OwnerLoanAccountRunningWaterRecordEnum;
import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
import com.clx.performance.event.SettlementUpdateEvent;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.loan.OwnerLoanAccountRunningWaterRecord;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.service.settle.SettlementMqService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Component;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 处理货主借款冻结释放监听器
*/
@Slf4j
@Component
@AllArgsConstructor
public class OwnerLoanAccountThawListener {
private final OrderChildLoanComponent orderChildLoanComponent;
private final OwnerLoanAccountRunningWaterRecordDao ownerLoanAccountRunningWaterRecordDao;
@RabbitListener(queues = RabbitKeyConstants.OWNER_LOAN_THAW_QUEUE)
public void onMessage(String message) {
log.info("货主借款冻结释放监听器{}", message);
List<OwnerLoanAccountRunningWaterRecord> runningWaterRecordList = ownerLoanAccountRunningWaterRecordDao.getListByChildNoAndRunningWaterType(message);
if (CollectionUtil.isEmpty(runningWaterRecordList)) {
return;
}
Map<Integer, List<OwnerLoanAccountRunningWaterRecord>> listMap = runningWaterRecordList.stream().collect(Collectors.groupingBy(OwnerLoanAccountRunningWaterRecord::getRunningWaterType));
List<OwnerLoanAccountRunningWaterRecord> thawRecord = listMap.get(OwnerLoanAccountRunningWaterRecordEnum.RunWaterType.APPROVE_THAW.getCode());
if (CollectionUtil.isNotEmpty(thawRecord)) {
log.info("3.1 有借款解冻记录,说明是是重复记录,直接返回");
return;
} else {
runningWaterRecordList = listMap.get(OwnerLoanAccountRunningWaterRecordEnum.RunWaterType.APPROVE_FROZEN.getCode());
}
Long ownerUserNo = runningWaterRecordList.get(0).getOwnerUserNo();
log.info("当前解冻货主:{},流水记录长度{},流水记录{}", ownerUserNo, runningWaterRecordList.size(), JSONUtil.parse(runningWaterRecordList));
for (OwnerLoanAccountRunningWaterRecord record : runningWaterRecordList) {
Long loanNo = record.getLoanNo();
Integer loanType = record.getLoanType();
String ownerUserName = record.getOwnerUserName();
String childNo = record.getChildNo();
BigDecimal balance = record.getAlterationBalance();
//解冻借款
orderChildLoanComponent.thawOwnerLoanAccount(loanNo, loanType, ownerUserNo, record.getMobile(), ownerUserName, childNo, balance);
}
}
}
//package com.clx.performance.listener;
//
//import cn.hutool.json.JSONUtil;
//import com.clx.performance.component.OrderChildLoanComponent;
//import com.clx.performance.constant.RabbitKeyConstants;
//import com.clx.performance.dao.settle.SettlementDriverDetailDao;
//import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
//import com.clx.performance.dto.OwnerLoanMqDTO;
//import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
//import com.clx.performance.event.SettlementUpdateEvent;
//import com.clx.performance.model.OrderChild;
//import com.clx.performance.model.settle.SettlementDriverDetail;
//import com.clx.performance.model.settle.SettlementOwnerDetail;
//import com.clx.performance.service.settle.SettlementMqService;
//import lombok.AllArgsConstructor;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.amqp.rabbit.annotation.RabbitListener;
//import org.springframework.context.ApplicationEventPublisher;
//import org.springframework.stereotype.Component;
//import org.springframework.transaction.PlatformTransactionManager;
//import org.springframework.transaction.TransactionDefinition;
//import org.springframework.transaction.TransactionStatus;
//
///**
// * 处理货主借款监听器
// */
//@Slf4j
//@Component
//@AllArgsConstructor
//public class OwnerLoanListener {
//
// private final OrderChildLoanComponent orderChildLoanComponent;
//
// private final SettlementMqService settlementMqService;
//
// private final ApplicationEventPublisher applicationEventPublisher;
//
// private final SettlementOwnerDetailDao settlementOwnerDetailDao;
//
// private final SettlementDriverDetailDao settlementDriverDetailDao;
//
// private final PlatformTransactionManager platformTransactionManager;
//
// private final TransactionDefinition transactionDefinition;
//
// @RabbitListener(queues = RabbitKeyConstants.OWNER_LOAN_QUEUE)
// public void onMessage(String message) {
// TransactionStatus transactionStatus = platformTransactionManager.getTransaction(transactionDefinition);
//
// log.info("处理货主借款监听器执行,数据为{}", message);
// OwnerLoanMqDTO param = JSONUtil.toBean(message, OwnerLoanMqDTO.class);
// SettlementOwnerDetail settlementOwnerDetail = param.getSettlementOwnerDetail();
// SettlementDriverDetail settlementDriverDetail = param.getSettlementDriverDetail();
// OrderChild orderChild = param.getOrderChild();
//
// try {
// //生成借款标识
// orderChildLoanComponent.childLoanConfirmAfterProcess(settlementDriverDetail, settlementOwnerDetail, orderChild);
// } catch (Exception e) {
// //未借款
// settlementDriverDetail.setLoanFlag(OwnerLoanRecordEnum.LoanFlag.NO_LOAN.getCode());
// applicationEventPublisher.publishEvent(new SettlementUpdateEvent(this, settlementDriverDetail, settlementOwnerDetail));
// log.error("处理货主借款监听器执行异常,数据为{}", message, e);
// platformTransactionManager.commit(transactionStatus);
//
// return;
// }
// log.info("处理货主借款监听器执行成功");
// settlementOwnerDetailDao.updateInvoiceType(settlementOwnerDetail);
// settlementDriverDetailDao.updateInvoiceTypeAndPrepayFreightFlag(settlementDriverDetail);
//
// // 发送mq 通过开票标识
// settlementMqService.invoiceTypeSync(settlementDriverDetail.getChildNo(), settlementDriverDetail.getInvoiceType());
// platformTransactionManager.commit(transactionStatus);
//
// }
//}
......@@ -771,6 +771,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
waterRecord.setLoanType(ownerLoanRecord.getLoanType());
waterRecord.setRunningWaterNo(idGenerateSnowFlake.nextId(1L));
waterRecord.setChildNo(childNo);
waterRecord.setCreateTime(LocalDateTime.now());
waterRecord.setRunningWaterType(OwnerLoanAccountRunningWaterRecordEnum.RunWaterType.APPROVE_FROZEN.getCode());
waterRecord.setAlterationBalance(orderChildPrice);
OwnerLoanAccount account = ownerLoanAccountDao.getOneByField(OwnerLoanAccount::getOwnerUserNo,
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论