Browse Source

/。 baobiao 2

release_toaliyun_real
xhxu 4 years ago
parent
commit
b65bed18e0
10 changed files with 159 additions and 281 deletions
  1. +5
    -0
      mallinkAdmin/src/main/java/com/iformall/controller/market/MarkingDataReportController.java
  2. +3
    -3
      mallinkService/src/main/java/com/iformall/mapper/WxCouponActionLogMapper.java
  3. +16
    -1
      mallinkService/src/main/java/com/iformall/service/WxCouponActionLogService.java
  4. +37
    -228
      mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java
  5. +0
    -1
      mallinkService/src/main/java/com/iformall/service/impl/WxCarCmdLogServiceImpl.java
  6. +5
    -7
      mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java
  7. +71
    -0
      mallinkService/src/main/java/com/iformall/service/impl/WxCouponActionLogServiceImpl.java
  8. +8
    -9
      mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml
  9. +7
    -31
      mallinkService/src/main/resources/mapper/WxCouponActionLogMapper.xml
  10. +7
    -1
      mallinkService/src/main/resources/mapper/WxMallMapper.xml

+ 5
- 0
mallinkAdmin/src/main/java/com/iformall/controller/market/MarkingDataReportController.java View File

@@ -11,6 +11,7 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -72,6 +73,10 @@ public class MarkingDataReportController extends BaseController {
@ApiImplicitParam(name = "pageSize", value = "每页条数", dataType = "int", paramType = "query", required = true)})
public ResultData findSceneDataList(@ModelAttribute MarkingCouponDataReportDto markingCouponDataReportDto, Integer pageNum, Integer pageSize) {
logger.debug("[" + getIpAddr() + "] MarkingDataReportController::findSceneDataList");
if(StringUtils.isBlank(getTenantInfo().getTenantId())){
//todo 集团版查询数据待重构
return new ResultData("集团版查询数据待重构");
}
return new ResultData(markingDataReportService.getSceneDataList(getTenantInfo(), markingCouponDataReportDto, pageNum, pageSize));
}



+ 3
- 3
mallinkService/src/main/java/com/iformall/mapper/WxCouponActionLogMapper.java View File

@@ -21,9 +21,9 @@ public interface WxCouponActionLogMapper extends CommonMapper<WxCouponActionLog,

List<MarkingSceneDataReportVo> sceneDataMap(HashMap<String,Object> params); // will be deleted

void updateCreateTimeMd(HashMap<String,Object> params);
void updateCreateTimeMd(@Param("tenantId") String tenantId);

List<MarkingSceneDataReportTVo> getSceneDataMap(HashMap<String,Object> params);
List<MarkingSceneDataReportTVo> getSceneDataMap(@Param("tenantId") String tenantId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);

List<MarkingSceneDataReportVo> sceneDataMapJoinCouponOrder(HashMap<String,Object> params);

@@ -40,7 +40,7 @@ public interface WxCouponActionLogMapper extends CommonMapper<WxCouponActionLog,
* @param endTime
* @return
*/
int getCountByDateLimit(@Param("tenantEntitys") List<TenantEntity> tenantEntitys, @Param("tenantId") String tenantId, @Param("parentTenantId") String parentTenantId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);
int getCountByDateLimit(@Param("tenantId") String tenantId, @Param("startTime") Date startTime, @Param("endTime") Date endTime);


int getCountByChannelId(@Param("tenantId")String tenantId,@Param("parentTenantId")String parentTenantId,@Param("channelType") int channelType,@Param("channelId")Long channelId);


+ 16
- 1
mallinkService/src/main/java/com/iformall/service/WxCouponActionLogService.java View File

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

import com.github.pagehelper.PageInfo;
import com.iformall.domain.dto.MarkingCouponDataReportDto;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.po.WxCouponActionLog;
import com.iformall.domain.vo.MarkingSceneDataReportVo;
import com.iformall.domain.vo.MarkingSceneDataVo;
import com.iformall.domain.vo.WxCouponActionLogVo;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface WxCouponActionLogService {
@@ -55,5 +61,14 @@ public interface WxCouponActionLogService {
* @return
*/
PageInfo<WxCouponActionLogVo> getActionLog(Map<String,Object> params, Integer pageNum, Integer pageSize) ;

int getCountByDateLimit(TenantEntity tenantEntity, Date startTime, Date endTime);

void updateCreateTimeMd(TenantEntity tenantEntity);

Map<String, Integer> getSceneDataMap(TenantEntity tenantEntity, Date startTime, Date endTime);

List<MarkingSceneDataVo> sceneDataList(MarkingCouponDataReportDto queryDto);

List<MarkingSceneDataReportVo> sceneDataJoinCouponOrderList(HashMap<String, Object> params);
}

+ 37
- 228
mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java View File

@@ -16,6 +16,7 @@ import com.iformall.exception.MallinkException;
import com.iformall.mapper.*;
import com.iformall.service.ExcelService;
import com.iformall.service.MarkingDataReportService;
import com.iformall.service.WxCouponActionLogService;
import com.iformall.service.WxCouponOrderService;
import com.iformall.utils.DateUtils;
import org.apache.commons.collections.map.HashedMap;
@@ -44,7 +45,7 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
@Autowired
private WxCouponOrderMapper wxCouponOrderMapper;
@Autowired
private WxCouponActionLogMapper wxCouponActionLogMapper;
private WxCouponActionLogService wxCouponActionLogService;
@Autowired
private WxCarCmdLogMapper wxCarCmdLogMapper;
@Autowired
@@ -164,11 +165,10 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {

@Override
public Map<String, Object> getSceneData(TenantEntity tenantEntity) {
List<TenantEntity> tenantEntitys = wxMallMapper.getTenantEntitys(tenantEntity);
//今日营销投放券数
int todaySceneCount = wxCouponActionLogMapper.getCountByDateLimit(tenantEntitys, tenantEntity.getTenantId(), tenantEntity.getParentTenantId(), addDay(0), addDay(1));
int yesterdayCount = wxCouponActionLogMapper.getCountByDateLimit(tenantEntitys, tenantEntity.getTenantId(), tenantEntity.getParentTenantId(), addDay(-1), addDay(0));
int lastWeekCount = wxCouponActionLogMapper.getCountByDateLimit(tenantEntitys, tenantEntity.getTenantId(), tenantEntity.getParentTenantId(), addDay(-7), addDay(-6));
int todaySceneCount = wxCouponActionLogService.getCountByDateLimit(tenantEntity, addDay(0), addDay(1));
int yesterdayCount = wxCouponActionLogService.getCountByDateLimit(tenantEntity, addDay(-1), addDay(0));
int lastWeekCount = wxCouponActionLogService.getCountByDateLimit(tenantEntity, addDay(-7), addDay(-6));

NumberFormat nf = NumberFormat.getPercentInstance();
nf.setMinimumFractionDigits(2);//控制保留小数点后几位,2:表示保留2位小数点
@@ -180,74 +180,17 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
if (lastWeekCount != 0) {
sceneUpWeek = nf.format((todaySceneCount - lastWeekCount) / (float) lastWeekCount);
}
HashMap<String, Object> returnMap = new HashMap<>();
returnMap.put("todaySceneCount", todaySceneCount);//今日领取数
returnMap.put("yesterdayCount", yesterdayCount);//昨日领取数
returnMap.put("sceneDownDay", sceneDownDay);//比昨日下降
returnMap.put("lastWeekCount", lastWeekCount);//上周领取数
returnMap.put("sceneUpWeek", sceneUpWeek);//比上周提升

HashMap<String, Object> params = new HashMap<>();
params.put("tenantEntitys", tenantEntitys);
params.put("tenantId", tenantEntity.getTenantId());
// if (StringUtils.isNotBlank(tenantEntity.getParentTenantId())) {
// params.put("parentTenantId", tenantEntity.getParentTenantId());
// }
params.put("startTime", addDay(-30));
params.put("endTime", addDay(1));
//停车发券数 停车发券被核销数 核销发券数 核销发券被核销数
for (TenantEntity t:tenantEntitys) {
params.put("tenantId", t.getTenantId());
wxCouponActionLogMapper.updateCreateTimeMd(params);
}

List<MarkingSceneDataReportTVo> sceneList = wxCouponActionLogMapper.getSceneDataMap(params);
//处理数据
wxCouponActionLogService.updateCreateTimeMd(tenantEntity);

//停车发券被核销数
HashMap<String, Object> params1 = new HashMap<>();
params1.put("tenantEntitys", tenantEntitys);
params1.put("tenantId", tenantEntity.getTenantId());
if (StringUtils.isNotBlank(tenantEntity.getParentTenantId())) {
params1.put("parentTenantId", tenantEntity.getParentTenantId());
}
params1.put("startTime", addDay(-30));
params1.put("endTime", addDay(1));
params1.put("channelType", EnumCouponSendSendType.CAR_STOP.getCode());//停车
List<MarkingSceneDataReportVo> list1 = wxCouponActionLogMapper.sceneDataMapJoinCouponOrder(params1);
Map<String, Integer> parkCountMap = list1.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getXTime, p -> p.getTempCount()));

//核销发券被核销数
HashMap<String, Object> params2 = new HashMap<>();
params2.put("tenantEntitys", tenantEntitys);
params2.put("tenantId", tenantEntity.getTenantId());
if (StringUtils.isNotBlank(tenantEntity.getParentTenantId())) {
params2.put("parentTenantId", tenantEntity.getParentTenantId());
}
params2.put("startTime", addDay(-30));
params2.put("endTime", addDay(1));
params2.put("channelType", EnumCouponSendSendType.COUPON_VERIFY.getCode());//核销
List<MarkingSceneDataReportVo> list2 = wxCouponActionLogMapper.sceneDataMapJoinCouponOrder(params2);
Map<String, Integer> verifyCountMap = list2.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getXTime, p -> p.getTempCount()));

// B端刷卡支付被核销数
HashMap<String, Object> params3 = new HashMap<>();
params3.put("tenantEntitys", tenantEntitys);
params3.put("tenantId", tenantEntity.getTenantId());
if (StringUtils.isNotBlank(tenantEntity.getParentTenantId())) {
params3.put("parentTenantId", tenantEntity.getParentTenantId());
}
params3.put("startTime", addDay(-30));
params3.put("endTime", addDay(1));
params3.put("channelType", EnumCouponSendSendType.B_MICROPAY.getCode());//B端刷卡支付
List<MarkingSceneDataReportVo> list3 = wxCouponActionLogMapper.sceneDataMapJoinCouponOrder(params3);
Map<String, Integer> microPayCountMap = list3.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getXTime, p -> p.getTempCount()));

// 购买发券被核销数
HashMap<String, Object> params4 = new HashMap<>();
params4.put("tenantEntitys", tenantEntitys);
params4.put("tenantId", tenantEntity.getTenantId());
if (StringUtils.isNotBlank(tenantEntity.getParentTenantId())) {
params4.put("parentTenantId", tenantEntity.getParentTenantId());
}
params4.put("startTime", addDay(-30));
params4.put("endTime", addDay(1));
params4.put("channelType", EnumCouponSendSendType.C_ORDER.getCode());//买券
List<MarkingSceneDataReportVo> list4 = wxCouponActionLogMapper.sceneDataMapJoinCouponOrder(params4);
Map<String, Integer> OrderCountMap = list4.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getXTime, p -> p.getTempCount()));
Map<String,Integer> sceneMap = wxCouponActionLogService.getSceneDataMap(tenantEntity,addDay(-30),addDay(1));

String startdate = DateUtils.getTimeBefore(30, new Date());
String enddate = DateUtils.getTimeBefore(1,new Date());
@@ -258,37 +201,14 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
for(String tj:tjList){
MarkingSceneDataReportVo msdVo = new MarkingSceneDataReportVo();
msdVo.setXTime(tj);
Optional<MarkingSceneDataReportTVo> carStop = sceneList.stream().filter(c -> c.getXTime().equals(tj) && c.getChannelType() == EnumCouponSendSendType.CAR_STOP.getCode()).findFirst();
if (!carStop.isPresent()) {
msdVo.setParkSendCount(0);
} else {
MarkingSceneDataReportTVo tvo = carStop.get();
msdVo.setParkSendCount(tvo.getCount());
}

Optional<MarkingSceneDataReportTVo> couponVerify = sceneList.stream().filter(c -> c.getXTime().equals(tj) && c.getChannelType() == EnumCouponSendSendType.COUPON_VERIFY.getCode()).findFirst();
if(!couponVerify.isPresent()) {
msdVo.setVerifySendCount(0);
} else {
MarkingSceneDataReportTVo tvo = couponVerify.get();
msdVo.setVerifySendCount(tvo.getCount());
}

Optional<MarkingSceneDataReportTVo> microPay = sceneList.stream().filter(c -> c.getXTime().equals(tj) && c.getChannelType() == EnumCouponSendSendType.B_MICROPAY.getCode()).findFirst();
if(!microPay.isPresent()) {
msdVo.setMicroPaySendCount(0);
} else {
MarkingSceneDataReportTVo tvo = microPay.get();
msdVo.setMicroPaySendCount(tvo.getCount());
}

Optional<MarkingSceneDataReportTVo> orderSend = sceneList.stream().filter(c -> c.getXTime().equals(tj) && c.getChannelType() == EnumCouponSendSendType.C_ORDER.getCode()).findFirst();
if(!orderSend.isPresent()) {
msdVo.setOrderSendCount(0);
} else {
MarkingSceneDataReportTVo tvo = orderSend.get();
msdVo.setOrderSendCount(tvo.getCount());
}
Integer count2 = sceneMap.get(tj + "_" + EnumCouponSendSendType.CAR_STOP.getCode());
msdVo.setParkSendCount(count2==null?0:count2);
Integer count3 = sceneMap.get(tj + "_" + EnumCouponSendSendType.COUPON_VERIFY.getCode());
msdVo.setVerifySendCount(count3==null?0:count3);
Integer count4 = sceneMap.get(tj + "_" + EnumCouponSendSendType.B_MICROPAY.getCode());
msdVo.setMicroPaySendCount(count4==null?0:count4);
Integer count5 = sceneMap.get(tj + "_" + EnumCouponSendSendType.C_ORDER.getCode());
msdVo.setMicroPaySendCount(count5==null?0:count5);

msdVo.setTotal(msdVo.getParkSendCount() +
msdVo.getVerifySendCount() +
@@ -298,11 +218,6 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
tempDatalist.add(msdVo);
}


HashMap<String, Object> returnMap = new HashMap<>();
returnMap.put("sceneDownDay", sceneDownDay);//比昨日下降
returnMap.put("sceneUpWeek", sceneUpWeek);//比上周提升
returnMap.put("todaySceneCount", todaySceneCount);//今日领取数
returnMap.put("sceneDataMap", tempDatalist);
return returnMap;
}
@@ -350,10 +265,8 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {

@Override
public PageInfo<MarkingSceneDataVo> getSceneDataList(TenantEntity tenantEntity, MarkingCouponDataReportDto markingCouponDataReportDto, Integer pageIndex, Integer pageSize) {
List<TenantEntity> tenantEntitys = wxMallMapper.getTenantEntitys(tenantEntity);
MarkingCouponDataReportDto queryDto = new MarkingCouponDataReportDto();
org.springframework.beans.BeanUtils.copyProperties(markingCouponDataReportDto, queryDto);
queryDto.setTenantEntitys(tenantEntitys);
queryDto.updateTenantInfo(tenantEntity);

HashMap<String, Object> params = new HashMap<>();
@@ -368,142 +281,40 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
params.put("endTime", convertDateAndAdd(markingCouponDataReportDto.getEndTime(), 1));
queryDto.setEndTime(convertDateAndAdd(markingCouponDataReportDto.getEndTime(), 1));
}
params.put("channelType", markingCouponDataReportDto.getType());
queryDto.setChannelType(markingCouponDataReportDto.getType());


//TODO 商户发券数据,下个版本需求
if(Objects.equals(markingCouponDataReportDto.getType(),EnumCouponSendSendType.MERCHANT.getCode())) {
markingCouponDataReportDto.setType(null);
}
//停车发券数 停车发券被核销数, 核销发券数 核销发券被核销数, B端刷卡支付发券数 刷卡支付发券被核销数
PageHelper.startPage(pageIndex, pageSize);
List<MarkingSceneDataVo> list;

if(markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.CAR_STOP.getCode())) {
queryDto.setChannelType(EnumCouponSendSendType.CAR_STOP.getCode());
list = wxCouponActionLogMapper.sceneDataList(queryDto);
}else if (markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.B_MICROPAY.getCode())) {
queryDto.setChannelType(EnumCouponSendSendType.B_MICROPAY.getCode());
list = wxCouponActionLogMapper.sceneDataList(queryDto);
}else if (markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.COUPON_VERIFY.getCode())){
queryDto.setChannelType(EnumCouponSendSendType.COUPON_VERIFY.getCode());
list = wxCouponActionLogMapper.sceneDataList(queryDto);
}else if (markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.C_ORDER.getCode())){
queryDto.setChannelType(EnumCouponSendSendType.C_ORDER.getCode());
list = wxCouponActionLogMapper.sceneDataList(queryDto);
}else if (markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.MERCHANT.getCode())){
queryDto.setChannelType(markingCouponDataReportDto.getType());
list = wxCouponActionLogMapper.sceneDataList(queryDto);
}else{
PageHelper.clearPage();
list = new ArrayList<>();
}

Map<String, Integer> countMap = new HashMap<>();

params.clear();
params.put("tenantEntitys",tenantEntitys);
params.put("tenantId", tenantEntity.getTenantId());
if (StringUtils.isNotBlank(tenantEntity.getParentTenantId())) {
params.put("parentTenantId", tenantEntity.getParentTenantId());
}
if(markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.CAR_STOP.getCode())){ //停车
//停车发券被核销数
if (markingCouponDataReportDto.getStartTime() != null)
params.put("startTime", convertDateAndAdd(markingCouponDataReportDto.getStartTime(),0));
if (markingCouponDataReportDto.getEndTime() != null)
params.put("endTime", convertDateAndAdd(markingCouponDataReportDto.getEndTime(), 1));
params.put("channelType", EnumCouponSendSendType.CAR_STOP.getCode());
List<MarkingSceneDataReportVo> list1 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params);
countMap = list1.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getXTime, p -> p.getTempCount()));
} else if(markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.B_MICROPAY.getCode())){ // B端刷卡支付
//B端刷卡发券 被核销数
if (markingCouponDataReportDto.getStartTime() != null)
params.put("startTime", convertDateAndAdd(markingCouponDataReportDto.getStartTime(),0));
if (markingCouponDataReportDto.getEndTime() != null)
params.put("endTime", convertDateAndAdd(markingCouponDataReportDto.getEndTime(), 1));
params.put("channelType", EnumCouponSendSendType.B_MICROPAY.getCode());
List<MarkingSceneDataReportVo> list2 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params);
countMap = list2.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getXTime, p -> p.getTempCount()));
} else if (markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.COUPON_VERIFY.getCode())){
//核销发券被核销数
if (markingCouponDataReportDto.getStartTime() != null)
params.put("startTime", convertDateAndAdd(markingCouponDataReportDto.getStartTime(),0));
if (markingCouponDataReportDto.getEndTime() != null)
params.put("endTime", convertDateAndAdd(markingCouponDataReportDto.getEndTime(), 1));
params.put("channelType", EnumCouponSendSendType.COUPON_VERIFY.getCode());
List<MarkingSceneDataReportVo> list3 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params);
countMap = list3.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getXTime, p -> p.getTempCount()));
} else if (markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.C_ORDER.getCode())){
//购买发数
if (markingCouponDataReportDto.getStartTime() != null)
params.put("startTime", convertDateAndAdd(markingCouponDataReportDto.getStartTime(),0));
if (markingCouponDataReportDto.getEndTime() != null)
params.put("endTime", convertDateAndAdd(markingCouponDataReportDto.getEndTime(), 1));
params.put("channelType", EnumCouponSendSendType.C_ORDER.getCode());
List<MarkingSceneDataReportVo> list4 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params);
countMap = list4.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getXTime, p -> p.getTempCount()));
} else if (markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.MERCHANT.getCode())){
//购买发数
if (markingCouponDataReportDto.getStartTime() != null)
params.put("startTime", convertDateAndAdd(markingCouponDataReportDto.getStartTime(),0));
if (markingCouponDataReportDto.getEndTime() != null)
params.put("endTime", convertDateAndAdd(markingCouponDataReportDto.getEndTime(), 1));
params.put("channelType", markingCouponDataReportDto.getType());
List<MarkingSceneDataReportVo> list5 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params);
countMap = list5.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getXTime, p -> p.getTempCount()));
}
List<MarkingSceneDataVo> list = wxCouponActionLogService.sceneDataList(queryDto);

List<MarkingSceneDataReportVo> list1 = wxCouponActionLogService.sceneDataJoinCouponOrderList(params);
Map<String, Integer> countMap = list1.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getXTime, p -> p.getTempCount()));


Map<String, Integer> triggerCountMap = new HashMap<>();

params.clear();
params.put("tenantEntitys",tenantEntitys);
params.put("tenantId", tenantEntity.getTenantId());
if (StringUtils.isNotBlank(tenantEntity.getParentTenantId())) {
params.put("parentTenantId", tenantEntity.getParentTenantId());
}
if(markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.CAR_STOP.getCode())){ //停车
//获取车辆进场数
if (markingCouponDataReportDto.getStartTime() != null)
params.put("startTime", convertDateAndAdd(markingCouponDataReportDto.getStartTime(),0));
if (markingCouponDataReportDto.getEndTime() != null)
params.put("endTime", convertDateAndAdd(markingCouponDataReportDto.getEndTime(), 1));
params.put("cmdType", EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode());
params.put("cmdTypes", EnumCarCmd.getCarIn());
List<MarkingSceneDataVo> markingSceneDataVos = wxCarCmdLogMapper.queryForSceneRepotyHistoryCar(params);

triggerCountMap = markingSceneDataVos.stream().collect(Collectors.toMap(MarkingSceneDataVo::getXtime, p -> p.getTriggerCount()));
} else if(markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.B_MICROPAY.getCode())){ // B端刷卡支付发券
//获取B端刷卡数
if (markingCouponDataReportDto.getStartTime() != null)
params.put("startTime", convertDateAndAdd(markingCouponDataReportDto.getStartTime(),0));
if (markingCouponDataReportDto.getEndTime() != null)
params.put("endTime", convertDateAndAdd(markingCouponDataReportDto.getEndTime(), 1));
params.put("type", EnumOrderType.MICROPAY.getCode());
List<MarkingSceneDataVo> markingSceneDataVos = wxOrderMapper.queryForSceneRepotyHistory(params);
triggerCountMap = markingSceneDataVos.stream().collect(Collectors.toMap(MarkingSceneDataVo::getXtime, p -> p.getTriggerCount()));
} else if (markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.COUPON_VERIFY.getCode())) {
//获取核销数
if (markingCouponDataReportDto.getStartTime() != null)
params.put("startTime", convertDateAndAdd(markingCouponDataReportDto.getStartTime(),0));
if (markingCouponDataReportDto.getEndTime() != null)
params.put("endTime", convertDateAndAdd(markingCouponDataReportDto.getEndTime(), 1));
List<MarkingSceneDataVo> markingSceneDataVos = wxCouponOrderMapper.queryForSceneRepotyHistoryVerified(params);
triggerCountMap = markingSceneDataVos.stream().collect(Collectors.toMap(MarkingSceneDataVo::getXtime, p -> p.getTriggerCount()));
}else if (markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.C_ORDER.getCode())) {
//购买发券数
if (markingCouponDataReportDto.getStartTime() != null)
params.put("startTime", convertDateAndAdd(markingCouponDataReportDto.getStartTime(),0));
if (markingCouponDataReportDto.getEndTime() != null)
params.put("endTime", convertDateAndAdd(markingCouponDataReportDto.getEndTime(), 1));
List<MarkingSceneDataVo> markingSceneDataVos = wxCouponOrderMapper.queryForSceneRepotyHistoryOrdered(params);
triggerCountMap = markingSceneDataVos.stream().collect(Collectors.toMap(MarkingSceneDataVo::getXtime, p -> p.getTriggerCount()));
}else if (markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.MERCHANT.getCode())) {
//购买发券数
// if (markingCouponDataReportDto.getStartTime() != null)
// params.put("startTime", convertDateAndAdd(markingCouponDataReportDto.getStartTime(),0));
// if (markingCouponDataReportDto.getEndTime() != null)
// params.put("endTime", convertDateAndAdd(markingCouponDataReportDto.getEndTime(), 1));
// params.put("channelType", markingCouponDataReportDto.getType());
// List<MarkingSceneDataVo> markingSceneDataVos = wxCouponOrderMapper.queryForSceneRepotyMechantHistoryOrdered(params);
// triggerCountMap = markingSceneDataVos.stream().collect(Collectors.toMap(MarkingSceneDataVo::getXtime, p -> p.getTriggerCount()));

}
NumberFormat nf = NumberFormat.getPercentInstance();
nf.setMinimumFractionDigits(2);
@@ -522,10 +333,8 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
@Override
public Map<String, Object> getSceneDataHistory(TenantEntity tenantEntity, String startDate, String endDate) {
Map<String ,Object> result = new HashedMap();
List<TenantEntity> tenantEntitys = wxMallMapper.getTenantEntitys(tenantEntity);

MarkingCouponDataReportDto markingCouponDataReportDto = new MarkingCouponDataReportDto();
markingCouponDataReportDto.setTenantEntitys(tenantEntitys);
markingCouponDataReportDto.updateTenantInfo(tenantEntity);

Date starttime = DateUtils.stringToDate(startDate);
@@ -538,7 +347,7 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {

//停车发券
markingCouponDataReportDto.setChannelType(EnumCouponSendSendType.CAR_STOP.getCode());
List<MarkingSceneDataVo> carStopList = wxCouponActionLogMapper.sceneDataList(markingCouponDataReportDto);
List<MarkingSceneDataVo> carStopList = wxCouponActionLogService.sceneDataList(markingCouponDataReportDto);
Map<String, Integer> countMap = carStopList.stream().collect(Collectors.toMap(MarkingSceneDataVo::getXtime, p -> p.getSendCount()));
for (String date:days) {
historyMap.put(date.substring(5,date.length()).replace("-","/"),"0");
@@ -551,7 +360,7 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {

//核销发券
markingCouponDataReportDto.setChannelType(EnumCouponSendSendType.COUPON_VERIFY.getCode());
List<MarkingSceneDataVo> couponVerifyList = wxCouponActionLogMapper.sceneDataList(markingCouponDataReportDto);
List<MarkingSceneDataVo> couponVerifyList = wxCouponActionLogService.sceneDataList(markingCouponDataReportDto);
countMap = couponVerifyList.stream().collect(Collectors.toMap(MarkingSceneDataVo::getXtime, p -> p.getSendCount()));
historyMap = new TreeMap<>();
for (String date:days) {
@@ -565,7 +374,7 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {

//交易发券
markingCouponDataReportDto.setChannelType(EnumCouponSendSendType.C_ORDER.getCode());
List<MarkingSceneDataVo> orderList = wxCouponActionLogMapper.sceneDataList(markingCouponDataReportDto);
List<MarkingSceneDataVo> orderList = wxCouponActionLogService.sceneDataList(markingCouponDataReportDto);
countMap = orderList.stream().collect(Collectors.toMap(MarkingSceneDataVo::getXtime, p -> p.getSendCount()));
historyMap = new TreeMap<>();
for (String date:days) {
@@ -579,7 +388,7 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {

//收银台发券
markingCouponDataReportDto.setChannelType(EnumCouponSendSendType.B_MICROPAY.getCode());
List<MarkingSceneDataVo> micropayList = wxCouponActionLogMapper.sceneDataList(markingCouponDataReportDto);
List<MarkingSceneDataVo> micropayList = wxCouponActionLogService.sceneDataList(markingCouponDataReportDto);
countMap = micropayList.stream().collect(Collectors.toMap(MarkingSceneDataVo::getXtime, p -> p.getSendCount()));
historyMap = new TreeMap<>();
for (String date:days) {
@@ -593,7 +402,7 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {

//商户发券
markingCouponDataReportDto.setChannelType(EnumCouponSendSendType.MERCHANT.getCode());
List<MarkingSceneDataVo> merchantList = wxCouponActionLogMapper.sceneDataList(markingCouponDataReportDto);
List<MarkingSceneDataVo> merchantList = wxCouponActionLogService.sceneDataList(markingCouponDataReportDto);
countMap = merchantList.stream().collect(Collectors.toMap(MarkingSceneDataVo::getXtime, p -> p.getSendCount()));
historyMap = new TreeMap<>();
for (String date:days) {


+ 0
- 1
mallinkService/src/main/java/com/iformall/service/impl/WxCarCmdLogServiceImpl.java View File

@@ -82,7 +82,6 @@ public class WxCarCmdLogServiceImpl implements WxCarCmdLogService {
if(StringUtils.isBlank(wxCarCmdLog.getTenantId())
&& StringUtils.isNotBlank(wxCarCmdLog.getParentTenantId())){
List<TenantEntity> tenantEntitys = wxMallMapper.getTenantEntitys(wxCarCmdLog);
int count = 0;
Map<String, Integer> map = new HashMap<>();
for (TenantEntity tenantEntity:tenantEntitys) {
wxCarCmdLog.updateTenantInfo(tenantEntity);


+ 5
- 7
mallinkService/src/main/java/com/iformall/service/impl/WxChartServiceImpl.java View File

@@ -65,6 +65,8 @@ public class WxChartServiceImpl implements WxChartDataService {
@Autowired
WxCUserCarMapper wxCUserCarMapper;
@Autowired
WxCouponActionLogService wxCouponActionLogService;
@Autowired
WxCouponActionLogMapper wxCouponActionLogMapper;
@Autowired
WxCUserMapper wxCUserMapper;
@@ -977,9 +979,7 @@ public class WxChartServiceImpl implements WxChartDataService {
*/
private ResultData getCarPayCarCountInWeek(TenantEntity tenantEntity) {
HashMap<String, Object> datamap = new HashMap<>();
List<TenantEntity> tenantEntitys = wxMallMapper.getTenantEntitys(tenantEntity);
HashMap<String, Object> weekParams = new HashMap<>();
weekParams.put("tenantEntitys", tenantEntitys);
weekParams.put("tenantId", tenantEntity.getTenantId());
if (StringUtils.isNotBlank(tenantEntity.getParentTenantId())) {
weekParams.put("parentTenantId", tenantEntity.getParentTenantId());
@@ -1040,7 +1040,6 @@ public class WxChartServiceImpl implements WxChartDataService {
* @return
*/
private ResultData getCarNewMemberCount(TenantEntity tenantEntity) {
List<TenantEntity> tenantEntitys = wxMallMapper.getTenantEntitys(tenantEntity);
HashMap<String, Object> datamap = new HashMap<>();
String oneWeekStartdate = DateUtils.getTimeBefore(7, new Date());
String oneWeekEndDate = DateUtils.getTimeBefore(1, new Date());
@@ -1187,10 +1186,9 @@ public class WxChartServiceImpl implements WxChartDataService {
*/
private ResultData getSaleSceneCount(TenantEntity tenantEntity) {
HashMap<String, Object> datamap = new HashMap<>();
List<TenantEntity> tenantEntitys = wxMallMapper.getTenantEntitys(tenantEntity);
int todaySceneCount = wxCouponActionLogMapper.getCountByDateLimit(tenantEntitys,tenantEntity.getTenantId(), tenantEntity.getParentTenantId(), addDay(0), addDay(1));
int yesterdayCount = wxCouponActionLogMapper.getCountByDateLimit(tenantEntitys,tenantEntity.getTenantId(), tenantEntity.getParentTenantId(), addDay(-1), addDay(0));
int lastWeekCount = wxCouponActionLogMapper.getCountByDateLimit(tenantEntitys,tenantEntity.getTenantId(), tenantEntity.getParentTenantId(), addDay(-7), addDay(-6));
int todaySceneCount = wxCouponActionLogService.getCountByDateLimit(tenantEntity, addDay(0), addDay(1));
int yesterdayCount = wxCouponActionLogService.getCountByDateLimit(tenantEntity, addDay(-1), addDay(0));
int lastWeekCount = wxCouponActionLogService.getCountByDateLimit(tenantEntity, addDay(-7), addDay(-6));
NumberFormat nf = NumberFormat.getPercentInstance();
nf.setMinimumFractionDigits(2);//控制保留小数点后几位,2:表示保留2位小数点
String sceneDownDay = "--";


+ 71
- 0
mallinkService/src/main/java/com/iformall/service/impl/WxCouponActionLogServiceImpl.java View File

@@ -2,17 +2,24 @@ package com.iformall.service.impl;

import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.iformall.common.ErrorCode;
import com.iformall.domain.dto.MarkingCouponDataReportDto;
import com.iformall.domain.po.base.BaseEntity;
import com.iformall.domain.po.base.TenantEntity;
import com.iformall.domain.po.WxCouponActionLog;
import com.iformall.domain.vo.MarkingSceneDataReportTVo;
import com.iformall.domain.vo.MarkingSceneDataReportVo;
import com.iformall.domain.vo.MarkingSceneDataVo;
import com.iformall.domain.vo.WxCouponActionLogVo;
import com.iformall.exception.MallinkException;
import com.iformall.mapper.WxCouponActionLogMapper;
import com.iformall.mapper.WxMallMapper;
import com.iformall.service.WxCouponActionLogService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -27,6 +34,9 @@ public class WxCouponActionLogServiceImpl implements WxCouponActionLogService {
@Autowired
WxCouponActionLogMapper wxCouponActionLogMapper;

@Autowired
WxMallMapper wxMallMapper;


@Override
public PageInfo<WxCouponActionLog> listAsPage(WxCouponActionLog record, Integer pageIndex, Integer pageSize) {
@@ -86,4 +96,65 @@ public class WxCouponActionLogServiceImpl implements WxCouponActionLogService {
return PageHelper.startPage(pageNum, pageSize).doSelectPageInfo(() -> wxCouponActionLogMapper.getActionLog(params));
}

@Override
public int getCountByDateLimit(TenantEntity tenantEntity, Date startTime, Date endTime) {
if(StringUtils.isBlank(tenantEntity.getTenantId())
&& StringUtils.isNotBlank(tenantEntity.getParentTenantId())){
List<TenantEntity> tenantEntitys = wxMallMapper.getTenantEntitys(tenantEntity);
int count = 0;
for (TenantEntity te:tenantEntitys) {
count += wxCouponActionLogMapper.getCountByDateLimit(te.getTenantId(),startTime,endTime);
}
return count;
}
return wxCouponActionLogMapper.getCountByDateLimit(tenantEntity.getTenantId(),startTime,endTime);
}

@Override
public void updateCreateTimeMd(TenantEntity tenantEntity) {
if(StringUtils.isBlank(tenantEntity.getTenantId())
&& StringUtils.isNotBlank(tenantEntity.getParentTenantId())){
List<TenantEntity> tenantEntitys = wxMallMapper.getTenantEntitys(tenantEntity);
for (TenantEntity te:tenantEntitys) {
wxCouponActionLogMapper.updateCreateTimeMd(te.getTenantId());
}
}
wxCouponActionLogMapper.updateCreateTimeMd(tenantEntity.getTenantId());
}

@Override
public Map<String, Integer> getSceneDataMap(TenantEntity tenantEntity, Date startTime, Date endTime) {
if(StringUtils.isBlank(tenantEntity.getTenantId())
&& StringUtils.isNotBlank(tenantEntity.getParentTenantId())){
List<TenantEntity> tenantEntitys = wxMallMapper.getTenantEntitys(tenantEntity);
Map<String, Integer> map = new HashMap<>();
for (TenantEntity te:tenantEntitys) {
List<MarkingSceneDataReportTVo> sceneDataMap = wxCouponActionLogMapper.getSceneDataMap(te.getTenantId(), startTime, endTime);
Map<String, Integer> collect = sceneDataMap.stream().collect(Collectors.toMap(m -> {
return m.getXTime()+"_"+m.getChannelType();
}, m -> {
return m.getCount();
}));
collect.forEach((key,value) -> map.merge(key,value,Integer::sum));
}
return map;
}
List<MarkingSceneDataReportTVo> sceneDataMap = wxCouponActionLogMapper.getSceneDataMap(tenantEntity.getTenantId(), startTime, endTime);
return sceneDataMap.stream().collect(Collectors.toMap(m -> {
return m.getXTime()+"_"+m.getChannelType();
}, m -> {
return m.getCount();
}));
}

@Override
public List<MarkingSceneDataVo> sceneDataList(MarkingCouponDataReportDto queryDto) {
return wxCouponActionLogMapper.sceneDataList(queryDto);
}

@Override
public List<MarkingSceneDataReportVo> sceneDataJoinCouponOrderList(HashMap<String, Object> params) {
return wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params);
}

}

+ 8
- 9
mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml View File

@@ -153,18 +153,17 @@
</select>

<select id="queryForSceneRepotyHistoryCar" resultType="com.iformall.domain.vo.MarkingSceneDataVo" parameterType="hashmap">
select DATE_FORMAT(ccl.create_date,'%Y-%m-%d') xTime, count(ccl.id) triggerCount
from wx_c_user_car cuc, (<foreach collection="tenantEntitys" item="tenantEntity" index="index" separator="union all">
SELECT * from wx_car_cmd_log${tenantEntity.shardTableSuffix}
</foreach>) ccl
where ccl.plateNumber = cuc.car_number and cmd_type=#{cmdType}
select DATE_FORMAT(create_date,'%Y-%m-%d') xTime, count(id) triggerCount
from wx_car_cmd_log
where cmd_type in
<foreach collection="cmdTypes" index="index" item="cmdTypeItem" open="(" separator="," close=")">
#{cmdTypeItem}
</foreach>
<if test=" null != tenantId and '' != tenantId">
and cuc.`tenant_id` = #{tenantId}
and ccl.`tenant_id` = #{tenantId}
and `tenant_id` = #{tenantId}
</if>
<if test=" null != parentTenantId and '' != parentTenantId">
and cuc.`parent_tenant_id` = #{parentTenantId}
and ccl.`parent_tenant_id` = #{parentTenantId}
and `parent_tenant_id` = #{parentTenantId}
</if>

<if test=" null != startTime and null != endTime">


+ 7
- 31
mallinkService/src/main/resources/mapper/WxCouponActionLogMapper.xml View File

@@ -153,16 +153,9 @@

<select id="getSceneDataMap" resultType="com.iformall.domain.vo.MarkingSceneDataReportTVo" parameterType="hashmap">
select create_time_md as xTime, channel_type, count(create_time_md + '' + channel_type) as count
from (<foreach collection="tenantEntitys" item="tenantEntity" index="index" separator="union all">
SELECT * from wx_coupon_action_log${tenantEntity.shardTableSuffix}
</foreach>) wx_coupon_action_log
from wx_coupon_action_log
where channel_type in (2,3,4,5)
<if test=" null != tenantId and '' != tenantId">
and `tenant_id` = #{tenantId}
</if>
<if test=" null != parentTenantId and '' != parentTenantId">
and `parent_tenant_id` = #{parentTenantId}
</if>
and create_time &gt;= #{startTime}
and create_time &lt;= #{endTime}
group by create_time_md, channel_type
@@ -172,13 +165,7 @@
<update id="updateCreateTimeMd" parameterType="hashmap">
update wx_coupon_action_log
set create_time_md = DATE_FORMAT(create_time,'%m/%d')
where 1=1
<if test=" null != tenantId and '' != tenantId">
and `tenant_id` = #{tenantId}
</if>
<if test=" null != parentTenantId and '' != parentTenantId">
and `parent_tenant_id` = #{parentTenantId}
</if>
where `tenant_id` = #{tenantId}
</update>

<select id="sceneDataMapJoinCouponOrder" resultType="com.iformall.domain.vo.MarkingSceneDataReportVo" parameterType="hashmap">
@@ -232,13 +219,9 @@
parameterType="hashmap">
select DATE_FORMAT(cal.create_time,'%Y-%m-%d') AS xTime,
COUNT(co.id) as tempCount
from (<foreach collection="tenantEntitys" item="tenantEntity" index="index" separator="union all">
SELECT * from wx_coupon_action_log${tenantEntity.shardTableSuffix}
</foreach>) cal
left join (<foreach collection="tenantEntitys" item="tenantEntity" index="index" separator="union all">
SELECT * from wx_coupon_order${tenantEntity.shardTableSuffix}
</foreach>) co on cal.coupon_order_id=co.id
where co.coupon_order_status = 1
from wx_coupon_action_log cal
left join wx_coupon_order co on cal.coupon_order_id=co.id
where co.coupon_order_status = 1
<if test=" null != tenantId and '' != tenantId">
and cal.`tenant_id` = #{tenantId}
</if>
@@ -258,17 +241,10 @@


<select id="getCountByDateLimit" resultType="java.lang.Integer">
select COUNT(*) FROM (<foreach collection="tenantEntitys" item="tenantEntity" index="index" separator="union all">
SELECT * from wx_coupon_action_log${tenantEntity.shardTableSuffix}
</foreach>) wx_coupon_action_log
select COUNT(*) FROM wx_coupon_action_log
where `channel_type` != 0
and `channel_type` != 1
<if test=" null != tenantId and '' != tenantId">
and `tenant_id` = #{tenantId}
</if>
<if test=" null != parentTenantId and '' != parentTenantId">
and `parent_tenant_id` = #{parentTenantId}
</if>
and `tenant_id` = #{tenantId}
and `create_time` &gt;= #{startTime}
and `create_time` &lt;= #{endTime}
</select>


+ 7
- 1
mallinkService/src/main/resources/mapper/WxMallMapper.xml View File

@@ -221,7 +221,13 @@


<select id="getTenantEntitys" parameterType="com.iformall.domain.po.base.TenantEntity" resultType="com.iformall.domain.po.base.TenantEntity">
select `tenant_id`,`parent_tenant_id` from wx_mall where `parent_tenant_id` = #{parentTenantId}
select `tenant_id`,`parent_tenant_id` from wx_mall where 1=1
<if test=" null != tenantId and '' != tenantId">
and `tenant_id` = #{tenantId}
</if>
<if test=" null != parentTenantId and '' != parentTenantId">
and `parent_tenant_id` = #{parentTenantId}
</if>
</select>

<select id="findListAadmin" parameterType="com.iformall.domain.po.WxMall" resultMap="BaseResultMap">


Loading…
Cancel
Save