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

同步网络货运

上级 49f19d3e
...@@ -18,7 +18,8 @@ public enum IdTypeEnum { ...@@ -18,7 +18,8 @@ public enum IdTypeEnum {
CASE_OUT_SUCCESS(4L, "提现成功"), CASE_OUT_SUCCESS(4L, "提现成功"),
TOP_UP_SUCCESS(5L, "充值成功"), TOP_UP_SUCCESS(5L, "充值成功"),
FROZEN(6L, "冻结"), FROZEN(6L, "冻结"),
THAW(7L, "解冻") THAW(7L, "解冻"),
TAKE_OUT(8L, "扣除")
; ;
private final Long code; private final Long code;
private final String msg; private final String msg;
......
...@@ -29,4 +29,7 @@ public interface OwnerRunningWaterRecordDao extends BaseDao<OwnerRunningWaterRec ...@@ -29,4 +29,7 @@ public interface OwnerRunningWaterRecordDao extends BaseDao<OwnerRunningWaterRec
List<OwnerRunningWaterRecord> getOwnerRunningWaterRecord(String orderNo); List<OwnerRunningWaterRecord> getOwnerRunningWaterRecord(String orderNo);
List<OwnerAccountRunningWaterRecordVO> marginAccountList(PagePlatformMarginAccountParam param); List<OwnerAccountRunningWaterRecordVO> marginAccountList(PagePlatformMarginAccountParam param);
OwnerRunningWaterRecord getOneByOrderNoAndRunningWaterTypeAndAccountType(String orderNo, Integer runningWaterType, Integer accountType);
} }
...@@ -58,4 +58,12 @@ public class OwnerRunningWaterRecordDaoImpl extends BaseDaoImpl<OwnerRunningWate ...@@ -58,4 +58,12 @@ public class OwnerRunningWaterRecordDaoImpl extends BaseDaoImpl<OwnerRunningWate
public List<OwnerAccountRunningWaterRecordVO> marginAccountList(PagePlatformMarginAccountParam param) { public List<OwnerAccountRunningWaterRecordVO> marginAccountList(PagePlatformMarginAccountParam param) {
return baseMapper.marginAccountList(param); return baseMapper.marginAccountList(param);
} }
@Override
public OwnerRunningWaterRecord getOneByOrderNoAndRunningWaterTypeAndAccountType(String orderNo, Integer runningWaterType, Integer accountType) {
return baseMapper.selectOne(lQrWrapper().eq(OwnerRunningWaterRecord::getOrderNo, orderNo)
.eq(OwnerRunningWaterRecord::getRunningWaterType, runningWaterType)
.eq(OwnerRunningWaterRecord::getAccountType, accountType)
);
}
} }
...@@ -23,10 +23,11 @@ import java.util.Objects; ...@@ -23,10 +23,11 @@ import java.util.Objects;
@Repository @Repository
public class SettlementDriverDetailDaoImpl extends BaseDaoImpl<SettlementDriverDetailMapper, SettlementDriverDetail, Integer> implements SettlementDriverDetailDao { public class SettlementDriverDetailDaoImpl extends BaseDaoImpl<SettlementDriverDetailMapper, SettlementDriverDetail, Integer> implements SettlementDriverDetailDao {
@Override @Override
public boolean updateInvoiceType(SettlementDriverDetail item) { public boolean updateInvoiceTypeAndPrepayFreightFlag(SettlementDriverDetail item) {
return update(lUdWrapper() return update(lUdWrapper()
.eq(SettlementDriverDetail::getId, item.getId()) .eq(SettlementDriverDetail::getId, item.getId())
.set(SettlementDriverDetail::getInvoiceType, item.getInvoiceType()) .set(SettlementDriverDetail::getInvoiceType, item.getInvoiceType())
.set(SettlementDriverDetail::getPrepayFreightFlag, item.getPrepayFreightFlag())
); );
} }
......
...@@ -15,7 +15,7 @@ import com.msl.common.dao.BaseDao; ...@@ -15,7 +15,7 @@ import com.msl.common.dao.BaseDao;
*/ */
public interface SettlementDriverDetailDao extends BaseDao<SettlementDriverDetailMapper, SettlementDriverDetail, Integer> { public interface SettlementDriverDetailDao extends BaseDao<SettlementDriverDetailMapper, SettlementDriverDetail, Integer> {
boolean updateInvoiceType(SettlementDriverDetail item); boolean updateInvoiceTypeAndPrepayFreightFlag(SettlementDriverDetail item);
boolean updateSettlementNo(SettlementDriverDetail item); boolean updateSettlementNo(SettlementDriverDetail item);
......
...@@ -165,6 +165,9 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -165,6 +165,9 @@ public class OrderChildServiceImpl implements OrderChildService {
@Autowired @Autowired
private ZjxlGpsService zjxlGpsService; private ZjxlGpsService zjxlGpsService;
@Autowired
private OwnerRunningWaterRecordDao ownerRunningWaterRecordDao;
@Override @Override
public SaveOrderChildVO saveOrderChild(OrderChildSaveParam param) { public SaveOrderChildVO saveOrderChild(OrderChildSaveParam param) {
...@@ -1055,6 +1058,8 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1055,6 +1058,8 @@ public class OrderChildServiceImpl implements OrderChildService {
// 更新车辆状态 // 更新车辆状态
updateDriverOrderStatusDriverConfirm(orderChild.getTruckId()); updateDriverOrderStatusDriverConfirm(orderChild.getTruckId());
// 生成扣除流水
// 生成计费单 // 生成计费单
saveSettlementDetail(orderChild,orderGoods); saveSettlementDetail(orderChild,orderGoods);
......
...@@ -2,11 +2,18 @@ package com.clx.performance.service.impl.settle; ...@@ -2,11 +2,18 @@ package com.clx.performance.service.impl.settle;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.component.IdGenerateSnowFlake;
import com.clx.performance.dao.OwnerAccountDao;
import com.clx.performance.dao.OwnerRunningWaterRecordDao;
import com.clx.performance.dao.settle.SettlementOwnerDetailDao; import com.clx.performance.dao.settle.SettlementOwnerDetailDao;
import com.clx.performance.enums.IdTypeEnum;
import com.clx.performance.enums.OwnerAccountEnum;
import com.clx.performance.enums.settle.SettlementOwnerDetailEnum; import com.clx.performance.enums.settle.SettlementOwnerDetailEnum;
import com.clx.performance.enums.settle.SettlementWayEnum; import com.clx.performance.enums.settle.SettlementWayEnum;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.OwnerAccount;
import com.clx.performance.model.OwnerRunningWaterRecord;
import com.clx.performance.model.settle.SettlementOwnerDetail; import com.clx.performance.model.settle.SettlementOwnerDetail;
import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam; import com.clx.performance.param.pc.owner.PageCarrierSettlementOwnerDetailParam;
import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam; import com.clx.performance.param.pc.owner.PageOwnerSettlementOwnerDetailParam;
...@@ -41,6 +48,9 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS ...@@ -41,6 +48,9 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
private final SettlementOwnerDetailDao settlementOwnerDetailDao; private final SettlementOwnerDetailDao settlementOwnerDetailDao;
private final SettlementOwnerDetailStruct settlementOwnerDetailStruct; private final SettlementOwnerDetailStruct settlementOwnerDetailStruct;
private final IdGenerateSnowFlake idGenerateSnowFlake;
private final OwnerRunningWaterRecordDao ownerRunningWaterRecordDao;
private final OwnerAccountDao ownerAccountDao;
@Override @Override
...@@ -75,7 +85,50 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS ...@@ -75,7 +85,50 @@ public class SettlementOwnerDetailServiceImpl implements SettlementOwnerDetailS
settlementOwnerDetail.setLossFreight(lossFreightCalc(settlementOwnerDetail.getLossPrice(), settlementOwnerDetail.getLossWeight())); settlementOwnerDetail.setLossFreight(lossFreightCalc(settlementOwnerDetail.getLossPrice(), settlementOwnerDetail.getLossWeight()));
// 预付运费 // 预付运费
BigDecimal ans = settlementOwnerDetail.getFreight().subtract(settlementOwnerDetail.getLossFreight());
if (ans.compareTo(BigDecimal.ZERO) <= 0) {
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO); settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
} else {
List<OwnerRunningWaterRecord> runningWaterRecordList = ownerRunningWaterRecordDao.getOwnerRunningWaterRecord(orderChild.getOrderNo());
BigDecimal frozen = runningWaterRecordList.stream().filter(item -> {
return item.getRunningWaterType().equals(OwnerAccountEnum.RunningWaterStatus.FROZEN.getCode());
}).map(OwnerRunningWaterRecord::getAlterationBalance).reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal takeOut = runningWaterRecordList.stream().filter(item -> {
return item.getRunningWaterType().equals(OwnerAccountEnum.RunningWaterStatus.TAKE_OUT.getCode());
}).map(OwnerRunningWaterRecord::getAlterationBalance).reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal subtract = frozen.subtract(takeOut);
if (subtract.compareTo(BigDecimal.ZERO) <= 0) {
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
}
if (subtract.subtract(ans).compareTo(BigDecimal.ZERO) >= 0) {
OwnerAccount account = ownerAccountDao.getAccountByOwnerUserNoAndAccountType(orderChild.getOwnerUserNo(),
OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode());
settlementOwnerDetail.setPrepayFreight(ans);
OwnerRunningWaterRecord runningWaterRecord = new OwnerRunningWaterRecord();
runningWaterRecord.setOwnerUserName(orderChild.getOwnerName());
runningWaterRecord.setMobile(orderChild.getDriverMobile());
runningWaterRecord.setCreateBy("系统");
runningWaterRecord.setOrderId(orderChild.getId());
runningWaterRecord.setOrderNo(orderChild.getOrderNo());
runningWaterRecord.setRelationId(null);
runningWaterRecord.setAlterationBalance(ans);
runningWaterRecord.setFrozenBalance(ans);
runningWaterRecord.setUsableBalance(account.getUsableBalance());
runningWaterRecord.setTakeOutBalance(BigDecimal.ZERO);
runningWaterRecord.setAccountBalance(account.getAccountBalance());
runningWaterRecord.setOwnerUserNo(account.getOwnerUserNo());
runningWaterRecord.setAccountType(OwnerAccountEnum.AccountTypeStatus.PREPAID_FREIGHT_ACCOUNT.getCode());
runningWaterRecord.setRunningWaterType(OwnerAccountEnum.RunningWaterStatus.TAKE_OUT.getCode());
runningWaterRecord.setRunningWaterNo(idGenerateSnowFlake.nextId(IdTypeEnum.Type.TAKE_OUT.getCode()));
ownerRunningWaterRecordDao.saveEntity(runningWaterRecord);
} else {
settlementOwnerDetail.setPrepayFreight(BigDecimal.ZERO);
}
}
// 开票金额 // 开票金额
settlementOwnerDetail.setInvoiceFreight(invoiceFreightCalc(orderGoods.getSettlementWay(),settlementOwnerDetail)); settlementOwnerDetail.setInvoiceFreight(invoiceFreightCalc(orderGoods.getSettlementWay(),settlementOwnerDetail));
......
...@@ -42,13 +42,19 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -42,13 +42,19 @@ public class SettlementServiceImpl implements SettlementService {
if (settlementOwnerDetail.getInvoiceType() != null) {return;} if (settlementOwnerDetail.getInvoiceType() != null) {return;}
//设置司机预付运费标示
if (settlementOwnerDetail.getPrepayFreight().compareTo(BigDecimal.ZERO) > 0) {
settlementDriverDetail.setPrepayFreightFlag(1);
} else {
settlementDriverDetail.setPrepayFreightFlag(0);
}
// 货主结算金额<0走普通单 // 货主结算金额<0走普通单
if (settlementOwnerDetail.getSettlementFreight().compareTo(BigDecimal.ZERO) < 0){ if (settlementOwnerDetail.getSettlementFreight().compareTo(BigDecimal.ZERO) < 0){
invoiceType = SettlementOwnerEnum.InvoiceType.ORDINARY.getCode(); invoiceType = SettlementOwnerEnum.InvoiceType.ORDINARY.getCode();
settlementDriverDetail.setPrepayFreightFlag(0); settlementDriverDetail.setPrepayFreightFlag(0);
} else { } else {
//是否通过风控,调用网络货运 //是否通过风控,调用网络货运
//设置预付运费标示
if (SettlementOwnerEnum.InvoiceType.ONLINE.getCode().equals(invoiceType) && settlementOwnerDetail.getPrepayFreight().compareTo(BigDecimal.ZERO) > 0) { if (SettlementOwnerEnum.InvoiceType.ONLINE.getCode().equals(invoiceType) && settlementOwnerDetail.getPrepayFreight().compareTo(BigDecimal.ZERO) > 0) {
settlementDriverDetail.setPrepayFreightFlag(1); settlementDriverDetail.setPrepayFreightFlag(1);
} }
...@@ -64,7 +70,7 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -64,7 +70,7 @@ public class SettlementServiceImpl implements SettlementService {
} }
settlementOwnerDetailDao.updateInvoiceType(settlementOwnerDetail); settlementOwnerDetailDao.updateInvoiceType(settlementOwnerDetail);
settlementDriverDetailDao.updateInvoiceType(settlementDriverDetail); settlementDriverDetailDao.updateInvoiceTypeAndPrepayFreightFlag(settlementDriverDetail);
// 发送mq 通过开票标识 // 发送mq 通过开票标识
settlementMqService.invoiceTypeSync(childNo, invoiceType); settlementMqService.invoiceTypeSync(childNo, invoiceType);
......
...@@ -7,8 +7,15 @@ import com.clx.performance.component.GoodsOrderTruckRecordComponent; ...@@ -7,8 +7,15 @@ import com.clx.performance.component.GoodsOrderTruckRecordComponent;
import com.clx.performance.component.OrderGoodsStatusLazyComponent; import com.clx.performance.component.OrderGoodsStatusLazyComponent;
import com.clx.performance.constant.RabbitKeyConstants; import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderGoodsDao; import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.feign.TransportFeignService;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.feign.transport.ThirdOrderChildBrokerParam;
import com.clx.performance.param.mq.OrderCancelMqParam; import com.clx.performance.param.mq.OrderCancelMqParam;
import com.clx.performance.service.OrderCancelService; import com.clx.performance.service.OrderCancelService;
import com.clx.performance.vo.feign.transport.ThirdOrderChildBrokerResultVO;
import com.clx.user.feign.TruckFeign;
import com.msl.common.result.Result;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.amqp.core.Message; import org.springframework.amqp.core.Message;
...@@ -49,6 +56,9 @@ public class JobTest { ...@@ -49,6 +56,9 @@ public class JobTest {
@Autowired @Autowired
private OrderCancelService orderCancelService; private OrderCancelService orderCancelService;
@Autowired
private TransportFeignService transportFeignService;
@Test @Test
public void test1() { public void test1() {
...@@ -62,7 +72,20 @@ public class JobTest { ...@@ -62,7 +72,20 @@ public class JobTest {
//orderCancelService.ownerCancelOrderPre("PT2023102700473"); //orderCancelService.ownerCancelOrderPre("PT2023102700473");
//orderCancelService.ownerCancelOrder("PT2023102600466"); //orderCancelService.ownerCancelOrder("PT2023102600466");
recordComponent.deleteTruckRecord("123"); OrderChild orderChild = new OrderChild();
System.out.println(); OrderGoods orderGoods = new OrderGoods();
ThirdOrderChildBrokerParam param = new ThirdOrderChildBrokerParam();
param.setOrderNo(orderChild.getOrderNo());
param.setChildNo(orderChild.getChildNo());
param.setTruckNo(orderChild.getTruckNo());
param.setFreightPrice(Integer.valueOf(orderChild.getFreightPrice().toString()));
param.setFreight(Integer.valueOf(orderChild.getFreight().toString()));
param.setSendAddress(orderGoods.getSendAddressShorter());
//缺省市区
param.setSendName(orderGoods.getUserName());
Result<ThirdOrderChildBrokerResultVO> thirdOrderChildBrokerResultVOResult = transportFeignService.orderChildSync(param);
System.out.println(thirdOrderChildBrokerResultVOResult);
} }
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论