From f90a009aff7e576ab66992f114cc0cfdbca42ab8 Mon Sep 17 00:00:00 2001 From: masterspirit Date: Thu, 30 Aug 2018 17:28:49 +0800 Subject: [PATCH] =?UTF-8?q?[=E8=90=A5=E9=94=80=E6=8A=A5=E8=A1=A8][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9]=20=E6=B7=BB=E5=8A=A0=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MarkingDataReportController.java | 9 + .../dto/MarkingCouponDataReportDto.java | 37 +++ .../domain/dto/MarkingSceneDataReportDto.java | 36 +++ .../simple/domain/dto/TouchUsersReportVo.java | 74 ++++++ .../domain/vo/MarkingSceneDataReportVo.java | 26 +- .../simple/domain/vo/MarkingSceneDataVo.java | 54 ++++ .../com/simple/mapper/WxCarCmdLogMapper.java | 3 + .../mapper/WxCouponActionLogMapper.java | 5 + .../simple/mapper/WxCouponOrderMapper.java | 3 + .../service/MarkingDataReportService.java | 10 + .../impl/MarkingDataReportServiceImpl.java | 230 ++++++++++++++---- .../resources/mapper/WxCarCmdLogMapper.xml | 7 + .../mapper/WxCouponActionLogMapper.xml | 14 +- .../resources/mapper/WxCouponOrderMapper.xml | 10 + 14 files changed, 457 insertions(+), 61 deletions(-) create mode 100644 mallinkService/src/main/java/com/simple/domain/dto/MarkingCouponDataReportDto.java create mode 100644 mallinkService/src/main/java/com/simple/domain/dto/MarkingSceneDataReportDto.java create mode 100644 mallinkService/src/main/java/com/simple/domain/dto/TouchUsersReportVo.java create mode 100644 mallinkService/src/main/java/com/simple/domain/vo/MarkingSceneDataVo.java diff --git a/mallinkAdmin/src/main/java/com/simple/controller/MarkingDataReportController.java b/mallinkAdmin/src/main/java/com/simple/controller/MarkingDataReportController.java index 8caf77fdc..d23d30ec6 100644 --- a/mallinkAdmin/src/main/java/com/simple/controller/MarkingDataReportController.java +++ b/mallinkAdmin/src/main/java/com/simple/controller/MarkingDataReportController.java @@ -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)); + } + + } diff --git a/mallinkService/src/main/java/com/simple/domain/dto/MarkingCouponDataReportDto.java b/mallinkService/src/main/java/com/simple/domain/dto/MarkingCouponDataReportDto.java new file mode 100644 index 000000000..86c5aa8a3 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/domain/dto/MarkingCouponDataReportDto.java @@ -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; + } +} diff --git a/mallinkService/src/main/java/com/simple/domain/dto/MarkingSceneDataReportDto.java b/mallinkService/src/main/java/com/simple/domain/dto/MarkingSceneDataReportDto.java new file mode 100644 index 000000000..1998c2498 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/domain/dto/MarkingSceneDataReportDto.java @@ -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; + } +} diff --git a/mallinkService/src/main/java/com/simple/domain/dto/TouchUsersReportVo.java b/mallinkService/src/main/java/com/simple/domain/dto/TouchUsersReportVo.java new file mode 100644 index 000000000..1d691a16d --- /dev/null +++ b/mallinkService/src/main/java/com/simple/domain/dto/TouchUsersReportVo.java @@ -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; + } + + +} diff --git a/mallinkService/src/main/java/com/simple/domain/vo/MarkingSceneDataReportVo.java b/mallinkService/src/main/java/com/simple/domain/vo/MarkingSceneDataReportVo.java index d0ad3db8f..503c7e2f1 100644 --- a/mallinkService/src/main/java/com/simple/domain/vo/MarkingSceneDataReportVo.java +++ b/mallinkService/src/main/java/com/simple/domain/vo/MarkingSceneDataReportVo.java @@ -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; + } } diff --git a/mallinkService/src/main/java/com/simple/domain/vo/MarkingSceneDataVo.java b/mallinkService/src/main/java/com/simple/domain/vo/MarkingSceneDataVo.java new file mode 100644 index 000000000..95272e024 --- /dev/null +++ b/mallinkService/src/main/java/com/simple/domain/vo/MarkingSceneDataVo.java @@ -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; + } +} diff --git a/mallinkService/src/main/java/com/simple/mapper/WxCarCmdLogMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxCarCmdLogMapper.java index ccb627ed6..3449822ce 100644 --- a/mallinkService/src/main/java/com/simple/mapper/WxCarCmdLogMapper.java +++ b/mallinkService/src/main/java/com/simple/mapper/WxCarCmdLogMapper.java @@ -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 { List> queryHistory(HashMap params); List> queryTodayCar(HashMap params); + + List queryForSceneRepotyHistoryCar(HashMap params); } diff --git a/mallinkService/src/main/java/com/simple/mapper/WxCouponActionLogMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxCouponActionLogMapper.java index 80d7d9714..e113a2116 100644 --- a/mallinkService/src/main/java/com/simple/mapper/WxCouponActionLogMapper.java +++ b/mallinkService/src/main/java/com/simple/mapper/WxCouponActionLogMapper.java @@ -19,7 +19,12 @@ public interface WxCouponActionLogMapper extends CommonMapper sceneDataMap(HashMap params); + List sceneDataMapJoinCouponOrder(HashMap params); + + List sceneDataList(HashMap params); + + List sceneDataJoinCouponOrderList(HashMap params); diff --git a/mallinkService/src/main/java/com/simple/mapper/WxCouponOrderMapper.java b/mallinkService/src/main/java/com/simple/mapper/WxCouponOrderMapper.java index 2754a3c94..d91cfb298 100644 --- a/mallinkService/src/main/java/com/simple/mapper/WxCouponOrderMapper.java +++ b/mallinkService/src/main/java/com/simple/mapper/WxCouponOrderMapper.java @@ -26,6 +26,9 @@ public interface WxCouponOrderMapper extends CommonMapper { List couponDataMap(HashMap params); + List couponDataList(HashMap params); //返回日期格式yy-MM-dd + + /** * 查询商场领券数 diff --git a/mallinkService/src/main/java/com/simple/service/MarkingDataReportService.java b/mallinkService/src/main/java/com/simple/service/MarkingDataReportService.java index fad5463e2..e36ed7d3c 100644 --- a/mallinkService/src/main/java/com/simple/service/MarkingDataReportService.java +++ b/mallinkService/src/main/java/com/simple/service/MarkingDataReportService.java @@ -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 getCouponDate(String tenantId); Map getSceneData(String tenantId); + + List getCouponDateList(String tenantId, MarkingCouponDataReportDto markingCouponDataReportDto); + + List getSceneDataList(String tenantId, MarkingCouponDataReportDto markingCouponDataReportDto); } diff --git a/mallinkService/src/main/java/com/simple/service/impl/MarkingDataReportServiceImpl.java b/mallinkService/src/main/java/com/simple/service/impl/MarkingDataReportServiceImpl.java index 607b07134..d52719537 100644 --- a/mallinkService/src/main/java/com/simple/service/impl/MarkingDataReportServiceImpl.java +++ b/mallinkService/src/main/java/com/simple/service/impl/MarkingDataReportServiceImpl.java @@ -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 getCouponDate(String tenantId){ + public Map 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 params = new HashMap<>(); - params.put("tenantId",tenantId); - params.put("startTime",getFirstDayOfMonth()); - params.put("endTime",addDay(1)); - List couponDatalist=wxCouponOrderMapper.couponDataMap(params); + params.put("tenantId", tenantId); + params.put("startTime", getFirstDayOfMonth()); + params.put("endTime", addDay(1)); + List couponDatalist = wxCouponOrderMapper.couponDataMap(params); //查询券领取人数 - HashMap returnMap = new HashMap<>(); - returnMap.put("couponUpDay",couponUpDay);//比昨日提升 - returnMap.put("couponUpWeek",couponUpWeek);//比上周提升 - returnMap.put("todayCouponCount",todayCouponCount);//今日领取数 - returnMap.put("couponDataMap",couponDatalist); + HashMap returnMap = new HashMap<>(); + returnMap.put("couponUpDay", couponUpDay);//比昨日提升 + returnMap.put("couponUpWeek", couponUpWeek);//比上周提升 + returnMap.put("todayCouponCount", todayCouponCount);//今日领取数 + returnMap.put("couponDataMap", couponDatalist); return returnMap; } @Override - public Map getSceneData(String tenantId){ + public Map 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 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 list = wxCouponActionLogMapper.sceneDataMap(params); //停车发券被核销数 HashMap 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 list1 = wxCouponActionLogMapper.sceneDataMapJoinCouponOrder(params1); - Map parkCountMap = list1.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getxTime, p->p.getTempCount())); + Map parkCountMap = list1.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getxTime, p -> p.getTempCount())); //核销发券被核销数 HashMap 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 list2 = wxCouponActionLogMapper.sceneDataMapJoinCouponOrder(params2); - Map verifyCountMap = list2.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getxTime, p->p.getTempCount())); + Map 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 returnMap = new HashMap<>(); - returnMap.put("sceneDownDay",sceneDownDay);//比昨日下降 - returnMap.put("sceneUpWeek",sceneUpWeek);//比上周提升 - returnMap.put("todaySceneCount",todaySceneCount);//今日领取数 - returnMap.put("sceneDataMap",list); + HashMap returnMap = new HashMap<>(); + returnMap.put("sceneDownDay", sceneDownDay);//比昨日下降 + returnMap.put("sceneUpWeek", sceneUpWeek);//比上周提升 + returnMap.put("todaySceneCount", todaySceneCount);//今日领取数 + returnMap.put("sceneDataMap", list); return returnMap; } + @Override + public List getCouponDateList(String tenantId, MarkingCouponDataReportDto markingCouponDataReportDto) { + HashMap params = new HashMap<>(); + params.put("tenantId", tenantId); + params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); + params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); + List couponDatalist = wxCouponOrderMapper.couponDataList(params); + return couponDatalist; + } + + @Override + public List getSceneDataList(String tenantId, MarkingCouponDataReportDto markingCouponDataReportDto) { + HashMap params = new HashMap<>(); + params.put("tenantId", tenantId); + params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); + params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); + //停车发券数 停车发券被核销数 核销发券数 核销发券被核销数 + List templist = wxCouponActionLogMapper.sceneDataMap(params); + + List 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 countMap = new HashMap<>(); + + if(markingCouponDataReportDto.getType()==1){ //停车 + //停车发券被核销数 + HashMap 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 list1 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params1); + countMap = list1.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getxTime, p -> p.getTempCount())); + }else{ + //核销发券被核销数 + HashMap 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 list2 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params2); + countMap = list2.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getxTime, p -> p.getTempCount())); + } + + //获取车辆进场数 + HashMap 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 markingSceneDataVos = wxCarCmdLogMapper.queryForSceneRepotyHistoryCar(params3); + Map 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 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); + } } + diff --git a/mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml b/mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml index 43572c99e..89068300b 100644 --- a/mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml @@ -84,6 +84,13 @@ and create_date BETWEEN #{startdate} and #{enddate} ) c group by c.create_time + + diff --git a/mallinkService/src/main/resources/mapper/WxCouponActionLogMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponActionLogMapper.xml index 4613245ec..3d4f92708 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponActionLogMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponActionLogMapper.xml @@ -87,10 +87,14 @@ AND wx_coupon_action_log.channel_type = #{channelType} group by xTime + - - - - - + diff --git a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml index 19f65a8cd..cf871e537 100644 --- a/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCouponOrderMapper.xml @@ -382,5 +382,15 @@ from wx_coupon_order where tenant_id=#{tenantId} AND create_date >= #{startTime} and create_date <= #{endTime} GROUP BY createTime + + + +