Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
cloud-platform
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
youjj
cloud-platform
Commits
42f7a384
Commit
42f7a384
authored
Nov 14, 2019
by
libin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
会员与租车订单统计
parent
cb58469c
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
189 additions
and
81 deletions
+189
-81
StatisticsStatusEnum.java
...latform/order/contant/enumerate/StatisticsStatusEnum.java
+48
-0
OrderAccountDTO.java
...com/xxfc/platform/order/pojo/account/OrderAccountDTO.java
+7
-0
OrderDTO.java
.../main/java/com/xxfc/platform/order/pojo/dto/OrderDTO.java
+1
-0
OrderAccountBiz.java
...ain/java/com/xxfc/platform/order/biz/OrderAccountBiz.java
+4
-0
OrderMemberReceivedStatisticsBiz.java
.../platform/order/biz/OrderMemberReceivedStatisticsBiz.java
+96
-65
OrderRentVehicleReceivedStatisticsBiz.java
...form/order/biz/OrderRentVehicleReceivedStatisticsBiz.java
+30
-14
OrderRentVehicleReceivedStatisticsMapper.java
...rder/mapper/OrderRentVehicleReceivedStatisticsMapper.java
+2
-1
BaseOrderMapper.xml
...rder-server/src/main/resources/mapper/BaseOrderMapper.xml
+1
-1
No files found.
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/contant/enumerate/StatisticsStatusEnum.java
0 → 100644
View file @
42f7a384
package
com
.
xxfc
.
platform
.
order
.
contant
.
enumerate
;
import
org.assertj.core.util.Lists
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/11/14 14:28
*/
public
enum
StatisticsStatusEnum
{
;
public
static
List
<
String
>
orderStates
;
public
static
List
<
String
>
orderOrigins
;
public
static
List
<
String
>
orderPayWays
;
static
{
// 2 取消 3未完成 6 已完成
orderStates
=
Lists
.
newArrayList
(
"2"
,
"3"
,
"6"
);
// 1 app 2 小程序 3 其他
orderOrigins
=
Lists
.
newArrayList
(
"1"
,
"2"
,
"3"
);
// 1 微信 2 支付宝
orderPayWays
=
Lists
.
newArrayList
(
"1"
,
"2"
);
}
public
static
List
<
String
>
statisticsSateGroup
(
List
<
Integer
>
companyIdList
){
List
<
String
>
orderStatisticsStateGroups
=
new
ArrayList
<>();
for
(
Integer
companyId
:
companyIdList
)
{
for
(
String
orderOrigin
:
orderOrigins
)
{
for
(
String
orderPayWay
:
orderPayWays
)
{
for
(
String
orderState
:
orderStates
)
{
// 公司id-订单来源-支付方式-订单状态
orderStatisticsStateGroups
.
add
(
String
.
format
(
"%d-%s-%s-%s"
,
companyId
,
orderOrigin
,
orderPayWay
,
orderState
));
}
}
}
}
return
orderStatisticsStateGroups
;
}
public
static
List
<
String
>
getOtherStatisticsStateGroup
(
List
<
Integer
>
companyIdList
,
List
<
String
>
statisticsStates
){
List
<
String
>
sateGroup
=
statisticsSateGroup
(
companyIdList
);
sateGroup
.
retainAll
(
statisticsStates
);
return
sateGroup
;
}
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/account/OrderAccountDTO.java
View file @
42f7a384
package
com
.
xxfc
.
platform
.
order
.
pojo
.
account
;
package
com
.
xxfc
.
platform
.
order
.
pojo
.
account
;
import
com.alibaba.fastjson.JSON
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.xxfc.platform.order.entity.OrderAccount
;
import
com.xxfc.platform.order.entity.OrderAccount
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.Data
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
org.springframework.util.StringUtils
;
import
javax.persistence.Column
;
import
javax.persistence.Column
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.GeneratedValue
;
...
@@ -111,6 +113,11 @@ public class OrderAccountDTO implements Serializable {
...
@@ -111,6 +113,11 @@ public class OrderAccountDTO implements Serializable {
@Column
(
name
=
"oneDay"
)
@Column
(
name
=
"oneDay"
)
private
String
oneDay
;
private
String
oneDay
;
private
OrderAccountDetail
accountDetailEntity
;
public
OrderAccountDetail
getAccountDetailEntity
()
{
return
StringUtils
.
hasText
(
accountDetail
)?
JSON
.
parseObject
(
accountDetail
,
OrderAccountDetail
.
class
):
new
OrderAccountDetail
();
}
@Override
@Override
public
String
toString
()
{
public
String
toString
()
{
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/dto/OrderDTO.java
View file @
42f7a384
...
@@ -28,6 +28,7 @@ public class OrderDTO {
...
@@ -28,6 +28,7 @@ public class OrderDTO {
private
Integer
payWay
;
private
Integer
payWay
;
private
Date
crtTime
;
private
Date
crtTime
;
private
Integer
companyId
;
private
Integer
companyId
;
private
String
stateGroup
;
/**
/**
* 会员相关
* 会员相关
*/
*/
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderAccountBiz.java
View file @
42f7a384
...
@@ -621,4 +621,8 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
...
@@ -621,4 +621,8 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
orderMsgBiz
.
handelMsgDeposit
(
orvd
,
baseOrder
,
userFeign
.
userDetailById
(
baseOrder
.
getUserId
()).
getData
());
orderMsgBiz
.
handelMsgDeposit
(
orvd
,
baseOrder
,
userFeign
.
userDetailById
(
baseOrder
.
getUserId
()).
getData
());
}
}
public
List
<
OrderAccountDTO
>
selectByOrders
(
List
<
Integer
>
orderIds
)
{
return
null
;
}
}
}
\ No newline at end of file
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderMemberReceivedStatisticsBiz.java
View file @
42f7a384
...
@@ -6,23 +6,21 @@ import cn.hutool.core.date.DateUtil;
...
@@ -6,23 +6,21 @@ import cn.hutool.core.date.DateUtil;
import
cn.hutool.core.date.TimeInterval
;
import
cn.hutool.core.date.TimeInterval
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.enumconstant.LevelEnum
;
import
com.github.wxiaoqi.security.common.enumconstant.LevelEnum
;
import
com.google.common.collect.Lists
;
import
com.xxfc.platform.order.contant.enumerate.StatisticsStatusEnum
;
import
com.xxfc.platform.order.entity.OrderMemberReceivedStatistics
;
import
com.xxfc.platform.order.entity.OrderMemberReceivedStatistics
;
import
com.xxfc.platform.order.mapper.OrderMemberReceivedStatisticsMapper
;
import
com.xxfc.platform.order.mapper.OrderMemberReceivedStatisticsMapper
;
import
com.xxfc.platform.order.pojo.dto.OrderDTO
;
import
com.xxfc.platform.order.pojo.dto.OrderDTO
;
import
com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO
;
import
com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO
;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.http.client.utils.CloneUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
com.xxfc.platform.order.entity.BaseOrder
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.*
;
import
java.util.*
;
import
java.util.function.Supplier
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
/**
/**
* 会员订单统计
* 会员订单统计
...
@@ -39,7 +37,7 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
...
@@ -39,7 +37,7 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
private
final
int
FINISH
=
6
;
private
final
int
FINISH
=
6
;
private
final
int
CANCEL
=
2
;
private
final
int
CANCEL
=
2
;
private
final
int
UNFINISH
=
3
;
private
final
int
UNFINISH
=
3
;
private
final
int
PAYWAYTEMP
=
99
;
public
List
<
OrderMemberReceivedStatistics
>
selectOrderReceivedStatistics
(
OrderReceivedStatisticsFindDTO
orderReceivedStatisticsFindDTO
)
{
public
List
<
OrderMemberReceivedStatistics
>
selectOrderReceivedStatistics
(
OrderReceivedStatisticsFindDTO
orderReceivedStatisticsFindDTO
)
{
return
mapper
.
selectOrderMemberReceivedStatistics
(
orderReceivedStatisticsFindDTO
);
return
mapper
.
selectOrderMemberReceivedStatistics
(
orderReceivedStatisticsFindDTO
);
...
@@ -47,60 +45,42 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
...
@@ -47,60 +45,42 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
public
void
orderMemberReceivedStatistics
(
Date
date
)
{
public
void
orderMemberReceivedStatistics
(
Date
date
)
{
List
<
OrderMemberReceivedStatistics
>
orderMemberReceivedStatisticsList
=
new
ArrayList
<>(
18
);
DateTime
yesterday
=
DateUtil
.
yesterday
();
DateTime
yesterday
=
DateUtil
.
yesterday
();
Date
startDate
=
date
==
null
?
DateUtil
.
beginOfDay
(
yesterday
).
toJdkDate
()
:
DateUtil
.
beginOfDay
(
date
);
Date
startDate
=
date
==
null
?
DateUtil
.
beginOfDay
(
yesterday
).
toJdkDate
()
:
DateUtil
.
beginOfDay
(
date
);
Date
endDate
=
date
==
null
?
DateUtil
.
endOfDay
(
yesterday
).
toJdkDate
()
:
DateUtil
.
beginOfDay
(
date
);
Date
endDate
=
date
==
null
?
DateUtil
.
endOfDay
(
yesterday
).
toJdkDate
()
:
DateUtil
.
beginOfDay
(
date
);
String
year
=
String
.
valueOf
(
yesterday
.
getField
(
DateField
.
YEAR
));
String
month
=
String
.
format
(
"%s%d"
,
year
,
yesterday
.
getField
(
DateField
.
MONTH
));
String
weekOfYear
=
String
.
format
(
"%s%d"
,
year
,
yesterday
.
getField
(
DateField
.
WEEK_OF_YEAR
));
List
<
OrderDTO
>
orders
=
baseOrderBiz
.
selectOrdersByTypeAndTime
(
Arrays
.
asList
(
3
),
startDate
,
endDate
);
List
<
OrderDTO
>
orders
=
baseOrderBiz
.
selectOrdersByTypeAndTime
(
Arrays
.
asList
(
3
),
startDate
,
endDate
);
TimeInterval
timer
=
DateUtil
.
timer
();
TimeInterval
timer
=
DateUtil
.
timer
();
//状态(3) -->下单来源(3)--->支付方式(2) --> 3 * 3 * 2 =18 --->会员
//数据处理 把 完成状态6 取消状态2 的其他数据转换成状态为未完成3
Map
<
Integer
,
Map
<
Integer
,
Map
<
Integer
,
Map
<
Integer
,
List
<
OrderDTO
>>>>>
ordersMap
=
orders
.
stream
().
peek
(
x
->
{
Map
<
String
,
Map
<
Integer
,
List
<
OrderDTO
>>>
ordersMap
=
orders
.
stream
().
peek
(
x
->
{
if
(
x
.
getStatus
()
!=
CANCEL
&&
x
.
getStatus
()
!=
FINISH
)
{
Integer
status
=
x
.
getStatus
()==
CANCEL
?
CANCEL:
x
.
getStatus
()==
FINISH
?
FINISH:
UNFINISH
;
x
.
setStatus
(
UNFINISH
);
x
.
setStatus
(
status
);
}
x
.
setStateGroup
(
String
.
format
(
"%d-%d-%d-%d"
,
1
,
x
.
getOrderOrigin
(),
x
.
getPayWay
(),
x
.
getStatus
()));})
}).
peek
(
x
->
{
.
collect
(
Collectors
.
groupingBy
(
OrderDTO:
:
getStateGroup
,
Collectors
.
groupingBy
(
OrderDTO:
:
getMemberLevel
,
Collectors
.
toList
())));
if
(
x
.
getStatus
()
!=
FINISH
)
{
x
.
setPayWay
(
PAYWAYTEMP
);
}
}).
collect
(
Collectors
.
groupingBy
(
OrderDTO:
:
getStatus
,
Collectors
.
groupingBy
(
OrderDTO:
:
getOrderOrigin
,
Collectors
.
groupingBy
(
OrderDTO:
:
getPayWay
,
Collectors
.
groupingBy
(
OrderDTO:
:
getMemberLevel
,
Collectors
.
toList
())))));
List
<
OrderMemberReceivedStatistics
>
orderMemberReceivedStatisticsList
=
new
ArrayList
<>(
18
);
Set
<
Map
.
Entry
<
String
,
Map
<
Integer
,
List
<
OrderDTO
>>>>
orderSet
=
ordersMap
.
entrySet
();
ordersMap
.
forEach
((
KS
,
VS
)
->
{
for
(
Map
.
Entry
<
String
,
Map
<
Integer
,
List
<
OrderDTO
>>>
orderEntry
:
orderSet
)
{
//KS:状态 (完成|未完成|取消)
//获取状态
VS
.
forEach
((
KO
,
VO
)
->
{
String
orderStatisticsGroup
=
orderEntry
.
getKey
();
//KO:下单来源状态 (app|小程序|后台)
Map
<
Integer
,
List
<
OrderDTO
>>
orderEntryValue
=
orderEntry
.
getValue
();
VO
.
forEach
((
KP
,
VP
)
->
{
OrderMemberReceivedStatistics
orderMemberReceivedStatistics
=
createOrderMemberReceivedStatiscs
(
startDate
,
orderStatisticsGroup
);
//KP:支付方式 (微信|支付宝)
OrderMemberReceivedStatistics
orderMemberReceivedStatistics
=
new
OrderMemberReceivedStatistics
();
orderMemberReceivedStatistics
.
setCrtTime
(
new
Date
());
orderMemberReceivedStatistics
.
setCompanyId
(
1
);
orderMemberReceivedStatistics
.
setIsFinish
(
KS
);
orderMemberReceivedStatistics
.
setOrderOrigin
(
KO
);
orderMemberReceivedStatistics
.
setPayWay
(
PAYWAYTEMP
==
KP
?
null
:
KP
);
orderMemberReceivedStatistics
.
setDate
(
startDate
);
orderMemberReceivedStatistics
.
setYear
(
year
);
orderMemberReceivedStatistics
.
setMonth
(
month
);
orderMemberReceivedStatistics
.
setWeekOfYear
(
weekOfYear
);
//1.普通会员
//1.普通会员
List
<
OrderDTO
>
generalOrders
=
VP
.
get
(
LevelEnum
.
GENERAL
.
getLevel
());
List
<
OrderDTO
>
generalOrders
=
orderEntryValue
.
get
(
LevelEnum
.
GENERAL
.
getLevel
());
generalOrders
=
CollectionUtils
.
isEmpty
(
generalOrders
)
?
Collections
.
EMPTY_LIST
:
generalOrders
;
generalOrders
=
CollectionUtils
.
isEmpty
(
generalOrders
)
?
Collections
.
EMPTY_LIST
:
generalOrders
;
BigDecimal
totalCommAmount
=
generalOrders
.
stream
().
map
(
OrderDTO:
:
getRealAmount
).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
));
BigDecimal
totalCommAmount
=
generalOrders
.
stream
().
map
(
OrderDTO:
:
getRealAmount
).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
));
orderMemberReceivedStatistics
.
setToalCommonAmmount
(
totalCommAmount
);
orderMemberReceivedStatistics
.
setToalCommonAmmount
(
totalCommAmount
);
orderMemberReceivedStatistics
.
setTotalCommonQuantity
(
generalOrders
.
size
());
orderMemberReceivedStatistics
.
setTotalCommonQuantity
(
generalOrders
.
size
());
//2.黄金会员
//2.黄金会员
List
<
OrderDTO
>
goldOrders
=
VP
.
get
(
LevelEnum
.
GOLD
.
getLevel
());
List
<
OrderDTO
>
goldOrders
=
orderEntryValue
.
get
(
LevelEnum
.
GOLD
.
getLevel
());
goldOrders
=
CollectionUtils
.
isEmpty
(
goldOrders
)
?
Collections
.
EMPTY_LIST
:
goldOrders
;
goldOrders
=
CollectionUtils
.
isEmpty
(
goldOrders
)
?
Collections
.
EMPTY_LIST
:
goldOrders
;
BigDecimal
totalGoldAmount
=
goldOrders
.
stream
().
map
(
OrderDTO:
:
getRealAmount
).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
));
BigDecimal
totalGoldAmount
=
goldOrders
.
stream
().
map
(
OrderDTO:
:
getRealAmount
).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
));
orderMemberReceivedStatistics
.
setTotalGoldAmount
(
totalGoldAmount
);
orderMemberReceivedStatistics
.
setTotalGoldAmount
(
totalGoldAmount
);
orderMemberReceivedStatistics
.
setTotalGoldQuantity
(
goldOrders
.
size
());
orderMemberReceivedStatistics
.
setTotalGoldQuantity
(
goldOrders
.
size
());
//3.钻石会员
List
<
OrderDTO
>
diamondOrders
=
VP
.
get
(
LevelEnum
.
DIAMOND
.
getLevel
());
//3.钻石会员
List
<
OrderDTO
>
diamondOrders
=
orderEntryValue
.
get
(
LevelEnum
.
DIAMOND
.
getLevel
());
diamondOrders
=
CollectionUtils
.
isEmpty
(
diamondOrders
)
?
Collections
.
EMPTY_LIST
:
diamondOrders
;
diamondOrders
=
CollectionUtils
.
isEmpty
(
diamondOrders
)
?
Collections
.
EMPTY_LIST
:
diamondOrders
;
BigDecimal
totalDiamondAmount
=
diamondOrders
.
stream
().
map
(
OrderDTO:
:
getRealAmount
).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
));
BigDecimal
totalDiamondAmount
=
diamondOrders
.
stream
().
map
(
OrderDTO:
:
getRealAmount
).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
));
orderMemberReceivedStatistics
.
setTotalDiamondAmmount
(
totalDiamondAmount
);
orderMemberReceivedStatistics
.
setTotalDiamondAmmount
(
totalDiamondAmount
);
...
@@ -109,14 +89,65 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
...
@@ -109,14 +89,65 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
BigDecimal
totalAmount
=
totalCommAmount
.
add
(
totalGoldAmount
).
add
(
totalDiamondAmount
);
BigDecimal
totalAmount
=
totalCommAmount
.
add
(
totalGoldAmount
).
add
(
totalDiamondAmount
);
orderMemberReceivedStatistics
.
setTotalAmount
(
totalAmount
);
orderMemberReceivedStatistics
.
setTotalAmount
(
totalAmount
);
orderMemberReceivedStatisticsList
.
add
(
orderMemberReceivedStatistics
);
orderMemberReceivedStatisticsList
.
add
(
orderMemberReceivedStatistics
);
});
});
}
});
List
<
OrderMemberReceivedStatistics
>
otherStatisticsStateGroupList
=
createOtherStatisticsStateGroupList
(
startDate
,
Lists
.
newArrayList
(
ordersMap
.
keySet
()),
1
);
orderMemberReceivedStatisticsList
.
addAll
(
otherStatisticsStateGroupList
);
insertMemberReceivedStatisticsBatch
(
orderMemberReceivedStatisticsList
);
long
interval
=
timer
.
interval
();
long
interval
=
timer
.
interval
();
System
.
out
.
println
(
"花费时间:"
+
interval
);
System
.
out
.
println
(
"花费时间:"
+
interval
);
insertMemberReceivedStatisticsBatch
(
orderMemberReceivedStatisticsList
);
}
}
/**
* 创建剩余状态数据
* @param startDate
* @param statisticsStateGroups
* @param companyId
* @return
*/
private
List
<
OrderMemberReceivedStatistics
>
createOtherStatisticsStateGroupList
(
Date
startDate
,
List
<
String
>
statisticsStateGroups
,
Integer
companyId
)
{
List
<
OrderMemberReceivedStatistics
>
orderMemberReceivedStatisticsList
=
new
ArrayList
<>();
OrderMemberReceivedStatistics
orderMemberReceivedStatistics
;
List
<
String
>
otherStatisticsStateGroup
=
StatisticsStatusEnum
.
getOtherStatisticsStateGroup
(
Arrays
.
asList
(
companyId
),
statisticsStateGroups
);
for
(
String
stateGroup
:
otherStatisticsStateGroup
)
{
orderMemberReceivedStatistics
=
createOrderMemberReceivedStatiscs
(
startDate
,
stateGroup
);
orderMemberReceivedStatistics
.
setTotalAmount
(
BigDecimal
.
ZERO
);
orderMemberReceivedStatistics
.
setTotalCommonQuantity
(
0
);
orderMemberReceivedStatistics
.
setToalCommonAmmount
(
BigDecimal
.
ZERO
);
orderMemberReceivedStatistics
.
setTotalGoldQuantity
(
0
);
orderMemberReceivedStatistics
.
setTotalGoldAmount
(
BigDecimal
.
ZERO
);
orderMemberReceivedStatistics
.
setTotalDiamondQuantity
(
0
);
orderMemberReceivedStatistics
.
setTotalDiamondAmmount
(
BigDecimal
.
ZERO
);
orderMemberReceivedStatisticsList
.
add
(
orderMemberReceivedStatistics
);
}
return
orderMemberReceivedStatisticsList
;
}
/**
* 创建会员订单统计对象
* @param date
* @param stateGroup
* @return
*/
private
OrderMemberReceivedStatistics
createOrderMemberReceivedStatiscs
(
Date
date
,
String
stateGroup
)
{
OrderMemberReceivedStatistics
orderMemberReceivedStatistics
=
new
OrderMemberReceivedStatistics
();
DateTime
yesterday
=
DateTime
.
of
(
date
);
String
year
=
String
.
valueOf
(
yesterday
.
getField
(
DateField
.
YEAR
));
String
month
=
String
.
format
(
"%s%d"
,
year
,
yesterday
.
getField
(
DateField
.
MONTH
));
String
weekOfYear
=
String
.
format
(
"%s%d"
,
year
,
yesterday
.
getField
(
DateField
.
WEEK_OF_YEAR
));
String
[]
status
=
stateGroup
.
split
(
"-"
);
orderMemberReceivedStatistics
.
setCrtTime
(
new
Date
());
orderMemberReceivedStatistics
.
setCompanyId
(
Integer
.
valueOf
(
status
[
0
]));
orderMemberReceivedStatistics
.
setIsFinish
(
Integer
.
valueOf
(
status
[
3
]));
orderMemberReceivedStatistics
.
setOrderOrigin
(
Integer
.
valueOf
(
status
[
1
]));
orderMemberReceivedStatistics
.
setPayWay
(
Integer
.
valueOf
(
status
[
2
]));
orderMemberReceivedStatistics
.
setDate
(
date
);
orderMemberReceivedStatistics
.
setYear
(
year
);
orderMemberReceivedStatistics
.
setMonth
(
month
);
orderMemberReceivedStatistics
.
setWeekOfYear
(
weekOfYear
);
return
orderMemberReceivedStatistics
;
}
public
void
insertMemberReceivedStatisticsBatch
(
List
<
OrderMemberReceivedStatistics
>
orderMemberReceivedStatistics
)
{
public
void
insertMemberReceivedStatisticsBatch
(
List
<
OrderMemberReceivedStatistics
>
orderMemberReceivedStatistics
)
{
mapper
.
insertList
(
orderMemberReceivedStatistics
);
mapper
.
insertList
(
orderMemberReceivedStatistics
);
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderRentVehicleReceivedStatisticsBiz.java
View file @
42f7a384
...
@@ -3,6 +3,8 @@ package com.xxfc.platform.order.biz;
...
@@ -3,6 +3,8 @@ package com.xxfc.platform.order.biz;
import
cn.hutool.core.date.DateField
;
import
cn.hutool.core.date.DateField
;
import
cn.hutool.core.date.DateTime
;
import
cn.hutool.core.date.DateTime
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.date.DateUtil
;
import
com.xxfc.platform.order.entity.OrderAccount
;
import
com.xxfc.platform.order.pojo.account.OrderAccountDTO
;
import
com.xxfc.platform.order.pojo.dto.OrderDTO
;
import
com.xxfc.platform.order.pojo.dto.OrderDTO
;
import
com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO
;
import
com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO
;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
...
@@ -15,6 +17,7 @@ import com.xxfc.platform.order.mapper.OrderRentVehicleReceivedStatisticsMapper;
...
@@ -15,6 +17,7 @@ import com.xxfc.platform.order.mapper.OrderRentVehicleReceivedStatisticsMapper;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.util.*
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -31,6 +34,7 @@ import java.util.stream.Collectors;
...
@@ -31,6 +34,7 @@ import java.util.stream.Collectors;
public
class
OrderRentVehicleReceivedStatisticsBiz
extends
BaseBiz
<
OrderRentVehicleReceivedStatisticsMapper
,
OrderRentVehicleReceivedStatistics
>
{
public
class
OrderRentVehicleReceivedStatisticsBiz
extends
BaseBiz
<
OrderRentVehicleReceivedStatisticsMapper
,
OrderRentVehicleReceivedStatistics
>
{
private
final
BaseOrderBiz
baseOrderBiz
;
private
final
BaseOrderBiz
baseOrderBiz
;
private
final
OrderAccountBiz
orderAccountBiz
;
private
final
int
FINISH
=
6
;
private
final
int
FINISH
=
6
;
private
final
int
CANCEL
=
2
;
private
final
int
CANCEL
=
2
;
private
final
int
UNFINISH
=
3
;
private
final
int
UNFINISH
=
3
;
...
@@ -40,15 +44,18 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi
...
@@ -40,15 +44,18 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi
return
mapper
.
selectOrderRentVehicleReceivedStatistics
(
orderReceivedStatisticsFindDTO
);
return
mapper
.
selectOrderRentVehicleReceivedStatistics
(
orderReceivedStatisticsFindDTO
);
}
}
public
void
orderRentVehicleReceivedStatistics
(
Date
date
)
{
public
void
orderRentVehicleReceivedStatistics
(
Date
startDate
,
Date
endDate
)
{
DateTime
yesterday
=
DateUtil
.
yesterday
();
List
<
OrderRentVehicleReceivedStatistics
>
orderRentVehicleReceivedStatisticsList
=
new
ArrayList
<>(
18
);
Date
startDate
=
date
==
null
?
DateUtil
.
beginOfDay
(
yesterday
).
toJdkDate
()
:
DateUtil
.
beginOfDay
(
date
);
String
year
=
String
.
valueOf
(
DateTime
.
of
(
startDate
).
getField
(
DateField
.
YEAR
));
Date
endDate
=
date
==
null
?
DateUtil
.
endOfDay
(
yesterday
).
toJdkDate
()
:
DateUtil
.
beginOfDay
(
date
);
String
month
=
String
.
format
(
"%s%d"
,
year
,
DateTime
.
of
(
startDate
).
getField
(
DateField
.
MONTH
));
String
year
=
String
.
valueOf
(
yesterday
.
getField
(
DateField
.
YEAR
));
String
weekOfYear
=
String
.
format
(
"%s%d"
,
year
,
DateTime
.
of
(
startDate
).
getField
(
DateField
.
DAY_OF_YEAR
));
String
month
=
String
.
format
(
"%s%d"
,
year
,
yesterday
.
getField
(
DateField
.
MONTH
));
String
weekOfYear
=
String
.
format
(
"%s%d"
,
year
,
yesterday
.
getField
(
DateField
.
DAY_OF_YEAR
));
List
<
OrderDTO
>
orders
=
baseOrderBiz
.
selectOrdersByTypeAndTime
(
Arrays
.
asList
(
1
),
startDate
,
endDate
);
List
<
OrderDTO
>
orders
=
baseOrderBiz
.
selectOrdersByTypeAndTime
(
Arrays
.
asList
(
1
),
startDate
,
endDate
);
if
(
CollectionUtils
.
isEmpty
(
orders
)){
return
;
}
List
<
Integer
>
orderIds
=
orders
.
stream
().
map
(
OrderDTO:
:
getId
).
collect
(
Collectors
.
toList
());
List
<
OrderAccountDTO
>
orderAccountDTOList
=
orderAccountBiz
.
selectByOrders
(
orderIds
);
Map
<
Integer
,
List
<
OrderAccountDTO
>>
orderAccountMap
=
orderAccountDTOList
.
stream
().
collect
(
Collectors
.
groupingBy
(
OrderAccountDTO:
:
getOrderId
,
Collectors
.
toList
()));
//分公司id- -->下单来源(3)--->支付方式(2) --> >状态(3)-->3 * 3 * 2 =18
//分公司id- -->下单来源(3)--->支付方式(2) --> >状态(3)-->3 * 3 * 2 =18
Map
<
Integer
,
Map
<
Integer
,
Map
<
Integer
,
Map
<
Integer
,
List
<
OrderDTO
>>>>>
ordersMap
=
orders
.
stream
().
peek
(
x
->
{
Map
<
Integer
,
Map
<
Integer
,
Map
<
Integer
,
Map
<
Integer
,
List
<
OrderDTO
>>>>>
ordersMap
=
orders
.
stream
().
peek
(
x
->
{
if
(
x
.
getStatus
()
!=
CANCEL
&&
x
.
getStatus
()
!=
FINISH
)
{
if
(
x
.
getStatus
()
!=
CANCEL
&&
x
.
getStatus
()
!=
FINISH
)
{
...
@@ -57,7 +64,7 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi
...
@@ -57,7 +64,7 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi
}).
peek
(
x
->{
if
(
Objects
.
isNull
(
x
.
getPayWay
())){
x
.
setPayWay
(
PAYWAYTEMP
);}}).
collect
(
Collectors
.
groupingBy
(
OrderDTO:
:
getCompanyId
,
}).
peek
(
x
->{
if
(
Objects
.
isNull
(
x
.
getPayWay
())){
x
.
setPayWay
(
PAYWAYTEMP
);}}).
collect
(
Collectors
.
groupingBy
(
OrderDTO:
:
getCompanyId
,
Collectors
.
groupingBy
(
OrderDTO:
:
getOrderOrigin
,
Collectors
.
groupingBy
(
OrderDTO:
:
getPayWay
,
Collectors
.
groupingBy
(
OrderDTO:
:
getStatus
,
Collectors
.
toList
())))));
Collectors
.
groupingBy
(
OrderDTO:
:
getOrderOrigin
,
Collectors
.
groupingBy
(
OrderDTO:
:
getPayWay
,
Collectors
.
groupingBy
(
OrderDTO:
:
getStatus
,
Collectors
.
toList
())))));
Set
<
Map
.
Entry
<
Integer
,
Map
<
Integer
,
Map
<
Integer
,
Map
<
Integer
,
List
<
OrderDTO
>>>>>>
orderEntries
=
ordersMap
.
entrySet
();
/*
Set<Map.Entry<Integer, Map<Integer, Map<Integer, Map<Integer, List<OrderDTO>>>>>> orderEntries = ordersMap.entrySet();
for (Map.Entry<Integer, Map<Integer, Map<Integer, Map<Integer, List<OrderDTO>>>>> orderEntrie : orderEntries) {
for (Map.Entry<Integer, Map<Integer, Map<Integer, Map<Integer, List<OrderDTO>>>>> orderEntrie : orderEntries) {
//公司id
//公司id
Integer companyKey = orderEntrie.getKey();
Integer companyKey = orderEntrie.getKey();
...
@@ -89,10 +96,11 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi
...
@@ -89,10 +96,11 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi
orderRentVehicleReceivedStatistics.setMonth(month);
orderRentVehicleReceivedStatistics.setMonth(month);
orderRentVehicleReceivedStatistics.setWeekOfYear(weekOfYear);
orderRentVehicleReceivedStatistics.setWeekOfYear(weekOfYear);
orderRentVehicleReceivedStatistics.setTotalQuantity(orderDTOList.size());
orderRentVehicleReceivedStatistics.setTotalQuantity(orderDTOList.size());
/* orderRentVehicleReceivedStatistics.setTotalAmount()
;
BigDecimal totalAmount = BigDecimal.ZERO
;
orderRentVehicleReceivedStatistics.setRealAmount();*/
BigDecimal realAmount = BigDecimal.ZERO;
for (OrderDTO orderDTO : orderDTOList) {
for (OrderDTO orderDTO : orderDTOList) {
Integer orderId = orderDTO.getId();
List<OrderAccountDTO> orderAccountDTOS = orderAccountMap.get(orderId);
//完成单
//完成单
if (FINISH == statusKey) {
if (FINISH == statusKey) {
...
@@ -107,12 +115,20 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi
...
@@ -107,12 +115,20 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi
if (CANCEL == statusKey) {
if (CANCEL == statusKey) {
}
}
totalAmount.add(orderDTO.getRealAmount());
}
}
orderRentVehicleReceivedStatistics.setTotalAmount(totalAmount);
orderRentVehicleReceivedStatistics.setRealAmount(realAmount);
orderRentVehicleReceivedStatisticsList.add(orderRentVehicleReceivedStatistics);
}
}
}
}
}
}
}*/
insertMemberReceivedStatisticsBatch
(
orderRentVehicleReceivedStatisticsList
);
}
}
public
void
insertMemberReceivedStatisticsBatch
(
List
<
OrderRentVehicleReceivedStatistics
>
orderRentVehicleReceivedStatistics
)
{
mapper
.
insertList
(
orderRentVehicleReceivedStatistics
);
}
}
}
}
\ No newline at end of file
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/mapper/OrderRentVehicleReceivedStatisticsMapper.java
View file @
42f7a384
...
@@ -3,6 +3,7 @@ package com.xxfc.platform.order.mapper;
...
@@ -3,6 +3,7 @@ package com.xxfc.platform.order.mapper;
import
com.xxfc.platform.order.entity.OrderRentVehicleReceivedStatistics
;
import
com.xxfc.platform.order.entity.OrderRentVehicleReceivedStatistics
;
import
com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO
;
import
com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO
;
import
tk.mybatis.mapper.common.Mapper
;
import
tk.mybatis.mapper.common.Mapper
;
import
tk.mybatis.mapper.common.special.InsertListMapper
;
import
java.util.List
;
import
java.util.List
;
...
@@ -13,7 +14,7 @@ import java.util.List;
...
@@ -13,7 +14,7 @@ import java.util.List;
* @email 18178966185@163.com
* @email 18178966185@163.com
* @date 2019-11-08 18:03:42
* @date 2019-11-08 18:03:42
*/
*/
public
interface
OrderRentVehicleReceivedStatisticsMapper
extends
Mapper
<
OrderRentVehicleReceivedStatistics
>
{
public
interface
OrderRentVehicleReceivedStatisticsMapper
extends
Mapper
<
OrderRentVehicleReceivedStatistics
>
,
InsertListMapper
<
OrderRentVehicleReceivedStatistics
>
{
List
<
OrderRentVehicleReceivedStatistics
>
selectOrderRentVehicleReceivedStatistics
(
OrderReceivedStatisticsFindDTO
orderReceivedStatisticsFindDTO
);
List
<
OrderRentVehicleReceivedStatistics
>
selectOrderRentVehicleReceivedStatistics
(
OrderReceivedStatisticsFindDTO
orderReceivedStatisticsFindDTO
);
}
}
xx-order/xx-order-server/src/main/resources/mapper/BaseOrderMapper.xml
View file @
42f7a384
...
@@ -357,7 +357,7 @@
...
@@ -357,7 +357,7 @@
select bo.*,omd.memberLevel from (select `id`,`type`,`status`,`order_amount` AS `orderAmount`, `real_amount`AS
select bo.*,omd.memberLevel from (select `id`,`type`,`status`,`order_amount` AS `orderAmount`, `real_amount`AS
`realAmount`,`order_origin` AS `orderOrigin`,
`realAmount`,`order_origin` AS `orderOrigin`,
`pay_way` AS `payWay`,`crt_time`AS `crtTime`
`pay_way` AS `payWay`,`crt_time`AS `crtTime`
from `base_order` where `crt_time` between #{startDate} and #{endDate} and `type` IN
<foreach
collection=
"types"
from `base_order` where `
has_pay`=1 and `
crt_time` between #{startDate} and #{endDate} and `type` IN
<foreach
collection=
"types"
item=
"type"
item=
"type"
open=
"("
close=
")"
open=
"("
close=
")"
separator=
","
>
separator=
","
>
...
...
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