package com.cdf.schedule; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.cdf.entity.PageData; import com.cdf.entity.TotalData; import com.cdf.entity.TotalDataHk; import com.cdf.service.IPageDataService; import com.cdf.service.ITotalDataHkService; import com.cdf.service.ITotalDataService; import com.cdf.util.DateUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.naming.ldap.PagedResultsControl; import java.math.BigDecimal; import java.util.Date; import java.util.List; @Component @Slf4j public class ScheduleTask { @Autowired IPageDataService pageDataService; @Autowired ITotalDataService totalDataService; @Autowired ITotalDataHkService totalDataHkService; public static String day = null; @Scheduled(cron = "0 0 0 * * ?") //@Scheduled(cron = "30 * * * * ?") public void statisticsH5Data() throws Exception { if(day == null){ day = DateUtil.getDay(new Date(), -1); } log.info("开始统计{}的数据,{}",day,DateUtil.getDateTime(new Date())); TotalData totalData = new TotalData(); TotalDataHk totalDatahk = new TotalDataHk(); this.dataT(totalData,totalDatahk,22); totalDataService.saveOrUpdate(totalData); this.dataT(totalData,totalDatahk,33); totalDataHkService.saveOrUpdate(totalDatahk); //待添加传输 log.info("{结束统计{}的数据,{}",day,DateUtil.getDateTime(new Date())); day = null; } private void dataT(TotalData totalData,TotalDataHk totalDataHk,Integer deptId) throws Exception { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(PageData::getDeptId,deptId); wrapper.eq(PageData::getDay,day); List list = pageDataService.list(wrapper); Long stopTimeCount = 0L; BigDecimal jumpCount = BigDecimal.ZERO; BigDecimal clickGameCount = BigDecimal.ZERO; BigDecimal clickShopCount = BigDecimal.ZERO; Long totalVideoNum = 0L; Long totalStepNum = 0L; for (PageData pageData : list) { if(pageData.getStepNum() == 0){ jumpCount = jumpCount.add(new BigDecimal(1)); } if(pageData.getIsClickGame() == 1){ clickGameCount = clickGameCount.add(new BigDecimal(1)); } if(pageData.getIsClickShop() == 1){ clickShopCount = clickShopCount.add(new BigDecimal(1)); } if(pageData.getStopTime() == 0 && pageData.getInPageTime() !=null ){ long time = 10000L; //进入无操作,记录为停留10秒 String inPageTime = pageData.getInPageTime(); if(pageData.getOutPageTime() == null ){ if(pageData.getStepNum() >0){ //进入有操作,记录为停留30分钟 long outTime = DateUtil.getDateTime(pageData.getInPageTime()) + 1000 * 60 * 30; time = outTime - DateUtil.getDateTime(inPageTime); } }else { time = DateUtil.getDateTime(pageData.getOutPageTime()) - DateUtil.getDateTime(inPageTime); } pageData.setStopTime(time); } stopTimeCount += pageData.getStopTime(); totalVideoNum += pageData.getVideoNum(); totalStepNum += pageData.getStepNum(); } long avgStopTime = 0L; BigDecimal avgJump = BigDecimal.ZERO; BigDecimal avgClickGame = BigDecimal.ZERO; BigDecimal avgClickShop = BigDecimal.ZERO; long avgStepNum = 0L; if(list.size()>0){ avgStopTime = (stopTimeCount / list.size())/1000; avgJump = jumpCount.divide(new BigDecimal(list.size()),4,BigDecimal.ROUND_HALF_UP); avgClickGame = clickGameCount.divide(new BigDecimal(list.size()),4,BigDecimal.ROUND_HALF_UP); avgClickShop = clickShopCount.divide(new BigDecimal(list.size()),4,BigDecimal.ROUND_HALF_UP); avgStepNum = totalStepNum / list.size(); } if(deptId == 22){ totalData.setId(day); totalData.setAvgStopTime(avgStopTime); totalData.setAvgJump(avgJump); totalData.setAvgClickGame(avgClickGame); totalData.setAvgClickShop(avgClickShop); totalData.setVideoNum(totalVideoNum); totalData.setAvgStepNum(avgStepNum); } if(deptId == 33){ totalDataHk.setId(day); totalDataHk.setAvgStopTime(avgStopTime); totalDataHk.setAvgJump(avgJump); totalDataHk.setAvgClickGame(avgClickGame); totalDataHk.setAvgClickShop(avgClickShop); totalDataHk.setVideoNum(totalVideoNum); totalDataHk.setAvgStepNum(avgStepNum); } } }