Просмотр исходного кода

//export

release_toaliyun_real
xiaohu 1 год назад
Родитель
Сommit
1ceec3976d
4 измененных файлов: 376 добавлений и 102 удалений
  1. +2
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityGrantItemVo.java
  2. +2
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java
  3. +330
    -100
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java
  4. +42
    -2
      mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml

+ 2
- 0
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;


+ 2
- 0
mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java Просмотреть файл

@@ -32,6 +32,8 @@ public interface WxOfflineActivityGrantSettlementMapper extends CommonMapper<WxO


List<OfflineActivityGrantItemVo> findAwardItemGrantList(WxOfflineActivityGrantSettlement grantSettlement);

List<OfflineActivityGrantItemVo> findAwardItemGrantCountList(WxOfflineActivityGrantSettlement grantSettlement);
}




+ 330
- 100
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<WxOfflineActivityAwardsItem> activityAwardsItemList = wxOfflineActivityAwardsItemService.getActivityAwardsItemList(activityItem.getId(), activityItem.getTenantId());
List<ExcelExportEntity> 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<Map<String,Object>> grantItemObjectList = new ArrayList<>();

List<Long> recordIds,grantIds;
//单笔订单
Map<Long, List<OfflineActivityGrantItemVo>> 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<OfflineActivityGrantItemVo> grantItemList = wxOfflineActivityGrantSettlementMapper.findAwardItemGrantList(grantSettlement);
if(grantItemList != null && !grantItemList.isEmpty()){
Map<Long, List<OfflineActivityGrantItemVo>> grantItemMap = grantItemList.stream().collect(groupingBy(OfflineActivityGrantItemVo::getRecordId));
List<Long> 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<Long, Long> 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<Long, List<OfflineActivityGrantItemVo>> grantItemCountMap;
Map<Long, List<String>> grantItemCountRecordMap;
List<OfflineActivityGrantItemVo> 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<Long> recordCountIds = grantItemCountList.stream().map(OfflineActivityGrantItemVo::getRecordId).distinct().collect(toList());
recordIds.addAll(recordCountIds);
List<Long> grantCountIds = grantItemCountList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList());
grantIds.addAll(grantCountIds);

//联单表头
Map<Long, Long> 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<Map<String,Object>> grantItemObjectList = new ArrayList<>();
if(!recordIds.isEmpty()){
List<WxOfflineActivityRecord> recordList = wxOfflineActivityRecordService.selectListByIds(recordIds,activityItem);
Map<Long, WxOfflineActivityRecord> recordMap = recordList.stream().collect(toMap(WxOfflineActivityRecord::getId, Function.identity()));

List<Long> grantIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList());
List<WxOfflineActivityGrantAward> grantList = this.selectListByIds(grantIds,activityItem);
Map<Long, WxOfflineActivityGrantAward> grantMap = grantList.stream().collect(toMap(WxOfflineActivityGrantAward::getId, Function.identity()));

recordIds.forEach(recordId -> {
List<OfflineActivityGrantItemVo> recordgrantItemList = grantItemMap.get(recordId);
List<OfflineActivityGrantItemVo> 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<String,Object> grantItemObject= getGrantItemExportObject(record,grant);
for (int i=0;i<recordgrantItemList.size();i++){
OfflineActivityGrantItemVo grantItem = recordgrantItemList.get(i);
grantItemObject.put("awardName_"+i,grantItem.getAwardName());
grantItemObject.put("awardCount_"+i,grantItem.getAwardCount());
grantItemObject.put("awardPrice_"+i,grantItem.getAwardPrice());
grantItemObject.put("mallShareRate_"+i,grantItem.getMallShareRate());
grantItemObject.put("merchantShareRate_"+i,grantItem.getMerchantShareRate());
grantItemObject.put("realMallSharePrice_"+i,grantItem.getRealMallSharePrice());
grantItemObject.put("realMerchantSharePrice_"+i,grantItem.getRealMerchantSharePrice());
}

if(recordgrantItemList!= null && !recordgrantItemList.isEmpty()){
for (int i=0;i<recordgrantItemList.size();i++){
OfflineActivityGrantItemVo grantItem = recordgrantItemList.get(i);
grantItemObject.put("awardName_"+i,grantItem.getAwardName());
grantItemObject.put("awardCount_"+i,grantItem.getAwardCount());
grantItemObject.put("awardPrice_"+i,grantItem.getAwardPrice());
grantItemObject.put("mallShareRate_"+i,grantItem.getMallShareRate());
grantItemObject.put("merchantShareRate_"+i,grantItem.getMerchantShareRate());
grantItemObject.put("realMallSharePrice_"+i,grantItem.getRealMallSharePrice());
grantItemObject.put("realMerchantSharePrice_"+i,grantItem.getRealMerchantSharePrice());
}
}
if(recordgrantItemCountList!= null && !recordgrantItemCountList.isEmpty()){
for (int i=0;i<recordgrantItemCountList.size();i++){
OfflineActivityGrantItemVo grantItemCount = recordgrantItemCountList.get(i);
List<String> 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<ExcelExportEntity> 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<Map<String,Object>> grantItemObjectList = new ArrayList<>();

List<Long> recordIds,grantIds;
//单笔订单
Map<Long, OfflineActivityGrantItemVo> grantItemMap;
WxOfflineActivityGrantSettlement grantSettlement = new WxOfflineActivityGrantSettlement();
grantSettlement.updateTenantInfo(activityItem);
grantSettlement.setActivityItemId(activityItem.getId());
grantSettlement.setAwardItamId(wxOfflineActivityAwardsItem.getId());
List<OfflineActivityGrantItemVo> grantItemList = wxOfflineActivityGrantSettlementMapper.findAwardItemGrantList(grantSettlement);

if(grantItemList != null && !grantItemList.isEmpty()){
List<Long> recordIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getRecordId).distinct().collect(toList());
List<WxOfflineActivityRecord> 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<Long, OfflineActivityGrantItemVo> grantItemCountMap;
Map<Long, List<String>> grantItemCountRecordMap;
List<OfflineActivityGrantItemVo> 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<Long> recordCountIds = grantItemCountList.stream().map(OfflineActivityGrantItemVo::getRecordId).distinct().collect(toList());
recordIds.addAll(recordCountIds);
List<Long> 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<Map<String,Object>> grantItemObjectList = new ArrayList<>();
if(!recordIds.isEmpty()) {
List<WxOfflineActivityRecord> recordList = wxOfflineActivityRecordService.selectListByIds(recordIds, activityItem);
Map<Long, WxOfflineActivityRecord> recordMap = recordList.stream().collect(toMap(WxOfflineActivityRecord::getId, Function.identity()));
List<Long> grantIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList());
List<WxOfflineActivityGrantAward> grantList = this.selectListByIds(grantIds,activityItem);
List<WxOfflineActivityGrantAward> grantList = this.selectListByIds(grantIds, activityItem);
Map<Long, WxOfflineActivityGrantAward> 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<String,Object> 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<String,Object> 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<String> 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<ExcelExportEntity> 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<Map<String,Object>> grantItemObjectList = new ArrayList<>();

List<Long> recordIds,grantIds;
//单笔订单
Map<Long, OfflineActivityGrantItemVo> grantItemMap;
WxOfflineActivityGrantSettlement grantSettlement = new WxOfflineActivityGrantSettlement();
grantSettlement.updateTenantInfo(activityItem);
grantSettlement.setActivityItemId(activityItem.getId());
grantSettlement.setAwardItamId(wxOfflineActivityAwardsItem.getId());
List<OfflineActivityGrantItemVo> grantItemList = wxOfflineActivityGrantSettlementMapper.findAwardItemGrantList(grantSettlement);

if(grantItemList != null && !grantItemList.isEmpty()){
List<Long> recordIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getRecordId).distinct().collect(toList());
List<WxOfflineActivityRecord> 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<Long, OfflineActivityGrantItemVo> grantItemCountMap;
Map<Long, List<String>> grantItemCountRecordMap;
List<OfflineActivityGrantItemVo> 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<Long> recordCountIds = grantItemCountList.stream().map(OfflineActivityGrantItemVo::getRecordId).distinct().collect(toList());
recordIds.addAll(recordCountIds);
List<Long> 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<Map<String,Object>> grantItemObjectList = new ArrayList<>();
if(!recordIds.isEmpty()) {
List<WxOfflineActivityRecord> recordList = wxOfflineActivityRecordService.selectListByIds(recordIds, activityItem);
Map<Long, WxOfflineActivityRecord> recordMap = recordList.stream().collect(toMap(WxOfflineActivityRecord::getId, Function.identity()));
List<Long> grantIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList());
List<WxOfflineActivityGrantAward> grantList = this.selectListByIds(grantIds,activityItem);
List<WxOfflineActivityGrantAward> grantList = this.selectListByIds(grantIds, activityItem);
Map<Long, WxOfflineActivityGrantAward> 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<String,Object> 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<String> 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);
});
}


+ 42
- 2
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
<if test=" null != tenantId and '' != tenantId">
and gi.`tenant_id` = #{tenantId}
</if>
<if test=" null != parentTenantId and '' != parentTenantId">
and gi.`parent_tenant_id` = #{parentTenantId}
</if>
<if test=" null != activityItemId ">
and gi.`activity_item_id` = #{activityItemId}
</if>
<if test=" null != awardItamId ">
and gi.`award_itam_id` = #{awardItamId}
</if>
<if test=" null != minMoney">
and gs.`order_money` &gt;= #{minMoney}
</if>

<if test=" null != maxMoney">
and gs.`order_money` &lt; #{maxMoney}
</if>
order by gi.`create_date`
</select>

<select id="findAwardItemGrantCountList" resultType="com.iformall.domain.vo.OfflineActivityGrantItemVo">
select gi.grant_id,
gi.activity_id,gi.activity_name,
gi.activity_item_id,gi.activity_item_name,
gi.award_itam_id,gi.award_name,
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,
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_settlement gs
left join wx_offline_activity_grant_item gi on gs.grant_item_id = gi.id
where gi.status = 1 and gi.grant_awards_mode = 2
<if test=" null != tenantId and '' != tenantId">
and gi.`tenant_id` = #{tenantId}
</if>


Загрузка…
Отмена
Сохранить