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
f97a2d75
提交
f97a2d75
authored
2月 07, 2025
作者:
吕本才
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1、成本分析页面增加页面列表导出和订单明细导出
2、财务分析基础数据-直播间分类列表查询接口
上级
bef7e2f4
隐藏空白字符变更
内嵌
并排
正在显示
11 个修改的文件
包含
523 行增加
和
57 行删除
+523
-57
FinanceBaseZbjTypeListener.java
...m/link/bi/config/listener/FinanceBaseZbjTypeListener.java
+38
-0
FinanceBaseZbjTypeController.java
...ink/bi/controller/query/FinanceBaseZbjTypeController.java
+43
-0
FinanceOrderQueryController.java
...link/bi/controller/query/FinanceOrderQueryController.java
+1
-10
FinanceBaseZbjTypeVo.java
...n/java/com/link/bi/pojo/request/FinanceBaseZbjTypeVo.java
+49
-0
FinanceCostVo.java
src/main/java/com/link/bi/pojo/request/FinanceCostVo.java
+3
-2
FinanceExportOrderDetailListDto.java
...ink/bi/pojo/response/FinanceExportOrderDetailListDto.java
+165
-0
FinanceOrderDetailListDto.java
.../com/link/bi/pojo/response/FinanceOrderDetailListDto.java
+1
-1
FinanceZbjTypeListDto.java
...java/com/link/bi/pojo/response/FinanceZbjTypeListDto.java
+3
-0
FinanceBaseZbjTypeService.java
...n/java/com/link/bi/service/FinanceBaseZbjTypeService.java
+3
-0
FinanceBaseZbjTypeServiceImpl.java
...m/link/bi/service/impl/FinanceBaseZbjTypeServiceImpl.java
+75
-2
FinanceOrderDetailServiceImpl.java
...m/link/bi/service/impl/FinanceOrderDetailServiceImpl.java
+142
-42
没有找到文件。
src/main/java/com/link/bi/config/listener/FinanceBaseZbjTypeListener.java
0 → 100644
浏览文件 @
f97a2d75
package
com
.
link
.
bi
.
config
.
listener
;
import
com.alibaba.excel.context.AnalysisContext
;
import
com.alibaba.excel.event.AnalysisEventListener
;
import
com.link.bi.domain.entity.FinanceBaseZbjType
;
import
lombok.Data
;
import
lombok.extern.slf4j.Slf4j
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* 直播间分类导入监听
* @author lvbcai
* @date 2025年01月07日10:04:25
*/
@Data
@Slf4j
public
class
FinanceBaseZbjTypeListener
extends
AnalysisEventListener
<
FinanceBaseZbjType
>
{
// 存储解析后的数据
private
List
<
FinanceBaseZbjType
>
dataList
=
new
ArrayList
<>();
@Override
public
void
invoke
(
FinanceBaseZbjType
data
,
AnalysisContext
context
)
{
// 每解析一行数据就会调用该方法
dataList
.
add
(
data
);
}
@Override
public
void
doAfterAllAnalysed
(
AnalysisContext
context
)
{
// 解析完所有数据后调用该方法
}
public
List
<
FinanceBaseZbjType
>
getDataList
()
{
return
dataList
;
}
}
src/main/java/com/link/bi/controller/query/FinanceBaseZbjTypeController.java
0 → 100644
浏览文件 @
f97a2d75
package
com
.
link
.
bi
.
controller
.
query
;
import
com.link.bi.pojo.request.FinanceSelectCommonVo
;
import
com.link.bi.pojo.response.FinanceZbjTypeListDto
;
import
com.link.bi.service.FinanceBaseZbjTypeService
;
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.*
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.util.List
;
/**
* 财务分析-直播间分类基础数据
*
* @author admin
* @date 2024-12-19
*/
@RestController
@RequestMapping
(
"/finance/baseZbjType"
)
public
class
FinanceBaseZbjTypeController
extends
BaseController
{
@Autowired
private
FinanceBaseZbjTypeService
baseZbjTypeService
;
/**
* 直播间分类的页面查询
* @param commonVo
* @return
*/
@RequiresPermissions
(
"bi:livecate:list"
)
@GetMapping
(
"/list"
)
public
List
<
FinanceZbjTypeListDto
>
baseZbjTypeAllList
(
FinanceSelectCommonVo
commonVo
)
{
return
baseZbjTypeService
.
baseZbjTypeAllList
(
commonVo
);
}
@RequiresPermissions
(
"bi:livecate:list"
)
@PostMapping
(
"/import"
)
public
void
importData
(
@RequestParam
(
"file"
)
MultipartFile
file
)
{
baseZbjTypeService
.
importData
(
file
);
}
}
src/main/java/com/link/bi/controller/query/FinanceOrderQueryController.java
浏览文件 @
f97a2d75
...
...
@@ -83,16 +83,7 @@ public class FinanceOrderQueryController extends BaseController {
}
/**
* 直播间分类的页面查询
* @param commonVo
* @return
*/
@RequiresPermissions
(
"bi:finance:list"
)
@GetMapping
(
"/baseZbjType/list"
)
public
List
<
FinanceZbjTypeListDto
>
baseZbjTypeAllList
(
FinanceSelectCommonVo
commonVo
)
{
return
baseZbjTypeService
.
baseZbjTypeAllList
(
commonVo
);
}
@RequiresPermissions
(
"bi:finance:list"
)
...
...
src/main/java/com/link/bi/pojo/request/FinanceBaseZbjTypeVo.java
0 → 100644
浏览文件 @
f97a2d75
package
com
.
link
.
bi
.
pojo
.
request
;
import
lombok.Data
;
import
java.util.Date
;
import
java.util.List
;
@Data
public
class
FinanceBaseZbjTypeVo
{
// 入参 分页当前页
private
Integer
pageNum
=
1
;
// 入参 分页大小
private
Integer
pageSize
=
10
;
// 入参 时间开始时间
private
Date
startDate
;
// 入参 时间结束时间
private
Date
endDate
;
// 直播间类型
private
List
<
String
>
zbjQdType
;
// 入参 口味
private
List
<
String
>
flavor
;
// 入参 规格
private
List
<
String
>
specName
;
// 入参 系列
private
List
<
String
>
series
;
// 入参 商品名称
private
List
<
String
>
goodsName
;
// 聚合的维度
// 直播间类型
private
Boolean
zbjQdTypeAll
;
// 入参 口味
private
Boolean
flavorAll
;
// 入参 规格
private
Boolean
specNameAll
;
// 入参 系列
private
Boolean
seriesAll
;
// 入参 商品名称
private
Boolean
goodsNameAll
;
// 可以按照直播间类型和系列展开 null 不是展开查询 0 直播间类 1 系列
private
Integer
subType
;
// 查询详情时 过滤数据
private
String
fenxiaoId
;
// 下载类型 1 达人子分类 2、分销商分类 3、订单详情
private
String
type
;
private
String
typeName
;
}
src/main/java/com/link/bi/pojo/request/FinanceCostVo.java
浏览文件 @
f97a2d75
...
...
@@ -18,8 +18,6 @@ public class FinanceCostVo {
private
Date
endDate
;
// 直播间类型
private
List
<
String
>
zbjQdType
;
// 入参 口味
private
List
<
String
>
flavor
;
// 入参 规格
...
...
@@ -44,5 +42,8 @@ public class FinanceCostVo {
private
Integer
subType
;
// 查询详情时 过滤数据
private
String
fenxiaoId
;
// 下载类型 1 达人子分类 2、分销商分类 3、订单详情
private
String
type
;
private
String
typeName
;
}
src/main/java/com/link/bi/pojo/response/FinanceExportOrderDetailListDto.java
0 → 100644
浏览文件 @
f97a2d75
package
com
.
link
.
bi
.
pojo
.
response
;
import
com.alibaba.excel.annotation.ExcelProperty
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* 财务聚合后查看的详情信息,来自订单明细DTO
* @author : lvbencai
* @date : 2025-01-15 17:01:00
*/
@Data
public
class
FinanceExportOrderDetailListDto
{
/**
* 订单编号
*/
@ExcelProperty
(
"订单编号"
)
private
String
tradeNo
;
/**
* 店铺名称
*/
@ExcelProperty
(
"店铺名称"
)
private
String
shopName
;
/**
* 原始单号
*/
@ExcelProperty
(
"原始单号"
)
private
String
srcTid
;
/**
* 原始子单号
*/
@ExcelProperty
(
"原始子单号"
)
private
String
srcOid
;
/**
* 订单状态
*/
@ExcelProperty
(
"订单状态"
)
private
String
tradeStatus
;
/**
* 交易时间
*/
@ExcelProperty
(
"交易时间"
)
private
String
tradeTime
;
/**
* 付款时间
*/
@ExcelProperty
(
"付款时间"
)
private
Date
payTime
;
/**
* 发货时间
*/
@ExcelProperty
(
"发货时间"
)
private
Date
consignTime
;
/**
* 省市县(收货地区)
*/
@ExcelProperty
(
"收货地区(省市县)"
)
private
String
receiverArea
;
/**
* 备注
*/
@ExcelProperty
(
"备注"
)
private
String
remark
;
/**
* 应收金额
*/
@ExcelProperty
(
"应收金额"
)
private
BigDecimal
receivable
;
/**
* 货品编号
*/
@ExcelProperty
(
"货品编号"
)
private
String
goodsNo
;
/**
* 货品名称
*/
@ExcelProperty
(
"货品名称"
)
private
String
goodsName
;
/**
* 规格名称
*/
@ExcelProperty
(
"规格名称"
)
private
String
specName
;
/**
* 分类(货品类型)
*/
@ExcelProperty
(
"货品类型"
)
private
Integer
goodsType
;
/**
* 数量
*/
@ExcelProperty
(
"数量"
)
private
BigDecimal
num
;
/**
* 优惠
*/
@ExcelProperty
(
"优惠金额"
)
private
BigDecimal
discount
;
/**
* 分摊后总价
*/
@ExcelProperty
(
"分摊后总价"
)
private
BigDecimal
shareAmount
;
/**
* 组合装编码
*/
@ExcelProperty
(
"组合装编码"
)
private
String
suiteNo
;
/**
* 组合装名称
*/
@ExcelProperty
(
"组合装名称"
)
private
String
suiteName
;
/**
* 组合装数量
*/
@ExcelProperty
(
"组合装数量"
)
private
BigDecimal
suiteNum
;
/**
* 赠品方式
*/
@ExcelProperty
(
"赠品方式"
)
private
Integer
giftType
;
/**
* 分销商名称
*/
@ExcelProperty
(
"分销商名称"
)
private
String
fenxiaoName
;
/**
* 分销商编号
*/
@ExcelProperty
(
"分销商编号"
)
private
String
fenxiaoId
;
/**
* 平台货品名称
*/
@ExcelProperty
(
"平台货品名称"
)
private
String
apiGoodsName
;
}
src/main/java/com/link/bi/pojo/response/FinanceOrderDetailListDto.java
浏览文件 @
f97a2d75
...
...
@@ -21,7 +21,7 @@ public class FinanceOrderDetailListDto {
// 原始子单号
private
String
srcOid
;
// 订单状态
private
Integer
tradeStatus
;
private
String
tradeStatus
;
// 交易时间
private
String
tradeTime
;
// 付款时间
...
...
src/main/java/com/link/bi/pojo/response/FinanceZbjTypeListDto.java
浏览文件 @
f97a2d75
...
...
@@ -10,6 +10,9 @@ import lombok.Data;
*/
@Data
public
class
FinanceZbjTypeListDto
{
// 分销商名称
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
private
Long
fbztId
;
// 分销商名称
@JsonInclude
(
JsonInclude
.
Include
.
NON_NULL
)
...
...
src/main/java/com/link/bi/service/FinanceBaseZbjTypeService.java
浏览文件 @
f97a2d75
...
...
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import
com.link.bi.domain.entity.FinanceBaseZbjType
;
import
com.link.bi.pojo.request.FinanceSelectCommonVo
;
import
com.link.bi.pojo.response.FinanceZbjTypeListDto
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -19,4 +20,6 @@ public interface FinanceBaseZbjTypeService extends IService<FinanceBaseZbjType>
List
<
FinanceZbjTypeListDto
>
baseZbjTypeList
(
FinanceSelectCommonVo
commonVo
);
List
<
FinanceZbjTypeListDto
>
baseZbjTypeAllList
(
FinanceSelectCommonVo
commonVo
);
String
importData
(
MultipartFile
file
);
}
src/main/java/com/link/bi/service/impl/FinanceBaseZbjTypeServiceImpl.java
浏览文件 @
f97a2d75
package
com
.
link
.
bi
.
service
.
impl
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.alibaba.excel.EasyExcel
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.link.bi.config.listener.FinanceBaseZbjTypeListener
;
import
com.link.bi.domain.entity.FinanceBaseZbjType
;
import
com.link.bi.domain.mapper.FinanceBaseZbjTypeMapper
;
import
com.link.bi.pojo.request.FinanceSelectCommonVo
;
...
...
@@ -15,7 +19,11 @@ import com.link.bi.service.FinanceBaseZbjTypeService;
import
com.sfa.common.core.utils.bean.BeanUtils
;
import
com.sfa.common.core.web.page.TableSupport
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
...
...
@@ -41,8 +49,6 @@ public class FinanceBaseZbjTypeServiceImpl extends ServiceImpl<FinanceBaseZbjTyp
return
map
;
}
/**
* 分页查询
*
...
...
@@ -98,8 +104,75 @@ public class FinanceBaseZbjTypeServiceImpl extends ServiceImpl<FinanceBaseZbjTyp
list
.
forEach
(
item
->
{
FinanceZbjTypeListDto
dto
=
new
FinanceZbjTypeListDto
();
BeanUtils
.
copyProperties
(
item
,
dto
);
// 如果fenxiaoName为空,设置为- 2025年02月07日10:35:25
if
(
ObjectUtil
.
isEmpty
(
dto
.
getFenxiaoName
())){
dto
.
setFenxiaoName
(
"-"
);
}
result
.
add
(
dto
);
});
return
result
;
}
/**
* 执行Excel数据全量同步
* @param file 上传的Excel文件
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
String
importData
(
MultipartFile
file
)
{
if
(
file
.
isEmpty
())
{
return
"文件为空,请选择有效的 Excel 文件上传。"
;
}
try
(
InputStream
inputStream
=
file
.
getInputStream
())
{
FinanceBaseZbjTypeListener
listener
=
new
FinanceBaseZbjTypeListener
();
EasyExcel
.
read
(
inputStream
,
FinanceBaseZbjType
.
class
,
listener
).
sheet
().
doRead
();
List
<
FinanceBaseZbjType
>
dataList
=
listener
.
getDataList
();
// 3. 删除数据库中不存在于Excel的数据
deleteAbsentProducts
(
dataList
);
// 4. 批量保存或更新数据
batchUpsertProducts
(
dataList
);
return
"文件解析并更新数据成功。"
;
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
return
"文件解析失败,请检查文件格式或内容。"
;
}
}
public
void
deleteAbsentProducts
(
List
<
FinanceBaseZbjType
>
dataList
)
{
// 获取 Excel 中所有数据的 fbztId
List
<
Long
>
excelIds
=
dataList
.
stream
().
map
(
FinanceBaseZbjType:
:
getFbztId
).
collect
(
Collectors
.
toList
());
// 查询数据库中所有数据
List
<
FinanceBaseZbjType
>
allDbRecords
=
this
.
list
();
// 找出数据库中存在但 Excel 中不存在的记录的 fbztId
List
<
Long
>
idsToDelete
=
new
ArrayList
<>();
for
(
FinanceBaseZbjType
dbRecord
:
allDbRecords
)
{
if
(!
excelIds
.
contains
(
dbRecord
.
getFbztId
()))
{
idsToDelete
.
add
(
dbRecord
.
getFbztId
());
}
}
// 删除这些记录
if
(!
idsToDelete
.
isEmpty
())
{
this
.
removeByIds
(
idsToDelete
);
}
}
public
void
batchUpsertProducts
(
List
<
FinanceBaseZbjType
>
dataList
)
{
for
(
FinanceBaseZbjType
data
:
dataList
)
{
if
(
data
.
getFbztId
()
!=
null
)
{
// 如果 fbztId 不为空,尝试更新
UpdateWrapper
<
FinanceBaseZbjType
>
updateWrapper
=
new
UpdateWrapper
<>();
updateWrapper
.
eq
(
"fbzt_id"
,
data
.
getFbztId
());
this
.
update
(
data
,
updateWrapper
);
}
else
{
// 如果 fbztId 为空,进行保存
this
.
save
(
data
);
}
}
}
}
src/main/java/com/link/bi/service/impl/FinanceOrderDetailServiceImpl.java
浏览文件 @
f97a2d75
...
...
@@ -18,10 +18,12 @@ 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.FinanceExportBiListDto
;
import
com.link.bi.pojo.response.FinanceExportOrderDetailListDto
;
import
com.link.bi.pojo.response.FinanceOrderDetailListDto
;
import
com.link.bi.service.FinanceOrderDetailService
;
import
com.sfa.common.core.utils.DateUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.poi.ss.usermodel.BorderStyle
;
import
org.apache.poi.ss.usermodel.HorizontalAlignment
;
import
org.apache.poi.ss.usermodel.IndexedColors
;
import
org.springframework.beans.BeanUtils
;
...
...
@@ -46,7 +48,6 @@ import java.util.stream.Collectors;
* @date 2025年01月07日17:00:16
*/
// 指定不同的数据源
//@DS("bi")
@Slf4j
@Service
public
class
FinanceOrderDetailServiceImpl
extends
ServiceImpl
<
FinanceOrderDetailMapper
,
FinanceOrderDetail
>
implements
FinanceOrderDetailService
{
...
...
@@ -93,7 +94,7 @@ public class FinanceOrderDetailServiceImpl extends ServiceImpl<FinanceOrderDetai
@Override
public
PageInfo
<
FinanceOrderDetailListDto
>
selectBiFinanceCostDetailPage
(
FinanceCostVo
financeCostVo
)
{
FinanceCostWq
qw
=
covertFinanceCostWq
(
financeCostVo
);
FinanceCostWq
qw
=
covertFinanceCostWq
(
financeCostVo
);
PageInfo
<
FinanceOrderDetail
>
financeOrderDetailPageInfo
=
detailDao
.
selectBiFinanceCostDetailList
(
qw
);
PageInfo
<
FinanceOrderDetailListDto
>
pageInfo
=
new
PageInfo
<>();
...
...
@@ -101,8 +102,19 @@ public class FinanceOrderDetailServiceImpl extends ServiceImpl<FinanceOrderDetai
pageInfo
.
setList
(
financeOrderDetailPageInfo
.
getList
().
stream
().
map
(
item
->
{
FinanceOrderDetailListDto
dto
=
new
FinanceOrderDetailListDto
();
BeanUtils
.
copyProperties
(
item
,
dto
);
// 转换数据
// 交易时间 毫秒转时间
dto
.
setTradeTime
(
DateUtil
.
format
(
new
Date
(
Long
.
parseLong
(
dto
.
getTradeTime
())),
"yyyy-MM-dd HH:mm:ss"
));
// 订单状态 转换 96 成本确认 110 已完成
if
(
dto
.
getTradeStatus
().
equals
(
"96"
))
{
dto
.
setTradeStatus
(
"成本确认"
);
}
else
if
(
dto
.
getTradeStatus
().
equals
(
"110"
))
{
dto
.
setTradeStatus
(
"已完成"
);
}
// 货品类型 确认是否是从产品基础信息表中获取 包材-泡沫箱 包材-气泡袋 包材-纸箱 产品 成品-主营 成品-组合包 物料-常规 物料-联名等
return
dto
;
}).
collect
(
Collectors
.
toList
()));
return
pageInfo
;
}
...
...
@@ -111,12 +123,29 @@ public class FinanceOrderDetailServiceImpl extends ServiceImpl<FinanceOrderDetai
*/
@Override
public
void
exportBiFinanceCostList
(
FinanceCostVo
financeCostVo
,
HttpServletResponse
response
)
{
// 区分类型,不同的数据导出 策略模式
if
(
financeCostVo
.
getType
().
equals
(
"1"
))
{
financeCostVo
.
setTypeName
(
"达人分类"
);
this
.
exportBiFinanceCostData
(
financeCostVo
,
response
);
}
else
if
(
financeCostVo
.
getType
().
equals
(
"2"
))
{
financeCostVo
.
setTypeName
(
"分类"
);
this
.
exportBiFinanceCostData
(
financeCostVo
,
response
);
}
else
if
(
financeCostVo
.
getType
().
equals
(
"3"
))
{
financeCostVo
.
setTypeName
(
"订单明细"
);
this
.
exportBiFinanceCostOrderDetailData
(
financeCostVo
,
response
);
}
}
private
void
exportBiFinanceCostOrderDetailData
(
FinanceCostVo
financeCostVo
,
HttpServletResponse
response
)
{
// 导出查询的数据
financeCostVo
.
setPageNum
(
1
);
financeCostVo
.
setPageSize
(
1000000
);
PageInfo
<
Finance
BiListDto
>
financeBiListDtoPageInfo
=
this
.
selectBiFinanceCostList
(
financeCostVo
);
PageInfo
<
Finance
OrderDetailListDto
>
financeBiListDtoPageInfo
=
this
.
selectBiFinanceCostDetailPage
(
financeCostVo
);
// easyExcel导出数据
String
fileNameOri
=
String
.
format
(
"王小卤成本核算%s-%s订单明细信息-%s.xlsx"
,
DateUtil
.
formatDate
(
financeCostVo
.
getStartDate
()),
DateUtil
.
formatDate
(
financeCostVo
.
getEndDate
()),
DateUtil
.
formatDate
(
new
Date
()));
String
fileNameOri
=
String
.
format
(
"王小卤成本核算%s-%s%s信息-%s.xlsx"
,
DateUtil
.
format
(
financeCostVo
.
getStartDate
(),
"yyyyMMdd"
),
DateUtil
.
format
(
financeCostVo
.
getEndDate
(),
"yyyyMMdd"
),
financeCostVo
.
getTypeName
(),
DateUtil
.
format
(
new
Date
(),
"MMdd"
));
// 文件名中文名需要转义
String
fileName
=
null
;
try
{
...
...
@@ -127,6 +156,8 @@ public class FinanceOrderDetailServiceImpl extends ServiceImpl<FinanceOrderDetai
response
.
setCharacterEncoding
(
"utf-8"
);
response
.
setHeader
(
"Content-Disposition"
,
"attachment;filename="
+
fileName
);
// 这里需要设置不关闭流
response
.
setHeader
(
"Connection"
,
"close"
);
// 表头策略
WriteCellStyle
headWriteCellStyle
=
new
WriteCellStyle
();
//设置背景颜色
headWriteCellStyle
.
setFillForegroundColor
(
IndexedColors
.
WHITE
.
getIndex
());
...
...
@@ -134,25 +165,47 @@ public class FinanceOrderDetailServiceImpl extends ServiceImpl<FinanceOrderDetai
WriteFont
headWriteFont
=
new
WriteFont
();
headWriteFont
.
setFontHeightInPoints
((
short
)
11
);
headWriteCellStyle
.
setWriteFont
(
headWriteFont
);
// 设置表头边框样式
headWriteCellStyle
.
setBorderLeft
(
BorderStyle
.
THIN
);
headWriteCellStyle
.
setBorderTop
(
BorderStyle
.
THIN
);
headWriteCellStyle
.
setBorderRight
(
BorderStyle
.
THIN
);
headWriteCellStyle
.
setBorderBottom
(
BorderStyle
.
THIN
);
// 设置表头边框颜色
headWriteCellStyle
.
setLeftBorderColor
(
IndexedColors
.
BLACK
.
getIndex
());
headWriteCellStyle
.
setTopBorderColor
(
IndexedColors
.
BLACK
.
getIndex
());
headWriteCellStyle
.
setRightBorderColor
(
IndexedColors
.
BLACK
.
getIndex
());
headWriteCellStyle
.
setBottomBorderColor
(
IndexedColors
.
BLACK
.
getIndex
());
//内容策略
WriteCellStyle
contentWriteCellStyle
=
new
WriteCellStyle
();
WriteFont
contentWriteFont
=
new
WriteFont
();
// 设置内容边框样式
contentWriteCellStyle
.
setBorderLeft
(
BorderStyle
.
THIN
);
contentWriteCellStyle
.
setBorderTop
(
BorderStyle
.
THIN
);
contentWriteCellStyle
.
setBorderRight
(
BorderStyle
.
THIN
);
contentWriteCellStyle
.
setBorderBottom
(
BorderStyle
.
THIN
);
// 设置内容边框颜色
contentWriteCellStyle
.
setLeftBorderColor
(
IndexedColors
.
BLACK
.
getIndex
());
contentWriteCellStyle
.
setTopBorderColor
(
IndexedColors
.
BLACK
.
getIndex
());
contentWriteCellStyle
.
setRightBorderColor
(
IndexedColors
.
BLACK
.
getIndex
());
contentWriteCellStyle
.
setBottomBorderColor
(
IndexedColors
.
BLACK
.
getIndex
());
// 字体大小
contentWriteFont
.
setFontHeightInPoints
((
short
)
10
);
contentWriteCellStyle
.
setWriteFont
(
contentWriteFont
);
//设置 水平居中
contentWriteCellStyle
.
setHorizontalAlignment
(
HorizontalAlignment
.
CENTER
);
HorizontalCellStyleStrategy
horizontalCellStyleStrategy
=
new
HorizontalCellStyleStrategy
(
headWriteCellStyle
,
contentWriteCellStyle
);
Collection
<?>
dataList
=
financeBiListDtoPageInfo
.
getList
();
EasyExcel
.
write
(
response
.
getOutputStream
(),
FinanceExport
Bi
ListDto
.
class
)
.
autoCloseStream
(
Boolean
.
FALS
E
)
EasyExcel
.
write
(
response
.
getOutputStream
(),
FinanceExport
OrderDetail
ListDto
.
class
)
.
autoCloseStream
(
Boolean
.
TRU
E
)
.
excelType
(
ExcelTypeEnum
.
XLSX
)
.
registerWriteHandler
(
horizontalCellStyleStrategy
)
.
registerWriteHandler
(
new
LongestMatchColumnWidthStyleStrategy
())
//自动列宽策略
// .registerWriteHandler(new SalesOrderExcelWriteHandler())
.
sheet
(
"成本信息"
)
.
sheet
(
financeCostVo
.
getTypeName
())
//获取数据填充
.
doWrite
(
dataList
);
}
catch
(
UnsupportedEncodingException
e
)
{
...
...
@@ -162,43 +215,90 @@ public class FinanceOrderDetailServiceImpl extends ServiceImpl<FinanceOrderDetai
}
}
/**
*
采集旺店通接口订单明细
数据
*
下载达人分类下的
数据
*
* @param
startTime
* @param
endTim
e
* @param
financeCostVo
* @param
respons
e
*/
// @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);
// }
// }
private
void
exportBiFinanceCostData
(
FinanceCostVo
financeCostVo
,
HttpServletResponse
response
)
{
// 导出查询的数据
financeCostVo
.
setPageNum
(
1
);
financeCostVo
.
setPageSize
(
1000000
);
PageInfo
<
FinanceBiListDto
>
financeBiListDtoPageInfo
=
this
.
selectBiFinanceCostList
(
financeCostVo
);
// easyExcel导出数据
String
fileNameOri
=
String
.
format
(
"王小卤成本核算%s-%s%s-%s.xlsx"
,
DateUtil
.
format
(
financeCostVo
.
getStartDate
(),
"yyyyMMdd"
),
DateUtil
.
format
(
financeCostVo
.
getEndDate
(),
"yyyyMMdd"
),
financeCostVo
.
getTypeName
(),
DateUtil
.
format
(
new
Date
(),
"MMdd"
));
// 文件名中文名需要转义
String
fileName
=
null
;
try
{
fileName
=
URLEncoder
.
encode
(
fileNameOri
,
"UTF-8"
);
String
contentType
=
MediaTypeFactory
.
getMediaType
(
fileName
).
map
(
MimeType:
:
toString
).
orElse
(
"application/vnd.ms-excel"
);
response
.
setContentType
(
contentType
);
response
.
setCharacterEncoding
(
"utf-8"
);
response
.
setHeader
(
"Content-Disposition"
,
"attachment;filename="
+
fileName
);
// 这里需要设置不关闭流
response
.
setHeader
(
"Connection"
,
"close"
);
// 表头策略
WriteCellStyle
headWriteCellStyle
=
new
WriteCellStyle
();
//设置背景颜色
headWriteCellStyle
.
setFillForegroundColor
(
IndexedColors
.
WHITE
.
getIndex
());
headWriteCellStyle
.
setHorizontalAlignment
(
HorizontalAlignment
.
CENTER
);
WriteFont
headWriteFont
=
new
WriteFont
();
headWriteFont
.
setFontHeightInPoints
((
short
)
11
);
headWriteCellStyle
.
setWriteFont
(
headWriteFont
);
// 设置表头边框样式
headWriteCellStyle
.
setBorderLeft
(
BorderStyle
.
THIN
);
headWriteCellStyle
.
setBorderTop
(
BorderStyle
.
THIN
);
headWriteCellStyle
.
setBorderRight
(
BorderStyle
.
THIN
);
headWriteCellStyle
.
setBorderBottom
(
BorderStyle
.
THIN
);
// 设置表头边框颜色
headWriteCellStyle
.
setLeftBorderColor
(
IndexedColors
.
BLACK
.
getIndex
());
headWriteCellStyle
.
setTopBorderColor
(
IndexedColors
.
BLACK
.
getIndex
());
headWriteCellStyle
.
setRightBorderColor
(
IndexedColors
.
BLACK
.
getIndex
());
headWriteCellStyle
.
setBottomBorderColor
(
IndexedColors
.
BLACK
.
getIndex
());
//内容策略
WriteCellStyle
contentWriteCellStyle
=
new
WriteCellStyle
();
WriteFont
contentWriteFont
=
new
WriteFont
();
// 设置内容边框样式
contentWriteCellStyle
.
setBorderLeft
(
BorderStyle
.
THIN
);
contentWriteCellStyle
.
setBorderTop
(
BorderStyle
.
THIN
);
contentWriteCellStyle
.
setBorderRight
(
BorderStyle
.
THIN
);
contentWriteCellStyle
.
setBorderBottom
(
BorderStyle
.
THIN
);
// 设置内容边框颜色
contentWriteCellStyle
.
setLeftBorderColor
(
IndexedColors
.
BLACK
.
getIndex
());
contentWriteCellStyle
.
setTopBorderColor
(
IndexedColors
.
BLACK
.
getIndex
());
contentWriteCellStyle
.
setRightBorderColor
(
IndexedColors
.
BLACK
.
getIndex
());
contentWriteCellStyle
.
setBottomBorderColor
(
IndexedColors
.
BLACK
.
getIndex
());
// 字体大小
contentWriteFont
.
setFontHeightInPoints
((
short
)
10
);
contentWriteCellStyle
.
setWriteFont
(
contentWriteFont
);
//设置 水平居中
contentWriteCellStyle
.
setHorizontalAlignment
(
HorizontalAlignment
.
CENTER
);
HorizontalCellStyleStrategy
horizontalCellStyleStrategy
=
new
HorizontalCellStyleStrategy
(
headWriteCellStyle
,
contentWriteCellStyle
);
Collection
<?>
dataList
=
financeBiListDtoPageInfo
.
getList
();
EasyExcel
.
write
(
response
.
getOutputStream
(),
FinanceExportBiListDto
.
class
)
.
autoCloseStream
(
Boolean
.
TRUE
)
.
excelType
(
ExcelTypeEnum
.
XLSX
)
.
registerWriteHandler
(
horizontalCellStyleStrategy
)
.
registerWriteHandler
(
new
LongestMatchColumnWidthStyleStrategy
())
//自动列宽策略
.
sheet
(
financeCostVo
.
getTypeName
())
//获取数据填充
.
doWrite
(
dataList
);
}
catch
(
UnsupportedEncodingException
e
)
{
log
.
error
(
"编码异常"
+
e
.
getMessage
(),
e
);
throw
new
RuntimeException
(
e
);
}
catch
(
IOException
e
)
{
log
.
error
(
"IO异常"
+
e
.
getMessage
(),
e
);
throw
new
RuntimeException
(
e
);
}
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论