Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-export
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
promotion
wangxiaolu-export
Commits
1d687525
提交
1d687525
authored
8月 02, 2024
作者:
000516
提交者:
Coding
8月 02, 2024
浏览文件
操作
浏览文件
下载
差异文件
销售记录上传飞书创建定时任务
销售记录上传飞书创建定时任务
上级
179fe6ae
0d846e00
隐藏空白字符变更
内嵌
并排
正在显示
12 个修改的文件
包含
238 行增加
和
5 行删除
+238
-5
pom.xml
pom.xml
+12
-0
XxlJobConfig.java
src/main/java/com/wangxiaolu/export/config/XxlJobConfig.java
+79
-0
ActivityToFeishuSheet.java
...iaolu/export/controller/feishu/ActivityToFeishuSheet.java
+1
-1
TemporaryActivityClockMapper.java
...angxiaolu/export/mapper/TemporaryActivityClockMapper.java
+2
-0
TemporaryActivityReportedMapper.java
...xiaolu/export/mapper/TemporaryActivityReportedMapper.java
+2
-0
PromotionActivityService.java
...m/wangxiaolu/export/service/PromotionActivityService.java
+4
-0
ActivityToFeishuSheetServiceImpl.java
...export/service/impl/ActivityToFeishuSheetServiceImpl.java
+3
-2
PromotionActivityServiceImpl.java
...olu/export/service/impl/PromotionActivityServiceImpl.java
+12
-0
XxlJobHandler.java
.../java/com/wangxiaolu/export/xxljobtask/XxlJobHandler.java
+74
-0
application-dev.yml
src/main/resources/application-dev.yml
+16
-2
TemporaryActivityClockMapper.xml
src/main/resources/mapper/TemporaryActivityClockMapper.xml
+13
-0
TemporaryActivityReportedMapper.xml
...main/resources/mapper/TemporaryActivityReportedMapper.xml
+20
-0
没有找到文件。
pom.xml
浏览文件 @
1d687525
...
...
@@ -178,6 +178,18 @@
</exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/com.xuxueli/xxl-job-core -->
<dependency>
<groupId>
com.xuxueli
</groupId>
<artifactId>
xxl-job-core
</artifactId>
<exclusions>
<exclusion>
<artifactId>
slf4j-api
</artifactId>
<groupId>
org.slf4j
</groupId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
...
...
src/main/java/com/wangxiaolu/export/config/XxlJobConfig.java
0 → 100644
浏览文件 @
1d687525
package
com
.
wangxiaolu
.
export
.
config
;
import
com.xxl.job.core.executor.impl.XxlJobSpringExecutor
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
/**
* xxl-job config
*
* @author xuxueli 2017-04-28
*/
@Configuration
public
class
XxlJobConfig
{
private
Logger
logger
=
LoggerFactory
.
getLogger
(
XxlJobConfig
.
class
);
@Value
(
"${xxl.job.admin.addresses}"
)
private
String
adminAddresses
;
@Value
(
"${xxl.job.accessToken}"
)
private
String
accessToken
;
@Value
(
"${xxl.job.executor.appname}"
)
private
String
appname
;
@Value
(
"${xxl.job.executor.address}"
)
private
String
address
;
@Value
(
"${xxl.job.executor.ip}"
)
private
String
ip
;
@Value
(
"${xxl.job.executor.port}"
)
private
int
port
;
@Value
(
"${xxl.job.executor.logpath}"
)
private
String
logPath
;
@Value
(
"${xxl.job.executor.logretentiondays}"
)
private
int
logRetentionDays
;
@Bean
public
XxlJobSpringExecutor
xxlJobExecutor
()
{
logger
.
info
(
">>>>>>>>>>> xxl-job config init."
);
XxlJobSpringExecutor
xxlJobSpringExecutor
=
new
XxlJobSpringExecutor
();
xxlJobSpringExecutor
.
setAdminAddresses
(
adminAddresses
);
xxlJobSpringExecutor
.
setAppname
(
appname
);
xxlJobSpringExecutor
.
setAddress
(
address
);
xxlJobSpringExecutor
.
setIp
(
ip
);
xxlJobSpringExecutor
.
setPort
(
port
);
xxlJobSpringExecutor
.
setAccessToken
(
accessToken
);
xxlJobSpringExecutor
.
setLogPath
(
logPath
);
xxlJobSpringExecutor
.
setLogRetentionDays
(
logRetentionDays
);
return
xxlJobSpringExecutor
;
}
/**
* 针对多网卡、容器内部署等情况,可借助 "spring-cloud-commons" 提供的 "InetUtils" 组件灵活定制注册IP;
*
* 1、引入依赖:
* <dependency>
* <groupId>org.springframework.cloud</groupId>
* <artifactId>spring-cloud-commons</artifactId>
* <version>${version}</version>
* </dependency>
*
* 2、配置文件,或者容器启动变量
* spring.cloud.inetutils.preferred-networks: 'xxx.xxx.xxx.'
*
* 3、获取IP
* String ip_ = inetUtils.findFirstNonLoopbackHostInfo().getIpAddress();
*/
}
\ No newline at end of file
src/main/java/com/wangxiaolu/export/controller/feishu/ActivityToFeishuSheet.java
浏览文件 @
1d687525
...
...
@@ -38,7 +38,7 @@ public class ActivityToFeishuSheet {
* 飞书电子表格
* @param activityVo 查询活动创建日期范围
*/
@PostMapping
(
"/feishu/sheet"
)
//
@PostMapping("/feishu/sheet")
public
void
activityList
(
@RequestBody
ActivityVo
activityVo
)
{
/**
...
...
src/main/java/com/wangxiaolu/export/mapper/TemporaryActivityClockMapper.java
浏览文件 @
1d687525
...
...
@@ -19,6 +19,8 @@ import java.util.List;
@Repository
public
interface
TemporaryActivityClockMapper
extends
BaseMapper
<
TemporaryActivityClockDO
>
{
List
<
TemporaryActivityClockDO
>
findClockPhotoList
(
@Param
(
"params"
)
ActivityVo
activityVo
);
List
<
TemporaryActivityClockDO
>
findClockPhotoListByCreateDate
(
String
dateStr
);
}
...
...
src/main/java/com/wangxiaolu/export/mapper/TemporaryActivityReportedMapper.java
浏览文件 @
1d687525
...
...
@@ -21,6 +21,8 @@ import java.util.Map;
public
interface
TemporaryActivityReportedMapper
extends
BaseMapper
<
TemporaryActivityReportedDO
>
{
List
<
TemporaryActivityReportedDO
>
findList
(
@Param
(
"params"
)
ActivityVo
activityVo
);
List
<
TemporaryActivityReportedDO
>
findListByCreateDate
(
String
dateStr
);
}
...
...
src/main/java/com/wangxiaolu/export/service/PromotionActivityService.java
浏览文件 @
1d687525
...
...
@@ -20,10 +20,14 @@ public interface PromotionActivityService {
*/
List
<
TemporaryActivityReportedDO
>
findActivityList
(
ActivityVo
activityVo
);
List
<
TemporaryActivityReportedDO
>
findActivityListByCreateDate
(
String
dateStr
);
/**
* 查询打卡记录
*/
List
<
TemporaryActivityClockDO
>
findClockPhoto
(
ActivityVo
activityVo
);
Map
<
Long
,
List
<
TemporaryActivityPhotoDO
>>
findActivityPhotos
(
List
<
Long
>
activityId
);
List
<
TemporaryActivityClockDO
>
findClockPhotoByCreateDate
(
String
dateStr
);
}
src/main/java/com/wangxiaolu/export/service/impl/ActivityToFeishuSheetServiceImpl.java
浏览文件 @
1d687525
package
com
.
wangxiaolu
.
export
.
service
.
impl
;
import
cn.hutool.core.date.DatePattern
;
import
cn.hutool.core.date.DateUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
com.wangxiaolu.export.mapper.FeishuSheetRecordMapper
;
...
...
@@ -51,8 +52,8 @@ public class ActivityToFeishuSheetServiceImpl implements ActivityToFeishuSheetSe
@Override
public
void
activityDataToFeishuSheet
(
List
<
TemporaryActivityReportedDO
>
reportedDos
,
Map
<
Long
,
List
<
TemporaryActivityPhotoDO
>>
activityPhotos
,
Map
<
String
,
List
<
TemporaryActivityPhotoDO
>>
clockPhotoMap
)
{
sheetInfoD
=
null
;
// 查询要更新的电子表格、工作表,每天
晚上10点开始更新,所以获取当前
日期
String
month
=
DateUtil
.
format
(
new
Date
(),
"yyyy-MM"
);
// 查询要更新的电子表格、工作表,每天
凌晨开始更新,所以获取前一天
日期
String
month
=
DateUtil
.
format
(
DateUtil
.
yesterday
(),
"yyyy-MM"
);
FeishuSheetRecordDO
sheetInfo
=
feishuSheetRecordMapper
.
selectOneByCreateMonth
(
month
);
if
(
Objects
.
isNull
(
sheetInfo
))
{
log
.
error
(
"电子文档token信息获取失败,取消上传"
);
...
...
src/main/java/com/wangxiaolu/export/service/impl/PromotionActivityServiceImpl.java
浏览文件 @
1d687525
...
...
@@ -41,6 +41,12 @@ public class PromotionActivityServiceImpl implements PromotionActivityService {
return
dos
;
}
@Override
public
List
<
TemporaryActivityReportedDO
>
findActivityListByCreateDate
(
String
dateStr
)
{
List
<
TemporaryActivityReportedDO
>
dos
=
temporaryActivityReportedMapper
.
findListByCreateDate
(
dateStr
);
return
dos
;
}
/**
* 查询打卡记录
*/
...
...
@@ -60,4 +66,10 @@ public class PromotionActivityServiceImpl implements PromotionActivityService {
return
activityPhotoMap
;
}
@Override
public
List
<
TemporaryActivityClockDO
>
findClockPhotoByCreateDate
(
String
dateStr
)
{
List
<
TemporaryActivityClockDO
>
clockPhotoList
=
temporaryActivityClockMapper
.
findClockPhotoListByCreateDate
(
dateStr
);
return
clockPhotoList
;
}
}
src/main/java/com/wangxiaolu/export/xxljobtask/XxlJobHandler.java
0 → 100644
浏览文件 @
1d687525
package
com
.
wangxiaolu
.
export
.
xxljobtask
;
import
cn.hutool.core.date.DatePattern
;
import
cn.hutool.core.date.DateUtil
;
import
com.wangxiaolu.export.mapper.entity.TemporaryActivityClockDO
;
import
com.wangxiaolu.export.mapper.entity.TemporaryActivityPhotoDO
;
import
com.wangxiaolu.export.mapper.entity.TemporaryActivityReportedDO
;
import
com.wangxiaolu.export.pojo.ActivityVo
;
import
com.wangxiaolu.export.service.ActivityToFeishuSheetService
;
import
com.wangxiaolu.export.service.PromotionActivityService
;
import
com.xxl.job.core.handler.annotation.XxlJob
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
*
* 开发步骤:
* 1、任务开发:在Spring Bean实例中,开发Job方法;
* 2、注解配置:为Job方法添加注解 "@XxlJob(value="自定义jobhandler名称", init = "JobHandler初始化方法", destroy = "JobHandler销毁方法")",注解value值对应的是调度中心新建任务的JobHandler属性的值。
* 3、执行日志:需要通过 "XxlJobHelper.log" 打印执行日志;
* 4、任务结果:默认任务结果为 "成功" 状态,不需要主动设置;如有诉求,比如设置任务结果为失败,可以通过 "XxlJobHelper.handleFail/handleSuccess" 自主设置任务结果;
*
* @author xuxueli 2019-12-11 21:52:51
*/
@Component
@Slf4j
public
class
XxlJobHandler
{
@Autowired
PromotionActivityService
promotionActivityService
;
@Autowired
ActivityToFeishuSheetService
activityToFeishuSheetService
;
/**
* 昨日活动数据上传飞书
*/
@XxlJob
(
"yesterday_activity_push_feishu"
)
public
void
pushFeishuTask
()
{
/**
* 1>> 查询前一天的活动记录
*/
String
yt
=
DateUtil
.
format
(
DateUtil
.
yesterday
(),
DatePattern
.
NORM_DATE_PATTERN
);
List
<
TemporaryActivityReportedDO
>
reportedDos
=
promotionActivityService
.
findActivityListByCreateDate
(
yt
);
List
<
Long
>
activityId
=
reportedDos
.
stream
().
map
(
TemporaryActivityReportedDO:
:
getId
).
collect
(
Collectors
.
toList
());
Map
<
Long
,
List
<
TemporaryActivityPhotoDO
>>
activityPhotos
=
promotionActivityService
.
findActivityPhotos
(
activityId
);
/**
* 2>> 查询打卡记录
*/
List
<
TemporaryActivityClockDO
>
clockPhoto
=
promotionActivityService
.
findClockPhotoByCreateDate
(
yt
);
Map
<
String
,
List
<
TemporaryActivityPhotoDO
>>
clockPhotoMap
=
new
HashMap
<>();
clockPhoto
.
stream
().
forEach
(
cp
->
{
clockPhotoMap
.
put
(
cp
.
getTemporaryId
()
+
"-"
+
cp
.
getCreateDate
(),
cp
.
getPhotoList
());
});
log
.
info
(
"============== 活动记录上传飞书 start("
+
System
.
currentTimeMillis
()
+
") =============="
);
activityToFeishuSheetService
.
activityDataToFeishuSheet
(
reportedDos
,
activityPhotos
,
clockPhotoMap
);
log
.
info
(
"============== 活动记录上传飞书 end("
+
System
.
currentTimeMillis
()
+
") =============="
);
}
}
src/main/resources/application-dev.yml
浏览文件 @
1d687525
...
...
@@ -45,4 +45,18 @@ feishu:
app_secret
:
qzezaWe7Kxd61quiU9zRIf7COb4piEkF
activity_robot_2
:
app_id
:
cli_a6220d5dcadf900b
app_secret
:
WeVaZ6yGXFEON6Lkl53rFdhHc8beQF1Y
\ No newline at end of file
app_secret
:
WeVaZ6yGXFEON6Lkl53rFdhHc8beQF1Y
# xxl-job配置
xxl
:
job
:
accessToken
:
default_token
admin
:
addresses
:
http://42.193.103.153:9001/xxl-job-admin
executor
:
appname
:
promotion-dev
port
:
9989
logretentiondays
:
30
address
:
ip
:
logpath
:
/var/logs/xxl_job
# 执行器日志路径
\ No newline at end of file
src/main/resources/mapper/TemporaryActivityClockMapper.xml
浏览文件 @
1d687525
...
...
@@ -26,4 +26,17 @@
and ap.is_delete = 1;
</select>
<select
id=
"findClockPhotoListByCreateDate"
resultMap=
"clockMap"
>
select ar.temporary_id temporary_id,
ar.create_date create_date,
ap.type type,
ap.photo_url photo_url
from temporary_activity_reported ar
inner join temporary_activity_clock ac
on ar.temporary_id = ac.temporary_id and ar.create_date = ac.create_date
inner join temporary_activity_photo ap on ac.id = ap.clock_id
where ar.create_date = #{dateStr} and ap.is_delete = 1;
</select>
</mapper>
src/main/resources/mapper/TemporaryActivityReportedMapper.xml
浏览文件 @
1d687525
...
...
@@ -38,4 +38,24 @@
where (ar.create_time between #{params.createDateStart} and #{params.createDateEnd})
and (qd.org_name like '%战区' or qd.org_name = '重客运营部');
</select>
<select
id=
"findListByCreateDate"
resultMap=
"BaseResultMap"
>
select ar.id,
ar.temporary_id,
ar.approver_id,
ar.approve_name,
ar.city,
ar.create_date,
ar.store_id,
ar.store_name,
ar.activity_pattern,
ar.approve_status,
ps.line_name,
qd.org_name
from temporary_activity_reported ar
left join promotion_store ps on ar.store_id = ps.id
left join qince_employee qe on ar.approver_id = qe.qc_id
left join qince_department qd on qe.waiqin365_org_id = qd.qc_id
where ar.create_date = #{dateStr} and (qd.org_name like '%战区' or qd.org_name = '重客运营部')
</select>
</mapper>
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论