记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
董敬伟
liquidnet-bus-v1
Commits
773a3169
Commit
773a3169
authored
Aug 24, 2022
by
GaoHu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
导出销售数据
parent
2886e204
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
151 additions
and
5 deletions
+151
-5
SmileShowBaseController.java
...eb/controller/zhengzai/smile/SmileShowBaseController.java
+45
-5
ISmileShowService.java
...lient/admin/zhengzai/smile/service/ISmileShowService.java
+4
-0
SmileShowServiceImpl.java
...min/zhengzai/smile/service/impl/SmileShowServiceImpl.java
+102
-0
No files found.
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/java/com/liquidnet/client/admin/web/controller/zhengzai/smile/SmileShowBaseController.java
View file @
773a3169
package
com
.
liquidnet
.
client
.
admin
.
web
.
controller
.
zhengzai
.
smile
;
import
com.alibaba.excel.support.ExcelTypeEnum
;
import
com.liquidnet.client.admin.common.core.controller.BaseController
;
import
com.liquidnet.client.admin.common.core.domain.AjaxResult
;
import
com.liquidnet.client.admin.common.core.page.TableDataInfo
;
import
com.liquidnet.client.admin.zhengzai.smile.dto.SaleDataVo
;
import
com.liquidnet.client.admin.zhengzai.smile.dto.ShowSort
;
import
com.liquidnet.client.admin.zhengzai.smile.dto.SmilePriceParam
;
import
com.liquidnet.client.admin.zhengzai.smile.dto.SmileShowParam
;
import
com.liquidnet.client.admin.zhengzai.smile.service.ISmileShowService
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.http.HttpHeaders
;
import
org.springframework.http.MediaType
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.ui.ModelMap
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.ServletOutputStream
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.IOException
;
import
java.nio.charset.StandardCharsets
;
import
java.time.LocalDateTime
;
/**
* @author TT
*/
@Api
(
tags
=
"演出管理"
)
@Controller
@RequestMapping
(
"/smile/show/base"
)
@Slf4j
public
class
SmileShowBaseController
extends
BaseController
{
private
String
prefix
=
"zhengzai/smile"
;
...
...
@@ -42,6 +49,39 @@ public class SmileShowBaseController extends BaseController {
return
prefix
+
"/smileTickets/saleData"
;
}
@GetMapping
(
"/export"
)
@ApiOperation
(
"单个演出销售列表导出"
)
@ResponseBody
public
void
export
(
String
perId
,
HttpServletResponse
response
)
{
ServletOutputStream
servletOutputStream
=
null
;
try
{
response
.
setHeader
(
HttpHeaders
.
CONTENT_DISPOSITION
,
"attachment;filename="
.
concat
(
DateUtil
.
Formatter
.
ddHHmmssTrim
.
format
(
LocalDateTime
.
now
()))
.
concat
(
new
String
((
"单个演出销售列表导出"
).
getBytes
(
"gb2312"
),
StandardCharsets
.
ISO_8859_1
)).
concat
(
ExcelTypeEnum
.
XLSX
.
getValue
()));
response
.
setContentType
(
MediaType
.
MULTIPART_FORM_DATA_VALUE
);
response
.
setCharacterEncoding
(
StandardCharsets
.
UTF_8
.
name
());
servletOutputStream
=
response
.
getOutputStream
();
//数据查询
/*
SaleDataVo saleDataVo = smileShowService.saleData(performancesId);
List<UserDataExcel> rowsToExcels = new ArrayList<>();
saleDataVo.getUserDataList().forEach(userData -> rowsToExcels.add(UserDataExcel.getNew().copy(userData)));
EasyExcel.write(servletOutputStream,UserDataExcel.class).sheet(saleDataVo.getTitle() + "演出销售列表导出").doWrite(rowsToExcels);
*/
smileShowService
.
exportData
(
servletOutputStream
,
perId
);
}
catch
(
IOException
e
)
{
log
.
error
(
"单个演出销售列表导出异常[performancesId={},ex.msg={}]"
,
perId
,
e
.
getLocalizedMessage
());
}
finally
{
if
(
null
!=
servletOutputStream
)
{
try
{
servletOutputStream
.
close
();
}
catch
(
Exception
ignored
)
{
}
}
}
}
/*@GetMapping("/saleDataTest/{performancesId}")
@ApiOperation("销售数据Test")
@ApiImplicitParams({
...
...
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/smile/service/ISmileShowService.java
View file @
773a3169
...
...
@@ -10,6 +10,8 @@ import com.liquidnet.client.admin.zhengzai.smile.dto.SmilePriceParam;
import
com.liquidnet.client.admin.zhengzai.smile.dto.SmileShowParam
;
import
com.liquidnet.service.smile.entity.SmileSchool
;
import
javax.servlet.ServletOutputStream
;
/**
* <p>
* 服务类
...
...
@@ -68,4 +70,6 @@ public interface ISmileShowService extends IService<SmileSchool> {
*/
AjaxResult
updateRedis
();
void
exportData
(
ServletOutputStream
servletOutputStream
,
String
performancesId
);
}
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-zhengzai/src/main/java/com/liquidnet/client/admin/zhengzai/smile/service/impl/SmileShowServiceImpl.java
View file @
773a3169
package
com
.
liquidnet
.
client
.
admin
.
zhengzai
.
smile
.
service
.
impl
;
import
com.alibaba.excel.EasyExcelFactory
;
import
com.alibaba.excel.ExcelWriter
;
import
com.alibaba.excel.write.metadata.WriteSheet
;
import
com.alibaba.excel.write.metadata.WriteTable
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.ObjectUtils
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
...
...
@@ -8,6 +12,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import
com.github.pagehelper.Page
;
import
com.github.pagehelper.PageHelper
;
import
com.github.pagehelper.PageInfo
;
import
com.google.common.collect.Lists
;
import
com.liquidnet.client.admin.common.core.domain.AjaxResult
;
import
com.liquidnet.client.admin.common.core.page.TableDataInfo
;
import
com.liquidnet.client.admin.common.utils.StringUtils
;
...
...
@@ -40,11 +45,13 @@ import org.springframework.data.mongodb.core.query.Criteria;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Service
;
import
javax.servlet.ServletOutputStream
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.util.*
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -486,5 +493,100 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
return
showAgentVo
;
}
@Override
public
void
exportData
(
ServletOutputStream
servletOutputStream
,
String
performancesId
)
{
ExcelWriter
writer
=
EasyExcelFactory
.
write
(
servletOutputStream
).
build
();
// 动态添加表头,适用一些表头动态变化的场景
SaleDataVo
saleDataVo
=
saleData
(
performancesId
);
WriteSheet
sheet1
=
new
WriteSheet
();
sheet1
.
setSheetName
(
saleDataVo
.
getTitle
().
concat
(
"演出数据"
));
sheet1
.
setSheetNo
(
0
);
List
<
UserData
>
userDataList
=
saleDataVo
.
getUserDataList
();
ArrayList
<
String
>
ticketList
=
Lists
.
newArrayList
();
List
<
ShowAgentVo
>
agentVoList
=
saleDataVo
.
getShowAgentVoList
();
agentVoList
.
forEach
(
showAgentVo
->
ticketList
.
add
(
showAgentVo
.
getTitle
()));
// 创建一个表格,用于 Sheet 中使用
WriteTable
table
=
new
WriteTable
();
table
.
setTableNo
(
1
);
table
.
setHead
(
head
(
ticketList
));
// 写数据
if
(
userDataList
!=
null
)
{
writer
.
write
(
contentData
(
userDataList
,
agentVoList
),
sheet1
,
table
);
}
writer
.
finish
();
}
private
List
<
List
<
String
>>
head
(
List
<
String
>
ticketList
)
{
List
<
List
<
String
>>
headTitles
=
new
ArrayList
<>();
String
basicInfo
=
"代理数据"
;
String
ticket
=
"票数据"
;
String
saleData
=
"销售数据"
;
headTitles
.
add
(
Lists
.
newArrayList
(
basicInfo
,
basicInfo
,
"uid"
));
headTitles
.
add
(
Lists
.
newArrayList
(
basicInfo
,
basicInfo
,
"姓名"
));
/* headTitles.add(Lists.newArrayList(basicInfo, basicInfo, "性别"));
headTitles.add(Lists.newArrayList(basicInfo, basicInfo, "手机号"));*/
headTitles
.
add
(
Lists
.
newArrayList
(
basicInfo
,
basicInfo
,
"所属地区"
));
headTitles
.
add
(
Lists
.
newArrayList
(
basicInfo
,
basicInfo
,
"身份"
));
//做表
ticketList
.
forEach
(
title
->
headTitles
.
add
(
Lists
.
newArrayList
(
ticket
,
ticket
,
title
)));
ArrayList
<
String
>
dataList
=
Lists
.
newArrayList
(
"总销售张数"
,
"总销售金额"
,
"总销售佣金"
,
"打款状态"
);
//做表
dataList
.
forEach
(
dataStr
->
headTitles
.
add
(
Lists
.
newArrayList
(
saleData
,
saleData
,
dataStr
)));
return
headTitles
;
}
private
List
<
List
<
Object
>>
contentData
(
List
<
UserData
>
userDataList
,
List
<
ShowAgentVo
>
agentVoList
)
{
List
<
List
<
Object
>>
contentList
=
Lists
.
newArrayList
();
//这里一个List<Object>才代表一行数据,需要映射成每行数据填充,横向填充(把实体数据的字段设置成一个List<Object>)
// contentList.add(Lists.newArrayList("测试", "商品A", "苹果🍎"));
userDataList
.
forEach
(
userData
->
{
//总销售张数
BigDecimal
num
=
new
BigDecimal
(
"0"
);
//总销售金额
BigDecimal
price
=
new
BigDecimal
(
"0"
);
//总销售佣金
BigDecimal
commission
=
new
BigDecimal
(
"0"
);
ArrayList
<
Object
>
arrayList
=
Lists
.
newArrayList
();
arrayList
.
add
(
userData
.
getUid
());
arrayList
.
add
(
userData
.
getUsername
());
arrayList
.
add
(
userData
.
getCityName
());
arrayList
.
add
(
userData
.
getType
()
==
1
?
"总代"
:
"普代"
);
//便利票数据
List
<
UserDataAgentVo
>
dataAgentVos
=
userData
.
getDataAgentVos
();
Map
<
String
,
UserDataAgentVo
>
agentVoMap
=
dataAgentVos
.
stream
().
collect
(
Collectors
.
toMap
(
UserDataAgentVo:
:
getTicketsId
,
Function
.
identity
()));
//遍历agentVoList顺序塞值
for
(
ShowAgentVo
showAgentVo
:
agentVoList
)
{
UserDataAgentVo
userDataAgentVo
=
agentVoMap
.
get
(
showAgentVo
.
getTicketId
());
if
(
userDataAgentVo
!=
null
)
{
num
=
num
.
add
(
new
BigDecimal
(
userDataAgentVo
.
getNumber
().
toString
()));
price
=
price
.
add
(
userDataAgentVo
.
getPrice
().
multiply
(
userDataAgentVo
.
getNumber
()));
commission
=
commission
.
add
(
userDataAgentVo
.
getCommission
());
arrayList
.
add
(
userDataAgentVo
.
getNumber
());
}
else
{
arrayList
.
add
(
0
);
}
}
/* for (UserDataAgentVo userDataAgentVo : dataAgentVos) {
num = num.add(new BigDecimal(userDataAgentVo.getNumber().toString()));
price = price.add(userDataAgentVo.getPrice().multiply(userDataAgentVo.getNumber()));
commission = commission.add(userDataAgentVo.getCommission());
arrayList.add(userDataAgentVo.getNumber());
}*/
arrayList
.
add
(
num
);
arrayList
.
add
(
price
);
arrayList
.
add
(
commission
);
arrayList
.
add
(
userData
.
getPriceStatus
()
!=
null
&&
userData
.
getPriceStatus
()
==
0
?
"已打款"
:
"待打款"
);
contentList
.
add
(
arrayList
);
});
return
contentList
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment