提交 9c243c1e authored 作者: 艾庆国's avatar 艾庆国

承运与无车承运对接

上级 65a11510
...@@ -73,6 +73,9 @@ public class OrderChildSyncTransportListener { ...@@ -73,6 +73,9 @@ public class OrderChildSyncTransportListener {
private final InvoicingCompanyService invoicingCompanyService; private final InvoicingCompanyService invoicingCompanyService;
private final SettlementConfig settlementConfig; private final SettlementConfig settlementConfig;
/**
* 承运同步网络货运运单
*/
@RabbitListener(queues = RabbitKeyConstants.ORDER_CHILD_SYNC_TRANSPORT_QUEUE) @RabbitListener(queues = RabbitKeyConstants.ORDER_CHILD_SYNC_TRANSPORT_QUEUE)
public void onMessage(String message) { public void onMessage(String message) {
OrderChild orderChild = JSONUtil.toBean(message, OrderChild.class); OrderChild orderChild = JSONUtil.toBean(message, OrderChild.class);
...@@ -165,12 +168,15 @@ public class OrderChildSyncTransportListener { ...@@ -165,12 +168,15 @@ public class OrderChildSyncTransportListener {
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO); settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
settlementOwnerDetail.setFinalPaymentStatus(SettlementOwnerDetailEnum.FinalPaymentStatus.NO.getCode()); settlementOwnerDetail.setFinalPaymentStatus(SettlementOwnerDetailEnum.FinalPaymentStatus.NO.getCode());
} }
} else { }
else {
log.info("当前OrderChildSyncTransportListener监听同步网络货运失败,变为普通单,运单号{}, 错误信息{}", orderChild.getChildNo(), remark); log.info("当前OrderChildSyncTransportListener监听同步网络货运失败,变为普通单,运单号{}, 错误信息{}", orderChild.getChildNo(), remark);
settlementDriverDetail.setPrepayFreightFlag(SettlementDriverEnum.PrepayFreightFlag.NO_PAY.getCode()); settlementDriverDetail.setPrepayFreightFlag(SettlementDriverEnum.PrepayFreightFlag.NO_PAY.getCode());
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO); settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
settlementOwnerDetail.setFinalPaymentStatus(SettlementOwnerDetailEnum.FinalPaymentStatus.NO.getCode()); settlementOwnerDetail.setFinalPaymentStatus(SettlementOwnerDetailEnum.FinalPaymentStatus.NO.getCode());
} }
// 结算金额
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)) {
......
...@@ -418,10 +418,7 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -418,10 +418,7 @@ public class OrderChildServiceImpl implements OrderChildService {
// 平台服务费 // 平台服务费
orderChild.setPlatformServiceFeeRate(orderGoods.getPlatformServiceFeeRate()); orderChild.setPlatformServiceFeeRate(orderGoods.getPlatformServiceFeeRate());
orderChild.setPlatformServiceFee(orderChild.getPlatformServiceFeeRate()!=null
? orderChild.getFreight().multiply(orderChild.getPlatformServiceFeeRate())
.movePointLeft(2).setScale(0,RoundingMode.HALF_UP)
: null);
orderChild.setDeposit(orderGoods.getDeposit()); orderChild.setDeposit(orderGoods.getDeposit());
// 更新货单数据 // 更新货单数据
...@@ -1169,7 +1166,6 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1169,7 +1166,6 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild.setStatus(OrderChildEnum.Status.UNSETTLE.getCode()); orderChild.setStatus(OrderChildEnum.Status.UNSETTLE.getCode());
orderChild.setConfirmTime(LocalDateTime.now()); orderChild.setConfirmTime(LocalDateTime.now());
orderChildDao.updateDriverConfirm(orderChild); orderChildDao.updateDriverConfirm(orderChild);
// 更新车辆状态 // 更新车辆状态
......
...@@ -6,10 +6,7 @@ import com.clx.performance.config.MslPaymentConfig; ...@@ -6,10 +6,7 @@ import com.clx.performance.config.MslPaymentConfig;
import com.clx.performance.constant.RedissonConstants; import com.clx.performance.constant.RedissonConstants;
import com.clx.performance.dao.OrderChildDao; import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao; import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.settle.SettlementDriverDao; import com.clx.performance.dao.settle.*;
import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.dao.settle.SettlementOwnerDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.enums.OrderChildEnum; import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.enums.OrderChildLogEnum; import com.clx.performance.enums.OrderChildLogEnum;
import com.clx.performance.enums.PayRemarkEnum; import com.clx.performance.enums.PayRemarkEnum;
...@@ -20,10 +17,7 @@ import com.clx.performance.extranal.user.OrderService; ...@@ -20,10 +17,7 @@ import com.clx.performance.extranal.user.OrderService;
import com.clx.performance.extranal.user.OwnerInfoService; import com.clx.performance.extranal.user.OwnerInfoService;
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.SettlementDriver; import com.clx.performance.model.settle.*;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwner;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.pc.payment.PayParam; import com.clx.performance.param.pc.payment.PayParam;
import com.clx.performance.service.OrderChildLogService; import com.clx.performance.service.OrderChildLogService;
import com.clx.performance.service.PaymentService; import com.clx.performance.service.PaymentService;
...@@ -94,6 +88,9 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic ...@@ -94,6 +88,9 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
@Autowired @Autowired
private OrderChildDao orderChildDao; private OrderChildDao orderChildDao;
@Autowired
private SettlementPlatformServiceFeeDao settlementPlatformServiceFeeDao;
@Autowired @Autowired
private OrderChildLogService orderChildLogService; private OrderChildLogService orderChildLogService;
...@@ -200,8 +197,30 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic ...@@ -200,8 +197,30 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void settlementDetailAdd(SettlementDetailAddMqParam mq) { public void settlementDetailAdd(SettlementDetailAddMqParam mq) {
SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao.getEntityByKey(mq.getSettlementOwnerDetailId()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND); SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao.getEntityByKey(mq.getSettlementOwnerDetailId()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
//SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao.getEntityByKey(mq.getSettlementDriverDetailId()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND); SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao.getEntityByKey(mq.getSettlementDriverDetailId()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
OrderChild orderChild = orderChildDao.getByChildNo(settlementDriverDetail.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
SettlementPlatformServiceFee settlementPlatformServiceFee = new SettlementPlatformServiceFee();
settlementPlatformServiceFee.setChildNo(settlementDriverDetail.getChildNo());
settlementPlatformServiceFee.setDriverUserNo(settlementDriverDetail.getDriverUserNo());
settlementPlatformServiceFee.setDriverName(settlementDriverDetail.getDriverName());
settlementPlatformServiceFee.setSendAddressId(orderChild.getSendAddressId());
settlementPlatformServiceFee.setSendAddress(orderChild.getSendAddress());
settlementPlatformServiceFee.setReceiveAddressId(orderChild.getReceiveAddressId());
settlementPlatformServiceFee.setReceiveAddress(orderChild.getReceiveAddress());
settlementPlatformServiceFee.setTruckNo(orderChild.getTruckNo());
settlementPlatformServiceFee.setSettlementFreight(settlementDriverDetail.getSettlementFreight());
settlementPlatformServiceFee.setInvoiceServiceFeeRate(settlementDriverDetail.getPlatformServiceFeeRate());
settlementPlatformServiceFee.setInvoiceServiceFee(settlementDriverDetail.getPlatformServiceFee());
// 平台服务费
orderChild.setPlatformServiceFee(settlementDriverDetail.getPlatformServiceFee());
orderChildDao.updatePlatformServiceFee(orderChild);
settlementPlatformServiceFeeDao.saveEntity(settlementPlatformServiceFee);
// 更新网络标识
settlementService.updateSettlementDetailInvoiceType(settlementOwnerDetail.getChildNo(), SettlementOwnerEnum.InvoiceType.ORDINARY.getCode()); settlementService.updateSettlementDetailInvoiceType(settlementOwnerDetail.getChildNo(), SettlementOwnerEnum.InvoiceType.ORDINARY.getCode());
} }
......
...@@ -2,9 +2,12 @@ package com.clx.performance.service.impl.settle; ...@@ -2,9 +2,12 @@ package com.clx.performance.service.impl.settle;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.clx.order.enums.OrderEnum; import com.clx.order.enums.OrderEnum;
import com.clx.order.vo.pc.carrier.InvoicingCompanyVO;
import com.clx.performance.component.IdGenerateSnowFlake; import com.clx.performance.component.IdGenerateSnowFlake;
import com.clx.performance.config.SettlementConfig;
import com.clx.performance.constant.RabbitKeyConstants; import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderChildDao; import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.OwnerAccountDao; import com.clx.performance.dao.OwnerAccountDao;
import com.clx.performance.dao.OwnerRunningWaterRecordDao; import com.clx.performance.dao.OwnerRunningWaterRecordDao;
import com.clx.performance.dao.settle.SettlementDriverDetailDao; import com.clx.performance.dao.settle.SettlementDriverDetailDao;
...@@ -17,7 +20,9 @@ import com.clx.performance.enums.settle.SettlementOwnerDetailEnum; ...@@ -17,7 +20,9 @@ import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum; import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.enums.settle.SettlementWayEnum; import com.clx.performance.enums.settle.SettlementWayEnum;
import com.clx.performance.event.OwnerLoanThawEvent; import com.clx.performance.event.OwnerLoanThawEvent;
import com.clx.performance.extranal.order.InvoicingCompanyService;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.OwnerAccount; import com.clx.performance.model.OwnerAccount;
import com.clx.performance.model.OwnerRunningWaterRecord; import com.clx.performance.model.OwnerRunningWaterRecord;
import com.clx.performance.model.settle.SettlementDriverDetail; import com.clx.performance.model.settle.SettlementDriverDetail;
...@@ -44,6 +49,8 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -44,6 +49,8 @@ public class SettlementServiceImpl implements SettlementService {
@Autowired @Autowired
private OrderChildDao orderChildDao; private OrderChildDao orderChildDao;
@Autowired @Autowired
private OrderGoodsDao orderGoodsDao;
@Autowired
private SettlementOwnerDetailDao settlementOwnerDetailDao; private SettlementOwnerDetailDao settlementOwnerDetailDao;
@Autowired @Autowired
private SettlementDriverDetailDao settlementDriverDetailDao; private SettlementDriverDetailDao settlementDriverDetailDao;
...@@ -60,21 +67,29 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -60,21 +67,29 @@ public class SettlementServiceImpl implements SettlementService {
@Autowired @Autowired
private ApplicationEventPublisher applicationEventPublisher; private ApplicationEventPublisher applicationEventPublisher;
@Autowired
private InvoicingCompanyService invoicingCompanyService;
@Autowired
private SettlementConfig settlementConfig;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateSettlementDetailInvoiceType(String childNo, Integer invoiceType) { public void updateSettlementDetailInvoiceType(String childNo, Integer invoiceType) {
OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND); OrderChild orderChild = orderChildDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).get();
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);
// 开票金额 // 结算金额
settlementOwnerDetail.setInvoiceFreight(invoiceFreightCalc(orderChild.getSettlementWay(), settlementOwnerDetail)); settlementOwnerDetail.setSettlementFreight(settlementFreightCalc(orderChild.getSettlementWay(), settlementOwnerDetail));
if (settlementDriverDetail.getSettlementFreight().compareTo(BigDecimal.ZERO) <= 0) { if (settlementDriverDetail.getSettlementFreight().compareTo(BigDecimal.ZERO) <= 0) {
settlementDriverDetail.setPrepayFreightFlag(SettlementDriverEnum.PrepayFreightFlag.NO_PAY.getCode()); settlementDriverDetail.setPrepayFreightFlag(SettlementDriverEnum.PrepayFreightFlag.NO_PAY.getCode());
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO); settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
} else { } else {
// 发mq (同步网络货运)
Message message = MessageBuilder.withBody(JSONUtil.parse(orderChild).toString().getBytes()).build(); Message message = MessageBuilder.withBody(JSONUtil.parse(orderChild).toString().getBytes()).build();
rabbitTemplate.send( rabbitTemplate.send(
RabbitKeyConstants.ORDER_CHILD_SYNC_TRANSPORT_EXCHANGE, RabbitKeyConstants.ORDER_CHILD_SYNC_TRANSPORT_ROUTE_KEY, message RabbitKeyConstants.ORDER_CHILD_SYNC_TRANSPORT_EXCHANGE, RabbitKeyConstants.ORDER_CHILD_SYNC_TRANSPORT_ROUTE_KEY, message
...@@ -82,28 +97,39 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -82,28 +97,39 @@ public class SettlementServiceImpl implements SettlementService {
return; return;
} }
// 结算金额
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());
} }
// 如果开票标识为“普通单”时,开票费率从开票公司“五寨华祥”中获取
settlementOwnerDetail.setInvoiceServiceFeeRate(BigDecimal.ZERO);
InvoicingCompanyVO invoiceCompany = invoicingCompanyService.getInvoicingCompanyByGroupCode(
settlementConfig.getInvoiceCompanyDefault().getCompanyGroupCode());
//设置开票公司信息
settlementOwnerDetail.setInvoicingCompanyId(invoiceCompany.getId());
settlementOwnerDetail.setInvoicingCompanyShorterName(invoiceCompany.getCompanyShorterName());
settlementOwnerDetail.setInvoicingCompanyGroupCode(invoiceCompany.getCompanyGroupCode());
settlementDriverDetail.setInvoicingCompanyId(invoiceCompany.getId());
settlementDriverDetail.setInvoicingCompanyShorterName(invoiceCompany.getCompanyShorterName());
settlementDriverDetail.setInvoicingCompanyGroupCode(invoiceCompany.getCompanyGroupCode());
} else { } else {
if (settlementDriverDetail.getSettlementFreight().compareTo(BigDecimal.ZERO) == 0) { if (settlementDriverDetail.getSettlementFreight().compareTo(BigDecimal.ZERO) == 0) {
settlementOwnerDetail.setFinalPaymentStatus(SettlementOwnerDetailEnum.FinalPaymentStatus.NO_REQUIRE.getCode()); settlementOwnerDetail.setFinalPaymentStatus(SettlementOwnerDetailEnum.FinalPaymentStatus.NO_REQUIRE.getCode());
} }
// 如果开票标识为“网运单”时,开票费率取货单单所记录的开票费率
settlementOwnerDetail.setInvoiceServiceFeeRate(
orderGoods.getInvoiceServiceFeeRate()==null? BigDecimal.ZERO : orderGoods.getInvoiceServiceFeeRate());
} }
settlementOwnerDetail.setInvoiceType(invoiceType); settlementOwnerDetail.setInvoiceType(invoiceType);
settlementDriverDetail.setInvoiceType(invoiceType); settlementDriverDetail.setInvoiceType(invoiceType);
// 平台服务费 开票服务费 // 开票服务费
settlementDriverDetail.setPlatformServiceFeeRate(orderChild.getPlatformServiceFeeRate()); settlementOwnerDetail.setInvoiceServiceFee(invoiceServiceFeeCalc(orderChild.getSettlementWay(), settlementOwnerDetail));
settlementDriverDetail.setPlatformServiceFee(settlementDriverDetail.getSettlementFreight() // 开票金额
.multiply(settlementDriverDetail.getPlatformServiceFeeRate()) settlementOwnerDetail.setInvoiceFreight(invoiceFreightCalc(orderChild.getSettlementWay(),
.setScale(0, RoundingMode.HALF_UP)); orderGoods.getInvoiceServiceFeeRate(), settlementOwnerDetail));
orderChild.setPlatformServiceFee(settlementDriverDetail.getPlatformServiceFee());
orderChildDao.updatePlatformServiceFee(orderChild);
log.info("当前货主结算信息{},车主结算信息:{}", JSONUtil.parse(settlementOwnerDetail), JSONUtil.parse(settlementDriverDetail)); log.info("当前货主结算信息{},车主结算信息:{}", JSONUtil.parse(settlementOwnerDetail), JSONUtil.parse(settlementDriverDetail));
settlementOwnerDetailDao.updateInvoiceType(settlementOwnerDetail); settlementOwnerDetailDao.updateInvoiceType(settlementOwnerDetail);
...@@ -195,15 +221,37 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -195,15 +221,37 @@ public class SettlementServiceImpl implements SettlementService {
} }
} }
/**
* 开票服务费金额
*/
private BigDecimal invoiceServiceFeeCalc(Integer settlementWay, SettlementOwnerDetail settlementOwnerDetail) {
return settlementOwnerDetail.getFreight().subtract(settlementOwnerDetail.getLossFreight())
.divide(BigDecimal.ONE.subtract(settlementOwnerDetail.getInvoiceServiceFeeRate()), 0, RoundingMode.HALF_UP)
.multiply(settlementOwnerDetail.getInvoiceServiceFeeRate()).setScale(0, RoundingMode.HALF_UP);
}
/** /**
* 开票金额 * 开票金额
*/ */
private BigDecimal invoiceFreightCalc(Integer settlementWay, SettlementOwnerDetail settlementOwnerDetail) { private BigDecimal invoiceFreightCalc(Integer settlementWay, BigDecimal invoiceServiceFeeRate, 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 if (Objects.equals(settlementWay, SettlementWayEnum.WayType.UNLOAD_LOSS.getCode())) {
if (invoiceServiceFeeRate!=null){
//结算方式为“卸车净重(减货损)”,平台运费报价为“未税”时,开票金额=平台运费单价*实际净重-货损单价*货损吨数+开票服务费。
return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice())
.subtract(settlementOwnerDetail.getLossPrice())
.add(settlementOwnerDetail.getInvoiceServiceFee());
}
else{
//结算方式为“卸车净重(减货损)”,平台运费报价为“含税”时 开票金额=平台运费单价*实际净重-货损单价*货损吨数
return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice())
.subtract(settlementOwnerDetail.getLossFreight());
}
}
else { //订单结算方式为“卸车净重”时,开票金额=实际净重*平台运费报价。
return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice()); return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice());
} }
} }
...@@ -215,7 +263,14 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -215,7 +263,14 @@ public class SettlementServiceImpl implements SettlementService {
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 if (Objects.equals(settlementWay, SettlementWayEnum.WayType.UNLOAD_LOSS.getCode())) {
//结算方式为“卸车净重(减货损)“,结算金额=开票金额-预付运费金额-借款抵扣金额。
return settlementOwnerDetail.getInvoiceFreight()
.subtract(settlementOwnerDetail.getPrepayFreight())
.subtract(settlementOwnerDetail.getLoanFreight());
}else { //订单结算方式为“卸车净重”时,结算金额=实际净重*平台运费报价-预付运费
return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice()).subtract(settlementOwnerDetail.getPrepayFreight()); return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice()).subtract(settlementOwnerDetail.getPrepayFreight());
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论