提交 152005dd authored 作者: huyufan's avatar huyufan

Merge remote-tracking branch 'origin/v6.5_transport_open_20231115' into test

...@@ -534,6 +534,7 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService { ...@@ -534,6 +534,7 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService {
SettlementOwnerEnum.InvoiceType.ONLINE.getCode(),SettlementOwnerEnum.InvoiceStatus.NOT_INVOICE.getCode()); SettlementOwnerEnum.InvoiceType.ONLINE.getCode(),SettlementOwnerEnum.InvoiceStatus.NOT_INVOICE.getCode());
if (CollectionUtil.isEmpty(list)) { if (CollectionUtil.isEmpty(list)) {
log.info("开票结果回调查询当前结算单均已开完票,结算单信息为{}", settlementNo); log.info("开票结果回调查询当前结算单均已开完票,结算单信息为{}", settlementNo);
return;
} }
settlementOwnerDetailDao.updateSettlementByChildNoList(childNoList); settlementOwnerDetailDao.updateSettlementByChildNoList(childNoList);
......
...@@ -77,9 +77,11 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -77,9 +77,11 @@ public class SettlementServiceImpl implements SettlementService {
SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND); SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND); SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
if (settlementOwnerDetail.getInvoiceType() != null) {return;} if (settlementOwnerDetail.getInvoiceType() != null) {
return;
}
// 开票金额 // 开票金额
settlementOwnerDetail.setInvoiceFreight(invoiceFreightCalc(orderChild.getSettlementWay(),settlementOwnerDetail)); settlementOwnerDetail.setInvoiceFreight(invoiceFreightCalc(orderChild.getSettlementWay(), settlementOwnerDetail));
if (settlementDriverDetail.getSettlementFreight().compareTo(BigDecimal.ZERO) < 0) { if (settlementDriverDetail.getSettlementFreight().compareTo(BigDecimal.ZERO) < 0) {
invoiceType = SettlementOwnerEnum.InvoiceType.ORDINARY.getCode(); invoiceType = SettlementOwnerEnum.InvoiceType.ORDINARY.getCode();
settlementDriverDetail.setPrepayFreightFlag(0); settlementDriverDetail.setPrepayFreightFlag(0);
...@@ -94,7 +96,7 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -94,7 +96,7 @@ public class SettlementServiceImpl implements SettlementService {
log.info("OrderChildSyncDTO信息为:{}", JSONUtil.parse(bean)); log.info("OrderChildSyncDTO信息为:{}", JSONUtil.parse(bean));
if (bean.getCode() == 0) { if (bean.getCode() == 0) {
Integer status = bean.getData().getStatus(); Integer status = bean.getData().getStatus();
BigDecimal ans = settlementOwnerDetail.getFreight().subtract(settlementOwnerDetail.getLossFreight());
if (status == 1) { if (status == 1) {
//通过风控 //通过风控
List<OwnerRunningWaterRecord> runningWaterRecordList = ownerRunningWaterRecordDao.getOwnerRunningWaterRecord(orderChild.getOrderNo()); List<OwnerRunningWaterRecord> runningWaterRecordList = ownerRunningWaterRecordDao.getOwnerRunningWaterRecord(orderChild.getOrderNo());
...@@ -109,11 +111,14 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -109,11 +111,14 @@ public class SettlementServiceImpl implements SettlementService {
&& item.getAccountType().equals(OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode()) && item.getAccountType().equals(OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode())
; ;
}).map(OwnerRunningWaterRecord::getAlterationBalance).reduce(BigDecimal.ZERO, BigDecimal::add); }).map(OwnerRunningWaterRecord::getAlterationBalance).reduce(BigDecimal.ZERO, BigDecimal::add);
//设置预付运费金额
BigDecimal ans = getPrepayFreightPay(orderChild.getSettlementWay(), settlementOwnerDetail, frozen);
BigDecimal subtract = frozen.subtract(takeOut); BigDecimal subtract = frozen.subtract(takeOut);
log.info("冻结预付运费:{}, 扣除的流水总和:{}", frozen, takeOut); log.info("冻结预付运费:{}, 扣除的流水总和:{}", frozen, takeOut);
invoiceType = SettlementOwnerEnum.InvoiceType.ONLINE.getCode(); invoiceType = SettlementOwnerEnum.InvoiceType.ONLINE.getCode();
if (subtract.compareTo(BigDecimal.ZERO) <= 0) { //此刻预付运费也可能为0,那么就不用生成扣除相关流水逻辑
if (subtract.compareTo(BigDecimal.ZERO) <= 0 || ans.compareTo(BigDecimal.ZERO) == 0) {
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO); settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
settlementDriverDetail.setPrepayFreightFlag(0); settlementDriverDetail.setPrepayFreightFlag(0);
...@@ -129,7 +134,7 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -129,7 +134,7 @@ public class SettlementServiceImpl implements SettlementService {
update.setModifiedTime(account.getModifiedTime()); update.setModifiedTime(account.getModifiedTime());
update.setFrozenBalance(ans); update.setFrozenBalance(ans);
Integer i = ownerAccountDao.updateOwnerAccountForConfirm(update); Integer i = ownerAccountDao.updateOwnerAccountForConfirm(update);
if (null != i && i >0 ) { if (null != i && i > 0) {
break; break;
} }
} }
...@@ -163,6 +168,8 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -163,6 +168,8 @@ public class SettlementServiceImpl implements SettlementService {
} else { } else {
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO); settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
settlementDriverDetail.setPrepayFreightFlag(0);
} }
} }
...@@ -178,7 +185,7 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -178,7 +185,7 @@ public class SettlementServiceImpl implements SettlementService {
} }
// 结算金额 // 结算金额
settlementOwnerDetail.setSettlementFreight(settlementFreightCalc(orderChild.getSettlementWay(),settlementOwnerDetail)); settlementOwnerDetail.setSettlementFreight(settlementFreightCalc(orderChild.getSettlementWay(), settlementOwnerDetail));
if (SettlementOwnerEnum.InvoiceType.ORDINARY.getCode().equals(invoiceType)) { if (SettlementOwnerEnum.InvoiceType.ORDINARY.getCode().equals(invoiceType)) {
if (settlementOwnerDetail.getSettlementFreight().compareTo(BigDecimal.ZERO) == 0) { if (settlementOwnerDetail.getSettlementFreight().compareTo(BigDecimal.ZERO) == 0) {
settlementOwnerDetail.setFinalPaymentStatus(SettlementOwnerDetailEnum.FinalPaymentStatus.NO_REQUIRE.getCode()); settlementOwnerDetail.setFinalPaymentStatus(SettlementOwnerDetailEnum.FinalPaymentStatus.NO_REQUIRE.getCode());
...@@ -203,27 +210,47 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -203,27 +210,47 @@ public class SettlementServiceImpl implements SettlementService {
/** /**
* 预付运费支付 * 预付运费支付
*/ */
private BigDecimal updatePrepayFreightPay(String childNo, BigDecimal freight, BigDecimal lossFreight){ private BigDecimal updatePrepayFreightPay(String childNo, BigDecimal freight, BigDecimal lossFreight) {
//开票金额 //开票金额
BigDecimal prepayFreight = freight.subtract(lossFreight); BigDecimal prepayFreight = freight.subtract(lossFreight);
if (prepayFreight.compareTo(BigDecimal.ZERO) <= 0) {return BigDecimal.ZERO;} if (prepayFreight.compareTo(BigDecimal.ZERO) <= 0) {
return BigDecimal.ZERO;
}
//扣减预付运费 //扣减预付运费
return prepayFreight; return prepayFreight;
} }
private BigDecimal getPrepayFreightPay(Integer settlementWay, SettlementOwnerDetail settlementOwnerDetail, BigDecimal accountFrozenPrefreght) {
//订单结算方式为“装车净重”时
if (Objects.equals(settlementWay, SettlementWayEnum.WayType.LOAD.getCode())) {
BigDecimal subtract = settlementOwnerDetail.getFreight().subtract(settlementOwnerDetail.getLossFreight());
if (accountFrozenPrefreght.compareTo(subtract) >= 0) {
return subtract;
} else {
return BigDecimal.ZERO;
}
} else {
if (accountFrozenPrefreght.compareTo(settlementOwnerDetail.getFreight()) == 0) {
return settlementOwnerDetail.getFreight();
} else {
return BigDecimal.ZERO;
}
}
}
/** /**
* 开票金额 * 开票金额
*/ */
private BigDecimal invoiceFreightCalc(Integer settlementWay,SettlementOwnerDetail settlementOwnerDetail){ private BigDecimal invoiceFreightCalc(Integer settlementWay, SettlementOwnerDetail settlementOwnerDetail) {
if(Objects.equals(settlementWay, SettlementWayEnum.WayType.LOAD.getCode())){ //订单结算方式为“装车净重”时,开票金额=实际净重*平台运费报价-货损金额。 if (Objects.equals(settlementWay, SettlementWayEnum.WayType.LOAD.getCode())) { //订单结算方式为“装车净重”时,开票金额=实际净重*平台运费报价-货损金额。
return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice()) return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice())
.subtract(settlementOwnerDetail.getLossFreight()); .subtract(settlementOwnerDetail.getLossFreight());
}else{ //订单结算方式为“卸车净重”时,开票金额=实际净重*平台运费报价。 } else { //订单结算方式为“卸车净重”时,开票金额=实际净重*平台运费报价。
return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice()); return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice());
} }
} }
...@@ -231,12 +258,13 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -231,12 +258,13 @@ public class SettlementServiceImpl implements SettlementService {
/** /**
* 结算金额 * 结算金额
*/ */
private BigDecimal settlementFreightCalc(Integer settlementWay,SettlementOwnerDetail settlementOwnerDetail){ private BigDecimal settlementFreightCalc(Integer settlementWay, SettlementOwnerDetail settlementOwnerDetail) {
if(Objects.equals(settlementWay, SettlementWayEnum.WayType.LOAD.getCode())){ //订单结算方式为“装车净重”时,结算金额=实际净重*平台运费报价-预付运费-货损金额。 if (Objects.equals(settlementWay, SettlementWayEnum.WayType.LOAD.getCode())) { //订单结算方式为“装车净重”时,结算金额=实际净重*平台运费报价-预付运费-货损金额。
return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice()) return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice())
.subtract(settlementOwnerDetail.getPrepayFreight()).subtract(settlementOwnerDetail.getLossFreight()); .subtract(settlementOwnerDetail.getPrepayFreight()).subtract(settlementOwnerDetail.getLossFreight());
}else{ //订单结算方式为“卸车净重”时,结算金额=实际净重*平台运费报价-预付运费 } else { //订单结算方式为“卸车净重”时,结算金额=实际净重*平台运费报价-预付运费
return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice()).subtract(settlementOwnerDetail.getPrepayFreight()); return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice()).subtract(settlementOwnerDetail.getPrepayFreight());
} }
} }
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论