diff --git a/src/main/java/com/kiisoo/ic/job/behavior/CustomerBehaviorJob.java b/src/main/java/com/kiisoo/ic/job/behavior/CustomerBehaviorJob.java index 1e131e3..dd4eb22 100644 --- a/src/main/java/com/kiisoo/ic/job/behavior/CustomerBehaviorJob.java +++ b/src/main/java/com/kiisoo/ic/job/behavior/CustomerBehaviorJob.java @@ -17,6 +17,7 @@ import me.chanjar.weixin.common.error.WxErrorException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.concurrent.ExecutorService; @@ -76,16 +77,25 @@ public class CustomerBehaviorJob { List privilageCpUserDOS = privilageCpUserDOMapper.selectList(null); List cpUserIds = privilageCpUserDOS.stream().map(privilageCpUserDO -> privilageCpUserDO.getCpUserId()).collect(Collectors.toList()); - List dates = DateUtils.getdays(startDate, endDate); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); int index =0; - for (Date date:dates){ + if (sdf.format(startDate).equals(sdf.format(endDate))){ for (String cpUserId : cpUserIds) { - producer.produceData(index,cpUserId,date); + producer.produceData(index,cpUserId,DateUtils.formatHourMinuteAndSecondToZero(startDate)); index++; } + }else{ + List dates = DateUtils.getdays(startDate, endDate); + for (Date date:dates){ + for (String cpUserId : cpUserIds) { + producer.produceData(index,cpUserId,date); + index++; + } + } } + disruptor.shutdown(); if (sysTaskDO !=null){ diff --git a/src/main/java/com/kiisoo/ic/job/behavior/StorePromotionDataJob.java b/src/main/java/com/kiisoo/ic/job/behavior/StorePromotionDataJob.java index 30f7b84..43536ca 100644 --- a/src/main/java/com/kiisoo/ic/job/behavior/StorePromotionDataJob.java +++ b/src/main/java/com/kiisoo/ic/job/behavior/StorePromotionDataJob.java @@ -54,5 +54,26 @@ public class StorePromotionDataJob { } } + @Scheduled(cron = "0 0/15 9/1 * * ??") + public void syncTodayData(){ + try { + int random = new Random().nextInt(100); + Thread.sleep(random*100); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:00"); + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("type",TASK_TYPE_USER_BEHAVIOR_TODAY).eq("create_time",sdf.format(new Date())).last("limit 1"); + SysTaskDO sysTaskDO = sysTaskDOMapper.selectOne(qw); + if (sysTaskDO == null){ + sysTaskDO = new SysTaskDO(TASK_NAME_USER_BEHAVIOR_TODAY,TASK_STATUS_RUNNING,TASK_TYPE_USER_BEHAVIOR_TODAY,new Date()); + sysTaskDOMapper.insert(sysTaskDO); + log.info("<--获取联系客户统计数据定时任务执行-->"); + customerBehaviorJob.handle(new Date(),new Date(),sysTaskDO); + log.info("<--获取联系客户统计数据定时任务结束-->"); + } + } catch (Exception e) { + log.error("获取联系客户统计数据任务出错", e); + } + } + } diff --git a/src/main/java/com/kiisoo/ic/system/constant/SysTaskConstant.java b/src/main/java/com/kiisoo/ic/system/constant/SysTaskConstant.java index d347827..3672b80 100644 --- a/src/main/java/com/kiisoo/ic/system/constant/SysTaskConstant.java +++ b/src/main/java/com/kiisoo/ic/system/constant/SysTaskConstant.java @@ -13,6 +13,10 @@ public class SysTaskConstant { * 全量跑客户统计类型 */ public static final Integer TASK_TYPE_USER_BEHAVIOR = 3; + /** + * 全量跑客户统计类型 + */ + public static final Integer TASK_TYPE_USER_BEHAVIOR_TODAY = 4; /** * 全量跑品牌拓客任务名 */ @@ -25,6 +29,10 @@ public class SysTaskConstant { * 全量跑客户统计任务名 */ public static final String TASK_NAME_USER_BEHAVIOR = "全量客户统计"; + /** + * 全量跑客户统计任务名 + */ + public static final String TASK_NAME_USER_BEHAVIOR_TODAY = "全量今日客户统计"; /** diff --git a/src/main/java/com/kiisoo/ic/utils/DateUtils.java b/src/main/java/com/kiisoo/ic/utils/DateUtils.java index 8201146..dc99440 100644 --- a/src/main/java/com/kiisoo/ic/utils/DateUtils.java +++ b/src/main/java/com/kiisoo/ic/utils/DateUtils.java @@ -23,16 +23,36 @@ public class DateUtils { public static List getdays(Date startDay, Date endDay) { List timeList = new ArrayList(); - Date d1 = startDay;// 定义起始日期 - Date d2 = endDay;// 定义结束日期 + Date d1 = formatHourMinuteAndSecondToZero(startDay);// 定义起始日期 + Date d2 = formatHourMinuteAndSecondToZero(endDay);// 定义结束日期 Calendar dd = Calendar.getInstance();// 定义日期实例 dd.setTime(d1);// 设置日期起始时间 timeList.add(startDay); while (dd.getTime().before(d2)) {// 判断是否到结束日期 dd.add(Calendar.DATE, 1);// 进行当前日期月份加1 - timeList.add(dd.getTime()); + timeList.add(formatHourMinuteAndSecondToZero(dd.getTime())); } return timeList; } + + /** + * 将Date的十分秒格式化为零 + * + * @param date + * @return + * @author 朱红旭 + * @date 2017年4月19日 + * @version 1.0 + */ + public static Date formatHourMinuteAndSecondToZero(Date date) { + Calendar calendar = Calendar.getInstance(); + if (null != date) { + calendar.setTime(date); + } + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.HOUR_OF_DAY, 0); + return calendar.getTime(); + } }