提交 5a40a9ab authored 作者: 艾庆国's avatar 艾庆国

承运与无车承运对接

上级 90534f28
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;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
@FeignClient(name = "broker-service",configuration = PerformanceClientConfiguration.class,url = "${settlement.brokerHost}")
public interface BrokerFeign {
......@@ -15,4 +21,9 @@ public interface BrokerFeign {
*/
@RequestMapping(method = RequestMethod.POST, value = "/broker-service/open/transport/saveTransport")
Result<String> saveTransport(@RequestBody TransportParam param);
@RequestMapping(value = "/broker-service/open/transport/getTransportByChildNo", method = RequestMethod.GET)
Result<TransportVO> getTransportByChildNo(@RequestParam @NotBlank(message = "运单编号不能为空") String childNo,
@RequestParam @NotNull(message = "userCode不能为空") String userCode);
}
package com.clx.performance.vo.mq;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
/**
* @Author: aiqingguo
* @Description: 结算
* @Date: 2023-10-19 15:45:25
* @Version: 1.0
*/
@Setter
@Getter
@ToString
@NoArgsConstructor
public class SettlementSettleMqParam {
private String childNo; //运单编号
private Integer InvoiceType; //开票类型
}
......@@ -72,6 +72,18 @@ public class RabbitSettlementConfig {
public Binding settlementDetailInvoiceTypeSyncQueueBinding() {
return BindingBuilder.bind(settlementDetailInvoiceTypeSyncQueue()).to(settlementDefaultExchange()).with(RabbitKeySettlementConstants.SETTLEMENT_DETAIL_INVOICE_TYPE_SYC_ROUTING_KEY);
}
/**
* 结算
*/
@Bean
public Queue settlementSettleQueue() {
return new Queue(RabbitKeySettlementConstants.SETTLEMENT_SETTLE_QUEUE);
}
@Bean
public Binding settlementSettleQueueQueueBinding() {
return BindingBuilder.bind(settlementSettleQueue()).to(settlementDefaultExchange())
.with(RabbitKeySettlementConstants.SETTLEMENT_SETTLE_ROUTING_KEY);
}
}
......@@ -45,4 +45,10 @@ public class RabbitKeySettlementConstants {
public static final String SETTLEMENT_DETAIL_INVOICE_TYPE_SYC_QUEUE = PREFIX +"settlementDetailInvoiceType.sync"+QUEUE;
public static final String SETTLEMENT_DETAIL_INVOICE_TYPE_SYC_ROUTING_KEY = PREFIX +"settlementDetailInvoiceType.sync"+QUEUE_ROUTING_KEY;
/**
* 结算
*/
public static final String SETTLEMENT_SETTLE_QUEUE = PREFIX +"settlement.settle"+QUEUE;
public static final String SETTLEMENT_SETTLE_ROUTING_KEY = PREFIX +"settlement.settle"+QUEUE_ROUTING_KEY;
}
package com.clx.performance.dao.impl;
import com.clx.performance.enums.TransportSyncTypeEnum;
import com.msl.common.dao.impl.BaseDaoImpl;
import com.clx.performance.dao.OrderChildSyncTransportInvoiceRecordDao;
import com.clx.performance.mapper.OrderChildSyncTransportInvoiceRecordMapper;
import com.clx.performance.model.OrderChildSyncTransportInvoiceRecord;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import java.time.LocalDateTime;
import java.util.List;
/**
......@@ -19,6 +19,8 @@ public class OrderChildSyncTransportInvoiceRecordDaoImpl extends BaseDaoImpl<Ord
@Override
public List<OrderChildSyncTransportInvoiceRecord> selectListForJob() {
return baseMapper.selectList(null);
return list(lUdWrapper()
.le(OrderChildSyncTransportInvoiceRecord::getCreateTime, LocalDateTime.now().minusMinutes(10))
);
}
}
package com.clx.performance.extranal.broker;
import com.clx.performance.vo.pc.broker.TransportParam;
import com.clx.performance.vo.pc.broker.TransportVO;
public interface BrokerService {
void orderChildSync(TransportParam param);
TransportVO getTransportByChildNo(String childNo);
}
package com.clx.performance.extranal.broker.impl;
import com.clx.performance.config.SettlementConfig;
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.result.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -13,13 +15,27 @@ import org.springframework.stereotype.Service;
public class BrokerServiceImpl implements BrokerService {
@Autowired
public BrokerFeign brokerFeign;
@Autowired
private SettlementConfig settlementConfig;
@Override
public void orderChildSync(TransportParam param) {
param.setUserCode(settlementConfig.getBrokerUserCode());
Result<String> result = brokerFeign.saveTransport(param);
if (result.getCode() != 0) {
log.info("运单同步网络货运失败, msg:{}", result.getMsg());
}
}
@Override
public TransportVO getTransportByChildNo(String childNo) {
Result<TransportVO> result = brokerFeign.getTransportByChildNo(childNo, settlementConfig.getBrokerUserCode());
if (result.getCode() != 0) {
log.info("运单同步网络货运失败, msg:{}", result.getMsg());
}
return result.getData();
}
}
......@@ -49,9 +49,9 @@ public class OrderChildSyncTransportInvoiceExceptionJob {
private final SettlementDriverDetailDao settlementDriverDetailDao;
/**
* 同步网络货运
* 同步网络货运(禁用)
*/
@XxlJob("orderChildSyncTransportInvoiceExceptionJob")
// @XxlJob("orderChildSyncTransportInvoiceExceptionJob")
@Transactional(rollbackFor = Exception.class)
public void orderChildSyncTransportInvoiceExceptionJob() {
//只查询同步异常的网络货运任务
......
package com.clx.performance.job;
package com.clx.performance.job.settlement;
import com.clx.performance.dao.settle.SettlementDriverDetailDao;
import com.clx.performance.model.settle.SettlementDriverDetail;
......
package com.clx.performance.job.settlement;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.json.JSONUtil;
import com.clx.performance.dao.OrderChildSyncTransportInvoiceRecordDao;
import com.clx.performance.enums.TransportSyncTypeEnum;
import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.extranal.broker.BrokerService;
import com.clx.performance.model.OrderChildSyncTransportInvoiceRecord;
import com.clx.performance.service.settle.SettlementMqService;
import com.clx.performance.vo.pc.broker.TransportVO;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.LinkedList;
import java.util.List;
import java.util.Objects;
@Slf4j
@Service
@AllArgsConstructor
public class SettlementJob {
private final OrderChildSyncTransportInvoiceRecordDao orderChildSyncTransportInvoiceRecordDao;
private final BrokerService brokerService;
private final SettlementMqService settlementMqService;
/**
* 同步无车承运运单状态
*/
@XxlJob("settlementInvoiceTypeSync")
public void settlementInvoiceTypeSync() {
List<OrderChildSyncTransportInvoiceRecord> recordList = orderChildSyncTransportInvoiceRecordDao
.selectListForJob();
log.info("待同步无车承运运单状态,size:{}", recordList.size());
if (recordList.isEmpty()) {return;}
List<Integer> ids = new LinkedList<>();
for (OrderChildSyncTransportInvoiceRecord item : recordList) {
log.info("同步无车承运运单状态:{}", JSONUtil.parse(item));
try {
// 获取状态
TransportVO result = brokerService.getTransportByChildNo(item.getChildNo());
Integer invoiceType;
if (Objects.equals(result.getRiskStatus(), 1) || Objects.equals(result.getRiskStatus(), 2)) {
invoiceType = SettlementOwnerEnum.InvoiceType.ORDINARY.getCode();
} else if (Objects.equals(result.getSyncStatus(), 2)) {
invoiceType = SettlementOwnerEnum.InvoiceType.ORDINARY.getCode();
} else if (Objects.equals(result.getSyncStatus(), 0)) {
OrderChildSyncTransportInvoiceRecord entity = new OrderChildSyncTransportInvoiceRecord();
entity.setChildNo(item.getChildNo());
entity.setType(TransportSyncTypeEnum.Type.EXCEPTION.getCode());
entity.setRemark("处理中");
orderChildSyncTransportInvoiceRecordDao.saveEntity(entity);
continue;
} else {
invoiceType = SettlementOwnerEnum.InvoiceType.ONLINE.getCode();
}
// 发送mq (结算)
settlementMqService.settle(item.getChildNo(), invoiceType);
}catch (Exception e){
OrderChildSyncTransportInvoiceRecord entity = new OrderChildSyncTransportInvoiceRecord();
entity.setChildNo(item.getChildNo());
entity.setType(TransportSyncTypeEnum.Type.EXCEPTION.getCode());
entity.setRemark("接口调用失败");
orderChildSyncTransportInvoiceRecordDao.saveEntity(entity);
}
}
orderChildSyncTransportInvoiceRecordDao.deleteByKeys(ids);
}
}
package com.clx.performance.job;
package com.clx.performance.job.settlement;
import com.clx.performance.dao.settle.SettlementOwnerDao;
import com.clx.performance.enums.settle.SettlementOwnerEnum;
......
......@@ -98,7 +98,7 @@ public class OrderChildSyncTransportListener {
}
public void transportOrderChildProcess(OrderChild orderChild) {
// Integer invoiceType = SettlementOwnerEnum.InvoiceType.ORDINARY.getCode();
Integer invoiceType = SettlementOwnerEnum.InvoiceType.ORDINARY.getCode();
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).get();
......@@ -115,77 +115,76 @@ public class OrderChildSyncTransportListener {
// 同步broker
orderChildSyncBrokerService.orderChildSync(orderChild, orderGoods, settlementOwnerDetail, settlementDriverDetail);
// extracted(orderChild, bean, JSONUtil.parse(bean).toString(), settlementOwnerDetail, invoiceType, settlementDriverDetail);
}
public void extracted(OrderChild orderChild, OrderChildSyncDTO bean, String remark,
SettlementOwnerDetail settlementOwnerDetail,
Integer invoiceType, SettlementDriverDetail settlementDriverDetail) {
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).get();
SettlementOwnerDetail settlementOwnerDetail,
Integer invoiceType, SettlementDriverDetail settlementDriverDetail) {
if (null != bean && bean.getCode() == 0) {
log.info("当前OrderChildSyncTransportListener监听同步网络货运成功,运单号为{}", orderChild.getChildNo());
if (null != bean.getData() && bean.getData().getStatus() == 1) {
//通过风控
List<OwnerRunningWaterRecord> runningWaterRecordList = ownerRunningWaterRecordDao.getOwnerRunningWaterRecord(orderChild.getOrderNo());
BigDecimal frozen = runningWaterRecordList.stream().filter(item -> {
return item.getRunningWaterType().equals(OwnerAccountEnum.RunningWaterStatus.FROZEN.getCode())
&& item.getAccountType().equals(OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode())
;
}).map(OwnerRunningWaterRecord::getAlterationBalance).reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal takeOut = runningWaterRecordList.stream().filter(item -> {
return item.getRunningWaterType().equals(OwnerAccountEnum.RunningWaterStatus.TAKE_OUT.getCode())
&& item.getAccountType().equals(OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode())
;
}).map(OwnerRunningWaterRecord::getAlterationBalance).reduce(BigDecimal.ZERO, BigDecimal::add);
//设置预付运费金额
BigDecimal ans = getPrepayFreightPay(orderChild.getSettlementWay(), settlementOwnerDetail, frozen);
BigDecimal subtract = frozen.subtract(takeOut);
log.info("冻结预付运费:{}, 扣除的流水总和:{}", frozen, takeOut);
invoiceType = SettlementOwnerEnum.InvoiceType.ONLINE.getCode();
settlementDriverDetail.setPrepayFreight(ans);
//冻结的预付运费为0 或者 此刻预付运费也可能为0,那么就不用生成扣除相关流水逻辑
if (subtract.compareTo(BigDecimal.ZERO) <= 0 || ans.compareTo(BigDecimal.ZERO) == 0) {
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
settlementDriverDetail.setPrepayFreightFlag(SettlementDriverEnum.PrepayFreightFlag.NO_PAY.getCode());
if (null != bean && bean.getCode() == 0 && null != bean.getData() && bean.getData().getStatus() == 1){
invoiceType = SettlementOwnerEnum.InvoiceType.ONLINE.getCode();
}
extracted(orderChild, settlementOwnerDetail, settlementDriverDetail, invoiceType);
}
public void extracted(OrderChild orderChild,
SettlementOwnerDetail settlementOwnerDetail,
SettlementDriverDetail settlementDriverDetail,
Integer invoiceType) {
if (Objects.equals(invoiceType, SettlementOwnerEnum.InvoiceType.ONLINE.getCode())) {
//通过风控
List<OwnerRunningWaterRecord> runningWaterRecordList = ownerRunningWaterRecordDao.getOwnerRunningWaterRecord(orderChild.getOrderNo());
BigDecimal frozen = runningWaterRecordList.stream().filter(item -> {
return item.getRunningWaterType().equals(OwnerAccountEnum.RunningWaterStatus.FROZEN.getCode())
&& item.getAccountType().equals(OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode())
;
}).map(OwnerRunningWaterRecord::getAlterationBalance).reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal takeOut = runningWaterRecordList.stream().filter(item -> {
return item.getRunningWaterType().equals(OwnerAccountEnum.RunningWaterStatus.TAKE_OUT.getCode())
&& item.getAccountType().equals(OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode())
;
}).map(OwnerRunningWaterRecord::getAlterationBalance).reduce(BigDecimal.ZERO, BigDecimal::add);
//设置预付运费金额
BigDecimal ans = getPrepayFreightPay(orderChild.getSettlementWay(), settlementOwnerDetail, frozen);
BigDecimal subtract = frozen.subtract(takeOut);
log.info("冻结预付运费:{}, 扣除的流水总和:{}", frozen, takeOut);
settlementDriverDetail.setPrepayFreight(ans);
//冻结的预付运费为0 或者 此刻预付运费也可能为0,那么就不用生成扣除相关流水逻辑
if (subtract.compareTo(BigDecimal.ZERO) <= 0 || ans.compareTo(BigDecimal.ZERO) == 0) {
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
settlementDriverDetail.setPrepayFreightFlag(SettlementDriverEnum.PrepayFreightFlag.NO_PAY.getCode());
} else {
if (subtract.subtract(ans).compareTo(BigDecimal.ZERO) >= 0) {
//账户扣钱并生成扣除流水
generateTakeOutRunningWatter(orderChild, ans, settlementOwnerDetail, settlementDriverDetail);
try {
//网络货运钱包账户
networkDriverRunningWaterRecordService.generateNetworkDriverRunningWaterRecord(
settlementDriverDetail,
NetworkDriverAccountEnum.RunningWaterStatus.SETTLEMENT.getCode()
);
//生成提现记录
networkDriverRunningWaterRecordService.generateNetworkCaseOutRecord(settlementDriverDetail);
} catch (Exception e) {
log.info("运单同步网络货运生成司机运单结算流水失败:{}", e.getMessage());
}
} else {
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
settlementDriverDetail.setPrepayFreightFlag(SettlementDriverEnum.PrepayFreightFlag.NO_PAY.getCode());
} else {
if (subtract.subtract(ans).compareTo(BigDecimal.ZERO) >= 0) {
//账户扣钱并生成扣除流水
generateTakeOutRunningWatter(orderChild, ans, settlementOwnerDetail, settlementDriverDetail);
try {
//网络货运钱包账户
networkDriverRunningWaterRecordService.generateNetworkDriverRunningWaterRecord(
settlementDriverDetail,
NetworkDriverAccountEnum.RunningWaterStatus.SETTLEMENT.getCode()
);
//生成提现记录
networkDriverRunningWaterRecordService.generateNetworkCaseOutRecord(settlementDriverDetail);
} catch (Exception e) {
log.info("运单同步网络货运生成司机运单结算流水失败:{}", e.getMessage());
}
} else {
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
settlementDriverDetail.setPrepayFreightFlag(SettlementDriverEnum.PrepayFreightFlag.NO_PAY.getCode());
}
}
else {
settlementDriverDetail.setPrepayFreightFlag(SettlementDriverEnum.PrepayFreightFlag.NO_PAY.getCode());
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
settlementOwnerDetail.setFinalPaymentStatus(SettlementOwnerDetailEnum.FinalPaymentStatus.NO.getCode());
}
}
else {
log.info("当前OrderChildSyncTransportListener监听同步网络货运失败,变为普通单,运单号{}, 错误信息{}", orderChild.getChildNo(), remark);
settlementDriverDetail.setPrepayFreightFlag(SettlementDriverEnum.PrepayFreightFlag.NO_PAY.getCode());
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
settlementOwnerDetail.setFinalPaymentStatus(SettlementOwnerDetailEnum.FinalPaymentStatus.NO.getCode());
}
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).get();
// 结算金额
settlementOwnerDetail.setSettlementFreight(settlementFreightCalc(orderChild.getSettlementWay(), settlementOwnerDetail));
......
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.SettlementSettleMqParam;
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 SettlementSettleListener {
@Autowired
private SettlementMqHandlerService settlementMqHandlerService;
@RabbitListener(queues = RabbitKeySettlementConstants.SETTLEMENT_SETTLE_QUEUE)
public void process(Message message) {
try{
log.info("结算-结算, message:{}", new String(message.getBody()));
process(JSON.parseObject(new String(message.getBody()), new TypeReference<MqWrapper<SettlementSettleMqParam>>(){}).getData());
}catch (Exception e){
log.info("结算-结算 失败",e);
}
}
private void process(SettlementSettleMqParam mq){
settlementMqHandlerService.settle(mq);
}
}
......@@ -4,7 +4,6 @@ import com.clx.order.feign.AddressFeign;
import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.FeignAddressVO;
import com.clx.order.vo.pc.carrier.InvoicingCompanyVO;
import com.clx.performance.config.SettlementConfig;
import com.clx.performance.dao.OrderChildImageDao;
import com.clx.performance.enums.PowerTypeEnum;
import com.clx.performance.extranal.broker.BrokerService;
......@@ -52,8 +51,7 @@ public class OrderChildSyncBroker implements OrderChildSyncBrokerService {
private OrderChildImageDao orderChildImageDao;
@Autowired
private InvoicingCompanyService invoicingCompanyService;
@Autowired
private SettlementConfig settlementConfig;
@Override
public void orderChildSync(OrderChild orderChild, OrderGoods orderGoods, SettlementOwnerDetail settlementOwnerDetail,
......@@ -80,7 +78,6 @@ public class OrderChildSyncBroker implements OrderChildSyncBrokerService {
// 参数组装
TransportParam transportParam = new TransportParam();
transportParam.setUserCode(settlementConfig.getBrokerUserCode());
transportParam.setTransportPlatformCode(invoicingCompanyByGroupCode.getNetworkCargoCompanyCode());
transportParam.setOrderCode(orderChild.getChildNo());
transportParam.setOwnerMobile(truckOwnerInfo.getMobile());
......
......@@ -15,6 +15,7 @@ import com.clx.performance.enums.settle.*;
import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.extranal.user.OrderService;
import com.clx.performance.extranal.user.OwnerInfoService;
import com.clx.performance.listener.OrderChildSyncTransportListener;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.settle.*;
......@@ -31,6 +32,7 @@ import com.clx.performance.utils.LocalDateTimeUtils;
import com.clx.performance.utils.RedisUtil;
import com.clx.performance.vo.mq.SettlementDetailAddMqParam;
import com.clx.performance.vo.mq.SettlementDetailInvoiceTypeSyncMqParam;
import com.clx.performance.vo.mq.SettlementSettleMqParam;
import com.clx.user.vo.feign.DriverInfoFeignVo;
import com.clx.user.vo.feign.OwnerInfoFeignVO;
import com.msl.common.enums.ResultCodeEnum;
......@@ -104,6 +106,9 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
@Autowired
private OrderService orderService;
@Autowired
private OrderChildSyncTransportListener orderChildSyncTransportListener;
@Override
@Transactional(rollbackFor = Exception.class)
......@@ -195,6 +200,16 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
settlementDriverDetailDao.updateSettlementNo(settlementDriverDetail);
}
@Override
public void settle(SettlementSettleMqParam mq) {
OrderChild orderChild = orderChildDao.getByChildNo(mq.getChildNo()).get();
SettlementOwnerDetail settlementOwnerDetail = settlementOwnerDetailDao.getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
SettlementDriverDetail settlementDriverDetail = settlementDriverDetailDao.getByChildNo(orderChild.getChildNo()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
orderChildSyncTransportListener.extracted(orderChild, settlementOwnerDetail, settlementDriverDetail, mq.getInvoiceType());
}
@Override
@Transactional(rollbackFor = Exception.class)
public void settlementDetailAdd(SettlementDetailAddMqParam mq) {
......
......@@ -7,6 +7,7 @@ import com.clx.performance.constant.RabbitKeySettlementConstants;
import com.clx.performance.service.settle.SettlementMqService;
import com.clx.performance.vo.mq.SettlementDetailAddMqParam;
import com.clx.performance.vo.mq.SettlementDetailInvoiceTypeSyncMqParam;
import com.clx.performance.vo.mq.SettlementSettleMqParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageBuilder;
......@@ -47,4 +48,18 @@ public class SettlementMqServiceImpl implements SettlementMqService {
rabbitTemplate.send(RabbitKeySettlementConstants.DEFAULT_EXCHANGE, RabbitKeySettlementConstants.DEFAULT_DELAY_ROUTING_KEY, message);
}
@Override
public void settle(String childNo, Integer invoiceType) {
SettlementSettleMqParam mq = new SettlementSettleMqParam();
mq.setChildNo(childNo);
mq.setInvoiceType(invoiceType);
log.info("运单号 {} 开票标识 {} ",childNo,invoiceType);
MqDelay<MqWrapper<SettlementSettleMqParam>> delay = new MqDelay<>(RabbitKeySettlementConstants.DEFAULT_EXCHANGE,
RabbitKeySettlementConstants.SETTLEMENT_SETTLE_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);
}
}
......@@ -3,6 +3,7 @@ package com.clx.performance.service.settle;
import com.clx.performance.model.settle.SettlementDriverDetail;
import com.clx.performance.vo.mq.SettlementDetailAddMqParam;
import com.clx.performance.vo.mq.SettlementDetailInvoiceTypeSyncMqParam;
import com.clx.performance.vo.mq.SettlementSettleMqParam;
public interface SettlementMqHandlerService {
......@@ -10,6 +11,8 @@ public interface SettlementMqHandlerService {
void settlementDetailInvoiceTypeSync(SettlementDetailInvoiceTypeSyncMqParam mq);
void settle(SettlementSettleMqParam mq);
void settlementDriverNotify(String childNo,Integer payType,String payErrorMsg);
String paySettlementDriver(SettlementDriverDetail detail);
......
......@@ -6,4 +6,5 @@ public interface SettlementMqService {
void invoiceTypeSync(String childNo, Integer invoiceType);
void settle(String childNo, Integer invoiceType);
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论