diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java index 7cd58ffa7..9b581afb9 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java @@ -10,6 +10,7 @@ import com.iformall.controller.base.BaseController; import com.iformall.domain.po.*; import com.iformall.domain.po.base.BaseEntity.SortField; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.vo.OfflineActivityAwardsItemVo; import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.service.*; @@ -189,7 +190,7 @@ public class WxOfflineActivityController extends BaseController { return new ResultData(activity); } - @ApiOperation("活动奖品发放明细导出") + @ApiOperation("活动发放明细导出") @GetMapping("/grantExport") public void grantExport(@ModelAttribute WxOfflineActivity wxOfflineActivity, HttpServletRequest request, HttpServletResponse response) { if(wxOfflineActivity.getId() == null){ @@ -211,4 +212,22 @@ public class WxOfflineActivityController extends BaseController { return new ResultData(activity); } + @ApiOperation("活动奖项订单发放明细导出") + @GetMapping("/grantItemExport") + public void grantItemExport(@ModelAttribute OfflineActivityAwardsItemVo offlineActivityAwardsItemVo, HttpServletRequest request, HttpServletResponse response) { + if(offlineActivityAwardsItemVo.getId() == null){ + throw new MallinkException(Result.ERROR,"ID 为空"); + } + if(offlineActivityAwardsItemVo.getActivityItemId() == null){ + throw new MallinkException(Result.ERROR,"活动项ID 为空"); + } + if(offlineActivityAwardsItemVo.getActivityId() == null){ + throw new MallinkException(Result.ERROR,"活动ID 为空"); + } + + TenantEntity tenantInfo = getTenantInfo(); + offlineActivityAwardsItemVo.updateTenantInfo(tenantInfo); + wxOfflineActivityGrantAwardService.activityGrantItemExport(request,response,offlineActivityAwardsItemVo); + } + } diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java index 82b7f5362..265ac67f2 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java @@ -89,7 +89,7 @@ public class WxOfflineActivityGrantAward extends TenantEntity{ @TableField(value = "create_by") private Long createBy; @TableField(exist = false) - private List createByName; + private String createByName; @TableField(exist = false) private List createByIds; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java index 4e2d8b38e..04ca424a9 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java @@ -35,7 +35,7 @@ public class WxOfflineActivityGrantItem extends TenantEntity { private Long grantId; /** - * 发放奖励模式EnumOfflineActivityAwardsModeType + * 发放奖励模式 EnumOfflineActivityAwardsModeType */ @TableField(value = "grant_awards_mode") private Integer grantAwardsMode; diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java index ea4e04d2e..d11e29dd7 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java @@ -166,4 +166,9 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity { @TableField(value = "status") private Integer status; + @TableField(exist = false) + private BigDecimal minMoney; + @TableField(exist = false) + private BigDecimal maxMoney; + } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityAwardsItemVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityAwardsItemVo.java new file mode 100644 index 000000000..404bf09af --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityAwardsItemVo.java @@ -0,0 +1,20 @@ +package com.iformall.domain.vo; + + +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.ToString; + +import java.io.Serializable; + +@Data +@ToString(callSuper = true) +public class OfflineActivityAwardsItemVo extends TenantEntity { + + private Long id; + + private Long activityItemId; + + private Long activityId; + +} \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityGrantItemVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityGrantItemVo.java new file mode 100644 index 000000000..f15a60daa --- /dev/null +++ b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityGrantItemVo.java @@ -0,0 +1,50 @@ +package com.iformall.domain.vo; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.iformall.domain.po.base.TenantEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + + +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class OfflineActivityGrantItemVo extends TenantEntity { + + private Long grantId; + + private Long activityId; + private String activityName; + + private Long activityItemId; + private String activityItemName; + + private Long awardItamId; + private String awardName; + + private BigDecimal cashBackRatio; + private BigDecimal awardPrice; + private Integer awardCount; + + private BigDecimal mallShareRate; + private BigDecimal merchantShareRate; + + private Long recordId; + private String orderNo; + private BigDecimal orderMoney; + + private Long merchantId; + + private BigDecimal realGrantPrice; + private BigDecimal realMallSharePrice; + private BigDecimal realMerchantSharePrice; + +} \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java index a89f72882..8881f1a8e 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java @@ -3,10 +3,7 @@ package com.iformall.mapper; import com.iformall.common.CommonMapper; import com.iformall.domain.po.WxOfflineActivityGrantAward; import com.iformall.domain.po.WxOfflineActivityGrantSettlement; -import com.iformall.domain.vo.OfflineActivityItemStatistics; -import com.iformall.domain.vo.OfflineActivityItemStatisticsBVo; -import com.iformall.domain.vo.OfflineActivitySettlement; -import com.iformall.domain.vo.OfflineActivitySettlementStatistics; +import com.iformall.domain.vo.*; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -32,6 +29,9 @@ public interface WxOfflineActivityGrantSettlementMapper extends CommonMapper activityItemStatisticsChart(OfflineActivityItemStatisticsBVo activityItemStatisticsBo); + + + List findAwardItemGrantList(WxOfflineActivityGrantSettlement grantSettlement); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java index 60f2c39d7..3ada0b82d 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java @@ -1,10 +1,9 @@ package com.iformall.service; -import com.iformall.domain.po.WxOfflineActivity; -import com.iformall.domain.po.WxOfflineActivityGrantAward; +import com.iformall.domain.po.*; import com.baomidou.mybatisplus.extension.service.IService; -import com.iformall.domain.po.WxOfflineActivityRecord; import com.iformall.domain.po.base.TenantEntity; +import com.iformall.domain.vo.OfflineActivityAwardsItemVo; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -34,4 +33,8 @@ public interface WxOfflineActivityGrantAwardService { List grantAwardDetail(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); void activityGrantExport(HttpServletRequest request, HttpServletResponse response, WxOfflineActivity wxOfflineActivity); + + void activityGrantItemExport(HttpServletRequest request, HttpServletResponse response, OfflineActivityAwardsItemVo offlineActivityAwardsItemVo); + + List selectListByIds(List grantIds, TenantEntity tenantEntity); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java index d92febb3a..523a39adc 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java @@ -49,4 +49,5 @@ public interface WxOfflineActivityRecordService { List recordBusinessStatistics(WxOfflineActivityRecord wxOfflineActivityRecord); + List selectListByIds(List recordIds,TenantEntity tenantEntity); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java index 7d5f870c8..ecb1e2e7b 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -8,9 +8,7 @@ import com.iformall.common.IdWorker; import com.iformall.common.Result; import com.iformall.domain.po.*; import com.iformall.domain.po.base.TenantEntity; -import com.iformall.domain.vo.OfflineActivityGrantRecord; -import com.iformall.domain.vo.OfflineActivityGrantRule; -import com.iformall.domain.vo.OfflineActivityRecordStatistics; +import com.iformall.domain.vo.*; import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.mapper.*; @@ -52,6 +50,15 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity @Autowired WxOfflineActivityGrantSettlementMapper wxOfflineActivityGrantSettlementMapper; + @Autowired + private WxOfflineActivityAwardsItemMapper wxOfflineActivityAwardsItemMapper; + + @Autowired + private WxOfflineActivityAwardsItemService wxOfflineActivityAwardsItemService; + + @Autowired + private WxOfflineActivityAwardsModelMapper wxOfflineActivityAwardsModelMapper; + @Autowired private WxOfflineActivityGrantCashBackMapper wxOfflineActivityGrantCashBackMapper; @@ -79,6 +86,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity @Autowired WxOfflineActivityItemService wxOfflineActivityItemService; + @Autowired + private WxOfflineActivityItemMapper wxOfflineActivityItemMapper; + @Autowired WxOfflineActivityService wxOfflineActivityService; @@ -101,6 +111,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity ExcelService excelService; + @Override public Map getRecordStatistics(WxOfflineActivityRecord wxOfflineActivityRecord) { handlerRecordQuery(null,wxOfflineActivityRecord); @@ -1230,6 +1241,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity excelService.exportExcel(headList, activityGrantObjectList, null, "活动奖品发放明细", "活动奖品发放明细.xlsx",true, response); } + private List getActivityGrantExportHead(WxOfflineActivity activity){ List headList = new ArrayList<>(); ExcelExportEntity entity1 = new ExcelExportEntity("客户姓名","cusName",20); @@ -1455,9 +1467,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity return headList; } - - - private BigDecimal awardsRulePrice(BigDecimal awardsPrice,Integer awardsRule){ BigDecimal awardsRulePrice = BigDecimal.ZERO; if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(awardsRule)){ @@ -1471,6 +1480,305 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity return awardsRulePrice; } + @Override + public void activityGrantItemExport(HttpServletRequest request, HttpServletResponse response, OfflineActivityAwardsItemVo offlineActivityAwardsItemVo) { + WxOfflineActivityItem activityItem = wxOfflineActivityItemMapper.selectById(offlineActivityAwardsItemVo.getActivityItemId(), offlineActivityAwardsItemVo.getTenantId()); + if(activityItem == null){ + throw new MallinkException(Result.ERROR, "未查询到活动数据"); + } + if(!EnumOfflineActivityMode.ONE.getCode().equals(activityItem.getModeType())){ + throw new MallinkException(Result.ERROR, "发奖类型非单笔订单计算"); + } + + if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ + WxOfflineActivityAwardsModel activityAwardsModel = wxOfflineActivityAwardsModelMapper.selectById(offlineActivityAwardsItemVo.getId(), offlineActivityAwardsItemVo.getTenantId()); + if(activityAwardsModel == null || !activityAwardsModel.getActivityItemId().equals(activityItem.getId())){ + throw new MallinkException(Result.ERROR, "查询活动数据异常"); + } + grantItemLotteryDrawExport(request,response,activityItem,activityAwardsModel); + + } else if (EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())) { +// WxOfflineActivityAwardsModel activityAwardsModel = wxOfflineActivityAwardsModelMapper.selectById(offlineActivityAwardsItemVo.getId(), offlineActivityAwardsItemVo.getTenantId()); +// if(activityAwardsModel == null || !activityAwardsModel.getActivityItemId().equals(activityItem.getId())){ +// throw new MallinkException(Result.ERROR, "查询活动数据异常"); +// } + WxOfflineActivityAwardsItem wxOfflineActivityAwardsItem = wxOfflineActivityAwardsItemMapper.selectById(offlineActivityAwardsItemVo.getId(), offlineActivityAwardsItemVo.getTenantId()); + if(wxOfflineActivityAwardsItem == null || !wxOfflineActivityAwardsItem.getActivityItemId().equals(activityItem.getId())){ + throw new MallinkException(Result.ERROR, "查询活动数据异常"); + } + grantItemGiftExport(request,response,activityItem,wxOfflineActivityAwardsItem); + + } else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { + WxOfflineActivityAwardsItem wxOfflineActivityAwardsItem = wxOfflineActivityAwardsItemMapper.selectById(offlineActivityAwardsItemVo.getId(), offlineActivityAwardsItemVo.getTenantId()); + if(wxOfflineActivityAwardsItem == null || !wxOfflineActivityAwardsItem.getActivityItemId().equals(activityItem.getId())){ + throw new MallinkException(Result.ERROR, "查询活动数据异常"); + } + grantItemCashbackExport(request,response,activityItem,wxOfflineActivityAwardsItem); + + } + + } + + @Override + public List selectListByIds(List grantIds, TenantEntity tenantEntity) { + List WxOfflineActivityGrantAwards = wxOfflineActivityGrantAwardMapper.selectBatchIds(grantIds); + if(WxOfflineActivityGrantAwards != null && !WxOfflineActivityGrantAwards.isEmpty()){ + MallUserInfo userInfoQ = new MallUserInfo(); + userInfoQ.updateTenantInfo(tenantEntity); + Map userMap = mallUserInfoService.getUserMap(userInfoQ); + + WxOfflineActivityGrantAwards.forEach(record -> { + if(record.getCreateBy() != null){ + record.setCreateByName(userMap.get(record.getCreateBy()).getName()); + } + }); + } + + return WxOfflineActivityGrantAwards; + } + + private void grantItemLotteryDrawExport(HttpServletRequest request, HttpServletResponse response, + WxOfflineActivityItem activityItem, WxOfflineActivityAwardsModel activityAwardsModel){ + List activityAwardsItemList = wxOfflineActivityAwardsItemService.getActivityAwardsItemList(activityItem.getId(), activityItem.getTenantId()); + List exportHead = getGrantItemExportHead(); + for (int i = 0; i < activityAwardsItemList.size(); i++) { + ExcelExportEntity entity_1 = new ExcelExportEntity("奖品名称","awardName_"+i,20); + exportHead.add(entity_1); + ExcelExportEntity entity_2 = new ExcelExportEntity("数量","awardCount_"+i,20); + exportHead.add(entity_2); + ExcelExportEntity entity_3 = new ExcelExportEntity("价值","awardPrice_"+i,20); + exportHead.add(entity_3); + ExcelExportEntity entity_4 = new ExcelExportEntity("商户承担比例(%)","mallShareRate_"+i,20); + exportHead.add(entity_4); + ExcelExportEntity entity_5 = new ExcelExportEntity("商管承担比例(%)","merchantShareRate_"+i,20); + exportHead.add(entity_5); + ExcelExportEntity entity_6 = new ExcelExportEntity("商户承担金额","realMallSharePrice_"+i,20); + exportHead.add(entity_6); + ExcelExportEntity entity_7 = new ExcelExportEntity("商管承担金额","realMerchantSharePrice_"+i,20); + exportHead.add(entity_7); + } + + List> grantItemObjectList = new ArrayList<>(); + + WxOfflineActivityGrantSettlement grantSettlement = new WxOfflineActivityGrantSettlement(); + grantSettlement.updateTenantInfo(activityItem); + grantSettlement.setActivityItemId(activityItem.getId()); + grantSettlement.setMinMoney(activityAwardsModel.getMinAmount()); + grantSettlement.setMaxMoney(activityAwardsModel.getMaxAmount()); + List grantItemList = wxOfflineActivityGrantSettlementMapper.findAwardItemGrantList(grantSettlement); + if(grantItemList != null && !grantItemList.isEmpty()){ + Map> grantItemMap = grantItemList.stream().collect(groupingBy(OfflineActivityGrantItemVo::getRecordId)); + List recordIds = new ArrayList<>(grantItemMap.keySet()); + List recordList = wxOfflineActivityRecordService.selectListByIds(recordIds,activityItem); + Map recordMap = recordList.stream().collect(toMap(WxOfflineActivityRecord::getId, Function.identity())); + + List grantIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList()); + List grantList = this.selectListByIds(grantIds,activityItem); + Map grantMap = grantList.stream().collect(toMap(WxOfflineActivityGrantAward::getId, Function.identity())); + + recordIds.forEach(recordId -> { + List recordgrantItemList = grantItemMap.get(recordId); + WxOfflineActivityRecord record = recordMap.get(recordId); + WxOfflineActivityGrantAward grant = grantMap.get(recordgrantItemList.get(0).getGrantId()); + Map grantItemObject= getGrantItemExportObject(record,grant); + for (int i=0;i exportHead = getGrantItemExportHead(); + ExcelExportEntity entity_1 = new ExcelExportEntity("奖品名称","awardName",20); + exportHead.add(entity_1); + ExcelExportEntity entity_2 = new ExcelExportEntity("数量","awardCount",20); + exportHead.add(entity_2); + ExcelExportEntity entity_3 = new ExcelExportEntity("价值","awardPrice",20); + exportHead.add(entity_3); + ExcelExportEntity entity_4 = new ExcelExportEntity("商户承担比例(%)","mallShareRate",20); + exportHead.add(entity_4); + ExcelExportEntity entity_5 = new ExcelExportEntity("商管承担比例(%)","merchantShareRate",20); + exportHead.add(entity_5); + ExcelExportEntity entity_6 = new ExcelExportEntity("商户承担金额","realMallSharePrice",20); + exportHead.add(entity_6); + ExcelExportEntity entity_7 = new ExcelExportEntity("商管承担金额","realMerchantSharePrice",20); + exportHead.add(entity_7); + + List> grantItemObjectList = new ArrayList<>(); + + WxOfflineActivityGrantSettlement grantSettlement = new WxOfflineActivityGrantSettlement(); + grantSettlement.updateTenantInfo(activityItem); + grantSettlement.setActivityItemId(activityItem.getId()); + grantSettlement.setAwardItamId(wxOfflineActivityAwardsItem.getId()); + List grantItemList = wxOfflineActivityGrantSettlementMapper.findAwardItemGrantList(grantSettlement); + + if(grantItemList != null && !grantItemList.isEmpty()){ + List recordIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getRecordId).distinct().collect(toList()); + List recordList = wxOfflineActivityRecordService.selectListByIds(recordIds,activityItem); + Map recordMap = recordList.stream().collect(toMap(WxOfflineActivityRecord::getId, Function.identity())); + List grantIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList()); + List grantList = this.selectListByIds(grantIds,activityItem); + Map grantMap = grantList.stream().collect(toMap(WxOfflineActivityGrantAward::getId, Function.identity())); + grantItemList.forEach(grantItem->{ + WxOfflineActivityRecord record = recordMap.get(grantItem.getRecordId()); + WxOfflineActivityGrantAward grant = grantMap.get(grantItem.getGrantId()); + Map grantItemObject= getGrantItemExportObject(record,grant); + grantItemObject.put("awardName",grantItem.getAwardName()); + grantItemObject.put("awardCount",grantItem.getAwardCount()); + grantItemObject.put("awardPrice",grantItem.getAwardPrice()); + grantItemObject.put("mallShareRate",grantItem.getMallShareRate()); + grantItemObject.put("merchantShareRate",grantItem.getMerchantShareRate()); + grantItemObject.put("realMallSharePrice",grantItem.getRealMallSharePrice()); + grantItemObject.put("realMerchantSharePrice",grantItem.getRealMerchantSharePrice()); + }); + + } + + excelService.exportExcel(exportHead, grantItemObjectList, null, "赠礼活动发放明细", "赠礼活动发放明细.xlsx",true, response); + } + + private void grantItemCashbackExport(HttpServletRequest request, HttpServletResponse response, + WxOfflineActivityItem activityItem, WxOfflineActivityAwardsItem wxOfflineActivityAwardsItem){ + List exportHead = getGrantItemExportHead(); + ExcelExportEntity entity_1 = new ExcelExportEntity("返现名称","awardName",20); + exportHead.add(entity_1); +// ExcelExportEntity entity_2 = new ExcelExportEntity("数量","awardCount",20); +// exportHead.add(entity_2); + ExcelExportEntity entity_3 = new ExcelExportEntity("返现金额","awardPrice",20); + exportHead.add(entity_3); + ExcelExportEntity entity_4 = new ExcelExportEntity("商户承担比例(%)","mallShareRate",20); + exportHead.add(entity_4); + ExcelExportEntity entity_5 = new ExcelExportEntity("商管承担比例(%)","merchantShareRate",20); + exportHead.add(entity_5); + ExcelExportEntity entity_6 = new ExcelExportEntity("商户承担金额","realMallSharePrice",20); + exportHead.add(entity_6); + ExcelExportEntity entity_7 = new ExcelExportEntity("商管承担金额","realMerchantSharePrice",20); + exportHead.add(entity_7); + + List> grantItemObjectList = new ArrayList<>(); + + WxOfflineActivityGrantSettlement grantSettlement = new WxOfflineActivityGrantSettlement(); + grantSettlement.updateTenantInfo(activityItem); + grantSettlement.setActivityItemId(activityItem.getId()); + grantSettlement.setAwardItamId(wxOfflineActivityAwardsItem.getId()); + List grantItemList = wxOfflineActivityGrantSettlementMapper.findAwardItemGrantList(grantSettlement); + + if(grantItemList != null && !grantItemList.isEmpty()){ + List recordIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getRecordId).distinct().collect(toList()); + List recordList = wxOfflineActivityRecordService.selectListByIds(recordIds,activityItem); + Map recordMap = recordList.stream().collect(toMap(WxOfflineActivityRecord::getId, Function.identity())); + List grantIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList()); + List grantList = this.selectListByIds(grantIds,activityItem); + Map grantMap = grantList.stream().collect(toMap(WxOfflineActivityGrantAward::getId, Function.identity())); + grantItemList.forEach(grantItem->{ + WxOfflineActivityRecord record = recordMap.get(grantItem.getRecordId()); + WxOfflineActivityGrantAward grant = grantMap.get(grantItem.getGrantId()); + Map grantItemObject= getGrantItemExportObject(record,grant); + grantItemObject.put("awardName",grantItem.getAwardName()); +// grantItemObject.put("awardCount",grantItem.getAwardCount()); + grantItemObject.put("awardPrice",grantItem.getAwardPrice()); + grantItemObject.put("mallShareRate",grantItem.getMallShareRate()); + grantItemObject.put("merchantShareRate",grantItem.getMerchantShareRate()); + grantItemObject.put("realMallSharePrice",grantItem.getRealMallSharePrice()); + grantItemObject.put("realMerchantSharePrice",grantItem.getRealMerchantSharePrice()); + }); + } + + excelService.exportExcel(exportHead, grantItemObjectList, null, "返现活动发放明细", "返现活动发放明细.xlsx",true, response); + + } + + private List getGrantItemExportHead(){ + List headList = new ArrayList<>(); + ExcelExportEntity entity1 = new ExcelExportEntity("订单编号","orderNo",20); + headList.add(entity1); + ExcelExportEntity entity2 = new ExcelExportEntity("订单金额","orderMoney",20); + headList.add(entity2); + ExcelExportEntity entity3 = new ExcelExportEntity("订单地址","orderAddress",20); + headList.add(entity3); + ExcelExportEntity entity4 = new ExcelExportEntity("商户名称","merchantName",20); + headList.add(entity4); + ExcelExportEntity entity5 = new ExcelExportEntity("铺位号","shopNumber",20); + headList.add(entity5); + ExcelExportEntity entity6 = new ExcelExportEntity("业态","businessName",20); + headList.add(entity6); + ExcelExportEntity entity7 = new ExcelExportEntity("抽奖券编码","lotteryNum",20); + headList.add(entity7); + ExcelExportEntity entity8 = new ExcelExportEntity("抽奖券数量","lotteryCount",20); + headList.add(entity8); + ExcelExportEntity entity9 = new ExcelExportEntity("周年庆抽奖编码","anniversaryLotteryNum",20); + headList.add(entity9); + ExcelExportEntity entity10 = new ExcelExportEntity("提交时间","createDate",20); + entity10.setFormat("yyyy-MM-dd HH:mm:ss"); + headList.add(entity10); + ExcelExportEntity entity11 = new ExcelExportEntity("审核人","auditByName",20); + headList.add(entity11); + ExcelExportEntity entity12 = new ExcelExportEntity("审核时间","auditTime",20); + entity12.setFormat("yyyy-MM-dd HH:mm:ss"); + headList.add(entity12); + + + ExcelExportEntity entity20 = new ExcelExportEntity("客户姓名","cusName",20); + headList.add(entity20); + ExcelExportEntity entity21 = new ExcelExportEntity("客户电话","cusPhone",20); + headList.add(entity21); + ExcelExportEntity entity22 = new ExcelExportEntity("领奖人","realName",20); + headList.add(entity22); + ExcelExportEntity entity23 = new ExcelExportEntity("领奖人身份证号","realCard",20); + headList.add(entity23); + ExcelExportEntity entity24 = new ExcelExportEntity("发奖人","createByName",20); + headList.add(entity24); + ExcelExportEntity entity25 = new ExcelExportEntity("发奖时间","grantCreateDate",20); + entity25.setFormat("yyyy-MM-dd HH:mm:ss"); + headList.add(entity25); + ExcelExportEntity entity26 = new ExcelExportEntity("签名图片","signImg",40); +// entity26.setType(BaseEntityTypeConstants.IMAGE_TYPE); +// entity26.setExportImageType(1); +// entity26.setHeight(20); + headList.add(entity26); + + return headList; + } + + private Map getGrantItemExportObject(WxOfflineActivityRecord record,WxOfflineActivityGrantAward grant){ + Map grantItemObject = new HashMap<>(); + grantItemObject.put("orderNo",record.getOrderNo()); + grantItemObject.put("orderMoney",record.getOrderMoney()); + grantItemObject.put("orderAddress",record.getCusAddress()); + grantItemObject.put("merchantName",record.getMerchantName()); + grantItemObject.put("shopNumber",record.getShopNumber()); + grantItemObject.put("businessName",record.getBusinessName()); + if(record.getLotteryNumList() != null && !record.getLotteryNumList().isEmpty()){ + grantItemObject.put("lotteryNum",String.join(";", record.getLotteryNumList())); + } + grantItemObject.put("lotteryCount",record.getLotteryCount()); + grantItemObject.put("anniversaryLotteryNum",record.getAnniversaryLotteryNum()); + grantItemObject.put("createDate",record.getCreateDate()); + grantItemObject.put("auditByName",record.getAuditByName()); + grantItemObject.put("auditTime",record.getAuditTime()); + + grantItemObject.put("cusName",grant.getCusName()); + grantItemObject.put("cusPhone",grant.getCusPhone()); + grantItemObject.put("realName",grant.getRealName()); + grantItemObject.put("realCard",grant.getRealCard()); + grantItemObject.put("createByName",grant.getCreateByName()); + grantItemObject.put("grantCreateDate",grant.getCreateDate()); + grantItemObject.put("signImg",grant.getSignImg()); + return grantItemObject; + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java index 8fe6041bd..2e090a1b9 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java @@ -484,6 +484,39 @@ public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityReco } return Collections.emptyList(); } + + @Override + public List selectListByIds(List recordIds,TenantEntity tenantEntity) { + List wxOfflineActivityRecords = wxOfflineActivityRecordMapper.selectBatchIds(recordIds); + + if(wxOfflineActivityRecords!=null && !wxOfflineActivityRecords.isEmpty()){ + WxMerchant merchantQ = new WxMerchant(); + merchantQ.updateTenantInfo(tenantEntity); + Map merchantMap = wxMerchantService.getIdAndNamesMap(merchantQ); + + Map merchantShopNumberMap = wxShopService.getMerchantShopNumberMap(merchantQ, null, EnumYesOrNo.NO.getCode()); + + MallUserInfo userInfoQ = new MallUserInfo(); + userInfoQ.updateTenantInfo(tenantEntity); + Map userMap = mallUserInfoService.getUserMap(userInfoQ); + + Map bussinessMap = wxBusinessService.findAllMap(tenantEntity); + + wxOfflineActivityRecords.forEach(record -> { + if(record.getMerchantId() != null){ + record.setMerchantName(merchantMap.get(record.getMerchantId())); + record.setShopNumber(merchantShopNumberMap.get(record.getMerchantId())); + } + if(record.getAuditBy() != null){ + record.setAuditByName(userMap.get(record.getAuditBy()).getName()); + } + if(record.getBusinessId() != null){ + record.setBusinessName(bussinessMap.get(record.getBusinessId()).getTitle()); + } + }); + } + return wxOfflineActivityRecords; + } } diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml index 7a607b0a8..639e04a3c 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml @@ -294,7 +294,6 @@ group by xTime - update wx_offline_activity_grant_settlement set status = 0,update_date = now() where grant_id in ( @@ -302,4 +301,41 @@ where `activity_id` = #{activityId} and `cus_phone` = #{cusPhone} and `id` != #{id}) + +