# 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

@@ -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