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
9dd137b6
提交
9dd137b6
authored
6月 16, 2025
作者:
000516
浏览文件
操作
浏览文件
下载
差异文件
合并qa代码
上级
ab525da7
0dedf084
隐藏空白字符变更
内嵌
并排
正在显示
38 个修改的文件
包含
1013 行增加
和
29 行删除
+1013
-29
SfaJobApplication.java
src/main/java/com/sfa/job/SfaJobApplication.java
+0
-1
IQinceMarketEmployeeDao.java
...om/sfa/job/domain/feishu/dao/IQinceMarketEmployeeDao.java
+17
-0
QinceMarketEmployeeDaoImpl.java
...sfa/job/domain/feishu/dao/QinceMarketEmployeeDaoImpl.java
+67
-0
QinceMarketEmployee.java
...com/sfa/job/domain/feishu/entity/QinceMarketEmployee.java
+74
-0
QinceMarketEmployeeMapper.java
...a/job/domain/feishu/mapper/QinceMarketEmployeeMapper.java
+26
-0
IQinceClienteleStoreDao.java
...com/sfa/job/domain/qince/dao/IQinceClienteleStoreDao.java
+14
-0
IQinceDealerDao.java
...in/java/com/sfa/job/domain/qince/dao/IQinceDealerDao.java
+3
-0
QinceClienteleStoreDaoImpl.java
.../sfa/job/domain/qince/dao/QinceClienteleStoreDaoImpl.java
+28
-0
QinceDealerDaoImpl.java
...java/com/sfa/job/domain/qince/dao/QinceDealerDaoImpl.java
+12
-0
QinceClienteleStore.java
.../com/sfa/job/domain/qince/entity/QinceClienteleStore.java
+196
-0
QinceDealer.java
...ain/java/com/sfa/job/domain/qince/entity/QinceDealer.java
+4
-0
QinceClienteleStoreMapper.java
...fa/job/domain/qince/mapper/QinceClienteleStoreMapper.java
+23
-0
QinceDealerMapper.java
...va/com/sfa/job/domain/qince/mapper/QinceDealerMapper.java
+5
-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
QinceMarketEmployeeDto.java
.../sfa/job/pojo/feishu/response/QinceMarketEmployeeDto.java
+50
-0
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
-6
IPullSheetService.java
...in/java/com/sfa/job/service/feishu/IPullSheetService.java
+11
-0
PullSheetServiceImpl.java
...java/com/sfa/job/service/feishu/PullSheetServiceImpl.java
+44
-0
IQinceDealerQueryService.java
...a/com/sfa/job/service/qince/IQinceDealerQueryService.java
+6
-0
QinceDealerQueryServiceImpl.java
...a/job/service/qince/impl/QinceDealerQueryServiceImpl.java
+70
-5
FeiShuUtil.java
src/main/java/com/sfa/job/util/FeiShuUtil.java
+27
-2
QinCeUtils.java
src/main/java/com/sfa/job/util/QinCeUtils.java
+16
-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
+28
-0
QinceCoreTask.java
src/main/java/com/sfa/job/xxljob/qince/QinceCoreTask.java
+20
-2
QinceMarketEmployeeMapper.xml
...ain/resources/mapper/feishu/QinceMarketEmployeeMapper.xml
+45
-0
QinceClienteleStoreMapper.xml
...main/resources/mapper/qince/QinceClienteleStoreMapper.xml
+74
-0
QinceDealerMapper.xml
src/main/resources/mapper/qince/QinceDealerMapper.xml
+27
-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
test
test
+2
-0
没有找到文件。
src/main/java/com/sfa/job/SfaJobApplication.java
浏览文件 @
9dd137b6
...
...
@@ -15,7 +15,6 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableRyFeignClients
@SpringBootApplication
@MapperScan
(
"com.sfa.job.domain.*.mapper"
)
//@MapperScan({"com.sfa.job.domain.job.mapper","com.sfa.job.domain.system.mapper","com.sfa.job.domain.order.mapper","com.sfa.job.domain.erp.mapper","com.sfa.job.domain.use.mapper"})
public
class
SfaJobApplication
{
public
static
void
main
(
String
[]
args
)
{
...
...
src/main/java/com/sfa/job/domain/feishu/dao/IQinceMarketEmployeeDao.java
0 → 100644
浏览文件 @
9dd137b6
package
com
.
sfa
.
job
.
domain
.
feishu
.
dao
;
import
com.alibaba.fastjson2.JSONArray
;
import
com.sfa.job.pojo.feishu.response.QinceMarketEmployeeDto
;
import
java.util.List
;
/**
* @author : liqiulin
* @date : 2025-05-20 16
* @describe :
*/
public
interface
IQinceMarketEmployeeDao
{
void
insert
(
JSONArray
jsonArray
);
List
<
QinceMarketEmployeeDto
>
selectByMd
(
String
dateStr
);
}
src/main/java/com/sfa/job/domain/feishu/dao/QinceMarketEmployeeDaoImpl.java
0 → 100644
浏览文件 @
9dd137b6
package
com
.
sfa
.
job
.
domain
.
feishu
.
dao
;
import
com.alibaba.fastjson2.JSONArray
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.sfa.common.core.utils.bean.BeanUtils
;
import
com.sfa.job.domain.feishu.entity.QinceMarketEmployee
;
import
com.sfa.job.domain.feishu.mapper.QinceMarketEmployeeMapper
;
import
com.sfa.job.pojo.feishu.response.QinceMarketEmployeeDto
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Objects
;
/**
* @author : liqiulin
* @date : 2025-05-20 16
* @describe :
*/
@DS
(
"promotion"
)
@Service
public
class
QinceMarketEmployeeDaoImpl
implements
IQinceMarketEmployeeDao
{
@Autowired
QinceMarketEmployeeMapper
qinceMarketEmployeeMapper
;
@Override
public
void
insert
(
JSONArray
jsonArray
)
{
// jsonArray = 大区总监工号 大区总监姓名 省区经理工号 省区经理姓名 城市经理工号 城市经理姓名
String
dqEmpNo
=
jsonArray
.
getString
(
0
);
String
dqEmpName
=
jsonArray
.
getString
(
1
);
String
zqEmpNo
=
jsonArray
.
getString
(
2
);
String
zqEmpName
=
jsonArray
.
getString
(
3
);
String
csEmpNo
=
jsonArray
.
getString
(
4
);
String
csEmpName
=
jsonArray
.
getString
(
5
);
List
<
QinceMarketEmployee
>
dos
=
new
ArrayList
<>();
if
(!
Objects
.
isNull
(
dqEmpNo
))
{
QinceMarketEmployee
dqDo
=
new
QinceMarketEmployee
().
setEmpNo
(
dqEmpNo
).
setEmpName
(
dqEmpName
)
.
setDqEmpNo
(
dqEmpNo
).
setDqEmpName
(
dqEmpName
);
dos
.
add
(
dqDo
);
}
if
(!
Objects
.
isNull
(
zqEmpNo
)){
QinceMarketEmployee
zqDo
=
new
QinceMarketEmployee
().
setEmpNo
(
zqEmpNo
).
setEmpName
(
zqEmpName
)
.
setZqEmpNo
(
zqEmpNo
).
setZqEmpName
(
zqEmpName
).
setDqEmpNo
(
dqEmpNo
).
setDqEmpName
(
dqEmpName
);
dos
.
add
(
zqDo
);
}
if
(!
Objects
.
isNull
(
csEmpNo
))
{
QinceMarketEmployee
csDo
=
new
QinceMarketEmployee
().
setEmpNo
(
csEmpNo
).
setEmpName
(
csEmpName
)
.
setCsEmpNo
(
csEmpNo
).
setCsEmpName
(
csEmpName
).
setZqEmpNo
(
zqEmpNo
).
setZqEmpName
(
zqEmpName
).
setDqEmpNo
(
dqEmpNo
).
setDqEmpName
(
dqEmpName
);
dos
.
add
(
csDo
);
}
if
(
CollectionUtils
.
isEmpty
(
dos
)){
return
;
}
qinceMarketEmployeeMapper
.
batchInsert
(
dos
);
}
@Override
public
List
<
QinceMarketEmployeeDto
>
selectByMd
(
String
dateStr
)
{
List
<
QinceMarketEmployee
>
dos
=
qinceMarketEmployeeMapper
.
selectByMd
(
dateStr
);
return
BeanUtils
.
transitionDtos
(
dos
,
QinceMarketEmployeeDto
.
class
);
}
}
src/main/java/com/sfa/job/domain/feishu/entity/QinceMarketEmployee.java
0 → 100644
浏览文件 @
9dd137b6
package
com
.
sfa
.
job
.
domain
.
feishu
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
java.util.Date
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
/**
* 勤策-区域销售人员架构表,来源:https://wangxiaolu.feishu.cn/sheets/I076slXhlhY2RdtDetEc17ornYd?sheet=49e4ba
* @TableName qince_market_employee
*/
@Accessors
(
chain
=
true
)
@TableName
(
value
=
"qince_market_employee"
)
@Data
public
class
QinceMarketEmployee
implements
Serializable
{
/**
* 主键id
*/
@TableId
(
type
=
IdType
.
AUTO
)
private
Integer
id
;
/**
* 大区总监
*/
private
String
dqEmpNo
;
/**
* 大区总监
*/
private
String
dqEmpName
;
/**
* 战区负责人
*/
private
String
zqEmpNo
;
/**
* 战区负责人
*/
private
String
zqEmpName
;
/**
* 城市经理
*/
private
String
csEmpNo
;
/**
* 城市经理
*/
private
String
csEmpName
;
/**
* 员工
*/
private
String
empNo
;
/**
* 员工
*/
private
String
empName
;
/**
* CP系统修改时间
*/
private
Date
modifyTime
;
@TableField
(
exist
=
false
)
private
static
final
long
serialVersionUID
=
1L
;
}
\ No newline at end of file
src/main/java/com/sfa/job/domain/feishu/mapper/QinceMarketEmployeeMapper.java
0 → 100644
浏览文件 @
9dd137b6
package
com
.
sfa
.
job
.
domain
.
feishu
.
mapper
;
import
com.sfa.job.domain.feishu.entity.QinceMarketEmployee
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* @author a02200059
* @description 针对表【qince_market_employee(勤策-区域销售人员架构表,来源:https://wangxiaolu.feishu.cn/sheets/I076slXhlhY2RdtDetEc17ornYd?sheet=49e4ba)】的数据库操作Mapper
* @createDate 2025-05-20 16:10:09
* @Entity com.sfa.job.domain.feishu.entity.QinceMarketEmployee
*/
@Repository
public
interface
QinceMarketEmployeeMapper
extends
BaseMapper
<
QinceMarketEmployee
>
{
void
batchInsert
(
@Param
(
"dos"
)
List
<
QinceMarketEmployee
>
dos
);
List
<
QinceMarketEmployee
>
selectByMd
(
String
dateStr
);
}
src/main/java/com/sfa/job/domain/qince/dao/IQinceClienteleStoreDao.java
0 → 100644
浏览文件 @
9dd137b6
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
浏览文件 @
9dd137b6
...
...
@@ -14,4 +14,7 @@ public interface IQinceDealerDao {
List
<
QinceDealerDto
>
getPushQinceDealers
();
List
<
QinceDealerDto
>
findModifyList
(
String
dateStr
);
List
<
QinceDealerDto
>
findListByManagerCode
(
String
empNo
);
}
src/main/java/com/sfa/job/domain/qince/dao/QinceClienteleStoreDaoImpl.java
0 → 100644
浏览文件 @
9dd137b6
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
浏览文件 @
9dd137b6
...
...
@@ -29,4 +29,16 @@ public class QinceDealerDaoImpl implements IQinceDealerDao{
List
<
QinceDealer
>
qinceDealers
=
qinceDealerMapper
.
pushQinceDealers
(
today
);
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
);
}
@Override
public
List
<
QinceDealerDto
>
findListByManagerCode
(
String
empNo
)
{
List
<
QinceDealer
>
qinceDealers
=
qinceDealerMapper
.
findListByManagerCode
(
empNo
);
return
BeanUtils
.
transitionDtos
(
qinceDealers
,
QinceDealerDto
.
class
);
}
}
src/main/java/com/sfa/job/domain/qince/entity/QinceClienteleStore.java
0 → 100644
浏览文件 @
9dd137b6
package
com
.
sfa
.
job
.
domain
.
qince
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
lombok.Data
;
/**
* 勤策-客户管理-终端
* @TableName qince_clientele_store
*/
@TableName
(
value
=
"qince_clientele_store"
)
@Data
public
class
QinceClienteleStore
implements
Serializable
{
/**
* 主键id
*/
@TableId
(
type
=
IdType
.
AUTO
)
private
Long
id
;
/**
* 勤策的门店唯一ID
*/
private
String
qcId
;
/**
* 创建人id,来源勤策员工唯一ID
*/
private
String
creatorWaiqinId
;
/**
* 创建人名称
*/
private
String
creatorName
;
/**
* 系统名称
*/
private
String
lineName
;
/**
* 门店名称
*/
private
String
storeName
;
/**
* 门店编码
*/
private
String
storeCode
;
/**
* 门店经理,多门店经理名称间以“,”分隔
*/
private
String
storeManager
;
/**
* 门店类型名称
*/
private
String
storeType
;
/**
* 是否连锁;是/否
*/
private
String
chain
;
/**
* 勤策门店所属部门ID
*/
private
String
storeDeptWaiqin365Id
;
/**
* 门店部门名称
*/
private
String
storeDeptName
;
/**
* 是否双T门店
*/
private
String
bothT
;
/**
* 门店所属行政区域-省份名称,如:北京市、江苏省
*/
private
String
storeMssProvince
;
/**
* 门店所属行政区域-城市名称,如:南京市
*/
private
String
storeMssCity
;
/**
* 门店所属行政区域-区县名称,如:鼓楼区
*/
private
String
storeMssArea
;
/**
* 门店所属行政区域-乡镇街道名称,如:宁海路街道
*/
private
String
storeMssStreet
;
/**
* 门店所在地址
*/
private
String
storeAddr
;
/**
* 店铺经纬度
*/
private
String
coordinates
;
/**
* 合作状态编码。0:终止合作,1:合作中,2:未合作,3:有意向
*/
private
String
storeCooperateStatus
;
/**
* 门店分层标签名称。多分层标签名称以“,”分隔
*/
private
String
storeLabel
;
/**
* 门店分层标签id。多分层标签id以“,”分隔
*/
private
String
storeLabelId
;
/**
* 是否直接交易客户。0:是,1:否
*/
private
String
storeSaleDirect
;
/**
* 门店修改时间。格式:yyyy-MM-dd HH:mm:ss
*/
private
String
storeModifyTime
;
/**
* 门店修改人名称
*/
private
String
storeModifyierName
;
/**
* 创建方式
*/
private
String
storeSourceType
;
/**
* 门店门头照信息,多个以“,”号隔开
*/
private
String
storePictures
;
/**
* 门店客户经理编码,即为员工登录账号,多客户经理唯一标识间以英文“,”隔开
*/
private
String
storeManagerCode
;
/**
* 创建人编码
*/
private
String
storeCreatorCode
;
/**
* 修改人编码,取最新修改记录操作人
*/
private
String
storeModifierCode
;
/**
* 门店审批状态。1:待审批,2:审批打回,3:审批通过
*/
private
String
storeApprovalStatus
;
/**
* 门店删除状态。0:删除,1:正常
*/
private
String
storeStatus
;
/**
* 创建日期。格式:yyyy-MM-dd HH:mm:ss
*/
private
String
createTime
;
/**
*
*/
private
String
dealersName
;
/**
* 经销商编码
*/
private
String
dealerId
;
@TableField
(
exist
=
false
)
private
static
final
long
serialVersionUID
=
1L
;
}
\ No newline at end of file
src/main/java/com/sfa/job/domain/qince/entity/QinceDealer.java
浏览文件 @
9dd137b6
...
...
@@ -51,6 +51,10 @@ public class QinceDealer implements Serializable {
*/
private
String
dealerDeptName
;
private
String
dealerManagerCode
;
private
String
dealerManager
;
/**
* 经销商编码
*/
...
...
src/main/java/com/sfa/job/domain/qince/mapper/QinceClienteleStoreMapper.java
0 → 100644
浏览文件 @
9dd137b6
package
com
.
sfa
.
job
.
domain
.
qince
.
mapper
;
import
com.sfa.job.domain.qince.entity.QinceClienteleStore
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
/**
* @author a02200059
* @description 针对表【qince_clientele_store(勤策-客户管理-终端)】的数据库操作Mapper
* @createDate 2025-05-09 10:45:54
* @Entity com.sfa.job.domain.qince.entity.QinceClienteleStore
*/
@Repository
public
interface
QinceClienteleStoreMapper
extends
BaseMapper
<
QinceClienteleStore
>
{
List
<
QinceClienteleStore
>
findListByDealerId
(
String
dealerId
);
}
src/main/java/com/sfa/job/domain/qince/mapper/QinceDealerMapper.java
浏览文件 @
9dd137b6
...
...
@@ -2,6 +2,7 @@ package com.sfa.job.domain.qince.mapper;
import
com.sfa.job.domain.qince.entity.QinceDealer
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.sfa.job.pojo.qince.response.QinceDealerDto
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
...
...
@@ -17,6 +18,10 @@ public interface QinceDealerMapper extends BaseMapper<QinceDealer> {
List
<
QinceDealer
>
pushQinceDealers
(
String
today
);
List
<
QinceDealer
>
findModifyList
(
String
dateStr
);
List
<
QinceDealer
>
findListByManagerCode
(
String
empNo
);
}
...
...
src/main/java/com/sfa/job/domain/use/dao/FeishuSheetRecordDaoImpl.java
浏览文件 @
9dd137b6
...
...
@@ -15,7 +15,7 @@ import org.springframework.stereotype.Service;
*/
@DS
(
"bi"
)
@Service
public
class
FeishuSheetRecordDaoImpl
implements
FeishuSheetRecordDao
{
public
class
FeishuSheetRecordDaoImpl
implements
IFeishuSheetRecordDao
{
@Autowired
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
浏览文件 @
9dd137b6
...
...
@@ -7,6 +7,6 @@ import com.sfa.job.pojo.response.FeishuSheetRecordDto;
* @date : 2025-04-08 17
* @describe :
*/
public
interface
FeishuSheetRecordDao
{
public
interface
I
FeishuSheetRecordDao
{
FeishuSheetRecordDto
selectOne
(
Integer
type
);
}
src/main/java/com/sfa/job/domain/use/entity/FeishuSheetRecord.java
浏览文件 @
9dd137b6
...
...
@@ -35,6 +35,11 @@ public class FeishuSheetRecord implements Serializable {
*/
private
String
createMonth
;
/**
* sheet页中的数据范围
*/
private
String
ranges
;
/**
* 1:axmr005_战区(每天);2:axmr005_战区(每月);
*/
...
...
src/main/java/com/sfa/job/enums/FSRecordEnum.java
浏览文件 @
9dd137b6
...
...
@@ -13,7 +13,10 @@ public enum FSRecordEnum {
* 1:axmr005_战区(每天)
*/
AXMR005_1
(
1
),
AXMR005_2
(
2
),
/**
* 营销中心-区域销售-逻辑组织架构
*/
XS_USER_RELATION
(
2
),
;
private
Integer
type
;
...
...
src/main/java/com/sfa/job/pojo/feishu/response/QinceMarketEmployeeDto.java
0 → 100644
浏览文件 @
9dd137b6
package
com
.
sfa
.
job
.
pojo
.
feishu
.
response
;
import
lombok.Data
;
import
lombok.experimental.Accessors
;
@Accessors
(
chain
=
true
)
@Data
public
class
QinceMarketEmployeeDto
{
/**
* 大区总监
*/
private
String
dqEmpNo
;
/**
* 大区总监
*/
private
String
dqEmpName
;
/**
* 战区负责人
*/
private
String
zqEmpNo
;
/**
* 战区负责人
*/
private
String
zqEmpName
;
/**
* 城市经理
*/
private
String
csEmpNo
;
/**
* 城市经理
*/
private
String
csEmpName
;
/**
* 员工
*/
private
String
empNo
;
/**
* 员工
*/
private
String
empName
;
}
\ No newline at end of file
src/main/java/com/sfa/job/pojo/qince/response/QinceClienteleStoreDto.java
0 → 100644
浏览文件 @
9dd137b6
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
浏览文件 @
9dd137b6
...
...
@@ -45,6 +45,10 @@ public class QinceDealerDto implements Serializable {
*/
private
String
dealerDeptName
;
private
String
dealerManagerCode
;
private
String
dealerManager
;
/**
* 经销商编码
*/
...
...
src/main/java/com/sfa/job/pojo/response/FeishuSheetRecordDto.java
浏览文件 @
9dd137b6
...
...
@@ -33,6 +33,11 @@ public class FeishuSheetRecordDto {
*/
private
String
createMonth
;
/**
* sheet页中的数据范围
*/
private
String
ranges
;
/**
* 1:axmr005_战区(每天);2:axmr005_战区(每月);
*/
...
...
src/main/java/com/sfa/job/service/erp/impl/ErpAxmr005ServiceImpl.java
浏览文件 @
9dd137b6
package
com
.
sfa
.
job
.
service
.
erp
.
impl
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.sfa.common.core.utils.DateUtils
;
import
com.sfa.job.domain.erp.dao.ErpAxmr005ShippingDetailsDao
;
import
com.sfa.job.pojo.response.FeishuSheetRecordDto
;
import
com.sfa.job.service.erp.ErpAxmr005Service
;
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.stereotype.Service
;
...
...
@@ -25,7 +24,7 @@ public class ErpAxmr005ServiceImpl implements ErpAxmr005Service {
@Autowired
private
ErpAxmr005ShippingDetailsDao
erpAxmr005ShippingDetailsDao
;
@Autowired
private
FeishuSheetRecordDao
feishuSheetRecordDao
;
private
I
FeishuSheetRecordDao
feishuSheetRecordDao
;
@Autowired
private
FeiShuUtil
feiShuUtil
;
...
...
@@ -42,13 +41,11 @@ public class ErpAxmr005ServiceImpl implements ErpAxmr005Service {
* 将结果推送到飞书表格,每次推100条
*/
String
range
=
recordDto
.
getSheetId
()
+
"!A:H"
;
JSONObject
botToken1
=
feiShuUtil
.
getBotToken1
();
String
tenantAccessToken
=
botToken1
.
getString
(
"tenant_access_token"
);
String
tenantAccessToken
=
feiShuUtil
.
getBotToken1
();
int
batchSize
=
100
;
for
(
int
i
=
0
;
i
<
zhanquDataset
.
size
();
i
+=
batchSize
)
{
// 计算当前批次的结束位置
int
end
=
Math
.
min
(
i
+
batchSize
,
zhanquDataset
.
size
());
System
.
out
.
println
(
end
);
List
<
Object
>
batch
=
zhanquDataset
.
subList
(
i
,
end
);
feiShuUtil
.
pushSetToSheet
(
range
,
batch
,
recordDto
.
getSheetToken
(),
tenantAccessToken
);
}
...
...
src/main/java/com/sfa/job/service/feishu/IPullSheetService.java
0 → 100644
浏览文件 @
9dd137b6
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
浏览文件 @
9dd137b6
package
com
.
sfa
.
job
.
service
.
feishu
;
import
com.alibaba.fastjson2.JSONArray
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.sfa.job.domain.feishu.dao.IQinceMarketEmployeeDao
;
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
IQinceMarketEmployeeDao
qinceMarketEmployeeDao
;
@Autowired
private
FeiShuUtil
feiShuUtil
;
/**
* 拉取表格 - 勤策门店的城市经理、省区经理、大区总监
*/
@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"
);
for
(
int
i
=
0
;
i
<
values
.
size
();
i
++)
{
JSONArray
jsonArray
=
values
.
getJSONArray
(
i
);
qinceMarketEmployeeDao
.
insert
(
jsonArray
);
}
}
}
src/main/java/com/sfa/job/service/qince/IQinceDealerQueryService.java
浏览文件 @
9dd137b6
...
...
@@ -7,4 +7,10 @@ package com.sfa.job.service.qince;
*/
public
interface
IQinceDealerQueryService
{
void
updateQinceDealerInfo
();
void
queryCusVisitRecord
();
void
updateQinceStore
();
}
src/main/java/com/sfa/job/service/qince/impl/QinceDealerQueryServiceImpl.java
浏览文件 @
9dd137b6
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.sfa.job.domain.feishu.dao.IQinceMarketEmployeeDao
;
import
com.sfa.job.domain.qince.dao.IQinceClienteleStoreDao
;
import
com.sfa.job.domain.qince.dao.IQinceDealerDao
;
import
com.sfa.job.pojo.feishu.response.QinceMarketEmployeeDto
;
import
com.sfa.job.pojo.qince.response.QinceClienteleStoreDto
;
import
com.sfa.job.pojo.qince.response.QinceDealerDto
;
import
com.sfa.job.service.qince.IQinceDealerQueryService
;
import
com.sfa.job.util.QinCeUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.groovy.util.Maps
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Arrays
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.*
;
/**
* @author : liqiulin
...
...
@@ -26,6 +31,10 @@ public class QinceDealerQueryServiceImpl implements IQinceDealerQueryService {
@Autowired
private
IQinceDealerDao
qinceDealerDao
;
@Autowired
private
IQinceClienteleStoreDao
qinceClienteleStoreDao
;
@Autowired
private
IQinceMarketEmployeeDao
qinceMarketEmployeeDao
;
@Autowired
private
QinCeUtils
qinCeUtils
;
@Override
...
...
@@ -65,6 +74,62 @@ 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
);
}
catch
(
Exception
e
)
{
log
.
error
(
"查询城市经理客户拜访失败:{}"
,
e
.
getMessage
());
}
}
@Override
public
void
updateQinceStore
()
{
// 第一步:查询有变动的人员信息:营销中心-逻辑组织架构表
// 第二步:根据每个人员信息,查询出所负责的经销商
// 第三步:根据每家经销商,查询出归属的有效门店
// 第四步:更新每家门店信息:大区、战区取经销商的;城市经理、战区经理、大区总监取人员架构表的
String
dateStr
=
DateUtil
.
today
();
List
<
QinceMarketEmployeeDto
>
empDtos
=
qinceMarketEmployeeDao
.
selectByMd
(
dateStr
);
for
(
QinceMarketEmployeeDto
empDto
:
empDtos
)
{
List
<
QinceDealerDto
>
dealers
=
qinceDealerDao
.
findListByManagerCode
(
empDto
.
getEmpNo
());
for
(
QinceDealerDto
dealer
:
dealers
)
{
List
<
QinceClienteleStoreDto
>
storeDtoList
=
qinceClienteleStoreDao
.
findListByDealerId
(
dealer
.
getDealerId
());
pushQinceStoreInfo
(
storeDtoList
,
dealer
,
empDto
);
}
}
}
private
void
pushQinceStoreInfo
(
List
<
QinceClienteleStoreDto
>
storeDtoList
,
QinceDealerDto
dealer
,
QinceMarketEmployeeDto
empDto
)
{
for
(
QinceClienteleStoreDto
storeDto
:
storeDtoList
)
{
Map
<
String
,
Object
>
params
=
new
HashMap
<>();
try
{
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"
,
empDto
.
getCsEmpName
()));
exts
.
add
(
Maps
.
of
(
"store_ext_key"
,
"战区经理"
,
"store_ext_value"
,
empDto
.
getZqEmpName
()));
exts
.
add
(
Maps
.
of
(
"store_ext_key"
,
"大区总监"
,
"store_ext_value"
,
empDto
.
getDqEmpName
()));
exts
.
add
(
Maps
.
of
(
"store_ext_key"
,
"大区"
,
"store_ext_value"
,
dealer
.
getDqOrgName
()));
exts
.
add
(
Maps
.
of
(
"store_ext_key"
,
"战区"
,
"store_ext_value"
,
dealer
.
getZqOrgName
()));
params
.
put
(
"exts"
,
exts
);
String
url
=
qinCeUtils
.
builderUrl
(
QinCeUtils
.
MODIFY_STORE
,
params
);
qinCeUtils
.
postQC
(
url
,
params
);
}
catch
(
Exception
e
)
{
log
.
error
(
"勤策门店更新失败:{}\n{}"
,
JSONObject
.
toJSONString
(
params
),
e
.
getMessage
());
}
}
}
}
src/main/java/com/sfa/job/util/FeiShuUtil.java
浏览文件 @
9dd137b6
...
...
@@ -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
VALUES_APPEND
=
"/values_append"
;
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
STYLE
=
"/style"
;
...
...
@@ -103,6 +104,26 @@ public class FeiShuUtil {
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
);
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
()
{
return
Client
.
newBuilder
(
appId
,
appSecret
).
build
();
}
...
...
@@ -128,7 +149,7 @@ public class FeiShuUtil {
}
public
JSONObject
getBotToken1
()
{
public
String
getBotToken1
()
{
Map
<
String
,
Object
>
bodyMap
=
new
HashMap
<>();
bodyMap
.
put
(
"app_id"
,
botAppId1
);
bodyMap
.
put
(
"app_secret"
,
botAppSecret1
);
...
...
@@ -144,7 +165,7 @@ public class FeiShuUtil {
if
(
code
!=
0
)
{
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
)
{
...
...
@@ -154,4 +175,8 @@ public class FeiShuUtil {
.
body
(
JSONObject
.
toJSONString
(
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
浏览文件 @
9dd137b6
package
com
.
sfa
.
job
.
util
;
import
cn.hutool.http.HttpUtil
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.codec.digest.DigestUtils
;
...
...
@@ -8,6 +9,7 @@ import org.springframework.beans.factory.annotation.Value;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.UUID
;
...
...
@@ -36,6 +38,8 @@ public class QinCeUtils {
*/
// 修改经销商
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
)
{
String
msgId
=
UUID
.
randomUUID
().
toString
();
...
...
@@ -45,8 +49,13 @@ public class QinCeUtils {
return
builder
.
toString
();
}
public
Map
<
String
,
Object
>
modifyDealerParams
(){
return
null
;
public
Map
<
String
,
Object
>
queryCusVisitRecordParams
(
String
visitDate
){
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
;
}
...
...
@@ -69,4 +78,9 @@ public class QinCeUtils {
String
digest
=
DigestUtils
.
md5Hex
(
json
+
"|"
+
APP_KEY
+
"|"
+
currentTimeMillis
);
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
浏览文件 @
9dd137b6
...
...
@@ -33,13 +33,6 @@ public class shippingTask {
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
)
{
erpAxmr005Service
.
axmr005ZQToFS
(
date
,
type
);
}
...
...
src/main/java/com/sfa/job/xxljob/feishu/PullSheet.java
0 → 100644
浏览文件 @
9dd137b6
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
;
/**
* 拉取表格 - 勤策门店的城市经理、省区经理、大区总监
* https://wangxiaolu.feishu.cn/sheets/I076slXhlhY2RdtDetEc17ornYd?sheet=49e4ba
*/
@XxlJob
(
"pull_sheet_store_manage"
)
public
void
qinceSotreManage
(){
pullSheetService
.
qinceSotreManage
();
}
}
src/main/java/com/sfa/job/xxljob/qince/QinceCoreTask.java
浏览文件 @
9dd137b6
...
...
@@ -19,8 +19,26 @@ public class QinceCoreTask {
@XxlJob
(
"qince_modify_dealer"
)
public
void
qinceCoreTask
()
{
log
.
info
(
"回写勤策经销商大区、战区信息 start"
);
log
.
info
(
"回写勤策
-
经销商大区、战区信息 start"
);
qinceCoreService
.
updateQinceDealerInfo
();
log
.
info
(
"回写勤策经销商大区、战区信息 end"
);
log
.
info
(
"回写勤策-经销商大区、战区信息 end"
);
}
@XxlJob
(
"qince_modify_store"
)
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/feishu/QinceMarketEmployeeMapper.xml
0 → 100644
浏览文件 @
9dd137b6
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.sfa.job.domain.feishu.mapper.QinceMarketEmployeeMapper"
>
<resultMap
id=
"BaseResultMap"
type=
"com.sfa.job.domain.feishu.entity.QinceMarketEmployee"
>
<id
property=
"id"
column=
"id"
jdbcType=
"INTEGER"
/>
<result
property=
"dqEmpNo"
column=
"dq_emp_no"
jdbcType=
"VARCHAR"
/>
<result
property=
"dqEmpName"
column=
"dq_emp_name"
jdbcType=
"VARCHAR"
/>
<result
property=
"zqEmpNo"
column=
"zq_emp_no"
jdbcType=
"VARCHAR"
/>
<result
property=
"zqEmpName"
column=
"zq_emp_name"
jdbcType=
"VARCHAR"
/>
<result
property=
"csEmpNo"
column=
"cs_emp_no"
jdbcType=
"VARCHAR"
/>
<result
property=
"csEmpName"
column=
"cs_emp_name"
jdbcType=
"VARCHAR"
/>
<result
property=
"empNo"
column=
"emp_no"
jdbcType=
"VARCHAR"
/>
<result
property=
"empName"
column=
"emp_name"
jdbcType=
"VARCHAR"
/>
<result
property=
"modifyTime"
column=
"modify_time"
jdbcType=
"TIMESTAMP"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id,dq_emp_no,dq_emp_name,
zq_emp_no,zq_emp_name,cs_emp_no,
cs_emp_name,emp_no,emp_name,
modify_time
</sql>
<insert
id=
"batchInsert"
parameterType=
"java.util.List"
>
insert into qince_market_employee (emp_no, emp_name, dq_emp_no, dq_emp_name, zq_emp_no, zq_emp_name, cs_emp_no,
cs_emp_name) values
<foreach
collection=
"dos"
item=
"item"
separator=
","
>
(#{item.empNo},#{item.empName},#{item.dqEmpNo},#{item.dqEmpName},#{item.zqEmpNo},#{item.zqEmpName},#{item.csEmpNo},#{item.csEmpName})
</foreach>
on duplicate key update emp_name = values(emp_name),dq_emp_no = values(dq_emp_no),dq_emp_name =
values(dq_emp_name),zq_emp_no = values(zq_emp_no),zq_emp_name = values(zq_emp_name),cs_emp_no = values(cs_emp_no),cs_emp_name =
values(cs_emp_name)
</insert>
<select
id=
"selectByMd"
resultMap=
"BaseResultMap"
>
select dq_emp_no,dq_emp_name,
zq_emp_no,zq_emp_name,cs_emp_no,
cs_emp_name,emp_no,emp_name
from qince_market_employee where DATE(modify_time) = #{dateStr}
</select>
</mapper>
src/main/resources/mapper/qince/QinceClienteleStoreMapper.xml
0 → 100644
浏览文件 @
9dd137b6
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.sfa.job.domain.qince.mapper.QinceClienteleStoreMapper"
>
<resultMap
id=
"BaseResultMap"
type=
"com.sfa.job.domain.qince.entity.QinceClienteleStore"
>
<id
property=
"id"
column=
"id"
jdbcType=
"BIGINT"
/>
<result
property=
"qcId"
column=
"qc_id"
jdbcType=
"VARCHAR"
/>
<result
property=
"creatorWaiqinId"
column=
"creator_waiqin_id"
jdbcType=
"VARCHAR"
/>
<result
property=
"creatorName"
column=
"creator_name"
jdbcType=
"VARCHAR"
/>
<result
property=
"lineName"
column=
"line_name"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeName"
column=
"store_name"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeCode"
column=
"store_code"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeManager"
column=
"store_manager"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeType"
column=
"store_type"
jdbcType=
"VARCHAR"
/>
<result
property=
"chain"
column=
"chain"
jdbcType=
"CHAR"
/>
<result
property=
"storeDeptWaiqin365Id"
column=
"store_dept_waiqin365_id"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeDeptName"
column=
"store_dept_name"
jdbcType=
"VARCHAR"
/>
<result
property=
"bothT"
column=
"both_t"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeMssProvince"
column=
"store_mss_province"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeMssCity"
column=
"store_mss_city"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeMssArea"
column=
"store_mss_area"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeMssStreet"
column=
"store_mss_street"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeAddr"
column=
"store_addr"
jdbcType=
"VARCHAR"
/>
<result
property=
"coordinates"
column=
"coordinates"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeCooperateStatus"
column=
"store_cooperate_status"
jdbcType=
"CHAR"
/>
<result
property=
"storeLabel"
column=
"store_label"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeLabelId"
column=
"store_label_id"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeSaleDirect"
column=
"store_sale_direct"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeModifyTime"
column=
"store_modify_time"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeModifyierName"
column=
"store_modifyier_name"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeSourceType"
column=
"store_source_type"
jdbcType=
"VARCHAR"
/>
<result
property=
"storePictures"
column=
"store_pictures"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeManagerCode"
column=
"store_manager_code"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeCreatorCode"
column=
"store_creator_code"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeModifierCode"
column=
"store_modifier_code"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeApprovalStatus"
column=
"store_approval_status"
jdbcType=
"CHAR"
/>
<result
property=
"storeStatus"
column=
"store_status"
jdbcType=
"CHAR"
/>
<result
property=
"createTime"
column=
"create_time"
jdbcType=
"CHAR"
/>
<result
property=
"dealersName"
column=
"dealers_name"
jdbcType=
"VARCHAR"
/>
<result
property=
"dealerId"
column=
"dealer_id"
jdbcType=
"VARCHAR"
/>
</resultMap>
<resultMap
id=
"Base_1"
type=
"com.sfa.job.domain.qince.entity.QinceClienteleStore"
>
<result
property=
"qcId"
column=
"qc_id"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeName"
column=
"store_name"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeCode"
column=
"store_code"
jdbcType=
"VARCHAR"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id,qc_id,creator_waiqin_id,
creator_name,line_name,store_name,
store_code,store_manager,store_type,
chain,store_dept_waiqin365_id,store_dept_name,
both_t,store_mss_province,store_mss_city,
store_mss_area,store_mss_street,store_addr,
coordinates,store_cooperate_status,store_label,
store_label_id,store_sale_direct,store_modify_time,
store_modifyier_name,store_source_type,store_pictures,
store_manager_code,store_creator_code,store_modifier_code,
store_approval_status,store_status,create_time,
dealers_name,dealer_id
</sql>
<select
id=
"findListByDealerId"
resultMap=
"Base_1"
>
select qc_id, store_name, store_code
from qince_clientele_store
where dealer_id = #{dealerId}
and store_cooperate_status = '1'
and store_approval_status = 3
and store_status = '1'
</select>
</mapper>
src/main/resources/mapper/qince/QinceDealerMapper.xml
浏览文件 @
9dd137b6
...
...
@@ -32,6 +32,14 @@
<result
property=
"dealerName"
column=
"dealer_name"
jdbcType=
"VARCHAR"
/>
</resultMap>
<resultMap
id=
"PushQince_2"
type=
"com.sfa.job.domain.qince.entity.QinceDealer"
>
<result
property=
"dqOrgName"
column=
"dq_org_name"
jdbcType=
"VARCHAR"
/>
<result
property=
"zqOrgName"
column=
"zq_org_name"
jdbcType=
"VARCHAR"
/>
<result
property=
"dealerId"
column=
"dealer_id"
jdbcType=
"VARCHAR"
/>
<result
property=
"dealerName"
column=
"dealer_name"
jdbcType=
"VARCHAR"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id,dq_org_qc_id,dq_org_name,
zq_org_qc_id,zq_org_name,dealer_dept_waiqin365_id,
...
...
@@ -57,4 +65,23 @@
and DATE (mt) = #{today}
</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>
<select
id=
"findListByManagerCode"
resultMap=
"PushQince"
>
select dq_org_name, zq_org_name, dealer_id, dealer_name
from qince_dealer
where dealer_type = '经销商'
and dealer_cooperate_status = '1'
and dealer_status = '1'
and dealer_manager_code = #{empNo}
</select>
</mapper>
src/main/resources/mapper/use/FeishuSheetRecordMapper.xml
浏览文件 @
9dd137b6
...
...
@@ -9,12 +9,13 @@
<result
property=
"sheetToken"
column=
"sheet_token"
jdbcType=
"VARCHAR"
/>
<result
property=
"sheetId"
column=
"sheet_id"
jdbcType=
"VARCHAR"
/>
<result
property=
"createMonth"
column=
"create_month"
jdbcType=
"VARCHAR"
/>
<result
property=
"ranges"
column=
"ranges"
jdbcType=
"VARCHAR"
/>
<result
property=
"type"
column=
"type"
jdbcType=
"INTEGER"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id,sheet_token,sheet_id,
create_month,type
create_month,
ranges,
type
</sql>
<select
id=
"findOne"
resultMap=
"BaseResultMap"
>
...
...
src/test/java/com/sfa/job/service/feishu/PullSheetServiceImplTest.java
0 → 100644
浏览文件 @
9dd137b6
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
浏览文件 @
9dd137b6
...
...
@@ -25,4 +25,14 @@ public class QinceDealerQueryServiceImplTest {
public
void
updateQinceDealerInfo
()
{
qinceDealerQueryService
.
updateQinceDealerInfo
();
}
@Test
public
void
queryCusVisitRecord
()
{
qinceDealerQueryService
.
queryCusVisitRecord
();
}
@Test
public
void
updateQinceStore
()
{
qinceDealerQueryService
.
updateQinceStore
();
}
}
\ No newline at end of file
test
0 → 100644
浏览文件 @
9dd137b6
测试钩子
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论