From e572fa006cc0db243001e88bf59d9db4698a380e Mon Sep 17 00:00:00 2001 From: LegnaYet <1023868505@qq.com> Date: Tue, 19 May 2020 15:28:39 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=A8=E5=BA=97=E5=8F=B7=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ic/job/behavior/CustomerBehaviorJob.java | 11 +++- .../job/behavior/StorePromotionDataJob.java | 30 ++++++--- .../kiisoo/ic/job/count/CustomerCountJob.java | 11 +++- .../ic/job/count/SyncCountJobService.java | 46 +++++++++++++- .../ic/system/constant/SysTaskConstant.java | 38 ++++++++++++ .../kiisoo/ic/system/entity/SysTaskDO.java | 62 +++++++++++++++++++ .../ic/system/mapper/SysTaskDOMapper.java | 8 +++ src/main/resources/mapper/SysTaskDOMapper.xml | 5 ++ 8 files changed, 197 insertions(+), 14 deletions(-) create mode 100644 src/main/java/com/kiisoo/ic/system/constant/SysTaskConstant.java create mode 100644 src/main/java/com/kiisoo/ic/system/entity/SysTaskDO.java create mode 100644 src/main/java/com/kiisoo/ic/system/mapper/SysTaskDOMapper.java create mode 100644 src/main/resources/mapper/SysTaskDOMapper.xml 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 7b62519..95988ba 100644 --- a/src/main/java/com/kiisoo/ic/job/behavior/CustomerBehaviorJob.java +++ b/src/main/java/com/kiisoo/ic/job/behavior/CustomerBehaviorJob.java @@ -5,6 +5,8 @@ import com.kiisoo.ic.employee.mapper.PrivilageCpUserDOMapper; import com.kiisoo.ic.generalize.mapper.PoiCustomerContactDataStatMapper; import com.kiisoo.ic.store.mapper.PrivilageCpUserStoreDOMapper; import com.kiisoo.ic.store.mapper.StorePromotionDataDOMapper; +import com.kiisoo.ic.system.entity.SysTaskDO; +import com.kiisoo.ic.system.mapper.SysTaskDOMapper; import com.kiisoo.ic.utils.DateUtils; import com.lmax.disruptor.BlockingWaitStrategy; import com.lmax.disruptor.RingBuffer; @@ -21,6 +23,8 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.stream.Collectors; +import static com.kiisoo.ic.system.constant.SysTaskConstant.TASK_STATUS_FINISHED; + /** * Disruptor多个消费者不重复处理生产者发送过来的消息 */ @@ -43,9 +47,11 @@ public class CustomerBehaviorJob { private PoiCustomerContactDataStatMapper poiCustomerContactDataStatMapper; @Autowired private StorePromotionDataDOMapper storePromotionDataDOMapper; + @Autowired + private SysTaskDOMapper sysTaskDOMapper; - public void handle(Date startDate, Date endDate) throws WxErrorException { + public void handle(Date startDate, Date endDate, SysTaskDO sysTaskDO) throws WxErrorException { //创建线程池 ExecutorService executors = Executors.newFixedThreadPool(THREAD_NUMBERS); @@ -81,5 +87,8 @@ public class CustomerBehaviorJob { disruptor.shutdown(); + + sysTaskDO.setStatus(TASK_STATUS_FINISHED); + sysTaskDOMapper.updateById(sysTaskDO); } } 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 224f546..20ea496 100644 --- a/src/main/java/com/kiisoo/ic/job/behavior/StorePromotionDataJob.java +++ b/src/main/java/com/kiisoo/ic/job/behavior/StorePromotionDataJob.java @@ -1,19 +1,19 @@ package com.kiisoo.ic.job.behavior; -import com.kiisoo.ic.store.service.StorePromotionDataService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.kiisoo.ic.system.entity.SysTaskDO; +import com.kiisoo.ic.system.mapper.SysTaskDOMapper; import com.kiisoo.ic.utils.DateUtils; -import com.xxl.job.core.biz.model.ReturnT; -import com.xxl.job.core.handler.IJobHandler; -import com.xxl.job.core.handler.annotation.JobHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; import java.text.SimpleDateFormat; import java.util.Date; -import java.util.List; +import java.util.Random; + +import static com.kiisoo.ic.system.constant.SysTaskConstant.*; /** * @author jinchaofan @@ -30,13 +30,25 @@ public class StorePromotionDataJob { */ @Autowired private CustomerBehaviorJob customerBehaviorJob; + @Autowired + private SysTaskDOMapper sysTaskDOMapper; @Scheduled(cron = "0 0 1 * * ?") public void syncData(){ try { - log.info("<--获取联系客户统计数据定时任务执行-->"); - customerBehaviorJob.handle(DateUtils.addDay(new Date(),-3),DateUtils.addDay(new Date(),-1)); - log.info("<--获取联系客户统计数据定时任务结束-->"); + int random = new Random(100).nextInt(); + Thread.sleep(random*1000); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:00:00"); + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("type",TASK_TYPE_USER_BEHAVIOR).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,TASK_STATUS_RUNNING,TASK_TYPE_USER_BEHAVIOR,new Date()); + sysTaskDOMapper.insert(sysTaskDO); + log.info("<--获取联系客户统计数据定时任务执行-->"); + customerBehaviorJob.handle(DateUtils.addDay(new Date(),-3),DateUtils.addDay(new Date(),-1),sysTaskDO); + log.info("<--获取联系客户统计数据定时任务结束-->"); + } } catch (Exception e) { log.error("获取联系客户统计数据任务出错", e); } diff --git a/src/main/java/com/kiisoo/ic/job/count/CustomerCountJob.java b/src/main/java/com/kiisoo/ic/job/count/CustomerCountJob.java index 9cd8bbc..fac1804 100644 --- a/src/main/java/com/kiisoo/ic/job/count/CustomerCountJob.java +++ b/src/main/java/com/kiisoo/ic/job/count/CustomerCountJob.java @@ -6,6 +6,8 @@ import com.kiisoo.ic.employee.entity.PrivilageCpUserDO; import com.kiisoo.ic.employee.mapper.PrivilageCpUserDOMapper; import com.kiisoo.ic.store.entity.PrivilageCpUserStoreDO; import com.kiisoo.ic.store.mapper.PrivilageCpUserStoreDOMapper; +import com.kiisoo.ic.system.entity.SysTaskDO; +import com.kiisoo.ic.system.mapper.SysTaskDOMapper; import com.lmax.disruptor.BlockingWaitStrategy; import com.lmax.disruptor.RingBuffer; import com.lmax.disruptor.dsl.Disruptor; @@ -23,6 +25,7 @@ import java.util.concurrent.Executors; import java.util.stream.Collectors; import static com.kiisoo.ic.config.WxCpConfiguration.APPLICATIONID; +import static com.kiisoo.ic.system.constant.SysTaskConstant.TASK_STATUS_FINISHED; /** * Disruptor多个消费者不重复处理生产者发送过来的消息 @@ -42,9 +45,11 @@ public class CustomerCountJob { private PrivilageCpUserDOMapper privilageCpUserDOMapper; @Autowired private PrivilageCpUserStoreDOMapper privilageCpUserStoreDOMapper; + @Autowired + private SysTaskDOMapper sysTaskDOMapper; - public void handle(Boolean isAll) throws WxErrorException { + public void handle(Boolean isAll,SysTaskDO sysTaskDO) throws WxErrorException { //创建线程池 ExecutorService executors = Executors.newFixedThreadPool(THREAD_NUMBERS); @@ -88,5 +93,9 @@ public class CustomerCountJob { } disruptor.shutdown(); + + sysTaskDO.setStatus(TASK_STATUS_FINISHED); + sysTaskDOMapper.updateById(sysTaskDO); + } } diff --git a/src/main/java/com/kiisoo/ic/job/count/SyncCountJobService.java b/src/main/java/com/kiisoo/ic/job/count/SyncCountJobService.java index ce7a49f..08d2ee6 100644 --- a/src/main/java/com/kiisoo/ic/job/count/SyncCountJobService.java +++ b/src/main/java/com/kiisoo/ic/job/count/SyncCountJobService.java @@ -1,10 +1,18 @@ package com.kiisoo.ic.job.count; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.kiisoo.ic.system.entity.SysTaskDO; +import com.kiisoo.ic.system.mapper.SysTaskDOMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; -import org.springframework.web.bind.annotation.RequestParam; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Random; + +import static com.kiisoo.ic.system.constant.SysTaskConstant.*; @Service @Slf4j @@ -12,10 +20,42 @@ public class SyncCountJobService { @Autowired private CustomerCountJob customerDataJob; + @Autowired + private SysTaskDOMapper sysTaskDOMapper; + @Scheduled(cron = "0 0/15 9 * * ?") - public void getCustomerInfo(){ + public void syncStoreCount(){ + try { + int random = new Random(100).nextInt(); + Thread.sleep(random*1000); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:00"); + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("type",TASK_TYPE_STORE_COUNT).eq("create_time",sdf.format(new Date())).last("limit 1"); + SysTaskDO sysTaskDO = sysTaskDOMapper.selectOne(qw); + if (sysTaskDO == null){ + sysTaskDO = new SysTaskDO(TASK_NAME_STORE_COUNT,TASK_STATUS_RUNNING,TASK_TYPE_STORE_COUNT,new Date()); + sysTaskDOMapper.insert(sysTaskDO); + customerDataJob.handle(false,sysTaskDO); + } + }catch (Exception e){ + log.error("",e); + } + } + + @Scheduled(cron = "0 0 1 * * ?") + public void syncAllCount(){ try { - customerDataJob.handle(false); + int random = new Random(100).nextInt(); + Thread.sleep(random*1000); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:00:00"); + QueryWrapper qw = new QueryWrapper<>(); + qw.eq("type",TASK_TYPE_ALL_COUNT).eq("create_time",sdf.format(new Date())).last("limit 1"); + SysTaskDO sysTaskDO = sysTaskDOMapper.selectOne(qw); + if (sysTaskDO == null){ + sysTaskDO = new SysTaskDO(TASK_NAME_ALL_COUNT,TASK_STATUS_RUNNING,TASK_TYPE_ALL_COUNT,new Date()); + sysTaskDOMapper.insert(sysTaskDO); + customerDataJob.handle(true,sysTaskDO); + } }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 new file mode 100644 index 0000000..d347827 --- /dev/null +++ b/src/main/java/com/kiisoo/ic/system/constant/SysTaskConstant.java @@ -0,0 +1,38 @@ +package com.kiisoo.ic.system.constant; + +public class SysTaskConstant { + /** + * 全量跑品牌拓客任务类型 + */ + public static final Integer TASK_TYPE_ALL_COUNT = 1; + /** + * 全量跑店铺拓客任务类型 + */ + public static final Integer TASK_TYPE_STORE_COUNT = 2; + /** + * 全量跑客户统计类型 + */ + public static final Integer TASK_TYPE_USER_BEHAVIOR = 3; + /** + * 全量跑品牌拓客任务名 + */ + public static final String TASK_NAME_ALL_COUNT = "全量拓客总数"; + /** + * 全量跑店铺拓客任务名 + */ + public static final String TASK_NAME_STORE_COUNT = "店铺拓客总数"; + /** + * 全量跑客户统计任务名 + */ + public static final String TASK_NAME_USER_BEHAVIOR = "全量客户统计"; + + + /** + * 任务状态——正在运行 + */ + public static final Integer TASK_STATUS_RUNNING = 1; + /** + * 任务状态——已完成 + */ + public static final Integer TASK_STATUS_FINISHED = 2; +} diff --git a/src/main/java/com/kiisoo/ic/system/entity/SysTaskDO.java b/src/main/java/com/kiisoo/ic/system/entity/SysTaskDO.java new file mode 100644 index 0000000..711d2eb --- /dev/null +++ b/src/main/java/com/kiisoo/ic/system/entity/SysTaskDO.java @@ -0,0 +1,62 @@ +package com.kiisoo.ic.system.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.Date; + +/** + * sys_task + * @author + */ +@Data +@TableName("sys_task") +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class SysTaskDO implements Serializable { + /** + * 主键id + */ + @TableId(value = "id",type = IdType.AUTO) + private Integer id; + + /** + * 任务名 + */ + private String taskName; + + /** + * 状态 + */ + private Integer status; + + /** + * 类型:1、同步拓客总数 2、同步店铺拓客 3、同步客户统计 + */ + private Integer type; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 更新时间 + */ + private Date updateTime; + + private static final long serialVersionUID = 1L; + + public SysTaskDO() {} + public SysTaskDO(String taskName, Integer status, Integer type, Date createTime) { + this.taskName = taskName; + this.status = status; + this.type = type; + this.createTime = createTime; + } +} \ No newline at end of file diff --git a/src/main/java/com/kiisoo/ic/system/mapper/SysTaskDOMapper.java b/src/main/java/com/kiisoo/ic/system/mapper/SysTaskDOMapper.java new file mode 100644 index 0000000..47dcd56 --- /dev/null +++ b/src/main/java/com/kiisoo/ic/system/mapper/SysTaskDOMapper.java @@ -0,0 +1,8 @@ +package com.kiisoo.ic.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.kiisoo.ic.system.entity.SysTaskDO; + +public interface SysTaskDOMapper extends BaseMapper { + +} \ No newline at end of file diff --git a/src/main/resources/mapper/SysTaskDOMapper.xml b/src/main/resources/mapper/SysTaskDOMapper.xml new file mode 100644 index 0000000..9ef375b --- /dev/null +++ b/src/main/resources/mapper/SysTaskDOMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file