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

//export

release_toaliyun_real
xiaohu 1 год назад
Родитель
Сommit
d4a71bc506
4 измененных файлов: 236 добавлений и 259 удалений
  1. +15
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java
  2. +2
    -0
      mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java
  3. +217
    -257
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java
  4. +2
    -2
      mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml

+ 15
- 0
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);
}

}

+ 2
- 0
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<WxOfflineActivityGrantAward> selectListByIds(List<Long> grantIds, TenantEntity tenantEntity);

void activityGrantItemCountExport(HttpServletRequest request, HttpServletResponse response, OfflineActivityAwardsItemVo offlineActivityAwardsItemVo);
}

+ 217
- 257
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<ExcelExportEntity> exportHead = getGrantItemExportHead();
List<Map<String,Object>> grantItemObjectList = new ArrayList<>();

WxOfflineActivityGrantSettlement grantSettlement = new WxOfflineActivityGrantSettlement();
grantSettlement.updateTenantInfo(activityItem);
grantSettlement.setActivityItemId(activityItem.getId());
List<OfflineActivityGrantItemVo> grantItemList = wxOfflineActivityGrantSettlementMapper.findAwardItemGrantCountList(grantSettlement);
if(grantItemList != null && !grantItemList.isEmpty()){
Map<Long, List<String>> grantItemRecordMap = grantItemList.stream().collect(groupingBy(OfflineActivityGrantItemVo::getGrantItemId,Collectors.mapping(OfflineActivityGrantItemVo::getOrderNo,Collectors.toList())));

List<Long> recordIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getRecordId).distinct().collect(toList());
List<Long> grantIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList());

List<WxOfflineActivityRecord> recordList = wxOfflineActivityRecordService.selectListByIds(recordIds,activityItem);
Map<Long, WxOfflineActivityRecord> recordMap = recordList.stream().collect(toMap(WxOfflineActivityRecord::getId, Function.identity()));

List<WxOfflineActivityGrantAward> grantList = this.selectListByIds(grantIds,activityItem);
Map<Long, WxOfflineActivityGrantAward> 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<Long, Long> 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<Long, List<OfflineActivityGrantItemVo>> grantItemMap = grantItemList.stream().collect(groupingBy(OfflineActivityGrantItemVo::getRecordId));
recordIds.forEach(recordId -> {
List<OfflineActivityGrantItemVo> recordgrantItemList = grantItemMap.get(recordId);
Long grantId = recordgrantItemList.get(0).getGrantId();
WxOfflineActivityRecord record = recordMap.get(recordId);
WxOfflineActivityGrantAward grant = grantMap.get(grantId);

Map<String,Object> grantItemObject= getGrantItemExportObject(record,grant);
List<String> orderNos = grantItemRecordMap.get(recordgrantItemList.get(0).getGrantItemId());
grantItemObject.put("countRecords",String.join(";", orderNos));
for (int i=0;i<recordgrantItemList.size();i++){
OfflineActivityGrantItemVo grantItemCount = recordgrantItemList.get(i);
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);
});
} else if (EnumOfflineActivityType.GIFT.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_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<String,Object> grantItemObject= getGrantItemExportObject(record,grant);
List<String> 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<String,Object> grantItemObject= getGrantItemExportObject(record,grant);
List<String> 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<ExcelExportEntity> exportHead = getGrantItemExportHead();

List<Long> recordIds,grantIds;
List<Map<String,Object>> grantItemObjectList = new ArrayList<>();

//单笔订单
Map<Long, List<OfflineActivityGrantItemVo>> grantItemMap;
WxOfflineActivityGrantSettlement grantSettlement = new WxOfflineActivityGrantSettlement();
@@ -1575,8 +1739,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
List<OfflineActivityGrantItemVo> 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<Long, Long> 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<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.removeAll(recordCountIds);
recordIds.addAll(recordCountIds);
List<Long> grantCountIds = grantItemCountList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList());
grantIds.removeAll(grantCountIds);
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<Long> recordIds = new ArrayList<>(grantItemMap.keySet());
List<Long> grantIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList());

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<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();
}
Long grantId = recordgrantItemList.get(0).getGrantId();
WxOfflineActivityRecord record = recordMap.get(recordId);
WxOfflineActivityGrantAward grant = grantMap.get(grantId);
Map<String,Object> grantItemObject= getGrantItemExportObject(record,grant);

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());
}
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());
}
grantItemObjectList.add(grantItemObject);
});
@@ -1703,18 +1798,16 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
WxOfflineActivityItem activityItem, WxOfflineActivityAwardsItem wxOfflineActivityAwardsItem){
List<ExcelExportEntity> exportHead = getGrantItemExportHead();

List<Long> recordIds,grantIds;
List<Map<String,Object>> grantItemObjectList = new ArrayList<>();

//单笔订单
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()){
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<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.removeAll(recordCountIds);
recordIds.addAll(recordCountIds);
List<Long> 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<Long> recordIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getRecordId).distinct().collect(toList());
List<Long> grantIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList());

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<WxOfflineActivityGrantAward> grantList = this.selectListByIds(grantIds, activityItem);
Map<Long, WxOfflineActivityGrantAward> 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<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());
}
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<ExcelExportEntity> exportHead = getGrantItemExportHead();

List<Long> recordIds,grantIds;
List<Map<String,Object>> grantItemObjectList = new ArrayList<>();

//单笔订单
Map<Long, OfflineActivityGrantItemVo> grantItemMap;
WxOfflineActivityGrantSettlement grantSettlement = new WxOfflineActivityGrantSettlement();
@@ -1836,14 +1866,11 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
grantSettlement.setAwardItamId(wxOfflineActivityAwardsItem.getId());
List<OfflineActivityGrantItemVo> 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<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.removeAll(recordCountIds);
recordIds.addAll(recordCountIds);
List<Long> 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<Long> recordIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getRecordId).distinct().collect(toList());
List<Long> grantIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList());

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<WxOfflineActivityGrantAward> grantList = this.selectListByIds(grantIds, activityItem);
Map<Long, WxOfflineActivityGrantAward> 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<String,Object> 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<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());
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);
});


+ 2
- 2
mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml Просмотреть файл

@@ -337,7 +337,7 @@
<if test=" null != maxMoney">
and gs.`order_money` &lt; #{maxMoney}
</if>
order by gi.`create_date`
order by gi.`create_date` desc
</select>

<select id="findAwardItemGrantCountList" resultType="com.iformall.domain.vo.OfflineActivityGrantItemVo">
@@ -376,7 +376,7 @@
<if test=" null != maxMoney">
and gs.`order_money` &lt; #{maxMoney}
</if>
order by gi.`create_date`
order by gi.`create_date` desc
</select>

</mapper>

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