diff --git a/mallinkService/src/main/java/com/iformall/domain/vo/MarkingSceneDataVo.java b/mallinkService/src/main/java/com/iformall/domain/vo/MarkingSceneDataVo.java index 655ae269e..71e851d68 100644 --- a/mallinkService/src/main/java/com/iformall/domain/vo/MarkingSceneDataVo.java +++ b/mallinkService/src/main/java/com/iformall/domain/vo/MarkingSceneDataVo.java @@ -6,44 +6,48 @@ package com.iformall.domain.vo; * 场景营销数据VO */ public class MarkingSceneDataVo { - private int carCount; //进车数量 - private int sendCount; //发券数 - private int verifyCount; //核销数 - private String verifyPercent; //核销比 + private int triggerCount; //某日进车数量/某日核销数量 + private int sendCount; //场景营销发券数 + private int verifiedCount; //场景营销券核销数 + private String verifiedPercent; //场景营销核销比 private String xTime; //时间 - public int getCarCount() { - return carCount; + public int getVerifiedCount() { + + return verifiedCount; } - public void setCarCount(int carCount) { - this.carCount = carCount; + public void setVerifiedCount(int verifiedCount) { + this.verifiedCount = verifiedCount; } - public int getSendCount() { - return sendCount; + public String getVerifiedPercent() { + return verifiedPercent; } - public void setSendCount(int sendCount) { - this.sendCount = sendCount; + public void setVerifiedPercent(String verifiedPercent) { + this.verifiedPercent = verifiedPercent; } - public int getVerifyCount() { - return verifyCount; + public int getTriggerCount() { + + return triggerCount; } - public void setVerifyCount(int verifyCount) { - this.verifyCount = verifyCount; + public void setTriggerCount(int triggerCount) { + this.triggerCount = triggerCount; } - public String getVerifyPercent() { - return verifyPercent; + public int getSendCount() { + return sendCount; } - public void setVerifyPercent(String verifyPercent) { - this.verifyPercent = verifyPercent; + public void setSendCount(int sendCount) { + this.sendCount = sendCount; } + + public String getxTime() { return xTime; } diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java index 50b8d2a82..5d15eb009 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxCouponOrderMapper.java @@ -67,4 +67,7 @@ public interface WxCouponOrderMapper extends CommonMapper { void offExpiredCouponOrderByValidDate(); List findExpiredCouponOrderByValidDate(); + + + List queryForSceneRepotyHistoryVerified(HashMap params); } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java index b2adccfaf..9bbe4bda0 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java @@ -249,52 +249,66 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService { list.add(vo); } - Map countMap = new HashMap<>(); if(markingCouponDataReportDto.getType()==1){ //停车 //停车发券被核销数 - HashMap params1 = new HashMap<>(); - params1.put("tenantId", tenantId); + params.clear(); + params.put("tenantId", tenantId); if (markingCouponDataReportDto.getStartTime() != null) - params1.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); + params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); if (markingCouponDataReportDto.getEndTime() != null) - params1.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); - params1.put("channelType", EnumCouponSendSendType.CAR_STOP.getCode()); - List list1 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params1); + params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); + params.put("channelType", EnumCouponSendSendType.CAR_STOP.getCode()); + List list1 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params); countMap = list1.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getxTime, p -> p.getTempCount())); }else{ //核销发券被核销数 - HashMap params2 = new HashMap<>(); - params2.put("tenantId", tenantId); + params.clear(); + params.put("tenantId", tenantId); if (markingCouponDataReportDto.getStartTime() != null) - params2.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); + params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); if (markingCouponDataReportDto.getEndTime() != null) - params2.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); - params2.put("channelType", EnumCouponSendSendType.COUPON_VERIFY.getCode()); - List list2 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params2); + params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); + params.put("channelType", EnumCouponSendSendType.COUPON_VERIFY.getCode()); + List list2 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params); countMap = list2.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getxTime, p -> p.getTempCount())); } - //获取车辆进场数 - HashMap params3 = new HashMap<>(); - params3.put("tenantId", tenantId); - if (markingCouponDataReportDto.getStartTime() != null) - params3.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); - if (markingCouponDataReportDto.getEndTime() != null) - params3.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); - params3.put("cmdType", EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode()); - List markingSceneDataVos = wxCarCmdLogMapper.queryForSceneRepotyHistoryCar(params3); - Map carCountMap = markingSceneDataVos.stream().collect(Collectors.toMap(MarkingSceneDataVo::getxTime, p -> p.getCarCount())); + Map triggerCountMap = new HashMap<>(); + if(markingCouponDataReportDto.getType()==1) { //停车 + //获取车辆进场数 + params.clear(); + params.put("tenantId", tenantId); + if (markingCouponDataReportDto.getStartTime() != null) + params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); + if (markingCouponDataReportDto.getEndTime() != null) + params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); + params.put("cmdType", EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode()); + List markingSceneDataVos = wxCarCmdLogMapper.queryForSceneRepotyHistoryCar(params); + triggerCountMap = markingSceneDataVos.stream().collect(Collectors.toMap(MarkingSceneDataVo::getxTime, p -> p.getTriggerCount())); + }else { + //获取核销数 + params.clear(); + params.put("tenantId", tenantId); + if (markingCouponDataReportDto.getStartTime() != null) + params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); + if (markingCouponDataReportDto.getEndTime() != null) + params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); + List markingSceneDataVos = wxCouponOrderMapper.queryForSceneRepotyHistoryVerified(params); + triggerCountMap = markingSceneDataVos.stream().collect(Collectors.toMap(MarkingSceneDataVo::getxTime, p -> p.getTriggerCount())); + + } + NumberFormat nf = NumberFormat.getPercentInstance(); + nf.setMinimumFractionDigits(2); 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()); + vo.setVerifiedCount(countMap.get(vo.getxTime()) == null ? 0 : countMap.get(vo.getxTime())); + vo.setTriggerCount(triggerCountMap.get(vo.getxTime()) == null ? 0 : triggerCountMap.get(vo.getxTime())); + if(vo.getSendCount()==0){ + vo.setVerifiedPercent("--"); }else { - int gcd = gcd(vo.getSendCount(), vo.getVerifyCount()); - vo.setVerifyPercent(vo.getVerifyCount() / gcd + "/" + vo.getSendCount() / gcd); + vo.setVerifiedPercent(nf.format(new Double(vo.getVerifiedCount()) / new Double(vo.getSendCount()))); } } return new PageInfo<>(list); @@ -345,14 +359,5 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService { } - - //计算最大公约数 - 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 cafe543e9..233382a60 100644 --- a/mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxCarCmdLogMapper.xml @@ -86,7 +86,7 @@ + \ No newline at end of file