|
|
|
@@ -1,5 +1,7 @@ |
|
|
|
package com.iformall.service.impl; |
|
|
|
|
|
|
|
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; |
|
|
|
import cn.afterturn.easypoi.excel.entity.vo.BaseEntityTypeConstants; |
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
|
import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; |
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
|
|
|
@@ -13,6 +15,7 @@ import com.iformall.exception.MallinkException; |
|
|
|
import com.iformall.mapper.*; |
|
|
|
import com.iformall.service.*; |
|
|
|
import com.iformall.utils.DateUtils; |
|
|
|
import com.iformall.utils.DownFileUtil; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
@@ -20,6 +23,8 @@ import org.springframework.transaction.annotation.Transactional; |
|
|
|
import javax.servlet.http.HttpServletRequest; |
|
|
|
import javax.servlet.http.HttpServletResponse; |
|
|
|
import java.math.BigDecimal; |
|
|
|
import java.net.MalformedURLException; |
|
|
|
import java.net.URL; |
|
|
|
import java.text.NumberFormat; |
|
|
|
import java.util.*; |
|
|
|
import java.util.function.Function; |
|
|
|
@@ -60,6 +65,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
@Autowired |
|
|
|
WxOfflineActivityItemService wxOfflineActivityItemService; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
WxOfflineActivityService wxOfflineActivityService; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
WxOfflineActivityGrantSettlementService wxOfflineActivityGrantSettlementService; |
|
|
|
|
|
|
|
@@ -183,7 +191,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
activityItem.setIsMeet(true); |
|
|
|
//奖项限制数量 |
|
|
|
int limitCount = 0; |
|
|
|
if(activityItem.getAwardsItemPrice() != null || activityItem.getAwardsItemPrice() > 0){ |
|
|
|
if(activityItem.getAwardsItemPrice() != null && activityItem.getAwardsItemPrice() > 0){ |
|
|
|
limitCount = wxOfflineActivityGrantAward.getOrderMoneySum() / activityItem.getAwardsItemPrice(); |
|
|
|
} |
|
|
|
if(activityItem.getAwardsItemLimit() != null && activityItem.getAwardsItemLimit() > 0 |
|
|
|
@@ -345,7 +353,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
} |
|
|
|
//奖项限制数量 |
|
|
|
int limitCount = 0; |
|
|
|
if(activityItem.getAwardsItemPrice() != null || activityItem.getAwardsItemPrice() > 0){ |
|
|
|
if(activityItem.getAwardsItemPrice() != null && activityItem.getAwardsItemPrice() > 0){ |
|
|
|
limitCount = wxOfflineActivityGrantAward.getOrderMoneySum() / activityItem.getAwardsItemPrice(); |
|
|
|
} |
|
|
|
if(activityItem.getAwardsItemLimit() != null && activityItem.getAwardsItemLimit() > 0 |
|
|
|
@@ -406,7 +414,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
if(i == 0){ |
|
|
|
throw new MallinkException(Result.ERROR, "请检查是否有活动奖项"); |
|
|
|
@@ -519,6 +526,159 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
return grantAward; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void activityGrantExport(HttpServletRequest request, HttpServletResponse response, WxOfflineActivity wxOfflineActivity) { |
|
|
|
WxOfflineActivity activity = wxOfflineActivityService.getInfoById(wxOfflineActivity.getId(), wxOfflineActivity.getTenantId()); |
|
|
|
if(activity == null){ |
|
|
|
throw new MallinkException(Result.ERROR, "未查询到活动"); |
|
|
|
} |
|
|
|
List<ExcelExportEntity> headList = getActivityGrantExportHead(activity); |
|
|
|
|
|
|
|
List<Map<String,Object>> activityGrantObjectList = new ArrayList<>(); |
|
|
|
|
|
|
|
WxOfflineActivityGrantAward grantAwardQ = new WxOfflineActivityGrantAward(); |
|
|
|
grantAwardQ.updateTenantInfo(wxOfflineActivity); |
|
|
|
grantAwardQ.setActivityId(wxOfflineActivity.getId()); |
|
|
|
List<WxOfflineActivityGrantAward> grantAwardList = wxOfflineActivityGrantAwardMapper.findList(grantAwardQ); |
|
|
|
if(grantAwardList != null){ |
|
|
|
WxMerchant merchantQ = new WxMerchant(); |
|
|
|
merchantQ.updateTenantInfo(wxOfflineActivity); |
|
|
|
Map<Long, String> merchantMap = wxMerchantService.getIdAndNamesMap(merchantQ); |
|
|
|
|
|
|
|
MallUserInfo userInfoQ = new MallUserInfo(); |
|
|
|
userInfoQ.updateTenantInfo(wxOfflineActivity); |
|
|
|
Map<Long, MallUserInfo> userMap = mallUserInfoService.getUserMap(userInfoQ); |
|
|
|
// |
|
|
|
WxOfflineActivityGrantItem grantItemQ = new WxOfflineActivityGrantItem(); |
|
|
|
grantItemQ.updateTenantInfo(wxOfflineActivity); |
|
|
|
grantItemQ.setActivityId(wxOfflineActivity.getId()); |
|
|
|
List<WxOfflineActivityGrantItem> grantItem = wxOfflineActivityGrantItemMapper.findList(grantItemQ); |
|
|
|
Map<Long, List<WxOfflineActivityGrantItem>> grantItemMap = grantItem.stream().collect(Collectors.groupingBy(WxOfflineActivityGrantItem::getGrantId)); |
|
|
|
for (WxOfflineActivityGrantAward grantAward : grantAwardList) { |
|
|
|
List<WxOfflineActivityRecord> recordList = wxOfflineActivityRecordMapper.findGrantList(grantAward.getId(),grantAward.getTenantId()); |
|
|
|
List<WxOfflineActivityGrantItem> grantItemList = grantItemMap.get(grantAward.getId()); |
|
|
|
Map<String,Object> activityGrantObject = new HashMap<>(); |
|
|
|
activityGrantObject.put("activityName",activity.getName()); |
|
|
|
List<String> merchantOrder = new ArrayList<>(); |
|
|
|
for (WxOfflineActivityRecord record : recordList) { |
|
|
|
merchantOrder.add(record.getOrderNo()+"["+merchantMap.get(record.getMerchantId())+"]"); |
|
|
|
} |
|
|
|
activityGrantObject.put("merchantOrder",merchantOrder.stream().collect(Collectors.joining(";"))); |
|
|
|
activityGrantObject.put("orderMoneySum",grantAward.getOrderMoneySum()); |
|
|
|
activityGrantObject.put("cusName",grantAward.getCusName()); |
|
|
|
activityGrantObject.put("cusPhone",grantAward.getCusPhone()); |
|
|
|
activityGrantObject.put("realName",grantAward.getRealName()); |
|
|
|
activityGrantObject.put("realCard",grantAward.getRealCard()); |
|
|
|
activityGrantObject.put("createByName",grantAward.getCreateBy()!=null?userMap.get(grantAward.getCreateBy()).getName():""); |
|
|
|
activityGrantObject.put("createDate",DateUtils.date2String(grantAward.getCreateDate())); |
|
|
|
Map<Long, List<WxOfflineActivityGrantItem>> granActivityItemMap = grantItemList.stream().collect(Collectors.groupingBy(WxOfflineActivityGrantItem::getActivityItemId)); |
|
|
|
for (WxOfflineActivityItem activityItem : activity.getActivityItemList()) { |
|
|
|
List<WxOfflineActivityGrantItem> granActivityItemList = granActivityItemMap.get(activityItem.getId()); |
|
|
|
if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ |
|
|
|
Map<Long, WxOfflineActivityGrantItem> granAwardItamMap = new HashMap<>(); |
|
|
|
if(granActivityItemList != null && !granActivityItemList.isEmpty()){ |
|
|
|
granAwardItamMap = granActivityItemList.stream().collect(Collectors.toMap(WxOfflineActivityGrantItem::getAwardItamId, Function.identity())); |
|
|
|
} |
|
|
|
for (WxOfflineActivityAwardsItem awardsItem : activityItem.getActivityAwardsItemList()) { |
|
|
|
WxOfflineActivityGrantItem grantAwardsItem = granAwardItamMap.get(awardsItem.getId()); |
|
|
|
if(grantAwardsItem != null){ |
|
|
|
activityGrantObject.put(String.valueOf(activityItem.getId())+String.valueOf(awardsItem.getId()),grantAwardsItem.getAwardCount()); |
|
|
|
} else { |
|
|
|
activityGrantObject.put(String.valueOf(activityItem.getId())+String.valueOf(awardsItem.getId()),0); |
|
|
|
} |
|
|
|
} |
|
|
|
}else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ |
|
|
|
if(granActivityItemList != null && !granActivityItemList.isEmpty()){ |
|
|
|
activityGrantObject.put(String.valueOf(activityItem.getId()),granActivityItemList.get(0).getAwardName()); |
|
|
|
} |
|
|
|
}else if(EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())){ |
|
|
|
if(granActivityItemList != null && !granActivityItemList.isEmpty()){ |
|
|
|
activityGrantObject.put("r"+String.valueOf(activityItem.getId()),granActivityItemList.get(0).getCashBackRatio()); |
|
|
|
activityGrantObject.put("p"+String.valueOf(activityItem.getId()),granActivityItemList.get(0).getAwardPrice()); |
|
|
|
}else{ |
|
|
|
activityGrantObject.put("r"+String.valueOf(activityItem.getId()),0); |
|
|
|
activityGrantObject.put("p"+String.valueOf(activityItem.getId()),0); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
activityGrantObject.put("lotteryNum",grantAward.getLotteryNum()); |
|
|
|
activityGrantObject.put("lotteryCount",grantAward.getLotteryCount()); |
|
|
|
activityGrantObject.put("anniversaryLotteryNum",grantAward.getAnniversaryLotteryNum()); |
|
|
|
// if(StringUtils.isNotBlank(grantAward.getSignImg())){ |
|
|
|
// try{ |
|
|
|
// activityGrantObject.put("signImg",DownFileUtil.url2byte(grantAward.getSignImg())); |
|
|
|
// }catch (Exception e){} |
|
|
|
// } |
|
|
|
activityGrantObjectList.add(activityGrantObject); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
excelService.exportExcel(headList, activityGrantObjectList, null, "活动奖品发放明细", "活动奖品发放明细.xlsx",true, response); |
|
|
|
} |
|
|
|
|
|
|
|
private List<ExcelExportEntity> getActivityGrantExportHead(WxOfflineActivity activity){ |
|
|
|
List<ExcelExportEntity> headList = new ArrayList<>(); |
|
|
|
ExcelExportEntity entity1 = new ExcelExportEntity("活动名称","activityName",20); |
|
|
|
headList.add(entity1); |
|
|
|
ExcelExportEntity entity2 = new ExcelExportEntity("订单[门店]","merchantOrder",20); |
|
|
|
headList.add(entity2); |
|
|
|
ExcelExportEntity entity3 = new ExcelExportEntity("订单总金额","orderMoneySum",20); |
|
|
|
headList.add(entity3); |
|
|
|
ExcelExportEntity entity4 = new ExcelExportEntity("客户姓名","cusName",20); |
|
|
|
headList.add(entity4); |
|
|
|
ExcelExportEntity entity5 = new ExcelExportEntity("客户电话","cusPhone",20); |
|
|
|
headList.add(entity5); |
|
|
|
ExcelExportEntity entity6 = new ExcelExportEntity("实际领奖人","realName",20); |
|
|
|
headList.add(entity6); |
|
|
|
ExcelExportEntity entity7 = new ExcelExportEntity("实际领奖人身份证号","realCard",20); |
|
|
|
headList.add(entity7); |
|
|
|
ExcelExportEntity entity8 = new ExcelExportEntity("发奖人","createByName",20); |
|
|
|
headList.add(entity8); |
|
|
|
ExcelExportEntity entity9 = new ExcelExportEntity("发奖时间","createDate",20); |
|
|
|
headList.add(entity9); |
|
|
|
|
|
|
|
for (WxOfflineActivityItem activityItem : activity.getActivityItemList()) { |
|
|
|
//抽奖活动 |
|
|
|
//【活动项名称】【奖项名称】数量 |
|
|
|
if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ |
|
|
|
for (WxOfflineActivityAwardsItem awardsItem : activityItem.getActivityAwardsItemList()) { |
|
|
|
ExcelExportEntity entity10 = new ExcelExportEntity("【"+activityItem.getName()+"】【"+awardsItem.getName()+"】数量", |
|
|
|
String.valueOf(activityItem.getId())+String.valueOf(awardsItem.getId()),20); |
|
|
|
headList.add(entity10); |
|
|
|
} |
|
|
|
} |
|
|
|
//满额赠礼活动 |
|
|
|
//【活动项名称】奖项 |
|
|
|
else if (EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())) { |
|
|
|
ExcelExportEntity entity11 = new ExcelExportEntity("【"+activityItem.getName()+"】奖项", |
|
|
|
String.valueOf(activityItem.getId()),20); |
|
|
|
headList.add(entity11); |
|
|
|
} |
|
|
|
//返现活动 |
|
|
|
//【活动项名称】返现比例 |
|
|
|
//【活动项名称】返现金额 |
|
|
|
else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { |
|
|
|
ExcelExportEntity entity12 = new ExcelExportEntity("【"+activityItem.getName()+"】返现比例", |
|
|
|
"r"+String.valueOf(activityItem.getId()),20); |
|
|
|
headList.add(entity12); |
|
|
|
ExcelExportEntity entity13 = new ExcelExportEntity("【"+activityItem.getName()+"】返现金额", |
|
|
|
"p"+String.valueOf(activityItem.getId()),20); |
|
|
|
headList.add(entity13); |
|
|
|
} |
|
|
|
} |
|
|
|
ExcelExportEntity entity14 = new ExcelExportEntity("抽奖券编码","lotteryNum",20); |
|
|
|
headList.add(entity14); |
|
|
|
ExcelExportEntity entity15 = new ExcelExportEntity("抽奖券数量","lotteryCount",20); |
|
|
|
headList.add(entity15); |
|
|
|
ExcelExportEntity entity16 = new ExcelExportEntity("周年庆抽奖编码","anniversaryLotteryNum",20); |
|
|
|
headList.add(entity16); |
|
|
|
ExcelExportEntity entity17 = new ExcelExportEntity("签名图片","signImg",20); |
|
|
|
// entity17.setType(BaseEntityTypeConstants.IMAGE_TYPE); |
|
|
|
headList.add(entity17); |
|
|
|
|
|
|
|
return headList; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|