diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityGrantItemVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityGrantItemVo.java index 80b4d6234..0131bd684 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityGrantItemVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityGrantItemVo.java @@ -41,6 +41,8 @@ public class OfflineActivityGrantItemVo extends TenantEntity { private BigDecimal mallShareRate; private BigDecimal merchantShareRate; + + private Long grantItemId; private Long recordId; private String orderNo; private BigDecimal orderMoney; diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java index 8881f1a8e..a27499b7a 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java @@ -32,6 +32,8 @@ public interface WxOfflineActivityGrantSettlementMapper extends CommonMapper findAwardItemGrantList(WxOfflineActivityGrantSettlement grantSettlement); + + List findAwardItemGrantCountList(WxOfflineActivityGrantSettlement grantSettlement); } 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 ea37f2882..6ad8362fa 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -1562,27 +1562,11 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity 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<>(); + List recordIds,grantIds; + //单笔订单 + Map> grantItemMap; WxOfflineActivityGrantSettlement grantSettlement = new WxOfflineActivityGrantSettlement(); grantSettlement.updateTenantInfo(activityItem); grantSettlement.setActivityItemId(activityItem.getId()); @@ -1590,85 +1574,246 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity 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()); + grantItemMap = grantItemList.stream().collect(groupingBy(OfflineActivityGrantItemVo::getRecordId)); + recordIds = new ArrayList<>(grantItemMap.keySet()); + grantIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList()); + //订单表头 + Map grantItemSizeMap = grantItemList.stream().collect(groupingBy(OfflineActivityGrantItemVo::getRecordId, counting())); + Long maxGrantItemSize = Collections.max(grantItemSizeMap.values()); + for (int i = 0; i < maxGrantItemSize.intValue(); 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); + } + + }else{ + grantItemMap = new HashMap<>(); + recordIds = new ArrayList<>(); + grantIds = new ArrayList<>(); + } + //联单 + Map> grantItemCountMap; + Map> grantItemCountRecordMap; + List grantItemCountList = wxOfflineActivityGrantSettlementMapper.findAwardItemGrantCountList(grantSettlement); + if(grantItemCountList != null && !grantItemCountList.isEmpty()){ + grantItemCountRecordMap = grantItemCountList.stream().collect(groupingBy(OfflineActivityGrantItemVo::getGrantItemId,Collectors.mapping(OfflineActivityGrantItemVo::getOrderNo,Collectors.toList()))); + grantItemCountMap = grantItemCountList.stream().collect(groupingBy(OfflineActivityGrantItemVo::getRecordId)); + List recordCountIds = grantItemCountList.stream().map(OfflineActivityGrantItemVo::getRecordId).distinct().collect(toList()); + recordIds.addAll(recordCountIds); + List grantCountIds = grantItemCountList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList()); + grantIds.addAll(grantCountIds); + + //联单表头 + Map grantItemCountSizeMap = grantItemCountList.stream().collect(groupingBy(OfflineActivityGrantItemVo::getRecordId, counting())); + Long maxGrantItemCountSize = Collections.max(grantItemCountSizeMap.values()); + for (int i = 0; i < maxGrantItemCountSize.intValue(); i++) { + ExcelExportEntity entityC_1 = new ExcelExportEntity("联单订单","countRecords_"+i,20); + exportHead.add(entityC_1); + ExcelExportEntity entityC_2 = new ExcelExportEntity("联单奖品名称","countAwardName_"+i,20); + exportHead.add(entityC_2); + ExcelExportEntity entityC_3 = new ExcelExportEntity("联单奖品数量","countAwardCount_"+i,20); + exportHead.add(entityC_3); + ExcelExportEntity entityC_4 = new ExcelExportEntity("联单奖品价值","countAwardPrice_"+i,20); + exportHead.add(entityC_4); + ExcelExportEntity entityC_5 = new ExcelExportEntity("联单实际承担价值","countRealGrantPrice_"+i,20); + exportHead.add(entityC_5); + ExcelExportEntity entityC_6 = new ExcelExportEntity("商户承担比例(%)","countMallShareRate_"+i,20); + exportHead.add(entityC_6); + ExcelExportEntity entityC_7 = new ExcelExportEntity("商管承担比例(%)","countMerchantShareRate_"+i,20); + exportHead.add(entityC_7); + ExcelExportEntity entityC_8 = new ExcelExportEntity("商户承担金额","countRealMallSharePrice_"+i,20); + exportHead.add(entityC_8); + ExcelExportEntity entityC_9 = new ExcelExportEntity("商管承担金额","countRealMerchantSharePrice_"+i,20); + exportHead.add(entityC_9); + } + }else{ + grantItemCountRecordMap = new HashMap<>(); + grantItemCountMap = new HashMap<>(); + } + + List> grantItemObjectList = new ArrayList<>(); + if(!recordIds.isEmpty()){ 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); + List recordgrantItemCountList = grantItemCountMap.get(recordId); + Long grantId; + if(recordgrantItemList!= null && !recordgrantItemList.isEmpty()){ + grantId = recordgrantItemList.get(0).getGrantId(); + }else{ + grantId = recordgrantItemCountList.get(0).getGrantId(); + } WxOfflineActivityRecord record = recordMap.get(recordId); - WxOfflineActivityGrantAward grant = grantMap.get(recordgrantItemList.get(0).getGrantId()); + WxOfflineActivityGrantAward grant = grantMap.get(grantId); Map grantItemObject= getGrantItemExportObject(record,grant); - for (int i=0;i orderNos = grantItemCountRecordMap.get(grantItemCount.getGrantItemId()); + grantItemObject.put("countRecords_"+i,String.join(";", orderNos)); + grantItemObject.put("countAwardName_"+i,grantItemCount.getAwardName()); + grantItemObject.put("countAwardCount_"+i,grantItemCount.getAwardCount()); + grantItemObject.put("countAwardPrice_"+i,grantItemCount.getAwardPrice()); + grantItemObject.put("countRealGrantPrice_"+i,grantItemCount.getRealGrantPrice()); + grantItemObject.put("countMallShareRate_"+i,grantItemCount.getMallShareRate()); + grantItemObject.put("countMerchantShareRate_"+i,grantItemCount.getMerchantShareRate()); + grantItemObject.put("countRealMallSharePrice_"+i,grantItemCount.getRealMallSharePrice()); + grantItemObject.put("countRealMerchantSharePrice_"+i,grantItemCount.getRealMerchantSharePrice()); + } + } grantItemObjectList.add(grantItemObject); }); } + excelService.exportExcel(exportHead, grantItemObjectList, null, "抽奖活动发放明细", "抽奖活动发放明细.xlsx",true, response); } private void grantItemGiftExport(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<>(); + List recordIds,grantIds; + //单笔订单 + Map grantItemMap; 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); + grantItemMap = grantItemList.stream().collect(toMap(OfflineActivityGrantItemVo::getRecordId, Function.identity())); + recordIds = new ArrayList<>(grantItemMap.keySet()); + grantIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList()); + //订单表头 + 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); + }else{ + grantItemMap = new HashMap<>(); + recordIds = new ArrayList<>(); + grantIds = new ArrayList<>(); + } + //联单 + Map grantItemCountMap; + Map> grantItemCountRecordMap; + List grantItemCountList = wxOfflineActivityGrantSettlementMapper.findAwardItemGrantCountList(grantSettlement); + if(grantItemCountList != null && !grantItemCountList.isEmpty()){ + grantItemCountRecordMap = grantItemCountList.stream().collect(groupingBy(OfflineActivityGrantItemVo::getGrantItemId,Collectors.mapping(OfflineActivityGrantItemVo::getOrderNo,Collectors.toList()))); + grantItemCountMap = grantItemCountList.stream().collect(toMap(OfflineActivityGrantItemVo::getRecordId, Function.identity())); + List recordCountIds = grantItemCountList.stream().map(OfflineActivityGrantItemVo::getRecordId).distinct().collect(toList()); + recordIds.addAll(recordCountIds); + List grantCountIds = grantItemCountList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList()); + grantIds.addAll(grantCountIds); + + //联单表头 + ExcelExportEntity entityC_1 = new ExcelExportEntity("联单订单","countRecords",20); + exportHead.add(entityC_1); + ExcelExportEntity entityC_2 = new ExcelExportEntity("联单奖品名称","countAwardName",20); + exportHead.add(entityC_2); + ExcelExportEntity entityC_3 = new ExcelExportEntity("联单奖品数量","countAwardCount",20); + exportHead.add(entityC_3); + ExcelExportEntity entityC_4 = new ExcelExportEntity("联单奖品价值","countAwardPrice",20); + exportHead.add(entityC_4); + ExcelExportEntity entityC_5 = new ExcelExportEntity("联单实际承担价值","countRealGrantPrice",20); + exportHead.add(entityC_5); + ExcelExportEntity entityC_6 = new ExcelExportEntity("商户承担比例(%)","countMallShareRate",20); + exportHead.add(entityC_6); + ExcelExportEntity entityC_7 = new ExcelExportEntity("商管承担比例(%)","countMerchantShareRate",20); + exportHead.add(entityC_7); + ExcelExportEntity entityC_8 = new ExcelExportEntity("商户承担金额","countRealMallSharePrice",20); + exportHead.add(entityC_8); + ExcelExportEntity entityC_9 = new ExcelExportEntity("商管承担金额","countRealMerchantSharePrice",20); + exportHead.add(entityC_9); + }else{ + grantItemCountRecordMap = new HashMap<>(); + grantItemCountMap = new HashMap<>(); + } + + + List> grantItemObjectList = new ArrayList<>(); + if(!recordIds.isEmpty()) { + 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); + + 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()); + recordIds.forEach(recordId -> { + OfflineActivityGrantItemVo grantItem = grantItemMap.get(recordId); + OfflineActivityGrantItemVo grantItemCount = grantItemCountMap.get(recordId); + Long grantId; + if(grantItem != null){ + grantId = grantItem.getGrantId(); + }else{ + grantId = grantItemCount.getGrantId(); + } + WxOfflineActivityRecord record = recordMap.get(recordId); + WxOfflineActivityGrantAward grant = grantMap.get(grantId); + + Map grantItemObject= getGrantItemExportObject(record,grant); + if(grantItem != null){ + 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()); + } + if(grantItemCount != null){ + List orderNos = grantItemCountRecordMap.get(grantItemCount.getGrantItemId()); + grantItemObject.put("countRecords",String.join(";", orderNos)); + grantItemObject.put("countAwardName",grantItemCount.getAwardName()); + grantItemObject.put("countAwardCount",grantItemCount.getAwardCount()); + grantItemObject.put("countAwardPrice",grantItemCount.getAwardPrice()); + grantItemObject.put("countRealGrantPrice",grantItemCount.getRealGrantPrice()); + grantItemObject.put("countMallShareRate",grantItemCount.getMallShareRate()); + grantItemObject.put("countMerchantShareRate",grantItemCount.getMerchantShareRate()); + grantItemObject.put("countRealMallSharePrice",grantItemCount.getRealMallSharePrice()); + grantItemObject.put("countRealMerchantSharePrice",grantItemCount.getRealMerchantSharePrice()); + } grantItemObjectList.add(grantItemObject); }); - } excelService.exportExcel(exportHead, grantItemObjectList, null, "赠礼活动发放明细", "赠礼活动发放明细.xlsx",true, response); @@ -1677,51 +1822,136 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity 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_2 = new ExcelExportEntity("返现比例(%)","cashBackRatio",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<>(); + List recordIds,grantIds; + //单笔订单 + Map grantItemMap; 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); + grantItemMap = grantItemList.stream().collect(toMap(OfflineActivityGrantItemVo::getRecordId, Function.identity())); + recordIds = new ArrayList<>(grantItemMap.keySet()); + grantIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList()); + //订单表头 + ExcelExportEntity entity_1 = new ExcelExportEntity("订单返现名称","awardName",20); + exportHead.add(entity_1); +// ExcelExportEntity entity_2 = new ExcelExportEntity("数量","awardCount",20); +// exportHead.add(entity_2); + ExcelExportEntity entity_2 = new ExcelExportEntity("订单返现比例(%)","cashBackRatio",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); + ExcelExportEntity entity_8 = new ExcelExportEntity("税点金额起点","startingTaxPoint",20); + exportHead.add(entity_8); + ExcelExportEntity entity_9 = new ExcelExportEntity("税点比例(%)","taxPoints",20); + exportHead.add(entity_9); + ExcelExportEntity entity_10 = new ExcelExportEntity("税点金额","taxPointsAmount",20); + exportHead.add(entity_10); + ExcelExportEntity entity_11 = new ExcelExportEntity("实际返现金额","realCashBackPrice",20); + exportHead.add(entity_11); + }else{ + grantItemMap = new HashMap<>(); + recordIds = new ArrayList<>(); + grantIds = new ArrayList<>(); + } + //联单 + Map grantItemCountMap; + Map> grantItemCountRecordMap; + List grantItemCountList = wxOfflineActivityGrantSettlementMapper.findAwardItemGrantCountList(grantSettlement); + if(grantItemCountList != null && !grantItemCountList.isEmpty()){ + grantItemCountRecordMap = grantItemCountList.stream().collect(groupingBy(OfflineActivityGrantItemVo::getGrantItemId,Collectors.mapping(OfflineActivityGrantItemVo::getOrderNo,Collectors.toList()))); + grantItemCountMap = grantItemCountList.stream().collect(toMap(OfflineActivityGrantItemVo::getRecordId, Function.identity())); + List recordCountIds = grantItemCountList.stream().map(OfflineActivityGrantItemVo::getRecordId).distinct().collect(toList()); + recordIds.addAll(recordCountIds); + List grantCountIds = grantItemCountList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList()); + grantIds.addAll(grantCountIds); + + //联单表头 + ExcelExportEntity entityC_1 = new ExcelExportEntity("联单订单","countRecords",20); + exportHead.add(entityC_1); + ExcelExportEntity entityC_2 = new ExcelExportEntity("联单返现名称","countAwardName",20); + exportHead.add(entityC_2); +// ExcelExportEntity entityC_3 = new ExcelExportEntity("联单数量","countAwardCount",20); +// exportHead.add(entityC_3); + ExcelExportEntity entityC_3 = new ExcelExportEntity("联单返现比例(%)","countCashBackRatio",20); + exportHead.add(entityC_3); + ExcelExportEntity entityC_4 = new ExcelExportEntity("联单返现金额","countAwardPrice",20); + exportHead.add(entityC_4); + ExcelExportEntity entityC_5 = new ExcelExportEntity("联单实际承担金额","countRealGrantPrice",20); + exportHead.add(entityC_5); + ExcelExportEntity entityC_6 = new ExcelExportEntity("商户承担比例(%)","countMallShareRate",20); + exportHead.add(entityC_6); + ExcelExportEntity entityC_7 = new ExcelExportEntity("商管承担比例(%)","countMerchantShareRate",20); + exportHead.add(entityC_7); + ExcelExportEntity entityC_8 = new ExcelExportEntity("商户承担金额","countRealMallSharePrice",20); + exportHead.add(entityC_8); + ExcelExportEntity entityC_9 = new ExcelExportEntity("商管承担金额","countRealMerchantSharePrice",20); + exportHead.add(entityC_9); + }else{ + grantItemCountRecordMap = new HashMap<>(); + grantItemCountMap = new HashMap<>(); + } + + + List> grantItemObjectList = new ArrayList<>(); + if(!recordIds.isEmpty()) { + 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); + + 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()); + + recordIds.forEach(recordId -> { + OfflineActivityGrantItemVo grantItem = grantItemMap.get(recordId); + OfflineActivityGrantItemVo grantItemCount = grantItemCountMap.get(recordId); + Long grantId; + if(grantItem != null){ + grantId = grantItem.getGrantId(); + }else{ + grantId = grantItemCount.getGrantId(); + } + WxOfflineActivityRecord record = recordMap.get(recordId); + WxOfflineActivityGrantAward grant = grantMap.get(grantId); + Map grantItemObject= getGrantItemExportObject(record,grant); - grantItemObject.put("awardName",grantItem.getAwardName()); + if(grantItem != null){ + grantItemObject.put("awardName",grantItem.getAwardName()); // grantItemObject.put("awardCount",grantItem.getAwardCount()); - grantItemObject.put("cashBackRatio",grantItem.getCashBackRatio()); - 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()); - + grantItemObject.put("cashBackRatio",grantItem.getCashBackRatio()); + 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()); + grantItemObject.put("startingTaxPoint",grantItem.getStartingTaxPoint()); + grantItemObject.put("taxPoints",grantItem.getTaxPoints()); + grantItemObject.put("taxPointsAmount",grantItem.getTaxPointsAmount()); + grantItemObject.put("realCashBackPrice",grantItem.getAwardPrice().subtract(grantItem.getTaxPointsAmount())); + } + if(grantItemCount != null){ + List orderNos = grantItemCountRecordMap.get(grantItemCount.getGrantItemId()); + grantItemObject.put("countRecords",String.join(";", orderNos)); + grantItemObject.put("countAwardName",grantItemCount.getAwardName()); +// grantItemObject.put("countAwardCount",grantItemCount.getAwardCount()); + grantItemObject.put("countCashBackRatio",grantItemCount.getCashBackRatio()); + grantItemObject.put("countAwardPrice",grantItemCount.getAwardPrice()); + grantItemObject.put("countRealGrantPrice",grantItemCount.getRealGrantPrice()); + grantItemObject.put("countMallShareRate",grantItemCount.getMallShareRate()); + grantItemObject.put("countMerchantShareRate",grantItemCount.getMerchantShareRate()); + grantItemObject.put("countRealMallSharePrice",grantItemCount.getRealMallSharePrice()); + grantItemObject.put("countRealMerchantSharePrice",grantItemCount.getRealMerchantSharePrice()); + } grantItemObjectList.add(grantItemObject); }); } diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml index ef85244a3..e202dc29f 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml @@ -309,14 +309,54 @@ gi.cash_back_ratio,gi.award_price,gi.award_count, gi.starting_tax_point,gi.tax_points,gi.tax_points_amount, gi.mall_share_rate,gi.merchant_share_rate, - gi.record_id, + gs.record_id, + gs.grant_item_id, gs.order_no,gs.order_money, gs.merchant_id, gs.real_grant_price, gs.real_mall_share_price,gs.real_merchant_share_price from wx_offline_activity_grant_item gi inner join wx_offline_activity_grant_settlement gs on gs.grant_item_id = gi.id and gs.record_id = gi.record_id - where gi.status = 1 and gi.record_id is not null + where gi.status = 1 and gi.grant_awards_mode = 1 and gi.record_id is not null + + and gi.`tenant_id` = #{tenantId} + + + and gi.`parent_tenant_id` = #{parentTenantId} + + + and gi.`activity_item_id` = #{activityItemId} + + + and gi.`award_itam_id` = #{awardItamId} + + + and gs.`order_money` >= #{minMoney} + + + + and gs.`order_money` < #{maxMoney} + + order by gi.`create_date` + + +