Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
polestar-statement-services
Overview
Overview
Details
Activity
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
peterchu
polestar-statement-services
Commits
902d05df
Commit
902d05df
authored
Sep 15, 2021
by
peterchu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix:
1.优化业务代码 2.重写转换销售明细记录方法 3.修改销售明细报表查询相关业务逻辑方法
parent
4b2d4dc5
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
282 additions
and
34 deletions
+282
-34
src/main/java/com/yutu/base/controller/DownLoadController.java
+1
-1
src/main/java/com/yutu/base/controller/StatementController.java
+4
-2
src/main/java/com/yutu/base/service/DownLoadService.java
+3
-2
src/main/java/com/yutu/base/service/ParseToSaleDetail.java
+270
-27
src/main/java/com/yutu/base/service/SaleDetailService.java
+1
-0
src/main/resources/application-test.yml
+3
-2
No files found.
src/main/java/com/yutu/base/controller/DownLoadController.java
View file @
902d05df
...
...
@@ -62,7 +62,7 @@ public class DownLoadController {
}
/**
* 下载销售报表(符合查询条件时,直接从数据库SaleDetail表中直接下载获取报表数据)
* 快速导出报表(新)
* 快速导出报表(新)
20210324
* @param requestBody
* @return
*/
...
...
src/main/java/com/yutu/base/controller/StatementController.java
View file @
902d05df
...
...
@@ -28,6 +28,7 @@ public class StatementController {
/**
* 销售明细报表页面 获取销售明细数据
* 20210915093650
* @param requestBody
* @return
*/
...
...
@@ -38,7 +39,7 @@ public class StatementController {
/**
* 下载销售报表(符合查询条件时,直接从数据库SaleDetail表中直接下载获取报表数据)
* 销售明细报表 导出报表(新)
* 销售明细报表 导出报表(新)
20210324
* @param requestBody
* @return
*/
...
...
@@ -48,7 +49,8 @@ public class StatementController {
if
(
noteResult
.
getStatus
()
!=
200
){
response
.
setStatus
(
204
);
}
return
saleDetailService
.
downloadSalesDetailReportExcel
(
requestBody
,
response
);
// return saleDetailService.downloadSalesDetailReportExcel(requestBody, response);
return
noteResult
;
}
/**
...
...
src/main/java/com/yutu/base/service/DownLoadService.java
View file @
902d05df
...
...
@@ -676,7 +676,8 @@ public class DownLoadService {
List
<
SaleDetail
>
saleDetailList
=
new
ArrayList
<>();
try
{
//解析主逻辑
saleDetailList
=
parseToSaleDetail
.
parseToSaleDetailMain
(
params
,
key
);
// saleDetailList = parseToSaleDetail.parseToSaleDetailMain(params, key);
saleDetailList
=
parseToSaleDetail
.
parseToSaleDetails
(
params
,
key
);
// 20210914194247 按乘机人记录销售明细记录
}
catch
(
Exception
e
)
{
logger
.
error
(
"[自动报表] 解析Map到SaleDetail List 出现异常"
,
e
);
}
...
...
@@ -685,7 +686,7 @@ public class DownLoadService {
}
/**
* 快速导出报表(新)
* 快速导出报表(新)
20210324
*
* @param requestBody
* @return
...
...
src/main/java/com/yutu/base/service/ParseToSaleDetail.java
View file @
902d05df
...
...
@@ -2,19 +2,21 @@ package com.yutu.base.service;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.yutu.base.entity.Response
;
import
com.yutu.base.entity.SaleDetail
;
import
com.yutu.base.entity.Store
;
import
com.yutu.base.entity.User
;
import
com.yutu.base.utils.DateUtil
;
import
io.swagger.models.auth.In
;
import
com.yutu.comm.entity.order.domestic.OrderFlightInfo
;
import
com.yutu.comm.entity.order.domestic.OrderInfo
;
import
com.yutu.comm.entity.order.domestic.OrderPassenger
;
import
com.yutu.comm.entity.order.domestic.OrderPurchase
;
import
jxl.CellView
;
import
jxl.Workbook
;
import
jxl.format.Alignment
;
import
jxl.format.Colour
;
import
jxl.format.UnderlineStyle
;
import
jxl.write.*
;
import
jxl.write.Number
;
import
jxl.write.*
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.log4j.Logger
;
import
org.springframework.stereotype.Component
;
...
...
@@ -92,7 +94,7 @@ public class ParseToSaleDetail extends BaseService{
if
(
""
.
equals
(
saleOrderId
)
||
saleOrderId
==
null
)
continue
;
String
flightInfoIds
=
purchObj
.
getString
(
"flightInfoIds"
);
//航班id
String
passengerIds
=
purchObj
.
getString
(
"passengerIds"
);
//乘客id
int
flightSize
=
flightInfoIds
.
replace
(
","
,
""
).
length
()/
36
;
//行程段数 ???
int
flightSize
=
flightInfoIds
.
replace
(
","
,
""
).
length
()/
36
;
//行程段数 ???
id长度为36
int
passengerSize
=
passengerIds
.
replace
(
","
,
""
).
length
()/
36
;
//乘客人量
String
route
=
purchObj
.
getString
(
"routeType"
);
// String route = orderArr.get(0).getString("routeType");
...
...
@@ -182,7 +184,6 @@ public class ParseToSaleDetail extends BaseService{
temp1
.
setCreateTime
(
DateUtil
.
DateToStr
(
new
Date
(),
"yyyy-MM-dd HH:mm:ss"
));
temp1
.
setUpdateTime
(
DateUtil
.
DateToStr
(
new
Date
(),
"yyyy-MM-dd HH:mm:ss"
));
temp1
.
setKey
(
key
);
//标识
temp1
.
setOfficalReceivedPaymentStatus
(
""
);
temp1
.
setOfficalActualExpendAmount
(
0.0
);
...
...
@@ -204,7 +205,7 @@ public class ParseToSaleDetail extends BaseService{
}
}
}
String
saleTotlalPrice
=
orderObj
.
getString
(
"totalPrice"
);
String
saleTotlalPrice
=
orderObj
.
getString
(
"totalPrice"
);
// ??? 注意 若为儿童票采购 那采购价与销售价是否按儿童票价计算
int
orderStatus
=
orderObj
.
getInteger
(
"orderStatus"
);
//订单状态
String
policySource
=
orderObj
.
getString
(
"policySource"
);
//政策信息
status
=
convertOrderStatus
(
orderStatus
);
...
...
@@ -410,12 +411,12 @@ public class ParseToSaleDetail extends BaseService{
saleDetailList
.
get
(
num
+
count_saleOrder
-
1
).
setPassengerNames
(
passengerNames
);
saleDetailList
.
get
(
num
+
count_saleOrder
-
1
).
setAdultCount
(
adultCount
);
saleDetailList
.
get
(
num
+
count_saleOrder
-
1
).
setChildCount
(
childCount
);
break
;
// 匹配到订单后,不再进行剩余循环
}
}
//写入利润
profit
=
combinOrderTotalPrice
-
Double
.
parseDouble
(
purchaseTotalPrice
)
+
orderValuedPrice
;
saleDetailList
.
get
(
num
).
setProfit
(
profit
);
//正推交易流水
count_transDetail
=
0
;
String
purchaseId_trans
=
""
;
...
...
@@ -535,7 +536,7 @@ public class ParseToSaleDetail extends BaseService{
D_value
=
Math
.
abs
(
count_saleOrder
-
count_transDetail
);
mergeNum
=
count_saleOrder
>
count_transDetail
?
count_saleOrder:
count_transDetail
;
//销售单对支付信息 一对多,多余的行填充重复的销售单信息
//销售单对支付信息 一对多,多余的行填充重复的销售单信息
???
if
(
count_saleOrder
==
1
&&
count_transDetail
>
1
){
for
(
int
repeat
=
0
;
repeat
<
(
count_transDetail
-
count_saleOrder
)
;
repeat
++){
...
...
@@ -571,7 +572,7 @@ public class ParseToSaleDetail extends BaseService{
num
+=
mergeNum
;
}
logger
.
info
(
"解析销售报表明细成功!
"
);
logger
.
info
(
"解析销售报表明细成功!
saleDetailList.size="
+
saleDetailList
.
size
()
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
logger
.
error
(
"解析销售报表明细异常"
,
e
);
...
...
@@ -584,6 +585,205 @@ public class ParseToSaleDetail extends BaseService{
}
/**
* 将 orderInfos orderPurchases orderPassengers 解析为 saleDetails
* 按照 乘机人进行 一人一票一条 saleDetails
* 20210914155302
* @param map
* @param key
* @return
*/
public
List
<
SaleDetail
>
parseToSaleDetails
(
Map
<
String
,
String
>
map
,
String
key
)
{
logger
.
info
(
"parseToSaleDetails |[自动报表] 开始解析报表对象"
);
List
<
SaleDetail
>
saleDetailList
=
new
ArrayList
<>();
List
<
User
>
userlist
=
getUsers
();
List
<
Store
>
storelist
=
getStores
();
System
.
out
.
println
(
"map:"
+
map
);
String
orderDetail
=
map
.
get
(
"other"
);
// 订单详情
String
orderpurchase
=
map
.
get
(
"orderpurchase"
);
// 订单采购记录
String
orderpassenger
=
map
.
get
(
"orderpassenger"
);
// 乘机人
String
transactiondetail
=
map
.
get
(
"transactiondetail"
);
// 交易流水
JSONArray
purchArr
=
JSONArray
.
parseArray
(
orderpurchase
);
JSONArray
orderArr
=
JSONArray
.
parseArray
(
orderDetail
);
JSONArray
transArr
=
JSONArray
.
parseArray
(
transactiondetail
);
JSONArray
passeArr
=
JSONArray
.
parseArray
(
orderpassenger
);
List
<
OrderPassenger
>
passengers
=
JSONArray
.
parseArray
(
orderpassenger
,
OrderPassenger
.
class
);
List
<
OrderInfo
>
orderInfos
=
JSONArray
.
parseArray
(
orderDetail
,
OrderInfo
.
class
);
// 注意内嵌对象
List
<
OrderPurchase
>
purchases
=
JSONArray
.
parseArray
(
orderpurchase
,
OrderPurchase
.
class
);
// 记录不能保存销售明细记录的 乘机人信息
StringBuilder
orderInfoEmpty
=
new
StringBuilder
(
"获取不到 orderInfo 的乘机人数据:"
);
List
<
Map
>
orderInfoEmptyList
=
new
ArrayList
<>();
StringBuilder
purchaseEmpty
=
new
StringBuilder
(
"获取不到 purchase 的乘机人数据:"
);
List
<
Map
>
purchaseEmptyList
=
new
ArrayList
<>();
try
{
int
num
=
0
;
// 出票完成状态的订单中 乘机人
for
(
OrderPassenger
passenger
:
passengers
)
{
OrderInfo
orderInfo
=
null
;
SaleDetail
temp
=
new
SaleDetail
();
try
{
for
(
OrderInfo
o
:
orderInfos
)
{
if
(
StringUtils
.
equalsIgnoreCase
(
passenger
.
getOrderId
(),
o
.
getOrderId
()))
{
o
=
JSONObject
.
parseObject
(
JSONObject
.
toJSONString
(
o
),
OrderInfo
.
class
);
orderInfo
=
o
;
break
;
}
}
OrderPurchase
purchase
=
null
;
for
(
OrderPurchase
p
:
purchases
)
{
if
(
StringUtils
.
equalsIgnoreCase
(
passenger
.
getOrderId
(),
p
.
getOrderId
())
&&
p
.
getPassengerIds
().
contains
(
passenger
.
getId
())){
purchase
=
p
;
break
;
}
}
Store
store
=
null
;
if
(
Objects
.
isNull
(
orderInfo
))
{
Map
<
String
,
String
>
orderInfoEmptyMap
=
new
HashMap
<>();
orderInfoEmptyMap
.
put
(
"id"
,
passenger
.
getId
());
orderInfoEmptyMap
.
put
(
"name"
,
passenger
.
getPassengerName
());
orderInfoEmptyMap
.
put
(
"orderId"
,
passenger
.
getOrderId
());
orderInfoEmptyList
.
add
(
orderInfoEmptyMap
);
continue
;
}
if
(
Objects
.
isNull
(
purchase
))
{
Map
<
String
,
String
>
purchaseEmptyMap
=
new
HashMap
<>();
purchaseEmptyMap
.
put
(
"id"
,
passenger
.
getId
());
purchaseEmptyMap
.
put
(
"name"
,
passenger
.
getPassengerName
());
purchaseEmptyMap
.
put
(
"orderId"
,
passenger
.
getOrderId
());
purchaseEmptyList
.
add
(
purchaseEmptyMap
);
continue
;
}
for
(
Store
s
:
storelist
)
{
if
(
StringUtils
.
equalsIgnoreCase
(
s
.
getId
(),
orderInfo
.
getOrderBelong
()))
{
store
=
s
;
}
}
temp
.
setId
(
UUID
.
randomUUID
().
toString
());
temp
.
setCreateTime
(
DateUtil
.
DateToStr
(
new
Date
(),
"yyyy-MM-dd HH:mm:ss"
));
temp
.
setUpdateTime
(
DateUtil
.
DateToStr
(
new
Date
(),
"yyyy-MM-dd HH:mm:ss"
));
temp
.
setOfficalReceivedPaymentStatus
(
""
);
temp
.
setKey
(
key
);
//标识
temp
.
setOfficalBalance
(
0.0
);
temp
.
setOfficalActualExpendAmount
(
0.0
);
temp
.
setOfficalRateAdjustDate
(
""
);
temp
.
setCreateOrderTime
(
DateUtil
.
DateToStr
(
orderInfo
.
getCreateTime
(),
"yyyy-MM-dd HH:mm:ss"
));
temp
.
setTicketTime
(
DateUtil
.
DateToStr
(
orderInfo
.
getTicketTime
(),
"yyyy-MM-dd HH:mm:ss"
));
temp
.
setOuterOrderNo
(
orderInfo
.
getOuterOrderNo
());
temp
.
setChannel
(
store
.
getChannelCode
());
temp
.
setStore
(
store
.
getStoreShortName
());
List
<
OrderFlightInfo
>
flightInfos
=
orderInfo
.
getFlightInfos
();
OrderFlightInfo
flightInfo
=
flightInfos
.
get
(
0
);
String
orderTripType
=
""
;
if
(
orderInfo
.
getTripType
()
!=
null
){
if
(
orderInfo
.
getTripType
().
equals
(
"1"
))
orderTripType
=
"单程"
;
if
(
orderInfo
.
getTripType
().
equals
(
"2"
))
orderTripType
=
"往返"
;
if
(
orderInfo
.
getTripType
().
equals
(
"3"
))
orderTripType
=
"转机"
;
}
else
{
orderTripType
=
"无"
;
}
temp
.
setTairLine
(
orderInfo
.
getOrg
()
+
"-"
+
orderInfo
.
getDst
());
temp
.
setFlightTime
(
Long
.
toString
(
flightInfo
.
getFlightTime
().
getTime
()));
temp
.
setFlightNumber
(
flightInfo
.
getFlightNo
());
temp
.
setTripType
(
orderTripType
);
temp
.
setPnrType
(
orderTripType
);
// temp.setPnrType(convertTripTypeNum(passenger.getPnr().split(",").length +""));
temp
.
setPnr
(
passenger
.
getPnr
());
temp
.
setPassengerCount
(
1
);
// 人数
Double
salePrice
=
new
Double
(
0.0
);
if
(
passenger
.
getPassengerType
()
==
1
)
{
// 成人
salePrice
=
orderInfo
.
getSalePrice
().
doubleValue
();
// 成人单人
}
else
if
(
passenger
.
getPassengerType
()
==
2
){
// 儿童
salePrice
=
orderInfo
.
getChildSalePrice
().
doubleValue
();
// 单人
}
else
{
// 婴儿
}
int
passengerCount
=
purchase
.
getPassengerIds
().
split
(
","
).
length
;
double
purchasePrice
=
purchase
.
getLocalTotalPrice
().
doubleValue
()
/
passengerCount
;
temp
.
setSalePrice
(
salePrice
);
// 销售金额
temp
.
setLuggagePrice
(
0.0
);
// 行李金额
temp
.
setPoints
(
Integer
.
valueOf
(
purchase
.
getPoints
()));
temp
.
setPurchaseCurrency
(
purchase
.
getCurrencyCode
());
// 货币代码
temp
.
setPurchasePrice_local
(
purchasePrice
);
// 外币采购金额
temp
.
setPurchasePrice_rmb
(
purchasePrice
);
// 人民币采购金额
temp
.
setTransactionDetail_local
(
purchasePrice
);
// 支付明细(外)
temp
.
setTransactionDetail_rmb
(
purchasePrice
);
// 支付明细(本)
temp
.
setPayMethod
(
purchase
.
getPurchaseAccount
());
// 支付方式
temp
.
setCardNumber
(
purchase
.
getAccountNumber
());
// 卡号
temp
.
setProfit
(
temp
.
getSalePrice
()
-
temp
.
getTransactionDetail_rmb
());
// 利润
temp
.
setTransactionNumber
(
purchase
.
getPaymentTransactionId
());
// 交易流水号
temp
.
setOrderValueAddedNo
(
""
);
// 增值服务单号
temp
.
setPurchaseChannel
(
converPurchaseChannel
(
purchase
.
getPurchaseChannel
()));
// 采购渠道
temp
.
setPurchaseAccount
(
purchase
.
getPurchaseAccount
());
// 采购账号
temp
.
setPurchaseOrderNo
(
purchase
.
getPurchaseOrderNo
());
// 采购订单号
temp
.
setPolicyType
(
""
);
// 政策类型
temp
.
setPolicyCode
(
orderInfo
.
getPolicySource
());
// 政策代码
temp
.
setOrderStatus
(
convertOrderStatus
(
orderInfo
.
getOrderStatus
()));
// 订单状态
temp
.
setOperator
(
getUserNameById
(
userlist
,
purchase
.
getPurchaseOperator
()));
// 出票人
temp
.
setPurchaseTime
(
DateUtil
.
DateToStr
(
purchase
.
getPurchaseTime
(),
"yyyy-MM-dd HH:mm:ss"
));
// 采购时间
temp
.
setOrderValueAdded
(
""
);
// 附加产品
temp
.
setOrderValueAddedSpecific
(
""
);
// 附加产品规格
temp
.
setRemark
(
passenger
.
getRemark
());
// 备注
temp
.
setOfficalReceivedPaymentStatus
(
""
);
// 财务-回款状态
temp
.
setOfficalActualExpendAmount
(
0.0
);
// 财务-实际支出金额
temp
.
setOfficalBalance
(
0.0
);
// 财务-补差
temp
.
setOfficalRateAdjustDate
(
""
);
// 财务-外币调整日期
temp
.
setPassengerNames
(
passenger
.
getPassengerName
()
+
"-"
+
passenger
.
getTicketNumber
());
// 乘客姓名-票号
temp
.
setAdultCount
(
passenger
.
getPassengerType
()
==
1
?
1
:
0
);
temp
.
setChildCount
(
passenger
.
getPassengerType
()
==
2
?
1
:
0
);
saleDetailList
.
add
(
temp
);
num
++;
}
catch
(
NumberFormatException
e
)
{
e
.
printStackTrace
();
logger
.
error
(
"parseToSaleDetails |解析销售报表明细异常,passengerId="
+
passenger
.
getId
()
+
", passengerName="
+
passenger
.
getPassengerName
()
+
""
,
e
);
continue
;
}
}
logger
.
info
(
"parseToSaleDetails |解析销售报表明细成功!saleDetailList.size="
+
saleDetailList
.
size
());
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
logger
.
error
(
"parseToSaleDetails |解析销售报表明细异常"
,
e
);
}
finally
{
if
(
passengers
.
size
()
!=
saleDetailList
.
size
())
{
logger
.
info
(
orderInfoEmpty
.
append
(
JSONObject
.
toJSONString
(
orderInfoEmptyList
)));
logger
.
info
(
purchaseEmpty
.
append
(
JSONObject
.
toJSONString
(
purchaseEmptyList
)));
}
}
System
.
out
.
println
(
JSONObject
.
toJSONString
(
saleDetailList
));
return
saleDetailList
;
}
/**
* 根据用户 id 获取用户姓名 name
* @param userlist
* @param userId
* @return
*/
public
String
getUserNameById
(
List
<
User
>
userlist
,
String
userId
)
{
String
name
=
""
;
if
(
userlist
!=
null
&&
userlist
.
size
()
>
0
)
{
for
(
int
i
=
0
;
i
<
userlist
.
size
();
i
++)
{
if
(
userlist
.
get
(
i
).
getUserID
().
equals
(
userId
))
{
name
=
userlist
.
get
(
i
).
getUsername
();
//出票人真名
break
;
}
}
}
return
name
;
}
/**
* 判空,若为 Null 则替代为给定字符串 "0"
* @param obj
* @param toString
...
...
@@ -658,6 +858,28 @@ public class ParseToSaleDetail extends BaseService{
return
status
;
}
// 1.官网 2.bsp 3.b2b 4.小程序 5.航班管家 6.蜗牛去哪儿
public
String
converPurchaseChannel
(
String
channel
)
{
String
channelStr
=
""
;
switch
(
Integer
.
valueOf
(
channel
))
{
case
1
:
channelStr
=
"官网"
;
break
;
case
2
:
channelStr
=
"BSP"
;
break
;
case
3
:
channelStr
=
"B2B"
;
break
;
case
4
:
channelStr
=
"去哪儿小程序"
;
break
;
case
5
:
channelStr
=
"航班管家分销"
;
break
;
case
6
:
channelStr
=
"蜗牛去哪儿"
;
break
;
default
:
channelStr
=
""
;
break
;
}
return
channelStr
;
}
public
String
convertRouteType
(
String
key
){
switch
(
key
)
{
case
"OW"
:
key
=
"去程"
;
...
...
@@ -733,13 +955,13 @@ public class ParseToSaleDetail extends BaseService{
}
/**
* 快速导出报表(新)
* 快速导出报表(新)
20210324
* @param saleDetails
* @param filePath
* @return
*/
public
String
createSaleDetailReport
(
List
<
SaleDetail
>
saleDetails
,
String
filePath
){
logger
.
info
(
"开始生成报表"
);
logger
.
info
(
"
createSaleDetailReport(saleDetails, filePath) |
开始生成报表"
);
// 写到本地指定文件夹目录中
File
files
=
new
File
(
filePath
);
...
...
@@ -820,6 +1042,9 @@ public class ParseToSaleDetail extends BaseService{
sheet
.
setColumnView
(
39
,
cellView
);
sheet
.
setColumnView
(
40
,
cellView
);
sheet
.
setColumnView
(
41
,
cellView
);
sheet
.
setColumnView
(
42
,
cellView
);
sheet
.
setColumnView
(
43
,
cellView
);
sheet
.
setColumnView
(
44
,
cellView
);
sheet
.
getSettings
().
setDefaultColumnWidth
(
22
);
//设置默认宽度22px
sheet
.
addCell
(
new
Label
(
0
,
0
,
"生单时间"
,
wcf2
));
sheet
.
addCell
(
new
Label
(
1
,
0
,
"出票时间"
,
wcf2
));
...
...
@@ -865,9 +1090,10 @@ public class ParseToSaleDetail extends BaseService{
sheet
.
addCell
(
new
Label
(
41
,
0
,
"财务-外币调整日期"
,
wcf2
));
sheet
.
addCell
(
new
Label
(
42
,
0
,
"航司"
,
wcf2
));
sheet
.
addCell
(
new
Label
(
43
,
0
,
"旅客姓名"
,
wcf2
));
sheet
.
addCell
(
new
Label
(
44
,
0
,
"票号"
,
wcf2
));
//遍历采购信息
if
(
saleDetails
==
null
||
saleDetails
.
size
()
==
0
){
logger
.
info
(
"获取销售明细表数据为空,saleDetails.size()=0"
);
logger
.
info
(
"
createSaleDetailReport(saleDetails, filePath) |
获取销售明细表数据为空,saleDetails.size()=0"
);
}
else
{
for
(
int
i
=
0
;
i
<
saleDetails
.
size
();
i
++)
{
SaleDetail
saleDetail
=
saleDetails
.
get
(
i
);
...
...
@@ -1054,8 +1280,14 @@ public class ParseToSaleDetail extends BaseService{
}
sheet
.
addCell
(
new
Label
(
42
,
i
+
1
,
carrier
,
wcf2
));
if
(
StringUtils
.
isNotBlank
(
saleDetail
.
getPassengerNames
())){
sheet
.
addCell
(
new
Label
(
43
,
i
+
1
,
saleDetail
.
getPassengerNames
(),
wcf2
));
String
passengerNames
=
saleDetail
.
getPassengerNames
().
replaceAll
(
"\r|\n|\r\n"
,
""
);
if
(
StringUtils
.
isNotBlank
(
passengerNames
)){
String
name
=
passengerNames
.
substring
(
0
,
passengerNames
.
indexOf
(
"-"
));
String
ticketNo
=
passengerNames
.
substring
(
passengerNames
.
indexOf
(
"-"
)
+
1
);
StringBuffer
stringBuffer
=
new
StringBuffer
(
ticketNo
).
insert
(
3
,
"-"
);
ticketNo
=
stringBuffer
.
toString
();
sheet
.
addCell
(
new
Label
(
43
,
i
+
1
,
name
,
wcf2
));
// 乘机人姓名
sheet
.
addCell
(
new
Label
(
44
,
i
+
1
,
ticketNo
,
wcf2
));
// 票号
}
if
(
count
>
0
){
//本采购信息对应票号
...
...
@@ -1076,10 +1308,10 @@ public class ParseToSaleDetail extends BaseService{
}
}
}
logger
.
info
(
"生成销售明细报表成功!"
);
logger
.
info
(
"
createSaleDetailReport(saleDetails, filePath) |
生成销售明细报表成功!"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
logger
.
error
(
"导出Execl异常"
,
e
);
logger
.
error
(
"
createSaleDetailReport(saleDetails, filePath) |
导出Execl异常"
,
e
);
}
finally
{
try
{
workbook
.
write
();
...
...
@@ -1088,20 +1320,20 @@ public class ParseToSaleDetail extends BaseService{
}
catch
(
Exception
e
){
e
.
printStackTrace
();
logger
.
error
(
"写出Execl异常"
,
e
);
logger
.
error
(
"
createSaleDetailReport(saleDetails, filePath) |
写出Execl异常"
,
e
);
}
}
return
file
;
}
/**
* 通过 response 对象向浏览器输出二进制流生成报表
* 通过 response 对象向浏览器输出二进制流生成报表
20210915094651
* @param saleDetails
* @param response
* @return
*/
public
String
createSaleDetailReport
(
List
<
SaleDetail
>
saleDetails
,
HttpServletResponse
response
){
logger
.
info
(
"开始生成报表"
);
logger
.
info
(
"
createSaleDetailReport(saleDetails, response) |
开始生成报表"
);
WritableWorkbook
workbook
=
null
;
...
...
@@ -1183,6 +1415,9 @@ public class ParseToSaleDetail extends BaseService{
sheet
.
setColumnView
(
39
,
cellView
);
sheet
.
setColumnView
(
40
,
cellView
);
sheet
.
setColumnView
(
41
,
cellView
);
sheet
.
setColumnView
(
42
,
cellView
);
sheet
.
setColumnView
(
43
,
cellView
);
sheet
.
setColumnView
(
44
,
cellView
);
sheet
.
getSettings
().
setDefaultColumnWidth
(
22
);
//设置默认宽度22px
sheet
.
addCell
(
new
Label
(
0
,
0
,
"生单时间"
,
wcf2
));
sheet
.
addCell
(
new
Label
(
1
,
0
,
"出票时间"
,
wcf2
));
...
...
@@ -1198,6 +1433,7 @@ public class ParseToSaleDetail extends BaseService{
sheet
.
addCell
(
new
Label
(
11
,
0
,
"人数"
,
wcf2
));
sheet
.
addCell
(
new
Label
(
12
,
0
,
"成人数量"
,
wcf2
));
sheet
.
addCell
(
new
Label
(
13
,
0
,
"儿童数量"
,
wcf2
));
sheet
.
addCell
(
new
Label
(
43
,
0
,
"旅客姓名"
,
wcf2
));
sheet
.
addCell
(
new
Label
(
14
,
0
,
"销售—金额"
,
wcf2
));
sheet
.
addCell
(
new
Label
(
15
,
0
,
"行李总金额"
,
wcf2
));
sheet
.
addCell
(
new
Label
(
16
,
0
,
"采购积分"
,
wcf2
));
...
...
@@ -1228,9 +1464,10 @@ public class ParseToSaleDetail extends BaseService{
sheet
.
addCell
(
new
Label
(
41
,
0
,
"财务-外币调整日期"
,
wcf2
));
sheet
.
addCell
(
new
Label
(
42
,
0
,
"航司"
,
wcf2
));
sheet
.
addCell
(
new
Label
(
43
,
0
,
"旅客姓名"
,
wcf2
));
sheet
.
addCell
(
new
Label
(
44
,
0
,
"票号"
,
wcf2
));
//遍历采购信息
if
(
saleDetails
==
null
||
saleDetails
.
size
()
==
0
){
logger
.
info
(
"获取销售明细表数据为空,saleDetails.size()=0"
);
logger
.
info
(
"
createSaleDetailReport(saleDetails, response) |
获取销售明细表数据为空,saleDetails.size()=0"
);
}
else
{
for
(
int
i
=
0
;
i
<
saleDetails
.
size
();
i
++)
{
SaleDetail
saleDetail
=
saleDetails
.
get
(
i
);
...
...
@@ -1417,8 +1654,14 @@ public class ParseToSaleDetail extends BaseService{
}
sheet
.
addCell
(
new
Label
(
42
,
i
+
1
,
carrier
,
wcf2
));
if
(
StringUtils
.
isNotBlank
(
saleDetail
.
getPassengerNames
())){
sheet
.
addCell
(
new
Label
(
43
,
i
+
1
,
saleDetail
.
getPassengerNames
(),
wcf2
));
String
passengerNames
=
saleDetail
.
getPassengerNames
().
replaceAll
(
"\r|\n|\r\n"
,
""
);
if
(
StringUtils
.
isNotBlank
(
passengerNames
)){
String
name
=
passengerNames
.
substring
(
0
,
passengerNames
.
indexOf
(
"-"
));
String
ticketNo
=
passengerNames
.
substring
(
passengerNames
.
indexOf
(
"-"
)
+
1
);
StringBuffer
stringBuffer
=
new
StringBuffer
(
ticketNo
).
insert
(
3
,
"-"
);
ticketNo
=
stringBuffer
.
toString
();
sheet
.
addCell
(
new
Label
(
43
,
i
+
1
,
name
,
wcf2
));
// 乘机人姓名
sheet
.
addCell
(
new
Label
(
44
,
i
+
1
,
ticketNo
,
wcf2
));
// 票号
}
if
(
count
>
0
){
//本采购信息对应票号
...
...
@@ -1439,10 +1682,10 @@ public class ParseToSaleDetail extends BaseService{
}
}
}
logger
.
info
(
"生成销售明细报表成功!"
);
logger
.
info
(
"
createSaleDetailReport(saleDetails, response) |
生成销售明细报表成功!"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
logger
.
error
(
"导出Execl异常"
,
e
);
//
e.printStackTrace();
logger
.
error
(
"
createSaleDetailReport(saleDetails, response) |
导出Execl异常"
,
e
);
}
finally
{
try
{
workbook
.
write
();
...
...
@@ -1450,8 +1693,8 @@ public class ParseToSaleDetail extends BaseService{
workbook
.
close
();
}
catch
(
Exception
e
){
e
.
printStackTrace
();
logger
.
error
(
"写出Execl异常"
,
e
);
//
e.printStackTrace();
logger
.
error
(
"
createSaleDetailReport(saleDetails, response) |
写出Execl异常"
,
e
);
}
}
return
file
;
...
...
src/main/java/com/yutu/base/service/SaleDetailService.java
View file @
902d05df
...
...
@@ -103,6 +103,7 @@ public class SaleDetailService implements CommandLineRunner {
/**
* 获取销售明细报表数据,并将其处理为 Excel
* 20210915094612
* @param requestBody
* @param response
* @return
...
...
src/main/resources/application-test.yml
View file @
902d05df
...
...
@@ -7,8 +7,9 @@ spring:
polestarLogsServicesUrl
:
'
http://127.0.0.1:8089/'
dataApiUrl
:
'
http://14.18.207.91:38071/iffs-data-api/'
# 订单服务 ordercenter 中销售明细报表统计接口
# statementApiUrl: 'http://121.36.16.56:32480/ordercenterApi/'
statementApiUrl
:
'
http://121.36.31.103:32480/ordercenterApi/'
statementApiUrl
:
'
http://127.0.0.1:8091/ordercenterApi/'
# statementApiUrl: 'http://121.36.16.56:32480/ordercenterApi/'
# statementApiUrl: 'http://121.36.31.103:32480/ordercenterApi/'
pathConfig
:
saleDetailReportExcelPath
:
'
D:\\polestar_ExcelFile/'
# 销售明细报表导出保存的本地路径
saleReportExcelPath
:
'
D:/polestar_ExcelFile/'
#
...
...
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