新增 根据汇付会员id查询分账汇总数据接口

This commit is contained in:
YAS\29473
2025-04-14 17:02:09 +08:00
parent bc7fa82f71
commit 247185202e
8 changed files with 192 additions and 4 deletions

View File

@@ -6,12 +6,10 @@ import com.jsowell.adapay.response.PaymentConfirmResponse;
import com.jsowell.common.core.page.PageResponse;
import com.jsowell.pile.domain.OrderSplitRecord;
import com.jsowell.pile.dto.QueryOrderSplitDTO;
import com.jsowell.pile.dto.SplitConfigStationDTO;
import com.jsowell.pile.dto.SplitOrderDTO;
import com.jsowell.pile.vo.OrderInfoDetailVO;
import com.jsowell.pile.vo.web.OrderSplitDailySummaryData;
import com.jsowell.pile.vo.web.OrderSplitRecordVO;
import com.jsowell.pile.vo.web.SplitOrdersInfoVO;
import com.jsowell.pile.vo.web.SplitRecordInfoVO;
import com.jsowell.pile.vo.web.*;
import java.util.List;
import java.util.Map;
@@ -78,5 +76,7 @@ public interface OrderSplitRecordService {
* 根据汇付会员id查询时间段内订单分账记录
*/
List<OrderSplitRecord> queryOrderSplitRecordByMemberId(String adapayMemberId, String startTime, String endTime);
List<SplitConfigOrderVO> queryStationAggregateData(SplitConfigStationDTO dto);
}

View File

@@ -12,6 +12,7 @@ import com.jsowell.common.core.domain.model.LoginUser;
import com.jsowell.common.core.page.PageResponse;
import com.jsowell.common.enums.DelFlagEnum;
import com.jsowell.common.enums.adapay.AdapayStatusEnum;
import com.jsowell.common.exception.BusinessException;
import com.jsowell.common.util.DateUtils;
import com.jsowell.common.util.SecurityUtils;
import com.jsowell.common.util.StringUtils;
@@ -19,6 +20,7 @@ import com.jsowell.pile.domain.AdapayMemberAccount;
import com.jsowell.pile.domain.OrderSplitRecord;
import com.jsowell.pile.domain.PileMerchantInfo;
import com.jsowell.pile.dto.QueryOrderSplitDTO;
import com.jsowell.pile.dto.SplitConfigStationDTO;
import com.jsowell.pile.dto.SplitOrderDTO;
import com.jsowell.pile.mapper.OrderSplitRecordMapper;
import com.jsowell.pile.service.AdapayMemberAccountService;
@@ -347,6 +349,70 @@ public class OrderSplitRecordServiceImpl implements OrderSplitRecordService {
return orderSplitRecordMapper.queryOrderSplitRecordByMemberId(adapayMemberId, startTime, endTime);
}
@Override
public List<SplitConfigOrderVO> queryStationAggregateData(SplitConfigStationDTO dto) {
//获取该汇付id的所有分账信息
List<SplitConfigStationVO> lists=orderSplitRecordMapper.queryStationAggregateData(dto);
if(CollectionUtils.isEmpty(lists)){
return Lists.newArrayList();
}
//根据stationId分组
Map<String, List<SplitConfigStationVO>> collect = lists.stream()
.collect(Collectors.groupingBy(SplitConfigStationVO::getStationId));
//根据分组进行分账信息的汇总
List<SplitConfigOrderVO> resultList = Lists.newArrayList();
for (Map.Entry<String, List<SplitConfigStationVO>> entry : collect.entrySet()) {
String stationId = entry.getKey();
List<SplitConfigStationVO> splitConfigStationVOList = entry.getValue();
//计算时间范围
List<SplitConfigStationVO> sortedList = splitConfigStationVOList.stream()
.sorted(Comparator.comparing(SplitConfigStationVO::getTradeDate))
.collect(Collectors.toList());
String startTime = sortedList.get(0).getTradeDate();
String endTime = sortedList.get(sortedList.size() - 1).getTradeDate();
String timeRange = startTime + "" + endTime;
//总的电费分账金额totalElectricitySplitAmount
BigDecimal totalElectricitySplitAmount =
splitConfigStationVOList.stream()
.map(SplitConfigStationVO::getElectricityAmount)
.filter(Objects::nonNull) //过滤掉null
.reduce(BigDecimal.ZERO, BigDecimal::add);
//总的服务费分账金额totalServiceSplitAmount
BigDecimal totalServiceSplitAmount =
splitConfigStationVOList.stream()
.map(SplitConfigStationVO::getServiceAmount)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
//总手续费分账金额totalFeeAmount
BigDecimal totalFeeAmount =
splitConfigStationVOList.stream()
.map(SplitConfigStationVO::getFeeAmount)
.filter(Objects::nonNull)
.reduce(BigDecimal.ZERO, BigDecimal::add);
//总收入分账金额= 总电费分账金额 +总手续费分账金额 -总手续费分账金额
BigDecimal totalRevenueAmount = totalElectricitySplitAmount.add(totalServiceSplitAmount).subtract(totalFeeAmount);
SplitConfigOrderVO splitConfigOrderVO =
SplitConfigOrderVO.builder()
.stationId(stationId)
.stationName(splitConfigStationVOList.get(0).getStationName())
.orderCount(splitConfigStationVOList.size())
.timeRange(timeRange)
.totalElectricitySplitAmount(totalElectricitySplitAmount)
.totalServiceSplitAmount(totalServiceSplitAmount)
.totalFeeAmount(totalFeeAmount)
.totalRevenueAmount(totalRevenueAmount)
.build();
resultList.add(splitConfigOrderVO);
}
return resultList;
}
/**
* 根据merchantId, 查询从他人分账的金额
* extra income