Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-sfa-module-job
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
sfa
wangxiaolu-sfa-module-job
Commits
7fbb5aec
提交
7fbb5aec
authored
5月 12, 2025
作者:
李秋林
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1、开发功能:通过有效的经销商,查询有效的门店,更新门店的大区、战区、大区总监、战区经理、城市经理(经销商的客户经理);2:代码封版
上级
3f3cfd34
隐藏空白字符变更
内嵌
并排
正在显示
27 个修改的文件
包含
405 行增加
和
25 行删除
+405
-25
IQinceClienteleStoreDao.java
...com/sfa/job/domain/qince/dao/IQinceClienteleStoreDao.java
+14
-0
IQinceDealerDao.java
...in/java/com/sfa/job/domain/qince/dao/IQinceDealerDao.java
+1
-0
QinceClienteleStoreDaoImpl.java
.../sfa/job/domain/qince/dao/QinceClienteleStoreDaoImpl.java
+28
-0
QinceDealerDaoImpl.java
...java/com/sfa/job/domain/qince/dao/QinceDealerDaoImpl.java
+6
-0
QinceDealer.java
...ain/java/com/sfa/job/domain/qince/entity/QinceDealer.java
+4
-0
QinceDealerMapper.java
...va/com/sfa/job/domain/qince/mapper/QinceDealerMapper.java
+3
-0
FeishuSheetRecordDaoImpl.java
.../com/sfa/job/domain/use/dao/FeishuSheetRecordDaoImpl.java
+1
-1
IFeishuSheetRecordDao.java
...ava/com/sfa/job/domain/use/dao/IFeishuSheetRecordDao.java
+1
-1
FeishuSheetRecord.java
...java/com/sfa/job/domain/use/entity/FeishuSheetRecord.java
+5
-0
FSRecordEnum.java
src/main/java/com/sfa/job/enums/FSRecordEnum.java
+4
-1
QinceClienteleStoreDto.java
...m/sfa/job/pojo/qince/response/QinceClienteleStoreDto.java
+61
-0
QinceDealerDto.java
.../java/com/sfa/job/pojo/qince/response/QinceDealerDto.java
+4
-0
FeishuSheetRecordDto.java
.../java/com/sfa/job/pojo/response/FeishuSheetRecordDto.java
+5
-0
ErpAxmr005ServiceImpl.java
...a/com/sfa/job/service/erp/impl/ErpAxmr005ServiceImpl.java
+3
-5
IPullSheetService.java
...in/java/com/sfa/job/service/feishu/IPullSheetService.java
+11
-0
PullSheetServiceImpl.java
...java/com/sfa/job/service/feishu/PullSheetServiceImpl.java
+45
-0
IQinceDealerQueryService.java
...a/com/sfa/job/service/qince/IQinceDealerQueryService.java
+6
-0
QinceDealerQueryServiceImpl.java
...a/job/service/qince/impl/QinceDealerQueryServiceImpl.java
+61
-5
FeiShuUtil.java
src/main/java/com/sfa/job/util/FeiShuUtil.java
+28
-2
QinCeUtils.java
src/main/java/com/sfa/job/util/QinCeUtils.java
+17
-2
shippingTask.java
src/main/java/com/sfa/job/xxljob/erp/shippingTask.java
+0
-7
PullSheet.java
src/main/java/com/sfa/job/xxljob/feishu/PullSheet.java
+23
-0
QinceCoreTask.java
src/main/java/com/sfa/job/xxljob/qince/QinceCoreTask.java
+14
-0
QinceDealerMapper.xml
src/main/resources/mapper/qince/QinceDealerMapper.xml
+20
-0
FeishuSheetRecordMapper.xml
src/main/resources/mapper/use/FeishuSheetRecordMapper.xml
+2
-1
PullSheetServiceImplTest.java
.../com/sfa/job/service/feishu/PullSheetServiceImplTest.java
+27
-0
QinceDealerQueryServiceImplTest.java
...b/service/qince/impl/QinceDealerQueryServiceImplTest.java
+11
-0
没有找到文件。
src/main/java/com/sfa/job/domain/qince/dao/IQinceClienteleStoreDao.java
0 → 100644
浏览文件 @
7fbb5aec
package
com
.
sfa
.
job
.
domain
.
qince
.
dao
;
import
com.sfa.job.pojo.qince.response.QinceClienteleStoreDto
;
import
java.util.List
;
/**
* @author : liqiulin
* @date : 2025-05-09 10
* @describe :
*/
public
interface
IQinceClienteleStoreDao
{
List
<
QinceClienteleStoreDto
>
findListByDealerId
(
String
dealerId
);
}
src/main/java/com/sfa/job/domain/qince/dao/IQinceDealerDao.java
浏览文件 @
7fbb5aec
...
@@ -14,4 +14,5 @@ public interface IQinceDealerDao {
...
@@ -14,4 +14,5 @@ public interface IQinceDealerDao {
List
<
QinceDealerDto
>
getPushQinceDealers
();
List
<
QinceDealerDto
>
getPushQinceDealers
();
List
<
QinceDealerDto
>
findModifyList
(
String
dateStr
);
}
}
src/main/java/com/sfa/job/domain/qince/dao/QinceClienteleStoreDaoImpl.java
0 → 100644
浏览文件 @
7fbb5aec
package
com
.
sfa
.
job
.
domain
.
qince
.
dao
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.sfa.common.core.utils.bean.BeanUtils
;
import
com.sfa.job.domain.qince.entity.QinceClienteleStore
;
import
com.sfa.job.domain.qince.mapper.QinceClienteleStoreMapper
;
import
com.sfa.job.pojo.qince.response.QinceClienteleStoreDto
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* @author : liqiulin
* @date : 2025-05-09 10
* @describe :
*/
@DS
(
"promotion"
)
@Service
public
class
QinceClienteleStoreDaoImpl
implements
IQinceClienteleStoreDao
{
@Autowired
private
QinceClienteleStoreMapper
qinceClienteleStoreMapper
;
@Override
public
List
<
QinceClienteleStoreDto
>
findListByDealerId
(
String
dealerId
)
{
List
<
QinceClienteleStore
>
storelist
=
qinceClienteleStoreMapper
.
findListByDealerId
(
dealerId
);
return
BeanUtils
.
transitionDtos
(
storelist
,
QinceClienteleStoreDto
.
class
);
}
}
src/main/java/com/sfa/job/domain/qince/dao/QinceDealerDaoImpl.java
浏览文件 @
7fbb5aec
...
@@ -29,4 +29,10 @@ public class QinceDealerDaoImpl implements IQinceDealerDao{
...
@@ -29,4 +29,10 @@ public class QinceDealerDaoImpl implements IQinceDealerDao{
List
<
QinceDealer
>
qinceDealers
=
qinceDealerMapper
.
pushQinceDealers
(
today
);
List
<
QinceDealer
>
qinceDealers
=
qinceDealerMapper
.
pushQinceDealers
(
today
);
return
BeanUtils
.
transitionDtos
(
qinceDealers
,
QinceDealerDto
.
class
);
return
BeanUtils
.
transitionDtos
(
qinceDealers
,
QinceDealerDto
.
class
);
}
}
@Override
public
List
<
QinceDealerDto
>
findModifyList
(
String
dateStr
)
{
List
<
QinceDealer
>
qinceDealers
=
qinceDealerMapper
.
findModifyList
(
dateStr
);
return
BeanUtils
.
transitionDtos
(
qinceDealers
,
QinceDealerDto
.
class
);
}
}
}
src/main/java/com/sfa/job/domain/qince/entity/QinceDealer.java
浏览文件 @
7fbb5aec
...
@@ -51,6 +51,10 @@ public class QinceDealer implements Serializable {
...
@@ -51,6 +51,10 @@ public class QinceDealer implements Serializable {
*/
*/
private
String
dealerDeptName
;
private
String
dealerDeptName
;
private
String
dealerManagerCode
;
private
String
dealerManager
;
/**
/**
* 经销商编码
* 经销商编码
*/
*/
...
...
src/main/java/com/sfa/job/domain/qince/mapper/QinceDealerMapper.java
浏览文件 @
7fbb5aec
...
@@ -2,6 +2,7 @@ package com.sfa.job.domain.qince.mapper;
...
@@ -2,6 +2,7 @@ package com.sfa.job.domain.qince.mapper;
import
com.sfa.job.domain.qince.entity.QinceDealer
;
import
com.sfa.job.domain.qince.entity.QinceDealer
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.sfa.job.pojo.qince.response.QinceDealerDto
;
import
org.springframework.stereotype.Repository
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
import
java.util.List
;
...
@@ -17,6 +18,8 @@ public interface QinceDealerMapper extends BaseMapper<QinceDealer> {
...
@@ -17,6 +18,8 @@ public interface QinceDealerMapper extends BaseMapper<QinceDealer> {
List
<
QinceDealer
>
pushQinceDealers
(
String
today
);
List
<
QinceDealer
>
pushQinceDealers
(
String
today
);
List
<
QinceDealer
>
findModifyList
(
String
dateStr
);
}
}
...
...
src/main/java/com/sfa/job/domain/use/dao/FeishuSheetRecordDaoImpl.java
浏览文件 @
7fbb5aec
...
@@ -15,7 +15,7 @@ import org.springframework.stereotype.Service;
...
@@ -15,7 +15,7 @@ import org.springframework.stereotype.Service;
*/
*/
@DS
(
"bi"
)
@DS
(
"bi"
)
@Service
@Service
public
class
FeishuSheetRecordDaoImpl
implements
FeishuSheetRecordDao
{
public
class
FeishuSheetRecordDaoImpl
implements
IFeishuSheetRecordDao
{
@Autowired
@Autowired
private
FeishuSheetRecordMapper
feishuSheetRecordMapper
;
private
FeishuSheetRecordMapper
feishuSheetRecordMapper
;
...
...
src/main/java/com/sfa/job/domain/use/dao/FeishuSheetRecordDao.java
→
src/main/java/com/sfa/job/domain/use/dao/
I
FeishuSheetRecordDao.java
浏览文件 @
7fbb5aec
...
@@ -7,6 +7,6 @@ import com.sfa.job.pojo.response.FeishuSheetRecordDto;
...
@@ -7,6 +7,6 @@ import com.sfa.job.pojo.response.FeishuSheetRecordDto;
* @date : 2025-04-08 17
* @date : 2025-04-08 17
* @describe :
* @describe :
*/
*/
public
interface
FeishuSheetRecordDao
{
public
interface
I
FeishuSheetRecordDao
{
FeishuSheetRecordDto
selectOne
(
Integer
type
);
FeishuSheetRecordDto
selectOne
(
Integer
type
);
}
}
src/main/java/com/sfa/job/domain/use/entity/FeishuSheetRecord.java
浏览文件 @
7fbb5aec
...
@@ -35,6 +35,11 @@ public class FeishuSheetRecord implements Serializable {
...
@@ -35,6 +35,11 @@ public class FeishuSheetRecord implements Serializable {
*/
*/
private
String
createMonth
;
private
String
createMonth
;
/**
* sheet页中的数据范围
*/
private
String
ranges
;
/**
/**
* 1:axmr005_战区(每天);2:axmr005_战区(每月);
* 1:axmr005_战区(每天);2:axmr005_战区(每月);
*/
*/
...
...
src/main/java/com/sfa/job/enums/FSRecordEnum.java
浏览文件 @
7fbb5aec
...
@@ -13,7 +13,10 @@ public enum FSRecordEnum {
...
@@ -13,7 +13,10 @@ public enum FSRecordEnum {
* 1:axmr005_战区(每天)
* 1:axmr005_战区(每天)
*/
*/
AXMR005_1
(
1
),
AXMR005_1
(
1
),
AXMR005_2
(
2
),
/**
* 营销中心-区域销售-逻辑组织架构
*/
XS_USER_RELATION
(
2
),
;
;
private
Integer
type
;
private
Integer
type
;
...
...
src/main/java/com/sfa/job/pojo/qince/response/QinceClienteleStoreDto.java
0 → 100644
浏览文件 @
7fbb5aec
package
com
.
sfa
.
job
.
pojo
.
qince
.
response
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.io.Serializable
;
/**
* 勤策-客户管理-终端
*/
@AllArgsConstructor
@NoArgsConstructor
@Data
public
class
QinceClienteleStoreDto
implements
Serializable
{
/**
* 主键id
*/
private
Long
id
;
/**
* 勤策的门店唯一ID
*/
private
String
qcId
;
/**
* 门店名称
*/
private
String
storeName
;
/**
* 门店编码
*/
private
String
storeCode
;
/**
* 城市经理
*/
private
String
managerName
;
/**
*
* 战区经理
*/
private
String
zqManagerName
;
/**
* 大区总监
*/
private
String
dqManagerName
;
@TableField
(
exist
=
false
)
private
static
final
long
serialVersionUID
=
1L
;
public
QinceClienteleStoreDto
(
String
managerName
,
String
zqManagerName
,
String
dqManagerName
)
{
this
.
managerName
=
managerName
;
this
.
zqManagerName
=
zqManagerName
;
this
.
dqManagerName
=
dqManagerName
;
}
}
\ No newline at end of file
src/main/java/com/sfa/job/pojo/qince/response/QinceDealerDto.java
浏览文件 @
7fbb5aec
...
@@ -45,6 +45,10 @@ public class QinceDealerDto implements Serializable {
...
@@ -45,6 +45,10 @@ public class QinceDealerDto implements Serializable {
*/
*/
private
String
dealerDeptName
;
private
String
dealerDeptName
;
private
String
dealerManagerCode
;
private
String
dealerManager
;
/**
/**
* 经销商编码
* 经销商编码
*/
*/
...
...
src/main/java/com/sfa/job/pojo/response/FeishuSheetRecordDto.java
浏览文件 @
7fbb5aec
...
@@ -33,6 +33,11 @@ public class FeishuSheetRecordDto {
...
@@ -33,6 +33,11 @@ public class FeishuSheetRecordDto {
*/
*/
private
String
createMonth
;
private
String
createMonth
;
/**
* sheet页中的数据范围
*/
private
String
ranges
;
/**
/**
* 1:axmr005_战区(每天);2:axmr005_战区(每月);
* 1:axmr005_战区(每天);2:axmr005_战区(每月);
*/
*/
...
...
src/main/java/com/sfa/job/service/erp/impl/ErpAxmr005ServiceImpl.java
浏览文件 @
7fbb5aec
package
com
.
sfa
.
job
.
service
.
erp
.
impl
;
package
com
.
sfa
.
job
.
service
.
erp
.
impl
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.sfa.common.core.utils.DateUtils
;
import
com.sfa.job.domain.erp.dao.ErpAxmr005ShippingDetailsDao
;
import
com.sfa.job.domain.erp.dao.ErpAxmr005ShippingDetailsDao
;
import
com.sfa.job.pojo.response.FeishuSheetRecordDto
;
import
com.sfa.job.pojo.response.FeishuSheetRecordDto
;
import
com.sfa.job.service.erp.ErpAxmr005Service
;
import
com.sfa.job.service.erp.ErpAxmr005Service
;
import
com.sfa.job.util.FeiShuUtil
;
import
com.sfa.job.util.FeiShuUtil
;
import
com.sfa.job.domain.use.dao.FeishuSheetRecordDao
;
import
com.sfa.job.domain.use.dao.
I
FeishuSheetRecordDao
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -25,7 +24,7 @@ public class ErpAxmr005ServiceImpl implements ErpAxmr005Service {
...
@@ -25,7 +24,7 @@ public class ErpAxmr005ServiceImpl implements ErpAxmr005Service {
@Autowired
@Autowired
private
ErpAxmr005ShippingDetailsDao
erpAxmr005ShippingDetailsDao
;
private
ErpAxmr005ShippingDetailsDao
erpAxmr005ShippingDetailsDao
;
@Autowired
@Autowired
private
FeishuSheetRecordDao
feishuSheetRecordDao
;
private
I
FeishuSheetRecordDao
feishuSheetRecordDao
;
@Autowired
@Autowired
private
FeiShuUtil
feiShuUtil
;
private
FeiShuUtil
feiShuUtil
;
...
@@ -42,8 +41,7 @@ public class ErpAxmr005ServiceImpl implements ErpAxmr005Service {
...
@@ -42,8 +41,7 @@ public class ErpAxmr005ServiceImpl implements ErpAxmr005Service {
* 将结果推送到飞书表格,每次推100条
* 将结果推送到飞书表格,每次推100条
*/
*/
String
range
=
recordDto
.
getSheetId
()
+
"!A:H"
;
String
range
=
recordDto
.
getSheetId
()
+
"!A:H"
;
JSONObject
botToken1
=
feiShuUtil
.
getBotToken1
();
String
tenantAccessToken
=
feiShuUtil
.
getBotToken1
();
String
tenantAccessToken
=
botToken1
.
getString
(
"tenant_access_token"
);
int
batchSize
=
100
;
int
batchSize
=
100
;
for
(
int
i
=
0
;
i
<
zhanquDataset
.
size
();
i
+=
batchSize
)
{
for
(
int
i
=
0
;
i
<
zhanquDataset
.
size
();
i
+=
batchSize
)
{
// 计算当前批次的结束位置
// 计算当前批次的结束位置
...
...
src/main/java/com/sfa/job/service/feishu/IPullSheetService.java
0 → 100644
浏览文件 @
7fbb5aec
package
com
.
sfa
.
job
.
service
.
feishu
;
/**
* @author : liqiulin
* @date : 2025-05-09 16
* @describe :
*/
public
interface
IPullSheetService
{
void
qinceSotreManage
();
}
src/main/java/com/sfa/job/service/feishu/PullSheetServiceImpl.java
0 → 100644
浏览文件 @
7fbb5aec
package
com
.
sfa
.
job
.
service
.
feishu
;
import
com.alibaba.fastjson2.JSONArray
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.sfa.job.domain.use.dao.IFeishuSheetRecordDao
;
import
com.sfa.job.enums.FSRecordEnum
;
import
com.sfa.job.pojo.response.FeishuSheetRecordDto
;
import
com.sfa.job.util.FeiShuUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.stream.DoubleStream
;
/**
* @author : liqiulin
* @date : 2025-05-09 16
* @describe :
*/
@Service
public
class
PullSheetServiceImpl
implements
IPullSheetService
{
@Autowired
private
IFeishuSheetRecordDao
feishushetRecordDao
;
@Autowired
private
FeiShuUtil
feiShuUtil
;
/**
* 拉取表格 - 勤策门店的城市经理、省区经理、大区总监
* https://wangxiaolu.feishu.cn/sheets/I076slXhlhY2RdtDetEc17ornYd?sheet=49e4ba
*/
@Override
public
void
qinceSotreManage
()
{
FeishuSheetRecordDto
recordDto
=
feishushetRecordDao
.
selectOne
(
FSRecordEnum
.
XS_USER_RELATION
.
getType
());
JSONObject
jsonObject
=
feiShuUtil
.
pullSheetOneRange
(
recordDto
.
getSheetToken
(),
feiShuUtil
.
getBotToken1
(),
recordDto
.
getRanges
());
JSONArray
values
=
jsonObject
.
getJSONArray
(
"values"
);
// 创建逻辑构架人员关系表
// 创建逻辑构架人员关系对象
// 遍历values数组,获取每个对象的values数组
values
.
forEach
(
item
->
{
JSONArray
jsonArray
=
(
JSONArray
)
item
;
});
}
}
src/main/java/com/sfa/job/service/qince/IQinceDealerQueryService.java
浏览文件 @
7fbb5aec
...
@@ -7,4 +7,10 @@ package com.sfa.job.service.qince;
...
@@ -7,4 +7,10 @@ package com.sfa.job.service.qince;
*/
*/
public
interface
IQinceDealerQueryService
{
public
interface
IQinceDealerQueryService
{
void
updateQinceDealerInfo
();
void
updateQinceDealerInfo
();
void
queryCusVisitRecord
();
void
updateQinceStore
();
}
}
src/main/java/com/sfa/job/service/qince/impl/QinceDealerQueryServiceImpl.java
浏览文件 @
7fbb5aec
package
com
.
sfa
.
job
.
service
.
qince
.
impl
;
package
com
.
sfa
.
job
.
service
.
qince
.
impl
;
import
cn.hutool.core.date.DatePattern
;
import
cn.hutool.core.date.DateUtil
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.sfa.job.domain.qince.dao.IQinceClienteleStoreDao
;
import
com.sfa.job.domain.qince.dao.IQinceDealerDao
;
import
com.sfa.job.domain.qince.dao.IQinceDealerDao
;
import
com.sfa.job.pojo.qince.response.QinceClienteleStoreDto
;
import
com.sfa.job.pojo.qince.response.QinceDealerDto
;
import
com.sfa.job.pojo.qince.response.QinceDealerDto
;
import
com.sfa.job.service.qince.IQinceDealerQueryService
;
import
com.sfa.job.service.qince.IQinceDealerQueryService
;
import
com.sfa.job.util.QinCeUtils
;
import
com.sfa.job.util.QinCeUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.groovy.util.Maps
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.Arrays
;
import
java.util.*
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
/**
* @author : liqiulin
* @author : liqiulin
...
@@ -26,6 +29,8 @@ public class QinceDealerQueryServiceImpl implements IQinceDealerQueryService {
...
@@ -26,6 +29,8 @@ public class QinceDealerQueryServiceImpl implements IQinceDealerQueryService {
@Autowired
@Autowired
private
IQinceDealerDao
qinceDealerDao
;
private
IQinceDealerDao
qinceDealerDao
;
@Autowired
@Autowired
private
IQinceClienteleStoreDao
qinceClienteleStoreDao
;
@Autowired
private
QinCeUtils
qinCeUtils
;
private
QinCeUtils
qinCeUtils
;
@Override
@Override
...
@@ -65,6 +70,57 @@ public class QinceDealerQueryServiceImpl implements IQinceDealerQueryService {
...
@@ -65,6 +70,57 @@ public class QinceDealerQueryServiceImpl implements IQinceDealerQueryService {
}
}
}
}
log
.
info
(
"更新勤策经销商战区、大区信息完成,更新量:{}"
,
pushQinceDealers
.
size
());
log
.
info
(
"更新勤策经销商战区、大区信息完成,更新量:{}"
,
pushQinceDealers
.
size
());
}
@Override
public
void
queryCusVisitRecord
()
{
try
{
// 获取t-1日期
String
queryDate
=
DateUtil
.
yesterday
().
toString
(
DatePattern
.
NORM_DATE_PATTERN
);
Map
<
String
,
Object
>
params
=
qinCeUtils
.
queryCusVisitRecordParams
(
queryDate
);
String
url
=
qinCeUtils
.
builderUrl
(
QinCeUtils
.
QUERY_CUS_VISIT_RECORD
,
params
);
JSONArray
recordsJson
=
qinCeUtils
.
postArray
(
url
,
params
);
System
.
out
.
println
(
recordsJson
);
}
catch
(
Exception
e
)
{
log
.
error
(
"查询城市经理客户拜访失败:{}"
,
e
.
getMessage
());
}
}
@Override
public
void
updateQinceStore
()
{
String
dateStr
=
DateUtil
.
today
();
List
<
QinceDealerDto
>
dealers
=
qinceDealerDao
.
findModifyList
(
dateStr
);
for
(
QinceDealerDto
dealer
:
dealers
)
{
List
<
QinceClienteleStoreDto
>
storeDtoList
=
qinceClienteleStoreDao
.
findListByDealerId
(
dealer
.
getDealerId
());
// 查询客户经理的上级、上上级
String
managerCode
=
dealer
.
getDealerManagerCode
();
QinceClienteleStoreDto
storeInfo
=
new
QinceClienteleStoreDto
(
dealer
.
getDealerManager
(),
""
,
""
);
pushQinceStoreInfo
(
storeDtoList
,
storeInfo
);
break
;
}
}
private
void
pushQinceStoreInfo
(
List
<
QinceClienteleStoreDto
>
storeDtoList
,
QinceClienteleStoreDto
storeInfo
)
{
for
(
QinceClienteleStoreDto
storeDto
:
storeDtoList
)
{
try
{
System
.
out
.
println
(
storeDto
.
getQcId
()
+
" ---- "
+
storeDto
.
getStoreName
());
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
params
.
put
(
"store_waiqin_id"
,
storeDto
.
getQcId
());
params
.
put
(
"store_name"
,
storeDto
.
getStoreName
());
List
<
Map
<
String
,
String
>>
exts
=
new
ArrayList
<>();
exts
.
add
(
Maps
.
of
(
"store_ext_key"
,
"城市经理"
,
"store_ext_value"
,
storeInfo
.
getManagerName
()));
exts
.
add
(
Maps
.
of
(
"store_ext_key"
,
"战区经理"
,
"store_ext_value"
,
""
));
exts
.
add
(
Maps
.
of
(
"store_ext_key"
,
"大区总监"
,
"store_ext_value"
,
""
));
params
.
put
(
"exts"
,
exts
);
// String url = qinCeUtils.builderUrl(QinCeUtils.MODIFY_STORE, params);
// JSONObject jsonObject = qinCeUtils.postQC(url, params);
}
catch
(
Exception
e
)
{
log
.
error
(
"更新勤策门店失败:{}"
,
e
.
getMessage
());
}
break
;
}
}
}
}
}
src/main/java/com/sfa/job/util/FeiShuUtil.java
浏览文件 @
7fbb5aec
...
@@ -47,6 +47,7 @@ public class FeiShuUtil {
...
@@ -47,6 +47,7 @@ public class FeiShuUtil {
private
static
final
String
TENANT_ACCESS_TOKEN_URL
=
"https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"
;
private
static
final
String
TENANT_ACCESS_TOKEN_URL
=
"https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"
;
private
static
final
String
VALUES_APPEND
=
"/values_append"
;
private
static
final
String
VALUES_APPEND
=
"/values_append"
;
private
static
final
String
VALUES_IMAGE
=
"/values_image"
;
private
static
final
String
VALUES_IMAGE
=
"/values_image"
;
private
static
final
String
VALUES_BATCH_GET
=
"/values_batch_get"
;
private
static
final
String
VALUES
=
"/values"
;
private
static
final
String
VALUES
=
"/values"
;
private
static
final
String
STYLE
=
"/style"
;
private
static
final
String
STYLE
=
"/style"
;
...
@@ -103,6 +104,27 @@ public class FeiShuUtil {
...
@@ -103,6 +104,27 @@ public class FeiShuUtil {
return
null
;
return
null
;
}
}
/**
* 获取表格数据
*/
public
JSONArray
pullSheet
(
String
sheetToken
,
String
autoToken
,
String
ranges
)
{
try
{
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
params
.
put
(
"ranges"
,
ranges
);
String
result
=
HttpUtil
.
createGet
(
SHEET_URL
+
sheetToken
+
VALUES_BATCH_GET
).
form
(
params
).
auth
(
"Bearer "
+
autoToken
).
contentType
(
CONTENT_TYPE
).
execute
().
body
();
JSONObject
resultJson
=
JSONObject
.
parseObject
(
result
);
System
.
out
.
println
(
resultJson
);
int
code
=
resultJson
.
getInteger
(
"code"
);
if
(
code
!=
0
)
{
throw
new
RuntimeException
(
"获取飞书表格范围数据错误:"
+
resultJson
.
getString
(
"msg"
));
}
return
resultJson
.
getJSONObject
(
"data"
).
getJSONArray
(
"valueRanges"
);
}
catch
(
Exception
e
)
{
log
.
error
(
"拉取表格数据失败,停止执行!"
,
e
);
}
return
new
JSONArray
();
}
private
Client
getClient
()
{
private
Client
getClient
()
{
return
Client
.
newBuilder
(
appId
,
appSecret
).
build
();
return
Client
.
newBuilder
(
appId
,
appSecret
).
build
();
}
}
...
@@ -128,7 +150,7 @@ public class FeiShuUtil {
...
@@ -128,7 +150,7 @@ public class FeiShuUtil {
}
}
public
JSONObject
getBotToken1
()
{
public
String
getBotToken1
()
{
Map
<
String
,
Object
>
bodyMap
=
new
HashMap
<>();
Map
<
String
,
Object
>
bodyMap
=
new
HashMap
<>();
bodyMap
.
put
(
"app_id"
,
botAppId1
);
bodyMap
.
put
(
"app_id"
,
botAppId1
);
bodyMap
.
put
(
"app_secret"
,
botAppSecret1
);
bodyMap
.
put
(
"app_secret"
,
botAppSecret1
);
...
@@ -144,7 +166,7 @@ public class FeiShuUtil {
...
@@ -144,7 +166,7 @@ public class FeiShuUtil {
if
(
code
!=
0
)
{
if
(
code
!=
0
)
{
throw
new
RuntimeException
(
"获取tenant_access_token错误"
);
throw
new
RuntimeException
(
"获取tenant_access_token错误"
);
}
}
return
resultJson
;
return
resultJson
.
getString
(
"tenant_access_token"
)
;
}
}
public
void
appendStyle
(
String
sheetToken
,
Map
<
String
,
Object
>
body
,
String
autoToken
)
{
public
void
appendStyle
(
String
sheetToken
,
Map
<
String
,
Object
>
body
,
String
autoToken
)
{
...
@@ -154,4 +176,8 @@ public class FeiShuUtil {
...
@@ -154,4 +176,8 @@ public class FeiShuUtil {
.
body
(
JSONObject
.
toJSONString
(
body
))
.
body
(
JSONObject
.
toJSONString
(
body
))
.
execute
().
body
();
.
execute
().
body
();
}
}
public
JSONObject
pullSheetOneRange
(
String
sheetToken
,
String
botToken1
,
String
ranges
)
{
return
pullSheet
(
sheetToken
,
botToken1
,
ranges
).
getJSONObject
(
0
);
}
}
}
src/main/java/com/sfa/job/util/QinCeUtils.java
浏览文件 @
7fbb5aec
package
com
.
sfa
.
job
.
util
;
package
com
.
sfa
.
job
.
util
;
import
cn.hutool.http.HttpUtil
;
import
cn.hutool.http.HttpUtil
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.codec.digest.DigestUtils
;
import
org.apache.commons.codec.digest.DigestUtils
;
...
@@ -8,6 +9,7 @@ import org.springframework.beans.factory.annotation.Value;
...
@@ -8,6 +9,7 @@ import org.springframework.beans.factory.annotation.Value;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.UUID
;
import
java.util.UUID
;
...
@@ -36,6 +38,8 @@ public class QinCeUtils {
...
@@ -36,6 +38,8 @@ public class QinCeUtils {
*/
*/
// 修改经销商
// 修改经销商
public
static
final
String
MODIFY_DEALER
=
"/api/dealer/v1/modifyDealer/"
;
public
static
final
String
MODIFY_DEALER
=
"/api/dealer/v1/modifyDealer/"
;
public
static
final
String
MODIFY_STORE
=
"/api/store/v1/modifyStore/"
;
public
static
final
String
QUERY_CUS_VISIT_RECORD
=
"/api/cusVisit/v1/queryCusVisitRecord/"
;
public
String
builderUrl
(
String
sidepath
,
Map
<
String
,
Object
>
params
)
{
public
String
builderUrl
(
String
sidepath
,
Map
<
String
,
Object
>
params
)
{
String
msgId
=
UUID
.
randomUUID
().
toString
();
String
msgId
=
UUID
.
randomUUID
().
toString
();
...
@@ -45,8 +49,13 @@ public class QinCeUtils {
...
@@ -45,8 +49,13 @@ public class QinCeUtils {
return
builder
.
toString
();
return
builder
.
toString
();
}
}
public
Map
<
String
,
Object
>
modifyDealerParams
(){
public
Map
<
String
,
Object
>
queryCusVisitRecordParams
(
String
visitDate
){
return
null
;
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
params
.
put
(
"date_start"
,
visitDate
);
params
.
put
(
"date_end"
,
visitDate
);
params
.
put
(
"page"
,
"1"
);
params
.
put
(
"rows"
,
"1000"
);
return
params
;
}
}
...
@@ -56,6 +65,7 @@ public class QinCeUtils {
...
@@ -56,6 +65,7 @@ public class QinCeUtils {
JSONObject
resultJson
=
JSONObject
.
parseObject
(
requestBody
);
JSONObject
resultJson
=
JSONObject
.
parseObject
(
requestBody
);
String
returnCode
=
resultJson
.
getString
(
"return_code"
);
String
returnCode
=
resultJson
.
getString
(
"return_code"
);
if
(!
"0"
.
equals
(
returnCode
))
{
if
(!
"0"
.
equals
(
returnCode
))
{
log
.
error
(
"请求错误,返回结果:{}"
,
requestBody
);
throw
new
RuntimeException
(
"OkHttp.post请求error,详情:"
+
requestBody
);
throw
new
RuntimeException
(
"OkHttp.post请求error,详情:"
+
requestBody
);
}
}
return
resultJson
;
return
resultJson
;
...
@@ -69,4 +79,9 @@ public class QinCeUtils {
...
@@ -69,4 +79,9 @@ public class QinCeUtils {
String
digest
=
DigestUtils
.
md5Hex
(
json
+
"|"
+
APP_KEY
+
"|"
+
currentTimeMillis
);
String
digest
=
DigestUtils
.
md5Hex
(
json
+
"|"
+
APP_KEY
+
"|"
+
currentTimeMillis
);
return
digest
;
return
digest
;
}
}
public
JSONArray
postArray
(
String
url
,
Map
<
String
,
Object
>
params
)
throws
Exception
{
JSONObject
jsonObject
=
postQC
(
url
,
params
);
return
jsonObject
.
getJSONArray
(
"response_data"
);
}
}
}
src/main/java/com/sfa/job/xxljob/erp/shippingTask.java
浏览文件 @
7fbb5aec
...
@@ -33,13 +33,6 @@ public class shippingTask {
...
@@ -33,13 +33,6 @@ public class shippingTask {
axmr005ZQToFSByDate
(
date
,
type
);
axmr005ZQToFSByDate
(
date
,
type
);
}
}
@XxlJob
(
"axmr005_zhanqu_month"
)
public
void
axmr005ZQByMonth
()
{
Date
date
=
DateUtils
.
addDays
(
new
Date
(),
-
4
);
Integer
type
=
FSRecordEnum
.
AXMR005_2
.
getType
();
axmr005ZQToFSByDate
(
date
,
type
);
}
private
void
axmr005ZQToFSByDate
(
Date
date
,
Integer
type
)
{
private
void
axmr005ZQToFSByDate
(
Date
date
,
Integer
type
)
{
erpAxmr005Service
.
axmr005ZQToFS
(
date
,
type
);
erpAxmr005Service
.
axmr005ZQToFS
(
date
,
type
);
}
}
...
...
src/main/java/com/sfa/job/xxljob/feishu/PullSheet.java
0 → 100644
浏览文件 @
7fbb5aec
package
com
.
sfa
.
job
.
xxljob
.
feishu
;
import
com.sfa.job.service.feishu.IPullSheetService
;
import
com.xxl.job.core.handler.annotation.XxlJob
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
/**
* @author : liqiulin
* @date : 2025-05-09 15
* @describe :
*/
@Component
public
class
PullSheet
{
@Autowired
private
IPullSheetService
pullSheetService
;
@XxlJob
(
"PullSheetSotreManage"
)
public
void
qinceSotreManage
(){
pullSheetService
.
qinceSotreManage
();
}
}
src/main/java/com/sfa/job/xxljob/qince/QinceCoreTask.java
浏览文件 @
7fbb5aec
...
@@ -23,4 +23,18 @@ public class QinceCoreTask {
...
@@ -23,4 +23,18 @@ public class QinceCoreTask {
qinceCoreService
.
updateQinceDealerInfo
();
qinceCoreService
.
updateQinceDealerInfo
();
log
.
info
(
"回写勤策经销商大区、战区信息 end"
);
log
.
info
(
"回写勤策经销商大区、战区信息 end"
);
}
}
public
void
qinceCoreStore
(){
log
.
info
(
"回写勤策门店城市经理、战区经理、大区总监 start"
);
qinceCoreService
.
updateQinceStore
();
log
.
info
(
"回写勤策门店城市经理、战区经理、大区总监 end"
);
}
@XxlJob
(
"qince_cus_visit_record"
)
public
void
queryCusVisitRecord
()
{
log
.
info
(
"查询勤策客户拜访记录 start"
);
qinceCoreService
.
queryCusVisitRecord
();
log
.
info
(
"查询勤策客户拜访记录 start"
);
}
}
}
src/main/resources/mapper/qince/QinceDealerMapper.xml
浏览文件 @
7fbb5aec
...
@@ -32,6 +32,15 @@
...
@@ -32,6 +32,15 @@
<result
property=
"dealerName"
column=
"dealer_name"
jdbcType=
"VARCHAR"
/>
<result
property=
"dealerName"
column=
"dealer_name"
jdbcType=
"VARCHAR"
/>
</resultMap>
</resultMap>
<resultMap
id=
"PushQince_2"
type=
"com.sfa.job.domain.qince.entity.QinceDealer"
>
<id
property=
"id"
column=
"id"
jdbcType=
"INTEGER"
/>
<result
property=
"dealerId"
column=
"dealer_id"
jdbcType=
"VARCHAR"
/>
<result
property=
"dealerName"
column=
"dealer_name"
jdbcType=
"VARCHAR"
/>
<result
property=
"dealerManagerCode"
column=
"dealer_manager_code"
jdbcType=
"VARCHAR"
/>
<result
property=
"dealerManager"
column=
"dealer_manager"
jdbcType=
"VARCHAR"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
<sql
id=
"Base_Column_List"
>
id,dq_org_qc_id,dq_org_name,
id,dq_org_qc_id,dq_org_name,
zq_org_qc_id,zq_org_name,dealer_dept_waiqin365_id,
zq_org_qc_id,zq_org_name,dealer_dept_waiqin365_id,
...
@@ -57,4 +66,15 @@
...
@@ -57,4 +66,15 @@
and DATE (mt) = #{today}
and DATE (mt) = #{today}
</select>
</select>
<!--
and DATE(mt) = #{dateStr};-->
<select
id=
"findModifyList"
resultMap=
"PushQince_2"
>
select dealer_id, dealer_name, dealer_manager, dealer_manager_code
from qince_dealer
where dealer_type = '经销商'
and dealer_cooperate_status = '1'
and dealer_status = '1'
and dealer_id = '000324'
</select>
</mapper>
</mapper>
src/main/resources/mapper/use/FeishuSheetRecordMapper.xml
浏览文件 @
7fbb5aec
...
@@ -9,12 +9,13 @@
...
@@ -9,12 +9,13 @@
<result
property=
"sheetToken"
column=
"sheet_token"
jdbcType=
"VARCHAR"
/>
<result
property=
"sheetToken"
column=
"sheet_token"
jdbcType=
"VARCHAR"
/>
<result
property=
"sheetId"
column=
"sheet_id"
jdbcType=
"VARCHAR"
/>
<result
property=
"sheetId"
column=
"sheet_id"
jdbcType=
"VARCHAR"
/>
<result
property=
"createMonth"
column=
"create_month"
jdbcType=
"VARCHAR"
/>
<result
property=
"createMonth"
column=
"create_month"
jdbcType=
"VARCHAR"
/>
<result
property=
"ranges"
column=
"ranges"
jdbcType=
"VARCHAR"
/>
<result
property=
"type"
column=
"type"
jdbcType=
"INTEGER"
/>
<result
property=
"type"
column=
"type"
jdbcType=
"INTEGER"
/>
</resultMap>
</resultMap>
<sql
id=
"Base_Column_List"
>
<sql
id=
"Base_Column_List"
>
id,sheet_token,sheet_id,
id,sheet_token,sheet_id,
create_month,type
create_month,
ranges,
type
</sql>
</sql>
<select
id=
"findOne"
resultMap=
"BaseResultMap"
>
<select
id=
"findOne"
resultMap=
"BaseResultMap"
>
...
...
src/test/java/com/sfa/job/service/feishu/PullSheetServiceImplTest.java
0 → 100644
浏览文件 @
7fbb5aec
package
com
.
sfa
.
job
.
service
.
feishu
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringRunner
;
import
static
org
.
junit
.
Assert
.*;
/**
* @author : liqiulin
* @date : 2025-05-09 17
* @describe :
*/
@RunWith
(
SpringRunner
.
class
)
@SpringBootTest
public
class
PullSheetServiceImplTest
{
@Autowired
private
PullSheetServiceImpl
pullSheetService
;
@Test
public
void
qinceSotreManage
()
{
pullSheetService
.
qinceSotreManage
();
}
}
\ No newline at end of file
src/test/java/com/sfa/job/service/qince/impl/QinceDealerQueryServiceImplTest.java
浏览文件 @
7fbb5aec
...
@@ -25,4 +25,14 @@ public class QinceDealerQueryServiceImplTest {
...
@@ -25,4 +25,14 @@ public class QinceDealerQueryServiceImplTest {
public
void
updateQinceDealerInfo
()
{
public
void
updateQinceDealerInfo
()
{
qinceDealerQueryService
.
updateQinceDealerInfo
();
qinceDealerQueryService
.
updateQinceDealerInfo
();
}
}
@Test
public
void
queryCusVisitRecord
()
{
qinceDealerQueryService
.
queryCusVisitRecord
();
}
@Test
public
void
updateQinceStore
()
{
qinceDealerQueryService
.
updateQinceStore
();
}
}
}
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论