# Conflicts:
#	jsowell-admin/src/main/java/com/jsowell/web/controller/pile/OrderBasicInfoController.java
#	jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderSplitRecordMapper.java
#	jsowell-pile/src/main/java/com/jsowell/pile/service/OrderSplitRecordService.java
#	jsowell-pile/src/main/resources/mapper/pile/OrderSplitRecordMapper.xml
This commit is contained in:
Lemon
2025-04-15 10:01:48 +08:00
14 changed files with 265 additions and 36 deletions

View File

@@ -13,4 +13,8 @@ public class SplitConfigStationDTO {
* 汇付会员ID
*/
private String adapayMemberId;
private String startTime;
private String endTime;
}

View File

@@ -2,8 +2,10 @@ package com.jsowell.pile.mapper;
import com.jsowell.pile.domain.OrderSplitRecord;
import com.jsowell.pile.dto.QueryOrderSplitDTO;
import com.jsowell.pile.dto.SplitConfigStationDTO;
import com.jsowell.pile.vo.web.OrderSplitRecordVO;
import com.jsowell.pile.vo.web.SplitAggregateDataVO;
import com.jsowell.pile.vo.web.SplitConfigStationVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@@ -50,4 +52,11 @@ public interface OrderSplitRecordMapper {
List<OrderSplitRecordVO> queryOrderSplitData(@Param("orderCodeList") List<String> orderCodeList);
List<SplitAggregateDataVO> getSplitListByAdapyMemberId(@Param("dto") QueryOrderSplitDTO dto);
/**
* 根据汇付会员id查询分账汇总数据
* @param dto
* @return
*/
List<SplitConfigStationVO> queryStationAggregateData(SplitConfigStationDTO dto);
}

View File

@@ -6,6 +6,7 @@ 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.*;
@@ -82,5 +83,7 @@ public interface OrderSplitRecordService {
* @return
*/
List<SplitAggregateDataVO> queryStationAggregateData(QueryOrderSplitDTO dto);
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;
@@ -350,6 +352,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;
}
/**
* 根据汇付会员id查询分账汇总数据
* @param dto

View File

@@ -0,0 +1,56 @@
package com.jsowell.pile.vo.web;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class SplitConfigOrderVO {
/**
* 站点ID
*/
private String stationId;
/**
* 站点名称
*/
private String stationName;
/**
* 时间范围
*/
private String timeRange;
/**
* 订单数量
*/
private int orderCount;
/**
* 总电费分账金额
*/
private BigDecimal totalElectricitySplitAmount;
/**
* 总服务费分账金额
*/
private BigDecimal totalServiceSplitAmount;
/**
* 总手续费分账金额
*/
private BigDecimal totalFeeAmount;
/**
* 总收入分账金额= 总电费分账金额 +总手续费分账金额 -总手续费分账金额
*/
private BigDecimal totalRevenueAmount;
}

View File

@@ -2,6 +2,8 @@ package com.jsowell.pile.vo.web;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class SplitConfigStationVO {
@@ -15,4 +17,12 @@ public class SplitConfigStationVO {
*/
private String stationName;
private String tradeDate;
private BigDecimal electricityAmount;
private BigDecimal serviceAmount;
private BigDecimal feeAmount;
}