提交 000319c6 authored 作者: 马路路's avatar 马路路

Merge branch 'v30.6_order_quote_20241022' into release_jdk17

......@@ -227,4 +227,17 @@ public class RabbitSettlementConfig {
.with(RabbitKeySettlementConstants.SETTLEMENT_DRIVER_CONFIRM_ROUTING_KEY);
}
/**
* 网络货运运单同步成功
*/
@Bean
public Queue settlementOrderChildBrokerSyncQueue() {
return new Queue(RabbitKeySettlementConstants.SETTLEMENT_ORDER_CHILD_BROKER_SYNC_QUEUE);
}
@Bean
public Binding settlementOrderChildBrokerSyncQueueBinding() {
return BindingBuilder.bind(settlementOrderChildBrokerSyncQueue()).to(settlementDefaultExchange())
.with(RabbitKeySettlementConstants.SETTLEMENT_ORDER_CHILD_BROKER_SYNC_ROUTING_KEY);
}
}
......@@ -117,4 +117,10 @@ public class RabbitKeySettlementConstants {
public static final String SETTLEMENT_DRIVER_CONFIRM_QUEUE = PREFIX +"settlementDriver.confirm"+QUEUE;
public static final String SETTLEMENT_DRIVER_CONFIRM_ROUTING_KEY = PREFIX +"settlementDriver.confirm"+QUEUE_ROUTING_KEY;
/**
* 网络货运运单同步成功
*/
public static final String SETTLEMENT_ORDER_CHILD_BROKER_SYNC_QUEUE = PREFIX +"settlementOrderChildBroker.sync"+QUEUE;
public static final String SETTLEMENT_ORDER_CHILD_BROKER_SYNC_ROUTING_KEY = PREFIX +"settlementOrderChildBroker.sync"+QUEUE_ROUTING_KEY;
}
......@@ -9,4 +9,6 @@ public interface InvoicingCompanyService {
InvoicingCompanyVO getInvoicingCompanyByGroupCode(String companyGroupCode);
Integer getInvoicingConfigTypeByOrderNo(String orderNo);
}
......@@ -29,4 +29,12 @@ public class InvoicingCompanyServiceImpl implements InvoicingCompanyService {
.map(Result::getData)
.orNull();
}
@Override
public Integer getInvoicingConfigTypeByOrderNo(String orderNo) {
return Optional.of(invoicingCompanyFeign.getInvoicingConfigTypeByOrderNo(orderNo))
.filter(Result::succeed)
.map(Result::getData)
.orNull();
}
}
package com.clx.performance.listener.settle;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.clx.performance.common.MqWrapper;
import com.clx.performance.constant.RabbitKeySettlementConstants;
import com.clx.performance.service.settle.SettlementMqHandlerService;
import com.clx.performance.vo.mq.settle.OrderChildBrokerSyncMqParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @Author: 艾庆国
* @Description: 网络货运同步 mq
* @Date: 2023-10-20 11:45:08
* @Version: 1.0
*/
@Slf4j
@Component
public class SettlementOrderChildBrokerSyncListener {
@Autowired
private SettlementMqHandlerService settlementMqHandlerService;
@RabbitListener(queues = RabbitKeySettlementConstants.SETTLEMENT_ORDER_CHILD_BROKER_SYNC_QUEUE)
public void process(Message message) {
try{
log.info("结算-网络货运同步, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()),
new TypeReference<MqWrapper<OrderChildBrokerSyncMqParam>>(){}).getData());
}catch (Exception e){
log.info("结算-网络货运同步 失败",e);
}
}
private void process(OrderChildBrokerSyncMqParam mq){
settlementMqHandlerService.settlementOrderChildBrokerSync(mq);
}
}
......@@ -39,6 +39,7 @@ public class OrderChild implements HasKey<Integer> {
private Integer goodsId; //货物id
private String goodsName; //货物名称
private BigDecimal freightPrice; //运费单价(分)
private BigDecimal forecastFreightPrice; //预估运费单价(分)
private BigDecimal lossPrice; //损耗单价(分)
private BigDecimal orderFreightPrice; //订单运费单价(分)
......
......@@ -169,6 +169,8 @@ public class OrderGoods implements HasKey<Integer> {
@Schema(description="挂单运费")
private BigDecimal pendingOrderFreight;
private BigDecimal forecastOrderFreight; //预估运费单价(分)
@TableField("user_no")
@Schema(description="创建人用户编号")
private Long userNo;
......
......@@ -51,6 +51,7 @@ public class SettlementDriverDetail implements HasKey<Integer> {
private Integer invoicingCompanyId; //开票公司id
private String invoicingCompanyShorterName; //开票公司简称
private String invoicingCompanyGroupCode; //开票公司统一社会信用代码
private Integer invoiceConfigType; //开票配置类型:0-否,1-是
private BigDecimal platformServiceFee; //平台服务费(分)
private BigDecimal platformServiceFeeRate; //平台服务费费率%
private Integer payAcceptStatus; //支付受理状态:0未受理支付 1支付受理中 2已受理支付
......
......@@ -25,6 +25,7 @@ public class SettlementOrderChildRisk implements HasKey<Integer> {
private String driverMobile; // 司机手机号
private String goodsName; // 货物名称
private Integer invoiceType; // 开票标识:1网运单 2普通单
private Integer invoiceConfigType; // 开票配置:0否 1是
private LocalDateTime poundAuditTime; // 磅单审核通过时间
private Integer riskType; // 风控标识:1同步失败 2结算打回
private String riskRemark; // 风控失败原因
......
......@@ -62,6 +62,7 @@ public class SettlementOwnerDetail implements HasKey<Integer> {
private Integer invoiceType; //开票标识:1网运单 2普通单
private BigDecimal invoiceServiceFee; //开票服务费(分)
private BigDecimal invoiceServiceFeeRate; //开票服务率
private Integer invoiceConfigType; //开票配置类型:0-否,1-是
private Integer finalPaymentStatus; //尾款状态 0-否,1-是,2-无需支付
private Integer invoiceTypeStatus; // 开票标识状态:0未获取 1获取中 2获取成功 3获取失败
private Integer invoiceStatus; //开票状态 0-否,1-是,2-无需开票
......
......@@ -497,6 +497,7 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild.setOrderNo(orderGoods.getOrderNo());
orderChild.setOrderGoodsNo(orderGoods.getOrderGoodsNo());
orderChild.setFreightPrice(orderGoods.getPendingOrderFreight());
orderChild.setForecastFreightPrice(orderInfo.getValidForecastFreightQuotation());
orderChild.setLossPrice(orderGoods.getLossPrice());
orderChild.setOrderFreightPrice(orderInfo.getValidFreightPrice());
......
package com.clx.performance.service.impl.broker;
import com.clx.order.enums.InvoicingCompanyEnum;
import com.clx.order.enums.QuotationEnum;
import com.clx.order.feign.InvoicingCompanyFeign;
import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.pc.owner.OwnerQuotationDetailVO;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.settle.SettlementDriverDao;
......@@ -10,6 +15,7 @@ import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.settle.SettlementDriverDetailEnum;
import com.clx.performance.enums.settle.SettlementOrderChildRiskEnum;
import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
import com.clx.performance.extranal.order.QuotationService;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.settle.SettlementDriver;
......@@ -19,6 +25,7 @@ import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.service.broker.OrderChildBrokerMqHandlerService;
import com.clx.performance.service.broker.OrderChildBrokerMqService;
import com.clx.performance.service.broker.OrderChildBrokerService;
import com.clx.performance.service.settle.SettlementMqService;
import com.clx.performance.vo.mq.broker.BrokerOrderChildDriverPayMqParam;
import com.clx.performance.service.settle.SettlementPostService;
import com.clx.performance.vo.mq.broker.BrokerOrderChildSyncMqParam;
......@@ -57,6 +64,15 @@ public class OrderChildBrokerMqHandlerServiceImpl implements OrderChildBrokerMqH
@Autowired
private SettlementPostService settlementPostService;
@Autowired
private QuotationService quotationService;
@Autowired
private InvoicingCompanyFeign invoicingCompanyFeign;
@Autowired
private SettlementMqService settlementMqService;
@Transactional(rollbackFor = Exception.class)
@Override
public void orderChildSync(BrokerOrderChildSyncMqParam mq) {
......@@ -64,6 +80,8 @@ public class OrderChildBrokerMqHandlerServiceImpl implements OrderChildBrokerMqH
try{
doOrderChildSync(mq);
settlementMqService.orderChildBrokerSync(mq.getChildNo());
}catch (Exception e){
log.info("无车承运-运单同步 失败,msg:{}", ExceptionUtils.getStackTrace(e));
......@@ -79,11 +97,18 @@ public class OrderChildBrokerMqHandlerServiceImpl implements OrderChildBrokerMqH
settlementOrderChildRisk.setDriverMobile(orderChild.getDriverMobile());
settlementOrderChildRisk.setGoodsName(orderChild.getGoodsName());
settlementOrderChildRisk.setInvoiceType(settlementOwnerDetail.getInvoiceType());
// 如果有发票配置,则更新
if (Objects.nonNull(settlementOwnerDetail.getInvoiceConfigType())) {
settlementOrderChildRisk.setInvoiceConfigType(settlementOwnerDetail.getInvoiceConfigType());
}
settlementOrderChildRisk.setPoundAuditTime(settlementOwnerDetail.getPoundAuditTime());
settlementOrderChildRisk.setRiskType(SettlementOrderChildRiskEnum.RiskType.SETTLE_FAIL.getCode());
settlementOrderChildRisk.setRiskRemark("同步无车承运异常");
// 若开票配置为是
if (this.invoiceConfigType(orderChild.getOrderNo())) {
settlementOrderChildRiskDao.saveEntity(settlementOrderChildRisk);
log.info("当前运单的关联的订单开票配置为是,保存对应封控的信息入库");
}
settlementPostService.riskAdd(settlementOrderChildRisk.getId());
}
}
......@@ -162,4 +187,19 @@ public class OrderChildBrokerMqHandlerServiceImpl implements OrderChildBrokerMqH
}
/**
* 开票配置为是
*
* @param orderNo
* @return
*/
public boolean invoiceConfigType(String orderNo) {
// 调用开票配置接口
Integer invoiceConfigType = invoicingCompanyFeign.getInvoicingConfigTypeByOrderNo(orderNo).getData();
log.info("notInvoiceConfigType invoiceConfigType:{}", invoiceConfigType);
// 若开票配置为是
return Objects.nonNull(invoiceConfigType) && Objects.equals(invoiceConfigType,
QuotationEnum.InvoicingConfigType.YES.getCode());
}
}
package com.clx.performance.service.impl.broker;
import com.clx.order.enums.QuotationEnum;
import com.clx.order.feign.AddressFeign;
import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.FeignAddressVO;
......@@ -7,7 +8,6 @@ import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.order.vo.pc.carrier.InvoicingCompanyVO;
import com.clx.performance.dao.OrderChildImageDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.PowerTypeEnum;
import com.clx.performance.enums.settle.SettlementDriverEnum;
import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
......@@ -42,6 +42,7 @@ import java.util.Objects;
@Service
public class OrderChildBrokerServiceImpl implements OrderChildBrokerService {
private static final String LONG_TERM_TIME = "2099-01-01 00:00:00";
private static final String ZERO_STR = "0";
@Autowired
private BrokerService brokerService;
......@@ -97,8 +98,10 @@ public class OrderChildBrokerServiceImpl implements OrderChildBrokerService {
String host = documentFeign.getHost().getData();
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderGoods.getOrderNo());
OwnerInfoFeignVO ownerInfoFeign = ownerFeign.getOwnerInfo(orderInfoFeign.getOwnerUserNo()).getData();
//String ownerMobile = ownerFeign.getOwnerInfo(orderInfoFeign.getOwnerUserNo()).getData().getMobile();
String ownerMobile = String.valueOf(orderInfoFeign.getOwnerUserNo());
String ownerName = ownerInfoFeign.getName();
FeignAddressVO data = addressFeign.getSendAndReceiveAddress(orderChild.getSendAddressId(), orderChild.getReceiveAddressId()).getData();
FeignAddressVO.Address receiveAddress = data.getReceiveAddress();
......@@ -115,13 +118,19 @@ public class OrderChildBrokerServiceImpl implements OrderChildBrokerService {
TruckInfoFeignVo truckInfoFeignVo = truckFeign.getTruckInfoWithTransport(orderChild.getTruckId()).getData();
InvoicingCompanyVO invoicingCompanyByGroupCode = invoicingCompanyService.getInvoicingCompanyByGroupCode(orderChild.getInvoicingCompanyGroupCode());
// 参数组装
TransportParam transportParam = new TransportParam();
// 与承运平台约定默认设置0字符串
transportParam.setTransportPlatformCode(ZERO_STR);
// 若有开票配置,且开票配置为是,则使用开票配置的平台编码
if (Objects.equals(settlementOwnerDetail.getInvoiceConfigType(), QuotationEnum.InvoicingConfigType.YES.getCode())) {
InvoicingCompanyVO invoicingCompanyByGroupCode = invoicingCompanyService.getInvoicingCompanyByGroupCode(orderChild.getInvoicingCompanyGroupCode());
transportParam.setTransportPlatformCode(invoicingCompanyByGroupCode.getNetworkCargoCompanyCode());
}
transportParam.setOrderCode(orderChild.getChildNo());
transportParam.setOwnerMobile(ownerMobile);
transportParam.setOwnerName(ownerName);
// 货单
OpenOrderDTO orderInfo = new OpenOrderDTO();
......@@ -300,6 +309,10 @@ public class OrderChildBrokerServiceImpl implements OrderChildBrokerService {
SettlementOwnerDetailEnum.InvoiceStatus.YES.getCode())? 1 : 0);
orderChildInfo.setSettleStatus(settlementDriver!=null
&& Objects.equals(settlementDriver.getStatus(), SettlementDriverEnum.Status.SETTLED.getCode())? 1 : 0);
// 开票票配置
orderChildInfo.setInvoiceNeed(settlementOwnerDetail.getInvoiceConfigType());
// 预估运费单价
orderChildInfo.setPredictFreightPrice(orderChild.getForecastFreightPrice().intValue());
transportParam.setOrder(orderInfo);
transportParam.setOrderChildImage(imageList);
......
......@@ -2,10 +2,14 @@ package com.clx.performance.service.impl.settle;
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.vo.pc.carrier.InvoicingCompanyVO;
import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.loan.OwnerLoanRecordEnum;
import com.clx.performance.enums.settle.SettlementDriverEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.extranal.order.InvoicingCompanyService;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.param.pc.breakcontract.carrier.PageCarrierBreakContractSettlementDriverDetailParam;
......@@ -41,6 +45,7 @@ public class SettlementDriverDetailServiceImpl implements SettlementDriverDetai
private final SettlementDriverDetailDao settlementDriverDetailDao;
private final SettlementDriverDetailStruct settlementOwnerDetailStruct;
private final InvoicingCompanyService invoicingCompanyService;
@Override
public SettlementDriverDetail saveSettlementDetail(OrderChild orderChild) {
......@@ -73,10 +78,6 @@ public class SettlementDriverDetailServiceImpl implements SettlementDriverDetai
// 结算金额
settlementDriverDetail.setSettlementFreight(settlementFreightCalc(settlementDriverDetail.getFreight(), settlementDriverDetail.getLossFreight()));
settlementDriverDetail.setInvoicingCompanyId(orderChild.getInvoicingCompanyId());
settlementDriverDetail.setInvoicingCompanyShorterName(orderChild.getInvoicingCompanyShorterName());
settlementDriverDetail.setInvoicingCompanyGroupCode(orderChild.getInvoicingCompanyGroupCode());
// 平台服务费: 司机结算金额*平台服务费费率
settlementDriverDetail.setPlatformServiceFeeRate(orderChild.getPlatformServiceFeeRate()==null
? BigDecimal.ZERO
......@@ -85,6 +86,16 @@ public class SettlementDriverDetailServiceImpl implements SettlementDriverDetai
? BigDecimal.ZERO
: orderChild.getPlatformServiceFee());
// 开票配置
Integer invoiceConfigType = invoicingCompanyService.getInvoicingConfigTypeByOrderNo(orderChild.getOrderNo());
settlementDriverDetail.setInvoiceConfigType(invoiceConfigType);
if (Objects.nonNull(invoiceConfigType) && Objects.equals(invoiceConfigType, InvoicingCompanyEnum.YesAndNo.YES.getCode())) {
//设置开票公司信息
settlementDriverDetail.setInvoicingCompanyId(orderChild.getInvoicingCompanyId());
settlementDriverDetail.setInvoicingCompanyShorterName(orderChild.getInvoicingCompanyShorterName());
settlementDriverDetail.setInvoicingCompanyGroupCode(orderChild.getInvoicingCompanyGroupCode());
}
settlementDriverDetailDao.saveEntity(settlementDriverDetail);
return settlementDriverDetail;
......@@ -154,21 +165,22 @@ public class SettlementDriverDetailServiceImpl implements SettlementDriverDetai
fieldList.add(new ExcelField(4, "车主名称", "driverName", 5000));
fieldList.add(new ExcelField(5, "货物名称", "goodsName", 5000));
fieldList.add(new ExcelField(6, "车牌号", "truckNo", 5000));
fieldList.add(new ExcelField(7, "开票公司", "invoicingCompanyShorterName", 5000));
fieldList.add(new ExcelField(8, "开票标识", "invoiceType", 5000));
fieldList.add(new ExcelField(9, "预付标识", "prepayFreightFlag", 5000));
fieldList.add(new ExcelField(7, "开票配置", "invoicingConfigType", 5000));
fieldList.add(new ExcelField(8, "开票公司", "invoicingCompanyShorterName", 5000));
fieldList.add(new ExcelField(9, "开票标识", "invoiceType", 5000));
fieldList.add(new ExcelField(10, "借款标识", "loanFlagMsg", 5000));
fieldList.add(new ExcelField(11, "实际净重(吨)", "weight", 5000));
fieldList.add(new ExcelField(12, "运费单价", "freightPrice", 5000));
fieldList.add(new ExcelField(13, "应付运费", "freight", 5000));
fieldList.add(new ExcelField(14, "货损单价", "lossPrice", 5000));
fieldList.add(new ExcelField(15, "货损吨数", "lossWeight", 5000));
fieldList.add(new ExcelField(16, "货损金额", "lossFreight", 5000));
fieldList.add(new ExcelField(17, "结算金额", "settlementFreight", 5000));
fieldList.add(new ExcelField(18, "毛利率", "platformServiceFeeRate", 5000));
fieldList.add(new ExcelField(19, "毛利润", "platformServiceFee", 5000));
fieldList.add(new ExcelField(20, "结算单号", "settlementNo", 5000));
fieldList.add(new ExcelField(21, "创建时间", "createTime", 5000));
fieldList.add(new ExcelField(11, "预付标识", "prepayFreightFlag", 5000));
fieldList.add(new ExcelField(12, "实际净重(吨)", "weight", 5000));
fieldList.add(new ExcelField(13, "运费单价", "freightPrice", 5000));
fieldList.add(new ExcelField(14, "应付运费", "freight", 5000));
fieldList.add(new ExcelField(15, "货损单价", "lossPrice", 5000));
fieldList.add(new ExcelField(16, "货损吨数", "lossWeight", 5000));
fieldList.add(new ExcelField(17, "货损金额", "lossFreight", 5000));
fieldList.add(new ExcelField(18, "结算金额", "settlementFreight", 5000));
fieldList.add(new ExcelField(19, "毛利率", "platformServiceFeeRate", 5000));
fieldList.add(new ExcelField(20, "毛利润", "platformServiceFee", 5000));
fieldList.add(new ExcelField(21, "结算单号", "settlementNo", 5000));
fieldList.add(new ExcelField(22, "创建时间", "createTime", 5000));
// 组装数据
List<List<ExcelData>> dataList = new ArrayList<>();
......@@ -185,6 +197,8 @@ public class SettlementDriverDetailServiceImpl implements SettlementDriverDetai
rowData.add(new ExcelData(dto.getDriverName()));
rowData.add(new ExcelData(dto.getGoodsName()));
rowData.add(new ExcelData(dto.getTruckNo()));
// 开票配置
rowData.add(new ExcelData(dto.getInvoiceConfigType()==null?null:SettlementOwnerEnum.InvoiceConfigType.getMsgByCode(dto.getInvoiceConfigType())));
rowData.add(new ExcelData(dto.getInvoicingCompanyShorterName()));
rowData.add(new ExcelData(dto.getInvoiceType()==null?null:SettlementOwnerEnum.InvoiceType.getMsgByCode(dto.getInvoiceType())));
rowData.add(new ExcelData(dto.getPrepayFreightFlag()==null?null:SettlementDriverEnum.PrepayFreightFlag.getMsgByCode(dto.getPrepayFreightFlag())));
......
......@@ -3,7 +3,9 @@ package com.clx.performance.service.impl.settle;
import cn.hutool.json.JSONUtil;
import com.clx.order.enums.InvoicingCompanyEnum;
import com.clx.order.enums.QuotationEnum;
import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.FeignOrderInfoVO;
import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.order.vo.pc.carrier.InvoicingCompanyVO;
import com.clx.performance.config.MslPaymentConfig;
import com.clx.performance.constant.RedissonConstants;
......@@ -35,6 +37,7 @@ import com.clx.performance.service.PaymentService;
import com.clx.performance.service.broker.OrderChildBrokerMqService;
import com.clx.performance.service.broker.OrderChildBrokerService;
import com.clx.performance.service.impl.UniqueOrderNumService;
import com.clx.performance.service.impl.broker.OrderChildBrokerMqHandlerServiceImpl;
import com.clx.performance.service.settle.*;
import com.clx.performance.utils.LocalDateTimeUtils;
import com.clx.performance.utils.RedisUtil;
......@@ -158,6 +161,11 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
@Autowired
private SettlementPostService settlementPostService;
@Autowired
private OrderChildBrokerMqHandlerServiceImpl orderChildBrokerMqHandlerService;
@Autowired
private OrderFeign orderFeign;
@Override
@Transactional(rollbackFor = Exception.class)
......@@ -287,9 +295,13 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementDriver.setStatus(SettlementDriverEnum.Status.DRIVER_UNCONFIRMED.getCode());
settlementDriver.setInvoicingCompanyId(settlementDriverDetail.getInvoicingCompanyId());
settlementDriver.setInvoicingCompanyShorterName(settlementDriverDetail.getInvoicingCompanyShorterName());
settlementDriver.setInvoicingCompanyGroupCode(settlementDriverDetail.getInvoicingCompanyGroupCode());
// 订单报价需求-开票配置为否,对应开票公司信息赋值为null
settlementDriver.setInvoicingCompanyId(null != settlementDriverDetail.getInvoicingCompanyId()
? settlementDriverDetail.getInvoicingCompanyId() : null);
settlementDriver.setInvoicingCompanyShorterName(null != settlementDriverDetail.getInvoicingCompanyShorterName()
? settlementDriverDetail.getInvoicingCompanyShorterName() : null);
settlementDriver.setInvoicingCompanyGroupCode(null != settlementDriverDetail.getInvoicingCompanyGroupCode()
? settlementDriverDetail.getInvoicingCompanyGroupCode() : null);
settlementDriver.setPlatformServiceFeeRate(settlementDriverDetail.getPlatformServiceFeeRate());
settlementDriver.setPlatformServiceFee(settlementDriverDetail.getPlatformServiceFee());
......@@ -365,10 +377,18 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementOrderChildRisk.setDriverMobile(orderChild.getDriverMobile());
settlementOrderChildRisk.setGoodsName(orderChild.getGoodsName());
settlementOrderChildRisk.setInvoiceType(settlementOwnerDetail.getInvoiceType());
// 防止历史数据不存在
if (Objects.nonNull(settlementOwnerDetail.getInvoiceConfigType())) {
settlementOrderChildRisk.setInvoiceConfigType(settlementOwnerDetail.getInvoiceConfigType());
}
settlementOrderChildRisk.setPoundAuditTime(settlementOwnerDetail.getPoundAuditTime());
settlementOrderChildRisk.setRiskType(SettlementOrderChildRiskEnum.RiskType.SYNC_FAIL.getCode());
settlementOrderChildRisk.setRiskRemark(result.getSyncMsg());
// 若开票配置为是
if (orderChildBrokerMqHandlerService.invoiceConfigType(orderChild.getOrderNo())) {
settlementOrderChildRiskDao.saveEntity(settlementOrderChildRisk);
log.info("settlementMqHandlerServiceImpl invoiceTypeSync 当前运单的关联的订单开票配置为是,保存对应封控的信息入库");
}
settlementPostService.riskAdd(settlementOrderChildRisk.getId());
......@@ -474,10 +494,19 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementOrderChildRisk.setDriverMobile(orderChild.getDriverMobile());
settlementOrderChildRisk.setGoodsName(orderChild.getGoodsName());
settlementOrderChildRisk.setInvoiceType(settlementOwnerDetail.getInvoiceType());
// 防止历史数据没有出现报错
if (Objects.nonNull(settlementOwnerDetail.getInvoiceConfigType())) {
settlementOrderChildRisk.setInvoiceConfigType(settlementOwnerDetail.getInvoiceConfigType());
}
settlementOrderChildRisk.setPoundAuditTime(settlementOwnerDetail.getPoundAuditTime());
settlementOrderChildRisk.setRiskType(SettlementOrderChildRiskEnum.RiskType.SYNC_FAIL.getCode());
settlementOrderChildRisk.setRiskRemark(result.getSyncMsg());
// 若开票配置为是
if (orderChildBrokerMqHandlerService.invoiceConfigType(orderChild.getOrderNo())) {
settlementOrderChildRiskDao.saveEntity(settlementOrderChildRisk);
log.info("settlementMqHandlerServiceImpl invoiceStatusSync 当前运单的关联的订单开票配置为是,保存对应封控的信息入库");
}
settlementPostService.riskAdd(settlementOrderChildRisk.getId());
......@@ -551,10 +580,19 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementOrderChildRisk.setDriverMobile(orderChild.getDriverMobile());
settlementOrderChildRisk.setGoodsName(orderChild.getGoodsName());
settlementOrderChildRisk.setInvoiceType(settlementOwnerDetail.getInvoiceType());
// 防止历史数据没有出现报错
if (Objects.nonNull(settlementOwnerDetail.getInvoiceConfigType())) {
settlementDriverDetail.setInvoiceConfigType(settlementOwnerDetail.getInvoiceConfigType());
}
settlementOrderChildRisk.setPoundAuditTime(settlementOwnerDetail.getPoundAuditTime());
settlementOrderChildRisk.setRiskType(SettlementOrderChildRiskEnum.RiskType.SYNC_FAIL.getCode());
settlementOrderChildRisk.setRiskRemark(result.getSyncMsg());
// 若开票配置为是
if (orderChildBrokerMqHandlerService.invoiceConfigType(orderChild.getOrderNo())) {
settlementOrderChildRiskDao.saveEntity(settlementOrderChildRisk);
log.info("settlementMqHandlerServiceImpl payStatusSync 当前运单的关联的订单开票配置为是,保存对应封控的信息入库");
}
settlementPostService.riskAdd(settlementOrderChildRisk.getId());
......@@ -592,10 +630,19 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementOrderChildRisk.setDriverMobile(orderChild.getDriverMobile());
settlementOrderChildRisk.setGoodsName(orderChild.getGoodsName());
settlementOrderChildRisk.setInvoiceType(settlementOwnerDetail.getInvoiceType());
// 防止历史数据没有出现报错
if (Objects.nonNull(settlementOwnerDetail.getInvoiceConfigType())) {
settlementOrderChildRisk.setInvoiceConfigType(settlementOwnerDetail.getInvoiceConfigType());
}
settlementOrderChildRisk.setPoundAuditTime(settlementOwnerDetail.getPoundAuditTime());
settlementOrderChildRisk.setRiskType(SettlementOrderChildRiskEnum.RiskType.SETTLE_FAIL.getCode());
settlementOrderChildRisk.setRiskRemark(result.getSettleMsg());
// 若开票配置为是
if (orderChildBrokerMqHandlerService.invoiceConfigType(orderChild.getOrderNo())) {
settlementOrderChildRiskDao.saveEntity(settlementOrderChildRisk);
log.info("settlementMqHandlerServiceImpl-payStatusSync-结算状态为失败,当前运单的关联的订单开票配置为是,保存对应封控的信息入库");
}
settlementPostService.riskAdd(settlementOrderChildRisk.getId());
}
......@@ -832,9 +879,12 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementOwner.setCompanyContactAddress(ownerInfo.getContactsAddress());
settlementOwner.setSettlementWay(settlementOwnerDetail.getSettlementWay());
//设置开票公司
settlementOwner.setInvoicingCompanyId(settlementOwnerDetail.getInvoicingCompanyId());
settlementOwner.setInvoicingCompanyShorterName(settlementOwnerDetail.getInvoicingCompanyShorterName());
settlementOwner.setInvoicingCompanyGroupCode(settlementOwnerDetail.getInvoicingCompanyGroupCode());
settlementOwner.setInvoicingCompanyId(null != settlementOwnerDetail.getInvoicingCompanyId()
? settlementOwnerDetail.getInvoicingCompanyId() : null);
settlementOwner.setInvoicingCompanyShorterName(null != settlementOwnerDetail.getInvoicingCompanyShorterName()
? settlementOwnerDetail.getInvoicingCompanyShorterName() : null);
settlementOwner.setInvoicingCompanyGroupCode(null != settlementOwnerDetail.getInvoicingCompanyGroupCode()
? settlementOwnerDetail.getInvoicingCompanyGroupCode() : null);
settlementOwner.setReportFlag(orderInfo.getReportFlag());
// 开票服务费
settlementOwner.setInvoiceServiceFee(settlementOwnerDetail.getInvoiceServiceFee());
......@@ -1004,14 +1054,40 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
@Transactional(rollbackFor = Exception.class)
@Override
public void riskProcess(SettlementOrderChildRiskProcessMqParam mq) {
if (mq.getId() != null) {
SettlementOrderChildRisk settlementOrderChildRisk = settlementOrderChildRiskDao.getById(mq.getId()).orElseThrow(ResultEnum.DATA_NOT_FIND);
String childNo = settlementOrderChildRisk.getChildNo();
if (Objects.equals(settlementOrderChildRisk.getProcessMethod(), SettlementOrderChildRiskEnum.ProcessMethod.CONVERT_ORDINARY.getCode())){
if (Objects.equals(settlementOrderChildRisk.getProcessMethod(), SettlementOrderChildRiskEnum.ProcessMethod.CONVERT_ORDINARY.getCode())) {
SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao.getByChildNo(childNo).orNull();
riskToOrdinary(settlementOwnerDetail);
} else if (Objects.equals(settlementOrderChildRisk.getProcessMethod(), SettlementOrderChildRiskEnum.ProcessMethod.SYNC_RETRY.getCode())) {
// 发送mq (更新无车承运)
orderChildBrokerMqService.orderChildSync(childNo);
}
}
else {
SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao.getByChildNo(mq.getChildNo()).orNull();
// 不开票转普通单
riskToOrdinary(settlementOwnerDetail);
}
}
/**
* 转普通单
*/
private void riskToOrdinary(SettlementOwnerDetail settlementOwnerDetail){
String childNo = settlementOwnerDetail.getChildNo();
if (!Objects.equals(settlementOwnerDetail.getInvoiceType(), SettlementOwnerEnum.InvoiceType.ORDINARY.getCode())){
return;
}
// 已进结算单需拆单
if (settlementOwnerDetail !=null && StringUtils.isNotBlank(settlementOwnerDetail.getSettlementNo())) {
if (StringUtils.isNotBlank(settlementOwnerDetail.getSettlementNo())) {
// 发送mq 结算统计
settlementMqService.settlementStatistics(childNo, SettlementStatisticsMqParam.Type.SEPARATE.getCode());
}
......@@ -1022,13 +1098,6 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
// 发送mq (运单更新)
orderChildBrokerMqService.orderChildUpdate(childNo);
}
else if (Objects.equals(settlementOrderChildRisk.getProcessMethod(), SettlementOrderChildRiskEnum.ProcessMethod.SYNC_RETRY.getCode())){
// 发送mq (更新无车承运)
orderChildBrokerMqService.orderChildSync(childNo);
}
}
@Transactional(rollbackFor = Exception.class)
@Override
......@@ -1052,23 +1121,27 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
OrderGoods orderGoods = orderGoodsDao
.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
// 开票配置
settlementOwnerDetail.setInvoiceServiceFeeRate(BigDecimal.ZERO);
FeignOrderVO feignOrderVO = orderFeign.getOrderInfoFeign(orderChild.getOrderNo());
if (Objects.equals(feignOrderVO.getPlatformFreightQuotationTaxType(),
InvoicingCompanyEnum.TaxType.TAX_EXCLUDED.getCode())) {
// 查询开票公司
InvoicingCompanyVO invoiceCompany = invoicingCompanyService.getInvoicingCompany(
settlementOwnerDetail.getInvoicingCompanyId()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
// 开票服务率
settlementOwnerDetail.setInvoiceServiceFeeRate(BigDecimal.ZERO);
if (Objects.equals(invoiceCompany.getQuotationType(), InvoicingCompanyEnum.TaxType.TAX_EXCLUDED.getCode())) {
settlementOwnerDetail.setInvoiceServiceFeeRate(
invoiceCompany.getServiceFeeRate() == null ? BigDecimal.ZERO : invoiceCompany.getServiceFeeRate());
}
// 开票服务费
settlementOwnerDetail.setInvoiceServiceFee(
settlementCommonService.invoiceServiceFeeCalc(orderChild.getSettlementWay(), settlementOwnerDetail));
// 开票金额
settlementOwnerDetail.setInvoiceFreight(
settlementCommonService.invoiceFreightCalc(orderChild.getSettlementWay(),
orderGoods.getInvoiceServiceFeeRate(), settlementOwnerDetail));
settlementOwnerDetail.getInvoiceServiceFeeRate(), settlementOwnerDetail));
// 结算金额
settlementOwnerDetail.setSettlementFreight(settlementCommonService.settlementFreightCalc(orderChild.getSettlementWay(), settlementOwnerDetail));
if (settlementOwnerDetail.getSettlementFreight().compareTo(BigDecimal.ZERO) == 0) {
......@@ -1105,7 +1178,7 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
}
SettlementOrderChildRisk settlementOrderChildRisk = settlementOrderChildRiskDao
.findLastByChildNo(childNo).orElseThrow(ResultEnum.DATA_NOT_FIND);
.findLastByChildNo(childNo).orNull();
if (settlementOrderChildRisk != null){
// 网运单转普通单
orderChildSyncTransportListener.extracted(orderChild, settlementOwnerDetail, settlementDriverDetail, settlementOwnerDetail.getInvoiceType(), settlementOrderChildRisk.getRiskRemark());
......@@ -1287,6 +1360,54 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
}
@Override
public void settlementOrderChildBrokerSync(OrderChildBrokerSyncMqParam mq) {
SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao
.getByChildNo(mq.getChildNo()).orElseThrow(ResultEnum.DATA_NOT_FIND);
if (settlementOwnerDetail.getInvoiceType() != null){
return;
}
if (!Objects.equals(settlementOwnerDetail.getInvoiceConfigType(), QuotationEnum.InvoicingConfigType.NO.getCode())){
return;
}
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao
.getByChildNo(mq.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
SettlementDriver settlementDriver = settlementDriverDao.findByChildNo(mq.getChildNo()).orNull();
// 转普通单
// 更新子订单详细信息为普通发票类型
settlementOwnerDetail.setInvoiceType(SettlementOwnerEnum.InvoiceType.ORDINARY.getCode());
settlementOwnerDetail.setInvoicingCompanyId(null);
settlementOwnerDetail.setInvoicingCompanyShorterName(null);
settlementOwnerDetail.setInvoicingCompanyGroupCode(null);
settlementOwnerDetail.setInvoiceTypeStatus(SettlementOwnerDetailEnum.InvoiceTypeStatus.SUCCESS.getCode());
settlementOwnerDetail.setInvoiceTypeModifiedTime(LocalDateTime.now());
settlementOwnerDetailDao.updateConvertOrdinary(settlementOwnerDetail);
// 同步更新司机详细信息
settlementDriverDetail.setInvoiceType(settlementOwnerDetail.getInvoiceType());
settlementDriverDetail.setInvoicingCompanyId(settlementOwnerDetail.getInvoicingCompanyId());
settlementDriverDetail.setInvoicingCompanyShorterName(settlementOwnerDetail.getInvoicingCompanyShorterName());
settlementDriverDetail.setInvoicingCompanyGroupCode(settlementOwnerDetail.getInvoicingCompanyGroupCode());
settlementDriverDetailDao.updateConvertOrdinary(settlementDriverDetail);
// 如果司机信息存在,则同步更新司机信息
if (settlementDriver != null) {
settlementDriver.setInvoiceType(settlementDriverDetail.getInvoiceType());
settlementDriver.setInvoicingCompanyId(settlementDriverDetail.getInvoicingCompanyId());
settlementDriver.setInvoicingCompanyShorterName(settlementDriverDetail.getInvoicingCompanyShorterName());
settlementDriver.setInvoicingCompanyGroupCode(settlementDriverDetail.getInvoicingCompanyGroupCode());
settlementDriver.setPrepayFreightFlag(settlementDriverDetail.getPrepayFreightFlag());
settlementDriverDao.updateInvoiceCompany(settlementDriver);
}
// 发送mq (风控处理)
settlementMqService.riskProcess(settlementOwnerDetail.getChildNo());
}
private BigDecimal invoiceFreightCalc(Integer settlementWay, BigDecimal invoiceServiceFeeRate, SettlementOwnerDetail settlementOwnerDetail) {
if (Objects.equals(settlementWay, SettlementWayEnum.WayType.LOAD.getCode())) { //订单结算方式为“装车净重”时,开票金额=实际净重*平台运费报价-货损金额。
return settlementOwnerDetail.getWeight().multiply(settlementOwnerDetail.getFreightPrice())
......
......@@ -161,6 +161,18 @@ public class SettlementMqServiceImpl implements SettlementMqService {
RabbitKeySettlementConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
@Override
public void riskProcess(String childNo) {
SettlementOrderChildRiskProcessMqParam mq = new SettlementOrderChildRiskProcessMqParam();
mq.setChildNo(childNo);
MqDelay delay = new MqDelay<>(RabbitKeySettlementConstants.DEFAULT_EXCHANGE,
RabbitKeySettlementConstants.SETTLEMENT_RISK_PROCESS_ROUTING_KEY, new MqWrapper<>(mq));
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
message.getMessageProperties().setExpiration("5000");
rabbitTemplate.send(RabbitKeySettlementConstants.DEFAULT_EXCHANGE,
RabbitKeySettlementConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
@Override
public void updateInvoiceCompany(Integer id) {
SettlementOwnerDetialInvoiceCompanyUpdateMqParam mq = new SettlementOwnerDetialInvoiceCompanyUpdateMqParam();
......@@ -209,4 +221,16 @@ public class SettlementMqServiceImpl implements SettlementMqService {
RabbitKeySettlementConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
@Override
public void orderChildBrokerSync(String childNo) {
OrderChildBrokerSyncMqParam mq = new OrderChildBrokerSyncMqParam();
mq.setChildNo(childNo);
MqDelay delay = new MqDelay<>(RabbitKeySettlementConstants.DEFAULT_EXCHANGE,
RabbitKeySettlementConstants.SETTLEMENT_ORDER_CHILD_BROKER_SYNC_ROUTING_KEY, new MqWrapper<>(mq));
Message message = MessageBuilder.withBody(JSON.toJSONString(new MqWrapper<>(delay)).getBytes()).build();
message.getMessageProperties().setExpiration("5000");
rabbitTemplate.send(RabbitKeySettlementConstants.DEFAULT_EXCHANGE,
RabbitKeySettlementConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
}
......@@ -144,14 +144,15 @@ public class SettlementOrderChildRiskServiceImpl implements SettlementOrderChild
fieldList.add(new ExcelField(3, "司机联系电话", "driverMobile", 5000));
fieldList.add(new ExcelField(4, "货物名称", "goodsName", 5000));
fieldList.add(new ExcelField(5, "开票标识", "invoiceType", 5000));
fieldList.add(new ExcelField(6, "风控标识", "riskType", 5000));
fieldList.add(new ExcelField(7, "风控失败原因", "riskRemark", 5000));
fieldList.add(new ExcelField(8, "处理状态", "status", 5000));
fieldList.add(new ExcelField(9, "处理方式", "processMethod", 5000));
fieldList.add(new ExcelField(10, "磅单审核通过时间", "poundAuditTime", 5000));
fieldList.add(new ExcelField(11, "创建时间", "createTime", 5000));
fieldList.add(new ExcelField(12, "处理人", "processBy", 5000));
fieldList.add(new ExcelField(13, "处理时间", "processTime", 5000));
fieldList.add(new ExcelField(6, "开票配置", "invoiceConfigType", 5000));
fieldList.add(new ExcelField(7, "风控标识", "riskType", 5000));
fieldList.add(new ExcelField(8, "风控失败原因", "riskRemark", 5000));
fieldList.add(new ExcelField(9, "处理状态", "status", 5000));
fieldList.add(new ExcelField(10, "处理方式", "processMethod", 5000));
fieldList.add(new ExcelField(11, "磅单审核通过时间", "poundAuditTime", 5000));
fieldList.add(new ExcelField(12, "创建时间", "createTime", 5000));
fieldList.add(new ExcelField(13, "处理人", "processBy", 5000));
fieldList.add(new ExcelField(14, "处理时间", "processTime", 5000));
// 组装数据
List<List<ExcelData>> dataList = new ArrayList<>();
......@@ -164,6 +165,7 @@ public class SettlementOrderChildRiskServiceImpl implements SettlementOrderChild
rowData.add(new ExcelData(vo.getGoodsName()));
rowData.add(new ExcelData(vo.getInvoiceType()==null?null:SettlementOwnerEnum.InvoiceType.getMsgByCode(vo.getInvoiceType())));
rowData.add(new ExcelData(vo.getInvoiceConfigType()==null?null:SettlementOwnerEnum.InvoiceConfigType.getMsgByCode(vo.getInvoiceConfigType())));
rowData.add(new ExcelData(vo.getRiskType()==null?null:SettlementOrderChildRiskEnum.RiskType.getMsgByCode(vo.getRiskType())));
rowData.add(new ExcelData(vo.getRiskRemark()));
rowData.add(new ExcelData(vo.getStatus()==null?null:SettlementOrderChildRiskEnum.Status.getMsgByCode(vo.getStatus())));
......
......@@ -5,6 +5,8 @@ import com.alibaba.excel.EasyExcel;
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.feign.OrderFeign;
import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.order.vo.pc.carrier.InvoicingCompanyVO;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.settle.SettlementDriverDetailDao;
......@@ -101,6 +103,8 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
@Autowired
private InvoicingCompanyService invoicingCompanyService;
@Autowired
private OrderFeign orderFeign;
@Override
public Integer saveSettlementDetail(OrderChild orderChild, OrderGoods orderGoods, SettlementDriverDetail settlementDriverDetail) {
......@@ -147,6 +151,18 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
//借款抵扣金额初始化
settlementOwnerDetail.setLoanFreight(BigDecimal.ZERO);
// 开票配置
Integer invoiceConfigType = invoicingCompanyService.getInvoicingConfigTypeByOrderNo(orderChild.getOrderNo());
settlementOwnerDetail.setInvoiceConfigType(invoiceConfigType);
// 开票服务率
settlementOwnerDetail.setInvoiceServiceFeeRate(BigDecimal.ZERO);
if (orderChild.getInvoicingCompanyId() != null) {
FeignOrderVO feignOrderVO = orderFeign.getOrderInfoFeign(orderChild.getOrderNo());
if (Objects.equals(feignOrderVO.getPlatformFreightQuotationTaxType(),
InvoicingCompanyEnum.TaxType.TAX_EXCLUDED.getCode())) {
//设置开票公司信息
settlementOwnerDetail.setInvoicingCompanyId(orderChild.getInvoicingCompanyId());
settlementOwnerDetail.setInvoicingCompanyShorterName(orderChild.getInvoicingCompanyShorterName());
......@@ -156,12 +172,10 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
InvoicingCompanyVO invoiceCompany = invoicingCompanyService.getInvoicingCompany(
settlementOwnerDetail.getInvoicingCompanyId()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
// 开票服务率
settlementOwnerDetail.setInvoiceServiceFeeRate(BigDecimal.ZERO);
if (Objects.equals(invoiceCompany.getQuotationType(), InvoicingCompanyEnum.TaxType.TAX_EXCLUDED.getCode())) {
settlementOwnerDetail.setInvoiceServiceFeeRate(
invoiceCompany.getServiceFeeRate() == null ? BigDecimal.ZERO : invoiceCompany.getServiceFeeRate());
}
}
// 开票服务费
settlementOwnerDetail.setInvoiceServiceFee(
......@@ -169,7 +183,7 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
// 开票金额
settlementOwnerDetail.setInvoiceFreight(
settlementCommonService.invoiceFreightCalc(orderChild.getSettlementWay(),
orderGoods.getInvoiceServiceFeeRate(), settlementOwnerDetail));
settlementOwnerDetail.getInvoiceServiceFeeRate(), settlementOwnerDetail));
// 结算金额
settlementOwnerDetail.setSettlementFreight(
......@@ -545,9 +559,10 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
fieldList.add(new ExcelField(16, "开票金额", "invoiceFreight", 5000));
fieldList.add(new ExcelField(17, "开票公司", "invoicingCompanyShorterName", 5000));
fieldList.add(new ExcelField(18, "开票标识", "invoiceType", 5000));
fieldList.add(new ExcelField(19, "订单编号", "orderNo", 5000));
fieldList.add(new ExcelField(20, "结算单号", "settlementNo", 5000));
fieldList.add(new ExcelField(21, "创建时间", "createTime", 5000));
fieldList.add(new ExcelField(19, "开票配置", "invoiceConfigType", 5000));
fieldList.add(new ExcelField(20, "订单编号", "orderNo", 5000));
fieldList.add(new ExcelField(21, "结算单号", "settlementNo", 5000));
fieldList.add(new ExcelField(22, "创建时间", "createTime", 5000));
// 组装数据
List<List<ExcelData>> dataList = new ArrayList<>();
......@@ -575,6 +590,7 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
rowData.add(new ExcelData(dto.getInvoiceFreight()==null?null:dto.getInvoiceFreight().movePointLeft(2)));
rowData.add(new ExcelData(dto.getInvoicingCompanyShorterName()));
rowData.add(new ExcelData(dto.getInvoiceType()==null?null:SettlementOwnerEnum.InvoiceType.getMsgByCode(dto.getInvoiceType())));
rowData.add(new ExcelData(dto.getInvoiceConfigType()==null?null:SettlementOwnerEnum.InvoiceConfigType.getMsgByCode(dto.getInvoiceConfigType())));
rowData.add(new ExcelData(dto.getOrderNo()));
rowData.add(new ExcelData(dto.getSettlementNo()));
rowData.add(new ExcelData(dto.getCreateTime()));
......
......@@ -37,4 +37,6 @@ public interface SettlementMqHandlerService {
void settlementDriverConfirm(SettlementDriverConfirmMqParam mq);
void settlementOrderChildBrokerSync(OrderChildBrokerSyncMqParam mq);
}
......@@ -22,6 +22,8 @@ public interface SettlementMqService {
void riskProcess(Integer id);
void riskProcess(String childNo);
void updateInvoiceCompany(Integer id);
void settlementPlatformAutoConfirmUpdate(String settlementNo);
......@@ -30,4 +32,6 @@ public interface SettlementMqService {
void settlementDriverConfirm(String childNo);
void orderChildBrokerSync(String childNo);
}
......@@ -134,6 +134,7 @@ public class OwnGoodsOrderStrategy extends GoodsOrderStrategy implements Initial
}
orderGoods.setPendingOrderTime(postedTime);
orderGoods.setPendingOrderFreight(child.getPendingOrderFreight());
orderGoods.setForecastOrderFreight(orderInfo.getValidForecastFreightQuotation());
orderGoods.setLastArriveSendTime(DateUtils.parseDateTime(child.getLastArriveSendTime()).get());
//定向运单失效时间
......
......@@ -136,6 +136,7 @@ public class PartGoodsOrderStrategy extends GoodsOrderStrategy implements Initia
orderGoods.setPendingOrderTime(postedTime);
orderGoods.setPendingOrderFreight(child.getPendingOrderFreight());
orderGoods.setForecastOrderFreight(orderInfo.getValidForecastFreightQuotation());
orderGoods.setLastArriveSendTime(DateUtils.parseDateTime(child.getLastArriveSendTime()).get());
//定向运单失效时间
......
......@@ -133,6 +133,7 @@ public class PlatformGoodsOrderStrategy extends GoodsOrderStrategy implements In
orderGoods.setPendingOrderTime(postedTime);
orderGoods.setPendingOrderFreight(child.getPendingOrderFreight());
orderGoods.setForecastOrderFreight(orderInfo.getValidForecastFreightQuotation());
orderGoods.setLastArriveSendTime(DateUtils.parseDateTime(child.getLastArriveSendTime()).get());
//定向运单失效时间
......
......@@ -134,7 +134,24 @@ public enum SettlementOwnerEnum {
}
}
@Getter
@AllArgsConstructor
public enum InvoiceConfigType {
NO(0, "否"),
YES(1, "是"),
;
private final Integer code;
private final String msg;
public static Optional<InvoiceConfigType> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(InvoiceConfigType::getMsg).orElse(null);
}
}
......
package com.clx.performance.vo.mq.settle;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Setter
@Getter
@ToString
@NoArgsConstructor
public class OrderChildBrokerSyncMqParam {
private String childNo;
}
......@@ -12,5 +12,6 @@ import lombok.ToString;
public class SettlementOrderChildRiskProcessMqParam {
private Integer id; //id
private String childNo; //
}
......@@ -82,4 +82,10 @@ public class OpenOrderChildDTO {
@Schema(description = "结算状态 1 已结算 ", example = "1234124")
private Integer settleStatus;
@Schema(description = "是否需要开票配置 0:否 1:是", example = "1", required = true)
private Integer invoiceNeed;
@Schema(description = "预估运费单价(分/吨)", example = "162", required = true)
private Integer predictFreightPrice;
}
......@@ -29,6 +29,9 @@ public class TransportParam {
@NotBlank(message = "货主手机号(货主账号)不能为空")
private String ownerMobile;
@Schema(description = "货主用户名字", example = "", required = true)
private String ownerName;
@Schema(description = "运单编号", required = true)
@NotBlank(message = "运单编号不能为空")
private String orderCode;
......
......@@ -78,6 +78,8 @@ public class CarrierPageSettlementDriverDetailVO {
private Integer invoicingCompanyId;
@Schema(description = "开票公司简称")
private String invoicingCompanyShorterName;
@Schema(description = "开票配置")
private Integer invoiceConfigType;
@MoneyOutConvert
@Schema(description = "平台服务费")
private BigDecimal platformServiceFee;
......
......@@ -74,6 +74,8 @@ public class CarrierPageSettlementOwnerDetailVO {
private BigDecimal invoiceServiceFee;
@Schema(description = "开票服务率")
private BigDecimal invoiceServiceFeeRate;
@Schema(description = "开票配置:0-否,1-是")
private Integer invoiceConfigType;
@MoneyOutConvert
@Schema(description = "借款抵扣金额")
private BigDecimal loanFreight;
......
......@@ -31,6 +31,9 @@ public class SettlementOrderChildRiskVO {
@Schema(description = "开票标识:1网运单 2普通单")
private Integer invoiceType;
@Schema(description = "开票配置,0否,1是")
private Integer invoiceConfigType;
@Schema(description = "磅单审核通过时间")
private String poundAuditTime;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论