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

//exxceport

release_toaliyun_real
xiaohu 1 год назад
Родитель
Сommit
7e88c887d1
12 измененных файлов: 492 добавлений и 17 удалений
  1. +20
    -1
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java
  2. +1
    -1
      mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java
  3. +1
    -1
      mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java
  4. +5
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java
  5. +20
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityAwardsItemVo.java
  6. +50
    -0
      mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityGrantItemVo.java
  7. +4
    -4
      mallinkService/src/main/java/com/iformall/mapper/WxOfflineActivityGrantSettlementMapper.java
  8. +6
    -3
      mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java
  9. +1
    -0
      mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java
  10. +314
    -6
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java
  11. +33
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java
  12. +37
    -1
      mallinkService/src/main/resources/mapper/WxOfflineActivityGrantSettlementMapper.xml

+ 20
- 1
mallinkAdmin/src/main/java/com/iformall/controller/market/WxOfflineActivityController.java Просмотреть файл

@@ -10,6 +10,7 @@ import com.iformall.controller.base.BaseController;
import com.iformall.domain.po.*; import com.iformall.domain.po.*;
import com.iformall.domain.po.base.BaseEntity.SortField; import com.iformall.domain.po.base.BaseEntity.SortField;
import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.OfflineActivityAwardsItemVo;
import com.iformall.enums.*; import com.iformall.enums.*;
import com.iformall.exception.MallinkException; import com.iformall.exception.MallinkException;
import com.iformall.service.*; import com.iformall.service.*;
@@ -189,7 +190,7 @@ public class WxOfflineActivityController extends BaseController {
return new ResultData(activity); return new ResultData(activity);
} }


@ApiOperation("活动奖品发放明细导出")
@ApiOperation("活动发放明细导出")
@GetMapping("/grantExport") @GetMapping("/grantExport")
public void grantExport(@ModelAttribute WxOfflineActivity wxOfflineActivity, HttpServletRequest request, HttpServletResponse response) { public void grantExport(@ModelAttribute WxOfflineActivity wxOfflineActivity, HttpServletRequest request, HttpServletResponse response) {
if(wxOfflineActivity.getId() == null){ if(wxOfflineActivity.getId() == null){
@@ -211,4 +212,22 @@ public class WxOfflineActivityController extends BaseController {
return new ResultData(activity); return new ResultData(activity);
} }


@ApiOperation("活动奖项订单发放明细导出")
@GetMapping("/grantItemExport")
public void grantItemExport(@ModelAttribute OfflineActivityAwardsItemVo offlineActivityAwardsItemVo, HttpServletRequest request, HttpServletResponse response) {
if(offlineActivityAwardsItemVo.getId() == null){
throw new MallinkException(Result.ERROR,"ID 为空");
}
if(offlineActivityAwardsItemVo.getActivityItemId() == null){
throw new MallinkException(Result.ERROR,"活动项ID 为空");
}
if(offlineActivityAwardsItemVo.getActivityId() == null){
throw new MallinkException(Result.ERROR,"活动ID 为空");
}

TenantEntity tenantInfo = getTenantInfo();
offlineActivityAwardsItemVo.updateTenantInfo(tenantInfo);
wxOfflineActivityGrantAwardService.activityGrantItemExport(request,response,offlineActivityAwardsItemVo);
}

} }

+ 1
- 1
mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantAward.java Просмотреть файл

@@ -89,7 +89,7 @@ public class WxOfflineActivityGrantAward extends TenantEntity{
@TableField(value = "create_by") @TableField(value = "create_by")
private Long createBy; private Long createBy;
@TableField(exist = false) @TableField(exist = false)
private List<Long> createByName;
private String createByName;
@TableField(exist = false) @TableField(exist = false)
private List<Long> createByIds; private List<Long> createByIds;




+ 1
- 1
mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantItem.java Просмотреть файл

@@ -35,7 +35,7 @@ public class WxOfflineActivityGrantItem extends TenantEntity {
private Long grantId; private Long grantId;


/** /**
* 发放奖励模式EnumOfflineActivityAwardsModeType
* 发放奖励模式 EnumOfflineActivityAwardsModeType
*/ */
@TableField(value = "grant_awards_mode") @TableField(value = "grant_awards_mode")
private Integer grantAwardsMode; private Integer grantAwardsMode;


+ 5
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxOfflineActivityGrantSettlement.java Просмотреть файл

@@ -166,4 +166,9 @@ public class WxOfflineActivityGrantSettlement extends TenantEntity {
@TableField(value = "status") @TableField(value = "status")
private Integer status; private Integer status;


@TableField(exist = false)
private BigDecimal minMoney;
@TableField(exist = false)
private BigDecimal maxMoney;

} }

+ 20
- 0
mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityAwardsItemVo.java Просмотреть файл

@@ -0,0 +1,20 @@
package com.iformall.domain.vo;


import com.iformall.domain.po.base.TenantEntity;
import lombok.Data;
import lombok.ToString;

import java.io.Serializable;

@Data
@ToString(callSuper = true)
public class OfflineActivityAwardsItemVo extends TenantEntity {

private Long id;

private Long activityItemId;

private Long activityId;

}

+ 50
- 0
mallinkService/src/main/java/com/iformall/domain/vo/OfflineActivityGrantItemVo.java Просмотреть файл

@@ -0,0 +1,50 @@
package com.iformall.domain.vo;

import cn.afterturn.easypoi.excel.annotation.Excel;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.iformall.domain.po.base.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;


@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class OfflineActivityGrantItemVo extends TenantEntity {

private Long grantId;

private Long activityId;
private String activityName;

private Long activityItemId;
private String activityItemName;

private Long awardItamId;
private String awardName;

private BigDecimal cashBackRatio;
private BigDecimal awardPrice;
private Integer awardCount;

private BigDecimal mallShareRate;
private BigDecimal merchantShareRate;

private Long recordId;
private String orderNo;
private BigDecimal orderMoney;

private Long merchantId;

private BigDecimal realGrantPrice;
private BigDecimal realMallSharePrice;
private BigDecimal realMerchantSharePrice;

}

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

@@ -3,10 +3,7 @@ package com.iformall.mapper;
import com.iformall.common.CommonMapper; import com.iformall.common.CommonMapper;
import com.iformall.domain.po.WxOfflineActivityGrantAward; import com.iformall.domain.po.WxOfflineActivityGrantAward;
import com.iformall.domain.po.WxOfflineActivityGrantSettlement; import com.iformall.domain.po.WxOfflineActivityGrantSettlement;
import com.iformall.domain.vo.OfflineActivityItemStatistics;
import com.iformall.domain.vo.OfflineActivityItemStatisticsBVo;
import com.iformall.domain.vo.OfflineActivitySettlement;
import com.iformall.domain.vo.OfflineActivitySettlementStatistics;
import com.iformall.domain.vo.*;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;


import java.util.List; import java.util.List;
@@ -32,6 +29,9 @@ public interface WxOfflineActivityGrantSettlementMapper extends CommonMapper<WxO
OfflineActivityItemStatistics activityItemStatistics(OfflineActivityItemStatisticsBVo activityItemStatisticsBo); OfflineActivityItemStatistics activityItemStatistics(OfflineActivityItemStatisticsBVo activityItemStatisticsBo);


List<OfflineActivityItemStatistics> activityItemStatisticsChart(OfflineActivityItemStatisticsBVo activityItemStatisticsBo); List<OfflineActivityItemStatistics> activityItemStatisticsChart(OfflineActivityItemStatisticsBVo activityItemStatisticsBo);


List<OfflineActivityGrantItemVo> findAwardItemGrantList(WxOfflineActivityGrantSettlement grantSettlement);
} }






+ 6
- 3
mallinkService/src/main/java/com/iformall/service/WxOfflineActivityGrantAwardService.java Просмотреть файл

@@ -1,10 +1,9 @@
package com.iformall.service; package com.iformall.service;


import com.iformall.domain.po.WxOfflineActivity;
import com.iformall.domain.po.WxOfflineActivityGrantAward;
import com.iformall.domain.po.*;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.iformall.domain.po.WxOfflineActivityRecord;
import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.OfflineActivityAwardsItemVo;


import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@@ -34,4 +33,8 @@ public interface WxOfflineActivityGrantAwardService {
List<WxOfflineActivityGrantAward> grantAwardDetail(WxOfflineActivityGrantAward wxOfflineActivityGrantAward); List<WxOfflineActivityGrantAward> grantAwardDetail(WxOfflineActivityGrantAward wxOfflineActivityGrantAward);


void activityGrantExport(HttpServletRequest request, HttpServletResponse response, WxOfflineActivity wxOfflineActivity); void activityGrantExport(HttpServletRequest request, HttpServletResponse response, WxOfflineActivity wxOfflineActivity);

void activityGrantItemExport(HttpServletRequest request, HttpServletResponse response, OfflineActivityAwardsItemVo offlineActivityAwardsItemVo);

List<WxOfflineActivityGrantAward> selectListByIds(List<Long> grantIds, TenantEntity tenantEntity);
} }

+ 1
- 0
mallinkService/src/main/java/com/iformall/service/WxOfflineActivityRecordService.java Просмотреть файл

@@ -49,4 +49,5 @@ public interface WxOfflineActivityRecordService {


List<OfflineRecordBusinessStatistics> recordBusinessStatistics(WxOfflineActivityRecord wxOfflineActivityRecord); List<OfflineRecordBusinessStatistics> recordBusinessStatistics(WxOfflineActivityRecord wxOfflineActivityRecord);


List<WxOfflineActivityRecord> selectListByIds(List<Long> recordIds,TenantEntity tenantEntity);
} }

+ 314
- 6
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java Просмотреть файл

@@ -8,9 +8,7 @@ import com.iformall.common.IdWorker;
import com.iformall.common.Result; import com.iformall.common.Result;
import com.iformall.domain.po.*; import com.iformall.domain.po.*;
import com.iformall.domain.po.base.TenantEntity; import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.vo.OfflineActivityGrantRecord;
import com.iformall.domain.vo.OfflineActivityGrantRule;
import com.iformall.domain.vo.OfflineActivityRecordStatistics;
import com.iformall.domain.vo.*;
import com.iformall.enums.*; import com.iformall.enums.*;
import com.iformall.exception.MallinkException; import com.iformall.exception.MallinkException;
import com.iformall.mapper.*; import com.iformall.mapper.*;
@@ -52,6 +50,15 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
@Autowired @Autowired
WxOfflineActivityGrantSettlementMapper wxOfflineActivityGrantSettlementMapper; WxOfflineActivityGrantSettlementMapper wxOfflineActivityGrantSettlementMapper;


@Autowired
private WxOfflineActivityAwardsItemMapper wxOfflineActivityAwardsItemMapper;

@Autowired
private WxOfflineActivityAwardsItemService wxOfflineActivityAwardsItemService;

@Autowired
private WxOfflineActivityAwardsModelMapper wxOfflineActivityAwardsModelMapper;

@Autowired @Autowired
private WxOfflineActivityGrantCashBackMapper wxOfflineActivityGrantCashBackMapper; private WxOfflineActivityGrantCashBackMapper wxOfflineActivityGrantCashBackMapper;


@@ -79,6 +86,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
@Autowired @Autowired
WxOfflineActivityItemService wxOfflineActivityItemService; WxOfflineActivityItemService wxOfflineActivityItemService;


@Autowired
private WxOfflineActivityItemMapper wxOfflineActivityItemMapper;

@Autowired @Autowired
WxOfflineActivityService wxOfflineActivityService; WxOfflineActivityService wxOfflineActivityService;


@@ -101,6 +111,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
ExcelService excelService; ExcelService excelService;





@Override @Override
public Map<String, Object> getRecordStatistics(WxOfflineActivityRecord wxOfflineActivityRecord) { public Map<String, Object> getRecordStatistics(WxOfflineActivityRecord wxOfflineActivityRecord) {
handlerRecordQuery(null,wxOfflineActivityRecord); handlerRecordQuery(null,wxOfflineActivityRecord);
@@ -1230,6 +1241,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
excelService.exportExcel(headList, activityGrantObjectList, null, "活动奖品发放明细", "活动奖品发放明细.xlsx",true, response); excelService.exportExcel(headList, activityGrantObjectList, null, "活动奖品发放明细", "活动奖品发放明细.xlsx",true, response);
} }



private List<ExcelExportEntity> getActivityGrantExportHead(WxOfflineActivity activity){ private List<ExcelExportEntity> getActivityGrantExportHead(WxOfflineActivity activity){
List<ExcelExportEntity> headList = new ArrayList<>(); List<ExcelExportEntity> headList = new ArrayList<>();
ExcelExportEntity entity1 = new ExcelExportEntity("客户姓名","cusName",20); ExcelExportEntity entity1 = new ExcelExportEntity("客户姓名","cusName",20);
@@ -1455,9 +1467,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
return headList; return headList;
} }





private BigDecimal awardsRulePrice(BigDecimal awardsPrice,Integer awardsRule){ private BigDecimal awardsRulePrice(BigDecimal awardsPrice,Integer awardsRule){
BigDecimal awardsRulePrice = BigDecimal.ZERO; BigDecimal awardsRulePrice = BigDecimal.ZERO;
if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(awardsRule)){ if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(awardsRule)){
@@ -1471,6 +1480,305 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
return awardsRulePrice; return awardsRulePrice;
} }


@Override
public void activityGrantItemExport(HttpServletRequest request, HttpServletResponse response, OfflineActivityAwardsItemVo offlineActivityAwardsItemVo) {
WxOfflineActivityItem activityItem = wxOfflineActivityItemMapper.selectById(offlineActivityAwardsItemVo.getActivityItemId(), offlineActivityAwardsItemVo.getTenantId());
if(activityItem == null){
throw new MallinkException(Result.ERROR, "未查询到活动数据");
}
if(!EnumOfflineActivityMode.ONE.getCode().equals(activityItem.getModeType())){
throw new MallinkException(Result.ERROR, "发奖类型非单笔订单计算");
}

if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){
WxOfflineActivityAwardsModel activityAwardsModel = wxOfflineActivityAwardsModelMapper.selectById(offlineActivityAwardsItemVo.getId(), offlineActivityAwardsItemVo.getTenantId());
if(activityAwardsModel == null || !activityAwardsModel.getActivityItemId().equals(activityItem.getId())){
throw new MallinkException(Result.ERROR, "查询活动数据异常");
}
grantItemLotteryDrawExport(request,response,activityItem,activityAwardsModel);

} else if (EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())) {
// WxOfflineActivityAwardsModel activityAwardsModel = wxOfflineActivityAwardsModelMapper.selectById(offlineActivityAwardsItemVo.getId(), offlineActivityAwardsItemVo.getTenantId());
// if(activityAwardsModel == null || !activityAwardsModel.getActivityItemId().equals(activityItem.getId())){
// throw new MallinkException(Result.ERROR, "查询活动数据异常");
// }
WxOfflineActivityAwardsItem wxOfflineActivityAwardsItem = wxOfflineActivityAwardsItemMapper.selectById(offlineActivityAwardsItemVo.getId(), offlineActivityAwardsItemVo.getTenantId());
if(wxOfflineActivityAwardsItem == null || !wxOfflineActivityAwardsItem.getActivityItemId().equals(activityItem.getId())){
throw new MallinkException(Result.ERROR, "查询活动数据异常");
}
grantItemGiftExport(request,response,activityItem,wxOfflineActivityAwardsItem);

} else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) {
WxOfflineActivityAwardsItem wxOfflineActivityAwardsItem = wxOfflineActivityAwardsItemMapper.selectById(offlineActivityAwardsItemVo.getId(), offlineActivityAwardsItemVo.getTenantId());
if(wxOfflineActivityAwardsItem == null || !wxOfflineActivityAwardsItem.getActivityItemId().equals(activityItem.getId())){
throw new MallinkException(Result.ERROR, "查询活动数据异常");
}
grantItemCashbackExport(request,response,activityItem,wxOfflineActivityAwardsItem);

}

}

@Override
public List<WxOfflineActivityGrantAward> selectListByIds(List<Long> grantIds, TenantEntity tenantEntity) {
List<WxOfflineActivityGrantAward> WxOfflineActivityGrantAwards = wxOfflineActivityGrantAwardMapper.selectBatchIds(grantIds);
if(WxOfflineActivityGrantAwards != null && !WxOfflineActivityGrantAwards.isEmpty()){
MallUserInfo userInfoQ = new MallUserInfo();
userInfoQ.updateTenantInfo(tenantEntity);
Map<Long,MallUserInfo> userMap = mallUserInfoService.getUserMap(userInfoQ);

WxOfflineActivityGrantAwards.forEach(record -> {
if(record.getCreateBy() != null){
record.setCreateByName(userMap.get(record.getCreateBy()).getName());
}
});
}

return WxOfflineActivityGrantAwards;
}

private void grantItemLotteryDrawExport(HttpServletRequest request, HttpServletResponse response,
WxOfflineActivityItem activityItem, WxOfflineActivityAwardsModel activityAwardsModel){
List<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<>();

WxOfflineActivityGrantSettlement grantSettlement = new WxOfflineActivityGrantSettlement();
grantSettlement.updateTenantInfo(activityItem);
grantSettlement.setActivityItemId(activityItem.getId());
grantSettlement.setMinMoney(activityAwardsModel.getMinAmount());
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());
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);
WxOfflineActivityRecord record = recordMap.get(recordId);
WxOfflineActivityGrantAward grant = grantMap.get(recordgrantItemList.get(0).getGrantId());
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());
}

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<>();

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);
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()));
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());
});

}

excelService.exportExcel(exportHead, grantItemObjectList, null, "赠礼活动发放明细", "赠礼活动发放明细.xlsx",true, response);
}

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_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<>();

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);
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()));
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());
});
}

excelService.exportExcel(exportHead, grantItemObjectList, null, "返现活动发放明细", "返现活动发放明细.xlsx",true, response);

}

private List<ExcelExportEntity> getGrantItemExportHead(){
List<ExcelExportEntity> headList = new ArrayList<>();
ExcelExportEntity entity1 = new ExcelExportEntity("订单编号","orderNo",20);
headList.add(entity1);
ExcelExportEntity entity2 = new ExcelExportEntity("订单金额","orderMoney",20);
headList.add(entity2);
ExcelExportEntity entity3 = new ExcelExportEntity("订单地址","orderAddress",20);
headList.add(entity3);
ExcelExportEntity entity4 = new ExcelExportEntity("商户名称","merchantName",20);
headList.add(entity4);
ExcelExportEntity entity5 = new ExcelExportEntity("铺位号","shopNumber",20);
headList.add(entity5);
ExcelExportEntity entity6 = new ExcelExportEntity("业态","businessName",20);
headList.add(entity6);
ExcelExportEntity entity7 = new ExcelExportEntity("抽奖券编码","lotteryNum",20);
headList.add(entity7);
ExcelExportEntity entity8 = new ExcelExportEntity("抽奖券数量","lotteryCount",20);
headList.add(entity8);
ExcelExportEntity entity9 = new ExcelExportEntity("周年庆抽奖编码","anniversaryLotteryNum",20);
headList.add(entity9);
ExcelExportEntity entity10 = new ExcelExportEntity("提交时间","createDate",20);
entity10.setFormat("yyyy-MM-dd HH:mm:ss");
headList.add(entity10);
ExcelExportEntity entity11 = new ExcelExportEntity("审核人","auditByName",20);
headList.add(entity11);
ExcelExportEntity entity12 = new ExcelExportEntity("审核时间","auditTime",20);
entity12.setFormat("yyyy-MM-dd HH:mm:ss");
headList.add(entity12);


ExcelExportEntity entity20 = new ExcelExportEntity("客户姓名","cusName",20);
headList.add(entity20);
ExcelExportEntity entity21 = new ExcelExportEntity("客户电话","cusPhone",20);
headList.add(entity21);
ExcelExportEntity entity22 = new ExcelExportEntity("领奖人","realName",20);
headList.add(entity22);
ExcelExportEntity entity23 = new ExcelExportEntity("领奖人身份证号","realCard",20);
headList.add(entity23);
ExcelExportEntity entity24 = new ExcelExportEntity("发奖人","createByName",20);
headList.add(entity24);
ExcelExportEntity entity25 = new ExcelExportEntity("发奖时间","grantCreateDate",20);
entity25.setFormat("yyyy-MM-dd HH:mm:ss");
headList.add(entity25);
ExcelExportEntity entity26 = new ExcelExportEntity("签名图片","signImg",40);
// entity26.setType(BaseEntityTypeConstants.IMAGE_TYPE);
// entity26.setExportImageType(1);
// entity26.setHeight(20);
headList.add(entity26);

return headList;
}

private Map<String,Object> getGrantItemExportObject(WxOfflineActivityRecord record,WxOfflineActivityGrantAward grant){
Map<String,Object> grantItemObject = new HashMap<>();
grantItemObject.put("orderNo",record.getOrderNo());
grantItemObject.put("orderMoney",record.getOrderMoney());
grantItemObject.put("orderAddress",record.getCusAddress());
grantItemObject.put("merchantName",record.getMerchantName());
grantItemObject.put("shopNumber",record.getShopNumber());
grantItemObject.put("businessName",record.getBusinessName());
if(record.getLotteryNumList() != null && !record.getLotteryNumList().isEmpty()){
grantItemObject.put("lotteryNum",String.join(";", record.getLotteryNumList()));
}
grantItemObject.put("lotteryCount",record.getLotteryCount());
grantItemObject.put("anniversaryLotteryNum",record.getAnniversaryLotteryNum());
grantItemObject.put("createDate",record.getCreateDate());
grantItemObject.put("auditByName",record.getAuditByName());
grantItemObject.put("auditTime",record.getAuditTime());

grantItemObject.put("cusName",grant.getCusName());
grantItemObject.put("cusPhone",grant.getCusPhone());
grantItemObject.put("realName",grant.getRealName());
grantItemObject.put("realCard",grant.getRealCard());
grantItemObject.put("createByName",grant.getCreateByName());
grantItemObject.put("grantCreateDate",grant.getCreateDate());
grantItemObject.put("signImg",grant.getSignImg());
return grantItemObject;
}

} }






+ 33
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityRecordServiceImpl.java Просмотреть файл

@@ -484,6 +484,39 @@ public class WxOfflineActivityRecordServiceImpl implements WxOfflineActivityReco
} }
return Collections.emptyList(); return Collections.emptyList();
} }

@Override
public List<WxOfflineActivityRecord> selectListByIds(List<Long> recordIds,TenantEntity tenantEntity) {
List<WxOfflineActivityRecord> wxOfflineActivityRecords = wxOfflineActivityRecordMapper.selectBatchIds(recordIds);

if(wxOfflineActivityRecords!=null && !wxOfflineActivityRecords.isEmpty()){
WxMerchant merchantQ = new WxMerchant();
merchantQ.updateTenantInfo(tenantEntity);
Map<Long, String> merchantMap = wxMerchantService.getIdAndNamesMap(merchantQ);

Map<Long, String> merchantShopNumberMap = wxShopService.getMerchantShopNumberMap(merchantQ, null, EnumYesOrNo.NO.getCode());

MallUserInfo userInfoQ = new MallUserInfo();
userInfoQ.updateTenantInfo(tenantEntity);
Map<Long,MallUserInfo> userMap = mallUserInfoService.getUserMap(userInfoQ);

Map<Integer, WxBusiness> bussinessMap = wxBusinessService.findAllMap(tenantEntity);

wxOfflineActivityRecords.forEach(record -> {
if(record.getMerchantId() != null){
record.setMerchantName(merchantMap.get(record.getMerchantId()));
record.setShopNumber(merchantShopNumberMap.get(record.getMerchantId()));
}
if(record.getAuditBy() != null){
record.setAuditByName(userMap.get(record.getAuditBy()).getName());
}
if(record.getBusinessId() != null){
record.setBusinessName(bussinessMap.get(record.getBusinessId()).getTitle());
}
});
}
return wxOfflineActivityRecords;
}
} }






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

@@ -294,7 +294,6 @@
group by xTime group by xTime
</select> </select>



<update id="updateStatusNo" parameterType="com.iformall.domain.po.WxOfflineActivityGrantAward" > <update id="updateStatusNo" parameterType="com.iformall.domain.po.WxOfflineActivityGrantAward" >
update wx_offline_activity_grant_settlement set status = 0,update_date = now() update wx_offline_activity_grant_settlement set status = 0,update_date = now()
where grant_id in ( where grant_id in (
@@ -302,4 +301,41 @@
where `activity_id` = #{activityId} and `cus_phone` = #{cusPhone} and `id` != #{id}) where `activity_id` = #{activityId} and `cus_phone` = #{cusPhone} and `id` != #{id})
</update> </update>


<select id="findAwardItemGrantList" parameterType="com.iformall.domain.po.WxOfflineActivityGrantSettlement" 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.mall_share_rate,gi.merchant_share_rate,
gi.record_id,
gs.order_no,gs.order_money,
gs.merchant_id,
gs.real_grate_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
<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;= #{createDateBegin}
</if>

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

</mapper> </mapper>

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