Bladeren bron

[场景营销数据][收银台]:添加收银台数据

release_toaliyun_real
Stormeye Wu 7 jaren geleden
bovenliggende
commit
15bf1db2bc
6 gewijzigde bestanden met toevoegingen van 83 en 96 verwijderingen
  1. +11
    -78
      mallinkService/src/main/java/com/iformall/domain/vo/MarkingSceneDataReportVo.java
  2. +3
    -3
      mallinkService/src/main/java/com/iformall/domain/vo/MarkingSceneDataVo.java
  3. +3
    -0
      mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java
  4. +51
    -14
      mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java
  5. +5
    -1
      mallinkService/src/main/resources/mapper/WxCouponActionLogMapper.xml
  6. +10
    -0
      mallinkService/src/main/resources/mapper/WxOrderMapper.xml

+ 11
- 78
mallinkService/src/main/java/com/iformall/domain/vo/MarkingSceneDataReportVo.java Bestand weergeven

@@ -1,89 +1,22 @@
package com.iformall.domain.vo; package com.iformall.domain.vo;


import lombok.Data;

/** /**
* Created by syf on 2018/8/29. * Created by syf on 2018/8/29.
*/ */
@Data
public class MarkingSceneDataReportVo { public class MarkingSceneDataReportVo {


private String xTime; private String xTime;
private int parkSendCount; //停车发放
private int verifySendCount; //核销发放
private int parkCount; //停车核销数
private int verifyCount; //核销 核销数
private int parkSendCount; // 停车发放
private int verifySendCount; // 核销发放
private int microPaySendCount; // B端刷卡支付发放
private int parkCount; // 停车核销数
private int verifyCount; // 核销核销数
private int microPayCount; // 核销核销数
private int tempCount; private int tempCount;
private Integer carCount; //车辆进场数
private String verifyPercent;
private Integer carCount; // 车辆进场数
private String verifyPercent;
private int total; private int total;

public int getTotal() {
return verifySendCount+parkSendCount;
}

public void setTotal(int total) {
this.total = total;
}

public int getTempCount() {
return tempCount;
}

public void setTempCount(int tempCount) {
this.tempCount = tempCount;
}

public String getxTime() {
return xTime;
}

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

public int getParkSendCount() {
return parkSendCount;
}

public void setParkSendCount(int parkSendCount) {
this.parkSendCount = parkSendCount;
}

public int getVerifySendCount() {
return verifySendCount;
}

public void setVerifySendCount(int verifySendCount) {
this.verifySendCount = verifySendCount;
}

public int getParkCount() {
return parkCount;
}

public void setParkCount(int parkCount) {
this.parkCount = parkCount;
}

public int getVerifyCount() {
return verifyCount;
}

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;
}
} }

+ 3
- 3
mallinkService/src/main/java/com/iformall/domain/vo/MarkingSceneDataVo.java Bestand weergeven

@@ -6,9 +6,9 @@ package com.iformall.domain.vo;
* 场景营销数据VO * 场景营销数据VO
*/ */
public class MarkingSceneDataVo { public class MarkingSceneDataVo {
private int triggerCount; //某日进车数量/某日核销数量
private int sendCount; //场景营销发券数
private int verifiedCount; //场景营销券核销数
private int triggerCount; //某日进车数量/某日核销数量/某日B端刷卡支付数量
private int sendCount; //场景营销发券数
private int verifiedCount; //场景营销券核销数
private String verifiedPercent; //场景营销核销比 private String verifiedPercent; //场景营销核销比
private String xTime; //时间 private String xTime; //时间




+ 3
- 0
mallinkService/src/main/java/com/iformall/mapper/WxOrderMapper.java Bestand weergeven

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


import java.util.*; import java.util.*;
import com.iformall.common.CommonMapper; import com.iformall.common.CommonMapper;
import com.iformall.domain.vo.MarkingSceneDataVo;
import com.iformall.domain.vo.WxOrderCVo; import com.iformall.domain.vo.WxOrderCVo;
import com.iformall.domain.po.WxOrder; import com.iformall.domain.po.WxOrder;
import com.iformall.domain.vo.WxOrderPayVo; import com.iformall.domain.vo.WxOrderPayVo;
@@ -22,4 +23,6 @@ public interface WxOrderMapper extends CommonMapper<WxOrder, Long> {
Map dayMicroPayAmountList(Map dateMap); Map dayMicroPayAmountList(Map dateMap);
List<WxOrderPayVo> findListOfMicroPayOrderByDate(Map dateMap); List<WxOrderPayVo> findListOfMicroPayOrderByDate(Map dateMap);


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

} }

+ 51
- 14
mallinkService/src/main/java/com/iformall/service/impl/MarkingDataReportServiceImpl.java Bestand weergeven

@@ -11,9 +11,11 @@ import com.iformall.domain.vo.TouchUsersReportVo;
import com.iformall.enums.EnumCarCmd; import com.iformall.enums.EnumCarCmd;
import com.iformall.enums.EnumCouponSendSendType; import com.iformall.enums.EnumCouponSendSendType;
import com.iformall.enums.EnumCouponType; import com.iformall.enums.EnumCouponType;
import com.iformall.enums.EnumOrderType;
import com.iformall.mapper.*; import com.iformall.mapper.*;
import com.iformall.service.MarkingDataReportService; import com.iformall.service.MarkingDataReportService;
import com.iformall.utils.DateUtils; import com.iformall.utils.DateUtils;
import net.bytebuddy.asm.Advice;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -40,6 +42,8 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
private WxUserVisitMapper wxUserVisitMapper; private WxUserVisitMapper wxUserVisitMapper;
@Autowired @Autowired
private WxCouponMapper wxCouponMapper; private WxCouponMapper wxCouponMapper;
@Autowired
private WxOrderMapper wxOrderMapper;


//取本月第一天 //取本月第一天
private Date getFirstDayOfMonth() { private Date getFirstDayOfMonth() {
@@ -190,7 +194,7 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
params1.put("endTime", addDay(1)); params1.put("endTime", addDay(1));
params1.put("channelType", EnumCouponSendSendType.CAR_STOP);//停车 params1.put("channelType", EnumCouponSendSendType.CAR_STOP);//停车
List<MarkingSceneDataReportVo> list1 = wxCouponActionLogMapper.sceneDataMapJoinCouponOrder(params1); 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<>(); HashMap<String, Object> params2 = new HashMap<>();
params2.put("tenantId", tenantId); params2.put("tenantId", tenantId);
@@ -198,11 +202,21 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
params2.put("endTime", addDay(1)); params2.put("endTime", addDay(1));
params2.put("channelType", EnumCouponSendSendType.COUPON_VERIFY);//核销 params2.put("channelType", EnumCouponSendSendType.COUPON_VERIFY);//核销
List<MarkingSceneDataReportVo> list2 = wxCouponActionLogMapper.sceneDataMapJoinCouponOrder(params2); 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()));
// B端刷卡支付被核销数
// TODO
HashMap<String, Object> params3 = new HashMap<>();
params3.put("tenantId", tenantId);
params3.put("startTime", getFirstDayOfMonth());
params3.put("endTime", addDay(1));
params3.put("channelType", EnumCouponSendSendType.B_MICROPAY);//B端刷卡支付
List<MarkingSceneDataReportVo> list3 = wxCouponActionLogMapper.sceneDataMapJoinCouponOrder(params2);
Map<String, Integer> microPayCountMap = 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()));
vo.setParkCount(parkCountMap.get(vo.getXTime()) == null ? 0 : parkCountMap.get(vo.getXTime()));
vo.setVerifyCount(verifyCountMap.get(vo.getXTime()) == null ? 0 : verifyCountMap.get(vo.getXTime()));
vo.setMicroPayCount(microPayCountMap.get(vo.getXTime()) == null ? 0 : microPayCountMap.get(vo.getXTime()));
} }


String startdate = DateUtils.getTimeBefore(30, new Date()); String startdate = DateUtils.getTimeBefore(30, new Date());
@@ -212,16 +226,18 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
List<MarkingSceneDataReportVo> tempDatalist =new LinkedList<>(); List<MarkingSceneDataReportVo> tempDatalist =new LinkedList<>();


for(String tj:tjList){ for(String tj:tjList){
Optional<MarkingSceneDataReportVo> first = list.stream().filter(c -> c.getxTime().equals(tj)).findFirst();
Optional<MarkingSceneDataReportVo> first = list.stream().filter(c -> c.getXTime().equals(tj)).findFirst();
if(!first.isPresent()){ if(!first.isPresent()){
MarkingSceneDataReportVo markingSceneDataReportVo = new MarkingSceneDataReportVo(); MarkingSceneDataReportVo markingSceneDataReportVo = new MarkingSceneDataReportVo();
markingSceneDataReportVo.setxTime(tj);
markingSceneDataReportVo.setXTime(tj);
markingSceneDataReportVo.setCarCount(0);
markingSceneDataReportVo.setParkCount(0); markingSceneDataReportVo.setParkCount(0);
markingSceneDataReportVo.setVerifyCount(0); markingSceneDataReportVo.setVerifyCount(0);
markingSceneDataReportVo.setMicroPayCount(0);
markingSceneDataReportVo.setTempCount(0); markingSceneDataReportVo.setTempCount(0);
markingSceneDataReportVo.setCarCount(0);
markingSceneDataReportVo.setParkSendCount(0); markingSceneDataReportVo.setParkSendCount(0);
markingSceneDataReportVo.setVerifySendCount(0); markingSceneDataReportVo.setVerifySendCount(0);
markingSceneDataReportVo.setMicroPaySendCount(0);
tempDatalist.add(markingSceneDataReportVo); tempDatalist.add(markingSceneDataReportVo);
continue; continue;
} }
@@ -279,14 +295,14 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime())); params.put("startTime", convertDate(markingCouponDataReportDto.getStartTime()));
if (markingCouponDataReportDto.getEndTime() != null) if (markingCouponDataReportDto.getEndTime() != null)
params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1));
//停车发券数 停车发券被核销数 核销发券数 核销发券被核销数
//停车发券数 停车发券被核销数, 核销发券数 核销发券被核销数, B端刷卡支付发券数 刷卡支付发券被核销数
PageHelper.startPage(pageIndex, pageSize); PageHelper.startPage(pageIndex, pageSize);
List<MarkingSceneDataReportVo> templist = wxCouponActionLogMapper.sceneDataList(params); List<MarkingSceneDataReportVo> templist = wxCouponActionLogMapper.sceneDataList(params);


List<MarkingSceneDataVo> list = new ArrayList<>(); List<MarkingSceneDataVo> list = new ArrayList<>();
for (MarkingSceneDataReportVo temp: templist) { for (MarkingSceneDataReportVo temp: templist) {
MarkingSceneDataVo vo = new MarkingSceneDataVo(); MarkingSceneDataVo vo = new MarkingSceneDataVo();
vo.setxTime(temp.getxTime());
vo.setxTime(temp.getXTime());
if(markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.CAR_STOP.getCode())) { if(markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.CAR_STOP.getCode())) {
vo.setSendCount(temp.getParkSendCount()); vo.setSendCount(temp.getParkSendCount());
}else{ }else{
@@ -307,8 +323,19 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1));
params.put("channelType", EnumCouponSendSendType.CAR_STOP.getCode()); params.put("channelType", EnumCouponSendSendType.CAR_STOP.getCode());
List<MarkingSceneDataReportVo> list1 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params); List<MarkingSceneDataReportVo> list1 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params);
countMap = list1.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getxTime, p -> p.getTempCount()));
}else{
countMap = list1.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getXTime, p -> p.getTempCount()));
} else if(markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.B_MICROPAY.getCode())){ // B端刷卡支付
//B端刷卡发券 被核销数
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("channelType", EnumCouponSendSendType.CAR_STOP.getCode());
List<MarkingSceneDataReportVo> list1 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params);
countMap = list1.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getXTime, p -> p.getTempCount()));
} else{
//核销发券被核销数 //核销发券被核销数
params.clear(); params.clear();
params.put("tenantId", tenantId); params.put("tenantId", tenantId);
@@ -318,7 +345,7 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1));
params.put("channelType", EnumCouponSendSendType.COUPON_VERIFY.getCode()); params.put("channelType", EnumCouponSendSendType.COUPON_VERIFY.getCode());
List<MarkingSceneDataReportVo> list2 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params); List<MarkingSceneDataReportVo> list2 = wxCouponActionLogMapper.sceneDataJoinCouponOrderList(params);
countMap = list2.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getxTime, p -> p.getTempCount()));
countMap = list2.stream().collect(Collectors.toMap(MarkingSceneDataReportVo::getXTime, p -> p.getTempCount()));
} }


Map<String, Integer> triggerCountMap = new HashMap<>(); Map<String, Integer> triggerCountMap = new HashMap<>();
@@ -334,7 +361,18 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
params.put("cmdType", EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode()); params.put("cmdType", EnumCarCmd.CAR_ETCP_CALLBACK_PARK_IN.getCode());
List<MarkingSceneDataVo> markingSceneDataVos = wxCarCmdLogMapper.queryForSceneRepotyHistoryCar(params); List<MarkingSceneDataVo> markingSceneDataVos = wxCarCmdLogMapper.queryForSceneRepotyHistoryCar(params);
triggerCountMap = markingSceneDataVos.stream().collect(Collectors.toMap(MarkingSceneDataVo::getxTime, p -> p.getTriggerCount())); triggerCountMap = markingSceneDataVos.stream().collect(Collectors.toMap(MarkingSceneDataVo::getxTime, p -> p.getTriggerCount()));
}else {
} else if(markingCouponDataReportDto.getType().equals(EnumCouponSendSendType.B_MICROPAY.getCode())){ // B端刷卡支付发券
//获取B端刷卡数
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("type", EnumOrderType.MICROPAY.getCode());
List<MarkingSceneDataVo> markingSceneDataVos = wxOrderMapper.queryForSceneRepotyHistory(params);
triggerCountMap = markingSceneDataVos.stream().collect(Collectors.toMap(MarkingSceneDataVo::getxTime, p -> p.getTriggerCount()));
} else {
//获取核销数 //获取核销数
params.clear(); params.clear();
params.put("tenantId", tenantId); params.put("tenantId", tenantId);
@@ -344,7 +382,6 @@ public class MarkingDataReportServiceImpl implements MarkingDataReportService {
params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1)); params.put("endTime", convertDateAndAdd(convertDate(markingCouponDataReportDto.getEndTime()), 1));
List<MarkingSceneDataVo> markingSceneDataVos = wxCouponOrderMapper.queryForSceneRepotyHistoryVerified(params); List<MarkingSceneDataVo> markingSceneDataVos = wxCouponOrderMapper.queryForSceneRepotyHistoryVerified(params);
triggerCountMap = markingSceneDataVos.stream().collect(Collectors.toMap(MarkingSceneDataVo::getxTime, p -> p.getTriggerCount())); triggerCountMap = markingSceneDataVos.stream().collect(Collectors.toMap(MarkingSceneDataVo::getxTime, p -> p.getTriggerCount()));

} }
NumberFormat nf = NumberFormat.getPercentInstance(); NumberFormat nf = NumberFormat.getPercentInstance();
nf.setMinimumFractionDigits(2); nf.setMinimumFractionDigits(2);


+ 5
- 1
mallinkService/src/main/resources/mapper/WxCouponActionLogMapper.xml Bestand weergeven

@@ -118,7 +118,11 @@
(select Count(*) from wx_coupon_action_log c (select Count(*) from wx_coupon_action_log c
where DATE_FORMAT(create_time,'%Y-%m-%d')=xTime where DATE_FORMAT(create_time,'%Y-%m-%d')=xTime
and c.channel_type=3 and c.channel_type=3
and tenant_id=#{tenantId}) as verifySendCount
and tenant_id=#{tenantId}) as verifySendCount,
(select Count(*) from wx_coupon_action_log c
where DATE_FORMAT(create_time,'%Y-%m-%d')=xTime
and c.channel_type=4
and tenant_id=#{tenantId}) as microPaySendCount
from wx_coupon_action_log from wx_coupon_action_log
where tenant_id=#{tenantId} where tenant_id=#{tenantId}
<if test=" null != startTime "> <if test=" null != startTime ">


+ 10
- 0
mallinkService/src/main/resources/mapper/WxOrderMapper.xml Bestand weergeven

@@ -324,5 +324,15 @@
order by o.create_date desc order by o.create_date desc
</select> </select>


<select id="queryForSceneRepotyHistory" resultType="com.iformall.domain.vo.MarkingSceneDataVo" parameterType="hashmap">
select DATE_FORMAT(o.create_date,'%Y-%m-%d') xTime, count(o.id) triggerCount
from wx_order o
where o.`tenant_id` = #{tenantId} and o.`type` = #{type}
<if test=" null != startTime and null != endTime">
and o.`create_date` BETWEEN #{startTime} and #{endTime}
</if>
group by xTime
</select>



</mapper> </mapper>

Laden…
Annuleren
Opslaan