Browse Source

[营销报表][修改] 添加返回列表

release_toaliyun_real
masterspirit 7 years ago
parent
commit
f90a009aff
14 changed files with 457 additions and 61 deletions
  1. +9
    -0
      mallinkAdmin/src/main/java/com/simple/controller/MarkingDataReportController.java
  2. +37
    -0
      mallinkService/src/main/java/com/simple/domain/dto/MarkingCouponDataReportDto.java
  3. +36
    -0
      mallinkService/src/main/java/com/simple/domain/dto/MarkingSceneDataReportDto.java
  4. +74
    -0
      mallinkService/src/main/java/com/simple/domain/dto/TouchUsersReportVo.java
  5. +22
    -4
      mallinkService/src/main/java/com/simple/domain/vo/MarkingSceneDataReportVo.java
  6. +54
    -0
      mallinkService/src/main/java/com/simple/domain/vo/MarkingSceneDataVo.java
  7. +3
    -0
      mallinkService/src/main/java/com/simple/mapper/WxCarCmdLogMapper.java
  8. +5
    -0
      mallinkService/src/main/java/com/simple/mapper/WxCouponActionLogMapper.java
  9. +3
    -0
      mallinkService/src/main/java/com/simple/mapper/WxCouponOrderMapper.java
  10. +10
    -0
      mallinkService/src/main/java/com/simple/service/MarkingDataReportService.java
  11. +178
    -52
      mallinkService/src/main/java/com/simple/service/impl/MarkingDataReportServiceImpl.java
  12. +7
    -0
      mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml
  13. +9
    -5
      mallinkService/src/main/resources/mapper/WxCouponActionLogMapper.xml
  14. +10
    -0
      mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml

+ 9
- 0
mallinkAdmin/src/main/java/com/simple/controller/MarkingDataReportController.java View File

@@ -2,12 +2,14 @@ package com.simple.controller;

import com.simple.common.Result;
import com.simple.common.ResultData;
import com.simple.domain.dto.MarkingCouponDataReportDto;
import com.simple.service.MarkingDataReportService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@@ -32,5 +34,12 @@ public class MarkingDataReportController extends BaseController {
return new ResultData(markingDataReportService.getSceneData(getTenantId()));
}

@ApiOperation("查询券数据列表")
@GetMapping("/couponDataList")
public ResultData findCouponDataList(@ModelAttribute MarkingCouponDataReportDto markingCouponDataReportDto) {
return new ResultData(markingDataReportService.getCouponDateList(getTenantId(),markingCouponDataReportDto));
}



}

+ 37
- 0
mallinkService/src/main/java/com/simple/domain/dto/MarkingCouponDataReportDto.java View File

@@ -0,0 +1,37 @@
package com.simple.domain.dto;

import java.util.Date;

/**
* Created by syf on 2018/8/30.
*/
public class MarkingCouponDataReportDto {

private Date startTime;
private Date endTime;
private Integer type;

public Integer getType() {
return type;
}

public void setType(Integer type) {
this.type = type;
}

public Date getStartTime() {
return startTime;
}

public void setStartTime(Date startTime) {
this.startTime = startTime;
}

public Date getEndTime() {
return endTime;
}

public void setEndTime(Date endTime) {
this.endTime = endTime;
}
}

+ 36
- 0
mallinkService/src/main/java/com/simple/domain/dto/MarkingSceneDataReportDto.java View File

@@ -0,0 +1,36 @@
package com.simple.domain.dto;

import java.util.Date;

/**
* Created by syf on 2018/8/30.
*/
public class MarkingSceneDataReportDto {
private Date startTime;
private Date endTime;
private Integer type;

public Integer getType() {
return type;
}

public void setType(Integer type) {
this.type = type;
}

public Date getStartTime() {
return startTime;
}

public void setStartTime(Date startTime) {
this.startTime = startTime;
}

public Date getEndTime() {
return endTime;
}

public void setEndTime(Date endTime) {
this.endTime = endTime;
}
}

+ 74
- 0
mallinkService/src/main/java/com/simple/domain/dto/TouchUsersReportVo.java View File

@@ -0,0 +1,74 @@
package com.simple.domain.dto;

/**
* Created by syf on 2018/8/30.
*/
public class TouchUsersReportVo {
private String xTime;
private int uv;
private int pv;

private int userCount; //领取人数
private int couponCount; //领取券数
private int verifyUserCount; //核销人数

public int getVerifyCount() {
return verifyCount;
}

public void setVerifyCount(int verifyCount) {
this.verifyCount = verifyCount;
}

private int verifyCount; //核销量

public String getxTime() {
return xTime;
}

public void setxTime(String xTime) {
this.xTime = xTime;
}

public int getUv() {
return uv;
}

public void setUv(int uv) {
this.uv = uv;
}

public int getPv() {
return pv;
}

public void setPv(int pv) {
this.pv = pv;
}

public int getUserCount() {
return userCount;
}

public void setUserCount(int userCount) {
this.userCount = userCount;
}

public int getCouponCount() {
return couponCount;
}

public void setCouponCount(int couponCount) {
this.couponCount = couponCount;
}

public int getVerifyUserCount() {
return verifyUserCount;
}

public void setVerifyUserCount(int verifyUserCount) {
this.verifyUserCount = verifyUserCount;
}


}

+ 22
- 4
mallinkService/src/main/java/com/simple/domain/vo/MarkingSceneDataReportVo.java View File

@@ -6,11 +6,13 @@ package com.simple.domain.vo;
public class MarkingSceneDataReportVo {

private String xTime;
private int parkSendCount;
private int verifySendCount;
private int parkCount;
private int verifyCount;
private int parkSendCount; //停车发放
private int verifySendCount; //核销发放
private int parkCount; //停车核销数
private int verifyCount; //核销 核销数
private int tempCount;
private Integer carCount; //车辆进场数
private String verifyPercent;

public int getTempCount() {
return tempCount;
@@ -59,4 +61,20 @@ public class MarkingSceneDataReportVo {
public void setVerifyCount(int verifyCount) {
this.verifyCount = verifyCount;
}

public Integer getCarCount() {
return carCount;
}

public void setCarCount(Integer carCount) {
this.carCount = carCount;
}

public String getVerifyPercent() {
return verifyPercent;
}

public void setVerifyPercent(String verifyPercent) {
this.verifyPercent = verifyPercent;
}
}

+ 54
- 0
mallinkService/src/main/java/com/simple/domain/vo/MarkingSceneDataVo.java View File

@@ -0,0 +1,54 @@
package com.simple.domain.vo;

/**
* Created by syf on 2018/8/30.
*
* 场景营销数据VO
*/
public class MarkingSceneDataVo {
private int carCount; //进车数量
private int sendCount; //发券数
private int verifyCount; //核销数
private String verifyPercent; //核销比
private String xTime; //时间

public int getCarCount() {
return carCount;
}

public void setCarCount(int carCount) {
this.carCount = carCount;
}

public int getSendCount() {
return sendCount;
}

public void setSendCount(int sendCount) {
this.sendCount = sendCount;
}

public int getVerifyCount() {
return verifyCount;
}

public void setVerifyCount(int verifyCount) {
this.verifyCount = verifyCount;
}

public String getVerifyPercent() {
return verifyPercent;
}

public void setVerifyPercent(String verifyPercent) {
this.verifyPercent = verifyPercent;
}

public String getxTime() {
return xTime;
}

public void setxTime(String xTime) {
this.xTime = xTime;
}
}

+ 3
- 0
mallinkService/src/main/java/com/simple/mapper/WxCarCmdLogMapper.java View File

@@ -2,6 +2,7 @@ package com.simple.mapper;

import com.simple.common.CommonMapper;
import com.simple.domain.po.WxCarCmdLog;
import com.simple.domain.vo.MarkingSceneDataVo;

import java.util.HashMap;
import java.util.List;
@@ -14,4 +15,6 @@ public interface WxCarCmdLogMapper extends CommonMapper<WxCarCmdLog, Long> {
List<Map<String,Object>> queryHistory(HashMap<Object,Object> params);

List<Map<String, Object>> queryTodayCar(HashMap<Object,Object> params);

List<MarkingSceneDataVo> queryForSceneRepotyHistoryCar(HashMap<String,Object> params);
}

+ 5
- 0
mallinkService/src/main/java/com/simple/mapper/WxCouponActionLogMapper.java View File

@@ -19,7 +19,12 @@ public interface WxCouponActionLogMapper extends CommonMapper<WxCouponActionLog,
int findCountByDateLimit(@Param("tenantId")String tenantId,@Param("startTime") Date startTime,@Param("endTime")Date endTime);

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

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

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

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



+ 3
- 0
mallinkService/src/main/java/com/simple/mapper/WxCouponOrderMapper.java View File

@@ -26,6 +26,9 @@ public interface WxCouponOrderMapper extends CommonMapper<WxCouponOrder, Long> {

List<MarkingCouponDataReportVo> couponDataMap(HashMap<String,Object> params);

List<MarkingCouponDataReportVo> couponDataList(HashMap<String,Object> params); //返回日期格式yy-MM-dd



/**
* 查询商场领券数


+ 10
- 0
mallinkService/src/main/java/com/simple/service/MarkingDataReportService.java View File

@@ -1,5 +1,11 @@
package com.simple.service;

import com.simple.domain.dto.MarkingCouponDataReportDto;
import com.simple.domain.vo.MarkingCouponDataReportVo;
import com.simple.domain.vo.MarkingSceneDataReportVo;
import com.simple.domain.vo.MarkingSceneDataVo;

import java.util.List;
import java.util.Map;

/**
@@ -9,4 +15,8 @@ public interface MarkingDataReportService {
Map<String,Object> getCouponDate(String tenantId);

Map<String,Object> getSceneData(String tenantId);

List<MarkingCouponDataReportVo> getCouponDateList(String tenantId, MarkingCouponDataReportDto markingCouponDataReportDto);

List<MarkingSceneDataVo> getSceneDataList(String tenantId, MarkingCouponDataReportDto markingCouponDataReportDto);
}

+ 178
- 52
mallinkService/src/main/java/com/simple/service/impl/MarkingDataReportServiceImpl.java View File

@@ -1,7 +1,10 @@
package com.simple.service.impl;

import com.simple.domain.dto.MarkingCouponDataReportDto;
import com.simple.domain.vo.MarkingCouponDataReportVo;
import com.simple.domain.vo.MarkingSceneDataReportVo;
import com.simple.domain.vo.MarkingSceneDataVo;
import com.simple.mapper.WxCarCmdLogMapper;
import com.simple.mapper.WxCouponActionLogMapper;
import com.simple.mapper.WxCouponOrderMapper;
import com.simple.service.MarkingDataReportService;
@@ -23,9 +26,11 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
private WxCouponOrderMapper wxCouponOrderMapper;
@Autowired
private WxCouponActionLogMapper wxCouponActionLogMapper;
@Autowired
private WxCarCmdLogMapper wxCarCmdLogMapper;

//取本月第一天
private Date getFirstDayOfMonth(){
private Date getFirstDayOfMonth() {
Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH, 0);//设置为1号,当前日期既为本月第一天
c.set(Calendar.HOUR_OF_DAY, 0);
@@ -35,7 +40,8 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
Date thisMonth = c.getTime();
return thisMonth;
}
private Date addDay(int addDayAmount){

private Date addDay(int addDayAmount) {
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, addDayAmount);
c.set(Calendar.HOUR_OF_DAY, 0);
@@ -45,107 +51,227 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
Date date = c.getTime();
return date;
}

/**
* @param date 转换当前时间去掉时分秒
* @return
*/
private Date convertDate(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
Date result = c.getTime();
return date;
}

private Date convertDateAndAdd(Date date, int addDayAmount) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DATE, addDayAmount);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
Date result = c.getTime();
return date;
}

//取的当月券数据
@Override
public Map<String,Object> getCouponDate(String tenantId){
public Map<String, Object> getCouponDate(String tenantId) {
//今日领取券数
//查询coupon order表
int todayCouponCount = wxCouponOrderMapper.findCountByDateLimit(tenantId,addDay(0),addDay(1));
int yesterdayCount = wxCouponOrderMapper.findCountByDateLimit(tenantId,addDay(-1),addDay(0));
int lastWeekCount = wxCouponOrderMapper.findCountByDateLimit(tenantId,addDay(-7),addDay(-6));
int todayCouponCount = wxCouponOrderMapper.findCountByDateLimit(tenantId, addDay(0), addDay(1));
int yesterdayCount = wxCouponOrderMapper.findCountByDateLimit(tenantId, addDay(-1), addDay(0));
int lastWeekCount = wxCouponOrderMapper.findCountByDateLimit(tenantId, addDay(-7), addDay(-6));

NumberFormat nf = NumberFormat.getPercentInstance();
nf.setMinimumFractionDigits(2);//控制保留小数点后几位,2:表示保留2位小数点
String couponUpDay ="";
if(yesterdayCount!=0) {
String couponUpDay = "";
if (yesterdayCount != 0) {
couponUpDay = nf.format((todayCouponCount - yesterdayCount) / (float) yesterdayCount);
}else{
} else {
couponUpDay = nf.format(todayCouponCount);
}
String couponUpWeek ="";
if(lastWeekCount!=0) {
String couponUpWeek = "";
if (lastWeekCount != 0) {
couponUpWeek = nf.format((todayCouponCount - lastWeekCount) / (float) lastWeekCount);
}else{
} else {
couponUpWeek = nf.format(todayCouponCount);
}

//couponData
HashMap<String, Object> params = new HashMap<>();
params.put("tenantId",tenantId);
params.put("startTime",getFirstDayOfMonth());
params.put("endTime",addDay(1));
List<MarkingCouponDataReportVo> couponDatalist=wxCouponOrderMapper.couponDataMap(params);
params.put("tenantId", tenantId);
params.put("startTime", getFirstDayOfMonth());
params.put("endTime", addDay(1));
List<MarkingCouponDataReportVo> couponDatalist = wxCouponOrderMapper.couponDataMap(params);
//查询券领取人数

HashMap<String,Object> returnMap = new HashMap<>();
returnMap.put("couponUpDay",couponUpDay);//比昨日提升
returnMap.put("couponUpWeek",couponUpWeek);//比上周提升
returnMap.put("todayCouponCount",todayCouponCount);//今日领取数
returnMap.put("couponDataMap",couponDatalist);
HashMap<String, Object> returnMap = new HashMap<>();
returnMap.put("couponUpDay", couponUpDay);//比昨日提升
returnMap.put("couponUpWeek", couponUpWeek);//比上周提升
returnMap.put("todayCouponCount", todayCouponCount);//今日领取数
returnMap.put("couponDataMap", couponDatalist);
return returnMap;
}


@Override
public Map<String,Object> getSceneData(String tenantId){
public Map<String, Object> getSceneData(String tenantId) {
//今日营销投放券数
int todaySceneCount = wxCouponActionLogMapper.findCountByDateLimit(tenantId,addDay(0),addDay(1));
int yesterdayCount = wxCouponActionLogMapper.findCountByDateLimit(tenantId,addDay(-1),addDay(0));
int lastWeekCount = wxCouponActionLogMapper.findCountByDateLimit(tenantId,addDay(-7),addDay(-6));
int todaySceneCount = wxCouponActionLogMapper.findCountByDateLimit(tenantId, addDay(0), addDay(1));
int yesterdayCount = wxCouponActionLogMapper.findCountByDateLimit(tenantId, addDay(-1), addDay(0));
int lastWeekCount = wxCouponActionLogMapper.findCountByDateLimit(tenantId, addDay(-7), addDay(-6));

NumberFormat nf = NumberFormat.getPercentInstance();
nf.setMinimumFractionDigits(2);//控制保留小数点后几位,2:表示保留2位小数点
String sceneDownDay ="";
if(yesterdayCount!=0) {
sceneDownDay = nf.format((yesterdayCount-todaySceneCount) / (float) yesterdayCount);
}else{
sceneDownDay = nf.format(0-todaySceneCount);
String sceneDownDay = "";
if (yesterdayCount != 0) {
sceneDownDay = nf.format((yesterdayCount - todaySceneCount) / (float) yesterdayCount);
} else {
sceneDownDay = nf.format(0 - todaySceneCount);
}
String sceneUpWeek ="";
if(lastWeekCount!=0) {
String sceneUpWeek = "";
if (lastWeekCount != 0) {
sceneUpWeek = nf.format((todaySceneCount - lastWeekCount) / (float) lastWeekCount);
}else{
} else {
sceneUpWeek = nf.format(todaySceneCount);
}

HashMap<String, Object> params = new HashMap<>();
params.put("tenantId",tenantId);
params.put("startTime",getFirstDayOfMonth());
params.put("endTime",addDay(1));
params.put("tenantId", tenantId);
params.put("startTime", getFirstDayOfMonth());
params.put("endTime", addDay(1));
//停车发券数 停车发券被核销数 核销发券数 核销发券被核销数
List<MarkingSceneDataReportVo> list = wxCouponActionLogMapper.sceneDataMap(params);

//停车发券被核销数
HashMap<String, Object> params1 = new HashMap<>();
params1.put("tenantId",tenantId);
params1.put("startTime",getFirstDayOfMonth());
params1.put("endTime",addDay(1));
params1.put("channelType",3);//停车
params1.put("tenantId", tenantId);
params1.put("startTime", getFirstDayOfMonth());
params1.put("endTime", addDay(1));
params1.put("channelType", 3);//停车
List<MarkingSceneDataReportVo> list1 = wxCouponActionLogMapper.sceneDataMapJoinCouponOrder(params1);
Map<String,Integer> parkCountMap = list1.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getxTime, p->p.getTempCount()));
Map<String, Integer> parkCountMap = list1.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getxTime, p -> p.getTempCount()));
//核销发券被核销数
HashMap<String, Object> params2 = new HashMap<>();
params2.put("tenantId",tenantId);
params2.put("startTime",getFirstDayOfMonth());
params2.put("endTime",addDay(1));
params2.put("channelType",4);//核销
params2.put("tenantId", tenantId);
params2.put("startTime", getFirstDayOfMonth());
params2.put("endTime", addDay(1));
params2.put("channelType", 4);//核销
List<MarkingSceneDataReportVo> list2 = wxCouponActionLogMapper.sceneDataMapJoinCouponOrder(params2);
Map<String,Integer> verifyCountMap = list2.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getxTime, p->p.getTempCount()));
Map<String, Integer> verifyCountMap = list2.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getxTime, p -> p.getTempCount()));

for (MarkingSceneDataReportVo vo:list) {
for (MarkingSceneDataReportVo vo : list) {
vo.setParkCount(parkCountMap.get(vo.getxTime()) == null ? 0 : parkCountMap.get(vo.getxTime()));
vo.setVerifyCount(verifyCountMap.get(vo.getxTime()) == null ? 0 : verifyCountMap.get(vo.getxTime()));
}


HashMap<String,Object> returnMap = new HashMap<>();
returnMap.put("sceneDownDay",sceneDownDay);//比昨日下降
returnMap.put("sceneUpWeek",sceneUpWeek);//比上周提升
returnMap.put("todaySceneCount",todaySceneCount);//今日领取数
returnMap.put("sceneDataMap",list);
HashMap<String, Object> returnMap = new HashMap<>();
returnMap.put("sceneDownDay", sceneDownDay);//比昨日下降
returnMap.put("sceneUpWeek", sceneUpWeek);//比上周提升
returnMap.put("todaySceneCount", todaySceneCount);//今日领取数
returnMap.put("sceneDataMap", list);
return returnMap;
}

@Override
public List<MarkingCouponDataReportVo> getCouponDateList(String tenantId, MarkingCouponDataReportDto markingCouponDataReportDto) {
HashMap<String, Object> params = new HashMap<>();
params.put("tenantId", tenantId);
params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime()));
params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1));
List<MarkingCouponDataReportVo> couponDatalist = wxCouponOrderMapper.couponDataList(params);
return couponDatalist;
}

@Override
public List<MarkingSceneDataVo> getSceneDataList(String tenantId, MarkingCouponDataReportDto markingCouponDataReportDto) {
HashMap<String, Object> params = new HashMap<>();
params.put("tenantId", tenantId);
params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime()));
params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1));
//停车发券数 停车发券被核销数 核销发券数 核销发券被核销数
List<MarkingSceneDataReportVo> templist = wxCouponActionLogMapper.sceneDataMap(params);

List<MarkingSceneDataVo> list = new ArrayList<>();
for (MarkingSceneDataReportVo temp: templist) {
MarkingSceneDataVo vo = new MarkingSceneDataVo();
vo.setxTime(temp.getxTime());
if(markingCouponDataReportDto.getType()==1) {
vo.setSendCount(temp.getParkSendCount());
}else{
vo.setSendCount(temp.getVerifySendCount());
}
}


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

if(markingCouponDataReportDto.getType()==1){ //停车
//停车发券被核销数
HashMap<String, Object> params1 = new HashMap<>();
params1.put("tenantId", tenantId);
params1.put("startTime", convertDate(markingCouponDataReportDto.getStartTime()));
params1.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1));
params1.put("channelType", 3);//停车
List<MarkingSceneDataReportVo> list1 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params1);
countMap = list1.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getxTime, p -> p.getTempCount()));
}else{
//核销发券被核销数
HashMap<String, Object> params2 = new HashMap<>();
params2.put("tenantId", tenantId);
params2.put("startTime", convertDate(markingCouponDataReportDto.getStartTime()));
params2.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1));
params2.put("channelType", 4);//核销
List<MarkingSceneDataReportVo> list2 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params2);
countMap = list2.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getxTime, p -> p.getTempCount()));
}

//获取车辆进场数
HashMap<String, Object> params3 = new HashMap<>();
params3.put("tenantId", tenantId);
params3.put("startTime", convertDate(markingCouponDataReportDto.getStartTime()));
params3.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1));
params3.put("cmdType", 601);//核销
List<MarkingSceneDataVo> markingSceneDataVos = wxCarCmdLogMapper.queryForSceneRepotyHistoryCar(params3);
Map<String,Integer> carCountMap = markingSceneDataVos.stream().collect(Collectors.toMap(MarkingSceneDataVo::getxTime, p -> p.getCarCount()));

for (MarkingSceneDataVo vo : list) {
vo.setVerifyCount(countMap.get(vo.getxTime()) == null ? 0 : countMap.get(vo.getxTime()));
vo.setCarCount(carCountMap.get(vo.getxTime()) == null ? 0 : carCountMap.get(vo.getxTime()));
if(vo.getSendCount()==0||vo.getVerifyCount()==0){
vo.setVerifyPercent(vo.getVerifyCount()+":"+vo.getSendCount());
}else {
int gcd = gcd(vo.getSendCount(), vo.getVerifyCount());
vo.setVerifyPercent(vo.getVerifyCount() / gcd + "/" + vo.getSendCount() / gcd);
}
}
return list;
}

public Map<String, Object> getTouchUsersReport(String tenantId, MarkingCouponDataReportDto markingCouponDataReportDto){

//获取领取人数
//获取领取量
//获取核销人数
//核销量

return null;
}

//计算最大公约数
public int gcd(int x, int y){ // 这个是运用辗转相除法求 两个数的 最大公约数 看不懂可以百度 // 下
if(y == 0)
return x;
else
return gcd(y,x%y);
}

}


+ 7
- 0
mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml View File

@@ -84,6 +84,13 @@
and create_date BETWEEN #{startdate} and #{enddate}
) c group by c.create_time
</select>

<select id="queryForSceneRepotyHistoryCar" resultType="com.simple.domain.vo.MarkingSceneDataVo" parameterType="hashmap">
select DATE_FORMAT(create_date,'%Y-%m-%d') xTime, count(c.id) carCount
from wx_car_cmd_log c where tenant_id = #{tenantId} and cmd_type=#{cmdType}
and create_date BETWEEN #{startTime} and #{endTime}
group by xTime
</select>


+ 9
- 5
mallinkService/src/main/resources/mapper/WxCouponActionLogMapper.xml View File

@@ -87,10 +87,14 @@
AND wx_coupon_action_log.channel_type = #{channelType} group by xTime
</select>

<select id="sceneDataList" resultType="com.simple.domain.vo.MarkingSceneDataReportVo" parameterType="hashmap">
select DATE_FORMAT(createtime,'%Y-%m-%d') as xTime, (select Count(*) from wx_coupon_action_log c where DATE_FORMAT(createtime,'%Y-%m-%d')=xTime and c.channel_type=3 and tenant_id=#{tenantId} ) as parkSendCount,(select Count(*) from wx_coupon_action_log c where DATE_FORMAT(createtime,'%Y-%m-%d')=xTime and c.channel_type=4 and tenant_id=#{tenantId}) as verifySendCount
from wx_coupon_action_log where tenant_id=#{tenantId} and createtime &gt;= #{startTime} and createtime &lt;= #{endTime} group by xTime
</select>

<select id="sceneDataJoinCouponOrderList" resultType="com.simple.domain.vo.MarkingSceneDataReportVo" parameterType="hashmap">
select DATE_FORMAT(create_date,'%Y-%m-%d') AS xTime,COUNT(wx_coupon_order.id) as tempCount from wx_coupon_action_log left join wx_coupon_order on wx_coupon_action_log.coupon_order_id=wx_coupon_order.id where wx_coupon_action_log.tenant_id=#{tenantId}
AND wx_coupon_order.coupon_order_status = 1 and wx_coupon_action_log.createtime &gt;= #{startTime} and wx_coupon_action_log.createtime &lt;= #{endTime}
AND wx_coupon_action_log.channel_type = #{channelType} group by xTime
</select>
</mapper>

+ 10
- 0
mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml View File

@@ -382,5 +382,15 @@
from wx_coupon_order where tenant_id=#{tenantId} AND create_date &gt;= #{startTime} and create_date &lt;= #{endTime} GROUP BY createTime
</select>

<select id="couponDataList" resultType="com.simple.domain.vo.MarkingCouponDataReportVo" parameterType="hashmap">
SELECT DATE_FORMAT(create_date,'%Y-%m-%d') as createTime
,COUNT(DISTINCT c_user_id) as couponUserCount,count(*) as couponCount
,(select Count(*) from wx_coupon_order c where coupon_order_status=1 AND DATE_FORMAT(create_date,'%Y-%m-%d')=createTime and tenant_id=#{tenantId} AND c.update_date &gt;= #{startTime} and c.update_date &lt;= #{endTime}) as verifyCount
,(select Count(DISTINCT c_user_id) from wx_coupon_order d where coupon_order_status=1 AND DATE_FORMAT(create_date,'%Y-%m-%d')=createTime and tenant_id=#{tenantId} AND d.update_date &gt;= #{startTime} and d.update_date &lt;= #{endTime}) as verifyUserCount
from wx_coupon_order where tenant_id=#{tenantId} AND create_date &gt;= #{startTime} and create_date &lt;= #{endTime} GROUP BY createTime
</select>




</mapper>

Loading…
Cancel
Save