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
20d4885b
Commit
20d4885b
authored
Mar 23, 2021
by
peterchu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix:
1. 对接销售明细报表业务
parent
ba02c925
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
694 additions
and
255 deletions
+694
-255
polestar-statement-services.iml
+7
-0
pom.xml
+7
-0
src/main/java/com/yutu/base/controller/DownLoadController.java
+23
-5
src/main/java/com/yutu/base/controller/StatementController.java
+69
-0
src/main/java/com/yutu/base/controller/UploadController.java
+2
-2
src/main/java/com/yutu/base/entity/NoteResult.java
+64
-4
src/main/java/com/yutu/base/entity/Response.java
+14
-3
src/main/java/com/yutu/base/entity/SaleDetail.java
+19
-19
src/main/java/com/yutu/base/service/DownLoadService.java
+180
-167
src/main/java/com/yutu/base/service/ParseToSaleDetail.java
+57
-20
src/main/java/com/yutu/base/service/SaleDetailService.java
+170
-26
src/main/resources/application-prod.yml
+2
-2
src/main/resources/application-temp.yml
+2
-2
src/main/resources/application-test.yml
+6
-3
报表服务备忘记录.txt
+72
-2
No files found.
polestar-statement-services.iml
View file @
20d4885b
...
...
@@ -84,5 +84,11 @@
<orderEntry
type=
"library"
name=
"Maven: org.apache.xmlbeans:xmlbeans:2.6.0"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: stax:stax-api:1.0.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.github.virtuald:curvesapi:1.04"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.yutu.comm:yutu_common:1.0.37"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.alibaba:fastJson:1.2.7"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: com.alibaba:easyexcel:2.2.6"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: cglib:cglib:3.1"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.ow2.asm:asm:4.2"
level=
"project"
/>
<orderEntry
type=
"library"
name=
"Maven: org.ehcache:ehcache:3.2.2"
level=
"project"
/>
</component>
</module>
\ No newline at end of file
pom.xml
View file @
20d4885b
...
...
@@ -127,6 +127,13 @@
<artifactId>
poi-ooxml
</artifactId>
<version>
3.17
</version>
</dependency>
<!-- 使用 common 包中的 NoteResult -->
<dependency>
<groupId>
com.yutu.comm
</groupId>
<artifactId>
yutu_common
</artifactId>
<version>
1.0.37
</version>
</dependency>
</dependencies>
<build>
...
...
src/main/java/com/yutu/base/controller/DownLoadController.java
View file @
20d4885b
...
...
@@ -27,12 +27,28 @@ public class DownLoadController {
@Autowired
private
PrivateFreightService
privateFreightService
;
/**
* 获取销售数据
* @param requestBody
* @return
*/
@RequestMapping
(
value
=
"download/getSaleDetailData
.do
"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
value
=
"download/getSaleDetailData"
,
method
=
RequestMethod
.
POST
)
public
Response
getSaleDetail
(
@RequestBody
String
requestBody
){
return
downLoadService
.
getSaleDetailReportData
(
requestBody
);
}
...
...
@@ -41,16 +57,17 @@ public class DownLoadController {
* @param requestBody
* @return
*/
@RequestMapping
(
value
=
"download/saleDetailReport
.do
"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
value
=
"download/saleDetailReport"
,
method
=
RequestMethod
.
POST
)
public
Response
saleDetailReport
(
@RequestBody
String
requestBody
){
return
downLoadService
.
downLoadSaleDetailReport
(
requestBody
);
}
/**
* 下载销售报表(符合查询条件时,直接从数据库SaleDetail表中直接下载获取报表数据)
* 快速导出报表(新)
* @param requestBody
* @return
*/
@RequestMapping
(
value
=
"download/saleDetailReportFromAutoSource
.do
"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
value
=
"download/saleDetailReportFromAutoSource"
,
method
=
RequestMethod
.
POST
)
public
Response
saleDetailReportFromAutoSource
(
@RequestBody
String
requestBody
){
return
downLoadService
.
downLoadSaleDetailFromAutoSource
(
requestBody
);
}
...
...
@@ -61,6 +78,7 @@ public class DownLoadController {
*/
@RequestMapping
(
value
=
"parse/toSaleDetail"
,
method
=
RequestMethod
.
POST
)
public
Response
parseToSaleDetail
(
@RequestBody
String
requestBody
){
System
.
out
.
println
(
"---------------"
);
return
downLoadService
.
parseToSaleDetail
(
requestBody
);
}
/**
...
...
@@ -68,7 +86,7 @@ public class DownLoadController {
* @param requestBody
* @return
*/
@RequestMapping
(
value
=
"download/saleRules
.do
"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
value
=
"download/saleRules"
,
method
=
RequestMethod
.
POST
)
public
Response
downLoadSaleRules
(
@RequestBody
String
requestBody
){
logger
.
info
(
"下载加价规则,参数:"
+
requestBody
);
return
downLoadService
.
downLoadSaleRules
(
requestBody
);
...
...
@@ -94,7 +112,7 @@ public class DownLoadController {
/**
* 按照指定条件导出私有运价底价配置
*/
@RequestMapping
(
value
=
"privateFreight/download
.do
"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
value
=
"privateFreight/download"
,
method
=
RequestMethod
.
POST
)
public
Response
exportPrivateFreight
(
@RequestBody
String
requestBody
){
return
privateFreightService
.
exportPrivateFreight
(
requestBody
);
}
...
...
src/main/java/com/yutu/base/controller/StatementController.java
0 → 100644
View file @
20d4885b
package
com
.
yutu
.
base
.
controller
;
import
com.yutu.base.entity.Response
;
import
com.yutu.base.service.SaleDetailService
;
import
com.yutu.comm.entity.exception.NoteResult
;
import
org.apache.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* 报表管理:
* 销售明细报表
* 销售汇总报表
* 20210319111255
*/
@RestController
@RequestMapping
(
"statementApi/"
)
public
class
StatementController
{
private
Logger
logger
=
Logger
.
getLogger
(
"download"
);
@Autowired
private
SaleDetailService
saleDetailService
;
/**
* 销售明细报表页面 获取销售明细数据
* @param requestBody
* @return
*/
@RequestMapping
(
value
=
"salesDetail/getSalesDetailList"
,
method
=
RequestMethod
.
POST
)
public
NoteResult
getSalesDetailList
(
@RequestBody
String
requestBody
){
return
saleDetailService
.
getSalesDetailList
(
requestBody
);
}
/**
* 下载销售报表(符合查询条件时,直接从数据库SaleDetail表中直接下载获取报表数据)
* 销售明细报表 导出报表(新)
* @param requestBody
* @return
*/
@RequestMapping
(
value
=
"salesDetail/downloadSalesDetailReport"
,
method
=
RequestMethod
.
POST
)
public
NoteResult
saleDetailReportFromAutoSource
(
@RequestBody
String
requestBody
){
return
saleDetailService
.
downloadSalesDetailReportExcel
(
requestBody
);
}
}
src/main/java/com/yutu/base/controller/UploadController.java
View file @
20d4885b
...
...
@@ -17,7 +17,7 @@ public class UploadController {
@Autowired
private
UploadService
uploadService
;
@RequestMapping
(
value
=
"upload/saleRules
.do
"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
value
=
"upload/saleRules"
,
method
=
RequestMethod
.
POST
)
public
Response
uploadSaleRules
(
@RequestBody
String
requestBody
){
logger
.
info
(
"上传销售规则,参数:"
+
requestBody
);
Response
response
=
uploadService
.
uploadSaleRules
(
requestBody
);
...
...
@@ -25,7 +25,7 @@ public class UploadController {
return
response
;
}
@RequestMapping
(
value
=
"privateFreight/upload
.do
"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
value
=
"privateFreight/upload"
,
method
=
RequestMethod
.
POST
)
public
Response
uploadPrivateFreight
(
@RequestBody
String
requestBody
){
logger
.
info
(
"上传私有运价底价配置,参数:"
+
requestBody
);
Response
response
=
uploadService
.
uploadPrivateFreight
(
requestBody
);
...
...
src/main/java/com/yutu/base/entity/NoteResult.java
View file @
20d4885b
...
...
@@ -2,7 +2,7 @@ package com.yutu.base.entity;
import
java.io.Serializable
;
public
class
NoteResult
implements
Serializable
{
public
class
NoteResult
<
T
>
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 状态码 0-成功 2-失败
...
...
@@ -19,13 +19,13 @@ public class NoteResult implements Serializable {
/**
* 设置要返回的具体数据
*/
private
Object
data
;
//返回的数据
private
T
data
;
//返回的数据
public
NoteResult
()
{
}
public
NoteResult
(
int
status
,
String
msg
,
Object
data
)
{
public
NoteResult
(
int
status
,
String
msg
,
T
data
)
{
this
.
status
=
status
;
this
.
msg
=
msg
;
this
.
data
=
data
;
...
...
@@ -35,7 +35,7 @@ public class NoteResult implements Serializable {
return
data
;
}
public
void
setData
(
Object
data
)
{
public
void
setData
(
T
data
)
{
this
.
data
=
data
;
}
...
...
@@ -63,6 +63,66 @@ public class NoteResult implements Serializable {
this
.
info
=
info
;
}
/**
* 状态值 枚举
*/
public
static
enum
Status
{
SUCCEED
(
200
,
"SUCCESS"
),
// 成功的状态
FAILED
(
400
,
"FAILED"
),
// 失败的状态
ERROR
(
300
,
"ERROR"
),
// 出错的状态
NONE
,
//
TICKET_DATE_ERROR
,
//航班日期错误
FLIGHT_INFO_ERROR
,
//航程信息错误
PASSENGER_INFO_ERROR
,
//乘客信息错误
SERVER_INTRRNAL_ERROR
;
//服务内部错误
private
Integer
status
;
private
String
msg
;
private
Status
()
{
}
private
Status
(
Integer
status
){
this
.
status
=
status
;
}
private
Status
(
Integer
status
,
String
msg
)
{
this
.
status
=
status
;
this
.
msg
=
msg
;
}
public
Integer
getStatus
()
{
return
status
;
}
public
String
getMsg
(){
return
msg
;
}
}
public
static
NoteResult
success
(){
NoteResult
noteResult
=
new
NoteResult
();
noteResult
.
setStatus
(
Status
.
SUCCEED
.
getStatus
());
noteResult
.
setMsg
(
Status
.
SUCCEED
.
getMsg
());
noteResult
.
setData
(
new
Object
());
return
noteResult
;
}
public
static
NoteResult
success
(
Object
data
){
NoteResult
noteResult
=
new
NoteResult
();
noteResult
.
setStatus
(
Status
.
SUCCEED
.
getStatus
());
noteResult
.
setMsg
(
Status
.
SUCCEED
.
getMsg
());
noteResult
.
setData
(
data
);
return
noteResult
;
}
public
static
NoteResult
error
(
String
errorMessage
){
NoteResult
noteResult
=
new
NoteResult
();
noteResult
.
setStatus
(
Status
.
ERROR
.
getStatus
());
noteResult
.
setMsg
(
errorMessage
);
noteResult
.
setData
(
new
Object
());
return
noteResult
;
}
@Override
public
String
toString
()
{
return
"NoteResult [status="
+
status
+
", msg="
+
msg
+
", info="
...
...
src/main/java/com/yutu/base/entity/Response.java
View file @
20d4885b
...
...
@@ -52,15 +52,26 @@ public class Response implements Serializable{
}
public
static
enum
Status
{
SUCCEED
,
FAILED
,
NONE
,
SUCCEED
(
200
),
// 成功的状态
FAILED
(
400
),
// 失败的状态
NONE
,
//
TICKET_DATE_ERROR
,
//航班日期错误
FLIGHT_INFO_ERROR
,
//航程信息错误
PASSENGER_INFO_ERROR
,
//乘客信息错误
SERVER_INTRRNAL_ERROR
;
//服务内部错误
public
Integer
getStatus
()
{
return
status
;
}
private
Integer
status
;
private
Status
()
{
}
private
Status
(
Integer
status
)
{
this
.
status
=
status
;
}
}
@Override
...
...
src/main/java/com/yutu/base/entity/SaleDetail.java
View file @
20d4885b
...
...
@@ -14,12 +14,12 @@ public class SaleDetail implements Serializable {
private
String
id
;
private
String
key
;
//唯一标识 customerId_fromDate_toDate
private
Date
createTime
;
//创建时间
private
Date
updateTime
;
//更新时间
private
String
createTime
;
//创建时间
private
String
updateTime
;
//更新时间
private
Integer
sortIndex
;
private
Date
createOrderTime
;
// sheet.addCell(new Label(0,0,"生单时间",wcf2));
private
Date
ticketTime
;
// sheet.addCell(new Label(1,0,"出票时间",wcf2));
private
String
createOrderTime
;
// sheet.addCell(new Label(0,0,"生单时间",wcf2));
private
String
ticketTime
;
// sheet.addCell(new Label(1,0,"出票时间",wcf2));
private
String
outerOrderNo
;
// sheet.addCell(new Label(2,0,"订单号",wcf2));
private
String
channel
;
// sheet.addCell(new Label(3,0,"销售渠道",wcf2));
private
String
store
;
// sheet.addCell(new Label(4,0,"销售店铺",wcf2));
...
...
@@ -50,14 +50,14 @@ public class SaleDetail implements Serializable {
private
String
policyCode
;
// sheet.addCell(new Label(29,0,"政策编码",wcf2));
private
String
orderStatus
;
// sheet.addCell(new Label(30,0,"订单状态",wcf2));
private
String
operator
;
// sheet.addCell(new Label(31,0,"出票人",wcf2));
private
Date
purchaseTime
;
// sheet.addCell(new Label(32,0,"采购时间",wcf2));
private
String
purchaseTime
;
// sheet.addCell(new Label(32,0,"采购时间",wcf2));
private
String
orderValueAdded
;
// sheet.addCell(new Label(33,0,"附加产品",wcf2));
private
String
orderValueAddedSpecific
;
// sheet.addCell(new Label(34,0,"附加产品规格",wcf2));
private
String
remark
;
// sheet.addCell(new Label(35,0,"备注",wcf2));
private
String
officalReceivedPaymentStatus
;
// sheet.addCell(new Label(36,0,"财务-回款状态",wcf2));
private
Double
officalActualExpendAmount
;
// sheet.addCell(new Label(37,0,"财务-实际支出金额",wcf2));
private
Double
officalBalance
;
// sheet.addCell(new Label(38,0,"财务-补差",wcf2));
private
Date
officalRateAdjustDate
;
// sheet.addCell(new Label(39,0,"财务-外币调整日期",wcf2));
private
String
officalRateAdjustDate
;
// sheet.addCell(new Label(39,0,"财务-外币调整日期",wcf2));
private
String
passengerNames
;
//采购信息本次采购的乘客姓名
private
Integer
adultCount
;
//采购的成人数量
...
...
@@ -95,19 +95,19 @@ public class SaleDetail implements Serializable {
this
.
key
=
key
;
}
public
Date
getCreateTime
()
{
public
String
getCreateTime
()
{
return
createTime
;
}
public
void
setCreateTime
(
Date
createTime
)
{
public
void
setCreateTime
(
String
createTime
)
{
this
.
createTime
=
createTime
;
}
public
Date
getUpdateTime
()
{
public
String
getUpdateTime
()
{
return
updateTime
;
}
public
void
setUpdateTime
(
Date
updateTime
)
{
public
void
setUpdateTime
(
String
updateTime
)
{
this
.
updateTime
=
updateTime
;
}
...
...
@@ -120,20 +120,20 @@ public class SaleDetail implements Serializable {
}
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
public
Date
getCreateOrderTime
()
{
public
String
getCreateOrderTime
()
{
return
createOrderTime
;
}
public
void
setCreateOrderTime
(
Date
createOrderTime
)
{
public
void
setCreateOrderTime
(
String
createOrderTime
)
{
this
.
createOrderTime
=
createOrderTime
;
}
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
public
Date
getTicketTime
()
{
public
String
getTicketTime
()
{
return
ticketTime
;
}
public
void
setTicketTime
(
Date
ticketTime
)
{
public
void
setTicketTime
(
String
ticketTime
)
{
this
.
ticketTime
=
ticketTime
;
}
...
...
@@ -380,11 +380,11 @@ public class SaleDetail implements Serializable {
}
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
public
Date
getPurchaseTime
()
{
public
String
getPurchaseTime
()
{
return
purchaseTime
;
}
public
void
setPurchaseTime
(
Date
purchaseTime
)
{
public
void
setPurchaseTime
(
String
purchaseTime
)
{
this
.
purchaseTime
=
purchaseTime
;
}
...
...
@@ -436,11 +436,11 @@ public class SaleDetail implements Serializable {
this
.
officalBalance
=
officalBalance
;
}
public
Date
getOfficalRateAdjustDate
()
{
public
String
getOfficalRateAdjustDate
()
{
return
officalRateAdjustDate
;
}
public
void
setOfficalRateAdjustDate
(
Date
officalRateAdjustDate
)
{
public
void
setOfficalRateAdjustDate
(
String
officalRateAdjustDate
)
{
this
.
officalRateAdjustDate
=
officalRateAdjustDate
;
}
...
...
@@ -455,7 +455,7 @@ public class SaleDetail implements Serializable {
public
SaleDetail
()
{
}
public
SaleDetail
(
String
id
,
String
key
,
Date
createTime
,
Date
updateTime
,
Integer
sortIndex
,
Date
createOrderTime
,
Date
ticketTime
,
String
outerOrderNo
,
String
channel
,
String
store
,
String
tairLine
,
String
flightTime
,
String
flightNumber
,
String
tripType
,
String
pnrType
,
String
pnr
,
Integer
passengerCount
,
Double
salePrice
,
Double
luggagePrice
,
Integer
points
,
String
purchaseCurrency
,
Double
purchasePrice_local
,
Double
purchasePrice_rmb
,
Double
transactionDetail_local
,
Double
transactionDetail_rmb
,
String
payMethod
,
String
cardNumber
,
Double
profit
,
String
transactionNumber
,
String
orderValueAddedNo
,
String
purchaseChannel
,
String
purchaseAccount
,
String
purchaseOrderNo
,
String
policyType
,
String
policyCode
,
String
orderStatus
,
String
operator
,
Date
purchaseTime
,
String
orderValueAdded
,
String
orderValueAddedSpecific
,
String
remark
,
String
officalReceivedPaymentStatus
,
Double
officalActualExpendAmount
,
Double
officalBalance
,
Date
officalRateAdjustDate
,
String
passengerNames
,
Integer
adultCount
,
Integer
childCount
)
{
public
SaleDetail
(
String
id
,
String
key
,
String
createTime
,
String
updateTime
,
Integer
sortIndex
,
String
createOrderTime
,
String
ticketTime
,
String
outerOrderNo
,
String
channel
,
String
store
,
String
tairLine
,
String
flightTime
,
String
flightNumber
,
String
tripType
,
String
pnrType
,
String
pnr
,
Integer
passengerCount
,
Double
salePrice
,
Double
luggagePrice
,
Integer
points
,
String
purchaseCurrency
,
Double
purchasePrice_local
,
Double
purchasePrice_rmb
,
Double
transactionDetail_local
,
Double
transactionDetail_rmb
,
String
payMethod
,
String
cardNumber
,
Double
profit
,
String
transactionNumber
,
String
orderValueAddedNo
,
String
purchaseChannel
,
String
purchaseAccount
,
String
purchaseOrderNo
,
String
policyType
,
String
policyCode
,
String
orderStatus
,
String
operator
,
String
purchaseTime
,
String
orderValueAdded
,
String
orderValueAddedSpecific
,
String
remark
,
String
officalReceivedPaymentStatus
,
Double
officalActualExpendAmount
,
Double
officalBalance
,
String
officalRateAdjustDate
,
String
passengerNames
,
Integer
adultCount
,
Integer
childCount
)
{
this
.
id
=
id
;
this
.
key
=
key
;
this
.
createTime
=
createTime
;
...
...
src/main/java/com/yutu/base/service/DownLoadService.java
View file @
20d4885b
...
...
@@ -33,9 +33,9 @@ public class DownLoadService {
@Value
(
"${spring.urlConfig.productServiceUrl}"
)
private
String
productServiceUrl
;
@Value
(
"${spring.pathConfig.saleReportExcelPath}"
)
private
String
saleReportExcelPath
;
private
String
saleReportExcelPath
;
@Value
(
"${spring.pathConfig.saleDetailReportExcelPath}"
)
private
String
saleDetailReportExcelPath
;
private
String
saleDetailReportExcelPath
;
@Autowired
private
SaleDetailReportService
saleDetailReportService
;
...
...
@@ -44,25 +44,27 @@ public class DownLoadService {
/**
* 获取销售数据
*
* @param requestBody
* @return
*/
public
Response
getSaleDetailReportData
(
String
requestBody
){
if
(
StringUtils
.
isBlank
(
requestBody
))
{
public
Response
getSaleDetailReportData
(
String
requestBody
)
{
if
(
StringUtils
.
isBlank
(
requestBody
))
{
return
Response
.
error
(
"参数不能为空 [requestBody]"
);
}
logger
.
info
(
"开始获取数据,参数:"
+
requestBody
);
long
beginTime
=
System
.
currentTimeMillis
();
String
result
=
HttpsSendData
.
getPost
(
overseasAirTicketUrl
+
"orderInfo/getReportExcelData.do"
,
requestBody
);
if
(
StringUtils
.
isBlank
(
result
)){
// String result = HttpsSendData.getPost(overseasAirTicketUrl+"orderInfo/getReportExcelData.do",requestBody);
String
result
=
HttpsSendData
.
getPost
(
overseasAirTicketUrl
+
"order/getReportExcelData"
,
requestBody
);
if
(
StringUtils
.
isBlank
(
result
))
{
return
Response
.
error
(
"获取数据失败"
);
}
JSONObject
resultObj
=
JSONObject
.
parseObject
(
result
);
if
(
resultObj
.
getInteger
(
"status"
)
!=
0
)
{
if
(
resultObj
.
getInteger
(
"status"
)
!=
0
)
{
return
Response
.
error
(
"获取数据失败"
);
}
logger
.
info
(
"获取数据成功,共用时:"
+
(
System
.
currentTimeMillis
()
-
beginTime
));
Map
<
String
,
String
>
resultMap
=
resultObj
.
getObject
(
"data"
,
Map
.
class
);
logger
.
info
(
"获取数据成功,共用时:"
+
(
System
.
currentTimeMillis
()
-
beginTime
));
Map
<
String
,
String
>
resultMap
=
resultObj
.
getObject
(
"data"
,
Map
.
class
);
Response
response
=
new
Response
();
response
.
setStatus
(
Response
.
Status
.
SUCCEED
);
response
.
setData
(
resultMap
);
...
...
@@ -72,88 +74,92 @@ public class DownLoadService {
/**
* 下载销售报表
*
* @param requestBody
* @return
*/
public
Response
downLoadSaleDetailReport
(
String
requestBody
){
if
(
StringUtils
.
isBlank
(
requestBody
))
{
public
Response
downLoadSaleDetailReport
(
String
requestBody
)
{
if
(
StringUtils
.
isBlank
(
requestBody
))
{
return
Response
.
error
(
"参数不能为空 [requestBody]"
);
}
String
customerId
=
JSONObject
.
parseObject
(
requestBody
).
getString
(
"customerId"
);
logger
.
info
(
"开始获取数据,参数:"
+
requestBody
);
long
beginTime
=
System
.
currentTimeMillis
();
String
result
=
HttpsSendData
.
getPost
(
overseasAirTicketUrl
+
"orderInfo/getReportExcelData.do"
,
requestBody
);
if
(
StringUtils
.
isBlank
(
result
))
{
String
result
=
HttpsSendData
.
getPost
(
overseasAirTicketUrl
+
"order/getReportExcelData"
,
requestBody
);
if
(
StringUtils
.
isBlank
(
result
))
{
return
Response
.
error
(
"获取数据失败"
);
}
JSONObject
resultObj
=
JSONObject
.
parseObject
(
result
);
if
(
resultObj
.
getInteger
(
"status"
)
!=
0
)
{
if
(
resultObj
.
getInteger
(
"status"
)
!=
0
)
{
return
Response
.
error
(
"获取数据失败"
);
}
logger
.
info
(
"获取数据成功,共用时:"
+
(
System
.
currentTimeMillis
()
-
beginTime
));
logger
.
info
(
"获取数据成功,共用时:"
+
(
System
.
currentTimeMillis
()
-
beginTime
));
logger
.
info
(
"开始解析数据生成报表 ..."
);
Map
<
String
,
String
>
resultMap
=
resultObj
.
getObject
(
"data"
,
Map
.
class
);
Map
<
String
,
String
>
resultMap
=
resultObj
.
getObject
(
"data"
,
Map
.
class
);
Response
response
=
new
Response
();
try
{
final
String
filePath
=
saleDetailReportExcelPath
+
customerId
+
"/SalesDetailReport/"
;
//指定文件保存路径
try
{
final
String
filePath
=
saleDetailReportExcelPath
+
customerId
+
"/SalesDetailReport/"
;
//指定文件保存路径
String
path
=
saleDetailReportService
.
createExcel
(
resultMap
,
filePath
,
""
);
response
.
setStatus
(
Response
.
Status
.
SUCCEED
);
response
.
setData
(
path
);
response
.
setErrorMessage
(
"生成成功,总用时:"
+(
System
.
currentTimeMillis
()-
beginTime
)+
"ms"
);
logger
.
info
(
"生成销售明细报表,总用时:"
+(
System
.
currentTimeMillis
()-
beginTime
)+
"ms"
);
response
.
setErrorMessage
(
"生成成功,总用时:"
+
(
System
.
currentTimeMillis
()
-
beginTime
)
+
"ms"
);
logger
.
info
(
"生成销售明细报表,总用时:"
+
(
System
.
currentTimeMillis
()
-
beginTime
)
+
"ms"
);
return
response
;
}
catch
(
Exception
e
)
{
logger
.
error
(
"生成报表发生异常"
,
e
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"生成报表发生异常"
,
e
);
return
Response
.
error
(
"生成报表发生异常"
);
}
}
/**
* 下载加价规则
* 下载加价规则 包含数据
*
* @param requestBody
* @return
*/
public
Response
downLoadSaleRules
(
String
requestBody
){
public
Response
downLoadSaleRules
(
String
requestBody
)
{
JSONObject
requestObj
=
JSONObject
.
parseObject
(
requestBody
);
String
customerId
=
requestObj
.
getString
(
"customerId"
);
long
beginTime
=
System
.
currentTimeMillis
();
//请求运价直连工程获取源数据
String
result
=
HttpsSendData
.
getPost
(
productServiceUrl
+
"SaleRules/findByCustomerId.do
"
,
requestBody
);
if
(
StringUtils
.
isBlank
(
result
))
{
String
result
=
HttpsSendData
.
getPost
(
productServiceUrl
+
"SaleRules/findByCustomerId
"
,
requestBody
);
if
(
StringUtils
.
isBlank
(
result
))
{
return
Response
.
error
(
"获取加价规则源数据异常"
);
}
JSONObject
resultObj
=
JSONObject
.
parseObject
(
result
);
if
(
resultObj
.
getInteger
(
"status"
)
!=
0
)
{
if
(
resultObj
.
getInteger
(
"status"
)
!=
0
)
{
return
Response
.
error
(
"获取加价规则源数据失败"
);
}
JSONArray
dataArr
=
resultObj
.
getJSONArray
(
"data"
);
if
(
dataArr
.
size
()
==
0
)
{
if
(
dataArr
.
size
()
==
0
)
{
return
Response
.
error
(
"加价规则源数据共 0 条"
);
}
List
<
SaleRules
>
saleRules
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
dataArr
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
dataArr
.
size
();
i
++)
{
JSONObject
data
=
dataArr
.
getJSONObject
(
i
);
SaleRules
saleRule
=
new
SaleRules
(
data
.
getString
(
"id"
),
data
.
getString
(
"customerId"
),
data
.
getString
(
"channelId"
),
data
.
getString
(
"store"
),
data
.
getString
(
"ruleCode"
),
data
.
getString
(
"carrier"
),
data
.
getString
(
"org"
),
data
.
getString
(
"dst"
),
data
.
getInteger
(
"routeType"
),
data
.
getInteger
(
"policyType"
),
data
.
getString
(
"policyDesc"
),
data
.
getInteger
(
"point"
),
data
.
getInteger
(
"costPrice"
),
data
.
getString
(
"saleSdate"
),
data
.
getString
(
"saleEdate"
),
data
.
getString
(
"ticketDays"
),
data
.
getString
(
"tripSdate"
),
data
.
getString
(
"tripEdate"
),
data
.
getInteger
(
"status"
),
data
.
getInteger
(
"maxPrice"
),
data
.
getInteger
(
"minPrice"
),
data
.
getInteger
(
"minProfit"
),
data
.
getBigDecimal
(
"adultPricePoint"
),
data
.
getInteger
(
"adultAddPrice"
),
data
.
getInteger
(
"adultAddTax"
),
data
.
getBigDecimal
(
"adultTaxPoint"
),
data
.
getBigDecimal
(
"childPricePoint"
),
data
.
getInteger
(
"childAddPrice"
),
data
.
getInteger
(
"childAddTax"
),
data
.
getBigDecimal
(
"childTaxPoint"
),
data
.
getString
(
"operator"
),
data
.
getDate
(
"createTime"
),
data
.
getDate
(
"updateTime"
),
data
.
getInteger
(
"deleted"
),
data
.
getString
(
"notApplicableFlightNum"
),
data
.
getString
(
"applyFlightNum"
),
data
.
getInteger
(
"remainCabinNum"
),
data
.
getString
(
"cabinCode"
),
data
.
getString
(
"flightCycle"
),
data
.
getDouble
(
"floorPrice"
),
data
.
getDouble
(
"floorTax"
),
data
.
getInteger
(
"fitShare"
),
data
.
getString
(
"fitNationality"
),
data
.
getString
(
"disFitNationality"
),
data
.
getString
(
"ageRange"
),
data
.
getString
(
"attention"
));
SaleRules
saleRule
=
new
SaleRules
(
data
.
getString
(
"id"
),
data
.
getString
(
"customerId"
),
data
.
getString
(
"channelId"
),
data
.
getString
(
"store"
),
data
.
getString
(
"ruleCode"
),
data
.
getString
(
"carrier"
),
data
.
getString
(
"org"
),
data
.
getString
(
"dst"
),
data
.
getInteger
(
"routeType"
),
data
.
getInteger
(
"policyType"
),
data
.
getString
(
"policyDesc"
),
data
.
getInteger
(
"point"
),
data
.
getInteger
(
"costPrice"
),
data
.
getString
(
"saleSdate"
),
data
.
getString
(
"saleEdate"
),
data
.
getString
(
"ticketDays"
),
data
.
getString
(
"tripSdate"
),
data
.
getString
(
"tripEdate"
),
data
.
getInteger
(
"status"
),
data
.
getInteger
(
"maxPrice"
),
data
.
getInteger
(
"minPrice"
),
data
.
getInteger
(
"minProfit"
),
data
.
getBigDecimal
(
"adultPricePoint"
),
data
.
getInteger
(
"adultAddPrice"
),
data
.
getInteger
(
"adultAddTax"
),
data
.
getBigDecimal
(
"adultTaxPoint"
),
data
.
getBigDecimal
(
"childPricePoint"
),
data
.
getInteger
(
"childAddPrice"
),
data
.
getInteger
(
"childAddTax"
),
data
.
getBigDecimal
(
"childTaxPoint"
),
data
.
getString
(
"operator"
),
data
.
getDate
(
"createTime"
),
data
.
getDate
(
"updateTime"
),
data
.
getInteger
(
"deleted"
),
data
.
getString
(
"notApplicableFlightNum"
),
data
.
getString
(
"applyFlightNum"
),
data
.
getInteger
(
"remainCabinNum"
),
data
.
getString
(
"cabinCode"
),
data
.
getString
(
"flightCycle"
),
data
.
getDouble
(
"floorPrice"
),
data
.
getDouble
(
"floorTax"
),
data
.
getInteger
(
"fitShare"
),
data
.
getString
(
"fitNationality"
),
data
.
getString
(
"disFitNationality"
),
data
.
getString
(
"ageRange"
),
data
.
getString
(
"attention"
));
saleRules
.
add
(
saleRule
);
}
String
filePath
=
saleReportExcelPath
+
customerId
+
"/SaleRulesExcel\\"
;
String
filePath
=
saleReportExcelPath
+
customerId
+
"/SaleRulesExcel\\"
;
File
temp
=
new
File
(
filePath
);
if
(!
temp
.
exists
())
{
temp
.
mkdir
();
}
if
(!
temp
.
exists
())
{
temp
.
mkdir
();
}
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy年MM月dd日HH时mm分ss秒"
);
String
date
=
sdf
.
format
(
new
Date
());
File
file
=
new
File
(
date
+
"~销售规则.xls"
);
File
file
=
new
File
(
date
+
"~销售规则.xls"
);
FileOutputStream
os
=
null
;
HSSFWorkbook
book
=
null
;
try
{
...
...
@@ -189,7 +195,7 @@ public class DownLoadService {
font
.
setFontHeight
((
short
)
200
);
cellStyleTitle
.
setFont
(
font
);
//创建标题行
Row
title
=
sheet
.
createRow
(
0
);
Row
title
=
sheet
.
createRow
(
0
);
title
.
setRowStyle
(
cellStyleTitle
);
title
.
createCell
(
0
).
setCellValue
(
"渠道"
);
title
.
createCell
(
1
).
setCellValue
(
"店铺编码"
);
...
...
@@ -215,12 +221,12 @@ public class DownLoadService {
title
.
createCell
(
21
).
setCellValue
(
"最低利润值"
);
title
.
createCell
(
22
).
setCellValue
(
"成人加点"
);
title
.
createCell
(
23
).
setCellValue
(
"成人留钱"
);
title
.
createCell
(
24
).
setCellValue
(
"成人加税"
);
title
.
createCell
(
25
).
setCellValue
(
"成人加税点"
);
//
title.createCell(24).setCellValue("成人加税");
//
title.createCell(25).setCellValue("成人加税点");
title
.
createCell
(
26
).
setCellValue
(
"儿童加点"
);
title
.
createCell
(
27
).
setCellValue
(
"儿童留钱"
);
title
.
createCell
(
28
).
setCellValue
(
"儿童加税"
);
title
.
createCell
(
29
).
setCellValue
(
"儿童加税点"
);
//
title.createCell(28).setCellValue("儿童加税");
//
title.createCell(29).setCellValue("儿童加税点");
title
.
createCell
(
30
).
setCellValue
(
"舱位代码"
);
title
.
createCell
(
31
).
setCellValue
(
"销售规则Id"
);
title
.
createCell
(
32
).
setCellValue
(
"航班周期"
);
...
...
@@ -233,234 +239,226 @@ public class DownLoadService {
title
.
createCell
(
39
).
setCellValue
(
"购票需知"
);
//遍历销售规则数据列表
for
(
int
i
=
0
;
i
<
saleRules
.
size
();
i
++)
{
Row
r
=
sheet
.
createRow
(
i
+
1
);
Row
r
=
sheet
.
createRow
(
i
+
1
);
Cell
channelIdCell
=
r
.
createCell
(
0
);
channelIdCell
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getChannelId
()
==
null
)
{
if
(
saleRules
.
get
(
i
).
getChannelId
()
==
null
)
{
channelIdCell
.
setCellValue
(
"*"
);
}
else
{
}
else
{
channelIdCell
.
setCellValue
(
saleRules
.
get
(
i
).
getChannelId
());
}
Cell
store
=
r
.
createCell
(
1
);
store
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getStore
()
==
null
)
{
if
(
saleRules
.
get
(
i
).
getStore
()
==
null
)
{
store
.
setCellValue
(
"*"
);
}
else
{
}
else
{
store
.
setCellValue
(
saleRules
.
get
(
i
).
getStore
());
}
Cell
ruleCode
=
r
.
createCell
(
2
);
ruleCode
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getRuleCode
()
==
null
)
{
if
(
saleRules
.
get
(
i
).
getRuleCode
()
==
null
)
{
ruleCode
.
setCellValue
(
""
);
}
else
{
}
else
{
ruleCode
.
setCellValue
(
saleRules
.
get
(
i
).
getRuleCode
());
}
Cell
carrierCell
=
r
.
createCell
(
3
);
carrierCell
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getCarrier
()
==
null
)
{
if
(
saleRules
.
get
(
i
).
getCarrier
()
==
null
)
{
carrierCell
.
setCellValue
(
""
);
}
else
{
}
else
{
carrierCell
.
setCellValue
(
saleRules
.
get
(
i
).
getCarrier
());
}
Cell
orgCell
=
r
.
createCell
(
4
);
orgCell
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getOrg
()
==
null
)
{
if
(
saleRules
.
get
(
i
).
getOrg
()
==
null
)
{
orgCell
.
setCellValue
(
"*"
);
}
else
{
}
else
{
orgCell
.
setCellValue
(
saleRules
.
get
(
i
).
getOrg
());
}
Cell
dstCell
=
r
.
createCell
(
5
);
dstCell
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getDst
()
==
null
)
{
if
(
saleRules
.
get
(
i
).
getDst
()
==
null
)
{
dstCell
.
setCellValue
(
"*"
);
}
else
{
}
else
{
dstCell
.
setCellValue
(
saleRules
.
get
(
i
).
getDst
());
}
Cell
applyFlightNumCell
=
r
.
createCell
(
6
);
applyFlightNumCell
.
setCellStyle
(
cellStyle
);
if
(
StringUtils
.
isBlank
(
saleRules
.
get
(
i
).
getApplyFlightNum
()))
{
applyFlightNumCell
.
setCellValue
(
""
);
}
else
{
}
else
{
applyFlightNumCell
.
setCellValue
(
saleRules
.
get
(
i
).
getApplyFlightNum
());
}
Cell
notApplicableFlightNumCell
=
r
.
createCell
(
7
);
notApplicableFlightNumCell
.
setCellStyle
(
cellStyle
);
if
(
StringUtils
.
isBlank
(
saleRules
.
get
(
i
).
getNotApplicableFlightNum
()))
{
notApplicableFlightNumCell
.
setCellValue
(
""
);
}
else
{
}
else
{
notApplicableFlightNumCell
.
setCellValue
(
saleRules
.
get
(
i
).
getNotApplicableFlightNum
());
}
Cell
routeTypeCell
=
r
.
createCell
(
8
);
routeTypeCell
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getRouteType
()
==
null
)
{
if
(
saleRules
.
get
(
i
).
getRouteType
()
==
null
)
{
routeTypeCell
.
setCellValue
(
"不限"
);
}
else
if
(
saleRules
.
get
(
i
).
getRouteType
()==
0
)
{
}
else
if
(
saleRules
.
get
(
i
).
getRouteType
()
==
0
)
{
routeTypeCell
.
setCellValue
(
"不限"
);
}
else
if
(
saleRules
.
get
(
i
).
getRouteType
()==
1
)
{
}
else
if
(
saleRules
.
get
(
i
).
getRouteType
()
==
1
)
{
routeTypeCell
.
setCellValue
(
"单程"
);
}
else
if
(
saleRules
.
get
(
i
).
getRouteType
()==
2
)
{
}
else
if
(
saleRules
.
get
(
i
).
getRouteType
()
==
2
)
{
routeTypeCell
.
setCellValue
(
"往返"
);
}
else
{
}
else
{
routeTypeCell
.
setCellValue
(
"不限"
);
}
Cell
policyType
=
r
.
createCell
(
9
);
policyType
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getPolicyType
()
==
null
)
{
if
(
saleRules
.
get
(
i
).
getPolicyType
()
==
null
)
{
policyType
.
setCellValue
(
"普通"
);
}
else
if
(
saleRules
.
get
(
i
).
getPolicyType
()==
1
)
{
}
else
if
(
saleRules
.
get
(
i
).
getPolicyType
()
==
1
)
{
policyType
.
setCellValue
(
"普通"
);
}
else
if
(
saleRules
.
get
(
i
).
getPolicyType
()==
2
)
{
}
else
if
(
saleRules
.
get
(
i
).
getPolicyType
()
==
2
)
{
policyType
.
setCellValue
(
"积分"
);
}
else
if
(
saleRules
.
get
(
i
).
getPolicyType
()==
3
)
{
}
else
if
(
saleRules
.
get
(
i
).
getPolicyType
()
==
3
)
{
policyType
.
setCellValue
(
"普通促销"
);
}
else
if
(
saleRules
.
get
(
i
).
getPolicyType
()==
4
)
{
}
else
if
(
saleRules
.
get
(
i
).
getPolicyType
()
==
4
)
{
policyType
.
setCellValue
(
"扣位"
);
}
else
if
(
saleRules
.
get
(
i
).
getPolicyType
()==
5
)
{
}
else
if
(
saleRules
.
get
(
i
).
getPolicyType
()
==
5
)
{
policyType
.
setCellValue
(
"促销积分"
);
}
else
if
(
saleRules
.
get
(
i
).
getPolicyType
()==
6
)
{
}
else
if
(
saleRules
.
get
(
i
).
getPolicyType
()
==
6
)
{
policyType
.
setCellValue
(
"AG"
);
}
else
if
(
saleRules
.
get
(
i
).
getPolicyType
()==
7
)
{
}
else
if
(
saleRules
.
get
(
i
).
getPolicyType
()
==
7
)
{
policyType
.
setCellValue
(
"私有运价"
);
}
else
{
}
else
{
policyType
.
setCellValue
(
"普通"
);
}
Cell
policyDesc
=
r
.
createCell
(
10
);
policyDesc
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getPolicyDesc
()
==
null
)
{
if
(
saleRules
.
get
(
i
).
getPolicyDesc
()
==
null
)
{
policyDesc
.
setCellValue
(
""
);
}
else
{
}
else
{
policyDesc
.
setCellValue
(
saleRules
.
get
(
i
).
getPolicyDesc
());
}
Cell
point
=
r
.
createCell
(
11
);
point
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getPoint
()
==
null
)
{
if
(
saleRules
.
get
(
i
).
getPoint
()
==
null
)
{
point
.
setCellValue
(
""
);
}
else
{
}
else
{
point
.
setCellValue
(
saleRules
.
get
(
i
).
getPoint
());
}
Cell
costPrice
=
r
.
createCell
(
12
);
costPrice
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getCostPrice
()
==
null
)
{
if
(
saleRules
.
get
(
i
).
getCostPrice
()
==
null
)
{
costPrice
.
setCellValue
(
""
);
}
else
{
}
else
{
costPrice
.
setCellValue
(
saleRules
.
get
(
i
).
getCostPrice
());
}
Cell
saleSdate
=
r
.
createCell
(
13
);
saleSdate
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getSaleSdate
()
==
null
)
{
if
(
saleRules
.
get
(
i
).
getSaleSdate
()
==
null
)
{
saleSdate
.
setCellValue
(
""
);
}
else
{
}
else
{
saleSdate
.
setCellValue
(
saleRules
.
get
(
i
).
getSaleSdate
());
}
Cell
saleEdate
=
r
.
createCell
(
14
);
saleEdate
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getSaleEdate
()
==
null
)
{
if
(
saleRules
.
get
(
i
).
getSaleEdate
()
==
null
)
{
saleEdate
.
setCellValue
(
""
);
}
else
{
}
else
{
saleEdate
.
setCellValue
(
saleRules
.
get
(
i
).
getSaleEdate
());
}
Cell
ticketDays
=
r
.
createCell
(
15
);
ticketDays
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getTicketDays
()
==
null
)
{
if
(
saleRules
.
get
(
i
).
getTicketDays
()
==
null
)
{
ticketDays
.
setCellValue
(
""
);
}
else
{
}
else
{
ticketDays
.
setCellValue
(
saleRules
.
get
(
i
).
getTicketDays
());
}
Cell
tripSdate
=
r
.
createCell
(
16
);
tripSdate
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getTripSdate
()
==
null
)
{
if
(
saleRules
.
get
(
i
).
getTripSdate
()
==
null
)
{
tripSdate
.
setCellValue
(
""
);
}
else
{
}
else
{
tripSdate
.
setCellValue
(
saleRules
.
get
(
i
).
getTripSdate
());
}
Cell
tripEdate
=
r
.
createCell
(
17
);
tripEdate
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getTripEdate
()
==
null
)
{
if
(
saleRules
.
get
(
i
).
getTripEdate
()
==
null
)
{
tripEdate
.
setCellValue
(
""
);
}
else
{
}
else
{
tripEdate
.
setCellValue
(
saleRules
.
get
(
i
).
getTripEdate
());
}
Cell
statusCell
=
r
.
createCell
(
18
);
statusCell
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getStatus
()
==
null
)
{
if
(
saleRules
.
get
(
i
).
getStatus
()
==
null
)
{
statusCell
.
setCellValue
(
"禁用"
);
}
else
if
(
saleRules
.
get
(
i
).
getStatus
()==
0
)
{
}
else
if
(
saleRules
.
get
(
i
).
getStatus
()
==
0
)
{
statusCell
.
setCellValue
(
"禁用"
);
}
else
if
(
saleRules
.
get
(
i
).
getStatus
()==
1
)
{
}
else
if
(
saleRules
.
get
(
i
).
getStatus
()
==
1
)
{
statusCell
.
setCellValue
(
"启用"
);
}
else
{
}
else
{
statusCell
.
setCellValue
(
"禁用"
);
}
Cell
minPrice
=
r
.
createCell
(
19
);
minPrice
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getMinPrice
()
==
null
)
{
if
(
saleRules
.
get
(
i
).
getMinPrice
()
==
null
)
{
minPrice
.
setCellValue
(
""
);
}
else
{
}
else
{
minPrice
.
setCellValue
(
saleRules
.
get
(
i
).
getMinPrice
());
}
Cell
maxPrice
=
r
.
createCell
(
20
);
maxPrice
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getMaxPrice
()
==
null
)
{
if
(
saleRules
.
get
(
i
).
getMaxPrice
()
==
null
)
{
maxPrice
.
setCellValue
(
""
);
}
else
{
}
else
{
maxPrice
.
setCellValue
(
saleRules
.
get
(
i
).
getMaxPrice
());
}
Cell
minProfit
=
r
.
createCell
(
21
);
minProfit
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getMinProfit
()
==
null
)
{
if
(
saleRules
.
get
(
i
).
getMinProfit
()
==
null
)
{
minProfit
.
setCellValue
(
""
);
}
else
{
}
else
{
minProfit
.
setCellValue
(
saleRules
.
get
(
i
).
getMinProfit
());
}
Cell
adultPricePoint
=
r
.
createCell
(
22
);
adultPricePoint
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getAdultPricePoint
()
==
null
)
{
if
(
saleRules
.
get
(
i
).
getAdultPricePoint
()
==
null
)
{
adultPricePoint
.
setCellValue
(
0.0
);
}
else
{
}
else
{
adultPricePoint
.
setCellValue
(
saleRules
.
get
(
i
).
getAdultPricePoint
().
toString
());
}
Cell
adultAddPrice
=
r
.
createCell
(
23
);
adultAddPrice
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getAdultAddPrice
()
==
null
)
{
if
(
saleRules
.
get
(
i
).
getAdultAddPrice
()
==
null
)
{
adultAddPrice
.
setCellValue
(
0
);
}
else
{
}
else
{
adultAddPrice
.
setCellValue
(
saleRules
.
get
(
i
).
getAdultAddPrice
());
}
// Cell adultAddTax = r.createCell(24);
// adultAddTax.setCellStyle(cellStyle);
// if (saleRules.get(i).getAdultAddTax()==null) {
// adultAddTax.setCellValue(0);
// }else{
// adultAddTax.setCellValue(saleRules.get(i).getAdultAddTax());
// }
// Cell adultTaxPoint = r.createCell(23);
// adultTaxPoint.setCellStyle(cellStyle);
// if (saleRules.get(i).getAdultPricePoint()==null) {
...
...
@@ -469,6 +467,14 @@ public class DownLoadService {
// adultTaxPoint.setCellValue(saleRules.get(i).getAdultPricePoint().toString());
// }
// Cell adultAddTax = r.createCell(24);
// adultAddTax.setCellStyle(cellStyle);
// if (saleRules.get(i).getAdultAddTax()==null) {
// adultAddTax.setCellValue(0);
// }else{
// adultAddTax.setCellValue(saleRules.get(i).getAdultAddTax());
// }
// Cell adultTaxPoint = r.createCell(25);
// adultTaxPoint.setCellStyle(cellStyle);
// if (saleRules.get(i).getAdultTaxPoint()==null) {
...
...
@@ -479,17 +485,17 @@ public class DownLoadService {
Cell
childPricePoint
=
r
.
createCell
(
26
);
childPricePoint
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getChildPricePoint
()
==
null
)
{
if
(
saleRules
.
get
(
i
).
getChildPricePoint
()
==
null
)
{
childPricePoint
.
setCellValue
(
0.0
);
}
else
{
}
else
{
childPricePoint
.
setCellValue
(
saleRules
.
get
(
i
).
getChildPricePoint
().
toString
());
}
Cell
childAddPrice
=
r
.
createCell
(
27
);
childAddPrice
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getChildAddPrice
()
==
null
)
{
if
(
saleRules
.
get
(
i
).
getChildAddPrice
()
==
null
)
{
childAddPrice
.
setCellValue
(
0
);
}
else
{
}
else
{
childAddPrice
.
setCellValue
(
saleRules
.
get
(
i
).
getChildAddPrice
());
}
...
...
@@ -515,7 +521,7 @@ public class DownLoadService {
Cell
saleRuleId
=
r
.
createCell
(
31
);
saleRuleId
.
setCellStyle
(
cellStyle
);
if
(
saleRuleId
!=
null
)
{
if
(
saleRuleId
!=
null
)
{
saleRuleId
.
setCellValue
(
saleRules
.
get
(
i
).
getId
());
}
...
...
@@ -523,7 +529,7 @@ public class DownLoadService {
flightCycle
.
setCellStyle
(
cellStyle
);
if
(
StringUtils
.
isBlank
(
saleRules
.
get
(
i
).
getFlightCycle
()))
{
flightCycle
.
setCellValue
(
""
);
}
else
{
}
else
{
flightCycle
.
setCellValue
(
saleRules
.
get
(
i
).
getFlightCycle
());
}
...
...
@@ -531,7 +537,7 @@ public class DownLoadService {
floorPrice
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getFloorPrice
()
==
null
)
{
floorPrice
.
setCellValue
(
""
);
}
else
{
}
else
{
floorPrice
.
setCellValue
(
saleRules
.
get
(
i
).
getFloorPrice
());
}
...
...
@@ -539,7 +545,7 @@ public class DownLoadService {
floorTax
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getFloorTax
()
==
null
)
{
floorTax
.
setCellValue
(
""
);
}
else
{
}
else
{
floorTax
.
setCellValue
(
saleRules
.
get
(
i
).
getFloorTax
());
}
...
...
@@ -547,12 +553,12 @@ public class DownLoadService {
fitShare
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getFitShare
()
==
null
)
{
fitShare
.
setCellValue
(
""
);
}
else
{
if
(
saleRules
.
get
(
i
).
getFitShare
()
==
1
)
{
}
else
{
if
(
saleRules
.
get
(
i
).
getFitShare
()
==
1
)
{
fitShare
.
setCellValue
(
"适用"
);
}
else
if
(
saleRules
.
get
(
i
).
getFitShare
()
==
0
)
{
}
else
if
(
saleRules
.
get
(
i
).
getFitShare
()
==
0
)
{
fitShare
.
setCellValue
(
"不适用"
);
}
else
{
}
else
{
fitShare
.
setCellValue
(
saleRules
.
get
(
i
).
getFitShare
());
}
}
...
...
@@ -561,7 +567,7 @@ public class DownLoadService {
fitNationality
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getFitNationality
()
==
null
)
{
fitNationality
.
setCellValue
(
""
);
}
else
{
}
else
{
fitNationality
.
setCellValue
(
saleRules
.
get
(
i
).
getFitNationality
());
}
...
...
@@ -569,7 +575,7 @@ public class DownLoadService {
fitNationality
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getDisFitNationality
()
==
null
)
{
disFitNationality
.
setCellValue
(
""
);
}
else
{
}
else
{
disFitNationality
.
setCellValue
(
saleRules
.
get
(
i
).
getDisFitNationality
());
}
...
...
@@ -577,7 +583,7 @@ public class DownLoadService {
ageRange
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getAgeRange
()
==
null
)
{
ageRange
.
setCellValue
(
""
);
}
else
{
}
else
{
ageRange
.
setCellValue
(
saleRules
.
get
(
i
).
getAgeRange
());
}
...
...
@@ -585,38 +591,38 @@ public class DownLoadService {
attention
.
setCellStyle
(
cellStyle
);
if
(
saleRules
.
get
(
i
).
getAttention
()
==
null
)
{
attention
.
setCellValue
(
""
);
}
else
{
}
else
{
attention
.
setCellValue
(
saleRules
.
get
(
i
).
getAttention
());
}
}
//创建输出流
os
=
new
FileOutputStream
(
filePath
+
file
);
os
=
new
FileOutputStream
(
filePath
+
file
);
//将book中的数据写出
book
.
write
(
os
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"fail:"
,
e
);
}
finally
{
}
catch
(
Exception
e
)
{
logger
.
error
(
"fail:"
,
e
);
}
finally
{
try
{
if
(
book
!=
null
)
{
if
(
book
!=
null
)
{
book
.
close
();
}
if
(
os
!=
null
)
{
if
(
os
!=
null
)
{
os
.
close
();
}
}
catch
(
Exception
e
)
{
logger
.
error
(
"关闭流异常"
,
e
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"关闭流异常"
,
e
);
}
}
Response
response
=
new
Response
();
response
.
setStatus
(
Response
.
Status
.
SUCCEED
);
response
.
setData
(
filePath
+
file
);
response
.
setData
(
filePath
+
file
);
return
response
;
}
public
static
HSSFWorkbook
getBook
(
File
file
)
{
HSSFWorkbook
book
=
null
;
HSSFWorkbook
book
=
null
;
try
{
book
=
new
HSSFWorkbook
(
new
FileInputStream
(
file
));
}
catch
(
FileNotFoundException
e
)
{
...
...
@@ -657,52 +663,59 @@ public class DownLoadService {
return
result
;
}
public
Response
parseToSaleDetail
(
String
requestBody
){
public
Response
parseToSaleDetail
(
String
requestBody
)
{
logger
.
info
(
"自动报表任务请求解析报表。。。"
);
if
(
StringUtils
.
isBlank
(
requestBody
))
{
if
(
StringUtils
.
isBlank
(
requestBody
))
{
return
Response
.
error
(
"参数为空"
);
}
JSONObject
obj
=
JSONObject
.
parseObject
(
requestBody
);
Map
<
String
,
String
>
params
=
JSONObject
.
parseObject
(
obj
.
getString
(
"data"
),
new
TypeReference
<
Map
<
String
,
String
>>(){});
Map
<
String
,
String
>
params
=
JSONObject
.
parseObject
(
obj
.
getString
(
"data"
),
new
TypeReference
<
Map
<
String
,
String
>>()
{
});
String
key
=
obj
.
getString
(
"info"
);
//将Map解析为报表内容对象
List
<
SaleDetail
>
saleDetailList
=
new
ArrayList
<>();
try
{
try
{
//解析主逻辑
saleDetailList
=
parseToSaleDetail
.
parseToSaleDetailMain
(
params
,
key
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"[自动报表] 解析Map到SaleDetail List 出现异常"
,
e
);
saleDetailList
=
parseToSaleDetail
.
parseToSaleDetailMain
(
params
,
key
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"[自动报表] 解析Map到SaleDetail List 出现异常"
,
e
);
}
logger
.
info
(
"自动报表任务解析数据完成,解析结果:saleDetailList.size() = "
+
saleDetailList
.
size
());
return
Response
.
success
(
saleDetailList
);
}
public
Response
downLoadSaleDetailFromAutoSource
(
String
requestBody
){
/**
* 快速导出报表(新)
*
* @param requestBody
* @return
*/
public
Response
downLoadSaleDetailFromAutoSource
(
String
requestBody
)
{
String
keyList
=
JSONObject
.
parseObject
(
requestBody
).
getString
(
"keyList"
);
logger
.
info
(
"[AutoSource] 从saleDetail表数据中直接下载报表,keyList="
+
keyList
);
logger
.
info
(
"[AutoSource] 从saleDetail表数据中直接下载报表,keyList="
+
keyList
);
long
beginTime
=
System
.
currentTimeMillis
();
Map
<
String
,
String
>
params
=
new
HashMap
<>();
params
.
put
(
"keyList"
,
keyList
);
String
result
=
HttpsSendData
.
send
(
overseasAirTicketUrl
+
"autoSaleDetai/findByKeyList
.do"
,
params
);
Map
<
String
,
String
>
params
=
new
HashMap
<>();
params
.
put
(
"keyList"
,
keyList
);
String
result
=
HttpsSendData
.
send
(
overseasAirTicketUrl
+
"autoSaleDetai/findByKeyList
"
,
params
);
NoteResult
noteResult
=
JSONObject
.
parseObject
(
result
,
NoteResult
.
class
);
if
(
noteResult
.
getStatus
()
!=
0
)
{
logger
.
error
(
"[AutoSource] 从saleDetail表中查询报表数据失败,keyList="
+
keyList
);
return
Response
.
error
(
"[AutoSource] 从saleDetail表中查询报表数据失败,key="
+
keyList
);
if
(
noteResult
.
getStatus
()
!=
0
)
{
logger
.
error
(
"[AutoSource] 从saleDetail表中查询报表数据失败,keyList="
+
keyList
);
return
Response
.
error
(
"[AutoSource] 从saleDetail表中查询报表数据失败,key="
+
keyList
);
}
List
<
SaleDetail
>
saleDetails
=
JSONArray
.
parseArray
(
JSONArray
.
toJSONString
(
noteResult
.
getData
()),
SaleDetail
.
class
);
List
<
SaleDetail
>
saleDetails
=
JSONArray
.
parseArray
(
JSONArray
.
toJSONString
(
noteResult
.
getData
()),
SaleDetail
.
class
);
Response
response
=
new
Response
();
logger
.
info
(
"[AutoSource] 获取数据库表数据,总用时:"
+(
System
.
currentTimeMillis
()-
beginTime
)+
"ms"
);
try
{
String
customerId
=
keyList
.
substring
(
0
,
keyList
.
indexOf
(
"_"
));
final
String
filePath
=
saleDetailReportExcelPath
+
customerId
+
"/SalesDetailReport/"
;
//指定文件保存路径
String
path
=
parseToSaleDetail
.
createSaleDetailReport
(
saleDetails
,
filePath
);
logger
.
info
(
"[AutoSource] 获取数据库表数据,总用时:"
+
(
System
.
currentTimeMillis
()
-
beginTime
)
+
"ms"
);
try
{
String
customerId
=
keyList
.
substring
(
0
,
keyList
.
indexOf
(
"_"
));
final
String
filePath
=
saleDetailReportExcelPath
+
customerId
+
"/SalesDetailReport/"
;
//指定文件保存路径
String
path
=
parseToSaleDetail
.
createSaleDetailReport
(
saleDetails
,
filePath
);
response
.
setStatus
(
Response
.
Status
.
SUCCEED
);
response
.
setData
(
path
);
response
.
setErrorMessage
(
"[AutoSource] 生成报表成功,总用时:"
+(
System
.
currentTimeMillis
()-
beginTime
)+
"ms"
);
logger
.
info
(
"[AutoSource] 生成销售明细报表,总用时:"
+(
System
.
currentTimeMillis
()-
beginTime
)+
"ms"
);
response
.
setErrorMessage
(
"[AutoSource] 生成报表成功,总用时:"
+
(
System
.
currentTimeMillis
()
-
beginTime
)
+
"ms"
);
logger
.
info
(
"[AutoSource] 生成销售明细报表,总用时:"
+
(
System
.
currentTimeMillis
()
-
beginTime
)
+
"ms"
);
return
response
;
}
catch
(
Exception
e
)
{
logger
.
error
(
"[AutoSource] 生成报表发生异常"
,
e
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"[AutoSource] 生成报表发生异常"
,
e
);
return
Response
.
error
(
"[AutoSource] 生成报表发生异常"
);
}
}
...
...
src/main/java/com/yutu/base/service/ParseToSaleDetail.java
View file @
20d4885b
...
...
@@ -6,6 +6,7 @@ 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
jxl.CellView
;
import
jxl.Workbook
;
...
...
@@ -60,8 +61,9 @@ public class ParseToSaleDetail extends BaseService{
SaleDetail
temp
=
new
SaleDetail
();
temp
.
setId
(
UUID
.
randomUUID
().
toString
());
temp
.
setCreateTime
(
new
Date
());
temp
.
setUpdateTime
(
new
Date
());
temp
.
setCreateTime
(
DateUtil
.
DateToStr
(
new
Date
(),
"yyyy-MM-dd HH:mm:ss"
));
// temp.setUpdateTime(new Date());
temp
.
setUpdateTime
(
DateUtil
.
DateToStr
(
new
Date
(),
"yyyy-MM-dd HH:mm:ss"
));
temp
.
setKey
(
key
);
//标识
temp
.
setOfficalReceivedPaymentStatus
(
""
);
temp
.
setOfficalActualExpendAmount
(
0.0
);
...
...
@@ -87,10 +89,11 @@ public class ParseToSaleDetail extends BaseService{
String
passengerIds
=
purchObj
.
getString
(
"passengerIds"
);
//乘客id
int
flightSize
=
flightInfoIds
.
replace
(
","
,
""
).
length
()/
36
;
//行程段数
int
passengerSize
=
passengerIds
.
replace
(
","
,
""
).
length
()/
36
;
//乘客人量
String
route
=
purchObj
.
getString
(
"routeType"
);
// String route = purchObj.getString("routeType");
// String route = orderArr.get(0).getString("routeType");
String
orderTripType
=
""
;
//订单行程类型
String
routeType
=
convert
RouteType
(
route
);
//采购行程类型
String
ticketType
=
convert
RouteType
(
route
);
//票号类型
String
routeType
=
convert
TripTypeNum
(
route
);
//采购行程类型
String
ticketType
=
convert
TripTypeNum
(
route
);
//票号类型
String
points
=
purchObj
.
getString
(
"points"
);
//使用积分
String
localCurrency
=
purchObj
.
getString
(
"localCurrencyCode"
);
//采购币种
String
currency
=
purchObj
.
getString
(
"currencyCode"
);
//采购币种
...
...
@@ -127,7 +130,8 @@ public class ParseToSaleDetail extends BaseService{
saleDetailList
.
get
(
num
).
setPurchaseAccount
(
purchaseAccount
);
//26
saleDetailList
.
get
(
num
).
setPurchaseOrderNo
(
purchaseOrderNo
);
//27
saleDetailList
.
get
(
num
).
setOperator
(
trueName
);
//31
saleDetailList
.
get
(
num
).
setPurchaseTime
(
purchObj
.
getDate
(
"purchaseTime"
));
//32
// saleDetailList.get(num).setPurchaseTime(purchObj.getDate("purchaseTime"));//32
saleDetailList
.
get
(
num
).
setPurchaseTime
(
purchObj
.
getString
(
"purchaseTime"
));
//32
saleDetailList
.
get
(
num
).
setOrderValueAdded
(
orderType
);
//33
saleDetailList
.
get
(
num
).
setRemark
(
remarkText
);
//35
saleDetailList
.
get
(
num
).
setPurchasePrice_local
(
Double
.
parseDouble
(
localTotalPrice
));
//16
...
...
@@ -164,8 +168,12 @@ public class ParseToSaleDetail extends BaseService{
SaleDetail
temp1
=
new
SaleDetail
();
temp1
.
setId
(
UUID
.
randomUUID
().
toString
());
temp1
.
setCreateTime
(
new
Date
());
temp1
.
setUpdateTime
(
new
Date
());
// temp1.setCreateTime(new Date());
// temp1.setUpdateTime(new Date());
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
);
...
...
@@ -192,8 +200,9 @@ public class ParseToSaleDetail extends BaseService{
String
policySource
=
orderObj
.
getString
(
"policySource"
);
//政策信息
status
=
convertOrderStatus
(
orderStatus
);
saleDetailList
.
get
(
num
+
count_saleOrder
-
1
).
setCreateOrderTime
(
orderObj
.
getDate
(
"createTime"
));
//0
saleDetailList
.
get
(
num
+
count_saleOrder
-
1
).
setTicketTime
(
orderObj
.
getDate
(
"ticketTime"
));
//1
saleDetailList
.
get
(
num
+
count_saleOrder
-
1
).
setCreateOrderTime
(
orderObj
.
getString
(
"createTime"
));
//0
// saleDetailList.get(num+count_saleOrder-1).setTicketTime(orderObj.getDate("ticketTime"));//1
saleDetailList
.
get
(
num
+
count_saleOrder
-
1
).
setTicketTime
(
orderObj
.
getString
(
"ticketTime"
));
//1
saleDetailList
.
get
(
num
+
count_saleOrder
-
1
).
setOuterOrderNo
(
outerOrderNo
);
//2
saleDetailList
.
get
(
num
+
count_saleOrder
-
1
).
setChannel
(
store
.
getChannelCode
());
//3
saleDetailList
.
get
(
num
+
count_saleOrder
-
1
).
setStore
(
store
.
getStoreShortName
());
//4
...
...
@@ -415,8 +424,10 @@ public class ParseToSaleDetail extends BaseService{
SaleDetail
temp2
=
new
SaleDetail
();
temp2
.
setId
(
UUID
.
randomUUID
().
toString
());
temp2
.
setCreateTime
(
new
Date
());
temp2
.
setUpdateTime
(
new
Date
());
// temp2.setCreateTime(new Date());
// temp2.setUpdateTime(new Date());
temp2
.
setCreateTime
(
DateUtil
.
DateToStr
(
new
Date
(),
"yyyy-MM-dd HH:mm:ss"
));
temp2
.
setUpdateTime
(
DateUtil
.
DateToStr
(
new
Date
(),
"yyyy-MM-dd HH:mm:ss"
));
temp2
.
setKey
(
key
);
//标识
temp2
.
setOfficalReceivedPaymentStatus
(
""
);
temp2
.
setOfficalActualExpendAmount
(
0.0
);
...
...
@@ -496,8 +507,10 @@ public class ParseToSaleDetail extends BaseService{
if
(
count_saleOrder
==
1
&&
count_transDetail
>
1
){
for
(
int
repeat
=
0
;
repeat
<
(
count_transDetail
-
count_saleOrder
)
;
repeat
++){
saleDetailList
.
get
(
num
+
repeat
+
1
).
setCreateTime
(
createTime
);
saleDetailList
.
get
(
num
+
repeat
+
1
).
setTicketTime
(
ticketTime
);
// saleDetailList.get(num + repeat +1).setCreateTime(createTime);
// saleDetailList.get(num + repeat +1).setTicketTime(ticketTime);
saleDetailList
.
get
(
num
+
repeat
+
1
).
setCreateTime
(
DateUtil
.
DateToStr
(
createTime
,
"yyyy-MM-dd HH:mm:ss"
));
saleDetailList
.
get
(
num
+
repeat
+
1
).
setTicketTime
(
DateUtil
.
DateToStr
(
ticketTime
,
"yyyy-MM-dd HH:mm:ss"
));
saleDetailList
.
get
(
num
+
repeat
+
1
).
setOuterOrderNo
(
outerOrderNo
);
saleDetailList
.
get
(
num
+
repeat
+
1
).
setChannel
(
""
);
saleDetailList
.
get
(
num
+
repeat
+
1
).
setStore
(
""
);
...
...
@@ -626,6 +639,17 @@ public class ParseToSaleDetail extends BaseService{
}
return
key
;
}
public
String
convertTripTypeNum
(
String
key
){
switch
(
key
)
{
case
"1"
:
key
=
"单程"
;
break
;
case
"2"
:
key
=
"往返"
;
break
;
default
:
key
=
""
;
break
;
}
return
key
;
}
public
String
convertOrderType
(
String
key
){
switch
(
key
)
{
case
"ticket"
:
key
=
""
;
...
...
@@ -642,12 +666,18 @@ public class ParseToSaleDetail extends BaseService{
return
key
;
}
/**
* 快速导出报表(新)
* @param saleDetails
* @param filePath
* @return
*/
public
String
createSaleDetailReport
(
List
<
SaleDetail
>
saleDetails
,
String
filePath
){
logger
.
info
(
"开始生成报表"
);
File
files
=
new
File
(
filePath
);
if
(!
files
.
exists
())
{
files
.
mkdir
();
}
WritableWorkbook
workbook
=
null
;
String
file
=
filePath
+
new
SimpleDateFormat
(
"yyMMddHHmmss"
).
format
(
new
Date
())+
".xls"
;
String
file
=
filePath
+
new
SimpleDateFormat
(
"yyMMddHHmmss"
).
format
(
new
Date
())+
".xls
x
"
;
try
{
workbook
=
Workbook
.
createWorkbook
(
new
File
(
file
));
...
...
@@ -788,19 +818,22 @@ public class ParseToSaleDetail extends BaseService{
}
if
(
saleDetail
.
getCreateOrderTime
()!=
null
){
sheet
.
addCell
(
new
Label
(
0
,
i
+
1
,
date_alt
(
String
.
valueOf
(
saleDetail
.
getCreateOrderTime
().
getTime
())),
wcf2
));
// sheet.addCell(new Label(0,i+1,date_alt(String.valueOf(saleDetail.getCreateOrderTime().getTime())),wcf2));
sheet
.
addCell
(
new
Label
(
0
,
i
+
1
,
date_alt
(
saleDetail
.
getCreateOrderTime
()),
wcf2
));
}
else
{
if
(
saleDetails
.
get
(
i
-
1
)
!=
null
){
if
(
saleDetail
.
getOuterOrderNo
().
equals
(
saleDetails
.
get
(
i
-
1
).
getOuterOrderNo
())){
if
(
saleDetails
.
get
(
i
-
1
).
getCreateOrderTime
()
!=
null
){
saleDetail
.
setCreateOrderTime
(
saleDetails
.
get
(
i
-
1
).
getCreateOrderTime
());
}
sheet
.
addCell
(
new
Label
(
0
,
i
+
1
,
date_alt
(
String
.
valueOf
(
saleDetails
.
get
(
i
-
1
).
getCreateOrderTime
().
getTime
())),
wcf2
));
// sheet.addCell(new Label(0,i+1,date_alt(String.valueOf(saleDetails.get(i-1).getCreateOrderTime().getTime())),wcf2));
sheet
.
addCell
(
new
Label
(
0
,
i
+
1
,
date_alt
(
String
.
valueOf
(
saleDetails
.
get
(
i
-
1
).
getCreateOrderTime
())),
wcf2
));
}
}
}
if
(
saleDetail
.
getTicketTime
()!=
null
){
sheet
.
addCell
(
new
Label
(
1
,
i
+
1
,
date_alt
(
String
.
valueOf
(
saleDetail
.
getTicketTime
().
getTime
())),
wcf2
));
// sheet.addCell(new Label(1,i+1,date_alt(String.valueOf(saleDetail.getTicketTime().getTime())),wcf2));
sheet
.
addCell
(
new
Label
(
1
,
i
+
1
,
date_alt
(
saleDetail
.
getTicketTime
()),
wcf2
));
}
if
(
saleDetail
.
getOuterOrderNo
()!=
null
){
sheet
.
addCell
(
new
Label
(
2
,
i
+
1
,
saleDetail
.
getOuterOrderNo
(),
wcf2
));
...
...
@@ -924,7 +957,8 @@ public class ParseToSaleDetail extends BaseService{
sheet
.
addCell
(
new
Label
(
33
,
i
+
1
,
saleDetail
.
getOperator
(),
wcf2
));
}
if
(
saleDetail
.
getPurchaseTime
()!=
null
){
sheet
.
addCell
(
new
Label
(
34
,
i
+
1
,
date_alt
(
String
.
valueOf
(
saleDetail
.
getPurchaseTime
().
getTime
())),
wcf2
));
// sheet.addCell(new Label(34,i+1,date_alt(String.valueOf(saleDetail.getPurchaseTime().getTime())),wcf2));
sheet
.
addCell
(
new
Label
(
34
,
i
+
1
,
date_alt
(
String
.
valueOf
(
saleDetail
.
getPurchaseTime
())),
wcf2
));
}
if
(
saleDetail
.
getOrderValueAdded
()!=
null
){
sheet
.
addCell
(
new
Label
(
35
,
i
+
1
,
saleDetail
.
getOrderValueAdded
(),
wcf2
));
...
...
@@ -977,9 +1011,12 @@ public class ParseToSaleDetail extends BaseService{
}
finally
{
try
{
workbook
.
write
();
workbook
.
close
();
}
catch
(
Exception
e
){
}
catch
(
Exception
e
){
e
.
printStackTrace
();
logger
.
error
(
"写出Execl异常"
,
e
);
}
}
return
file
;
...
...
src/main/java/com/yutu/base/service/SaleDetailService.java
View file @
20d4885b
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.utils.HttpsSendData
;
import
com.yutu.comm.entity.exception.NoteResult
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.CommandLineRunner
;
import
org.springframework.stereotype.Service
;
...
...
@@ -12,67 +17,206 @@ import org.springframework.stereotype.Service;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.concurrent.BlockingQueue
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.LinkedBlockingDeque
;
/**
* 销售明细报表相关操作
*/
@Service
public
class
SaleDetailService
implements
CommandLineRunner
{
@Value
(
"${spring.urlConfig.overseasAirTicketUrl}"
)
private
String
overseasAirTicketUrl
;
@Value
(
"${spring.urlConfig.statementApiUrl}"
)
private
String
statementApiUrl
;
@Value
(
"${spring.pathConfig.saleDetailReportExcelPath}"
)
private
String
saleDetailReportExcelPath
;
@Value
(
"${spring.urlConfig.productServiceUrl}"
)
private
String
productServiceUrl
;
@Autowired
private
ParseToSaleDetail
parseToSaleDetail
;
private
static
Logger
logger
=
Logger
.
getLogger
(
"saleDetail"
);
/**
* 获取销售明细报表数据
* 参数:
* startTime endTime 采购时间
* creatStartTime creatEndTime 生单时间
* ticketStartTime ticketEndTime 出票时间
*
*
*
* @param requestBody
* @return
*/
public
NoteResult
getSalesDetailList
(
String
requestBody
)
{
NoteResult
noteResult
=
new
NoteResult
();
if
(
StringUtils
.
isBlank
(
requestBody
))
{
noteResult
.
setStatus
(
300
);
noteResult
.
setMsg
(
"参数不能为空 [requestBody]"
);
return
noteResult
;
}
logger
.
info
(
"开始获取数据,参数:"
+
requestBody
);
long
beginTime
=
System
.
currentTimeMillis
();
// String result = HttpsSendData.getPost(overseasAirTicketUrl+"orderInfo/getReportExcelData.do",requestBody); autoSaleDetai/findByKeyList
// String result = HttpsSendData.getPost(statementApiUrl + "saledetail/getSaleDetailList", requestBody);
String
result
=
"{\"status\":0,\"msg\":\"查询成功\",\"data\":[{\"id\":\"00027727-2e16-485a-b1b3-f13d5079645a\",\"key\":\"df0286f1-eaac-11e7-adf4-a4badb3682ff_2018-10-25_2018-10-26\",\"createTime\":\"2018-12-21 09:41:41\",\"updateTime\":\"2018-12-21 09:41:41\",\"createOrderTime\":\"2018-10-24 16:24:26\",\"ticketTime\":\"2018-10-25 00:55:41\",\"outerOrderNo\":\"1380889117689\",\"channel\":\"Taobao\",\"store\":\"tbml\",\"tairLine\":\"HKT-DMK\",\"flightTime\":\"1544358000000\",\"flightNumber\":\"FD3028\",\"tripType\":\"单程\",\"pnrType\":\"去程\",\"pnr\":\"BWSTUZ\",\"passengerCount\":1,\"salePrice\":128,\"luggagePrice\":0,\"points\":0,\"purchaseCurrency\":\"CNY\",\"purchasePrice_local\":92,\"purchasePrice_rmb\":92,\"transactionDetail_local\":92,\"transactionDetail_rmb\":92,\"payMethod\":\"支付宝huochepiao3\",\"cardNumber\":\"支付宝huochepiao3\",\"profit\":36,\"transactionNumber\":\" \",\"orderValueAddedNo\":\" \",\"purchaseChannel\":\"艺龙\",\"purchaseAccount\":\"18513092060----huidarui\",\"purchaseOrderNo\":\"IT7JP5181024MO515179\",\"policyType\":\"普通促销\",\"policyCode\":\"TGJ泰国-中国\",\"orderStatus\":\"已出票\",\"operator\":\"曹坤祥\",\"purchaseTime\":\"2018-10-24 19:01:39\",\"orderValueAdded\":\" \",\"orderValueAddedSpecific\":\" \",\"remark\":\" \",\"officalReceivedPaymentStatus\":\" \",\"officalActualExpendAmount\":0,\"officalBalance\":0,\"officalRateAdjustDate\":null,\"passengerNames\":null,\"adultCount\":1,\"childCount\":0,\"sortIndex\":438}],\"info\":null}"
;
if
(
StringUtils
.
isBlank
(
result
))
{
// return Response.error("获取数据失败");
noteResult
.
setStatus
(
300
);
noteResult
.
setMsg
(
"获取数据失败"
);
noteResult
.
setData
(
new
HashMap
<
String
,
String
>());
return
noteResult
;
}
JSONObject
resultObj
=
JSONObject
.
parseObject
(
result
);
if
(
resultObj
.
getInteger
(
"status"
)
!=
0
)
{
// return Response.error("获取数据失败");
noteResult
.
setMsg
(
"获取数据失败"
);
return
noteResult
;
}
logger
.
info
(
"获取数据成功,共用时:"
+
(
System
.
currentTimeMillis
()
-
beginTime
));
// Map<String, String> resultMap = resultObj.getObject("data", Map.class);
noteResult
.
setStatus
(
200
);
// com.alibaba.fastjson.JSONException: can not cast to : java.util.Map
// noteResult.setData(resultMap);
noteResult
.
setData
(
resultObj
.
getObject
(
"data"
,
Object
.
class
));
noteResult
.
setMsg
(
"获取成功"
);
return
noteResult
;
}
/**
* 获取销售明细报表数据,并将其处理为 Excel
* @param requestBody
* @return
*/
public
NoteResult
downloadSalesDetailReportExcel
(
String
requestBody
){
NoteResult
noteResult
;
System
.
out
.
println
(
requestBody
);
String
keyList
=
JSONObject
.
parseObject
(
requestBody
).
getString
(
"keyList"
);
logger
.
info
(
"[AutoSource] 从saleDetail表数据中直接下载报表,keyList="
+
keyList
);
long
beginTime
=
System
.
currentTimeMillis
();
Map
<
String
,
String
>
params
=
new
HashMap
<>();
params
.
put
(
"keyList"
,
keyList
);
// String result = HttpsSendData.send(statementApiUrl + "saledetail/getSaleDetailList",params);
String
result
=
"{\"status\":200,\"msg\":\"查询成功\",\"data\":[{\"id\":\"00027727-2e16-485a-b1b3-f13d5079645a\",\"key\":\"df0286f1-eaac-11e7-adf4-a4badb3682ff_2018-10-25_2018-10-26\",\"createTime\":\"2018-12-21 09:41:41\",\"updateTime\":\"2018-12-21 09:41:41\",\"createOrderTime\":\"2018-10-24 16:24:26\",\"ticketTime\":\"2018-10-25 00:55:41\",\"outerOrderNo\":\"1380889117689\",\"channel\":\"Taobao\",\"store\":\"tbml\",\"tairLine\":\"HKT-DMK\",\"flightTime\":\"1544358000000\",\"flightNumber\":\"FD3028\",\"tripType\":\"单程\",\"pnrType\":\"去程\",\"pnr\":\"BWSTUZ\",\"passengerCount\":1,\"salePrice\":128,\"luggagePrice\":0,\"points\":0,\"purchaseCurrency\":\"CNY\",\"purchasePrice_local\":92,\"purchasePrice_rmb\":92,\"transactionDetail_local\":92,\"transactionDetail_rmb\":92,\"payMethod\":\"支付宝huochepiao3\",\"cardNumber\":\"支付宝huochepiao3\",\"profit\":36,\"transactionNumber\":\" \",\"orderValueAddedNo\":\" \",\"purchaseChannel\":\"艺龙\",\"purchaseAccount\":\"18513092060----huidarui\",\"purchaseOrderNo\":\"IT7JP5181024MO515179\",\"policyType\":\"普通促销\",\"policyCode\":\"TGJ泰国-中国\",\"orderStatus\":\"已出票\",\"operator\":\"曹坤祥\",\"purchaseTime\":\"2018-10-24 19:01:39\",\"orderValueAdded\":\" \",\"orderValueAddedSpecific\":\" \",\"remark\":\" \",\"officalReceivedPaymentStatus\":\" \",\"officalActualExpendAmount\":0,\"officalBalance\":0,\"officalRateAdjustDate\":null,\"passengerNames\":null,\"adultCount\":1,\"childCount\":0,\"sortIndex\":438}],\"info\":null}"
;
noteResult
=
JSONObject
.
parseObject
(
result
,
NoteResult
.
class
);
if
(
noteResult
.
getStatus
()
!=
200
){
logger
.
error
(
"[AutoSource] 从saleDetail表中查询报表数据失败,keyList="
+
keyList
);
noteResult
.
setMsg
(
"[AutoSource] 从saleDetail表中查询报表数据失败,key="
+
keyList
);
noteResult
.
setStatus
(
300
);
// 获取失败状态值
return
noteResult
;
}
List
<
SaleDetail
>
saleDetails
=
JSONArray
.
parseArray
(
JSONArray
.
toJSONString
(
noteResult
.
getData
()),
SaleDetail
.
class
);
Response
response
=
new
Response
();
logger
.
info
(
"[AutoSource] 获取数据库表数据,总用时:"
+(
System
.
currentTimeMillis
()-
beginTime
)+
"ms"
);
try
{
// String customerId = keyList.substring(0,keyList.indexOf("_"));
String
customerId
=
JSONObject
.
parseObject
(
requestBody
).
getString
(
"customerId"
);
final
String
filePath
=
saleDetailReportExcelPath
+
customerId
+
"/SalesDetailReport/"
;
//指定文件保存路径
String
path
=
parseToSaleDetail
.
createSaleDetailReport
(
saleDetails
,
filePath
);
noteResult
.
setStatus
(
Response
.
Status
.
SUCCEED
.
getStatus
());
noteResult
.
setData
(
path
);
noteResult
.
setMsg
(
"[AutoSource] 生成报表成功,总用时:"
+(
System
.
currentTimeMillis
()-
beginTime
)+
"ms"
);
logger
.
info
(
"[AutoSource] 生成销售明细报表,总用时:"
+(
System
.
currentTimeMillis
()-
beginTime
)+
"ms"
);
return
noteResult
;
}
catch
(
Exception
e
){
logger
.
error
(
"[AutoSource] 生成报表发生异常"
,
e
);
noteResult
.
setMsg
(
"[AutoSource] 生成报表发生异常"
);
return
noteResult
;
}
}
//任务消息队列,元素 调用AirTicket工程刷新SaleDetail表数据 的参数Map<String,String>
public
static
BlockingQueue
<
Map
<
String
,
String
>>
updateSaleDetailQueue
=
new
LinkedBlockingDeque
<>();
public
static
BlockingQueue
<
Map
<
String
,
String
>>
updateSaleDetailQueue
=
new
LinkedBlockingDeque
<>();
//提供入队列方法
public
static
void
setUpdateSaleDetailQueue
(
Map
<
String
,
String
>
paramsMap
)
{
try
{
public
static
void
setUpdateSaleDetailQueue
(
Map
<
String
,
String
>
paramsMap
)
{
try
{
updateSaleDetailQueue
.
put
(
paramsMap
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
logger
.
error
(
"updateSaleDetailQueue 队列,入队列异常,参数:"
+
paramsMap
);
}
}
/**
* 采购信息更新时,更新报表数据,以队列方式执行
*
* @param requestBody
* @return
*/
public
Response
updateSaleDetail
(
String
requestBody
){
public
Response
updateSaleDetail
(
String
requestBody
)
{
System
.
out
.
println
(
requestBody
);
if
(
StringUtils
.
isBlank
(
requestBody
))
{
if
(
StringUtils
.
isBlank
(
requestBody
))
{
return
Response
.
error
(
"[updateSaleDetail] 参数不合法,requestBody=null"
);
}
JSONObject
reqObj
=
JSONObject
.
parseObject
(
requestBody
);
String
customerId
=
reqObj
.
getString
(
"customerId"
);
String
startTime
=
reqObj
.
getString
(
"startTime"
);
String
endTime
=
reqObj
.
getString
(
"endTime"
);
if
(
StringUtils
.
isBlank
(
customerId
)
||
StringUtils
.
isBlank
(
startTime
)
||
StringUtils
.
isBlank
(
endTime
))
{
if
(
StringUtils
.
isBlank
(
customerId
)
||
StringUtils
.
isBlank
(
startTime
)
||
StringUtils
.
isBlank
(
endTime
))
{
return
Response
.
error
(
"[updateSaleDetail] 参数不合法"
);
}
try
{
try
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
Date
endDate
=
sdf
.
parse
(
endTime
);
if
(
endDate
.
getTime
()
>
new
Date
().
getTime
())
{
return
Response
.
error
(
"[updateSaleDetail] 当天订单采购信息修改不触发刷新报表数据,endTime="
+
endTime
);
if
(
endDate
.
getTime
()
>
new
Date
().
getTime
())
{
return
Response
.
error
(
"[updateSaleDetail] 当天订单采购信息修改不触发刷新报表数据,endTime="
+
endTime
);
}
Map
<
String
,
String
>
paramsMap
=
new
HashMap
<>();
paramsMap
.
put
(
"customerId"
,
customerId
);
paramsMap
.
put
(
"startTime"
,
startTime
);
paramsMap
.
put
(
"endTime"
,
endTime
);
Map
<
String
,
String
>
paramsMap
=
new
HashMap
<>();
paramsMap
.
put
(
"customerId"
,
customerId
);
paramsMap
.
put
(
"startTime"
,
startTime
);
paramsMap
.
put
(
"endTime"
,
endTime
);
setUpdateSaleDetailQueue
(
paramsMap
);
//入队列
logger
.
info
(
"[updateSaleDetail] 采购信息变动,刷新报表数据任务已加入队列,参数:"
+
paramsMap
);
logger
.
info
(
"[updateSaleDetail] 当前队列长度 updateSaleDetailQueue.size()="
+
updateSaleDetailQueue
.
size
());
logger
.
info
(
"[updateSaleDetail] 采购信息变动,刷新报表数据任务已加入队列,参数:"
+
paramsMap
);
logger
.
info
(
"[updateSaleDetail] 当前队列长度 updateSaleDetailQueue.size()="
+
updateSaleDetailQueue
.
size
());
return
Response
.
success
(
"[updateSaleDetail] 已加入队列"
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"updateSaleDetail 发生异常"
,
e
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"updateSaleDetail 发生异常"
,
e
);
}
return
Response
.
error
(
"未知原因失败"
);
}
...
...
@@ -83,21 +227,21 @@ public class SaleDetailService implements CommandLineRunner {
}
//消费响应消息队列
private
void
consumeUpdateSaleDetailQueue
(){
private
void
consumeUpdateSaleDetailQueue
()
{
ExecutorService
threadPool
=
Executors
.
newFixedThreadPool
(
1
);
Runnable
consumeTask
=
new
Runnable
()
{
@Override
public
void
run
()
{
while
(
true
){
logger
.
info
(
"[updateSaleDetailQueue] 刷新报表队列 当前长度:"
+
updateSaleDetailQueue
.
size
());
Map
<
String
,
String
>
map
=
null
;
while
(
true
)
{
logger
.
info
(
"[updateSaleDetailQueue] 刷新报表队列 当前长度:"
+
updateSaleDetailQueue
.
size
());
Map
<
String
,
String
>
map
=
null
;
try
{
//调用AirTicket工程刷新SaleDetail表数据
map
=
updateSaleDetailQueue
.
take
();
HttpsSendData
.
send
(
overseasAirTicketUrl
+
"autoSaleDetai/updateSaleDetail.do"
,
map
);
logger
.
info
(
"刷新报表已执行,参数:"
+
map
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"刷新报表队列执行任务时异常,参数"
+
map
);
HttpsSendData
.
send
(
overseasAirTicketUrl
+
"autoSaleDetai/updateSaleDetail.do"
,
map
);
logger
.
info
(
"刷新报表已执行,参数:"
+
map
);
}
catch
(
Exception
e
)
{
logger
.
error
(
"刷新报表队列执行任务时异常,参数"
+
map
);
}
}
}
...
...
src/main/resources/application-prod.yml
View file @
20d4885b
...
...
@@ -6,8 +6,8 @@ spring:
polestarLogsServicesUrl
:
'
http://127.0.0.1:8089/'
dataApiUrl
:
'
http://127.0.0.1:38071/iffs-data-api/'
pathConfig
:
sale
ReportExcelPath
:
'
F:/overseasCheetah
_ExcelFile/'
sale
DetailReportExcelPath
:
'
F:\\overseasCheetah
_ExcelFile/'
sale
DetailReportExcelPath
:
'
D:\\polestar
_ExcelFile/'
sale
ReportExcelPath
:
'
D:/polestar
_ExcelFile/'
server
:
port
:
8066
compression
:
...
...
src/main/resources/application-temp.yml
View file @
20d4885b
...
...
@@ -6,8 +6,8 @@ spring:
polestarLogsServicesUrl
:
'
http://192.168.0.88:8055/'
dataApiUrl
:
'
http://14.18.207.103:38071/iffs-data-api/'
pathConfig
:
sale
ReportExcelPath
:
'
E:/overseasCheetah
_ExcelFile/'
sale
DetailReportExcelPath
:
'
E:\\overseasCheetah
_ExcelFile/'
sale
DetailReportExcelPath
:
'
D:\\polestar
_ExcelFile/'
sale
ReportExcelPath
:
'
D:/polestar
_ExcelFile/'
server
:
port
:
8333
compression
:
...
...
src/main/resources/application-test.yml
View file @
20d4885b
spring
:
urlConfig
:
overseasCheetahUrl
:
'
http://127.0.0.1:18092/polestar/'
overseasAirTicketUrl
:
'
http://127.0.0.1:18071/OverseasAirTicket/'
# overseasAirTicketUrl: 'http://127.0.0.1:18071/OverseasAirTicket/'
overseasAirTicketUrl
:
'
http://192.168.11.158:8080/ordercenterApi/'
productServiceUrl
:
'
http://127.0.0.1:28071/20160907_InterfaceConnected/'
polestarLogsServicesUrl
:
'
http://127.0.0.1:8089/'
dataApiUrl
:
'
http://14.18.207.91:38071/iffs-data-api/'
statementApiUrl
:
'
http://192.168.11.158:8080/ordercenterApi/'
pathConfig
:
saleDetailReportExcelPath
:
'
D:\\
overseasCheetah_ExcelFile/'
saleReportExcelPath
:
'
D:/
overseasCheetah_ExcelFile/'
saleDetailReportExcelPath
:
'
D:\\
polestar_ExcelFile/'
# 销售明细报表导出保存的本地路径
saleReportExcelPath
:
'
D:/
polestar_ExcelFile/'
#
server
:
port
:
8066
compression
:
...
...
报表服务备忘记录.txt
View file @
20d4885b
报表服务备
忘记录 polestar-statement-services
报表服务备
忘记录 polestar-statement-services
...
...
@@ -6,4 +6,73 @@
[INFO]2020-12-09 11:36:50[uploadSaleRules][上传销售规则,参数:{"customerId":"2cb3aa90-7530-11e9-b14b-c81f66ba6a47","filePath":"D:\\\\webService\\\\overseasCheetah_ExcelFile/2cb3aa90-7530-11e9-b14b-c81f66ba6a47/SalesRulesUpLoad/20201209\\1607483667248workpolicy.xlsx","operator":"%E7%8E%8B%E7%A6%B9"}]
2. 接口参数模板
D:\pc\Project\polestar\polestar-statement-services\.idea\httpRequests\http-requests-log.http
3.
3. 下载销售明细报表数据 ,参数
[INFO]2021-03-16 17:17:29[getSaleDetailReportData][开始获取数据,参数:{
"customerId": "2cb3aa90-7530-11e9-b14b-c81f66ba6a47",
"endTime_Tic": "2021-03-08 00:00:00",
"orderStatus": "4",
"requestId": "",
"startTime_Tic": "2021-03-07 00:00:00",
"tableName": "orderinfo,orderpassenger,orderflightinfo,orderpurchase,orderinsurance,ordervalueadded,transactiondetail,transactiondetail_old"
}]
{
"status": 0,
"msg": "查询成功",
"data": [
{
"id": "00027727-2e16-485a-b1b3-f13d5079645a",
"key": "df0286f1-eaac-11e7-adf4-a4badb3682ff_2018-10-25_2018-10-26",
"createTime": "2018-12-21 09:41:41",
"updateTime": "2018-12-21 09:41:41",
"createOrderTime": "2018-10-24 16:24:26",
"ticketTime": "2018-10-25 00:55:41",
"outerOrderNo": "1380889117689",
"channel": "Taobao",
"store": "tbml",
"tairLine": "HKT-DMK",
"flightTime": "1544358000000",
"flightNumber": "FD3028",
"tripType": "单程",
"pnrType": "去程",
"pnr": "BWSTUZ",
"passengerCount": 1,
"salePrice": 128.0,
"luggagePrice": 0.0,
"points": 0,
"purchaseCurrency": "CNY",
"purchasePrice_local": 92.0,
"purchasePrice_rmb": 92.0,
"transactionDetail_local": 92.0,
"transactionDetail_rmb": 92.0,
"payMethod": "支付宝huochepiao3",
"cardNumber": "支付宝huochepiao3",
"profit": 36.0,
"transactionNumber": " ",
"orderValueAddedNo": " ",
"purchaseChannel": "艺龙",
"purchaseAccount": "18513092060----huidarui",
"purchaseOrderNo": "IT7JP5181024MO515179",
"policyType": "普通促销",
"policyCode": "TGJ泰国-中国",
"orderStatus": "已出票",
"operator": "曹坤祥",
"purchaseTime": "2018-10-24 19:01:39",
"orderValueAdded": " ",
"orderValueAddedSpecific": " ",
"remark": " ",
"officalReceivedPaymentStatus": " ",
"officalActualExpendAmount": 0.0,
"officalBalance": 0.0,
"officalRateAdjustDate": null,
"passengerNames": null,
"adultCount": null,
"childCount": null,
"sortIndex": 438
}
],
"info": null
}
\ No newline at end of file
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