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
771f1841
Commit
771f1841
authored
Nov 21, 2019
by
libin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
租车会员统计
parent
d877326c
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
129 additions
and
92 deletions
+129
-92
OrderReceivedStatisticsBase.java
...fc/platform/order/entity/OrderReceivedStatisticsBase.java
+3
-1
OrderMemberReceivedStatisticsBiz.java
.../platform/order/biz/OrderMemberReceivedStatisticsBiz.java
+125
-91
OrderRentVehicleReceivedStatisticsBiz.java
...form/order/biz/OrderRentVehicleReceivedStatisticsBiz.java
+1
-0
No files found.
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/OrderReceivedStatisticsBase.java
View file @
771f1841
...
@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
...
@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
import
lombok.Data
;
import
lombok.Data
;
import
javax.persistence.*
;
import
javax.persistence.*
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.Date
;
...
@@ -14,7 +15,8 @@ import java.util.Date;
...
@@ -14,7 +15,8 @@ import java.util.Date;
* @data 2019/11/11 15:49
* @data 2019/11/11 15:49
*/
*/
@Data
@Data
public
class
OrderReceivedStatisticsBase
{
public
class
OrderReceivedStatisticsBase
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
/**
*
*
*/
*/
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderMemberReceivedStatisticsBiz.java
View file @
771f1841
...
@@ -12,8 +12,10 @@ import com.xxfc.platform.order.pojo.account.OrderAccountDetail;
...
@@ -12,8 +12,10 @@ import com.xxfc.platform.order.pojo.account.OrderAccountDetail;
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
com.xxfc.platform.order.pojo.order.CompanyAmountBo
;
import
com.xxfc.platform.order.pojo.order.CompanyAmountBo
;
import
lombok.Data
;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.BeanUtils
;
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
;
...
@@ -66,7 +68,7 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
...
@@ -66,7 +68,7 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
//数据处理 状态组合 按支付状态分组 而后按组合状态
//数据处理 状态组合 按支付状态分组 而后按组合状态
Map
<
Boolean
,
Map
<
String
,
Map
<
LevelEnum
,
List
<
OrderDTO
>>>>
stateGroupMap
=
orders
.
stream
().
peek
(
x
->
{
Map
<
Boolean
,
Map
<
String
,
Map
<
LevelEnum
,
List
<
OrderDTO
>>>>
stateGroupMap
=
orders
.
stream
().
peek
(
x
->
{
x
.
setStateGroup
(
String
.
format
(
"%d-%d-%d-%d"
,
StatisticsStatusEnum
.
DEFAULT_COMPANY
,
x
.
setStateGroup
(
String
.
format
(
"%d-%d-%d-%d"
,
StatisticsStatusEnum
.
DEFAULT_COMPANY
,
x
.
getOrderOrigin
(),
x
.
getPayWay
()
==
null
?
StatisticsStatusEnum
.
NO_PAY_WAY
:
x
.
getPayWay
(),
x
.
getOrderOrigin
(),
x
.
getPayWay
()
==
null
?
StatisticsStatusEnum
.
NO_PAY_WAY
:
x
.
getPayWay
(),
x
.
getHasPay
()));
x
.
getHasPay
()));
stisticsActiveState
.
add
(
x
.
getStateGroup
());
stisticsActiveState
.
add
(
x
.
getStateGroup
());
})
})
...
@@ -77,7 +79,7 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
...
@@ -77,7 +79,7 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
//账目数据处理 状态组合
//账目数据处理 状态组合
Map
<
String
,
Map
<
LevelEnum
,
List
<
OrderAccountBo
>>>
orderAccountMap
=
orderAccountBoList
.
stream
().
peek
(
x
->
{
Map
<
String
,
Map
<
LevelEnum
,
List
<
OrderAccountBo
>>>
orderAccountMap
=
orderAccountBoList
.
stream
().
peek
(
x
->
{
x
.
setStateGroup
(
String
.
format
(
"%d-%d-%d-%d"
,
StatisticsStatusEnum
.
DEFAULT_COMPANY
,
x
.
getOrderOrigin
(),
x
.
setStateGroup
(
String
.
format
(
"%d-%d-%d-%d"
,
StatisticsStatusEnum
.
DEFAULT_COMPANY
,
x
.
getOrderOrigin
(),
x
.
getPayWay
()
==
null
?
StatisticsStatusEnum
.
NO_PAY_WAY
:
x
.
getPayWay
(),
x
.
getPayWay
()
==
null
?
StatisticsStatusEnum
.
NO_PAY_WAY
:
x
.
getPayWay
(),
x
.
getHasPay
()));
x
.
getHasPay
()));
}).
collect
(
Collectors
.
groupingBy
(
OrderAccountBo:
:
getStateGroup
,
Collectors
.
groupingBy
(
OrderAccountBo:
:
getLevelEnum
,
Collectors
.
toList
())));
}).
collect
(
Collectors
.
groupingBy
(
OrderAccountBo:
:
getStateGroup
,
Collectors
.
groupingBy
(
OrderAccountBo:
:
getLevelEnum
,
Collectors
.
toList
())));
...
@@ -88,77 +90,31 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
...
@@ -88,77 +90,31 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
//状态key
//状态key
String
orderKey
=
orderEntry
.
getKey
();
String
orderKey
=
orderEntry
.
getKey
();
Map
<
LevelEnum
,
List
<
OrderAccountBo
>>
orderMemberLevelMap
=
orderEntry
.
getValue
();
Map
<
LevelEnum
,
List
<
OrderAccountBo
>>
orderMemberLevelMap
=
orderEntry
.
getValue
();
BigDecimal
generaTotalAmount
=
BigDecimal
.
ZERO
;
Set
<
Map
.
Entry
<
LevelEnum
,
List
<
OrderAccountBo
>>>
ordermemberLevelentries
=
orderMemberLevelMap
.
entrySet
();
BigDecimal
generalTotalRefundAmount
=
BigDecimal
.
ZERO
;
MemberLevelStatistics
memberLevelStatistics
=
new
MemberLevelStatistics
();
BigDecimal
goldTotalAmount
=
BigDecimal
.
ZERO
;
//遍历
BigDecimal
goldTotalRefundAmount
=
BigDecimal
.
ZERO
;
for
(
Map
.
Entry
<
LevelEnum
,
List
<
OrderAccountBo
>>
orderMemberLevelEntry
:
ordermemberLevelentries
)
{
BigDecimal
diamondTotalAmount
=
BigDecimal
.
ZERO
;
Integer
totalQuantity
=
stateGroupMap
.
get
(
Boolean
.
TRUE
).
get
(
orderKey
)
==
null
?
0
:
stateGroupMap
.
get
(
Boolean
.
TRUE
).
get
(
orderKey
).
size
();
BigDecimal
diamondTotalRefundAmount
=
BigDecimal
.
ZERO
;
wrapMemberLevelStatistics
(
orderMemberLevelEntry
.
getKey
(),
orderMemberLevelEntry
.
getValue
(),
totalQuantity
,
memberLevelStatistics
);
//普通
List
<
OrderAccountBo
>
generalOrderAccountBos
=
orderMemberLevelMap
.
get
(
LevelEnum
.
GENERAL
);
if
(
CollectionUtils
.
isNotEmpty
(
generalOrderAccountBos
))
{
for
(
OrderAccountBo
orderAccountBo
:
generalOrderAccountBos
)
{
OrderAccountDetail
accountDetailEntity
=
orderAccountBo
.
getAccountDetailEntity
();
if
(
orderAccountBo
.
getAccountType
()
==
PAY_ORDER
)
{
generaTotalAmount
.
add
(
accountDetailEntity
.
getOrderAmount
()).
add
(
accountDetailEntity
.
getDepositAmount
());
}
else
{
generalTotalRefundAmount
.
add
(
accountDetailEntity
.
getOrderAmount
()).
add
(
accountDetailEntity
.
getDepositAmount
());
}
}
}
//黄金
List
<
OrderAccountBo
>
goldOrderAccountBos
=
orderMemberLevelMap
.
get
(
LevelEnum
.
GOLD
);
if
(
CollectionUtils
.
isNotEmpty
(
goldOrderAccountBos
))
{
for
(
OrderAccountBo
orderAccountBo
:
goldOrderAccountBos
)
{
OrderAccountDetail
accountDetailEntity
=
orderAccountBo
.
getAccountDetailEntity
();
if
(
orderAccountBo
.
getAccountType
()
==
PAY_ORDER
)
{
goldTotalAmount
.
add
(
accountDetailEntity
.
getOrderAmount
()).
add
(
accountDetailEntity
.
getDepositAmount
());
}
else
{
goldTotalRefundAmount
.
add
(
accountDetailEntity
.
getOrderAmount
()).
add
(
accountDetailEntity
.
getDepositAmount
());
}
}
}
//钻石
List
<
OrderAccountBo
>
diamondOrderAccountBos
=
orderMemberLevelMap
.
get
(
LevelEnum
.
DIAMOND
);
if
(
CollectionUtils
.
isNotEmpty
(
diamondOrderAccountBos
))
{
for
(
OrderAccountBo
orderAccountBo
:
diamondOrderAccountBos
)
{
OrderAccountDetail
accountDetailEntity
=
orderAccountBo
.
getAccountDetailEntity
();
if
(
orderAccountBo
.
getAccountType
()
==
PAY_ORDER
)
{
diamondTotalAmount
.
add
(
accountDetailEntity
.
getOrderAmount
()).
add
(
accountDetailEntity
.
getDepositAmount
());
}
else
{
diamondTotalRefundAmount
.
add
(
accountDetailEntity
.
getOrderAmount
()).
add
(
accountDetailEntity
.
getDepositAmount
());
}
}
}
}
if
(
stisticsActiveState
.
contains
(
orderKey
))
{
if
(
stisticsActiveState
.
contains
(
orderKey
))
{
//创建会员统计对象
OrderMemberReceivedStatistics
orderMemberReceivedStatistics
=
StatisticsStatusEnum
.
wrapStatisticsObject
(
startDate
,
orderKey
,
new
OrderMemberReceivedStatistics
());
OrderMemberReceivedStatistics
orderMemberReceivedStatistics
=
StatisticsStatusEnum
.
wrapStatisticsObject
(
startDate
,
orderKey
,
new
OrderMemberReceivedStatistics
());
orderMemberReceivedStatistics
.
setToalCommonAmmount
(
generaTotalAmount
.
subtract
(
generalTotalRefundAmount
));
BeanUtils
.
copyProperties
(
memberLevelStatistics
,
orderMemberReceivedStatistics
);
Integer
totalcommonQuantity
=
stateGroupMap
.
get
(
Boolean
.
TRUE
).
get
(
LevelEnum
.
GENERAL
)
==
null
?
0
:
stateGroupMap
.
get
(
Boolean
.
TRUE
).
get
(
LevelEnum
.
GENERAL
).
size
();
orderMemberReceivedStatistics
.
setTotalCommonQuantity
(
totalcommonQuantity
);
orderMemberReceivedStatistics
.
setTotalGoldAmount
(
goldTotalAmount
.
subtract
(
goldTotalRefundAmount
));
Integer
totalGoldQuantity
=
stateGroupMap
.
get
(
Boolean
.
TRUE
).
get
(
LevelEnum
.
GOLD
)
==
null
?
0
:
stateGroupMap
.
get
(
Boolean
.
TRUE
).
get
(
LevelEnum
.
GOLD
).
size
();
orderMemberReceivedStatistics
.
setTotalGoldQuantity
(
totalGoldQuantity
);
orderMemberReceivedStatistics
.
setTotalDiamondAmmount
(
diamondTotalAmount
.
subtract
(
diamondTotalRefundAmount
));
Integer
totalDiamondQuantity
=
stateGroupMap
.
get
(
Boolean
.
TRUE
).
get
(
LevelEnum
.
DIAMOND
)
==
null
?
0
:
stateGroupMap
.
get
(
Boolean
.
TRUE
).
get
(
LevelEnum
.
DIAMOND
).
size
();
orderMemberReceivedStatistics
.
setTotalDiamondQuantity
(
totalDiamondQuantity
);
orderMemberReceivedStatisticsList
.
add
(
orderMemberReceivedStatistics
);
orderMemberReceivedStatisticsList
.
add
(
orderMemberReceivedStatistics
);
}
else
{
}
else
{
BigDecimal
totalAmount
=
generaTotalAmount
.
add
(
generaTotalAmount
).
add
(
goldTotalAmount
).
add
(
diamondTotalAmount
).
subtract
(
generalTotalRefundAmount
).
subtract
(
goldTotalRefundAmount
).
subtract
(
diamondTotalRefundAmount
);
Integer
compnayId
=
StatisticsStatusEnum
.
getCompnayId
(
orderKey
);
Integer
compnayId
=
StatisticsStatusEnum
.
getCompnayId
(
orderKey
);
CompanyAmountBo
companyAmountBo
=
CompanyAmountBo
.
builder
().
companyId
(
compnayId
).
amount
(
totalAmount
).
build
();
CompanyAmountBo
companyAmountBo
=
CompanyAmountBo
.
builder
().
companyId
(
compnayId
).
amount
(
memberLevelStatistics
.
getTotalAmount
()
).
build
();
companyAmoutList
.
add
(
companyAmountBo
);
companyAmoutList
.
add
(
companyAmountBo
);
}
}
}
}
//无状态组合统计对象生成
Map
<
Integer
,
BigDecimal
>
companyAmountMap
=
companyAmoutList
.
stream
().
collect
(
Collectors
.
groupingBy
(
CompanyAmountBo:
:
getCompanyId
,
Map
<
Integer
,
BigDecimal
>
companyAmountMap
=
companyAmoutList
.
stream
().
collect
(
Collectors
.
groupingBy
(
CompanyAmountBo:
:
getCompanyId
,
CollectorsUtil
.
summingBigDecimal
(
CompanyAmountBo:
:
getAmount
)));
CollectorsUtil
.
summingBigDecimal
(
CompanyAmountBo:
:
getAmount
)));
Set
<
Map
.
Entry
<
Integer
,
BigDecimal
>>
companyAmountSet
=
companyAmountMap
.
entrySet
();
Set
<
Map
.
Entry
<
Integer
,
BigDecimal
>>
companyAmountSet
=
companyAmountMap
.
entrySet
();
for
(
Map
.
Entry
<
Integer
,
BigDecimal
>
companyAmountEntry
:
companyAmountSet
)
{
for
(
Map
.
Entry
<
Integer
,
BigDecimal
>
companyAmountEntry
:
companyAmountSet
)
{
String
stateGrp
=
String
.
format
(
"%d-%d-%d-%d"
,
companyAmountEntry
.
getKey
(),
StatisticsStatusEnum
.
NO_ORDER_ORIGN
,
StatisticsStatusEnum
.
NO_PAY_WAY
,
StatisticsStatusEnum
.
NO_ORDER_STATE
);
String
stateGrp
=
String
.
format
(
"%d-%d-%d-%d"
,
companyAmountEntry
.
getKey
(),
StatisticsStatusEnum
.
NO_ORDER_ORIGN
,
StatisticsStatusEnum
.
NO_PAY_WAY
,
StatisticsStatusEnum
.
NO_ORDER_STATE
);
OrderMemberReceivedStatistics
orderMemberReceivedStatistics
=
StatisticsStatusEnum
.
wrapStatisticsObject
(
startDate
,
stateGrp
,
new
OrderMemberReceivedStatistics
());
OrderMemberReceivedStatistics
orderMemberReceivedStatistics
=
StatisticsStatusEnum
.
wrapStatisticsObject
(
startDate
,
stateGrp
,
new
OrderMemberReceivedStatistics
());
orderMemberReceivedStatistics
.
setTotalAmount
(
companyAmountEntry
.
getValue
());
orderMemberReceivedStatistics
.
setTotalAmount
(
companyAmountEntry
.
getValue
());
orderMemberReceivedStatisticsList
.
add
(
orderMemberReceivedStatistics
);
orderMemberReceivedStatisticsList
.
add
(
orderMemberReceivedStatistics
);
...
@@ -174,6 +130,42 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
...
@@ -174,6 +130,42 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
insertMemberReceivedStatisticsBatch
(
orderMemberReceivedStatisticsList
);
insertMemberReceivedStatisticsBatch
(
orderMemberReceivedStatisticsList
);
}
}
/**
* memberLevelStatistics 对象包装
*
* @param levelEnum 会员等级
* @param orderAccountBos 账目对象
* @param totalQuantity 对应等级的单量
* @param memberLevelStatistics
* @return
*/
private
MemberLevelStatistics
wrapMemberLevelStatistics
(
LevelEnum
levelEnum
,
List
<
OrderAccountBo
>
orderAccountBos
,
Integer
totalQuantity
,
MemberLevelStatistics
memberLevelStatistics
)
{
BigDecimal
realAmount
=
getRealAmount
(
orderAccountBos
);
return
wrapMemberLevelStatistics
(
levelEnum
,
realAmount
,
totalQuantity
,
memberLevelStatistics
);
}
/**
* 获取收入
*
* @param orderAccountBos
* @return
*/
private
BigDecimal
getRealAmount
(
List
<
OrderAccountBo
>
orderAccountBos
)
{
BigDecimal
totalAmount
=
BigDecimal
.
ZERO
;
BigDecimal
refundAmount
=
BigDecimal
.
ZERO
;
if
(
CollectionUtils
.
isEmpty
(
orderAccountBos
))
{
return
BigDecimal
.
ZERO
;
}
for
(
OrderAccountBo
orderAccountBo
:
orderAccountBos
)
{
OrderAccountDetail
accountDetailEntity
=
orderAccountBo
.
getAccountDetailEntity
();
if
(
orderAccountBo
.
getAccountType
()
==
PAY_ORDER
)
{
totalAmount
.
add
(
accountDetailEntity
.
getOrderAmount
()).
add
(
accountDetailEntity
.
getDepositAmount
());
}
else
{
refundAmount
.
add
(
accountDetailEntity
.
getOrderAmount
()).
add
(
accountDetailEntity
.
getDepositAmount
());
}
}
return
totalAmount
.
subtract
(
refundAmount
);
}
/**
/**
* @param startDate 时间
* @param startDate 时间
...
@@ -187,47 +179,61 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
...
@@ -187,47 +179,61 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
}
}
Set
<
Map
.
Entry
<
String
,
Map
<
LevelEnum
,
List
<
OrderDTO
>>>>
noPayOrderSet
=
noPayOrdersMap
.
entrySet
();
Set
<
Map
.
Entry
<
String
,
Map
<
LevelEnum
,
List
<
OrderDTO
>>>>
noPayOrderSet
=
noPayOrdersMap
.
entrySet
();
for
(
Map
.
Entry
<
String
,
Map
<
LevelEnum
,
List
<
OrderDTO
>>>
noPayOrderEntry
:
noPayOrderSet
)
{
for
(
Map
.
Entry
<
String
,
Map
<
LevelEnum
,
List
<
OrderDTO
>>>
noPayOrderEntry
:
noPayOrderSet
)
{
BigDecimal
generalTotalAmount
=
BigDecimal
.
ZERO
;
MemberLevelStatistics
memberLevelStatistics
=
new
MemberLevelStatistics
();
Integer
generalTotalQuantity
=
0
;
BigDecimal
goldTotalAmount
=
BigDecimal
.
ZERO
;
Integer
goldTotalQuantity
=
0
;
BigDecimal
diamondTotalAmount
=
BigDecimal
.
ZERO
;
Integer
diamondTotalQuantity
=
0
;
//获取状态
//获取状态
String
noPayOrderStateGroup
=
noPayOrderEntry
.
getKey
();
String
noPayOrderStateGroup
=
noPayOrderEntry
.
getKey
();
Map
<
LevelEnum
,
List
<
OrderDTO
>>
noPayOrderEntryValue
=
noPayOrderEntry
.
getValue
();
Map
<
LevelEnum
,
List
<
OrderDTO
>>
noPayOrderEntryValue
=
noPayOrderEntry
.
getValue
();
OrderMemberReceivedStatistics
orderMemberReceivedStatistics
=
StatisticsStatusEnum
.
wrapStatisticsObject
(
startDate
,
noPayOrderStateGroup
,
new
OrderMemberReceivedStatistics
());
OrderMemberReceivedStatistics
orderMemberReceivedStatistics
=
StatisticsStatusEnum
.
wrapStatisticsObject
(
startDate
,
noPayOrderStateGroup
,
new
OrderMemberReceivedStatistics
());
List
<
OrderDTO
>
generalOrderDTOList
=
noPayOrderEntryValue
.
get
(
LevelEnum
.
GENERAL
);
Set
<
Map
.
Entry
<
LevelEnum
,
List
<
OrderDTO
>>>
noPayOrderEntries
=
noPayOrderEntryValue
.
entrySet
();
if
(
CollectionUtils
.
isNotEmpty
(
generalOrderDTOList
))
{
for
(
Map
.
Entry
<
LevelEnum
,
List
<
OrderDTO
>>
orderEntry
:
noPayOrderEntries
)
{
generalTotalAmount
=
generalOrderDTOList
.
stream
().
map
(
OrderDTO:
:
getRealAmount
).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
));
wrapOrderMemberReceivedStatistics
(
orderEntry
.
getValue
(),
orderEntry
.
getKey
(),
memberLevelStatistics
);
generalTotalQuantity
=
generalOrderDTOList
.
size
();
}
List
<
OrderDTO
>
goldOrderDTOList
=
noPayOrderEntryValue
.
get
(
LevelEnum
.
GOLD
);
if
(
CollectionUtils
.
isNotEmpty
(
goldOrderDTOList
))
{
goldTotalAmount
=
goldOrderDTOList
.
stream
().
map
(
OrderDTO:
:
getRealAmount
).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
));
goldTotalQuantity
=
goldOrderDTOList
.
size
();
}
}
BeanUtils
.
copyProperties
(
memberLevelStatistics
,
orderMemberReceivedStatistics
);
List
<
OrderDTO
>
diamondOrderDTOList
=
noPayOrderEntryValue
.
get
(
LevelEnum
.
DIAMOND
);
if
(
CollectionUtils
.
isNotEmpty
(
diamondOrderDTOList
))
{
diamondTotalAmount
=
diamondOrderDTOList
.
stream
().
map
(
OrderDTO:
:
getRealAmount
).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
));
diamondTotalQuantity
=
diamondOrderDTOList
.
size
();
}
orderMemberReceivedStatistics
.
setToalCommonAmmount
(
generalTotalAmount
);
orderMemberReceivedStatistics
.
setTotalCommonQuantity
(
generalTotalQuantity
);
orderMemberReceivedStatistics
.
setTotalGoldAmount
(
goldTotalAmount
);
orderMemberReceivedStatistics
.
setTotalGoldQuantity
(
goldTotalQuantity
);
orderMemberReceivedStatistics
.
setTotalDiamondAmmount
(
diamondTotalAmount
);
orderMemberReceivedStatistics
.
setTotalDiamondQuantity
(
diamondTotalQuantity
);
orderMemberReceivedStatistics
.
setTotalAmount
(
generalTotalAmount
.
add
(
goldTotalAmount
).
add
(
diamondTotalAmount
));
orderMemberReceivedStatistics
.
setTotalQuantity
(
generalTotalQuantity
+
goldTotalQuantity
+
diamondTotalQuantity
);
orderMemberReceivedStatisticsList
.
add
(
orderMemberReceivedStatistics
);
orderMemberReceivedStatisticsList
.
add
(
orderMemberReceivedStatistics
);
}
}
return
orderMemberReceivedStatisticsList
;
return
orderMemberReceivedStatisticsList
;
}
}
/**
* @param orders 某种状态下的会员单
* @param levelEnum 会员等级
* @param memberLevelStatistics 会员统计对象
* @return
*/
private
MemberLevelStatistics
wrapOrderMemberReceivedStatistics
(
List
<
OrderDTO
>
orders
,
LevelEnum
levelEnum
,
MemberLevelStatistics
memberLevelStatistics
)
{
orders
=
CollectionUtils
.
isEmpty
(
orders
)
?
Collections
.
EMPTY_LIST
:
orders
;
BigDecimal
totalAmount
=
orders
.
stream
().
map
(
OrderDTO:
:
getRealAmount
).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
));
return
wrapMemberLevelStatistics
(
levelEnum
,
totalAmount
,
orders
.
size
(),
memberLevelStatistics
);
}
/**
* memberLevelStatistics 对象包装
* @param levelEnum
* @param amount
* @param quantity
* @param memberLevelStatistics
* @return
*/
private
MemberLevelStatistics
wrapMemberLevelStatistics
(
LevelEnum
levelEnum
,
BigDecimal
amount
,
Integer
quantity
,
MemberLevelStatistics
memberLevelStatistics
){
switch
(
levelEnum
)
{
case
GENERAL:
memberLevelStatistics
.
setToalCommonAmmount
(
amount
);
memberLevelStatistics
.
setTotalCommonQuantity
(
quantity
);
break
;
case
GOLD:
memberLevelStatistics
.
setTotalGoldAmount
(
amount
);
memberLevelStatistics
.
setTotalGoldQuantity
(
quantity
);
break
;
case
DIAMOND:
memberLevelStatistics
.
setTotalDiamondAmmount
(
amount
);
memberLevelStatistics
.
setTotalDiamondQuantity
(
quantity
);
break
;
default
:
break
;
}
return
memberLevelStatistics
;
}
/**
/**
* 创建剩余状态数据
* 创建剩余状态数据
*
*
...
@@ -245,7 +251,7 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
...
@@ -245,7 +251,7 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
//统计对象的生成
//统计对象的生成
otherStatisticsStateGroup
.
stream
().
peek
(
stateGroup
->
{
otherStatisticsStateGroup
.
stream
().
peek
(
stateGroup
->
{
OrderMemberReceivedStatistics
orderMemberReceivedStatisticsClone
=
StatisticsStatusEnum
.
wrapStatisticsObject
(
startDate
,
stateGroup
,
OrderMemberReceivedStatistics
orderMemberReceivedStatisticsClone
=
StatisticsStatusEnum
.
wrapStatisticsObject
(
startDate
,
stateGroup
,
ObjectUtil
.
clone
ByStream
(
orderMemberReceivedStatistics
));
ObjectUtil
.
clone
(
orderMemberReceivedStatistics
));
orderMemberReceivedStatisticsList
.
add
(
orderMemberReceivedStatisticsClone
);
orderMemberReceivedStatisticsList
.
add
(
orderMemberReceivedStatisticsClone
);
}).
count
();
}).
count
();
return
orderMemberReceivedStatisticsList
;
return
orderMemberReceivedStatisticsList
;
...
@@ -259,6 +265,7 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
...
@@ -259,6 +265,7 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
private
OrderMemberReceivedStatistics
createDefaultOrderMemberReceivedStatistics
()
{
private
OrderMemberReceivedStatistics
createDefaultOrderMemberReceivedStatistics
()
{
OrderMemberReceivedStatistics
orderMemberReceivedStatistics
=
new
OrderMemberReceivedStatistics
();
OrderMemberReceivedStatistics
orderMemberReceivedStatistics
=
new
OrderMemberReceivedStatistics
();
orderMemberReceivedStatistics
.
setTotalAmount
(
BigDecimal
.
ZERO
);
orderMemberReceivedStatistics
.
setTotalAmount
(
BigDecimal
.
ZERO
);
orderMemberReceivedStatistics
.
setTotalQuantity
(
0
);
orderMemberReceivedStatistics
.
setTotalCommonQuantity
(
0
);
orderMemberReceivedStatistics
.
setTotalCommonQuantity
(
0
);
orderMemberReceivedStatistics
.
setToalCommonAmmount
(
BigDecimal
.
ZERO
);
orderMemberReceivedStatistics
.
setToalCommonAmmount
(
BigDecimal
.
ZERO
);
orderMemberReceivedStatistics
.
setTotalGoldQuantity
(
0
);
orderMemberReceivedStatistics
.
setTotalGoldQuantity
(
0
);
...
@@ -276,4 +283,31 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
...
@@ -276,4 +283,31 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
public
void
insertMemberReceivedStatisticsBatch
(
List
<
OrderMemberReceivedStatistics
>
orderMemberReceivedStatistics
)
{
public
void
insertMemberReceivedStatisticsBatch
(
List
<
OrderMemberReceivedStatistics
>
orderMemberReceivedStatistics
)
{
mapper
.
insertList
(
orderMemberReceivedStatistics
);
mapper
.
insertList
(
orderMemberReceivedStatistics
);
}
}
@Data
private
class
MemberLevelStatistics
{
private
BigDecimal
toalCommonAmmount
=
BigDecimal
.
ZERO
;
private
Integer
totalCommonQuantity
=
new
Integer
(
0
);
private
BigDecimal
totalGoldAmount
=
BigDecimal
.
ZERO
;
private
Integer
totalGoldQuantity
=
new
Integer
(
0
);
private
BigDecimal
totalDiamondAmmount
=
BigDecimal
.
ZERO
;
private
Integer
totalDiamondQuantity
=
new
Integer
(
0
);
private
BigDecimal
totalAmount
;
private
Integer
totalQuantity
;
public
BigDecimal
getTotalAmount
()
{
return
toalCommonAmmount
.
add
(
totalGoldAmount
).
add
(
totalDiamondAmmount
);
}
public
Integer
getTotalQuantity
()
{
return
totalCommonQuantity
+
totalGoldQuantity
+
totalDiamondQuantity
;
}
}
}
}
\ No newline at end of file
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderRentVehicleReceivedStatisticsBiz.java
View file @
771f1841
...
@@ -114,6 +114,7 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi
...
@@ -114,6 +114,7 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi
}
}
}
}
//无状态组合统计对象生成
Map
<
Integer
,
BigDecimal
>
companyAmountMap
=
companyAmoutList
.
stream
().
collect
(
Collectors
.
groupingBy
(
CompanyAmountBo:
:
getCompanyId
,
Map
<
Integer
,
BigDecimal
>
companyAmountMap
=
companyAmoutList
.
stream
().
collect
(
Collectors
.
groupingBy
(
CompanyAmountBo:
:
getCompanyId
,
CollectorsUtil
.
summingBigDecimal
(
CompanyAmountBo:
:
getAmount
)));
CollectorsUtil
.
summingBigDecimal
(
CompanyAmountBo:
:
getAmount
)));
Set
<
Map
.
Entry
<
Integer
,
BigDecimal
>>
companyAmountSet
=
companyAmountMap
.
entrySet
();
Set
<
Map
.
Entry
<
Integer
,
BigDecimal
>>
companyAmountSet
=
companyAmountMap
.
entrySet
();
...
...
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