diff --git a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/OrderBasicInfoController.java b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/OrderBasicInfoController.java index 3fefa4885..a0858e8a5 100644 --- a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/OrderBasicInfoController.java +++ b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/OrderBasicInfoController.java @@ -23,6 +23,7 @@ import com.jsowell.pile.service.PileMerchantInfoService; import com.jsowell.pile.service.PileStationInfoService; import com.jsowell.pile.util.UserUtils; import com.jsowell.pile.vo.web.OrderListVO; +import com.jsowell.pile.vo.web.SplitConfigOrderVO; import com.jsowell.pile.vo.web.SplitRecordInfoVO; import com.jsowell.service.OrderService; import org.apache.commons.collections4.CollectionUtils; @@ -251,4 +252,24 @@ public class OrderBasicInfoController extends BaseController { logger.info("查询订单分账数据 params:{}, result:{}", JSON.toJSONString(dto), response); return response; } + + /** + * 根据汇付会员id查询分账汇总数据 + * @param dto + * @return + */ + @PostMapping("/queryMemberAggregateData") + public RestApiResponse queryStationAggregateData(@RequestBody SplitConfigStationDTO dto) { + RestApiResponse response = null; + try { + List list = orderSplitRecordService.queryStationAggregateData(dto); + response = new RestApiResponse<>(list); + } catch (Exception e) { + logger.error("查询站点汇总数据 error", e); + response = new RestApiResponse<>(e); + } + logger.info("查询站点汇总数据 params:{}, result:{}", JSON.toJSONString(dto), response); + return response; + } + } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/SplitConfigStationDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/SplitConfigStationDTO.java index 26c946acd..6bf7ac183 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/dto/SplitConfigStationDTO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/SplitConfigStationDTO.java @@ -13,4 +13,8 @@ public class SplitConfigStationDTO { * 汇付会员ID */ private String adapayMemberId; + + private String startTime; + + private String endTime; } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderSplitRecordMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderSplitRecordMapper.java index a8d05e5da..6674f4200 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderSplitRecordMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderSplitRecordMapper.java @@ -2,7 +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.SplitConfigOrderVO; +import com.jsowell.pile.vo.web.SplitConfigStationVO; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -47,4 +50,13 @@ public interface OrderSplitRecordMapper { List queryOrderCodesByParams(@Param("dto") QueryOrderSplitDTO dto); List queryOrderSplitData(@Param("orderCodeList") List orderCodeList); + + + + /** + * 根据汇付会员id查询分账汇总数据 + * @param dto + * @return + */ + List queryStationAggregateData(SplitConfigStationDTO dto); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderSplitRecordService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderSplitRecordService.java index db407603a..e7ebb6891 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderSplitRecordService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/OrderSplitRecordService.java @@ -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 queryOrderSplitRecordByMemberId(String adapayMemberId, String startTime, String endTime); + + List queryStationAggregateData(SplitConfigStationDTO dto); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderSplitRecordServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderSplitRecordServiceImpl.java index c4e0bff9c..0707af146 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderSplitRecordServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderSplitRecordServiceImpl.java @@ -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 queryStationAggregateData(SplitConfigStationDTO dto) { + //获取该汇付id的所有分账信息 + List lists=orderSplitRecordMapper.queryStationAggregateData(dto); + if(CollectionUtils.isEmpty(lists)){ + return Lists.newArrayList(); + } + //根据stationId分组 + Map> collect = lists.stream() + .collect(Collectors.groupingBy(SplitConfigStationVO::getStationId)); + + //根据分组进行分账信息的汇总 + List resultList = Lists.newArrayList(); + for (Map.Entry> entry : collect.entrySet()) { + String stationId = entry.getKey(); + List splitConfigStationVOList = entry.getValue(); + + //计算时间范围 + List 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 diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/SplitConfigOrderVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/SplitConfigOrderVO.java new file mode 100644 index 000000000..fe9720545 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/SplitConfigOrderVO.java @@ -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; + +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/SplitConfigStationVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/SplitConfigStationVO.java index 24597ced8..5f573b4df 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/SplitConfigStationVO.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/SplitConfigStationVO.java @@ -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; + } diff --git a/jsowell-pile/src/main/resources/mapper/pile/OrderSplitRecordMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/OrderSplitRecordMapper.xml index 9613cdd14..313f5d57c 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/OrderSplitRecordMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/OrderSplitRecordMapper.xml @@ -836,4 +836,23 @@ station_id = #{dto.stationId,jdbcType=VARCHAR} AND trade_date BETWEEN #{dto.startTime,jdbcType=VARCHAR} AND #{dto.endTime,jdbcType=VARCHAR} + + +