diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/AliBusinessCircleOrderController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/AliBusinessCircleOrderController.java index b18bb0579..581bb1e4c 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/AliBusinessCircleOrderController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/AliBusinessCircleOrderController.java @@ -142,4 +142,15 @@ public class AliBusinessCircleOrderController extends BaseController { return new ResultData(aliStatistics); } + @GetMapping("exportStatisticsData") + @SystemControllerLog(description = "导出数据") + public void exportStatisticsData(@ModelAttribute AliBusinessCircleOrder circleOrder, HttpServletRequest request, HttpServletResponse response) { + logger.debug("[" + getIpAddr() + "] AliBusinessCircleOrderController::exportStatisticsData"); + if (null == circleOrder) { + circleOrder = new AliBusinessCircleOrder(); + } + circleOrder.updateTenantInfo(getTenantInfo()); + aliBusinessCircleOrderService.exportStatisticsData(circleOrder, request, response); + } + } diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxBusinessCircleOrderController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxBusinessCircleOrderController.java index 071c53126..63464c9f0 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxBusinessCircleOrderController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxBusinessCircleOrderController.java @@ -138,4 +138,15 @@ public class WxBusinessCircleOrderController extends BaseController { return new ResultData(aliStatistics); } + @GetMapping("exportStatisticsData") + @SystemControllerLog(description = "导出数据") + public void exportStatisticsData(@ModelAttribute WxBusinessCircleOrder circleOrder, HttpServletRequest request, HttpServletResponse response) { + logger.debug("[" + getIpAddr() + "] AliBusinessCircleOrderController::exportStatisticsData"); + if (null == circleOrder) { + circleOrder = new WxBusinessCircleOrder(); + } + circleOrder.updateTenantInfo(getTenantInfo()); + wxBusinessCircleOrderService.exportStatisticsData(circleOrder, request, response); + } + } diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/AlipayOrWxStatistics.java b/mallinkService/src/main/java/com/iformall/domain/vo/AlipayOrWxStatistics.java index b8bf5ae4e..5b5fc7d85 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/AlipayOrWxStatistics.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/AlipayOrWxStatistics.java @@ -1,18 +1,40 @@ package com.iformall.domain.vo; +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; import java.io.Serializable; +import java.math.BigDecimal; @Data public class AlipayOrWxStatistics implements Serializable { private static final long serialVersionUID = 1L; + @Excel(name = "商户名称", width = 20, orderNum = "2") private String merchantName;//商户名称 + private Integer payAmount;//支付总金额 + @Excel(name = "支付金额(元)", width = 20, orderNum = "3") + @TableField(exist = false) + @io.swagger.annotations.ApiModelProperty(value="用户实际付款金额,单位(元)",name="payAmountStr") + private String payAmountStr; + public String getPayAmountStr() { + return payAmount != null ? new BigDecimal(payAmount).divide(new BigDecimal(100)).toPlainString(): payAmountStr; + } private Integer refundAmount;//退款总金额 + @Excel(name = "退款金额(元)", width = 20, orderNum = "4") + @TableField(exist = false) + @io.swagger.annotations.ApiModelProperty(value="用户退款金额,单位(元)",name="refundAmountStr") + private String refundAmountStr; + public String getRefundAmountStr() { + return refundAmount != null ? new BigDecimal(refundAmount).divide(new BigDecimal(100)).toPlainString(): refundAmountStr; + } + @Excel(name = "支付积分", width = 20, orderNum = "5") private Integer payPoints;//支付添加总积分 + @Excel(name = "退款积分", width = 20, orderNum = "6") private Integer refundPoints;//支付退款扣减总积分 + @Excel(name = "商户ID", width = 20, orderNum = "1") private Long merchantId; } diff --git a/mallinkService/src/main/java/com/iformall/service/AliBusinessCircleOrderService.java b/mallinkService/src/main/java/com/iformall/service/AliBusinessCircleOrderService.java index 22a99ec34..f5feacda4 100644 --- a/mallinkService/src/main/java/com/iformall/service/AliBusinessCircleOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/AliBusinessCircleOrderService.java @@ -62,4 +62,6 @@ public interface AliBusinessCircleOrderService { PageInfo aliPayList(AliBusinessCircleOrder circleOrder, Integer pageNum, Integer pageSize); AlipayOrWxStatistics aliStatistics(AliBusinessCircleOrder circleOrder); + + void exportStatisticsData(AliBusinessCircleOrder circleOrder, HttpServletRequest request, HttpServletResponse response); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxBusinessCircleOrderService.java b/mallinkService/src/main/java/com/iformall/service/WxBusinessCircleOrderService.java index 86307a6fd..fd14706e0 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxBusinessCircleOrderService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxBusinessCircleOrderService.java @@ -95,4 +95,5 @@ public interface WxBusinessCircleOrderService { AlipayOrWxStatistics wxStatistics(WxBusinessCircleOrder circleOrder); + void exportStatisticsData(WxBusinessCircleOrder circleOrder, HttpServletRequest request, HttpServletResponse response); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/AliBusinessCircleOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/AliBusinessCircleOrderServiceImpl.java index a8a09ced6..55c7b732d 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/AliBusinessCircleOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/AliBusinessCircleOrderServiceImpl.java @@ -423,7 +423,7 @@ public class AliBusinessCircleOrderServiceImpl implements AliBusinessCircleOrder statistics.setMerchantName(merchantNamesMap.get(statistics.getMerchantId())); } if(StringUtils.isBlank(statistics.getMerchantName())){ - statistics.setMerchantName("其他"); + statistics.setMerchantName("未知门店"); } if(statisticsMap != null){ AlipayOrWxStatistics refundstatistics = statisticsMap.get(statistics.getMerchantId()); @@ -456,4 +456,54 @@ public class AliBusinessCircleOrderServiceImpl implements AliBusinessCircleOrder return aliStatistics; } + + @Override + public void exportStatisticsData(AliBusinessCircleOrder record, HttpServletRequest request, HttpServletResponse response) { + if (StringUtils.isNotEmpty(record.getMerchantName())) { + List ids = wxMerchantService.selectByMerchantIds(record.getMerchantName()); + if (!CollectionUtils.isEmpty(ids)) { + record.setMerchantIds(ids); + }else{ + ids.add(-999l); + record.setMerchantIds(ids); + } + } + List aliStatistics = aliBusinessCircleOrderMapper.aliPayList(record); + + List list = aliStatistics.parallelStream().filter(s -> s.getMerchantId() != null) + .map(AlipayOrWxStatistics::getMerchantId).collect(Collectors.toList()); + + Map statisticsMap = null; + Map merchantNamesMap = null; + if(CollectionUtils.isNotEmpty(list)){ + //查询退款数据 + record.setMerchantIds(list); + List alipayOrWxStatistics = aliBusinessCircleOrderMapper.aliRefundList(record); + + if (CollectionUtils.isNotEmpty(alipayOrWxStatistics)) { + statisticsMap = alipayOrWxStatistics.stream().collect(Collectors.toMap(AlipayOrWxStatistics::getMerchantId, s -> s)); + } + + WxMerchant wxMerchant = new WxMerchant(); + wxMerchant.setIds(list); + merchantNamesMap = wxMerchantService.getIdAndNamesMap(wxMerchant); + } + + for (AlipayOrWxStatistics statistics:aliStatistics) { + if(merchantNamesMap != null){ + statistics.setMerchantName(merchantNamesMap.get(statistics.getMerchantId())); + } + if(StringUtils.isBlank(statistics.getMerchantName())){ + statistics.setMerchantName("未知门店"); + } + if(statisticsMap != null){ + AlipayOrWxStatistics refundstatistics = statisticsMap.get(statistics.getMerchantId()); + if(refundstatistics != null){ + statistics.setRefundAmount(refundstatistics.getRefundAmount()); + statistics.setRefundPoints(refundstatistics.getRefundPoints()); + } + } + } + excelService.exportExcel(aliStatistics, null, "支付宝商圈统计", AlipayOrWxStatistics.class, "支付宝商圈统计.xlsx", response, false); + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBusinessCircleOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBusinessCircleOrderServiceImpl.java index 7e1a89358..2d51ae4c5 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBusinessCircleOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBusinessCircleOrderServiceImpl.java @@ -598,7 +598,7 @@ public class WxBusinessCircleOrderServiceImpl implements WxBusinessCircleOrderSe statistics.setMerchantName(merchantNamesMap.get(statistics.getMerchantId())); } if(StringUtils.isBlank(statistics.getMerchantName())){ - statistics.setMerchantName("其他"); + statistics.setMerchantName("未知门店"); } if(statisticsMap != null){ AlipayOrWxStatistics refundstatistics = statisticsMap.get(statistics.getMerchantId()); @@ -632,5 +632,55 @@ public class WxBusinessCircleOrderServiceImpl implements WxBusinessCircleOrderSe return aliStatistics; } + @Override + public void exportStatisticsData(WxBusinessCircleOrder record, HttpServletRequest request, HttpServletResponse response) { + if (StringUtils.isNotEmpty(record.getMerchantName())) { + List ids = wxMerchantService.selectByMerchantIds(record.getMerchantName()); + if (!CollectionUtils.isEmpty(ids)) { + record.setMerchantIds(ids); + }else{ + ids.add(-999l); + record.setMerchantIds(ids); + } + } + List wxStatistics = wxBusinessCircleOrderMapper.wxPayList(record); + + List list = wxStatistics.parallelStream().filter(s -> s.getMerchantId() != null) + .map(AlipayOrWxStatistics::getMerchantId).collect(Collectors.toList()); + + Map statisticsMap = null; + Map merchantNamesMap = null; + if(CollectionUtils.isNotEmpty(list)){ + //查询退款数据 + record.setMerchantIds(list); + List wxpayOrWxStatistics = wxBusinessCircleOrderMapper.wxRefundList(record); + + if (CollectionUtils.isNotEmpty(wxpayOrWxStatistics)) { + statisticsMap = wxpayOrWxStatistics.stream().collect(Collectors.toMap(AlipayOrWxStatistics::getMerchantId, s -> s)); + } + + WxMerchant wxMerchant = new WxMerchant(); + wxMerchant.setIds(list); + merchantNamesMap = wxMerchantService.getIdAndNamesMap(wxMerchant); + } + + for (AlipayOrWxStatistics statistics:wxStatistics) { + if(merchantNamesMap != null){ + statistics.setMerchantName(merchantNamesMap.get(statistics.getMerchantId())); + } + if(StringUtils.isBlank(statistics.getMerchantName())){ + statistics.setMerchantName("未知门店"); + } + if(statisticsMap != null){ + AlipayOrWxStatistics refundstatistics = statisticsMap.get(statistics.getMerchantId()); + if(refundstatistics != null){ + statistics.setRefundAmount(refundstatistics.getRefundAmount()); + statistics.setRefundPoints(refundstatistics.getRefundPoints()); + } + } + } + excelService.exportExcel(wxStatistics, null, "微信商圈统计", AlipayOrWxStatistics.class, "微信商圈统计.xlsx", response, false); + } + }