提交 1a86a7b8 authored 作者: huyufan's avatar huyufan

结算单锁定

上级 b4205940
...@@ -74,6 +74,26 @@ public enum OwnerLoanRecordEnum { ...@@ -74,6 +74,26 @@ public enum OwnerLoanRecordEnum {
} }
} }
@Getter
@AllArgsConstructor
public enum LoanTypeFlag {
V_F(0, "虚拟币+资金"),
VIRTUAL_CURRENCY(1, "虚拟币"),
FUND(2, "资金"),
;
private final Integer code;
private final String msg;
public static Optional<LoanTypeFlag> getByCode(Integer code) {
return Arrays.stream(values()).filter(e ->Objects.equals(e.code, code)).findFirst();
}
public static String getMsgByCode(Integer code) {
return getByCode(code).map(LoanTypeFlag::getMsg).orElse("");
}
}
@Getter @Getter
@AllArgsConstructor @AllArgsConstructor
public enum PayChannel { public enum PayChannel {
......
...@@ -217,7 +217,7 @@ public class OrderChildLoanComponent { ...@@ -217,7 +217,7 @@ public class OrderChildLoanComponent {
log.info("3.当前是网运单,但预付运费不为0,说明已经处理"); log.info("3.当前是网运单,但预付运费不为0,说明已经处理");
return; return;
} }
Integer loanTypeFlag = null;
String childNo = settlementDriverDetail.getChildNo(); String childNo = settlementDriverDetail.getChildNo();
List<OwnerLoanAccountRunningWaterRecord> runningWaterRecordList = ownerLoanAccountRunningWaterRecordDao.getListByChildNoAndRunningWaterType(childNo); List<OwnerLoanAccountRunningWaterRecord> runningWaterRecordList = ownerLoanAccountRunningWaterRecordDao.getListByChildNoAndRunningWaterType(childNo);
...@@ -239,6 +239,7 @@ public class OrderChildLoanComponent { ...@@ -239,6 +239,7 @@ public class OrderChildLoanComponent {
runningWaterRecordList = ownerLoanAccountRunningWaterRecordDao.getListByChildNoAndRunningWaterType runningWaterRecordList = ownerLoanAccountRunningWaterRecordDao.getListByChildNoAndRunningWaterType
(childNo, OwnerLoanAccountRunningWaterRecordEnum.RunWaterType.APPROVE_FROZEN.getCode()); (childNo, OwnerLoanAccountRunningWaterRecordEnum.RunWaterType.APPROVE_FROZEN.getCode());
loanTypeFlag = loanFlagTypeProcess(runningWaterRecordList);
childWriteOffOwnerLoanAccount(runningWaterRecordList); childWriteOffOwnerLoanAccount(runningWaterRecordList);
...@@ -248,6 +249,7 @@ public class OrderChildLoanComponent { ...@@ -248,6 +249,7 @@ public class OrderChildLoanComponent {
log.info("4.2 相等直接生成运单核销"); log.info("4.2 相等直接生成运单核销");
//相等直接生成运单核销 //相等直接生成运单核销
childWriteOffOwnerLoanAccount(runningWaterRecordList); childWriteOffOwnerLoanAccount(runningWaterRecordList);
loanTypeFlag = loanFlagTypeProcess(runningWaterRecordList);
} else if (alterationBalance.compareTo(settlementOwnerDetail.getSettlementFreight()) > 0) { } else if (alterationBalance.compareTo(settlementOwnerDetail.getSettlementFreight()) > 0) {
//大于,则生成核销后,释放冻结的借款 //大于,则生成核销后,释放冻结的借款
...@@ -288,6 +290,8 @@ public class OrderChildLoanComponent { ...@@ -288,6 +290,8 @@ public class OrderChildLoanComponent {
//核销扣除 //核销扣除
childWriteOffOwnerLoanAccount(frozenList); childWriteOffOwnerLoanAccount(frozenList);
loanTypeFlag = loanFlagTypeProcess(frozenList);
if (CollectionUtil.isNotEmpty(thawList)) { if (CollectionUtil.isNotEmpty(thawList)) {
OwnerLoanAccountRunningWaterRecord entity = runningWaterRecordList.get(0); OwnerLoanAccountRunningWaterRecord entity = runningWaterRecordList.get(0);
Long loanNo = entity.getLoanNo(); Long loanNo = entity.getLoanNo();
...@@ -314,12 +318,15 @@ public class OrderChildLoanComponent { ...@@ -314,12 +318,15 @@ public class OrderChildLoanComponent {
runningWaterRecordList = ownerLoanAccountRunningWaterRecordDao.getListByChildNoAndRunningWaterType runningWaterRecordList = ownerLoanAccountRunningWaterRecordDao.getListByChildNoAndRunningWaterType
(childNo, OwnerLoanAccountRunningWaterRecordEnum.RunWaterType.APPROVE_FROZEN.getCode()); (childNo, OwnerLoanAccountRunningWaterRecordEnum.RunWaterType.APPROVE_FROZEN.getCode());
log.info("4.5新查询出冻结借款记录:{}", JSONUtil.parse(runningWaterRecordList)); log.info("4.5新查询出冻结借款记录:{}", JSONUtil.parse(runningWaterRecordList));
loanTypeFlag = loanFlagTypeProcess(runningWaterRecordList);
childWriteOffOwnerLoanAccount(runningWaterRecordList); childWriteOffOwnerLoanAccount(runningWaterRecordList);
} }
} }
//已借款 //已借款
settlementDriverDetail.setLoanFlag(OwnerLoanRecordEnum.LoanFlag.LOAN.getCode()); settlementDriverDetail.setLoanFlag(OwnerLoanRecordEnum.LoanFlag.LOAN.getCode());
settlementDriverDetail.setLoanTypeFlag(loanTypeFlag);
// 抵扣金额 // 抵扣金额
settlementOwnerDetail.setLoanFreight(settlementOwnerDetail.getSettlementFreight()); settlementOwnerDetail.setLoanFreight(settlementOwnerDetail.getSettlementFreight());
settlementOwnerDetail.setSettlementFreight(BigDecimal.ZERO); settlementOwnerDetail.setSettlementFreight(BigDecimal.ZERO);
...@@ -491,4 +498,18 @@ public class OrderChildLoanComponent { ...@@ -491,4 +498,18 @@ public class OrderChildLoanComponent {
return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice()).subtract(settlementOwnerDetail.getPrepayFreight()); return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice()).subtract(settlementOwnerDetail.getPrepayFreight());
} }
} }
public Integer loanFlagTypeProcess(List<OwnerLoanAccountRunningWaterRecord> runningWaterRecordList) {
Map<Integer, List<OwnerLoanAccountRunningWaterRecord>> listMap = runningWaterRecordList.stream().collect(Collectors.groupingBy(OwnerLoanAccountRunningWaterRecord::getLoanType));
if (listMap.get(OwnerLoanRecordEnum.LoanType.VIRTUAL_CURRENCY.getCode()).size() > 1
&& listMap.get(OwnerLoanRecordEnum.LoanType.FUND.getCode()).size() > 1
) {
return OwnerLoanRecordEnum.LoanTypeFlag.V_F.getCode();
} else if (listMap.get(OwnerLoanRecordEnum.LoanType.VIRTUAL_CURRENCY.getCode()).size() > 1) {
return OwnerLoanRecordEnum.LoanTypeFlag.VIRTUAL_CURRENCY.getCode();
} else {
return OwnerLoanRecordEnum.LoanTypeFlag.FUND.getCode();
}
}
} }
...@@ -33,7 +33,6 @@ public class OwnerAccountComponent { ...@@ -33,7 +33,6 @@ public class OwnerAccountComponent {
orderFeign.saveOrderSettlementJobRecord(orderNo); orderFeign.saveOrderSettlementJobRecord(orderNo);
return; return;
} }
//TODO 注意判断普通单还是网运单 普通单类型 1 网运单 2
Integer invoiceType = settlementOwnerDetailService.getInvoiceType(orderNo); Integer invoiceType = settlementOwnerDetailService.getInvoiceType(orderNo);
//1 网运单 2 普通单 //1 网运单 2 普通单
log.info("invoiceType={}", invoiceType); log.info("invoiceType={}", invoiceType);
......
...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.settle.SettlementDriverDetailDao; import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.enums.loan.OwnerLoanRecordEnum; import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
import com.clx.performance.enums.settle.SettlementDriverEnum; import com.clx.performance.enums.settle.SettlementDriverEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.mapper.settle.SettlementDriverDetailMapper; import com.clx.performance.mapper.settle.SettlementDriverDetailMapper;
import com.clx.performance.model.settle.SettlementDriverDetail; import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverDetailParam; import com.clx.performance.param.pc.driver.PageCarrierSettlementDriverDetailParam;
...@@ -35,6 +36,7 @@ public class SettlementDriverDetailDaoImpl extends BaseDaoImpl<SettlementDriverD ...@@ -35,6 +36,7 @@ public class SettlementDriverDetailDaoImpl extends BaseDaoImpl<SettlementDriverD
.set(SettlementDriverDetail::getPrepayFreight, item.getPrepayFreight()) .set(SettlementDriverDetail::getPrepayFreight, item.getPrepayFreight())
.set(SettlementDriverDetail::getPrepayFreightFlag, item.getPrepayFreightFlag()) .set(SettlementDriverDetail::getPrepayFreightFlag, item.getPrepayFreightFlag())
.set(SettlementDriverDetail::getLoanFlag, item.getLoanFlag()) .set(SettlementDriverDetail::getLoanFlag, item.getLoanFlag())
.set(SettlementDriverDetail::getLoanTypeFlag, item.getLoanTypeFlag())
); );
} }
...@@ -96,7 +98,20 @@ public class SettlementDriverDetailDaoImpl extends BaseDaoImpl<SettlementDriverD ...@@ -96,7 +98,20 @@ public class SettlementDriverDetailDaoImpl extends BaseDaoImpl<SettlementDriverD
public SettlementDriverDetail selectLoanFlag(String orderNo) { public SettlementDriverDetail selectLoanFlag(String orderNo) {
return baseMapper.selectOne(lQrWrapper().eq(SettlementDriverDetail::getOrderNo, orderNo) return baseMapper.selectOne(lQrWrapper().eq(SettlementDriverDetail::getOrderNo, orderNo)
.eq(SettlementDriverDetail::getLoanFlag, OwnerLoanRecordEnum.LoanFlag.NO_LOAN.getCode()) .eq(SettlementDriverDetail::getLoanFlag, OwnerLoanRecordEnum.LoanFlag.NO_LOAN.getCode())
.eq(SettlementDriverDetail::getInvoiceType, SettlementOwnerEnum.InvoiceType.ONLINE.getCode())
.eq(SettlementDriverDetail::getPrepayFreightFlag, SettlementDriverEnum.PrepayFreightFlag.NO_PAY.getCode()) .eq(SettlementDriverDetail::getPrepayFreightFlag, SettlementDriverEnum.PrepayFreightFlag.NO_PAY.getCode())
.last("limit 1")
);
}
@Override
public SettlementDriverDetail selectLoanTypeFlag(String orderNo) {
return baseMapper.selectOne(lQrWrapper().eq(SettlementDriverDetail::getOrderNo, orderNo)
.eq(SettlementDriverDetail::getLoanFlag, OwnerLoanRecordEnum.LoanFlag.LOAN.getCode())
.eq(SettlementDriverDetail::getInvoiceType, SettlementOwnerEnum.InvoiceType.ONLINE.getCode())
.ne(SettlementDriverDetail::getLoanTypeFlag, OwnerLoanRecordEnum.LoanTypeFlag.FUND.getCode())
.eq(SettlementDriverDetail::getPrepayFreightFlag, SettlementDriverEnum.PrepayFreightFlag.NO_PAY.getCode())
.last("limit 1")
); );
} }
......
...@@ -35,4 +35,6 @@ public interface SettlementDriverDetailDao extends BaseDao<SettlementDriverDetai ...@@ -35,4 +35,6 @@ public interface SettlementDriverDetailDao extends BaseDao<SettlementDriverDetai
void updateLoanFlagByChildNoList(List<String> childNoList); void updateLoanFlagByChildNoList(List<String> childNoList);
SettlementDriverDetail selectLoanFlag(String orderNo); SettlementDriverDetail selectLoanFlag(String orderNo);
SettlementDriverDetail selectLoanTypeFlag(String orderNo);
} }
...@@ -174,7 +174,7 @@ public class EventListenerComponent { ...@@ -174,7 +174,7 @@ public class EventListenerComponent {
String ownerUserName = record.getOwnerUserName(); String ownerUserName = record.getOwnerUserName();
BigDecimal balance = record.getAlterationBalance(); BigDecimal balance = record.getAlterationBalance();
//解冻借款 //解冻借款
orderChildLoanComponent.thawOwnerLoanAccount(loanNo, loanType, ownerUserNo, record.getMobile(), ownerUserName, childNo, balance); orderChildLoanComponent.thawOwnerLoanAccount(loanNo, loanType, ownerUserNo, ownerUserName, record.getMobile(), childNo, balance);
} }
} }
......
...@@ -45,6 +45,7 @@ public class SettlementDriverDetail implements HasKey<Integer> { ...@@ -45,6 +45,7 @@ public class SettlementDriverDetail implements HasKey<Integer> {
private BigDecimal prepayFreight; //预付运费金额(分) private BigDecimal prepayFreight; //预付运费金额(分)
private Integer prepayFreightFlag; //预付运费标示 0:未预付 1:已预付 private Integer prepayFreightFlag; //预付运费标示 0:未预付 1:已预付
private Integer loanFlag; //借款标示 0:未借款 1:已借款 2:已还款 private Integer loanFlag; //借款标示 0:未借款 1:已借款 2:已还款
private Integer loanTypeFlag; //借款类型标示 0:虚拟货币+资金 1:虚拟货币 2:资金
private BigDecimal settlementFreight; //结算金额(分) private BigDecimal settlementFreight; //结算金额(分)
private Integer invoiceType; //开票标识:1网运单 2普通单 private Integer invoiceType; //开票标识:1网运单 2普通单
private Integer status; //状态 private Integer status; //状态
......
...@@ -4,11 +4,13 @@ import cn.hutool.core.collection.CollectionUtil; ...@@ -4,11 +4,13 @@ import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.OrderChildDao; import com.clx.performance.dao.OrderChildDao;
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.enums.settle.SettlementOwnerDetailEnum; import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
import com.clx.performance.enums.settle.SettlementWayEnum; import com.clx.performance.enums.settle.SettlementWayEnum;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
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.param.pc.owner.PageCarrierSettlementOwnerDetailParam; import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam; import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam;
...@@ -45,6 +47,7 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS ...@@ -45,6 +47,7 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
private final SettlementOwnerDetailDao settlementOwnerDetailDao; private final SettlementOwnerDetailDao settlementOwnerDetailDao;
private final SettlementOwnerDetailStruct settlementOwnerDetailStruct; private final SettlementOwnerDetailStruct settlementOwnerDetailStruct;
private final OrderChildDao orderChildDao; private final OrderChildDao orderChildDao;
private final SettlementDriverDetailDao settlementDriverDetailDao;
@Override @Override
...@@ -257,17 +260,33 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS ...@@ -257,17 +260,33 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
public Boolean thawAndLockSettlement(String orderNo) { public Boolean thawAndLockSettlement(String orderNo) {
boolean orderChildrenFlag = false; boolean orderChildrenFlag = false;
boolean ownerDetailsFlag = false; boolean ownerDetailsFlag = false;
boolean loanFlag = false;
List<OrderChild> orderChildren = orderChildDao.selectInTransitOrderChildLtUnsettle(orderNo); List<OrderChild> orderChildren = orderChildDao.selectInTransitOrderChildLtUnsettle(orderNo);
if (CollectionUtil.isNotEmpty(orderChildren)) {
orderChildrenFlag = true;
} else {
List<SettlementOwnerDetail> ownerDetails = settlementOwnerDetailDao.selectListByOrderNo(orderNo); List<SettlementOwnerDetail> ownerDetails = settlementOwnerDetailDao.selectListByOrderNo(orderNo);
if (CollectionUtil.isNotEmpty(ownerDetails)) { if (CollectionUtil.isNotEmpty(ownerDetails)) {
ownerDetailsFlag = true; ownerDetailsFlag = true;
} else {
//开票标识“网运单”,预付标识“未预付”,借款标识”未借款“的车主计费,如存在不允许锁定
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao.selectLoanFlag(orderNo);
if (settlementDriverDetail != null) {
loanFlag = true;
} else {
//开票标识“网运单”,预付标识“未预付”,借款类型“虚拟货币”,借款标识”已借款“的车主计费,如存在不允许锁定
settlementDriverDetail = settlementDriverDetailDao.selectLoanTypeFlag(orderNo);
if (settlementDriverDetail != null) {
loanFlag = true;
}
} }
if (CollectionUtil.isNotEmpty(orderChildren)) { }
orderChildrenFlag = true;
} }
if (ownerDetailsFlag || orderChildrenFlag) { if (ownerDetailsFlag || orderChildrenFlag || loanFlag) {
return true; return true;
} else { } else {
return false; return false;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论