提交 e914a41b authored 作者: 刘海泉's avatar 刘海泉

提交挂单运费相关代码

上级 37f41811
...@@ -112,4 +112,7 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int ...@@ -112,4 +112,7 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int
void batchCancelOrderGoodsWeight(List<OrderGoodsCancelWeightDTO> cancelOrderGoodsList); void batchCancelOrderGoodsWeight(List<OrderGoodsCancelWeightDTO> cancelOrderGoodsList);
OrderGoods queryLineNewestPendingFreight(Integer sendAddressId,Integer receiveAddressId);
List<OrderGoods> queryLineAvgPendingFreight(Integer sendAddressId, Integer receiveAddressId,LocalDateTime begin,LocalDateTime end);
} }
...@@ -19,4 +19,6 @@ public interface PendingFreightDao extends BaseDao<PendingFreightMapper, Pending ...@@ -19,4 +19,6 @@ public interface PendingFreightDao extends BaseDao<PendingFreightMapper, Pending
void updateOrderedAndLoadTruckRate(String orderNo, BigDecimal orderedRate, BigDecimal loadTruckRate); void updateOrderedAndLoadTruckRate(String orderNo, BigDecimal orderedRate, BigDecimal loadTruckRate);
IPage<PendingFreight> pagePendingFreight(PagePendingFreightParam param); IPage<PendingFreight> pagePendingFreight(PagePendingFreightParam param);
void updatePendingFreight(String orderNo, BigDecimal pendingFreight, BigDecimal avgPendingFreight);
} }
...@@ -303,4 +303,26 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods, ...@@ -303,4 +303,26 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
public void batchCancelOrderGoodsWeight(List<OrderGoodsCancelWeightDTO> cancelOrderGoodsList) { public void batchCancelOrderGoodsWeight(List<OrderGoodsCancelWeightDTO> cancelOrderGoodsList) {
baseMapper.batchCancelOrderGoodsWeight(cancelOrderGoodsList); baseMapper.batchCancelOrderGoodsWeight(cancelOrderGoodsList);
} }
@Override
public OrderGoods queryLineNewestPendingFreight(Integer sendAddressId,Integer receiveAddressId) {
LambdaQueryWrapper<OrderGoods> query = new LambdaQueryWrapper<>();
query.eq(OrderGoods :: getSendAddressId,sendAddressId);
query.eq(OrderGoods :: getReceiveAddressId,receiveAddressId);
query.orderByDesc(OrderGoods :: getId);
query.last("limit 1");
return baseMapper.selectOne(query);
}
@Override
public List<OrderGoods> queryLineAvgPendingFreight(Integer sendAddressId, Integer receiveAddressId,
LocalDateTime begin,LocalDateTime end) {
LambdaQueryWrapper<OrderGoods> query = new LambdaQueryWrapper<>();
query.eq(OrderGoods :: getSendAddressId,sendAddressId);
query.eq(OrderGoods :: getReceiveAddressId,receiveAddressId);
query.ge(OrderGoods :: getCreateTime,begin);
query.le(OrderGoods :: getCreateTime,end);
return baseMapper.selectList(query);
}
} }
...@@ -46,4 +46,13 @@ public class PendingFreightDaoImpl extends BaseDaoImpl<PendingFreightMapper, Pen ...@@ -46,4 +46,13 @@ public class PendingFreightDaoImpl extends BaseDaoImpl<PendingFreightMapper, Pen
query.orderByDesc(PendingFreight :: getId); query.orderByDesc(PendingFreight :: getId);
return baseMapper.selectPage(Page.of(param.getPage(),param.getPageSize()),query); return baseMapper.selectPage(Page.of(param.getPage(),param.getPageSize()),query);
} }
@Override
public void updatePendingFreight(String orderNo, BigDecimal pendingFreight, BigDecimal avgPendingFreight) {
LambdaUpdateWrapper<PendingFreight> update = new LambdaUpdateWrapper<>();
update.set(PendingFreight :: getHistoryFreight,pendingFreight);
update.set(PendingFreight :: getHistoryAvgFreight,avgPendingFreight);
update.eq(PendingFreight :: getOrderNo,orderNo);
baseMapper.update(update);
}
} }
...@@ -97,7 +97,8 @@ public class OrderGoodsDtsListener { ...@@ -97,7 +97,8 @@ public class OrderGoodsDtsListener {
}else{ }else{
if(!Objects.equals(before.getOrderGoodsStatus(),after.getOrderGoodsStatus()) if(!Objects.equals(before.getOrderGoodsStatus(),after.getOrderGoodsStatus())
|| !Objects.equals(before.getAlreadyTransportWeight(),after.getAlreadyTransportWeight()) || !Objects.equals(before.getAlreadyTransportWeight(),after.getAlreadyTransportWeight())
|| !Objects.equals(before.getExtractWeight(),after.getExtractWeight())){ || !Objects.equals(before.getExtractWeight(),after.getExtractWeight())
|| !Objects.equals(before.getPendingOrderFreight(),after.getPendingOrderFreight())){
isSend = true; isSend = true;
} }
......
...@@ -31,7 +31,7 @@ public class SyncPendingFreight4OrderGoodsListener { ...@@ -31,7 +31,7 @@ public class SyncPendingFreight4OrderGoodsListener {
OrderGoods data = JSON.parseObject(new String(message.getBody()), OrderGoods data = JSON.parseObject(new String(message.getBody()),
new TypeReference<MqWrapper<OrderGoods>>() { new TypeReference<MqWrapper<OrderGoods>>() {
}).getData(); }).getData();
pendingFreightService.dealPendingFreight4OrderGoods(data.getOrderNo()); pendingFreightService.dealPendingFreight4OrderGoods(data);
}catch (Exception e){ }catch (Exception e){
log.info("监听到同步挂单运费表---货单信息部分发生异常,异常原因:{}", ExceptionUtils.getStackTrace(e)); log.info("监听到同步挂单运费表---货单信息部分发生异常,异常原因:{}", ExceptionUtils.getStackTrace(e));
} }
......
...@@ -3,6 +3,7 @@ package com.clx.performance.service; ...@@ -3,6 +3,7 @@ package com.clx.performance.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.open.sdk.callback.message.OrderInfoMessage; import com.clx.open.sdk.callback.message.OrderInfoMessage;
import com.clx.order.param.mq.SyncPendingFreightInternalReportParam; import com.clx.order.param.mq.SyncPendingFreightInternalReportParam;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.param.pc.PagePendingFreightParam; import com.clx.performance.param.pc.PagePendingFreightParam;
import com.clx.performance.vo.pc.PagePendingFreightVO; import com.clx.performance.vo.pc.PagePendingFreightVO;
import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.apache.poi.xssf.streaming.SXSSFWorkbook;
...@@ -18,7 +19,7 @@ public interface PendingFreightService { ...@@ -18,7 +19,7 @@ public interface PendingFreightService {
void dealPendingFreight4InternalReport(SyncPendingFreightInternalReportParam param); void dealPendingFreight4InternalReport(SyncPendingFreightInternalReportParam param);
void dealPendingFreight4OrderGoods(String orderNo); void dealPendingFreight4OrderGoods(OrderGoods orderGoods);
void dealPendingFreight4OrderChild(String orderNo); void dealPendingFreight4OrderChild(String orderNo);
......
...@@ -37,6 +37,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -37,6 +37,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
...@@ -128,12 +129,47 @@ public class PendingFreightServiceImpl implements PendingFreightService { ...@@ -128,12 +129,47 @@ public class PendingFreightServiceImpl implements PendingFreightService {
//处理挂单运费货单数据 //处理挂单运费货单数据
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Override @Override
public void dealPendingFreight4OrderGoods(String orderNo) { public void dealPendingFreight4OrderGoods(OrderGoods orderGoods) {
String orderNo = orderGoods.getOrderNo();
//计算历史运费和历史平均运费
OrderedAndLoadTruckRateDTO dto = calcOrderedAndLoadTruckRate(orderNo); OrderedAndLoadTruckRateDTO dto = calcOrderedAndLoadTruckRate(orderNo);
//计算线路挂单运费
BigDecimal pendingFreight = this.queryLinePendingFreight(orderGoods.getSendAddressId(),
orderGoods.getReceiveAddressId());
//计算线路平均挂单运费
BigDecimal avgPendingFreight = this.queryLineAvgPendingFreight(orderGoods.getSendAddressId(),
orderGoods.getReceiveAddressId());
pendingFreightDao.updateOrderedAndLoadTruckRate(orderNo,dto.getOrderedRate(),dto.getLoadTruckRate()); pendingFreightDao.updateOrderedAndLoadTruckRate(orderNo,dto.getOrderedRate(),dto.getLoadTruckRate());
pendingFreightDao.updatePendingFreight(orderNo,pendingFreight,avgPendingFreight);
}
//查询该线路最新的历史运费
public BigDecimal queryLinePendingFreight(Integer sendAddressId,Integer receiveAddressId){
OrderGoods orderGoods = orderGoodsDao.queryLineNewestPendingFreight(sendAddressId,receiveAddressId);
return orderGoods.getPendingOrderFreight().movePointLeft(2);
} }
//查询该线路最新的历史平均运费
public BigDecimal queryLineAvgPendingFreight(Integer sendAddressId,Integer receiveAddressId){
LocalDateTime now = LocalDateTime.now();
LocalDateTime monthAgo = now.minusMonths(1);
List<OrderGoods> list = orderGoodsDao.queryLineAvgPendingFreight(sendAddressId,receiveAddressId,monthAgo,now);
if(CollectionUtils.isEmpty(list)){
return null;
}
BigDecimal total = BigDecimal.ZERO;
for (OrderGoods orderGoods : list) {
total = total.add(orderGoods.getPendingOrderFreight());
}
return total.movePointLeft(2).divide(new BigDecimal(list.size()),2, RoundingMode.HALF_UP);
}
//处理挂单运费运单数据 //处理挂单运费运单数据
@Override @Override
public void dealPendingFreight4OrderChild(String orderNo) { public void dealPendingFreight4OrderChild(String orderNo) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论