提交 e9cc0df6 authored 作者: huyufan's avatar huyufan

货主还款,更新车主计费明细

上级 8e3412f2
...@@ -111,6 +111,13 @@ public class OwnerLoanAccountRunningWaterRecordDaoImpl extends BaseDaoImpl<Owner ...@@ -111,6 +111,13 @@ public class OwnerLoanAccountRunningWaterRecordDaoImpl extends BaseDaoImpl<Owner
OwnerLoanAccountRunningWaterRecordEnum.RunWaterType.APPROVE_FROZEN.getCode()) OwnerLoanAccountRunningWaterRecordEnum.RunWaterType.APPROVE_FROZEN.getCode())
); } ); }
@Override
public List<OwnerLoanAccountRunningWaterRecord> selectLoanRunningWatterRecord(Long loanNo, Integer runningWaterType) {
return baseMapper.selectList(lQrWrapper().eq(OwnerLoanAccountRunningWaterRecord::getLoanNo, loanNo)
.eq(OwnerLoanAccountRunningWaterRecord::getRunningWaterType, runningWaterType
)
); }
@Override @Override
public List<OwnerLoanAccountRunningWaterRecord> getListByChildNoAndRunningWaterType(List<String> childNoList, Integer runningWaterType) { public List<OwnerLoanAccountRunningWaterRecord> getListByChildNoAndRunningWaterType(List<String> childNoList, Integer runningWaterType) {
return baseMapper.selectList(lQrWrapper().in(OwnerLoanAccountRunningWaterRecord::getChildNo, childNoList) return baseMapper.selectList(lQrWrapper().in(OwnerLoanAccountRunningWaterRecord::getChildNo, childNoList)
......
...@@ -115,4 +115,9 @@ public class SettlementDriverDetailDaoImpl extends BaseDaoImpl<SettlementDriverD ...@@ -115,4 +115,9 @@ public class SettlementDriverDetailDaoImpl extends BaseDaoImpl<SettlementDriverD
); );
} }
@Override
public List<SettlementDriverDetail> selectListByLoanFlag(Integer code) {
return baseMapper.selectList(lQrWrapper().eq(SettlementDriverDetail::getLoanFlag, code));
}
} }
...@@ -31,6 +31,8 @@ public interface OwnerLoanAccountRunningWaterRecordDao extends BaseDao<OwnerLoan ...@@ -31,6 +31,8 @@ public interface OwnerLoanAccountRunningWaterRecordDao extends BaseDao<OwnerLoan
List<OwnerLoanAccountRunningWaterRecord> selectLoanRunningWatterRecord(Long loanNo); List<OwnerLoanAccountRunningWaterRecord> selectLoanRunningWatterRecord(Long loanNo);
List<OwnerLoanAccountRunningWaterRecord> selectLoanRunningWatterRecord(Long loanNo, Integer runningWaterType);
List<OwnerLoanAccountRunningWaterRecord> getListByChildNoAndRunningWaterType(List<String> childNoList, Integer runningWaterType); List<OwnerLoanAccountRunningWaterRecord> getListByChildNoAndRunningWaterType(List<String> childNoList, Integer runningWaterType);
} }
...@@ -37,4 +37,6 @@ public interface SettlementDriverDetailDao extends BaseDao<SettlementDriverDetai ...@@ -37,4 +37,6 @@ public interface SettlementDriverDetailDao extends BaseDao<SettlementDriverDetai
SettlementDriverDetail selectLoanFlag(String orderNo); SettlementDriverDetail selectLoanFlag(String orderNo);
SettlementDriverDetail selectLoanTypeFlag(String orderNo); SettlementDriverDetail selectLoanTypeFlag(String orderNo);
List<SettlementDriverDetail> selectListByLoanFlag(Integer code);
} }
...@@ -7,23 +7,24 @@ import com.clx.performance.component.OrderChildLoanComponent; ...@@ -7,23 +7,24 @@ import com.clx.performance.component.OrderChildLoanComponent;
import com.clx.performance.constant.RabbitKeyConstants; import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.loan.OrderChildLoanRetryRecordDao; import com.clx.performance.dao.loan.OrderChildLoanRetryRecordDao;
import com.clx.performance.dao.loan.OwnerLoanAccountRunningWaterRecordDao; import com.clx.performance.dao.loan.OwnerLoanAccountRunningWaterRecordDao;
import com.clx.performance.dao.loan.OwnerLoanRecordDao;
import com.clx.performance.dao.loan.OwnerRepaymentDao; import com.clx.performance.dao.loan.OwnerRepaymentDao;
import com.clx.performance.dao.settle.SettlementDriverDao; import com.clx.performance.dao.settle.SettlementDriverDao;
import com.clx.performance.dao.settle.SettlementDriverDetailDao; import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao; import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.dto.OwnerLoanMqDTO; 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.OwnerLoanAccountRunningWaterRecordEnum;
import com.clx.performance.enums.loan.OwnerLoanRecordEnum; import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
import com.clx.performance.enums.loan.OwnerRePaymentEnum; import com.clx.performance.enums.loan.OwnerRePaymentEnum;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.model.loan.OrderChildLoanRetryRecord; import com.clx.performance.model.loan.OrderChildLoanRetryRecord;
import com.clx.performance.model.loan.OwnerLoanAccount;
import com.clx.performance.model.loan.OwnerLoanAccountRunningWaterRecord; import com.clx.performance.model.loan.OwnerLoanAccountRunningWaterRecord;
import com.clx.performance.model.loan.OwnerLoanRecord;
import com.clx.performance.model.loan.OwnerRepayment; import com.clx.performance.model.loan.OwnerRepayment;
import com.clx.performance.model.settle.SettlementDriverDetail; import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwnerDetail; import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.service.settle.SettlementMqService; import com.clx.performance.service.settle.SettlementMqService;
import com.msl.common.base.Optional;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message; import org.springframework.amqp.core.Message;
...@@ -33,12 +34,13 @@ import org.springframework.context.ApplicationEventPublisher; ...@@ -33,12 +34,13 @@ import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.event.EventListener; import org.springframework.context.event.EventListener;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.event.TransactionPhase; import org.springframework.transaction.event.TransactionPhase;
import org.springframework.transaction.event.TransactionalEventListener; import org.springframework.transaction.event.TransactionalEventListener;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Component @Component
...@@ -66,9 +68,11 @@ public class EventListenerComponent { ...@@ -66,9 +68,11 @@ public class EventListenerComponent {
private final RabbitTemplate rabbitTemplate; private final RabbitTemplate rabbitTemplate;
private final OwnerLoanRecordDao ownerLoanRecordDao;
@Async @Async
@TransactionalEventListener(classes = {SettlementUpdateEvent.class},phase = TransactionPhase.AFTER_ROLLBACK,fallbackExecution = true) @TransactionalEventListener(classes = {SettlementUpdateEvent.class}, phase = TransactionPhase.AFTER_ROLLBACK, fallbackExecution = true)
public void listen(SettlementUpdateEvent event) { public void listen(SettlementUpdateEvent event) {
log.info("SettlementUpdateEvent事件执行"); log.info("SettlementUpdateEvent事件执行");
SettlementOwnerDetail settlementOwnerDetail = event.getSettlementOwnerDetail(); SettlementOwnerDetail settlementOwnerDetail = event.getSettlementOwnerDetail();
...@@ -101,7 +105,7 @@ public class EventListenerComponent { ...@@ -101,7 +105,7 @@ public class EventListenerComponent {
} }
@Async @Async
@TransactionalEventListener(classes = {OwnerLoanEvent.class},phase = TransactionPhase.AFTER_COMMIT,fallbackExecution = true) @TransactionalEventListener(classes = {OwnerLoanEvent.class}, phase = TransactionPhase.AFTER_COMMIT, fallbackExecution = true)
public void listen(OwnerLoanEvent event) { public void listen(OwnerLoanEvent event) {
log.info("OwnerLoanEvent事件执行"); log.info("OwnerLoanEvent事件执行");
OwnerLoanMqDTO param = event.getParam(); OwnerLoanMqDTO param = event.getParam();
...@@ -132,23 +136,43 @@ public class EventListenerComponent { ...@@ -132,23 +136,43 @@ public class EventListenerComponent {
public void listen(OwnerLoanFlagEvent event) { public void listen(OwnerLoanFlagEvent event) {
log.info("OwnerLoanFlagEvent事件执行"); log.info("OwnerLoanFlagEvent事件执行");
Long loanNo = event.getLoanNo(); Long loanNo = event.getLoanNo();
List<OwnerLoanAccountRunningWaterRecord> records = ownerLoanAccountRunningWaterRecordDao.selectLoanRunningWatterRecord(loanNo); List<OwnerLoanAccountRunningWaterRecord> records = ownerLoanAccountRunningWaterRecordDao.selectLoanRunningWatterRecord
if (CollectionUtil.isEmpty(records)) { (loanNo, OwnerLoanAccountRunningWaterRecordEnum.RunWaterType.APPROVE_CHILD_WRITE_OFF.getCode());
return;
}
Map<String, List<OwnerLoanAccountRunningWaterRecord>> listMap = records.stream().collect(Collectors.groupingBy(OwnerLoanAccountRunningWaterRecord::getChildNo)); Map<String, List<OwnerLoanAccountRunningWaterRecord>> listMap = records.stream().collect(Collectors.groupingBy(OwnerLoanAccountRunningWaterRecord::getChildNo));
List<String> childNoList = new LinkedList<>(); List<String> childNoList = new LinkedList<>();
for (Map.Entry<String, List<OwnerLoanAccountRunningWaterRecord>> entry : listMap.entrySet()) { for (Map.Entry<String, List<OwnerLoanAccountRunningWaterRecord>> entry : listMap.entrySet()) {
if (entry.getValue().size() == 1) { if (entry.getValue().size() == 1) {
childNoList.add(entry.getKey()); childNoList.add(entry.getKey());
} else { } else {
log.info("当前运单:{} 存在多条运单流水记录,无法更新运单的贷款标识",entry.getKey()); boolean flag = true;
for (OwnerLoanAccountRunningWaterRecord record : entry.getValue()) {
if (record.getLoanNo().equals(loanNo)) {
continue;
}
Optional<OwnerRepayment> optional = ownerRepaymentDao.getOneByField(OwnerRepayment::getLoanNo, record.getLoanNo());
if (!optional.isPresent()) {
//没有还款记录
flag = false;
break;
} else {
OwnerRepayment ownerRepayment = optional.get();
//其他流水记录对应的还款单不是付款成功
if (!ownerRepayment.getStatus().equals(OwnerRePaymentEnum.Status.PAY_SUCCESS.getCode())) {
log.info("当前运单号{},对应多条流水,其中流水号:{},对应的还款单号{},未还款", entry.getKey(), record.getRunningWaterNo(), ownerRepayment.getRepaymentNo());
flag = false;
break;
}
}
}
if (flag) {
childNoList.add(entry.getKey());
}
} }
} }
log.info("当前需要更新的运单数量:{}", listMap.size());
log.info("需要更新计费明细借款标识为已还款的运单号:{}", JSONUtil.parse(childNoList));
if (CollectionUtil.isNotEmpty(childNoList)) { if (CollectionUtil.isNotEmpty(childNoList)) {
settlementDriverDetailDao.updateLoanFlagByChildNoList(childNoList); settlementDriverDetailDao.updateLoanFlagByChildNoList(childNoList);
settlementDriverDao.updateLoanFlagByChildNoList(childNoList); settlementDriverDao.updateLoanFlagByChildNoList(childNoList);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论