fix: 2024-03-25被错误的修改一个问题,导致分销订单无法结算,当前 commit 修复问题并优化问题,解决可能出现的事务问题,采用一条 sql 执行
This commit is contained in:
parent
cb776eb4c0
commit
8c5ce396b2
@ -25,12 +25,12 @@ import cn.lili.modules.system.service.SettingService;
|
||||
import cn.lili.timetask.handler.EveryDayExecute;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* @author paulG
|
||||
@ -92,7 +92,7 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute {
|
||||
}
|
||||
try {
|
||||
//关闭允许售后申请
|
||||
closeAfterSale(orderSetting);
|
||||
this.closeAfterSale(orderSetting);
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage(), e);
|
||||
}
|
||||
@ -111,7 +111,6 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute {
|
||||
*/
|
||||
private void completedOrder(OrderSetting orderSetting) {
|
||||
|
||||
|
||||
//订单自动收货时间 = 当前时间 - 自动收货时间天数
|
||||
DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getAutoReceive());
|
||||
LambdaQueryWrapper<Order> queryWrapper = new LambdaQueryWrapper<>();
|
||||
@ -144,7 +143,9 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute {
|
||||
DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getAutoEvaluation());
|
||||
|
||||
//订单完成时间 <= 订单自动好评时间
|
||||
OrderItemOperationDTO orderItemOperationDTO = OrderItemOperationDTO.builder().receiveTime(receiveTime).commentStatus(CommentStatusEnum.UNFINISHED.name()).build();
|
||||
OrderItemOperationDTO orderItemOperationDTO =
|
||||
OrderItemOperationDTO.builder().receiveTime(receiveTime).commentStatus(CommentStatusEnum.UNFINISHED.name())
|
||||
.build();
|
||||
List<OrderItem> orderItems = orderItemService.waitOperationOrderItem(orderItemOperationDTO);
|
||||
|
||||
//判断是否有符合条件的订单,进行自动评价处理
|
||||
@ -170,25 +171,23 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 关闭允许售后申请
|
||||
*
|
||||
* @param orderSetting 订单设置
|
||||
*/
|
||||
private void closeAfterSale(OrderSetting orderSetting) {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void closeAfterSale(OrderSetting orderSetting) {
|
||||
//订单关闭售后申请时间 = 当前时间 - 自动关闭售后申请天数
|
||||
DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getCloseAfterSale());
|
||||
//关闭售后订单=未售后订单+小于订单关闭售后申请时间
|
||||
OrderItemOperationDTO build = OrderItemOperationDTO.builder().receiveTime(receiveTime).afterSaleStatus(OrderItemAfterSaleStatusEnum.NOT_APPLIED.name()).build();
|
||||
List<OrderItem> orderItems = orderItemService.waitOperationOrderItem(build);
|
||||
|
||||
//判断是否有符合条件的订单,关闭允许售后申请处理
|
||||
if (!orderItems.isEmpty()) {
|
||||
orderItemService.expiredAfterSaleStatus(receiveTime);
|
||||
//修改对应分销订单状态
|
||||
distributionOrderService.updateDistributionOrderStatus(orderItems);
|
||||
}
|
||||
// OrderItemOperationDTO build = OrderItemOperationDTO.builder().receiveTime(receiveTime)
|
||||
// .afterSaleStatus(OrderItemAfterSaleStatusEnum.NOT_APPLIED.name()).build();
|
||||
// List<OrderItem> orderItems = orderItemService.waitOperationOrderItem(build);
|
||||
//关闭售后订单=未售后订单+小于订单关闭售后申请时间
|
||||
orderItemService.expiredAfterSaleStatus(receiveTime);
|
||||
//修改对应分销订单状态
|
||||
distributionOrderService.updateDistributionOrderStatus();
|
||||
|
||||
}
|
||||
|
||||
@ -207,7 +206,8 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute {
|
||||
DateTime receiveTime = DateUtil.offsetDay(DateUtil.date(), -orderSetting.getCloseComplaint());
|
||||
|
||||
//关闭售后订单=未售后订单+小于订单关闭售后申请时间
|
||||
OrderItemOperationDTO build = OrderItemOperationDTO.builder().receiveTime(receiveTime).complainStatus(OrderComplaintStatusEnum.NO_APPLY.name()).build();
|
||||
OrderItemOperationDTO build = OrderItemOperationDTO.builder().receiveTime(receiveTime)
|
||||
.complainStatus(OrderComplaintStatusEnum.NO_APPLY.name()).build();
|
||||
List<OrderItem> orderItems = orderItemService.waitOperationOrderItem(build);
|
||||
|
||||
//判断是否有符合条件的订单,关闭允许售后申请处理
|
||||
@ -217,9 +217,9 @@ public class OrderEveryDayTaskExecute implements EveryDayExecute {
|
||||
List<String> orderItemIdList = orderItems.stream().map(OrderItem::getId).collect(Collectors.toList());
|
||||
|
||||
//修改订单投诉状态
|
||||
LambdaUpdateWrapper<OrderItem> lambdaUpdateWrapper = new LambdaUpdateWrapper<OrderItem>()
|
||||
.set(OrderItem::getComplainStatus, OrderItemAfterSaleStatusEnum.EXPIRED.name())
|
||||
.in(OrderItem::getId, orderItemIdList);
|
||||
LambdaUpdateWrapper<OrderItem> lambdaUpdateWrapper =
|
||||
new LambdaUpdateWrapper<OrderItem>().set(OrderItem::getComplainStatus,
|
||||
OrderItemAfterSaleStatusEnum.EXPIRED.name()).in(OrderItem::getId, orderItemIdList);
|
||||
orderItemService.update(lambdaUpdateWrapper);
|
||||
}
|
||||
|
||||
|
@ -3,6 +3,9 @@ package cn.lili.modules.distribution.mapper;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.lili.modules.distribution.entity.dos.DistributionOrder;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
import org.apache.ibatis.annotations.Update;
|
||||
|
||||
/**
|
||||
@ -24,4 +27,15 @@ public interface DistributionOrderMapper extends BaseMapper<DistributionOrder> {
|
||||
",d.commission_frozen =(ifnull(d.commission_frozen,0) -(SELECT SUM( dorder.rebate ) FROM li_distribution_order AS dorder WHERE dorder.distribution_order_status = #{distributionOrderStatus} AND dorder.settle_cycle< #{settleCycle} AND dorder.distribution_id = d.id ) )")
|
||||
void rebate(String distributionOrderStatus, DateTime settleCycle);
|
||||
|
||||
/**
|
||||
* 查询待结算的分销订单
|
||||
* @return 待结算的分销订单
|
||||
*/
|
||||
@Select("UPDATE li_distribution_order distribution_order"
|
||||
+ " INNER JOIN li_order_item oi ON oi.sn = distribution_order.order_item_sn"
|
||||
+ " SET distribution_order.distribution_order_status = 'WAIT_BILL',"
|
||||
+ " distribution_order.settle_cycle = #{settleCycle} "
|
||||
+ " WHERE distribution_order.distribution_order_status = 'NO_COMPLETED'"
|
||||
+ " AND oi.after_sale_status = 'EXPIRED';")
|
||||
List<DistributionOrder> distributionSettlementOrder(Date settleCycle);
|
||||
}
|
||||
|
@ -45,17 +45,13 @@ public interface DistributionOrderService extends IService<DistributionOrder> {
|
||||
/**
|
||||
* 订单退款
|
||||
* 记录分销订单
|
||||
*
|
||||
* @param afterSaleSn 售后单号
|
||||
*/
|
||||
void refundOrder(AfterSale afterSale);
|
||||
|
||||
/**
|
||||
* 分销订单状态修改
|
||||
*
|
||||
* @param orderItems
|
||||
*/
|
||||
void updateDistributionOrderStatus(List<OrderItem> orderItems);
|
||||
void updateDistributionOrderStatus();
|
||||
|
||||
/**
|
||||
* 分销订单结算
|
||||
|
@ -1,13 +1,11 @@
|
||||
package cn.lili.modules.distribution.serviceimpl;
|
||||
|
||||
import cn.hutool.core.collection.ListUtil;
|
||||
import cn.hutool.core.date.DateField;
|
||||
import cn.hutool.core.date.DateTime;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.lili.common.utils.CurrencyUtil;
|
||||
import cn.lili.common.utils.SpringContextUtil;
|
||||
import cn.lili.modules.distribution.entity.dos.Distribution;
|
||||
import cn.lili.modules.distribution.entity.dos.DistributionOrder;
|
||||
import cn.lili.modules.distribution.entity.enums.DistributionOrderStatusEnum;
|
||||
@ -18,10 +16,8 @@ import cn.lili.modules.distribution.service.DistributionOrderService;
|
||||
import cn.lili.modules.distribution.service.DistributionService;
|
||||
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
|
||||
import cn.lili.modules.order.order.entity.dos.Order;
|
||||
import cn.lili.modules.order.order.entity.dos.OrderItem;
|
||||
import cn.lili.modules.order.order.entity.dos.StoreFlow;
|
||||
import cn.lili.modules.order.order.entity.dto.StoreFlowQueryDTO;
|
||||
import cn.lili.modules.order.order.entity.enums.OrderItemAfterSaleStatusEnum;
|
||||
import cn.lili.modules.order.order.entity.enums.PayStatusEnum;
|
||||
import cn.lili.modules.order.order.service.OrderService;
|
||||
import cn.lili.modules.order.order.service.StoreFlowService;
|
||||
@ -34,17 +30,15 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
/**
|
||||
* 分销订单接口实现
|
||||
@ -54,7 +48,8 @@ import java.util.stream.Collectors;
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderMapper, DistributionOrder> implements DistributionOrderService {
|
||||
public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderMapper, DistributionOrder>
|
||||
implements DistributionOrderService {
|
||||
|
||||
/**
|
||||
* 订单
|
||||
@ -78,15 +73,15 @@ public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderM
|
||||
private SettingService settingService;
|
||||
|
||||
@Override
|
||||
public IPage<DistributionOrder> getDistributionOrderPage(DistributionOrderSearchParams distributionOrderSearchParams) {
|
||||
return this.page(PageUtil.initPage(distributionOrderSearchParams), distributionOrderSearchParams.queryWrapper());
|
||||
public IPage<DistributionOrder> getDistributionOrderPage(
|
||||
DistributionOrderSearchParams distributionOrderSearchParams) {
|
||||
return this.page(PageUtil.initPage(distributionOrderSearchParams),
|
||||
distributionOrderSearchParams.queryWrapper());
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 1.查看订单是否为分销订单
|
||||
* 2.查看店铺流水计算分销总佣金
|
||||
* 3.修改分销员的分销总金额、冻结金额
|
||||
* 1.查看订单是否为分销订单 2.查看店铺流水计算分销总佣金 3.修改分销员的分销总金额、冻结金额
|
||||
*
|
||||
* @param orderSn 订单编号
|
||||
*/
|
||||
@ -100,8 +95,8 @@ public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderM
|
||||
//判断是否为分销订单,如果为分销订单则获取分销佣金
|
||||
if (order.getDistributionId() != null) {
|
||||
//根据订单编号获取有分销金额的店铺流水记录
|
||||
List<StoreFlow> storeFlowList = storeFlowService
|
||||
.listStoreFlow(StoreFlowQueryDTO.builder().justDistribution(true).orderSn(orderSn).build());
|
||||
List<StoreFlow> storeFlowList = storeFlowService.listStoreFlow(
|
||||
StoreFlowQueryDTO.builder().justDistribution(true).orderSn(orderSn).build());
|
||||
double rebate = 0.0;
|
||||
//循环店铺流水记录判断是否包含分销商品
|
||||
//包含分销商品则进行记录分销订单、计算分销总额
|
||||
@ -118,8 +113,8 @@ public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderM
|
||||
|
||||
//设置结算天数(解冻日期)
|
||||
Setting setting = settingService.get(SettingEnum.DISTRIBUTION_SETTING.name());
|
||||
DistributionSetting distributionSetting = JSONUtil.toBean(setting.getSettingValue(), DistributionSetting.class);
|
||||
|
||||
DistributionSetting distributionSetting =
|
||||
JSONUtil.toBean(setting.getSettingValue(), DistributionSetting.class);
|
||||
|
||||
//添加分销订单
|
||||
this.save(distributionOrder);
|
||||
@ -129,26 +124,23 @@ public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderM
|
||||
distributionService.addRebate(rebate, order.getDistributionId());
|
||||
|
||||
//如果天数写0则立即进行结算
|
||||
// if (distributionSetting.getCashDay().equals(0)) {
|
||||
// DateTime dateTime = new DateTime();
|
||||
// dateTime = dateTime.offsetNew(DateField.DAY_OF_MONTH, -distributionSetting.getCashDay());
|
||||
// //防止事务失效,采用上下文获取bean
|
||||
// DistributionOrderService bean = SpringContextUtil.getBean(DistributionOrderService.class);
|
||||
// //分销订单结算
|
||||
// bean.updateRebate(dateTime, DistributionOrderStatusEnum.WAIT_BILL.name());
|
||||
// }
|
||||
// if (distributionSetting.getCashDay().equals(0)) {
|
||||
// DateTime dateTime = new DateTime();
|
||||
// dateTime = dateTime.offsetNew(DateField.DAY_OF_MONTH, -distributionSetting.getCashDay());
|
||||
// //防止事务失效,采用上下文获取bean
|
||||
// DistributionOrderService bean = SpringContextUtil.getBean(DistributionOrderService.class);
|
||||
// //分销订单结算
|
||||
// bean.updateRebate(dateTime, DistributionOrderStatusEnum.WAIT_BILL.name());
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 1.获取订单判断是否为已付款的分销订单
|
||||
* 2.查看店铺流水记录分销佣金
|
||||
* 3.修改分销员的分销总金额、可提现金额
|
||||
* 1.获取订单判断是否为已付款的分销订单 2.查看店铺流水记录分销佣金 3.修改分销员的分销总金额、可提现金额
|
||||
*
|
||||
* @param orderSn 订单编号
|
||||
*/
|
||||
@ -162,8 +154,8 @@ public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderM
|
||||
if (order.getDistributionId() != null && order.getPayStatus().equals(PayStatusEnum.PAID.name())) {
|
||||
|
||||
//根据订单编号获取有分销金额的店铺流水记录
|
||||
List<DistributionOrder> distributionOrderList = this.list(new LambdaQueryWrapper<DistributionOrder>()
|
||||
.eq(DistributionOrder::getOrderSn, orderSn));
|
||||
List<DistributionOrder> distributionOrderList =
|
||||
this.list(new LambdaQueryWrapper<DistributionOrder>().eq(DistributionOrder::getOrderSn, orderSn));
|
||||
|
||||
//如果没有分销定单,则直接返回
|
||||
if (distributionOrderList.isEmpty()) {
|
||||
@ -185,18 +177,20 @@ public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderM
|
||||
|
||||
//修改分销订单的状态
|
||||
this.update(new LambdaUpdateWrapper<DistributionOrder>().eq(DistributionOrder::getOrderSn, orderSn)
|
||||
.set(DistributionOrder::getDistributionOrderStatus, DistributionOrderStatusEnum.CANCEL.name()));
|
||||
.set(DistributionOrder::getDistributionOrderStatus, DistributionOrderStatusEnum.CANCEL.name()));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void refundOrder(AfterSale afterSale) {
|
||||
//判断是否为分销订单
|
||||
StoreFlow refundStoreFlow = storeFlowService.queryOne(StoreFlowQueryDTO.builder().justDistribution(true).refundSn(afterSale.getSn()).build());
|
||||
StoreFlow refundStoreFlow = storeFlowService.queryOne(
|
||||
StoreFlowQueryDTO.builder().justDistribution(true).refundSn(afterSale.getSn()).build());
|
||||
if (refundStoreFlow != null) {
|
||||
//获取收款分销订单
|
||||
DistributionOrder distributionOrder = this.getOne(new LambdaQueryWrapper<DistributionOrder>()
|
||||
.eq(DistributionOrder::getOrderItemSn, afterSale.getOrderItemSn()));
|
||||
DistributionOrder distributionOrder = this.getOne(
|
||||
new LambdaQueryWrapper<DistributionOrder>().eq(DistributionOrder::getOrderItemSn,
|
||||
afterSale.getOrderItemSn()));
|
||||
//分销订单不存在,则直接返回
|
||||
if (distributionOrder == null) {
|
||||
return;
|
||||
@ -204,59 +198,27 @@ public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderM
|
||||
if (distributionOrder.getSellBackRebate() == null) {
|
||||
distributionOrder.setSellBackRebate(refundStoreFlow.getDistributionRebate());
|
||||
} else {
|
||||
distributionOrder.setSellBackRebate(CurrencyUtil.add(distributionOrder.getSellBackRebate(), refundStoreFlow.getDistributionRebate()));
|
||||
distributionOrder.setSellBackRebate(
|
||||
CurrencyUtil.add(distributionOrder.getSellBackRebate(), refundStoreFlow.getDistributionRebate()));
|
||||
}
|
||||
|
||||
distributionOrder.setRebate(CurrencyUtil.sub(distributionOrder.getRebate(), refundStoreFlow.getDistributionRebate()));
|
||||
distributionOrder.setRebate(
|
||||
CurrencyUtil.sub(distributionOrder.getRebate(), refundStoreFlow.getDistributionRebate()));
|
||||
if (distributionOrder.getRebate() == 0) {
|
||||
distributionOrder.setDistributionOrderStatus(DistributionOrderStatusEnum.REFUND.name());
|
||||
}
|
||||
this.updateById(distributionOrder);
|
||||
|
||||
// 修改分销员提成金额
|
||||
distributionService.subCanRebate(CurrencyUtil.sub(0, refundStoreFlow.getDistributionRebate()), distributionOrder.getDistributionId());
|
||||
// 修改分销员提成金额
|
||||
distributionService.subCanRebate(CurrencyUtil.sub(0, refundStoreFlow.getDistributionRebate()),
|
||||
distributionOrder.getDistributionId());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateDistributionOrderStatus(List<OrderItem> orderItems) {
|
||||
if (orderItems.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
public void updateDistributionOrderStatus() {
|
||||
//获取未完成分销订单
|
||||
List<DistributionOrder> distributionOrderList = this.list(new LambdaQueryWrapper<DistributionOrder>()
|
||||
.eq(DistributionOrder::getDistributionOrderStatus, DistributionOrderStatusEnum.NO_COMPLETED.name()));
|
||||
|
||||
if (distributionOrderList.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
List<DistributionOrder> list = ListUtil.list(false);
|
||||
|
||||
orderItems.stream().forEach(orderItem -> {
|
||||
//订单售后状态为已失效并且投诉状态为已失效
|
||||
if (StrUtil.equals(OrderItemAfterSaleStatusEnum.EXPIRED.name(), orderItem.getAfterSaleStatus())) {
|
||||
|
||||
|
||||
List<DistributionOrder> collect = distributionOrderList.stream()
|
||||
.filter(distributionOrder -> StrUtil.equals(distributionOrder.getOrderItemSn(), orderItem.getSn()))
|
||||
.map((distributionOrder) -> {
|
||||
distributionOrder.setDistributionOrderStatus(DistributionOrderStatusEnum.WAIT_BILL.name());
|
||||
distributionOrder.setSettleCycle(new Date());
|
||||
return distributionOrder;
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
|
||||
list.addAll(collect);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
if (!list.isEmpty()) {
|
||||
//批量修改分销订单结算状态
|
||||
this.updateBatchById(list);
|
||||
}
|
||||
baseMapper.distributionSettlementOrder(new Date());
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -264,20 +226,21 @@ public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderM
|
||||
//结算时间延后五分钟
|
||||
dateTime = dateTime.offsetNew(DateField.MINUTE, 5);
|
||||
//获取待结算订单
|
||||
List<DistributionOrder> distributionOrderList = this.list(new LambdaQueryWrapper<DistributionOrder>()
|
||||
.eq(DistributionOrder::getDistributionOrderStatus, distributionOrderStatus)
|
||||
.isNotNull(DistributionOrder::getSettleCycle)
|
||||
List<DistributionOrder> distributionOrderList = this.list(
|
||||
new LambdaQueryWrapper<DistributionOrder>().eq(DistributionOrder::getDistributionOrderStatus,
|
||||
distributionOrderStatus).isNotNull(DistributionOrder::getSettleCycle)
|
||||
.le(DistributionOrder::getSettleCycle, dateTime));
|
||||
//校验待结算订单
|
||||
if (ObjectUtil.isNotNull(distributionOrderList) && distributionOrderList.size() > 0) {
|
||||
//结算分销人员信息列表
|
||||
List<Distribution> distributionUpdateList = new ArrayList<>();
|
||||
//获取分销员信息
|
||||
List<Distribution> distributionList = distributionService.list(new LambdaQueryWrapper<Distribution>()
|
||||
.eq(Distribution::getDistributionStatus, DistributionStatusEnum.PASS.name()));
|
||||
List<Distribution> distributionList = distributionService.list(
|
||||
new LambdaQueryWrapper<Distribution>().eq(Distribution::getDistributionStatus,
|
||||
DistributionStatusEnum.PASS.name()));
|
||||
//根据销人员获取对应分销订单
|
||||
Map<String, List<DistributionOrder>> distributionOrderList1 = distributionOrderList.stream()
|
||||
.collect(Collectors.groupingBy(DistributionOrder::getDistributionId));
|
||||
Map<String, List<DistributionOrder>> distributionOrderList1 =
|
||||
distributionOrderList.stream().collect(Collectors.groupingBy(DistributionOrder::getDistributionId));
|
||||
|
||||
//校验分销订单不为空
|
||||
if (ObjectUtil.isNotNull(distributionOrderList1) && distributionOrderList1.size() > 0) {
|
||||
@ -302,10 +265,8 @@ public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderM
|
||||
this.updateBatchById(distributionOrderList);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 计算分销结算金额
|
||||
*
|
||||
@ -314,20 +275,25 @@ public class DistributionOrderServiceImpl extends ServiceImpl<DistributionOrderM
|
||||
* @param distributionList 分销列表
|
||||
* @return
|
||||
*/
|
||||
public Distribution checkDistribution(String
|
||||
distributionId, List<DistributionOrder> list, List<Distribution> distributionList) {
|
||||
public Distribution checkDistribution(String distributionId, List<DistributionOrder> list,
|
||||
List<Distribution> distributionList) {
|
||||
//获取所有待结算订单分销人员信息
|
||||
Distribution distribution = distributionList.parallelStream().filter(a -> StrUtil.equals(a.getId(), distributionId)).collect(Collectors.toList()).get(0);
|
||||
Distribution distribution =
|
||||
distributionList.parallelStream().filter(a -> StrUtil.equals(a.getId(), distributionId))
|
||||
.collect(Collectors.toList()).get(0);
|
||||
|
||||
//获取分销订单总金额
|
||||
double rebate = list.stream().mapToDouble(DistributionOrder::getRebate).sum();
|
||||
|
||||
//检验单分销人员冻结金额为负数时.扣除负数冻结金额后再结算
|
||||
if (distribution.getCommissionFrozen() < 0) {
|
||||
rebate = CurrencyUtil.add(distribution.getCommissionFrozen() == null ? 0.0 : distribution.getCommissionFrozen(), rebate);
|
||||
rebate =
|
||||
CurrencyUtil.add(distribution.getCommissionFrozen() == null ? 0.0 : distribution.getCommissionFrozen(),
|
||||
rebate);
|
||||
}
|
||||
//结算订单总金额+分销可提现金额
|
||||
Double canRebate = CurrencyUtil.add(rebate, distribution.getCanRebate() == null ? 0.0 : distribution.getCanRebate());
|
||||
Double canRebate =
|
||||
CurrencyUtil.add(rebate, distribution.getCanRebate() == null ? 0.0 : distribution.getCanRebate());
|
||||
//结算金额小于0
|
||||
if (canRebate < 0) {
|
||||
//结算订单总金额+分销可提现金额
|
||||
|
Loading…
x
Reference in New Issue
Block a user