Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-link-module-bi
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
sfa
wangxiaolu-link-module-bi
Commits
9a09838f
提交
9a09838f
authored
1月 16, 2025
作者:
吕本才
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1、增加财务订单明细数据采集处理、bi显示接口
上级
a1da99b6
全部展开
显示空白字符变更
内嵌
并排
正在显示
34 个修改的文件
包含
1160 行增加
和
0 行删除
+1160
-0
ThreadPoolConfig.java
src/main/java/com/link/bi/config/ThreadPoolConfig.java
+28
-0
FinanceOrderQueryController.java
...link/bi/controller/query/FinanceOrderQueryController.java
+44
-0
IFinanceBaseProductDao.java
...n/java/com/link/bi/domain/dao/IFinanceBaseProductDao.java
+10
-0
IFinanceBaseZbjTypeDao.java
...n/java/com/link/bi/domain/dao/IFinanceBaseZbjTypeDao.java
+10
-0
IFinanceOrderDao.java
src/main/java/com/link/bi/domain/dao/IFinanceOrderDao.java
+12
-0
IFinanceOrderDetailDao.java
...n/java/com/link/bi/domain/dao/IFinanceOrderDetailDao.java
+17
-0
FinanceBaseProductDaoImpl.java
...om/link/bi/domain/dao/impl/FinanceBaseProductDaoImpl.java
+16
-0
FinanceBaseZbjTypeDaoImpl.java
...om/link/bi/domain/dao/impl/FinanceBaseZbjTypeDaoImpl.java
+16
-0
FinanceOrderDaoImpl.java
...java/com/link/bi/domain/dao/impl/FinanceOrderDaoImpl.java
+47
-0
FinanceOrderDetailDaoImpl.java
...om/link/bi/domain/dao/impl/FinanceOrderDetailDaoImpl.java
+55
-0
CollectErrorInfo.java
...main/java/com/link/bi/domain/entity/CollectErrorInfo.java
+89
-0
FinanceBaseProduct.java
...in/java/com/link/bi/domain/entity/FinanceBaseProduct.java
+55
-0
FinanceBaseZbjType.java
...in/java/com/link/bi/domain/entity/FinanceBaseZbjType.java
+42
-0
FinanceOrder.java
src/main/java/com/link/bi/domain/entity/FinanceOrder.java
+0
-0
FinanceOrderDetail.java
...in/java/com/link/bi/domain/entity/FinanceOrderDetail.java
+0
-0
FinanceBaseProductMapper.java
...a/com/link/bi/domain/mapper/FinanceBaseProductMapper.java
+9
-0
FinanceBaseZbjTypeMapper.java
...a/com/link/bi/domain/mapper/FinanceBaseZbjTypeMapper.java
+9
-0
FinanceOrderDetailMapper.java
...a/com/link/bi/domain/mapper/FinanceOrderDetailMapper.java
+18
-0
FinanceOrderMapper.java
...in/java/com/link/bi/domain/mapper/FinanceOrderMapper.java
+10
-0
FinanceCostWq.java
src/main/java/com/link/bi/domain/wq/FinanceCostWq.java
+16
-0
FinanceCostVo.java
src/main/java/com/link/bi/pojo/request/FinanceCostVo.java
+24
-0
FinanceBiListDto.java
...main/java/com/link/bi/pojo/response/FinanceBiListDto.java
+39
-0
FinanceOrderDetailListDto.java
.../com/link/bi/pojo/response/FinanceOrderDetailListDto.java
+66
-0
FinanceSyncOrderDetailDto.java
.../com/link/bi/pojo/response/FinanceSyncOrderDetailDto.java
+18
-0
FinanceBaseProductService.java
...n/java/com/link/bi/service/FinanceBaseProductService.java
+13
-0
FinanceBaseZbjTypeService.java
...n/java/com/link/bi/service/FinanceBaseZbjTypeService.java
+12
-0
FinanceOrderDetailService.java
...n/java/com/link/bi/service/FinanceOrderDetailService.java
+14
-0
FinanceOrderService.java
src/main/java/com/link/bi/service/FinanceOrderService.java
+16
-0
FinanceBaseProductServiceImpl.java
...m/link/bi/service/impl/FinanceBaseProductServiceImpl.java
+35
-0
FinanceBaseZbjTypeServiceImpl.java
...m/link/bi/service/impl/FinanceBaseZbjTypeServiceImpl.java
+34
-0
FinanceOrderDetailServiceImpl.java
...m/link/bi/service/impl/FinanceOrderDetailServiceImpl.java
+119
-0
FinanceOrderServiceImpl.java
...ava/com/link/bi/service/impl/FinanceOrderServiceImpl.java
+168
-0
WangdiantongUtil.java
src/main/java/com/link/bi/service/impl/WangdiantongUtil.java
+99
-0
FinanceOrderDetailMapper.xml
src/main/resources/mapper/bi/FinanceOrderDetailMapper.xml
+0
-0
没有找到文件。
src/main/java/com/link/bi/config/ThreadPoolConfig.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
config
;
import
lombok.Data
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor
;
import
java.util.concurrent.Executor
;
@Data
@Configuration
public
class
ThreadPoolConfig
{
private
int
maxPoolSize
=
20
;
private
int
corePoolSize
=
5
;
private
int
queueCapacity
=
20
;
@Bean
public
Executor
customThreadPool
()
{
ThreadPoolTaskExecutor
executor
=
new
ThreadPoolTaskExecutor
();
executor
.
setCorePoolSize
(
corePoolSize
);
executor
.
setMaxPoolSize
(
maxPoolSize
);
executor
.
setQueueCapacity
(
queueCapacity
);
executor
.
setThreadNamePrefix
(
"CustomThreadPool-"
);
executor
.
initialize
();
return
executor
;
}
}
src/main/java/com/link/bi/controller/query/FinanceOrderQueryController.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
controller
.
query
;
import
com.github.pagehelper.PageInfo
;
import
com.link.bi.pojo.request.FinanceCostVo
;
import
com.link.bi.service.FinanceOrderDetailService
;
import
com.sfa.common.core.web.controller.BaseController
;
import
com.sfa.common.security.annotation.RequiresPermissions
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* 财务bi分析
*
* @author admin
* @date 2024-12-19
*/
@RestController
@RequestMapping
(
"/finance"
)
public
class
FinanceOrderQueryController
extends
BaseController
{
@Autowired
private
FinanceOrderDetailService
detailService
;
/**
* 财务成本聚合查询
*/
@RequiresPermissions
(
"bi:finance:list"
)
@GetMapping
(
"/cost/list"
)
public
PageInfo
selectBiFinanceCostList
(
FinanceCostVo
financeCostVo
)
{
return
detailService
.
selectBiFinanceCostList
(
financeCostVo
);
}
/**
* 财务成本聚合查询
*/
@RequiresPermissions
(
"bi:finance:list"
)
@GetMapping
(
"/cost/detail/list"
)
public
PageInfo
selectBiFinanceCostDetailList
(
FinanceCostVo
financeCostVo
)
{
return
detailService
.
selectBiFinanceCostDetailList
(
financeCostVo
);
}
}
src/main/java/com/link/bi/domain/dao/IFinanceBaseProductDao.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
domain
.
dao
;
/**
* @author : lvbencai
* @date : 2025年01月07日10:04:25
* @describe : 财务需要的订单DAO
*/
public
interface
IFinanceBaseProductDao
{
}
src/main/java/com/link/bi/domain/dao/IFinanceBaseZbjTypeDao.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
domain
.
dao
;
/**
* @author : lvbencai
* @date : 2025年01月14日
* @describe : 财务抖音直播间类型DAO
*/
public
interface
IFinanceBaseZbjTypeDao
{
}
src/main/java/com/link/bi/domain/dao/IFinanceOrderDao.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
domain
.
dao
;
import
java.util.Date
;
/**
* @author : lvbencai
* @date : 2025年01月07日10:04:25
* @describe : 财务需要的订单DAO
*/
public
interface
IFinanceOrderDao
{
Date
selectOrderLatest
(
Integer
syncType
);
}
src/main/java/com/link/bi/domain/dao/IFinanceOrderDetailDao.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
domain
.
dao
;
import
com.github.pagehelper.PageInfo
;
import
com.link.bi.domain.entity.FinanceOrderDetail
;
import
com.link.bi.domain.wq.FinanceCostWq
;
/**
* @author : lvbencai
* @date : 2025年01月07日10:04:25
* @describe : 财务需要的订单明细DAO
*/
public
interface
IFinanceOrderDetailDao
{
PageInfo
<
FinanceOrderDetail
>
selectBiFinanceCostList
(
FinanceCostWq
qw
);
PageInfo
<
FinanceOrderDetail
>
selectBiFinanceCostDetailList
(
FinanceCostWq
qw
);
}
src/main/java/com/link/bi/domain/dao/impl/FinanceBaseProductDaoImpl.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
domain
.
dao
.
impl
;
import
com.link.bi.domain.dao.IFinanceBaseProductDao
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
/**
* @author : lvbencai
* @date : 2025-01-14 17:00:00
* @describe :财务抖音订单数据 商品的信息DAO
*/
@Slf4j
@Service
public
class
FinanceBaseProductDaoImpl
implements
IFinanceBaseProductDao
{
}
src/main/java/com/link/bi/domain/dao/impl/FinanceBaseZbjTypeDaoImpl.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
domain
.
dao
.
impl
;
import
com.link.bi.domain.dao.IFinanceBaseZbjTypeDao
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
/**
* @author : lvbencai
* @date : 2025-01-14 17:30:00
* @describe : 财务抖音订单明细中,直播间类型
*/
@Slf4j
@Service
public
class
FinanceBaseZbjTypeDaoImpl
implements
IFinanceBaseZbjTypeDao
{
}
src/main/java/com/link/bi/domain/dao/impl/FinanceOrderDaoImpl.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
domain
.
dao
.
impl
;
import
com.baomidou.dynamic.datasource.annotation.Slave
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.link.bi.domain.dao.IFinanceOrderDao
;
import
com.link.bi.domain.entity.FinanceOrder
;
import
com.link.bi.domain.mapper.FinanceOrderMapper
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.apache.commons.lang3.time.DateUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Date
;
import
java.util.List
;
/**
* @author : lvbencai
* @date : 2025-01-14 17:31:05
* @describe : 财务抖音订单数据
*/
@Slf4j
@Service
public
class
FinanceOrderDaoImpl
implements
IFinanceOrderDao
{
@Autowired
private
FinanceOrderMapper
orderMapper
;
@Slave
public
Date
selectOrderLatest
(
Integer
syncType
)
{
// 查询最新发货日期
List
<
FinanceOrder
>
objects
=
orderMapper
.
selectList
(
new
LambdaQueryWrapper
<
FinanceOrder
>()
// 默认查询xxljob自动同步时间
.
eq
(
FinanceOrder:
:
getSyncType
,
syncType
)
.
orderByDesc
(
FinanceOrder:
:
getModified
)
.
last
(
"LIMIT 1"
));
if
(
ObjectUtils
.
isNotEmpty
(
objects
)){
// 最新的数据日期
return
objects
.
get
(
0
).
getModified
();
}
else
{
// 默认上个月的第一天 00:00:00
return
DateUtils
.
addMonths
(
new
Date
(),-
1
);
}
}
}
src/main/java/com/link/bi/domain/dao/impl/FinanceOrderDetailDaoImpl.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
domain
.
dao
.
impl
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.github.pagehelper.PageHelper
;
import
com.github.pagehelper.PageInfo
;
import
com.link.bi.domain.dao.IFinanceOrderDetailDao
;
import
com.link.bi.domain.entity.FinanceOrderDetail
;
import
com.link.bi.domain.mapper.FinanceOrderDetailMapper
;
import
com.link.bi.domain.wq.FinanceCostWq
;
import
com.sfa.common.core.web.page.TableSupport
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* @author : lvbencai
* @date : 2024-12-10 16
* @describe : 旺店通订单明细
*/
@Slf4j
@Service
public
class
FinanceOrderDetailDaoImpl
implements
IFinanceOrderDetailDao
{
@Autowired
FinanceOrderDetailMapper
detailMapper
;
/**
* 查询分页数据
* @param wq
* @return
*/
@Override
public
PageInfo
<
FinanceOrderDetail
>
selectBiFinanceCostList
(
FinanceCostWq
wq
)
{
// 查询分页数据
Page
<
Object
>
objectPage
=
TableSupport
.
pageI
();
PageHelper
.
startPage
((
int
)
objectPage
.
getCurrent
(),
(
int
)
objectPage
.
getSize
());
List
<
FinanceOrderDetail
>
financeOrderDetails
=
detailMapper
.
selectBiFinanceCostList
(
wq
);
PageInfo
<
FinanceOrderDetail
>
pageInfo
=
new
PageInfo
<>(
financeOrderDetails
);
return
pageInfo
;
}
@Override
public
PageInfo
<
FinanceOrderDetail
>
selectBiFinanceCostDetailList
(
FinanceCostWq
wq
)
{
// 查询分页数据
Page
<
Object
>
objectPage
=
TableSupport
.
pageI
();
PageHelper
.
startPage
((
int
)
objectPage
.
getCurrent
(),
(
int
)
objectPage
.
getSize
());
List
<
FinanceOrderDetail
>
financeOrderDetails
=
detailMapper
.
selectBiFinanceCostDetailList
(
wq
);
PageInfo
<
FinanceOrderDetail
>
pageInfo
=
new
PageInfo
<>(
financeOrderDetails
);
return
pageInfo
;
}
}
src/main/java/com/link/bi/domain/entity/CollectErrorInfo.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
domain
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
import
java.time.LocalDateTime
;
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
LocalDateTime
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
LocalDateTime
startTime
;
/**
* 本批次采集结束时间
*/
private
LocalDateTime
endTime
;
}
src/main/java/com/link/bi/domain/entity/FinanceBaseProduct.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
domain
.
entity
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
lombok.Data
;
import
java.math.BigDecimal
;
/**
* finance_base_product 表对应的 料号基本信息表。
* 主要字段实际成本、标准成本、规格、口味
* @author lvbcai
* @date 2025年01月07日10:04:25
*/
@Data
public
class
FinanceBaseProduct
{
// 唯一标识主键
@TableId
(
type
=
IdType
.
AUTO
)
private
int
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
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/link/bi/domain/entity/FinanceBaseZbjType.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
domain
.
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/link/bi/domain/entity/FinanceOrder.java
0 → 100644
浏览文件 @
9a09838f
差异被折叠。
点击展开。
src/main/java/com/link/bi/domain/entity/FinanceOrderDetail.java
0 → 100644
浏览文件 @
9a09838f
差异被折叠。
点击展开。
src/main/java/com/link/bi/domain/mapper/FinanceBaseProductMapper.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
domain
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.link.bi.domain.entity.FinanceBaseProduct
;
public
interface
FinanceBaseProductMapper
extends
BaseMapper
<
FinanceBaseProduct
>
{
}
src/main/java/com/link/bi/domain/mapper/FinanceBaseZbjTypeMapper.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
domain
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.link.bi.domain.entity.FinanceBaseZbjType
;
public
interface
FinanceBaseZbjTypeMapper
extends
BaseMapper
<
FinanceBaseZbjType
>
{
}
src/main/java/com/link/bi/domain/mapper/FinanceOrderDetailMapper.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
domain
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.link.bi.domain.entity.FinanceOrderDetail
;
import
com.link.bi.domain.wq.FinanceCostWq
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
@Mapper
public
interface
FinanceOrderDetailMapper
extends
BaseMapper
<
FinanceOrderDetail
>
{
List
<
FinanceOrderDetail
>
selectBiFinanceCostList
(
@Param
(
value
=
"wq"
)
FinanceCostWq
wq
);
List
<
FinanceOrderDetail
>
selectBiFinanceCostDetailList
(
@Param
(
value
=
"wq"
)
FinanceCostWq
wq
);
}
src/main/java/com/link/bi/domain/mapper/FinanceOrderMapper.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
domain
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.link.bi.domain.entity.FinanceOrder
;
import
org.apache.ibatis.annotations.Mapper
;
@Mapper
public
interface
FinanceOrderMapper
extends
BaseMapper
<
FinanceOrder
>
{
}
src/main/java/com/link/bi/domain/wq/FinanceCostWq.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
domain
.
wq
;
import
lombok.Data
;
/**
* @author : liqiulin
* @date : 2024-11-22 17
* @describe :
*/
@Data
public
class
FinanceCostWq
{
// 入参 查询类型
private
String
type
;
// 入参 查询值
private
String
value
;
}
src/main/java/com/link/bi/pojo/request/FinanceCostVo.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
pojo
.
request
;
import
lombok.Data
;
import
java.util.Date
;
@Data
public
class
FinanceCostVo
{
// 入参 查询类型
private
String
type
;
// 入参 查询值
private
String
value
;
// 入参 分页当前页
private
String
pageNum
;
// 入参 分页大小
private
String
pageSize
;
// 入参 时间开始时间
private
Date
startDate
;
// 入参 时间结束时间
private
Date
endDate
;
}
src/main/java/com/link/bi/pojo/response/FinanceBiListDto.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
pojo
.
response
;
import
lombok.Data
;
import
java.math.BigDecimal
;
/**
* 财务订单明细聚合查询DTO
* @date : 2025-01-15 15:30:05
* @author : lvbencai
*/
@Data
public
class
FinanceBiListDto
{
// 主播渠道类型--来自备注字段
private
String
zbjQdType
;
// 货品名称
private
String
goodsName
;
// 货品编号
private
String
goodsNo
;
// ERP规格名称 --来自T100的定义
private
String
specNameErp
;
// ERP口味 --来自T100的定义
private
String
flavorErp
;
private
BigDecimal
shareAmountSum
;
private
BigDecimal
actualCostSum
;
private
BigDecimal
standardCostSum
;
// 查询类型
private
String
queryType
;
// 实际成本毛利
// private BigDecimal actualCostGrossProfitSum;
// 标准成本毛利
// private BigDecimal standardCostGrossProfitSum;
}
src/main/java/com/link/bi/pojo/response/FinanceOrderDetailListDto.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
pojo
.
response
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* 财务聚合后查看的详情信息,来自订单明细DTO
* @date : 2025-01-15 17:01:00
* @author : lvbencai
*/
@Data
public
class
FinanceOrderDetailListDto
{
// 订单编号
private
String
tradeNo
;
// 店铺名称
private
String
shopName
;
// 原始单号
private
String
srcTid
;
// 原始子单号
private
String
srcOid
;
// 订单状态
private
int
tradeStatus
;
// 交易时间
private
String
tradeTime
;
// 付款时间
private
Date
payTime
;
// 发货时间
private
Date
consignTime
;
// 省市县(收货地区)
private
String
receiverArea
;
// 备注
private
String
remark
;
// 应收金额
private
BigDecimal
receivable
;
// 货品编号
private
String
goodsNo
;
// 货品名称
private
String
goodsName
;
// 规格名称
private
String
specName
;
// 分类(货品类型)
private
int
goodsType
;
// 数量
private
BigDecimal
num
;
// 优惠
private
BigDecimal
discount
;
// 分摊后总价
private
BigDecimal
shareAmount
;
// 组合装编码
private
String
suiteNo
;
// 组合装名称
private
String
suiteName
;
// 组合装数量
private
BigDecimal
suiteNum
;
// 赠品方式
private
int
giftType
;
// 分销商名称
private
String
fenxiaoName
;
// 分销商编号
private
String
fenxiaoId
;
// 平台货品名称
private
String
apiGoodsName
;
}
src/main/java/com/link/bi/pojo/response/FinanceSyncOrderDetailDto.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
pojo
.
response
;
import
com.link.bi.domain.entity.FinanceOrder
;
import
com.link.bi.domain.entity.FinanceOrderDetail
;
import
lombok.Data
;
import
java.util.List
;
/**
* 财务同步旺店通订单明细DTO
*/
@Data
public
class
FinanceSyncOrderDetailDto
{
private
Integer
orderCount
;
private
Integer
orderDetailCount
;
private
List
<
FinanceOrder
>
orders
;
private
List
<
FinanceOrderDetail
>
orderDetails
;
}
src/main/java/com/link/bi/service/FinanceBaseProductService.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.link.bi.domain.entity.FinanceBaseProduct
;
import
java.util.Map
;
public
interface
FinanceBaseProductService
extends
IService
<
FinanceBaseProduct
>
{
Map
<
String
,
FinanceBaseProduct
>
selectBaseProduct
();
}
src/main/java/com/link/bi/service/FinanceBaseZbjTypeService.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.link.bi.domain.entity.FinanceBaseZbjType
;
import
java.util.Map
;
public
interface
FinanceBaseZbjTypeService
extends
IService
<
FinanceBaseZbjType
>
{
Map
<
String
,
String
>
selectBaseZbjType
();
}
src/main/java/com/link/bi/service/FinanceOrderDetailService.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.github.pagehelper.PageInfo
;
import
com.link.bi.domain.entity.FinanceOrderDetail
;
import
com.link.bi.pojo.request.FinanceCostVo
;
import
com.link.bi.pojo.response.FinanceBiListDto
;
import
com.link.bi.pojo.response.FinanceOrderDetailListDto
;
public
interface
FinanceOrderDetailService
extends
IService
<
FinanceOrderDetail
>
{
PageInfo
<
FinanceBiListDto
>
selectBiFinanceCostList
(
FinanceCostVo
financeCostVo
);
PageInfo
<
FinanceOrderDetailListDto
>
selectBiFinanceCostDetailList
(
FinanceCostVo
financeCostVo
);
}
src/main/java/com/link/bi/service/FinanceOrderService.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.link.bi.domain.entity.FinanceOrder
;
import
com.link.bi.pojo.response.FinanceSyncOrderDetailDto
;
import
java.util.Date
;
public
interface
FinanceOrderService
extends
IService
<
FinanceOrder
>
{
Date
selectLatest
(
Integer
syncType
);
FinanceSyncOrderDetailDto
syncWandiantongOrder
(
Date
startTime
,
Date
endTime
,
Integer
syncType
);
}
src/main/java/com/link/bi/service/impl/FinanceBaseProductServiceImpl.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
service
.
impl
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.link.bi.domain.entity.FinanceBaseProduct
;
import
com.link.bi.domain.mapper.FinanceBaseProductMapper
;
import
com.link.bi.service.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/link/bi/service/impl/FinanceBaseZbjTypeServiceImpl.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
service
.
impl
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.link.bi.domain.entity.FinanceBaseZbjType
;
import
com.link.bi.domain.mapper.FinanceBaseZbjTypeMapper
;
import
com.link.bi.service.FinanceBaseZbjTypeService
;
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
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/link/bi/service/impl/FinanceOrderDetailServiceImpl.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.github.pagehelper.PageInfo
;
import
com.link.bi.domain.dao.IFinanceOrderDetailDao
;
import
com.link.bi.domain.entity.FinanceOrderDetail
;
import
com.link.bi.domain.mapper.FinanceOrderDetailMapper
;
import
com.link.bi.domain.wq.FinanceCostWq
;
import
com.link.bi.pojo.request.FinanceCostVo
;
import
com.link.bi.pojo.response.FinanceBiListDto
;
import
com.link.bi.pojo.response.FinanceOrderDetailListDto
;
import
com.link.bi.service.FinanceOrderDetailService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.stream.Collectors
;
/**
* 旺店通订单明细Service业务层处理
*
* @author lvbencai
* @date 2025年01月07日17:00:16
*/
// 指定不同的数据源
//@DS("bi")
@Slf4j
@Service
public
class
FinanceOrderDetailServiceImpl
extends
ServiceImpl
<
FinanceOrderDetailMapper
,
FinanceOrderDetail
>
implements
FinanceOrderDetailService
{
@Autowired
IFinanceOrderDetailDao
detailDao
;
// @Autowired
// WangdiantongOrderService wangdiantongOrderService;
// private static final int CORE_POOL_SIZE = 5; // 核心线程数
// private static final int MAX_POOL_SIZE = 10; // 最大线程数
// private static final int KEEP_ALIVE_TIME = 60; // 线程空闲时间
//
// private ExecutorService executorService = Executors.newFixedThreadPool(CORE_POOL_SIZE);
// @Autowired
// private Executor customThreadPool;
// @Autowired
// private ThreadPoolConfig threadPoolConfig;
@Override
public
PageInfo
<
FinanceBiListDto
>
selectBiFinanceCostList
(
FinanceCostVo
financeCostVo
)
{
FinanceCostWq
qw
=
new
FinanceCostWq
();
BeanUtils
.
copyProperties
(
financeCostVo
,
qw
);
PageInfo
<
FinanceOrderDetail
>
orderDetailPageInfo
=
detailDao
.
selectBiFinanceCostList
(
qw
);
PageInfo
<
FinanceBiListDto
>
pageInfo
=
new
PageInfo
<>();
BeanUtils
.
copyProperties
(
orderDetailPageInfo
,
pageInfo
);
pageInfo
.
setList
(
orderDetailPageInfo
.
getList
().
stream
().
map
(
item
->
{
FinanceBiListDto
dto
=
new
FinanceBiListDto
();
BeanUtils
.
copyProperties
(
item
,
dto
);
return
dto
;
}).
collect
(
Collectors
.
toList
()));
return
pageInfo
;
}
@Override
public
PageInfo
<
FinanceOrderDetailListDto
>
selectBiFinanceCostDetailList
(
FinanceCostVo
financeCostVo
)
{
FinanceCostWq
qw
=
new
FinanceCostWq
();
BeanUtils
.
copyProperties
(
financeCostVo
,
qw
);
PageInfo
<
FinanceOrderDetail
>
financeOrderDetailPageInfo
=
detailDao
.
selectBiFinanceCostDetailList
(
qw
);
PageInfo
<
FinanceOrderDetailListDto
>
pageInfo
=
new
PageInfo
<>();
BeanUtils
.
copyProperties
(
financeOrderDetailPageInfo
,
pageInfo
);
pageInfo
.
setList
(
financeOrderDetailPageInfo
.
getList
().
stream
().
map
(
item
->
{
FinanceOrderDetailListDto
dto
=
new
FinanceOrderDetailListDto
();
BeanUtils
.
copyProperties
(
item
,
dto
);
return
dto
;
}).
collect
(
Collectors
.
toList
()));
return
pageInfo
;
}
/**
* 采集旺店通接口订单明细数据
*
* @param startTime
* @param endTime
*/
// @Override
// public void syncWandiantongOrderDetail(Date startTime, Date endTime) {
// try {
// wangdiantongOrderService.dealOrders(startTime,endTime);
// 计算时间间隔
// long intervalMillis = endTime.getTime() - startTime.getTime();
// 计算每个线程处理的时、间间隔
// long threadIntervalMillis = intervalMillis / threadPoolConfig.getMaxPoolSize();
// List<Future<List<WangdiantongOrder>>> futures = new ArrayList<>();
// ThreadPoolTaskExecutor executor = (ThreadPoolTaskExecutor) customThreadPool;
// 创建并提交线程任务
// List<Callable<List<WangdiantongOrder>>> tasks = new ArrayList<>();
// for (int i = 0; i < threadPoolConfig.getCorePoolSize(); i++) {
// Date threadStartTime = new Date(startTime.getTime() + i * threadIntervalMillis);
// Date threadEndTime = new Date(threadStartTime.getTime() + threadIntervalMillis);
// Callable<List<WangdiantongOrder>> task = () -> dealOrders(threadStartTime, threadEndTime);
// tasks.add(task);
// }
// List<List<WangdiantongOrder>> results = new ArrayList<>();
// List<Future<List<WangdiantongOrder>>> futures = ((ThreadPoolTaskExecutor) customThreadPool).getThreadPoolExecutor().invokeAll(tasks);
// for (Future<List<WangdiantongOrder>> future : futures) {
// results.add(future.get());
// }
// log.info("多线程共处理了{}条数据", results.size());
// } catch (Exception e) {
// log.error(e.getMessage(), e);
// }
// }
}
src/main/java/com/link/bi/service/impl/FinanceOrderServiceImpl.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
service
.
impl
;
import
cn.hutool.core.date.DateUtil
;
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.FinanceBaseProduct
;
import
com.link.bi.domain.entity.FinanceOrder
;
import
com.link.bi.domain.entity.FinanceOrderDetail
;
import
com.link.bi.domain.mapper.FinanceOrderMapper
;
import
com.link.bi.pojo.response.FinanceSyncOrderDetailDto
;
import
com.link.bi.service.FinanceBaseProductService
;
import
com.link.bi.service.FinanceBaseZbjTypeService
;
import
com.link.bi.service.FinanceOrderDetailService
;
import
com.link.bi.service.FinanceOrderService
;
import
com.sfa.common.core.exception.ServiceException
;
import
com.sfa.common.core.utils.DateUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.ObjectUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.util.*
;
/**
* 旺店通订单Service业务层处理
*
* @author lvbencai
* @date 2025年01月07日17:00:16
*/
@DS
(
"bi"
)
@Slf4j
@Service
public
class
FinanceOrderServiceImpl
extends
ServiceImpl
<
FinanceOrderMapper
,
FinanceOrder
>
implements
FinanceOrderService
{
@Autowired
IFinanceOrderDao
orderDao
;
@Autowired
WangdiantongUtil
wangdiantongUtil
;
@Autowired
FinanceOrderDetailService
detailService
;
@Autowired
FinanceBaseProductService
baseProductService
;
@Autowired
FinanceBaseZbjTypeService
baseZbjTypeService
;
/**
* 查询最新修改日期
*
* @return
*/
@Override
public
Date
selectLatest
(
Integer
syncType
)
{
// 查询最新发货日期
Date
date
=
orderDao
.
selectOrderLatest
(
syncType
);
return
date
;
}
/**
* 多线程调用此方法
*
* @param startTime
* @param endTime
*/
// @DS("bi")
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
FinanceSyncOrderDetailDto
syncWandiantongOrder
(
Date
startTime
,
Date
endTime
,
Integer
syncType
)
{
FinanceSyncOrderDetailDto
detailDto
=
new
FinanceSyncOrderDetailDto
();
String
batchNo
=
DateUtils
.
dateTimeNow
()
+
"-"
+
Thread
.
currentThread
().
getId
();
try
{
if
(
ObjectUtils
.
isEmpty
(
startTime
))
{
// 查询最新的采集时间
Date
date
=
this
.
selectLatest
(
syncType
);
// 调用查询旺店通接口api 获取最新日期前的一个小时
startTime
=
DateUtils
.
addMinutes
(
date
,
-
3
);
}
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
))
{
throw
new
ServiceException
(
"旺店通没有查询到订单数据"
);
}
// 基础数据 直播间分类数据+成本、规格、口味
Map
<
String
,
FinanceBaseProduct
>
baseProductMap
=
baseProductService
.
selectBaseProduct
();
Map
<
String
,
String
>
baseZbjType
=
baseZbjTypeService
.
selectBaseZbjType
();
// 入库订单表
log
.
info
(
"开始插入订单数据,数量:{}"
,
orders
.
size
());
Date
finalStartTime
=
startTime
;
Date
finalEndTime
=
endTime
;
orders
.
forEach
(
order
->
{
order
.
setBatchNo
(
batchNo
);
order
.
setStartTime
(
finalStartTime
);
order
.
setEndTime
(
finalEndTime
);
order
.
setSyncType
(
syncType
);
});
this
.
saveOrUpdateBatch
(
orders
);
List
<
FinanceOrderDetail
>
mergeList
=
new
ArrayList
<>();
// 用于同一个订单号,来赋值直播间信息
Map
<
String
,
FinanceOrderDetail
>
orderZbj
=
new
HashMap
<>();
// 入库订单明细表
for
(
FinanceOrder
order
:
orders
)
{
List
<
FinanceOrderDetail
>
orderDetails
=
order
.
getDetailList
();
orderDetails
.
forEach
(
orderDetail
->
{
orderDetail
.
setTradeStatus
(
order
.
getTradeStatus
());
orderDetail
.
setShopNo
(
order
.
getShopNo
());
orderDetail
.
setShopName
(
order
.
getShopName
());
orderDetail
.
setShopRemark
(
order
.
getShopRemark
());
orderDetail
.
setReceivable
(
order
.
getReceivable
());
orderDetail
.
setReceiverArea
(
order
.
getReceiverArea
());
orderDetail
.
setConsignTime
(
order
.
getConsignTime
());
orderDetail
.
setTradeTime
(
order
.
getTradeTime
());
orderDetail
.
setBatchNo
(
batchNo
);
orderDetail
.
setTradeNo
(
order
.
getTradeNo
());
// 计算分销信息
orderDetail
.
setFenxiaoNick
(
orderDetail
.
getFenxiaoNick
(
order
));
orderDetail
.
setFenxiaoId
(
orderDetail
.
getFenxiaoId
(
order
,
orderDetail
.
getTradeId
()));
orderDetail
.
setFenxiaoName
(
orderDetail
.
getFenxiaoName
(
order
,
orderDetail
.
getTradeId
()));
orderDetail
.
setStartTime
(
finalStartTime
);
orderDetail
.
setEndTime
(
finalEndTime
);
orderDetail
.
setSyncType
(
syncType
);
// 如果存在相同的
FinanceOrderDetail
sameDetail
=
orderZbj
.
get
(
orderDetail
.
getSrcTid
());
orderDetail
.
setZbjName
(
orderDetail
.
getZbjName
(
orderDetail
.
getRemark
(),
sameDetail
));
orderDetail
.
setZbjId
(
orderDetail
.
getZbjId
(
orderDetail
.
getRemark
(),
sameDetail
));
orderDetail
.
setZbjZbId
(
orderDetail
.
getZbjZbId
(
orderDetail
.
getFenxiaoId
(),
orderDetail
.
getRemark
(),
sameDetail
));
orderDetail
.
setZbjSaleType
(
orderDetail
.
getZbjSaleType
(
orderDetail
.
getRemark
(),
sameDetail
));
// 确定分销商类型
orderDetail
.
setZbjQdType
(
orderDetail
.
getZbjQdType
(
orderDetail
.
getFenxiaoId
(),
orderDetail
.
getZbjZbId
(),
baseZbjType
));
if
(
ObjectUtils
.
isNotEmpty
(
orderDetail
.
getZbjName
())){
orderZbj
.
put
(
orderDetail
.
getSrcTid
(),
orderDetail
);
}
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
));
});
mergeList
.
addAll
(
orderDetails
);
}
log
.
info
(
"开始插入订单详情数据,数量:{}"
,
mergeList
.
size
());
// 批量插入
detailService
.
saveOrUpdateBatch
(
mergeList
);
detailDto
.
setOrders
(
orders
);
detailDto
.
setOrderCount
(
orders
.
size
());
detailDto
.
setOrderDetailCount
(
mergeList
.
size
());
detailDto
.
setOrderDetails
(
mergeList
);
log
.
info
(
"完成插入订单和订单详情数据,开始时间{},结束时间{},订单数量:{},详情数量:{}"
,
DateUtil
.
formatDateTime
(
startTime
),
DateUtil
.
formatDateTime
(
endTime
),
orders
.
size
(),
mergeList
.
size
());
}
catch
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
// TODO 记录错误日志表 collect_error_info
throw
e
;
}
return
detailDto
;
}
}
src/main/java/com/link/bi/service/impl/WangdiantongUtil.java
0 → 100644
浏览文件 @
9a09838f
package
com
.
link
.
bi
.
service
.
impl
;
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.*
;
@Slf4j
@Component
public
class
WangdiantongUtil
{
/**
* 卖家账号/接口账号/盐/接口名称
*/
public
List
<
FinanceOrder
>
queryWithDetail
(
Date
startTime
,
Date
endTime
)
{
List
<
FinanceOrder
>
orderAllList
=
new
ArrayList
<>();
try
{
int
total
=
0
;
int
size
=
0
;
int
page_no
=
0
;
do
{
String
url
=
"http://wdt.wangdian.cn/openapi"
;
String
sid
=
"wxl3"
;
String
key
=
"wxl3-ota"
;
String
salt
=
"78784988049166748bfdc83273ebb990"
;
String
appsecret
=
"c65bd645bbed704bb7982037f9b948e3"
;
String
method
=
"sales.TradeQuery.queryWithDetail"
;
String
v
=
"1.0"
;
HashMap
<
String
,
Object
>
params
=
new
HashMap
<>();
params
.
put
(
"start_time"
,
DateUtils
.
format
(
startTime
));
params
.
put
(
"end_time"
,
DateUtils
.
format
(
endTime
));
params
.
put
(
"status"
,
"110"
);
params
.
put
(
"time_type"
,
2
);
List
<
HashMap
<
String
,
Object
>>
paramsList
=
Arrays
.
asList
(
params
);
String
signParams
=
appsecret
+
"body"
+
JSONObject
.
toJSONString
(
paramsList
)
+
"calc_total1"
+
"key"
+
key
+
"method"
+
method
+
"page_no"
+
page_no
+
"page_size200"
+
"salt"
+
salt
+
"sid"
+
sid
+
"timestamp"
+
(
System
.
currentTimeMillis
()
/
1000
-
1325347200
)
+
"v"
+
v
+
appsecret
;
String
sign
=
DigestUtils
.
md5DigestAsHex
(
signParams
.
toString
().
getBytes
());
log
.
debug
(
signParams
);
log
.
debug
(
sign
);
StringBuilder
urlParams
=
new
StringBuilder
()
.
append
(
"sid="
).
append
(
sid
)
.
append
(
"&key="
).
append
(
key
)
.
append
(
"&salt="
).
append
(
salt
)
.
append
(
"&method="
).
append
(
method
)
.
append
(
"&v="
).
append
(
v
)
.
append
(
"×tamp="
).
append
(
System
.
currentTimeMillis
()
/
1000
-
1325347200
)
.
append
(
"&sign="
).
append
(
sign
)
.
append
(
"&page_size="
).
append
(
200
)
.
append
(
"&page_no="
).
append
(
page_no
)
.
append
(
"&calc_total="
).
append
(
1
);
log
.
info
(
"查询订单数据url:"
+
url
+
"?"
+
urlParams
);
RequestBody
body
=
RequestBody
.
create
(
MediaType
.
get
(
"application/json"
),
JSONObject
.
toJSONString
(
paramsList
));
Request
urlRequestBuild
=
new
Request
.
Builder
().
url
(
url
+
"?"
+
urlParams
).
post
(
body
).
build
();
OkHttpClient
client
=
new
OkHttpClient
();
Response
execute
=
client
.
newCall
(
urlRequestBuild
).
execute
();
JSONObject
responseJson
=
JSONObject
.
parseObject
(
execute
.
body
().
string
());
JSONObject
dataR
=
responseJson
.
getJSONObject
(
"data"
);
JSONObject
messageJson
=
responseJson
.
getJSONObject
(
"message"
);
if
(
ObjectUtils
.
isNotEmpty
(
messageJson
)){
log
.
error
(
"访问旺店通接口错误"
+
messageJson
.
toString
());
throw
new
ServiceException
(
"访问旺店通接口错误"
+
messageJson
.
toString
());
}
Integer
totalCount
=
dataR
.
getInteger
(
"total_count"
);
JSONArray
order
=
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
();
page_no
++;
}
while
(
size
<
total
);
return
orderAllList
;
}
catch
(
Exception
e
)
{
// 记录异常日志
log
.
error
(
"异常信息:{}"
+
e
.
getMessage
(),
e
);
return
orderAllList
;
}
}
}
src/main/resources/mapper/bi/FinanceOrderDetailMapper.xml
0 → 100644
浏览文件 @
9a09838f
差异被折叠。
点击展开。
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论