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
d3a896be
提交
d3a896be
authored
1月 20, 2025
作者:
吕本才
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1、尝试将代码放到job微服务
上级
3a7382f6
显示空白字符变更
内嵌
并排
正在显示
34 个修改的文件
包含
1549 行增加
和
55 行删除
+1549
-55
pom.xml
pom.xml
+0
-5
SfaJobApplication.java
src/main/java/com/sfa/job/SfaJobApplication.java
+3
-5
FinanceOrderDetailSyncController.java
.../controller/finance/FinanceOrderDetailSyncController.java
+1
-1
CollectErrorInfoDao.java
...ava/com/sfa/job/domain/order/dao/CollectErrorInfoDao.java
+9
-0
CollectOrderLogInfoDao.java
.../com/sfa/job/domain/order/dao/CollectOrderLogInfoDao.java
+12
-0
IProductDao.java
src/main/java/com/sfa/job/domain/order/dao/IProductDao.java
+16
-0
CollectErrorInfoDaoImpl.java
...fa/job/domain/order/dao/impl/CollectErrorInfoDaoImpl.java
+23
-0
CollectOrderLogInfoDaoImpl.java
...job/domain/order/dao/impl/CollectOrderLogInfoDaoImpl.java
+45
-0
FinanceBaseZbjTypeServiceImpl.java
.../domain/order/dao/impl/FinanceBaseZbjTypeServiceImpl.java
+35
-0
ProductDaoImpl.java
...ava/com/sfa/job/domain/order/dao/impl/ProductDaoImpl.java
+31
-0
CollectErrorInfo.java
...ava/com/sfa/job/domain/order/entity/CollectErrorInfo.java
+93
-0
CollectOrderLogInfo.java
.../com/sfa/job/domain/order/entity/CollectOrderLogInfo.java
+97
-0
FinanceBaseProduct.java
...a/com/sfa/job/domain/order/entity/FinanceBaseProduct.java
+59
-0
FinanceBaseZbjType.java
...a/com/sfa/job/domain/order/entity/FinanceBaseZbjType.java
+42
-0
FinanceOrder.java
...in/java/com/sfa/job/domain/order/entity/FinanceOrder.java
+342
-0
FinanceOrderDetail.java
...a/com/sfa/job/domain/order/entity/FinanceOrderDetail.java
+421
-0
PrdInfo.java
src/main/java/com/sfa/job/domain/order/entity/PrdInfo.java
+61
-0
CollectErrorInfoMapper.java
...m/sfa/job/domain/order/mapper/CollectErrorInfoMapper.java
+9
-0
CollectOrderLogInfoMapper.java
...fa/job/domain/order/mapper/CollectOrderLogInfoMapper.java
+9
-0
FinanceBaseProductMapper.java
...sfa/job/domain/order/mapper/FinanceBaseProductMapper.java
+10
-0
FinanceBaseZbjTypeMapper.java
...sfa/job/domain/order/mapper/FinanceBaseZbjTypeMapper.java
+10
-0
FinanceOrderDetailMapper.java
...sfa/job/domain/order/mapper/FinanceOrderDetailMapper.java
+11
-0
FinanceOrderMapper.java
...a/com/sfa/job/domain/order/mapper/FinanceOrderMapper.java
+10
-0
PrdInfoMapper.java
...n/java/com/sfa/job/domain/order/mapper/PrdInfoMapper.java
+21
-0
FinanceSyncOrderDetailDto.java
.../com/sfa/job/pojo/response/FinanceSyncOrderDetailDto.java
+24
-0
FinanceBaseProductService.java
.../com/sfa/job/service/order/FinanceBaseProductService.java
+12
-0
FinanceBaseZbjTypeService.java
.../com/sfa/job/service/order/FinanceBaseZbjTypeService.java
+12
-0
FinanceOrderDetailService.java
.../com/sfa/job/service/order/FinanceOrderDetailService.java
+7
-0
FinanceOrderSyncService.java
...va/com/sfa/job/service/order/FinanceOrderSyncService.java
+2
-2
FinanceBaseProductServiceImpl.java
...job/service/order/impl/FinanceBaseProductServiceImpl.java
+39
-0
FinanceOrderDetailServiceImpl.java
...job/service/order/impl/FinanceOrderDetailServiceImpl.java
+22
-0
FinanceOrderSyncServiceImpl.java
...a/job/service/order/impl/FinanceOrderSyncServiceImpl.java
+47
-26
WangdiantongUtil.java
src/main/java/com/sfa/job/util/WangdiantongUtil.java
+13
-15
FinanceOrderTask.java
src/main/java/com/sfa/job/xxljob/order/FinanceOrderTask.java
+1
-1
没有找到文件。
pom.xml
浏览文件 @
d3a896be
...
...
@@ -124,11 +124,6 @@
<groupId>
com.squareup.okhttp3
</groupId>
<artifactId>
okhttp
</artifactId>
</dependency>
<!-- RuoYi wangxiaolu-link-module-bi -->
<dependency>
<groupId>
com.wangxiaolu.sfa
</groupId>
<artifactId>
wangxiaolu-link-module-bi
</artifactId>
</dependency>
</dependencies>
...
...
src/main/java/com/sfa/job/SfaJobApplication.java
浏览文件 @
d3a896be
package
com
.
sfa
.
job
;
import
com.sfa.common.security.annotation.EnableCustomConfig
;
import
com.sfa.common.security.annotation.EnableRyFeignClients
;
import
org.mybatis.spring.annotation.MapperScan
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
com.sfa.common.security.annotation.EnableCustomConfig
;
import
com.sfa.common.security.annotation.EnableRyFeignClients
;
import
org.springframework.context.annotation.ComponentScan
;
/**
* 定时任务
...
...
@@ -15,8 +14,7 @@ import org.springframework.context.annotation.ComponentScan;
@EnableCustomConfig
@EnableRyFeignClients
@SpringBootApplication
@ComponentScan
(
value
=
{
"com.sfa.job"
,
"com.link.bi.domain.*"
,
"com.link.bi.service.*"
,
"com.link.bi.pojo.*"
})
@MapperScan
({
"com.sfa.job.domain.job.mapper"
,
"com.sfa.job.domain.system.mapper"
,
"com.link.bi.domain.mapper"
})
@MapperScan
({
"com.sfa.job.domain.job.mapper"
,
"com.sfa.job.domain.system.mapper"
,
"com.sfa.job.domain.order.mapper"
})
public
class
SfaJobApplication
{
public
static
void
main
(
String
[]
args
)
{
...
...
src/main/java/com/sfa/job/controller/finance/FinanceOrderDetailSyncController.java
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
controller
.
finance
;
import
cn.hutool.core.date.DateUtil
;
import
com.link.bi.pojo.response.FinanceSyncOrderDetailDto
;
import
com.sfa.common.core.web.controller.BaseController
;
import
com.sfa.job.pojo.response.FinanceSyncOrderDetailDto
;
import
com.sfa.job.service.order.FinanceOrderSyncService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
src/main/java/com/sfa/job/domain/order/dao/CollectErrorInfoDao.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
domain
.
order
.
dao
;
import
com.sfa.job.domain.order.entity.CollectErrorInfo
;
public
interface
CollectErrorInfoDao
{
// 插入一条记录
void
insert
(
CollectErrorInfo
collectErrorInfo
);
}
src/main/java/com/sfa/job/domain/order/dao/CollectOrderLogInfoDao.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
domain
.
order
.
dao
;
import
com.sfa.job.domain.order.entity.CollectOrderLogInfo
;
import
java.util.Date
;
public
interface
CollectOrderLogInfoDao
{
// 插入一条记录
void
insert
(
CollectOrderLogInfo
collectOrderLogInfo
);
Date
selectOrderSyncLatest
(
Integer
syncType
);
}
src/main/java/com/sfa/job/domain/order/dao/IProductDao.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
domain
.
order
.
dao
;
import
com.sfa.job.domain.order.entity.PrdInfo
;
import
java.util.List
;
/**
* @author : liqiulin
* @date : 2024-11-22 16
* @describe :
*/
public
interface
IProductDao
{
List
<
PrdInfo
>
selectProdSeries
();
}
src/main/java/com/sfa/job/domain/order/dao/impl/CollectErrorInfoDaoImpl.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
domain
.
order
.
dao
.
impl
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.sfa.job.domain.order.dao.CollectErrorInfoDao
;
import
com.sfa.job.domain.order.entity.CollectErrorInfo
;
import
com.sfa.job.domain.order.mapper.CollectErrorInfoMapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Repository
;
@DS
(
"Bi"
)
@Repository
public
class
CollectErrorInfoDaoImpl
implements
CollectErrorInfoDao
{
@Autowired
private
CollectErrorInfoMapper
collectErrorInfoMapper
;
@Override
public
void
insert
(
CollectErrorInfo
collectErrorInfo
)
{
collectErrorInfoMapper
.
insert
(
collectErrorInfo
);
}
}
src/main/java/com/sfa/job/domain/order/dao/impl/CollectOrderLogInfoDaoImpl.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
domain
.
order
.
dao
.
impl
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.sfa.job.domain.order.dao.CollectOrderLogInfoDao
;
import
com.sfa.job.domain.order.entity.CollectOrderLogInfo
;
import
com.sfa.job.domain.order.mapper.CollectOrderLogInfoMapper
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Repository
;
import
java.util.Date
;
import
java.util.List
;
@DS
(
"Bi"
)
@Repository
public
class
CollectOrderLogInfoDaoImpl
implements
CollectOrderLogInfoDao
{
@Autowired
private
CollectOrderLogInfoMapper
logInfoMapper
;
@Override
public
void
insert
(
CollectOrderLogInfo
collectOrderLogInfo
)
{
logInfoMapper
.
insert
(
collectOrderLogInfo
);
}
@Override
public
Date
selectOrderSyncLatest
(
Integer
syncType
)
{
// 查询最新发货日期
List
<
CollectOrderLogInfo
>
orderList
=
logInfoMapper
.
selectList
(
new
LambdaQueryWrapper
<
CollectOrderLogInfo
>()
// 默认查询xxljob自动同步时间
.
eq
(
CollectOrderLogInfo:
:
getSyncType
,
syncType
)
.
eq
(
CollectOrderLogInfo:
:
getDelFlag
,
0
)
.
orderByDesc
(
CollectOrderLogInfo:
:
getUpdateTime
)
.
last
(
"LIMIT 1"
));
if
(
ObjectUtils
.
isNotEmpty
(
orderList
)){
// 最新的数据日期
return
orderList
.
get
(
0
).
getLatestTime
();
}
return
null
;
}
}
src/main/java/com/sfa/job/domain/order/dao/impl/FinanceBaseZbjTypeServiceImpl.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
domain
.
order
.
dao
.
impl
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.sfa.job.domain.order.entity.FinanceBaseZbjType
;
import
com.sfa.job.domain.order.mapper.FinanceBaseZbjTypeMapper
;
import
com.sfa.job.service.order.FinanceBaseZbjTypeService
;
import
org.springframework.stereotype.Service
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* 旺店通订单Service业务层处理
*
* @author lvbencai
* @date 2025年01月07日17:00:16
*/
@DS
(
"bi"
)
@Service
public
class
FinanceBaseZbjTypeServiceImpl
extends
ServiceImpl
<
FinanceBaseZbjTypeMapper
,
FinanceBaseZbjType
>
implements
FinanceBaseZbjTypeService
{
@Override
public
Map
<
String
,
String
>
selectBaseZbjType
()
{
List
<
FinanceBaseZbjType
>
list
=
list
();
// 以fenxiaoName为key,直播间渠道类型为value,放入map中
Map
<
String
,
String
>
map
=
list
.
stream
()
.
collect
(
HashMap:
:
new
,
(
k
,
v
)
->
k
.
put
(
v
.
getFenxiaoName
(),
v
.
getZbjQdType
()),
HashMap:
:
putAll
);
return
map
;
}
}
src/main/java/com/sfa/job/domain/order/dao/impl/ProductDaoImpl.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
domain
.
order
.
dao
.
impl
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.sfa.job.domain.order.dao.IProductDao
;
import
com.sfa.job.domain.order.entity.PrdInfo
;
import
com.sfa.job.domain.order.mapper.PrdInfoMapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* @author : liqiulin
* @date : 2024-11-22 16
* @describe :
*/
@Service
public
class
ProductDaoImpl
implements
IProductDao
{
@Autowired
PrdInfoMapper
prdInfoMapper
;
@Override
public
List
<
PrdInfo
>
selectProdSeries
()
{
List
<
PrdInfo
>
prdInfos
=
prdInfoMapper
.
selectList
(
new
LambdaQueryWrapper
<
PrdInfo
>()
.
select
(
PrdInfo:
:
getSeries
,
PrdInfo:
:
getPrdCode
,
PrdInfo:
:
getPrdName
)
.
groupBy
(
PrdInfo:
:
getSeries
,
PrdInfo:
:
getPrdCode
,
PrdInfo:
:
getPrdName
));
return
prdInfos
;
}
}
src/main/java/com/sfa/job/domain/order/entity/CollectErrorInfo.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
domain
.
order
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
import
java.time.LocalDateTime
;
import
java.util.Date
;
import
java.util.Map
;
/**
* CollectErrorInfo 类表示采集错误记录,与数据库表 market_bi.collect_error_info 相对应。
* 包含了采集错误记录的各种信息,如唯一键、入参信息、类型、采集时间、删除标志、创建和更新的用户及时间等。
*/
@TableName
(
value
=
"collect_error_info"
)
@Data
public
class
CollectErrorInfo
{
/**
* 唯一键,自动递增
*/
private
Long
ceiId
;
/**
* 入参信息,存储为 JSON 格式
*/
private
Map
<
String
,
Object
>
param
;
/**
* 类型,如 xxljob、影刀等
*/
private
String
type
;
/**
* 采集时间
*/
private
Date
collectTime
;
/**
* 是否删除标志,'0' 表示未删除,'1' 表示已删除
*/
private
char
delFlag
;
/**
* 创建者
*/
private
String
createBy
;
/**
* 创建人 UserID
*/
private
Long
createUserId
;
/**
* 创建时间,默认为当前时间
*/
private
LocalDateTime
createTime
;
/**
* 更新者
*/
private
String
updateBy
;
/**
* 修改人 UserID
*/
private
Long
updateUserId
;
/**
* 更新时间,自动更新为当前时间
*/
private
LocalDateTime
updateTime
;
/**
* 采集批次
*/
private
String
batchNo
;
/**
* 本批次采集开始时间
*/
private
Date
startTime
;
/**
* 本批次采集结束时间
*/
private
Date
endTime
;
/**
* 错误信息
*/
private
String
errorMsg
;
}
src/main/java/com/sfa/job/domain/order/entity/CollectOrderLogInfo.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
domain
.
order
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* 采集订单日志信息
*
* @TableName collect_order_log_info
* @author lvbencai
* @date 2025-01-16 22:58:38
* @description
*/
@Data
@TableName
(
"collect_order_log_info"
)
public
class
CollectOrderLogInfo
implements
Serializable
{
/**
* 唯一键,用于唯一标识采集订单日志信息记录
*/
@TableId
(
value
=
"cli_id"
,
type
=
IdType
.
AUTO
)
private
Long
cliId
;
/**
* 采集订单的数量,存储为字符串,长度不超过 20 个字符
*/
//@TableField("order_count")
private
Integer
orderCount
;
/**
* 采集订单的详细数量,存储为字符串,长度不超过 20 个字符
*/
//@TableField("order_detail_count")
private
Integer
orderDetailCount
;
/**
* 采集批次信息,可存储长度不超过 30 个字符,使用 utf8mb4 字符集和 utf8mb4_0900_ai_ci 校对规则
*/
//@TableField("batch_no")
private
String
batchNo
;
/**
* 采集的最新时间,代表上一次采集的结束时间,存储为日期时间类型
*/
//@TableField("latest_time")
private
Date
latestTime
;
/**
* 是否删除的标志,'0' 表示未删除,'1' 表示已删除,使用 utf8mb3 字符集和 utf8mb3_general_ci 校对规则
*/
//@TableField("del_flag")
private
String
delFlag
;
/**
* 创建者信息,存储为长度不超过 20 个字符的字符串
*/
//@TableField("create_by")
private
String
createBy
;
/**
* 创建人的用户 ID,存储为长整型
*/
//@TableField("create_user_id")
private
Long
createUserId
;
/**
* 创建时间,存储为日期时间类型,使用数据库的当前时间作为默认值
*/
//@TableField("create_time")
private
Date
createTime
;
/**
* 更新者信息,存储为长度不超过 20 个字符的字符串
*/
//@TableField("update_by")
private
String
updateBy
;
/**
* 修改人的用户 ID,存储为长整型
*/
//@TableField("update_user_id")
private
Long
updateUserId
;
/**
* 更新时间,存储为日期时间类型,更新时自动更新为当前时间
*/
//@TableField("update_time")
private
Date
updateTime
;
private
Integer
syncType
;
}
src/main/java/com/sfa/job/domain/order/entity/FinanceBaseProduct.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
domain
.
order
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
lombok.Data
;
import
java.math.BigDecimal
;
/**
* finance_base_product 表对应的 料号基本信息表。
* 主要字段实际成本、标准成本、规格、口味
* @author lvbencai
* @date 2025年01月07日10:04:25
*/
@Data
public
class
FinanceBaseProduct
{
// 唯一标识主键
@TableId
(
type
=
IdType
.
AUTO
)
private
Integer
fbpId
;
// 料号
private
String
prdCode
;
// 品名
private
String
prdName
;
// 规格
private
String
prdBarCode
;
// 实际成本
private
BigDecimal
actualCost
;
// 标准成本
private
BigDecimal
standardCost
;
// 一级分类
private
String
firstCategory
;
// 二级分类
private
String
secondCategory
;
// 规格
private
String
spec
;
// 口味
private
String
flavor
;
// 系列
private
String
series
;
// 产品分类编码
private
String
productClassificationCode
;
// 产品分类
private
String
productClassification
;
// 主分群码(重复字段,可根据实际需求调整)
private
String
mainGroupCode
;
// 主分群码名称
private
String
mainGroupName
;
// 料件类别(重复字段,可根据实际需求调整)
private
String
materialType
;
// 料件类别描述
private
String
materialTypeName
;
// 基础单位
private
String
basicUnit
;
// 生命周期状态
private
String
lifeCycleStatus
;
// 生命周期
private
String
lifeCycle
;
}
src/main/java/com/sfa/job/domain/order/entity/FinanceBaseZbjType.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
domain
.
order
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
lombok.Data
;
import
java.time.LocalDateTime
;
/**
* finance_base_zbj_type 表对应的直播间分类细腻系表。
* 主要字段直播间渠道类型、分销商名称
* @author lvbcai
* @date 2025年01月07日10:04:25
*/
@Data
public
class
FinanceBaseZbjType
{
// 唯一键
@TableId
(
type
=
IdType
.
AUTO
)
private
Long
fbztId
;
// 分销商名称
private
String
fenxiaoName
;
// 直播间渠道类型 有分销商id,不是以上几类的,统一为达人 没有分销商id的,默认为商城
private
String
zbjQdType
;
// 采集批次
private
String
batchNo
;
// 备注
private
String
remark
;
// 是否删除标志 0 未删除 1 已删除
private
char
delFlag
;
// 创建者
private
String
createBy
;
// 创建人 UserID
private
Long
createUserId
;
// 创建时间
private
LocalDateTime
createTime
;
// 更新者
private
String
updateBy
;
// 修改人 UserID
private
Long
updateUserId
;
// 更新时间
private
LocalDateTime
updateTime
;
}
src/main/java/com/sfa/job/domain/order/entity/FinanceOrder.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
domain
.
order
.
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
com.sfa.common.core.web.domain.BaseDo
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
/**
* 来自旺店通的订单
*
* @author 吕本才
* @date 2025年01月07日10:04:25
*/
@TableName
(
value
=
"finance_order"
)
@Data
public
class
FinanceOrder
extends
BaseDo
{
// 订单唯一键
@TableId
(
type
=
IdType
.
NONE
)
private
Long
tradeId
;
// 订单编号(旺店通系统订单号)
private
String
tradeNo
;
// 平台ID(请点击平台代码表查看对应关系)
private
Integer
platformId
;
// 仓库类型:
// 1、普通仓库,大于1为委外仓库(如京东仓储,物流宝等),如订单无仓库的话,则不返回该字段
private
Integer
warehouseType
;
// 原始单号(平台订单号),如果有多个,以","分隔,且以增序排列,不重复,过长将被裁剪
private
String
srcTids
;
// 平台支付帐号, (仅自有平台及线下平台返回,其他平台均不返回)
private
String
payAccount
;
// 订单状态:
// 4 线下退款
// 5已取消
// 6 待转预订单(待审核)
// 7 待转已完成
// 10未付款
// 12待尾款
// 15等未付
// 16延时审核
// 19预订单前处理
// 20 审核前处理
// 21自流转待发货
// 23 异常订单
// 24 换货预订单
// 25 待处理预订单
// 27待分配预订单
// 30待客审
// 35待财审
// 40审核中
// 55已审核
// 95已发货
// 96 成本确认(待录入计划成本,订单结算时有货品无计划成本)
// 101 已过账
// 110已完成
private
Integer
tradeStatus
;
// 订单类型:
// 1、网店销售
// 2、线下订单
// 3、售后换货
// 4、批发业务
// 7、现款销售
// 8、分销订单
// 101、自定义类型一
// 102、自定义类型二
// 103、自定义类型三
// 104、自定义类型四
// 105、自定义类型五
// 106、自定义类型六
// 107、自定义类型七
// 108、自定义类型八
// 109、自定义类型九
// 110、自定义类型十
// (与ERP中自定义类型的映射关系,点击链接查看)
private
Integer
tradeType
;
// 发货条件:
// 1、款到发货
// 2、货到付款(包含部分货到付款)
// 3、分期付款
// 4、挂账
private
Integer
deliveryTerm
;
// 京东几环(淘宝模糊化后的买家昵称)
private
String
receiverRing
;
// 冻结原因
private
String
freezeReason
;
// 退款状态:
// 0、无退款
// 1、申请退款
// 2、部分退款
// 3、全部退款
private
Integer
refundStatus
;
// 分销类别:
// 0、非分销订单
// 1、代销
// 2、经销
private
Integer
fenxiaoType
;
// 分销商昵称
private
String
fenxiaoNick
;
// 下单时间(毫秒级时间戳,例如:1631861379000)
private
String
tradeTime
;
// 付款时间,例如:2020-10-19 00:00:00
private
String
payTime
;
// 发货时间,订单未发货不返回该字段(毫秒级时间戳,例如:1631861379000)
private
Date
consignTime
;
// 客户网名(淘宝ouid,淘系平台不返回), (仅自有平台及线下平台返回,其他平台均不返回)
private
String
buyerNick
;
// 收货人/收件人, (仅自有平台及线下平台返回,其他平台均不返回)
private
String
receiverName
;
// 省份id,可参考城市代码表
private
Integer
receiverProvince
;
// 城市id,可参考城市代码表
private
Integer
receiverCity
;
// 地区id,可参考城市代码表
private
Integer
receiverDistrict
;
// 收件人地址, (仅自有平台及线下平台返回,其他平台均不返回)
private
String
receiverAddress
;
// 手机,(仅自有平台及线下平台返回,其他平台均不返回)
private
String
receiverMobile
;
// 固话, (仅自有平台及线下平台返回,其他平台均不返回)
private
String
receiverTelno
;
// 邮编
private
String
receiverZip
;
// 地区
private
String
receiverArea
;
// 大头笔
private
String
receiverDtb
;
// 异常订单原因(位运算):
// 2、修改地址
// 4、修改发票
// 8、更换仓库
// 16、修改备注
// 32、更换货品
// 128、拦截赠品
// 256、拦截换货
// 512、买家留言变化
// 1024、拦截平台已发货
private
Integer
badReason
;
// 物流单号
private
String
logisticsNo
;
// 买家留言
private
String
buyerMessage
;
// 客服备注
private
String
csRemark
;
// 标旗(1 红、2 黄、3 绿、4 蓝、5 紫 )
private
Integer
remarkFlag
;
// 打印备注
private
String
printRemark
;
// 货品种类数
private
BigDecimal
goodsTypeCount
;
// 货品总量
private
BigDecimal
goodsCount
;
// 总货款(折前总额)
private
BigDecimal
goodsAmount
;
// 邮费(买家支付邮费)
private
BigDecimal
postAmount
;
// 其他费用
private
BigDecimal
otherAmount
;
// 优惠
private
BigDecimal
discount
;
// 应收
private
BigDecimal
receivable
;
// COD金额(货到付款金额)
private
BigDecimal
codAmount
;
// 买家COD费用
private
BigDecimal
extCodFee
;
// 货品预估成本
private
BigDecimal
goodsCost
;
// 预估邮资成本
private
BigDecimal
postCost
;
// 预估重量(kg)
private
BigDecimal
weight
;
// 预估毛利
private
BigDecimal
profit
;
// 税额
private
BigDecimal
tax
;
// 税率
private
BigDecimal
taxRate
;
// 佣金
private
BigDecimal
commission
;
// 发票类型:
// 0:不需要
// 1:普通发票
// 2:增值税普通发票
// 3:增值税专用发票
private
Integer
invoiceType
;
// 发票抬头
private
String
invoiceTitle
;
// 发票内容
private
String
invoiceContent
;
// 业务员
private
String
salesmanName
;
// 审核人
private
String
checkerName
;
// 财审人
private
String
fcheckerName
;
// 签出人
private
String
checkouterName
;
// 出库单号(系统产生的出库单号)
private
String
stockoutNo
;
// 标记名称
private
String
flagName
;
// 订单来源:
// 1、API抓单
// 2、手工建单
// 3、导入
// 4、复制订单
// 5、接口推送
// 6、补发订单
// 7、PDA选货开单
// 8、分销补发订单
private
Integer
tradeFrom
;
// 货品商家编码,多种货品为空,组合装时为组合装编码
private
String
singleSpecNo
;
// 原始货品数量
private
BigDecimal
rawGoodsCount
;
// 原始货品种类数
private
Integer
rawGoodsTypeCount
;
// 币种
private
String
currency
;
// 发票ID(自增生成),0代表没有发票或已取消/已冲红
private
Integer
invoiceId
;
// 版本号
private
Integer
versionId
;
// 修改时间,例如:2020-10-19 00:00:00
private
Date
modified
;
// 递交时间(毫秒级时间戳,例如:1631861379000)
private
String
created
;
// 审核时间
private
String
checkTime
;
// 证件类别
private
Integer
id_cardType
;
// 店铺编号
private
String
shopNo
;
// 店铺名称
private
String
shopName
;
// 店铺备注
private
String
shopRemark
;
// 仓库编号,如订单无仓库的话,则不返回该字段
private
String
warehouseNo
;
// 客户姓名
private
String
customerName
;
// 客户编码
private
String
customerNo
;
// 物流公司名称
private
String
logisticsName
;
// 物流公司编号
private
String
logisticsCode
;
// 物流类型名称
private
String
logisticsTypeName
;
// 送货时间,例如:2020-10-19 00:00:00
private
String
toDeliverTime
;
// 计划发货时间
private
String
delayToTime
;
// 最晚发货时间
private
String
estimateConsignTime
;
// 店铺id
private
Integer
shopId
;
// 仓库id
private
Integer
warehouseId
;
// 体积
private
BigDecimal
volume
;
// 订单标签
private
String
tradeLabel
;
// 订单掩码
// 1:使用智选物流
// 2:货品标签
// 4:预订单自动激活失败
// 16:订单货品指定批次
// 32:平台自动流转仓库
// 64:部分发货
// 128:全部发货
// 256:优先占用
// 512:待分配转审核失败或订单审核失败
// 1024:催未付款订单短信发送标记
// 2048:拆分
// 在判断的时候使用&运算
private
Integer
tradeMask
;
// 店铺平台id
private
Integer
shopPlatformId
;
// 子平台id
private
Integer
subPlatformId
;
// 包装
private
String
packageName
;
// 包装id
private
Integer
packageId
;
// 包装成本
private
BigDecimal
packageCost
;
// 已付
private
BigDecimal
paid
;
// 大件类型
// 1:普通套件
// 2:独立套件
// 3:分组单发,未使用
// -1:非单发件 取子单中的最大值
private
Integer
largeType
;
// 赠品标记
// 1:自动赠送
// 2:手工赠送
// 4:回购赠送
// 8:平台赠送
// (注意:如果是3,则表示既有自动赠送也有手工赠送“1+2”)
private
Integer
giftMask
;
// 客户id
private
Integer
customerId
;
// 其他成本
private
BigDecimal
otherCost
;
// 不可合并拆分
private
boolean
isSealed
;
// 客户类型(0:普通客户;1:分销商;2:线下批发)
private
Integer
customerType
;
// 物流公司id
private
Integer
logisticsId
;
// 取消原因
private
String
cancelReason
;
// 驳回原因
private
String
revertReason
;
// 订单标签mask
private
String
newTradeLabel
;
// 分销原始单号(无长度限制)
private
String
fenxiaoTid
;
// 批次号
private
String
batchNo
;
// 采集开始时间
private
Date
startTime
;
// 采集结束时间
private
Date
endTime
;
// 同步类型,接口为1手动同步,0 xxljob自动同步,
private
Integer
syncType
;
// 订单明细
@TableField
(
exist
=
false
)
private
List
<
FinanceOrderDetail
>
detailList
;
}
src/main/java/com/sfa/job/domain/order/entity/FinanceOrderDetail.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
domain
.
order
.
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
com.sfa.common.core.web.domain.BaseDo
;
import
lombok.Data
;
import
org.apache.commons.lang3.ObjectUtils
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.Map
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
/**
* 旺店通订单明细表 wangdiantong_order_detail
*/
@TableName
(
value
=
"finance_order_detail"
)
@Data
public
class
FinanceOrderDetail
extends
BaseDo
{
// 订单唯一键
private
Long
tradeId
;
// 订单明细唯一键
@TableId
(
type
=
IdType
.
NONE
)
private
Long
recId
;
// 平台ID
private
Integer
platformId
;
// 原始子单号
private
String
srcOid
;
// 原始单号
private
String
srcTid
;
// 赠品方式 0、非赠品
// 1、自动赠送 2、手工赠送 4、周期购赠送 8、平台赠送 32、阶梯满赠 64、CRM追加赠送 128 主品
private
Integer
giftType
;
// 0:未付款 1:部分付款 2:已付款(原始订单的支付状态)
private
Integer
payStatus
;
// 退款状态:
// 0、无退款
// 1、取消退款
// 2、申请退款
// 3、待退款
// 4、待还原
// 5、退款成功
// 6、已退(未付款关闭,未付款的取消了)
private
Integer
refundStatus
;
// 退款模式:
// 1、担保
// 2、非担保
// 3、在线非担保
private
Integer
guaranteeMode
;
// 如果没有对应的原始单明细,则返回0.
// 平台状态:
// 10、未确认
// 20、待尾款
// 30、待发货
// 40、部分发货
// 50、已发货
// 60、已签收
// 70、已完成
// 80、已退款
// 90、已关闭
private
Integer
platformStatus
;
// 发货条件:1、款到发货 2、货到付款(包含部分货到付款)
// 3、分期付款
private
Integer
deliveryTerm
;
// 数量
private
BigDecimal
num
;
// 标价,手工新建时使用货品属性中的“零售价”
private
BigDecimal
price
;
// 售后退款数量
private
BigDecimal
refundNum
;
// 成交价,原始单折扣及分摊之后的价格
private
BigDecimal
orderPrice
;
// 分摊后价格,进入ERP后再次调整的价格,默认值与order_price一致
private
BigDecimal
sharePrice
;
// 手工调整价,正数为加价,负数为减价,暂未处理
private
BigDecimal
adjust
;
// 优惠
private
BigDecimal
discount
;
// 分摊后总价=share_price*num
private
BigDecimal
shareAmount
;
// 税率
private
BigDecimal
taxRate
;
// 货品名称
private
String
goodsName
;
// 货品编号
private
String
goodsNo
;
// 规格名称
private
String
specName
;
// 商家编码
private
String
specNo
;
// 规格码
private
String
specCode
;
// 组合装编码
private
String
suiteNo
;
// 如果是组合装拆分的,此为组合装名称
private
String
suiteName
;
// 组合装数量,不受拆分合并影响
private
BigDecimal
suiteNum
;
// 组合装分摊后总价
private
BigDecimal
suiteAmount
;
// 组合装优惠
private
BigDecimal
suiteDiscount
;
// 平台货品名称
private
String
apiGoodsName
;
// 平台规格名称
private
String
apiSpecName
;
// 平台货品id
private
String
apiGoodsId
;
// 平台规格id
private
String
apiSpecId
;
// 货品id(系统货品主键)
private
Integer
goodsId
;
// 单品id(系统单品主键)
private
Integer
specId
;
// 佣金
private
BigDecimal
commission
;
// 货品类型
// 1销售商品
// 2原材料
// 3包装
// 4周转材料
// 5虚拟商品
// 6固定资产
// 0其它
private
Integer
goodsType
;
// 订单内部来源:
// 0:无来源
// 1:手机
// 2:聚划算
// 32:开具电子发票
// 2048:当日达
// 4096:次日达
// 8192:承诺时效
// 2097152:区域零售
// 4194304:拼多多厂家代打
// 8388608:周期购
// 1048576:预售单
// 33554432:前N有礼
// 524288:天猫物流升级
// 64:按需配送
// 256:承诺结构化/QIC
// 16384:商仓鸟配
private
Integer
fromMask
;
// 子单备注
private
String
remark
;
// 修改时间(毫秒级时间戳,例如:1631861379000)
private
String
modified
;
// 创建时间(毫秒级时间戳,例如:1631861379000)
private
String
created
;
// 自定义属性1
private
String
prop1
;
// 自定义属性2
private
String
prop2
;
// 货品重量(子单预估货品总重量)
private
BigDecimal
weight
;
// 图片路径
private
String
imgUrl
;
// 实发数量(此数量为发货数量,删除操作等于将此值设置为0)
private
BigDecimal
actualNum
;
// 条码
private
String
barcode
;
// 已付
private
BigDecimal
paid
;
// 组合装id
private
Integer
suiteId
;
// bind_oid
private
String
bindOid
;
// 打印组合装
// 0:组合装明细
// 1:组合装及明细
// 2:组合装
private
Integer
printSuiteMode
;
// 1:天猫物流升级-顺丰配送
// 2:需要回传
// 4:天猫物流升级-按需配送
// 8:天猫物流升级-承诺发货时效
// 16:天猫物流升级-承诺达时效
// 32:天猫物流升级-预售下沉
// 64:天猫物流升级-预计到货时效
// 128:天猫物流升级-配送线路异常
// 1024:定金链接
// 2048:补款链接
// 4096:确认收货
// (mask类型值. 在判断的时候使用&运算)
private
Integer
flag
;
// 库存保留情况
// 0:未保留(取消的订单或完成)
// 1:无库存记录
// 2:未付款
// 3:已保留待审核
// 4:待发货
// 5:预订单库存
private
Integer
stockState
;
// 平台已发货
private
boolean
isConsigned
;
// 是否付款
private
Integer
isReceived
;
// 平台类目主键
private
Integer
cid
;
// 最后更新时间,DateTime格式
private
Date
modifiedDate
;
// 创建时间,DateTime格式
private
String
createdDate
;
// 分摊邮费
private
BigDecimal
sharePostPrice
;
// 发票内容
private
String
invoiceContent
;
// 支付时间,DateTime格式,取自原始订单支付时间
private
Date
payTime
;
// 货品简称
private
String
shortName
;
// 分销商昵称
private
String
fenxiaoNick
;
// 分销商id
private
String
fenxiaoId
;
// 分销商name
private
String
fenxiaoName
;
// 批次号
private
String
batchNo
;
// 采集开始时间
private
Date
startTime
;
// 采集结束时间
private
Date
endTime
;
// 2025年01月13日新增字段
private
String
tradeNo
;
// 店铺编号
private
String
shopNo
;
// 店铺名称
private
String
shopName
;
// 店铺备注
private
String
shopRemark
;
// 交易状态
private
Integer
tradeStatus
;
// 交易时间
private
String
tradeTime
;
// 发货时间,订单未发货不返回该字段(毫秒级时间戳,例如:1631861379000)
private
Date
consignTime
;
// 收货地区
private
String
receiverArea
;
// 主播名称--来自备注字段
private
String
zbjName
;
// 主播ID--来自备注字段
private
String
zbjId
;
// 主播直播ID--来自备注字段
private
String
zbjZbId
;
// 主播销售类型--来自备注字段
private
String
zbjSaleType
;
// 主播渠道类型--来自备注字段
private
String
zbjQdType
;
// 应收金额
private
BigDecimal
receivable
;
// ERP规格名称 --来自T100的定义
private
String
specNameErp
;
// ERP口味 --来自T100的定义
private
String
flavorErp
;
// 同步类型,接口为1手动同步,0 xxljob自动同步,
private
Integer
syncType
;
// 实际成本
private
BigDecimal
actualCost
;
// 标准成本
private
BigDecimal
standardCost
;
@TableField
(
exist
=
false
)
private
BigDecimal
shareAmountSum
;
@TableField
(
exist
=
false
)
private
BigDecimal
actualCostSum
;
@TableField
(
exist
=
false
)
private
BigDecimal
standardCostSum
;
@TableField
(
exist
=
false
)
private
BigDecimal
shareAmountDiffSum
;
@TableField
(
exist
=
false
)
private
String
queryType
;
// 系列
private
String
series
;
/**
* 是否删除标志0未删除1已删除
*/
private
String
delFlag
;
public
String
getFenxiaoId
(
FinanceOrder
order
,
Long
tradeId
)
{
// 如果不为空,解析出
if
(
ObjectUtils
.
isNotEmpty
(
order
.
getFenxiaoNick
()))
{
String
id
=
extractDistributorId
(
order
.
getFenxiaoNick
());
return
id
;
}
return
""
;
}
/**
* 从输入字符串中提取分销商 ID
*
* @param input 包含分销商 ID 的字符串
* @return 提取出的分销商 ID,如果未找到则返回空字符串
*/
public
String
extractDistributorId
(
String
input
)
{
// 使用正则表达式匹配id
Pattern
pattern
=
Pattern
.
compile
(
"id:(\\d+);"
);
Matcher
matcher
=
pattern
.
matcher
(
input
);
if
(
matcher
.
find
())
{
return
matcher
.
group
(
1
);
}
return
""
;
}
public
String
extractDistributorName
(
String
input
)
{
// 使用正则表达式匹配逗号后面的字符
Pattern
pattern
=
Pattern
.
compile
(
";(.*)】"
);
Matcher
matcher
=
pattern
.
matcher
(
input
);
if
(
matcher
.
find
())
{
return
matcher
.
group
(
1
);
}
return
""
;
}
/**
* 根据订单和交易 ID 获取分销商名称
*
* @param order 订单
* @param tradeId 交易 ID
* @return 分销商名称,如果未找到则返回空字符串
*/
public
String
getFenxiaoName
(
FinanceOrder
order
,
Long
tradeId
)
{
// 如果不为空,解析出
if
(
ObjectUtils
.
isNotEmpty
(
order
.
getFenxiaoNick
()))
{
String
id
=
extractDistributorName
(
order
.
getFenxiaoNick
());
return
id
;
}
return
""
;
}
public
String
getFenxiaoNick
(
FinanceOrder
order
)
{
return
order
.
getFenxiaoNick
();
}
public
String
extractByRegex
(
String
input
,
String
regex
)
{
// 使用正则表达式匹配逗号后面的字符
Pattern
pattern
=
Pattern
.
compile
(
regex
);
Matcher
matcher
=
pattern
.
matcher
(
input
);
if
(
matcher
.
find
())
{
return
matcher
.
group
(
1
);
}
return
""
;
}
public
String
getZbjName
(
String
remark
,
FinanceOrderDetail
sameDetail
)
{
if
(
ObjectUtils
.
isNotEmpty
(
sameDetail
)
&&
ObjectUtils
.
isNotEmpty
(
sameDetail
.
getZbjName
()))
{
return
sameDetail
.
getZbjName
();
}
// 如果不为空,解析出
if
(
ObjectUtils
.
isNotEmpty
(
remark
)
&&
remark
.
contains
(
"直播"
))
{
return
extractByRegex
(
remark
,
"“【直播】”([^;;]*)"
);
}
return
null
;
}
public
String
getZbjId
(
String
remark
,
FinanceOrderDetail
sameDetail
)
{
if
(
ObjectUtils
.
isNotEmpty
(
sameDetail
)
&&
ObjectUtils
.
isNotEmpty
(
sameDetail
.
getZbjId
()))
{
return
sameDetail
.
getZbjId
();
}
// 如果不为空,解析出
if
(
ObjectUtils
.
isNotEmpty
(
remark
)
&&
remark
.
contains
(
"直播间id"
))
{
return
extractByRegex
(
remark
,
"直播间id:([^;;]\\d+)"
);
}
return
null
;
}
/**
* 根据分销商和remark备注信息获取主播Id
* @param fenxiaoId
* @param remark
* @param sameDetail
* @return
*/
public
String
getZbjZbId
(
String
fenxiaoId
,
String
remark
,
FinanceOrderDetail
sameDetail
)
{
if
(
ObjectUtils
.
isNotEmpty
(
fenxiaoId
))
{
return
fenxiaoId
;
}
if
(
ObjectUtils
.
isNotEmpty
(
sameDetail
)
&&
ObjectUtils
.
isNotEmpty
(
sameDetail
.
getZbjZbId
()))
{
return
sameDetail
.
getZbjZbId
();
}
// 如果不为空,解析出
if
(
ObjectUtils
.
isNotEmpty
(
remark
)
&&
remark
.
contains
(
"主播id"
))
{
return
extractByRegex
(
remark
,
"主播id:([^;;]\\d+)"
);
}
return
null
;
}
public
String
getZbjSaleType
(
String
remark
,
FinanceOrderDetail
sameDetail
)
{
if
(
ObjectUtils
.
isNotEmpty
(
sameDetail
)
&&
ObjectUtils
.
isNotEmpty
(
sameDetail
.
getZbjSaleType
()))
{
return
sameDetail
.
getZbjSaleType
();
}
// 如果不为空,解析出
if
(
ObjectUtils
.
isNotEmpty
(
remark
)
&&
remark
.
contains
(
"销售类型:"
))
{
return
extractByRegex
(
remark
,
"销售类型:([^;;]*);"
);
}
return
null
;
}
public
String
getZbjQdType
(
String
fenxiaoId
,
String
zbjZbId
,
Map
<
String
,
String
>
baseZbjType
)
{
if
(
ObjectUtils
.
isNotEmpty
(
fenxiaoId
))
{
zbjZbId
=
fenxiaoId
;
}
String
zbjType
=
baseZbjType
.
get
(
zbjZbId
);
if
(
ObjectUtils
.
isNotEmpty
(
zbjZbId
)
&&
ObjectUtils
.
isEmpty
(
zbjType
))
{
return
baseZbjType
.
get
(
"其他分销名称"
);
}
return
zbjType
;
}
}
src/main/java/com/sfa/job/domain/order/entity/PrdInfo.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
domain
.
order
.
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
lombok.Data
;
import
java.io.Serializable
;
/**
* 商品-管理表
* @TableName pro_info
*/
@TableName
(
value
=
"prd_info"
)
@Data
public
class
PrdInfo
implements
Serializable
{
/**
* 主键id
*/
@TableId
(
type
=
IdType
.
AUTO
)
private
Integer
prdId
;
/**
* 商品编码
*/
private
String
prdCode
;
/**
* 商品名称
*/
private
String
prdName
;
/**
* 商品系列
*/
private
Integer
seriesId
;
/**
* 商品系列
*/
private
String
series
;
/**
* 商品规格-69码
*/
private
String
prdSpec
;
/**
* 销售状态:1:在售,0:停售
*/
private
Integer
saleStatus
;
/**
* 0:正常;1:删除
*/
private
Integer
status
;
@TableField
(
exist
=
false
)
private
static
final
long
serialVersionUID
=
1L
;
}
src/main/java/com/sfa/job/domain/order/mapper/CollectErrorInfoMapper.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
domain
.
order
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.sfa.job.domain.order.entity.CollectErrorInfo
;
import
org.apache.ibatis.annotations.Mapper
;
@Mapper
public
interface
CollectErrorInfoMapper
extends
BaseMapper
<
CollectErrorInfo
>
{
}
src/main/java/com/sfa/job/domain/order/mapper/CollectOrderLogInfoMapper.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
domain
.
order
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.sfa.job.domain.order.entity.CollectOrderLogInfo
;
import
org.apache.ibatis.annotations.Mapper
;
@Mapper
public
interface
CollectOrderLogInfoMapper
extends
BaseMapper
<
CollectOrderLogInfo
>
{
}
src/main/java/com/sfa/job/domain/order/mapper/FinanceBaseProductMapper.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
domain
.
order
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.sfa.job.domain.order.entity.FinanceBaseProduct
;
import
org.apache.ibatis.annotations.Mapper
;
@Mapper
public
interface
FinanceBaseProductMapper
extends
BaseMapper
<
FinanceBaseProduct
>
{
}
src/main/java/com/sfa/job/domain/order/mapper/FinanceBaseZbjTypeMapper.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
domain
.
order
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.sfa.job.domain.order.entity.FinanceBaseZbjType
;
import
org.apache.ibatis.annotations.Mapper
;
@Mapper
public
interface
FinanceBaseZbjTypeMapper
extends
BaseMapper
<
FinanceBaseZbjType
>
{
}
src/main/java/com/sfa/job/domain/order/mapper/FinanceOrderDetailMapper.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
domain
.
order
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.sfa.job.domain.order.entity.FinanceOrderDetail
;
import
org.apache.ibatis.annotations.Mapper
;
@Mapper
public
interface
FinanceOrderDetailMapper
extends
BaseMapper
<
FinanceOrderDetail
>
{
}
src/main/java/com/sfa/job/domain/order/mapper/FinanceOrderMapper.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
domain
.
order
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.sfa.job.domain.order.entity.FinanceOrder
;
import
org.apache.ibatis.annotations.Mapper
;
@Mapper
public
interface
FinanceOrderMapper
extends
BaseMapper
<
FinanceOrder
>
{
}
src/main/java/com/sfa/job/domain/order/mapper/PrdInfoMapper.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
domain
.
order
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.sfa.job.domain.order.entity.PrdInfo
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.springframework.stereotype.Repository
;
/**
* @author a02200059
* @description 针对表【prd_info(商品-管理表)】的数据库操作Mapper
* @createDate 2024-11-22 16:48:35
* @Entity com.link.bi.domain.entity.PrdInfo
*/
@Repository
@Mapper
public
interface
PrdInfoMapper
extends
BaseMapper
<
PrdInfo
>
{
}
src/main/java/com/sfa/job/pojo/response/FinanceSyncOrderDetailDto.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
pojo
.
response
;
import
com.sfa.job.domain.order.entity.FinanceOrder
;
import
com.sfa.job.domain.order.entity.FinanceOrderDetail
;
import
lombok.Data
;
import
java.util.Date
;
import
java.util.List
;
/**
* 财务同步旺店通返回数据Dto
*/
@Data
public
class
FinanceSyncOrderDetailDto
{
private
Integer
orderCount
;
private
Integer
orderDetailCount
;
private
List
<
FinanceOrder
>
orders
;
private
List
<
FinanceOrderDetail
>
orderDetails
;
private
Date
startTime
;
private
Date
endTime
;
private
Integer
syncType
;
private
String
batchNo
;
}
src/main/java/com/sfa/job/service/order/FinanceBaseProductService.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
service
.
order
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.sfa.job.domain.order.entity.FinanceBaseProduct
;
import
java.util.Map
;
public
interface
FinanceBaseProductService
extends
IService
<
FinanceBaseProduct
>
{
Map
<
String
,
FinanceBaseProduct
>
selectBaseProduct
();
}
src/main/java/com/sfa/job/service/order/FinanceBaseZbjTypeService.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
service
.
order
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.sfa.job.domain.order.entity.FinanceBaseZbjType
;
import
java.util.Map
;
public
interface
FinanceBaseZbjTypeService
extends
IService
<
FinanceBaseZbjType
>
{
Map
<
String
,
String
>
selectBaseZbjType
();
}
src/main/java/com/sfa/job/service/order/FinanceOrderDetailService.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
service
.
order
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.sfa.job.domain.order.entity.FinanceOrderDetail
;
public
interface
FinanceOrderDetailService
extends
IService
<
FinanceOrderDetail
>
{
}
src/main/java/com/sfa/job/service/order/FinanceOrderSyncService.java
浏览文件 @
d3a896be
...
...
@@ -2,8 +2,8 @@ package com.sfa.job.service.order;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.
link.bi.domain
.entity.FinanceOrder
;
import
com.
link.bi
.pojo.response.FinanceSyncOrderDetailDto
;
import
com.
sfa.job.domain.order
.entity.FinanceOrder
;
import
com.
sfa.job
.pojo.response.FinanceSyncOrderDetailDto
;
import
java.util.Date
;
...
...
src/main/java/com/sfa/job/service/order/impl/FinanceBaseProductServiceImpl.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
service
.
order
.
impl
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.sfa.job.domain.order.entity.FinanceBaseProduct
;
import
com.sfa.job.domain.order.mapper.FinanceBaseProductMapper
;
import
com.sfa.job.service.order.FinanceBaseProductService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* 旺店通订单Service业务层处理
*
* @author lvbencai
* @date 2025年01月07日17:00:16
*/
@DS
(
"bi"
)
@Slf4j
@Service
public
class
FinanceBaseProductServiceImpl
extends
ServiceImpl
<
FinanceBaseProductMapper
,
FinanceBaseProduct
>
implements
FinanceBaseProductService
{
@Override
public
Map
<
String
,
FinanceBaseProduct
>
selectBaseProduct
()
{
// 查询所有商品
List
<
FinanceBaseProduct
>
list
=
list
();
// 以料号为key,商品对象为value,放入map中
Map
<
String
,
FinanceBaseProduct
>
map
=
list
.
stream
()
.
collect
(
HashMap:
:
new
,
(
k
,
v
)
->
k
.
put
(
v
.
getPrdCode
(),
v
),
HashMap:
:
putAll
);
return
map
;
}
}
src/main/java/com/sfa/job/service/order/impl/FinanceOrderDetailServiceImpl.java
0 → 100644
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
service
.
order
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.sfa.job.domain.order.entity.FinanceOrderDetail
;
import
com.sfa.job.domain.order.mapper.FinanceOrderDetailMapper
;
import
com.sfa.job.service.order.FinanceOrderDetailService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
/**
* 旺店通订单明细Service业务层处理
*
* @author lvbencai
* @date 2025年01月07日17:00:16
*/
// 指定不同的数据源
//@DS("bi")
@Slf4j
@Service
public
class
FinanceOrderDetailServiceImpl
extends
ServiceImpl
<
FinanceOrderDetailMapper
,
FinanceOrderDetail
>
implements
FinanceOrderDetailService
{
}
src/main/java/com/sfa/job/service/order/impl/FinanceOrderSyncServiceImpl.java
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
service
.
order
.
impl
;
import
cn.hutool.core.date.DateUtil
;
import
com.alibaba.fastjson2.JSONArray
;
import
com.alibaba.fastjson2.JSONReader
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.link.bi.domain.dao.IFinanceOrderDao
;
import
com.link.bi.domain.entity.*
;
import
com.link.bi.domain.mapper.FinanceOrderMapper
;
import
com.link.bi.pojo.response.FinanceSyncOrderDetailDto
;
import
com.link.bi.service.*
;
import
com.sfa.common.core.exception.ServiceException
;
import
com.sfa.common.core.utils.DateUtils
;
import
com.sfa.job.domain.order.dao.CollectErrorInfoDao
;
import
com.sfa.job.domain.order.dao.CollectOrderLogInfoDao
;
import
com.sfa.job.domain.order.dao.IProductDao
;
import
com.sfa.job.domain.order.entity.*
;
import
com.sfa.job.domain.order.mapper.FinanceOrderMapper
;
import
com.sfa.job.pojo.response.FinanceSyncOrderDetailDto
;
import
com.sfa.job.service.order.FinanceBaseProductService
;
import
com.sfa.job.service.order.FinanceBaseZbjTypeService
;
import
com.sfa.job.service.order.FinanceOrderDetailService
;
import
com.sfa.job.service.order.FinanceOrderSyncService
;
import
com.sfa.job.util.WangdiantongUtil
;
import
com.xxl.job.core.util.DateUtil
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -31,8 +37,6 @@ import java.util.*;
@Slf4j
@Service
public
class
FinanceOrderSyncServiceImpl
extends
ServiceImpl
<
FinanceOrderMapper
,
FinanceOrder
>
implements
FinanceOrderSyncService
{
@Autowired
IFinanceOrderDao
orderDao
;
@Autowired
WangdiantongUtil
wangdiantongUtil
;
...
...
@@ -43,9 +47,11 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper,
@Autowired
FinanceBaseZbjTypeService
baseZbjTypeService
;
@Autowired
CollectOrderLogInfoService
collectOrderLogInfoService
;
CollectOrderLogInfoDao
orderLogInfoDao
;
@Autowired
CollectErrorInfoDao
errorInfoDao
;
@Autowired
IProduct
Service
productService
;
IProduct
Dao
productDao
;
/**
* 多线程调用此方法
* @param startTime
...
...
@@ -59,33 +65,49 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper,
try
{
if
(
ObjectUtils
.
isEmpty
(
startTime
))
{
// 查询最新的采集时间
Date
date
=
collectOrderLogInfoService
.
select
Latest
(
syncType
);
Date
date
=
orderLogInfoDao
.
selectOrderSync
Latest
(
syncType
);
if
(
ObjectUtils
.
isNotEmpty
(
date
))
{
startTime
=
date
;
}
else
{
// 默认上个月的第一天 00:00:00
startTime
=
DateUtil
.
beginOfDay
(
DateUtil
.
beginOfMonth
(
DateUtil
.
lastMonth
()));
startTime
=
cn
.
hutool
.
core
.
date
.
DateUtil
.
beginOfDay
(
cn
.
hutool
.
core
.
date
.
DateUtil
.
beginOfMonth
(
cn
.
hutool
.
core
.
date
.
DateUtil
.
lastMonth
()));
}
// 调用查询旺店通接口api 获取最新日期前的一个小时
startTime
=
DateUtils
.
addMinutes
(
startTime
,
-
3
);
}
else
{
// 调用查询旺店通接口api 获取最新日期前的一个小时
Date
currentLatest
=
DateUtils
.
addHours
(
new
Date
(),
-
2
);
if
(
currentLatest
.
compareTo
(
startTime
)
<
0
)
{
throw
new
ServiceException
(
"开始时间不能大于当前时间"
);
}
}
if
(
ObjectUtils
.
isEmpty
(
endTime
))
{
endTime
=
DateUtils
.
addMinutes
(
startTime
,
60
);
}
log
.
info
(
"查询订单参数:开始时间{},结束时间{}"
,
DateUtil
.
formatDateTime
(
startTime
),
DateUtil
.
formatDateTime
(
endTime
));
List
<
FinanceOrder
>
orders
=
wangdiantongUtil
.
queryWithDetail
(
startTime
,
endTime
);
if
(
ObjectUtils
.
isEmpty
(
orders
))
{
JSONArray
orderAllArray
=
wangdiantongUtil
.
queryWithDetail
(
startTime
,
endTime
);
if
(
ObjectUtils
.
isEmpty
(
orderAllArray
))
{
throw
new
ServiceException
(
"旺店通没有查询到订单数据"
);
}
//转化成orderList
// List<FinanceOrder> orders = orderAllArray.toJavaList(FinanceOrder.class);
List
<
FinanceOrder
>
orders
=
JSONArray
.
parseArray
(
orderAllArray
.
toString
(),
FinanceOrder
.
class
,
JSONReader
.
Feature
.
SupportSmartMatch
);
// 基础数据 直播间分类数据+成本、规格、口味
Map
<
String
,
FinanceBaseProduct
>
baseProductMap
=
baseProductService
.
selectBaseProduct
();
Map
<
String
,
String
>
baseZbjType
=
baseZbjTypeService
.
selectBaseZbjType
();
// 系列
Map
<
String
,
String
>
prodSeries
=
productService
.
selectProdSeries
();
List
<
PrdInfo
>
prdInfos
=
productDao
.
selectProdSeries
();
// 转换成map
Map
<
String
,
String
>
prodSeriesMap
=
new
HashMap
<>();
prdInfos
.
stream
().
forEach
(
prdInfo
->
{
prodSeriesMap
.
put
(
prdInfo
.
getPrdCode
(),
prdInfo
.
getPrdName
());
});
// 入库订单表
log
.
info
(
"开始插入订单数据,数量:{}"
,
order
s
.
size
());
log
.
info
(
"开始插入订单数据,数量:{}"
,
order
AllArray
.
size
());
Date
finalStartTime
=
startTime
;
Date
finalEndTime
=
endTime
;
orders
.
forEach
(
order
->
{
...
...
@@ -103,8 +125,8 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper,
// 入库订单明细表
for
(
FinanceOrder
order
:
orders
)
{
List
<
FinanceOrderDetail
>
orderDetails
=
order
.
getDetailList
();
orderDetails
.
forEach
(
orderDetail
->
{
orderDetail
.
setSeries
(
prodSeries
.
get
(
orderDetail
.
getGoodsNo
()));
for
(
FinanceOrderDetail
orderDetail
:
orderDetails
)
{
orderDetail
.
setSeries
(
prodSeriesMap
.
get
(
orderDetail
.
getGoodsNo
()));
orderDetail
.
setTradeStatus
(
order
.
getTradeStatus
());
orderDetail
.
setShopNo
(
order
.
getShopNo
());
...
...
@@ -137,9 +159,9 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper,
}
orderDetail
.
setFlavorErp
(
ObjectUtils
.
isNotEmpty
(
baseProductMap
.
get
(
orderDetail
.
getGoodsNo
()))
?
baseProductMap
.
get
(
orderDetail
.
getGoodsNo
()).
getFlavor
()
:
""
);
orderDetail
.
setSpecNameErp
(
ObjectUtils
.
isNotEmpty
(
baseProductMap
.
get
(
orderDetail
.
getGoodsNo
()))
?
baseProductMap
.
get
(
orderDetail
.
getGoodsNo
()).
getSpec
()
:
""
);
orderDetail
.
setActualCost
(
ObjectUtils
.
isNotEmpty
(
baseProductMap
.
get
(
orderDetail
.
getGoodsNo
()))
?
baseProductMap
.
get
(
orderDetail
.
getGoodsNo
()).
getActualCost
()
:
new
BigDecimal
(
0
));
orderDetail
.
setStandardCost
(
ObjectUtils
.
isNotEmpty
(
baseProductMap
.
get
(
orderDetail
.
getGoodsNo
()))
?
baseProductMap
.
get
(
orderDetail
.
getGoodsNo
()).
getStandardCost
()
:
new
BigDecimal
(
0
));
});
orderDetail
.
setActualCost
(
ObjectUtils
.
isNotEmpty
(
baseProductMap
.
get
(
orderDetail
.
getGoodsNo
()))
?
baseProductMap
.
get
(
orderDetail
.
getGoodsNo
()).
getActualCost
()
:
order
.
getGoodsCost
().
divide
(
order
.
getGoodsTypeCount
()).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
));
orderDetail
.
setStandardCost
(
ObjectUtils
.
isNotEmpty
(
baseProductMap
.
get
(
orderDetail
.
getGoodsNo
()))
?
baseProductMap
.
get
(
orderDetail
.
getGoodsNo
()).
getStandardCost
()
:
order
.
getGoodsCost
().
divide
(
order
.
getGoodsTypeCount
()).
setScale
(
4
,
BigDecimal
.
ROUND_HALF_UP
));
}
mergeList
.
addAll
(
orderDetails
);
}
log
.
info
(
"开始插入订单详情数据,数量:{}"
,
mergeList
.
size
());
...
...
@@ -154,7 +176,7 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper,
detailDto
.
setEndTime
(
endTime
);
detailDto
.
setBatchNo
(
batchNo
);
log
.
info
(
"
完成插入订单和订单详情数据,开始时间{},结束时间{},订单数量:{},详情数量:{}"
,
DateUtil
.
formatDateTime
(
startTime
),
DateUtil
.
formatDateTime
(
endTime
),
orders
.
size
(),
mergeList
.
size
());
log
.
info
(
"
插入订单和订单详情完成,批次{}开始时间{},结束时间{},订单数量:{},详情数量:{}"
,
batchNo
,
DateUtil
.
formatDateTime
(
startTime
),
DateUtil
.
formatDateTime
(
endTime
),
orders
.
size
(),
mergeList
.
size
());
CollectOrderLogInfo
collectOrderLogInfo
=
new
CollectOrderLogInfo
();
collectOrderLogInfo
.
setSyncType
(
syncType
);
...
...
@@ -162,7 +184,7 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper,
collectOrderLogInfo
.
setOrderDetailCount
(
mergeList
.
size
());
collectOrderLogInfo
.
setBatchNo
(
batchNo
);
collectOrderLogInfo
.
setLatestTime
(
endTime
);
collectOrderLogInfoService
.
save
(
collectOrderLogInfo
);
orderLogInfoDao
.
insert
(
collectOrderLogInfo
);
}
catch
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
// 记录错误日志表 collect_error_info
...
...
@@ -173,8 +195,7 @@ public class FinanceOrderSyncServiceImpl extends ServiceImpl<FinanceOrderMapper,
errorInfo
.
setEndTime
(
endTime
);
errorInfo
.
setStartTime
(
startTime
);
errorInfo
.
setCollectTime
(
new
Date
());
// ????
errorInfoDao
.
insert
(
errorInfo
);
throw
e
;
}
return
detailDto
;
...
...
src/main/java/com/sfa/job/util/WangdiantongUtil.java
浏览文件 @
d3a896be
...
...
@@ -2,17 +2,18 @@ package com.sfa.job.util;
import
com.alibaba.fastjson2.JSONArray
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.alibaba.fastjson2.JSONReader
;
import
com.alibaba.fastjson2.util.DateUtils
;
import
com.lark.oapi.okhttp.*
;
import
com.link.bi.domain.entity.FinanceOrder
;
import
com.sfa.common.core.exception.ServiceException
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.DigestUtils
;
import
java.util.*
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
@Slf4j
@Component
...
...
@@ -21,9 +22,9 @@ public class WangdiantongUtil {
/**
* 卖家账号/接口账号/盐/接口名称
*/
public
List
<
FinanceOrder
>
queryWithDetail
(
Date
startTime
,
Date
endTime
)
{
List
<
FinanceOrder
>
orderAllList
=
new
ArrayList
<>();
public
JSONArray
queryWithDetail
(
Date
startTime
,
Date
endTime
)
{
//
List<FinanceOrder> orderAllList = new ArrayList<>();
JSONArray
allArray
=
new
JSONArray
();
try
{
int
total
=
0
;
int
size
=
0
;
...
...
@@ -78,22 +79,19 @@ public class WangdiantongUtil {
throw
new
ServiceException
(
"访问旺店通接口错误"
+
messageJson
.
toString
());
}
Integer
totalCount
=
dataR
.
getInteger
(
"total_count"
);
JSONArray
order
=
dataR
.
getJSONArray
(
"order"
);
JSONArray
order
JsonArray
=
dataR
.
getJSONArray
(
"order"
);
total
=
totalCount
;
log
.
info
(
"当前时间段{}-{},总条数totalCount:{}"
,
DateUtils
.
format
(
startTime
),
DateUtils
.
format
(
endTime
),
totalCount
);
log
.
info
(
"当前时间段{}-{},查询返回的order条数:{}"
,
DateUtils
.
format
(
startTime
),
DateUtils
.
format
(
endTime
),
order
.
size
());
List
<
FinanceOrder
>
orders
=
JSONArray
.
parseArray
(
order
.
toString
(),
FinanceOrder
.
class
,
JSONReader
.
Feature
.
SupportSmartMatch
);
orderAllList
.
addAll
(
orders
);
size
=
orderAllList
.
size
();
allArray
.
addAll
(
orderJsonArray
);
size
=
allArray
.
size
();
page_no
++;
log
.
info
(
"当前时间段{}-{},查询返回的order条数:{},总条数totalCount:{},page_no:{}"
,
DateUtils
.
format
(
startTime
),
DateUtils
.
format
(
endTime
),
orderJsonArray
.
size
(),
totalCount
,
page_no
);
}
while
(
size
<
total
);
return
orderAllList
;
return
allArray
;
}
catch
(
Exception
e
)
{
// 记录异常日志
log
.
error
(
"异常信息:{}"
+
e
.
getMessage
(),
e
);
return
orderAllList
;
return
allArray
;
}
}
}
src/main/java/com/sfa/job/xxljob/order/FinanceOrderTask.java
浏览文件 @
d3a896be
package
com
.
sfa
.
job
.
xxljob
.
order
;
import
cn.hutool.core.date.DateUtil
;
import
com.
link.bi
.pojo.response.FinanceSyncOrderDetailDto
;
import
com.
sfa.job
.pojo.response.FinanceSyncOrderDetailDto
;
import
com.sfa.job.service.order.FinanceOrderSyncService
;
import
com.xxl.job.core.context.XxlJobContext
;
import
com.xxl.job.core.handler.annotation.XxlJob
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论