提交 61061b52 authored 作者: 艾庆国's avatar 艾庆国

Merge branch 'refs/heads/v17.5_order_child_sync_broker_20240617' into dev

......@@ -3,7 +3,6 @@ package com.clx.performance.feign;
import com.clx.performance.vo.pc.broker.TransportParam;
import com.clx.performance.vo.pc.broker.TransportVO;
import com.msl.common.result.Result;
import feign.Param;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
......@@ -20,7 +19,7 @@ public interface BrokerFeign {
* 运单同步
*/
@RequestMapping(method = RequestMethod.POST, value = "/broker-service/open/transport/saveTransport")
Result<String> saveTransport(@RequestBody TransportParam param);
Result<Object> saveTransport(@RequestBody TransportParam param);
@RequestMapping(value = "/broker-service/open/transport/getTransportByChildNo", method = RequestMethod.GET)
Result<TransportVO> getTransportByChildNo(@RequestParam @NotBlank(message = "运单编号不能为空") String childNo,
......
......@@ -25,20 +25,21 @@ public class NetworkSyncComponent {
public void ownerSettlementSync(SettlementOwner settlementOwner, List<SettlementOwnerDetail> settlementOwnerDetailList){
//TODO 通知网络货运做货主计费开票标识通知
OwnerSettlementSyncParam param = new OwnerSettlementSyncParam();
String mobile = ownerFeign.getOwnerInfo(settlementOwner.getOwnerUserNo()).getData().getMobile();
param.setOwnerMobile(mobile);
List<OwnerSettlementSyncParam.SettlementItem> settlementList = new LinkedList<>();
for (SettlementOwnerDetail settlementOwnerDetail : settlementOwnerDetailList) {
String childNo = settlementOwnerDetail.getChildNo();
OwnerSettlementSyncParam.SettlementItem item = new OwnerSettlementSyncParam.SettlementItem();
item.setChildNo(childNo);
item.setSettlementNo(settlementOwnerDetail.getSettlementNo());
settlementList.add(item);
}
param.setSettlementList(settlementList);
HttpDTO httpDTO = transportFeignService.ownerSettlementSync(param);
String decrypt = ThirdComponent.decrypt(httpDTO.getData());
log.info("通知网络货运做货主计费开票标识通知请求解密后:{}", decrypt);
// 禁用网络货运同步
// OwnerSettlementSyncParam param = new OwnerSettlementSyncParam();
// String mobile = ownerFeign.getOwnerInfo(settlementOwner.getOwnerUserNo()).getData().getMobile();
// param.setOwnerMobile(mobile);
// List<OwnerSettlementSyncParam.SettlementItem> settlementList = new LinkedList<>();
// for (SettlementOwnerDetail settlementOwnerDetail : settlementOwnerDetailList) {
// String childNo = settlementOwnerDetail.getChildNo();
// OwnerSettlementSyncParam.SettlementItem item = new OwnerSettlementSyncParam.SettlementItem();
// item.setChildNo(childNo);
// item.setSettlementNo(settlementOwnerDetail.getSettlementNo());
// settlementList.add(item);
// }
// param.setSettlementList(settlementList);
// HttpDTO httpDTO = transportFeignService.ownerSettlementSync(param);
// String decrypt = ThirdComponent.decrypt(httpDTO.getData());
// log.info("通知网络货运做货主计费开票标识通知请求解密后:{}", decrypt);
}
}
......@@ -3,6 +3,7 @@ package com.clx.performance.component;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONUtil;
import com.clx.order.enums.StatusEnum;
import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.FeignOrderInfoVO;
import com.clx.order.vo.pc.owner.OwnerQuotationDetailVO;
......@@ -25,6 +26,7 @@ import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.enums.settle.SettlementWayEnum;
import com.clx.performance.event.OwnerLoanThawEvent;
import com.clx.performance.event.OwnerRepaymentUpdateEvent;
import com.clx.performance.extranal.user.OrderService;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.OwnerRunningWaterRecord;
......@@ -89,6 +91,8 @@ public class OrderChildLoanComponent {
private final PaymentService paymentService;
private final OrderService orderService;
/**
* 接单校验判断
*
......@@ -201,6 +205,7 @@ public class OrderChildLoanComponent {
*/
@Transactional(rollbackFor = Exception.class)
public void childLoanConfirmAfterProcess(SettlementDriverDetail settlementDriverDetail, SettlementOwnerDetail settlementOwnerDetail, OrderChild orderChild) {
FeignOrderInfoVO orderInfo = orderService.getOrderInfo(settlementDriverDetail.getOrderNo()).orElseThrow(PerformanceResultEnum.ORDER_INVALID);
log.info("1.运单确认收货后借款相关处理执行");
//临时结算金额,借款抵扣后需要重新赋值结算金额为0,如果不需要借款相关逻辑,正常设置结算金额
......@@ -224,6 +229,12 @@ public class OrderChildLoanComponent {
log.info("3.当前是网运单,但预付运费不为0,说明已经处理");
return;
}
if (!Objects.equals(orderInfo.getSupportLoan(), StatusEnum.YES.getCode())){
log.info("3.2当前运单不支持货主借款");
return;
}
Integer loanTypeFlag = null;
String childNo = settlementDriverDetail.getChildNo();
......
......@@ -4,9 +4,11 @@ package com.clx.performance.dao.impl.settle;
import com.clx.performance.dao.settle.OrderChildSyncTransportRecordDao;
import com.clx.performance.mapper.settle.OrderChildSyncTransportRecordMapper;
import com.clx.performance.model.settle.OrderChildSyncTransportRecord;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import java.time.LocalDateTime;
import java.util.List;
/**
......@@ -19,7 +21,10 @@ public class OrderChildSyncTransportRecordDaoImpl extends BaseDaoImpl<OrderChild
@Override
public List<OrderChildSyncTransportRecord> selectListForJob() {
return baseMapper.selectList(lQrWrapper().eq(OrderChildSyncTransportRecord::getStatus, 0));
return baseMapper.selectList(lQrWrapper()
.gt(OrderChildSyncTransportRecord::getCreateTime, LocalDateTime.now().minusMonths(3))
.eq(OrderChildSyncTransportRecord::getStatus, 0)
);
}
@Override
......
......@@ -7,5 +7,5 @@ public interface BrokerService {
void orderChildSync(TransportParam param);
TransportVO getTransportByChildNo(String childNo);
TransportVO getOrderChildStatus(String childNo);
}
package com.clx.performance.extranal.broker.impl;
import com.clx.performance.config.SettlementConfig;
import com.clx.performance.enums.ResultEnum;
import com.clx.performance.extranal.broker.BrokerService;
import com.clx.performance.feign.BrokerFeign;
import com.clx.performance.vo.pc.broker.TransportParam;
import com.clx.performance.vo.pc.broker.TransportVO;
import com.msl.common.exception.ServiceSystemException;
import com.msl.common.result.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -22,13 +24,14 @@ public class BrokerServiceImpl implements BrokerService {
param.setUserCode(settlementConfig.getBrokerUserCode());
Result<String> result = brokerFeign.saveTransport(param);
Result<Object> result = brokerFeign.saveTransport(param);
if (result.getCode() != 0) {
log.info("运单同步网络货运失败, msg:{}", result.getMsg());
throw new ServiceSystemException(ResultEnum.FEIGN_ERROR, result.getMsg());
}
}
@Override
public TransportVO getTransportByChildNo(String childNo) {
public TransportVO getOrderChildStatus(String childNo) {
Result<TransportVO> result = brokerFeign.getTransportByChildNo(childNo, settlementConfig.getBrokerUserCode());
if (result.getCode() != 0) {
......
......@@ -49,7 +49,7 @@ public class OrderChildPaySyncTransportJob {
private final OrderGoodsDao orderGoodsDao;
/**
* 同步网络货运
* 同步网络货运运单支付(禁用网络货运同步)
*/
// @XxlJob("orderChildPaySyncTransportJob")
public void orderChildPaySyncTransportJob() {
......
......@@ -49,7 +49,7 @@ public class OrderChildSyncTransportInvoiceExceptionJob {
private final SettlementDriverDetailDao settlementDriverDetailDao;
/**
* 同步网络货运(禁用)
* 同步网络货运(禁用网络货运同步
*/
// @XxlJob("orderChildSyncTransportInvoiceExceptionJob")
@Transactional(rollbackFor = Exception.class)
......
......@@ -26,13 +26,12 @@ import com.clx.performance.model.*;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.service.TransportSyncService;
import com.clx.performance.service.broker.OrderChildSyncBrokerService;
import com.clx.performance.service.broker.OrderChildBrokerService;
import com.clx.performance.service.settle.NetworkDriverRunningWaterRecordService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Component;
......@@ -72,7 +71,7 @@ public class OrderChildSyncTransportListener {
private final ApplicationEventPublisher applicationEventPublisher;
private final InvoicingCompanyService invoicingCompanyService;
private final SettlementConfig settlementConfig;
private final OrderChildSyncBrokerService orderChildSyncBrokerService;
private final OrderChildBrokerService orderChildBrokerService;
private final OrderChildDao orderChildDao;
/**
* 承运同步网络货运运单
......@@ -105,13 +104,7 @@ public class OrderChildSyncTransportListener {
SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao.getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao.getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
// // 开票服务费
// settlementOwnerDetail.setInvoiceServiceFee(invoiceServiceFeeCalc(orderChild.getSettlementWay(), settlementOwnerDetail));
// // 开票金额
// settlementOwnerDetail.setInvoiceFreight(invoiceFreightCalc(orderChild.getSettlementWay(),
// orderGoods.getInvoiceServiceFeeRate(), settlementOwnerDetail));
// // 同步网络货运
// // 同步网络货运(禁用网络货运同步)
// ThirdOrderChildBrokerParam param = transportSyncService.generateOrderChildSync(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail);
// HttpDTO httpDTOResult = transportFeignService.orderChildSync(param);
// String decrypt = ThirdComponent.decrypt(httpDTOResult.getData());
......@@ -119,7 +112,7 @@ public class OrderChildSyncTransportListener {
// extracted(orderChild, bean, JSONUtil.parse(bean).toString(), settlementOwnerDetail, invoiceType, settlementDriverDetail);
// 同步broker
orderChildSyncBrokerService.orderChildSync(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail);
orderChildBrokerService.orderChildSync(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail);
}
public void extracted(OrderChild orderChild, OrderChildSyncDTO bean, String remark,
......
......@@ -93,7 +93,7 @@ public class OrderChild implements HasKey<Integer> {
private Integer settlementAccountPeriod; //结算账期 1拉运完成结 2月结
private Integer settlementWay; //结算方式 1装车净重
private Integer settlementWay; //结算方式 1装车净重 2卸车净重 3卸车净重(减货损)
private Integer invoicingCompanyId; //开票公司id
private String invoicingCompanyShorterName; //开票公司简称
private String invoicingCompanyGroupCode; //开票公司统一社会信用代码
......
......@@ -5,7 +5,7 @@ import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwnerDetail;
public interface OrderChildSyncBrokerService {
public interface OrderChildBrokerService {
void orderChildSync(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail,
SettlementDriverDetail settlementDriverDetail);
......
......@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.order.enums.InvoicingCompanyEnum;
import com.clx.order.enums.OrderEnum;
import com.clx.order.enums.QuotationEnum;
import com.clx.order.enums.VehicleUsageEnum;
import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.FeignAddressVO;
......@@ -447,10 +448,14 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild.setInvoicingCompanyGroupCode(orderInfo.getInvoicingCompanyGroupCode());
orderChild.setReportFlag(orderInfo.getReportFlag());
// 平台服务费
orderChild.setPlatformServiceFeeRate(orderGoods.getPlatformServiceFeeRate());
orderChild.setPlatformServiceFee(orderGoods.getDeposit());
orderChild.setDeposit(orderGoods.getDeposit());
// 平台服务费 (订单运费报价为“未税”订单结算方式为“卸车净重(减货损))
if (Objects.equals(orderGoods.getPlatformFreightQuotationTaxType(),
QuotationEnum.PlatformFreightQuotationTaxType.NO.getCode())
&& Objects.equals(orderChild.getSettleTime(), SettlementWayEnum.WayType.UNLOAD_LOSS.getCode())) {
orderChild.setPlatformServiceFeeRate(orderGoods.getPlatformServiceFeeRate());
orderChild.setPlatformServiceFee(orderGoods.getDeposit());
orderChild.setDeposit(orderGoods.getDeposit());
}
// 更新货单数据
updateOrderGoodsAmount(orderGoods, orderChild);
......
......@@ -13,7 +13,7 @@ import com.clx.performance.model.OrderChildImage;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.service.broker.OrderChildSyncBrokerService;
import com.clx.performance.service.broker.OrderChildBrokerService;
import com.clx.performance.vo.pc.broker.*;
import com.clx.user.feign.DocumentFeign;
import com.clx.user.feign.DriverFeign;
......@@ -31,7 +31,7 @@ import java.util.List;
@Slf4j
@Service
public class OrderChildSyncBroker implements OrderChildSyncBrokerService {
public class OrderChildBrokerServiceImpl implements OrderChildBrokerService {
@Autowired
private BrokerService brokerService;
......@@ -228,7 +228,7 @@ public class OrderChildSyncBroker implements OrderChildSyncBrokerService {
orderChildInfo.setPayFinishedTime(DateUtils.formatDateTime(orderChild.getPayTime()).get());
orderChildInfo.setLoadTime(DateUtils.formatDateTime(orderChild.getLoadTime()).get());
orderChildInfo.setUnloadTime(DateUtils.formatDateTime(orderChild.getUnloadTime()).get());
orderChildInfo.setPayFinishedTime(DateUtils.formatDateTime(orderChild.getFinishTime()).get());
orderChildInfo.setPayFinishedTime(DateUtils.formatDateTime(orderChild.getConfirmTime()).get());
orderChildInfo.setReceiveTare(orderChild.getUnloadTare());
orderChildInfo.setReceiveRough(orderChild.getUnloadRough());
......
......@@ -226,10 +226,19 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
@Override
public void invoiceTypeSync(SettlementInvoiceTypeSyncMqParam mq) {
OrderChild orderChild = orderChildDao.getByChildNo(mq.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao
.getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
if (!Objects.equals(settlementOwnerDetail.getInvoiceChannel(), SettlementOwnerDetailEnum.InvoiceChannel.BROKER.getCode())){
return;
}
try {
// 获取状态
TransportVO result = brokerService.getTransportByChildNo(mq.getChildNo());
TransportVO result = brokerService.getOrderChildStatus(mq.getChildNo());
if (result == null){
log.info("运单号 {} 未找到运单信息",mq.getChildNo());
return;
}
Integer invoiceType;
if (Objects.equals(result.getRiskStatus(), 1) || Objects.equals(result.getRiskStatus(), 2)) {
......@@ -260,8 +269,19 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
@Override
public void invoiceStatusSync(SettlementInvoiceStatusSyncMqParam mq) {
OrderChild orderChild = orderChildDao.getByChildNo(mq.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao
.getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
if (!Objects.equals(settlementOwnerDetail.getInvoiceChannel(), SettlementOwnerDetailEnum.InvoiceChannel.BROKER.getCode())){
return;
}
// 获取状态
TransportVO result = brokerService.getTransportByChildNo(mq.getChildNo());
TransportVO result = brokerService.getOrderChildStatus(mq.getChildNo());
if (result == null){
log.info("运单号 {} 未找到运单信息",mq.getChildNo());
return;
}
if (Objects.equals(result.getInvoiceStatus(), 1) ) {
InvoicingStatusNotifyDTO invoicingStatusNotifyDTO = new InvoicingStatusNotifyDTO();
......@@ -274,11 +294,21 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
@Override
public void payStatusSync(SettlementPayStatusSyncMqParam mq) {
OrderChild orderChild = orderChildDao.getByChildNo(mq.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao
.getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
if (!Objects.equals(settlementOwnerDetail.getInvoiceChannel(), SettlementOwnerDetailEnum.InvoiceChannel.BROKER.getCode())){
return;
}
// 获取状态
TransportVO result = brokerService.getTransportByChildNo(mq.getChildNo());
TransportVO result = brokerService.getOrderChildStatus(mq.getChildNo());
if (result == null){
log.info("运单号 {} 未找到运单信息",mq.getChildNo());
return;
}
if (Objects.equals(result.getSettleStatus(), 1) ) {
PayStatusNotifyDTO payStatusNotifyDTO = new PayStatusNotifyDTO();
payStatusNotifyDTO.setChildNo(mq.getChildNo());
orderChildSyncTransportRecordService.updateStatus(payStatusNotifyDTO);
......@@ -293,25 +323,30 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
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.setDriverMobile(orderChild.getDriverMobile());
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());
SettlementPlatformServiceFee settlementPlatformServiceFee = null;
if (settlementDriverDetail.getPlatformServiceFee().compareTo(BigDecimal.ZERO) > 0) {
settlementPlatformServiceFee = new SettlementPlatformServiceFee();
settlementPlatformServiceFee.setChildNo(settlementDriverDetail.getChildNo());
settlementPlatformServiceFee.setDriverUserNo(settlementDriverDetail.getDriverUserNo());
settlementPlatformServiceFee.setDriverName(settlementDriverDetail.getDriverName());
settlementPlatformServiceFee.setDriverMobile(orderChild.getDriverMobile());
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);
if (settlementPlatformServiceFee != null) {
settlementPlatformServiceFeeDao.saveEntity(settlementPlatformServiceFee);
}
log.info("更新网络标识 {} ",orderChild.getChildNo());
// 更新网络标识
settlementService.updateSettlementDetailInvoiceType(settlementOwnerDetail.getChildNo(), SettlementOwnerEnum.InvoiceType.ORDINARY.getCode());
......
......@@ -26,6 +26,7 @@ import com.clx.performance.model.OwnerAccount;
import com.clx.performance.model.OwnerRunningWaterRecord;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.service.settle.SettlementCommonService;
import com.clx.performance.service.settle.SettlementMqService;
import com.clx.performance.service.settle.SettlementService;
import lombok.extern.slf4j.Slf4j;
......@@ -70,6 +71,8 @@ public class SettlementServiceImpl implements SettlementService {
private InvoicingCompanyService invoicingCompanyService;
@Autowired
private SettlementConfig settlementConfig;
@Autowired
private SettlementCommonService settlementCommonService;
@Override
@Transactional(rollbackFor = Exception.class)
......@@ -97,15 +100,15 @@ public class SettlementServiceImpl implements SettlementService {
if (settlementOwnerDetail.getSettlementFreight().compareTo(BigDecimal.ZERO) == 0) {
settlementOwnerDetail.setFinalPaymentStatus(SettlementOwnerDetailEnum.FinalPaymentStatus.NO_REQUIRE.getCode());
}
// 如果开票标识为“普通单”时,开票费率从开票公司“五寨华祥”中获取
settlementOwnerDetail.setInvoiceServiceFeeRate(BigDecimal.ZERO);
// 设置开票公司信息
// 如果开票标识为“普通单”时,开票公司“五寨华祥”
InvoicingCompanyVO invoiceCompany = invoicingCompanyService.getInvoicingCompanyByGroupCode(
settlementConfig.getOrdinaryInvoiceCompanyGroupCode());
//设置开票公司信息
settlementOwnerDetail.setInvoicingCompanyId(invoiceCompany.getId());
settlementOwnerDetail.setInvoicingCompanyShorterName(invoiceCompany.getCompanyShorterName());
settlementOwnerDetail.setInvoicingCompanyGroupCode(invoiceCompany.getCompanyGroupCode());
settlementOwnerDetail.setInvoiceServiceFeeRate(invoiceCompany.getServiceFeeRate());
settlementDriverDetail.setInvoicingCompanyId(invoiceCompany.getId());
settlementDriverDetail.setInvoicingCompanyShorterName(invoiceCompany.getCompanyShorterName());
......@@ -114,17 +117,17 @@ public class SettlementServiceImpl implements SettlementService {
if (settlementDriverDetail.getSettlementFreight().compareTo(BigDecimal.ZERO) == 0) {
settlementOwnerDetail.setFinalPaymentStatus(SettlementOwnerDetailEnum.FinalPaymentStatus.NO_REQUIRE.getCode());
}
// 如果开票标识为“网运单”时,开票费率取货单单所记录的开票费率
settlementOwnerDetail.setInvoiceServiceFeeRate(
orderGoods.getInvoiceServiceFeeRate()==null? BigDecimal.ZERO : orderGoods.getInvoiceServiceFeeRate());
}
settlementOwnerDetail.setInvoiceType(invoiceType);
settlementDriverDetail.setInvoiceType(invoiceType);
// 开票服务费
settlementOwnerDetail.setInvoiceServiceFee(invoiceServiceFeeCalc(orderChild.getSettlementWay(), settlementOwnerDetail));
settlementOwnerDetail.setInvoiceServiceFee(
settlementCommonService.invoiceServiceFeeCalc(orderChild.getSettlementWay(), settlementOwnerDetail));
// 开票金额
settlementOwnerDetail.setInvoiceFreight(invoiceFreightCalc(orderChild.getSettlementWay(),
settlementOwnerDetail.setInvoiceFreight(
settlementCommonService.invoiceFreightCalc(orderChild.getSettlementWay(),
orderGoods.getInvoiceServiceFeeRate(), settlementOwnerDetail));
// 结算金额
......@@ -220,41 +223,6 @@ 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, BigDecimal invoiceServiceFeeRate, SettlementOwnerDetail settlementOwnerDetail) {
if (Objects.equals(settlementWay, SettlementWayEnum.WayType.LOAD.getCode())) { //订单结算方式为“装车净重”时,开票金额=实际净重*平台运费报价-货损金额。
return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice())
.subtract(settlementOwnerDetail.getLossFreight());
}
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());
}
}
/**
* 结算金额
*/
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论