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

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

...@@ -79,90 +79,90 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -79,90 +79,90 @@ public class SettlementServiceImpl implements SettlementService {
if (settlementOwnerDetail.getInvoiceType() != null) {return;} if (settlementOwnerDetail.getInvoiceType() != null) {return;}
// 开票金额 // 开票金额
settlementOwnerDetail.setInvoiceFreight(invoiceFreightCalc(orderChild.getSettlementWay(),settlementOwnerDetail)); settlementOwnerDetail.setInvoiceFreight(invoiceFreightCalc(orderChild.getSettlementWay(),settlementOwnerDetail));
invoiceType = SettlementOwnerEnum.InvoiceType.ORDINARY.getCode(); // 结算金额 小于0就是普通单
settlementOwnerDetail.setSettlementFreight(settlementFreightCalc(orderChild.getSettlementWay(),settlementOwnerDetail));
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).get(); if (settlementOwnerDetail.getSettlementFreight().compareTo(BigDecimal.ZERO) <= 0) {
//是否通过风控,调用网络货运 settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
ThirdOrderChildBrokerParam param = transportSyncService.generateOrderChildSync(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail); invoiceType = SettlementOwnerEnum.InvoiceType.ORDINARY.getCode();
HttpDTO httpDTOResult = transportFeignService.orderChildSync(param); } else {
String decrypt = ThirdComponent.decrypt(httpDTOResult.getData()); OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).get();
OrderChildSyncDTO bean = JSONUtil.toBean(decrypt, OrderChildSyncDTO.class); //是否通过风控,调用网络货运
log.info("OrderChildSyncDTO信息为:{}", JSONUtil.parse(bean)); ThirdOrderChildBrokerParam param = transportSyncService.generateOrderChildSync(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail);
if (bean.getCode() == 0) { HttpDTO httpDTOResult = transportFeignService.orderChildSync(param);
Integer status = bean.getData().getStatus(); String decrypt = ThirdComponent.decrypt(httpDTOResult.getData());
BigDecimal ans = settlementOwnerDetail.getFreight().subtract(settlementOwnerDetail.getLossFreight()); OrderChildSyncDTO bean = JSONUtil.toBean(decrypt, OrderChildSyncDTO.class);
if (status == 1) { log.info("OrderChildSyncDTO信息为:{}", JSONUtil.parse(bean));
//通过风控 if (bean.getCode() == 0) {
List<OwnerRunningWaterRecord> runningWaterRecordList = ownerRunningWaterRecordDao.getOwnerRunningWaterRecord(orderChild.getOrderNo()); Integer status = bean.getData().getStatus();
BigDecimal frozen = runningWaterRecordList.stream().filter(item -> { BigDecimal ans = settlementOwnerDetail.getFreight().subtract(settlementOwnerDetail.getLossFreight());
return item.getRunningWaterType().equals(OwnerAccountEnum.RunningWaterStatus.FROZEN.getCode()) if (status == 1) {
&& item.getAccountType().equals(OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode()) //通过风控
; List<OwnerRunningWaterRecord> runningWaterRecordList = ownerRunningWaterRecordDao.getOwnerRunningWaterRecord(orderChild.getOrderNo());
}).map(OwnerRunningWaterRecord::getAlterationBalance).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal frozen = runningWaterRecordList.stream().filter(item -> {
return item.getRunningWaterType().equals(OwnerAccountEnum.RunningWaterStatus.FROZEN.getCode())
BigDecimal takeOut = runningWaterRecordList.stream().filter(item -> { && item.getAccountType().equals(OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode())
return item.getRunningWaterType().equals(OwnerAccountEnum.RunningWaterStatus.TAKE_OUT.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 takeOut = runningWaterRecordList.stream().filter(item -> {
BigDecimal subtract = frozen.subtract(takeOut); return item.getRunningWaterType().equals(OwnerAccountEnum.RunningWaterStatus.TAKE_OUT.getCode())
log.info("冻结预付运费:{}, 扣除的流水总和:{}", frozen, takeOut); && item.getAccountType().equals(OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode())
invoiceType = SettlementOwnerEnum.InvoiceType.ONLINE.getCode(); ;
}).map(OwnerRunningWaterRecord::getAlterationBalance).reduce(BigDecimal.ZERO, BigDecimal::add);
if (subtract.compareTo(BigDecimal.ZERO) <= 0) { BigDecimal subtract = frozen.subtract(takeOut);
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO); log.info("冻结预付运费:{}, 扣除的流水总和:{}", frozen, takeOut);
} else { invoiceType = SettlementOwnerEnum.InvoiceType.ONLINE.getCode();
if (subtract.subtract(ans).compareTo(BigDecimal.ZERO) >= 0) {
OwnerAccount account = ownerAccountDao.getAccountByOwnerUserNoAndAccountType(orderChild.getOwnerUserNo(), if (subtract.compareTo(BigDecimal.ZERO) <= 0) {
OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode());
settlementOwnerDetail.setPrepayFreight(ans);
settlementOwnerDetail.setFinalPaymentStatus(SettlementOwnerDetailEnum.FinalPaymentStatus.NO_REQUIRE.getCode());
//生成扣除流水
OwnerRunningWaterRecord runningWaterRecord = new OwnerRunningWaterRecord();
runningWaterRecord.setOwnerUserName(orderChild.getOwnerName());
runningWaterRecord.setMobile(orderChild.getDriverMobile());
runningWaterRecord.setCreateBy("系统");
runningWaterRecord.setOrderId(orderChild.getId());
runningWaterRecord.setOrderNo(orderChild.getOrderNo());
runningWaterRecord.setOrderChildId(orderChild.getId());
runningWaterRecord.setOrderChildNo(orderChild.getChildNo());
runningWaterRecord.setRelationId(null);
runningWaterRecord.setAlterationBalance(ans);
runningWaterRecord.setFrozenBalance(subtract.subtract(ans));
runningWaterRecord.setUsableBalance(account.getUsableBalance());
runningWaterRecord.setTakeOutBalance(ans);
runningWaterRecord.setAccountBalance(account.getAccountBalance().subtract(ans));
runningWaterRecord.setOwnerUserNo(account.getOwnerUserNo());
runningWaterRecord.setAccountType(OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode());
runningWaterRecord.setRunningWaterType(OwnerAccountEnum.RunningWaterStatus.TAKE_OUT.getCode());
runningWaterRecord.setRunningWaterNo(idGenerateSnowFlake.nextId(IdTypeEnum.Type.TAKE_OUT.getCode()));
ownerRunningWaterRecordDao.saveEntity(runningWaterRecord);
} else {
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO); settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
} else {
if (subtract.subtract(ans).compareTo(BigDecimal.ZERO) >= 0) {
OwnerAccount account = ownerAccountDao.getAccountByOwnerUserNoAndAccountType(orderChild.getOwnerUserNo(),
OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode());
settlementOwnerDetail.setPrepayFreight(ans);
settlementDriverDetail.setPrepayFreightFlag(1);
settlementOwnerDetail.setFinalPaymentStatus(SettlementOwnerDetailEnum.FinalPaymentStatus.NO_REQUIRE.getCode());
//生成扣除流水
OwnerRunningWaterRecord runningWaterRecord = new OwnerRunningWaterRecord();
runningWaterRecord.setOwnerUserName(orderChild.getOwnerName());
runningWaterRecord.setMobile(orderChild.getDriverMobile());
runningWaterRecord.setCreateBy("系统");
runningWaterRecord.setOrderId(orderChild.getId());
runningWaterRecord.setOrderNo(orderChild.getOrderNo());
runningWaterRecord.setOrderChildId(orderChild.getId());
runningWaterRecord.setOrderChildNo(orderChild.getChildNo());
runningWaterRecord.setRelationId(null);
runningWaterRecord.setAlterationBalance(ans);
runningWaterRecord.setFrozenBalance(subtract.subtract(ans));
runningWaterRecord.setUsableBalance(account.getUsableBalance());
runningWaterRecord.setTakeOutBalance(ans);
runningWaterRecord.setAccountBalance(account.getAccountBalance().subtract(ans));
runningWaterRecord.setOwnerUserNo(account.getOwnerUserNo());
runningWaterRecord.setAccountType(OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode());
runningWaterRecord.setRunningWaterType(OwnerAccountEnum.RunningWaterStatus.TAKE_OUT.getCode());
runningWaterRecord.setRunningWaterNo(idGenerateSnowFlake.nextId(IdTypeEnum.Type.TAKE_OUT.getCode()));
ownerRunningWaterRecordDao.saveEntity(runningWaterRecord);
} else {
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
}
} }
}
} else {
settlementDriverDetail.setPrepayFreightFlag(0);
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
settlementOwnerDetail.setFinalPaymentStatus(SettlementOwnerDetailEnum.FinalPaymentStatus.NO.getCode());
}
} else { } else {
settlementDriverDetail.setPrepayFreightFlag(0); throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_SYNC_ERROR);
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
settlementOwnerDetail.setFinalPaymentStatus(SettlementOwnerDetailEnum.FinalPaymentStatus.NO.getCode());
}
} else {
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_SYNC_ERROR);
}
if (SettlementOwnerEnum.InvoiceType.ONLINE.getCode().equals(invoiceType) && settlementOwnerDetail.getPrepayFreight().compareTo(BigDecimal.ZERO) > 0) { }
settlementDriverDetail.setPrepayFreightFlag(1);
} }
settlementOwnerDetail.setInvoiceType(invoiceType); settlementOwnerDetail.setInvoiceType(invoiceType);
settlementDriverDetail.setInvoiceType(invoiceType); settlementDriverDetail.setInvoiceType(invoiceType);
// 结算金额
settlementOwnerDetail.setSettlementFreight(settlementFreightCalc(orderChild.getSettlementWay(),settlementOwnerDetail));
//设置司机预付运费标示 //设置司机预付运费标示
if (settlementOwnerDetail.getPrepayFreight().compareTo(BigDecimal.ZERO) > 0) { if (settlementOwnerDetail.getPrepayFreight().compareTo(BigDecimal.ZERO) > 0) {
...@@ -212,7 +212,8 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -212,7 +212,8 @@ 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{ //订单结算方式为“卸车净重”时,结算金额=实际净重*平台运费报价-预付运费
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论