提交 a31b018f authored 作者: liuhaiquan's avatar liuhaiquan

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

Merge remote-tracking branch 'origin/v10.7_borrowing_and_repayment_20240118' into v10.7_borrowing_and_repayment_20240118
......@@ -63,6 +63,10 @@ public class CarrierPageSettlementDriverDetailVO {
private Integer prepayFreightFlag;
@ApiModelProperty(value = "借款标示 0:未借款 1:已借款 2:已还款")
private Integer loanFlag;
@ApiModelProperty(value = "借款标示 0:未借款 1:已借款 2:已还款")
private Integer loanFlagMsg;
@MoneyOutConvert
@ApiModelProperty(value = "结算金额")
private BigDecimal settlementFreight;
......
......@@ -62,6 +62,10 @@ public class CarrierPageSettlementDriverVO {
private Integer prepayFreightFlag;
@ApiModelProperty(value = "借款标示 0:未借款 1:已借款 2:已还款")
private Integer loanFlag;
@ApiModelProperty(value = "借款标示 0:未借款 1:已借款 2:已还款")
private Integer loanFlagMsg;
@MoneyOutConvert
@ApiModelProperty(value = "结算金额")
private BigDecimal settlementFreight;
......
......@@ -157,7 +157,7 @@ public class OrderChildLoanComponent {
if (ownerLoanAccountSum.compareTo(orderChildPrice) < 0) {
log.info("9.当前货主借款账户总计{},小于预估运费{}", ownerLoanAccountSum, orderChildPrice);
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_SAVE_FAIL, "货主已欠款");
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_SAVE_FAIL, "货主货款不足");
}
//借款账户钱够,判断是否逾期
log.info("10.借款账户钱够,判断是否逾期");
......@@ -182,6 +182,7 @@ public class OrderChildLoanComponent {
* @param settlementDriverDetail
* @param settlementOwnerDetail
*/
@Transactional(rollbackFor = Exception.class)
public void childLoanConfirmAfterProcess(SettlementDriverDetail settlementDriverDetail, SettlementOwnerDetail settlementOwnerDetail, OrderChild orderChild) {
log.info("1.运单确认收货后借款相关处理执行");
......
......@@ -187,21 +187,6 @@ public class RabbitBeanConfig {
return BindingBuilder.bind(ownerLoanPayQueue()).to(ownerLoanExchange()).with(RabbitKeyConstants.OWNER_LOAN_PAY_ROUTE_KEY);
}
/**
* 货主借款队列
* @return
*/
@Bean
public Queue ownerLoanQueue() {
return new Queue(RabbitKeyConstants.OWNER_LOAN_QUEUE, true, false, false);
}
@Bean
public Binding ownerLoanBind() {
return BindingBuilder.bind(ownerLoanQueue()).to(ownerLoanExchange()).with(RabbitKeyConstants.OWNER_LOAN_ROUTE_KEY);
}
/**
* 货主还款队列
* @return
......@@ -216,7 +201,7 @@ public class RabbitBeanConfig {
*/
@Bean
public Binding ownerRepaymentBind() {
return BindingBuilder.bind(ownerLoanQueue()).to(ownerLoanExchange()).with(RabbitKeyConstants.OWNER_REPAYMENT_ROUTE_KEY);
return BindingBuilder.bind(ownerRepaymentQueue()).to(ownerLoanExchange()).with(RabbitKeyConstants.OWNER_REPAYMENT_ROUTE_KEY);
}
......
package com.clx.performance.event;
import cn.hutool.core.exceptions.ExceptionUtil;
import cn.hutool.json.JSONUtil;
import com.clx.performance.component.OrderChildLoanComponent;
import com.clx.performance.dao.loan.OrderChildLoanRetryRecordDao;
import com.clx.performance.dao.loan.OwnerRepaymentDao;
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.enums.loan.OwnerRePaymentEnum;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.loan.OrderChildLoanRetryRecord;
import com.clx.performance.model.loan.OwnerRepayment;
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.context.ApplicationEventPublisher;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;
import org.springframework.transaction.PlatformTransactionManager;
@Component
@Slf4j
......@@ -28,6 +36,12 @@ public class EventListenerComponent {
private final OwnerRepaymentDao ownerRepaymentDao;
private final OrderChildLoanComponent orderChildLoanComponent;
private final SettlementMqService settlementMqService;
private final ApplicationEventPublisher applicationEventPublisher;
@EventListener(classes = {SettlementUpdateEvent.class})
public void listen(SettlementUpdateEvent event) {
......@@ -54,4 +68,30 @@ public class EventListenerComponent {
update.setBeOverdue(OwnerRePaymentEnum.BeOverdue.YES.getCode());
ownerRepaymentDao.updateEntityByKey(update);
}
@EventListener(classes = {OwnerLoanEvent.class})
public void listen(OwnerLoanEvent event) {
log.info("OwnerLoanEvent事件执行");
OwnerLoanMqDTO param = event.getParam();
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("处理货主借款监听器执行异常,数据为{},异常信息{}", JSONUtil.parse(param), ExceptionUtil.getMessage(e));
throw e;
}
log.info("处理货主借款监听器执行成功");
settlementOwnerDetailDao.updateInvoiceType(settlementOwnerDetail);
settlementDriverDetailDao.updateInvoiceTypeAndPrepayFreightFlag(settlementDriverDetail);
// 发送mq 通过开票标识
settlementMqService.invoiceTypeSync(settlementDriverDetail.getChildNo(), settlementDriverDetail.getInvoiceType());
}
}
package com.clx.performance.event;
import com.clx.performance.dto.OwnerLoanMqDTO;
import lombok.Getter;
import lombok.Setter;
import org.springframework.context.ApplicationEvent;
@Getter
@Setter
public class OwnerLoanEvent extends ApplicationEvent {
private OwnerLoanMqDTO param;
/**
* Create a new {@code ApplicationEvent}.
*
* @param source the object on which the event initially occurred or with
* which the event is associated (never {@code null})
*/
public OwnerLoanEvent(Object source) {
super(source);
}
public OwnerLoanEvent(Object source, OwnerLoanMqDTO param) {
super(source);
this.param = param;
}
}
package com.clx.performance.event;
import lombok.Getter;
import lombok.Setter;
import org.springframework.context.ApplicationEvent;
@Getter
@Setter
public class OwnerRepaymentUpdateEvent extends ApplicationEvent {
......@@ -23,11 +27,4 @@ public class OwnerRepaymentUpdateEvent extends ApplicationEvent {
this.id = id;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
......@@ -2,8 +2,12 @@ package com.clx.performance.event;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import lombok.Getter;
import lombok.Setter;
import org.springframework.context.ApplicationEvent;
@Getter
@Setter
public class SettlementUpdateEvent extends ApplicationEvent {
......@@ -27,19 +31,4 @@ public class SettlementUpdateEvent extends ApplicationEvent {
this.settlementOwnerDetail = settlementOwnerDetail;
}
public SettlementDriverDetail getSettlementDriverDetail() {
return settlementDriverDetail;
}
public void setSettlementDriverDetail(SettlementDriverDetail settlementDriverDetail) {
this.settlementDriverDetail = settlementDriverDetail;
}
public SettlementOwnerDetail getSettlementOwnerDetail() {
return settlementOwnerDetail;
}
public void setSettlementOwnerDetail(SettlementOwnerDetail settlementOwnerDetail) {
this.settlementOwnerDetail = settlementOwnerDetail;
}
}
......@@ -18,6 +18,8 @@ import com.clx.performance.enums.settle.SettlementDriverEnum;
import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.enums.settle.SettlementWayEnum;
import com.clx.performance.event.OwnerLoanEvent;
import com.clx.performance.event.SettlementUpdateEvent;
import com.clx.performance.feign.TransportFeignService;
import com.clx.performance.model.*;
import com.clx.performance.model.settle.SettlementDriverDetail;
......@@ -34,6 +36,7 @@ import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
......@@ -68,7 +71,7 @@ public class OrderChildSyncTransportListener {
private final OrderChildSyncTransportInvoiceRecordDao orderChildSyncTransportInvoiceRecordDao;
private final RabbitTemplate rabbitTemplate;
private final ApplicationEventPublisher applicationEventPublisher;
@RabbitListener(queues = RabbitKeyConstants.ORDER_CHILD_SYNC_TRANSPORT_QUEUE)
public void onMessage(String message) {
......@@ -179,15 +182,14 @@ public class OrderChildSyncTransportListener {
settlementOwnerDetail.setInvoiceType(invoiceType);
settlementDriverDetail.setInvoiceType(invoiceType);
//货主借款监听器处理
//货主借款事件处理
OwnerLoanMqDTO dto = new OwnerLoanMqDTO();
dto.setSettlementOwnerDetail(settlementOwnerDetail);
dto.setSettlementDriverDetail(settlementDriverDetail);
dto.setOrderChild(orderChild);
Message message = MessageBuilder.withBody(JSONUtil.parse(dto).toString().getBytes()).build();
rabbitTemplate.send(
RabbitKeyConstants.OWNER_LOAN_EXCHANGE, RabbitKeyConstants.OWNER_LOAN_ROUTE_KEY, message
); }
applicationEventPublisher.publishEvent(new OwnerLoanEvent(this, dto));
}
private void generateTakeOutRunningWatter(OrderChild orderChild, BigDecimal ans, SettlementOwnerDetail settlementOwnerDetail, SettlementDriverDetail settlementDriverDetail) {
OwnerAccount account = null;
......
......@@ -34,6 +34,7 @@ import com.clx.performance.enums.loan.OwnerLoanAccountRunningWaterRecordEnum;
import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
import com.clx.performance.enums.loan.OwnerRePaymentEnum;
import com.clx.performance.enums.nbbank.NbBankStatusEnum;
import com.clx.performance.event.OwnerLoanEvent;
import com.clx.performance.extranal.user.impl.OwnerInfoServiceImpl;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OwnerBindCardRecord;
......@@ -70,6 +71,7 @@ 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.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -127,7 +129,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
private final OrderChildDao orderChildDao;
private final RabbitTemplate rabbitTemplate;
private final ApplicationEventPublisher applicationEventPublisher;
@Override
......@@ -157,7 +159,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
entity.setOwnerUserName(loginUserInfo.getUserName());
entity.setMobile(loginUserInfo.getUserMobile());
entity.setLoanBalance(param.getLoanBalance());
entity.setGoodsName("运费");
entity.setBorrowerId(param.getBorrowerId());
entity.setBorrower(param.getBorrower());
......@@ -307,7 +309,7 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
.setMobile(ownerLoanRecord.getMobile())
.setRunningWaterNo(idGenerateSnowFlake.nextId(2L))
.setLoanNo(ownerLoanRecord.getLoanNo())
.setRunningWaterType(RunningWaterTypeEnum.Status.LOAN.getCode())
.setRunningWaterType(OwnerLoanAccountRunningWaterRecordEnum.RunWaterType.APPROVE_WAIT.getCode())
.setAlterationBalance(ownerLoanRecord.getLoanBalance())
.setUseAbleBalance(ownerLoanAccount.getFundingUsableBalance().add(ownerLoanAccount.getVirtuallyUsableBalance()))
.setFrozenBalance(ownerLoanAccount.getFundingFrozenBalance().add(ownerLoanAccount.getVirtuallyFrozenBalance()))
......@@ -640,11 +642,9 @@ public class OwnerLoanRecordServiceImpl implements OwnerLoanRecordService {
dto.setSettlementOwnerDetail(settlementOwnerDetail);
dto.setSettlementDriverDetail(settlementDriverDetail);
dto.setOrderChild(orderChild);
//货主借款监听器处理
Message message = MessageBuilder.withBody(JSONUtil.parse(dto).toString().getBytes()).build();
rabbitTemplate.send(
RabbitKeyConstants.OWNER_LOAN_EXCHANGE, RabbitKeyConstants.OWNER_LOAN_ROUTE_KEY, message
);
//货主借款事件处理
applicationEventPublisher.publishEvent(new OwnerLoanEvent(this, dto));
orderChildLoanRetryRecordDao.deleteByKey(retryRecord.getId());
}
}
......
......@@ -17,6 +17,7 @@ import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List;
import java.util.Objects;
/**
* @author liruixin
......@@ -120,4 +121,15 @@ public class SettlementDriverDetailServiceImpl implements SettlementDriverDetai
public SettlementDriverDetail selectOneByChildNo(String childNo) {
return settlementDriverDetailDao.getByChildNo(childNo).get();
}
public static String formatLoanMsg(Integer loanFlag) {
if (Objects.equals(loanFlag, OwnerLoanRecordEnum.LoanFlag.LOAN.getCode())) {
return OwnerLoanRecordEnum.LoanFlag.LOAN.getMsg();
}else if (Objects.equals(loanFlag, OwnerLoanRecordEnum.LoanFlag.NO_LOAN.getCode())) {
return OwnerLoanRecordEnum.LoanFlag.NO_LOAN.getMsg();
} else if (Objects.equals(loanFlag, OwnerLoanRecordEnum.LoanFlag.RE_PAY.getCode())) {
return OwnerLoanRecordEnum.LoanFlag.RE_PAY.getMsg();
}
return null;
}
}
......@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.settle.SettlementDriverDao;
import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
import com.clx.performance.enums.settle.SettlementDriverEnum;
import com.clx.performance.model.settle.SettlementDriver;
import com.clx.performance.model.settle.SettlementDriverDetail;
......@@ -76,4 +77,15 @@ public class SettlementDriverServiceImpl implements SettlementDriverService {
}
return payMsg;
}
public static String formatLoanMsg(Integer loanFlag) {
if (Objects.equals(loanFlag, OwnerLoanRecordEnum.LoanFlag.LOAN.getCode())) {
return OwnerLoanRecordEnum.LoanFlag.LOAN.getMsg();
}else if (Objects.equals(loanFlag, OwnerLoanRecordEnum.LoanFlag.NO_LOAN.getCode())) {
return OwnerLoanRecordEnum.LoanFlag.NO_LOAN.getMsg();
} else if (Objects.equals(loanFlag, OwnerLoanRecordEnum.LoanFlag.RE_PAY.getCode())) {
return OwnerLoanRecordEnum.LoanFlag.RE_PAY.getMsg();
}
return null;
}
}
......@@ -6,11 +6,14 @@ import com.clx.performance.vo.pc.carrier.settle.CarrierPageSettlementDriverDetai
import com.msl.common.utils.DateStructUtil;
import com.msl.common.utils.DateUtils;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import java.util.List;
@Mapper(componentModel = "spring", uses = DateStructUtil.class, imports = {DateUtils.class})
public interface SettlementDriverDetailStruct {
@Mapping(target = "loanFlagMsg", expression = "java(com.clx.performance.service.impl.settle.SettlementDriverDetailServiceImpl.formatLoanMsg(detail.getLoanFlag()))")
List<CarrierPageSettlementDriverDetailVO> covertList(List<SettlementDriverDetail> records);
OrderChildSyncTransportRecord convertRecord(SettlementDriverDetail detail);
......
......@@ -19,6 +19,7 @@ public interface SettlementDriverStruct {
@Mapping(target = "payErrorMsg", expression = "java(com.clx.performance.service.impl.settle.SettlementDriverServiceImpl.formatPayMsg(detail.getStatus(),detail.getPayErrorMsg()))")
CarrierPageSettlementDriverVO convert(SettlementDriver detail);
@Mapping(target = "loanFlagMsg", expression = "java(com.clx.performance.service.impl.settle.SettlementDriverServiceImpl.formatLoanMsg(detail.getLoanFlag()))")
@IterableMapping(qualifiedByName = "toBaseVo")
List<CarrierPageSettlementDriverVO> covertList(List<SettlementDriver> records);
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论