From d4a71bc50682b0e2611e73ef597d91fce10584d4 Mon Sep 17 00:00:00 2001 From: xiaohu <1901900812@qq.com> Date: Thu, 17 Apr 2025 00:51:47 +0800 Subject: [PATCH] //export --- .../market/WxOfflineActivityController.java | 15 + .../WxOfflineActivityGrantAwardService.java | 2 + ...xOfflineActivityGrantAwardServiceImpl.java | 474 ++++++++---------- ...WxOfflineActivityGrantSettlementMapper.xml | 4 +- 4 files changed, 236 insertions(+), 259 deletions(-) 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 9b581afb9..6bd235dd8 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java @@ -230,4 +230,19 @@ public class WxOfflineActivityController extends BaseController { wxOfflineActivityGrantAwardService.activityGrantItemExport(request,response,offlineActivityAwardsItemVo); } + @ApiOperation("活动奖项联单发放明细导出") + @GetMapping("/grantItemExport") + public void grantItemCountExport(@ModelAttribute OfflineActivityAwardsItemVo offlineActivityAwardsItemVo, HttpServletRequest request, HttpServletResponse response) { + 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.activityGrantItemCountExport(request,response,offlineActivityAwardsItemVo); + } + } diff --git a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java index 3ada0b82d..49dac9ec0 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java @@ -37,4 +37,6 @@ public interface WxOfflineActivityGrantAwardService { void activityGrantItemExport(HttpServletRequest request, HttpServletResponse response, OfflineActivityAwardsItemVo offlineActivityAwardsItemVo); List selectListByIds(List grantIds, TenantEntity tenantEntity); + + void activityGrantItemCountExport(HttpServletRequest request, HttpServletResponse response, OfflineActivityAwardsItemVo offlineActivityAwardsItemVo); } 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 49c52d9f8..1c5dfd102 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java @@ -1560,11 +1560,175 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity return WxOfflineActivityGrantAwards; } + @Override + public void activityGrantItemCountExport(HttpServletRequest request, HttpServletResponse response, OfflineActivityAwardsItemVo offlineActivityAwardsItemVo) { + WxOfflineActivityItem activityItem = wxOfflineActivityItemMapper.selectById(offlineActivityAwardsItemVo.getActivityItemId(), offlineActivityAwardsItemVo.getTenantId()); + if(activityItem == null){ + throw new MallinkException(Result.ERROR, "未查询到活动数据"); + } + + List exportHead = getGrantItemExportHead(); + List> grantItemObjectList = new ArrayList<>(); + + WxOfflineActivityGrantSettlement grantSettlement = new WxOfflineActivityGrantSettlement(); + grantSettlement.updateTenantInfo(activityItem); + grantSettlement.setActivityItemId(activityItem.getId()); + List grantItemList = wxOfflineActivityGrantSettlementMapper.findAwardItemGrantCountList(grantSettlement); + if(grantItemList != null && !grantItemList.isEmpty()){ + Map> grantItemRecordMap = grantItemList.stream().collect(groupingBy(OfflineActivityGrantItemVo::getGrantItemId,Collectors.mapping(OfflineActivityGrantItemVo::getOrderNo,Collectors.toList()))); + + List recordIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getRecordId).distinct().collect(toList()); + List grantIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList()); + + List recordList = wxOfflineActivityRecordService.selectListByIds(recordIds,activityItem); + Map recordMap = recordList.stream().collect(toMap(WxOfflineActivityRecord::getId, Function.identity())); + + List grantList = this.selectListByIds(grantIds,activityItem); + Map grantMap = grantList.stream().collect(toMap(WxOfflineActivityGrantAward::getId, Function.identity())); + + if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ + //联单表头 + ExcelExportEntity entityC_1 = new ExcelExportEntity("联单订单","countRecords",20); + exportHead.add(entityC_1); + + Map grantItemCountSizeMap = grantItemList.stream().collect(groupingBy(OfflineActivityGrantItemVo::getRecordId, counting())); + Long maxGrantItemCountSize = Collections.max(grantItemCountSizeMap.values()); + for (int i = 0; i < maxGrantItemCountSize.intValue(); i++) { + 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); + } + + Map> grantItemMap = grantItemList.stream().collect(groupingBy(OfflineActivityGrantItemVo::getRecordId)); + recordIds.forEach(recordId -> { + List recordgrantItemList = grantItemMap.get(recordId); + Long grantId = recordgrantItemList.get(0).getGrantId(); + WxOfflineActivityRecord record = recordMap.get(recordId); + WxOfflineActivityGrantAward grant = grantMap.get(grantId); + + Map grantItemObject= getGrantItemExportObject(record,grant); + List orderNos = grantItemRecordMap.get(recordgrantItemList.get(0).getGrantItemId()); + grantItemObject.put("countRecords",String.join(";", orderNos)); + for (int i=0;i { + WxOfflineActivityRecord record = recordMap.get(grantItem.getRecordId()); + WxOfflineActivityGrantAward grant = grantMap.get(grantItem.getGrantId()); + Map grantItemObject= getGrantItemExportObject(record,grant); + List orderNos = grantItemRecordMap.get(grantItem.getGrantItemId()); + grantItemObject.put("countRecords",String.join(";", orderNos)); + grantItemObject.put("countAwardName",grantItem.getAwardName()); + grantItemObject.put("countAwardCount",grantItem.getAwardCount()); + grantItemObject.put("countAwardPrice",grantItem.getAwardPrice()); + grantItemObject.put("countRealGrantPrice",grantItem.getRealGrantPrice()); + grantItemObject.put("countMallShareRate",grantItem.getMallShareRate()); + grantItemObject.put("countMerchantShareRate",grantItem.getMerchantShareRate()); + grantItemObject.put("countRealMallSharePrice",grantItem.getRealMallSharePrice()); + grantItemObject.put("countRealMerchantSharePrice",grantItem.getRealMerchantSharePrice()); + + grantItemObjectList.add(grantItemObject); + }); + + + } else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { + //联单表头 + 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); + + grantItemList.forEach(grantItem -> { + WxOfflineActivityRecord record = recordMap.get(grantItem.getRecordId()); + WxOfflineActivityGrantAward grant = grantMap.get(grantItem.getGrantId()); + Map grantItemObject= getGrantItemExportObject(record,grant); + List orderNos = grantItemRecordMap.get(grantItem.getGrantItemId()); + grantItemObject.put("countRecords",String.join(";", orderNos)); + grantItemObject.put("countAwardName",grantItem.getAwardName()); +// grantItemObject.put("countAwardCount",grantItem.getAwardCount()); + grantItemObject.put("countCashBackRatio",grantItem.getCashBackRatio()); + grantItemObject.put("countAwardPrice",grantItem.getAwardPrice()); + grantItemObject.put("countRealGrantPrice",grantItem.getRealGrantPrice()); + grantItemObject.put("countMallShareRate",grantItem.getMallShareRate()); + grantItemObject.put("countMerchantShareRate",grantItem.getMerchantShareRate()); + grantItemObject.put("countRealMallSharePrice",grantItem.getRealMallSharePrice()); + grantItemObject.put("countRealMerchantSharePrice",grantItem.getRealMerchantSharePrice()); + + grantItemObjectList.add(grantItemObject); + }); + + } + } + excelService.exportExcel(exportHead, grantItemObjectList, null, "活动("+activityItem.getName()+")发放明细", "活动("+activityItem.getName()+")发放明细.xlsx",true, response); + + } + private void grantItemLotteryDrawExport(HttpServletRequest request, HttpServletResponse response, WxOfflineActivityItem activityItem, WxOfflineActivityAwardsModel activityAwardsModel){ List exportHead = getGrantItemExportHead(); - List recordIds,grantIds; + List> grantItemObjectList = new ArrayList<>(); + //单笔订单 Map> grantItemMap; WxOfflineActivityGrantSettlement grantSettlement = new WxOfflineActivityGrantSettlement(); @@ -1575,8 +1739,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity List grantItemList = wxOfflineActivityGrantSettlementMapper.findAwardItemGrantList(grantSettlement); if(grantItemList != null && !grantItemList.isEmpty()){ 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()); @@ -1597,100 +1760,32 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity 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.removeAll(recordCountIds); - recordIds.addAll(recordCountIds); - List grantCountIds = grantItemCountList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList()); - grantIds.removeAll(grantCountIds); - 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 recordIds = new ArrayList<>(grantItemMap.keySet()); + List grantIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList()); - List> grantItemObjectList = new ArrayList<>(); - if(!recordIds.isEmpty()){ List recordList = wxOfflineActivityRecordService.selectListByIds(recordIds,activityItem); Map recordMap = recordList.stream().collect(toMap(WxOfflineActivityRecord::getId, Function.identity())); 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(); - } + Long grantId = recordgrantItemList.get(0).getGrantId(); WxOfflineActivityRecord record = recordMap.get(recordId); WxOfflineActivityGrantAward grant = grantMap.get(grantId); Map grantItemObject= getGrantItemExportObject(record,grant); - if(recordgrantItemList!= null && !recordgrantItemList.isEmpty()){ - 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()); - } + for (int i=0;i exportHead = getGrantItemExportHead(); - List recordIds,grantIds; + List> grantItemObjectList = new ArrayList<>(); + //单笔订单 - 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()){ - 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); @@ -1730,92 +1823,28 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity 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.removeAll(recordCountIds); - recordIds.addAll(recordCountIds); - List grantCountIds = grantItemCountList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList()); - grantIds.removeAll(grantCountIds); - 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 recordIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getRecordId).distinct().collect(toList()); + List grantIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList()); - List> grantItemObjectList = new ArrayList<>(); - if(!recordIds.isEmpty()) { List recordList = wxOfflineActivityRecordService.selectListByIds(recordIds, activityItem); Map recordMap = recordList.stream().collect(toMap(WxOfflineActivityRecord::getId, Function.identity())); List grantList = this.selectListByIds(grantIds, activityItem); Map grantMap = grantList.stream().collect(toMap(WxOfflineActivityGrantAward::getId, Function.identity())); - 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); + grantItemList.forEach(grantItem -> { + WxOfflineActivityRecord record = recordMap.get(grantItem.getRecordId()); + WxOfflineActivityGrantAward grant = grantMap.get(grantItem.getGrantId()); 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()); - } + 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()); grantItemObjectList.add(grantItemObject); }); } @@ -1827,7 +1856,8 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity WxOfflineActivityItem activityItem, WxOfflineActivityAwardsItem wxOfflineActivityAwardsItem){ List exportHead = getGrantItemExportHead(); - List recordIds,grantIds; + List> grantItemObjectList = new ArrayList<>(); + //单笔订单 Map grantItemMap; WxOfflineActivityGrantSettlement grantSettlement = new WxOfflineActivityGrantSettlement(); @@ -1836,14 +1866,11 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity grantSettlement.setAwardItamId(wxOfflineActivityAwardsItem.getId()); List grantItemList = wxOfflineActivityGrantSettlementMapper.findAwardItemGrantList(grantSettlement); if(grantItemList != null && !grantItemList.isEmpty()){ - 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("数量","awardCount",20); +// exportHead.add(entity_2); ExcelExportEntity entity_2 = new ExcelExportEntity("订单返现比例(%)","cashBackRatio",20); exportHead.add(entity_2); ExcelExportEntity entity_3 = new ExcelExportEntity("订单返现金额","awardPrice",20); @@ -1864,103 +1891,36 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity 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.removeAll(recordCountIds); - recordIds.addAll(recordCountIds); - List grantCountIds = grantItemCountList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList()); - grantIds.removeAll(grantCountIds); - 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 recordIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getRecordId).distinct().collect(toList()); + List grantIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList()); - List> grantItemObjectList = new ArrayList<>(); - if(!recordIds.isEmpty()) { List recordList = wxOfflineActivityRecordService.selectListByIds(recordIds, activityItem); Map recordMap = recordList.stream().collect(toMap(WxOfflineActivityRecord::getId, Function.identity())); List grantList = this.selectListByIds(grantIds, activityItem); Map grantMap = grantList.stream().collect(toMap(WxOfflineActivityGrantAward::getId, Function.identity())); - 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); + grantItemList.forEach(grantItem -> { + WxOfflineActivityRecord record = recordMap.get(grantItem.getRecordId()); + WxOfflineActivityGrantAward grant = grantMap.get(grantItem.getGrantId()); Map grantItemObject= getGrantItemExportObject(record,grant); - if(grantItem != null){ - grantItemObject.put("awardName",grantItem.getAwardName()); + 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("startingTaxPoint",grantItem.getStartingTaxPoint()); - grantItemObject.put("taxPoints",grantItem.getTaxPoints()); - grantItemObject.put("taxPointsAmount",grantItem.getTaxPointsAmount()); - if(grantItem.getTaxPointsAmount() != null){ - grantItemObject.put("realCashBackPrice",grantItem.getAwardPrice().subtract(grantItem.getTaxPointsAmount())); - }else{ - grantItemObject.put("realCashBackPrice",grantItem.getAwardPrice()); - } - } - 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()); + 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()); + if(grantItem.getTaxPointsAmount() != null){ + grantItemObject.put("realCashBackPrice",grantItem.getAwardPrice().subtract(grantItem.getTaxPointsAmount())); + }else{ + grantItemObject.put("realCashBackPrice",grantItem.getAwardPrice()); } grantItemObjectList.add(grantItemObject); }); diff --git a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml index e202dc29f..2fda6d395 100644 --- a/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml @@ -337,7 +337,7 @@ and gs.`order_money` < #{maxMoney} - order by gi.`create_date` + order by gi.`create_date` desc