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
853b658e
Commit
853b658e
authored
Nov 20, 2019
by
zuoyh
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/order_received_statistics' into order_received_statistics
parents
4097aee6
009eff2f
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
377 additions
and
118 deletions
+377
-118
CollectorsUtil.java
...m/github/wxiaoqi/security/common/util/CollectorsUtil.java
+95
-0
ToBigDecimalFunction.java
...ub/wxiaoqi/security/common/util/ToBigDecimalFunction.java
+8
-0
StatisticsStatusEnum.java
...latform/order/contant/enumerate/StatisticsStatusEnum.java
+10
-4
OrderMemberReceivedStatistics.java
.../platform/order/entity/OrderMemberReceivedStatistics.java
+6
-6
OrderReceivedStatistics.java
...m/xxfc/platform/order/entity/OrderReceivedStatistics.java
+4
-4
OrderReceivedStatisticsBase.java
...fc/platform/order/entity/OrderReceivedStatisticsBase.java
+2
-5
OrderRentVehicleReceivedStatistics.java
...form/order/entity/OrderRentVehicleReceivedStatistics.java
+0
-1
OrderTourReceivedStatistics.java
...fc/platform/order/entity/OrderTourReceivedStatistics.java
+0
-5
OrderDTO.java
.../main/java/com/xxfc/platform/order/pojo/dto/OrderDTO.java
+12
-12
CompanyAmountBo.java
...a/com/xxfc/platform/order/pojo/order/CompanyAmountBo.java
+23
-0
OrderMemberReceivedStatisticsBiz.java
.../platform/order/biz/OrderMemberReceivedStatisticsBiz.java
+162
-57
OrderRentVehicleReceivedStatisticsBiz.java
...form/order/biz/OrderRentVehicleReceivedStatisticsBiz.java
+36
-14
OrderMemberReceivedStatisticsMapper.java
...orm/order/mapper/OrderMemberReceivedStatisticsMapper.java
+4
-1
OrderRentVehicleReceivedStatisticsMapper.java
...rder/mapper/OrderRentVehicleReceivedStatisticsMapper.java
+1
-1
OrderAccountMapper.xml
...r-server/src/main/resources/mapper/OrderAccountMapper.xml
+4
-2
OrderMemberReceivedStatisticsMapper.xml
.../resources/mapper/OrderMemberReceivedStatisticsMapper.xml
+4
-1
OrderRentVehicleReceivedStatisticsMapper.xml
...urces/mapper/OrderRentVehicleReceivedStatisticsMapper.xml
+1
-2
OrderTourReceivedStatisticsMapper.xml
...in/resources/mapper/OrderTourReceivedStatisticsMapper.xml
+1
-1
ServiceTest.java
xx-order/xx-order-server/src/test/java/ServiceTest.java
+4
-2
No files found.
ace-common/src/main/java/com/github/wxiaoqi/security/common/util/CollectorsUtil.java
0 → 100644
View file @
853b658e
package
com
.
github
.
wxiaoqi
.
security
.
common
.
util
;
import
java.math.BigDecimal
;
import
java.util.Collections
;
import
java.util.Set
;
import
java.util.function.BiConsumer
;
import
java.util.function.BinaryOperator
;
import
java.util.function.Function
;
import
java.util.function.Supplier
;
import
java.util.stream.Collector
;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/11/20 19:59
*/
public
class
CollectorsUtil
{
static
final
Set
<
Collector
.
Characteristics
>
CH_NOID
=
Collections
.
emptySet
();
private
CollectorsUtil
()
{
}
@SuppressWarnings
(
"unchecked"
)
private
static
<
I
,
R
>
Function
<
I
,
R
>
castingIdentity
()
{
return
i
->
(
R
)
i
;
}
/**
* Simple implementation class for {@code Collector}.
*
* @param <T>
* the type of elements to be collected
* @param <R>
* the type of the result
*/
static
class
CollectorImpl
<
T
,
A
,
R
>
implements
Collector
<
T
,
A
,
R
>
{
private
final
Supplier
<
A
>
supplier
;
private
final
BiConsumer
<
A
,
T
>
accumulator
;
private
final
BinaryOperator
<
A
>
combiner
;
private
final
Function
<
A
,
R
>
finisher
;
private
final
Set
<
Characteristics
>
characteristics
;
CollectorImpl
(
Supplier
<
A
>
supplier
,
BiConsumer
<
A
,
T
>
accumulator
,
BinaryOperator
<
A
>
combiner
,
Function
<
A
,
R
>
finisher
,
Set
<
Characteristics
>
characteristics
)
{
this
.
supplier
=
supplier
;
this
.
accumulator
=
accumulator
;
this
.
combiner
=
combiner
;
this
.
finisher
=
finisher
;
this
.
characteristics
=
characteristics
;
}
CollectorImpl
(
Supplier
<
A
>
supplier
,
BiConsumer
<
A
,
T
>
accumulator
,
BinaryOperator
<
A
>
combiner
,
Set
<
Characteristics
>
characteristics
)
{
this
(
supplier
,
accumulator
,
combiner
,
castingIdentity
(),
characteristics
);
}
@Override
public
BiConsumer
<
A
,
T
>
accumulator
()
{
return
accumulator
;
}
@Override
public
Supplier
<
A
>
supplier
()
{
return
supplier
;
}
@Override
public
BinaryOperator
<
A
>
combiner
()
{
return
combiner
;
}
@Override
public
Function
<
A
,
R
>
finisher
()
{
return
finisher
;
}
@Override
public
Set
<
Characteristics
>
characteristics
()
{
return
characteristics
;
}
}
public
static
<
T
>
Collector
<
T
,
?,
BigDecimal
>
summingBigDecimal
(
ToBigDecimalFunction
<?
super
T
>
mapper
)
{
return
new
CollectorImpl
<>(()
->
new
BigDecimal
[
1
],
(
a
,
t
)
->
{
if
(
a
[
0
]
==
null
)
{
a
[
0
]
=
BigDecimal
.
ZERO
;
}
a
[
0
]
=
a
[
0
].
add
(
mapper
.
applyAsBigDecimal
(
t
));
},
(
a
,
b
)
->
{
a
[
0
]
=
a
[
0
].
add
(
b
[
0
]);
return
a
;
},
a
->
a
[
0
],
CH_NOID
);
}
}
ace-common/src/main/java/com/github/wxiaoqi/security/common/util/ToBigDecimalFunction.java
0 → 100644
View file @
853b658e
package
com
.
github
.
wxiaoqi
.
security
.
common
.
util
;
import
java.math.BigDecimal
;
@FunctionalInterface
public
interface
ToBigDecimalFunction
<
T
>
{
BigDecimal
applyAsBigDecimal
(
T
value
);
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/contant/enumerate/StatisticsStatusEnum.java
View file @
853b658e
...
...
@@ -23,7 +23,9 @@ public enum StatisticsStatusEnum {
public
static
final
int
ORDER_RENT_VEHICLE_TYPE
=
1
;
public
static
final
int
ORDER_TOUR_TYPE
=
2
;
public
static
final
String
UN_PAY_STATE
=
"0"
;
public
static
final
int
NO_PAY_WAY
=
99
;
public
static
final
int
NO_PAY_WAY
=
0
;
public
static
final
int
NO_ORDER_ORIGN
=
99
;
public
static
final
int
NO_ORDER_STATE
=
99
;
public
static
final
Integer
DEFAULT_SQL_SIZE
=
1000
;
public
static
List
<
String
>
orderStates
;
...
...
@@ -35,8 +37,8 @@ public enum StatisticsStatusEnum {
orderStates
=
Lists
.
newArrayList
(
"0"
,
"1"
);
// 1 app 2 小程序 3 其他
orderOrigins
=
Lists
.
newArrayList
(
"1"
,
"2"
,
"3"
);
// 1 微信 2 支付宝
orderPayWays
=
Lists
.
newArrayList
(
"1"
,
"2"
);
// 1 微信 2 支付宝
0不需要支付(使用了优惠券之类的)或未支付
orderPayWays
=
Lists
.
newArrayList
(
"1"
,
"2"
,
"0"
);
}
public
static
List
<
String
>
statisticsSateGroupWithCompanys
(
List
<
Integer
>
companyIdList
){
...
...
@@ -57,7 +59,7 @@ public enum StatisticsStatusEnum {
for
(
String
orderPayWay
:
orderPayWays
)
{
for
(
String
orderState
:
orderStates
)
{
//订单来源-支付方式-订单状态
orderStatisticsStateGroups
.
add
(
String
.
format
(
"%s-%s-%s"
,
orderOrigin
,
order
State
==
UN_PAY_STATE
?
String
.
valueOf
(
NO_PAY_WAY
):
order
PayWay
,
orderState
));
orderStatisticsStateGroups
.
add
(
String
.
format
(
"%s-%s-%s"
,
orderOrigin
,
orderPayWay
,
orderState
));
}
}
}
...
...
@@ -69,6 +71,10 @@ public enum StatisticsStatusEnum {
return
stateGroupList
;
}
public
static
Integer
getCompnayId
(
String
stateGroup
){
return
Integer
.
valueOf
(
stateGroup
.
split
(
"-"
)[
0
]);
}
public
static
<
T
extends
OrderReceivedStatisticsBase
>
T
wrapStatisticsObject
(
Date
date
,
String
stateGroup
,
T
targetObj
){
DateTime
yesterday
=
DateTime
.
of
(
date
);
String
year
=
String
.
valueOf
(
yesterday
.
getField
(
DateField
.
YEAR
));
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/OrderMemberReceivedStatistics.java
View file @
853b658e
package
com
.
xxfc
.
platform
.
order
.
entity
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
javax.persistence.*
;
import
cn.hutool.core.clone.CloneSupport
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.persistence.Column
;
import
javax.persistence.Table
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
/**
* 会员订单统计
...
...
@@ -22,6 +21,7 @@ import lombok.Data;
public
class
OrderMemberReceivedStatistics
extends
OrderReceivedStatisticsBase
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 普通会员订单总额
*/
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/OrderReceivedStatistics.java
View file @
853b658e
package
com
.
xxfc
.
platform
.
order
.
entity
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
javax.persistence.*
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.persistence.Column
;
import
javax.persistence.Table
;
import
java.io.Serializable
;
/**
* 全部订单统计
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/OrderReceivedStatisticsBase.java
View file @
853b658e
...
...
@@ -3,10 +3,7 @@ package com.xxfc.platform.order.entity;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.persistence.Column
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.Id
;
import
javax.persistence.Transient
;
import
javax.persistence.*
;
import
java.math.BigDecimal
;
import
java.util.Date
;
...
...
@@ -22,7 +19,7 @@ public class OrderReceivedStatisticsBase {
*
*/
@Id
@GeneratedValue
(
generator
=
"JDBC"
)
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
,
generator
=
"JDBC"
)
@ApiModelProperty
(
""
)
protected
Long
id
;
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/OrderRentVehicleReceivedStatistics.java
View file @
853b658e
...
...
@@ -6,7 +6,6 @@ import lombok.Data;
import
javax.persistence.Column
;
import
javax.persistence.Table
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
/**
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/OrderTourReceivedStatistics.java
View file @
853b658e
package
com
.
xxfc
.
platform
.
order
.
entity
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.persistence.Column
;
import
javax.persistence.Table
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
...
...
@@ -22,6 +19,4 @@ public class OrderTourReceivedStatistics extends OrderReceivedStatisticsBase imp
private
static
final
long
serialVersionUID
=
1L
;
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/dto/OrderDTO.java
View file @
853b658e
...
...
@@ -20,22 +20,22 @@ import java.util.Date;
@AllArgsConstructor
@NoArgsConstructor
public
class
OrderDTO
{
pr
ivate
Integer
id
;
pr
ivate
Integer
type
;
pr
ivate
Integer
status
;
pr
ivate
BigDecimal
orderAmount
;
pr
ivate
BigDecimal
realAmount
;
pr
ivate
Integer
orderOrigin
;
pr
ivate
Integer
payWay
;
pr
ivate
Integer
companyId
;
pr
ivate
String
stateGroup
;
pr
ivate
Integer
hasPay
;
pr
otected
Integer
id
;
pr
otected
Integer
type
;
pr
otected
Integer
status
;
pr
otected
BigDecimal
orderAmount
;
pr
otected
BigDecimal
realAmount
;
pr
otected
Integer
orderOrigin
;
pr
otected
Integer
payWay
;
pr
otected
Integer
companyId
;
pr
otected
String
stateGroup
;
pr
otected
Integer
hasPay
;
/**
* 会员相关
*/
pr
ivate
Integer
memberLevel
;
pr
otected
Integer
memberLevel
;
pr
ivate
LevelEnum
levelEnum
;
pr
otected
LevelEnum
levelEnum
;
public
LevelEnum
getLevelEnum
(){
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/order/CompanyAmountBo.java
0 → 100644
View file @
853b658e
package
com
.
xxfc
.
platform
.
order
.
pojo
.
order
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.math.BigDecimal
;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/11/20 19:11
*/
@Data
@Builder
(
toBuilder
=
true
)
@AllArgsConstructor
@NoArgsConstructor
public
class
CompanyAmountBo
{
private
Integer
companyId
;
private
BigDecimal
amount
;
}
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderMemberReceivedStatisticsBiz.java
View file @
853b658e
...
...
@@ -3,12 +3,15 @@ package com.xxfc.platform.order.biz;
import
cn.hutool.core.util.ObjectUtil
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.enumconstant.LevelEnum
;
import
com.g
oogle.common.collect.Lists
;
import
com.g
ithub.wxiaoqi.security.common.util.CollectorsUtil
;
import
com.xxfc.platform.order.contant.enumerate.StatisticsStatusEnum
;
import
com.xxfc.platform.order.entity.OrderMemberReceivedStatistics
;
import
com.xxfc.platform.order.mapper.OrderMemberReceivedStatisticsMapper
;
import
com.xxfc.platform.order.pojo.account.OrderAccountBo
;
import
com.xxfc.platform.order.pojo.account.OrderAccountDetail
;
import
com.xxfc.platform.order.pojo.dto.OrderDTO
;
import
com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO
;
import
com.xxfc.platform.order.pojo.order.CompanyAmountBo
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -31,6 +34,9 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
(
onConstructor
=
@__
(
@Autowired
))
public
class
OrderMemberReceivedStatisticsBiz
extends
BaseBiz
<
OrderMemberReceivedStatisticsMapper
,
OrderMemberReceivedStatistics
>
{
private
final
BaseOrderBiz
baseOrderBiz
;
private
final
OrderAccountBiz
orderAccountBiz
;
private
final
int
PAY_ORDER
=
101
;
/**
* 会员统计查询
...
...
@@ -45,91 +51,189 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
/**
* 会员统计处理
*
* @param startDate
开始时间
* @param endDate 结束时间
* @param startDate 开始时间
* @param endDate
结束时间
*/
public
void
orderMemberReceivedStatistics
(
Date
startDate
,
Date
endDate
)
{
List
<
OrderMemberReceivedStatistics
>
orderMemberReceivedStatisticsList
=
new
ArrayList
<>(
18
);
List
<
String
>
stisticsActiveState
=
new
ArrayList
<>();
//公司的收入与支出 ---》无状态
List
<
CompanyAmountBo
>
companyAmoutList
=
new
ArrayList
<>();
//根据时间范围查询出会员单
List
<
OrderDTO
>
orders
=
baseOrderBiz
.
selectOrdersByTypeAndTime
(
Arrays
.
asList
(
StatisticsStatusEnum
.
ORDER_MEMBER_TYPE
),
startDate
,
endDate
);
//数据处理 把状态组合
Map
<
String
,
Map
<
LevelEnum
,
List
<
OrderDTO
>>>
ordersMap
=
orders
.
stream
().
peek
(
x
->
{
x
.
setStateGroup
(
String
.
format
(
"%d-%d-%d-%d"
,
StatisticsStatusEnum
.
DEFAULT_COMPANY
,
x
.
getOrderOrigin
(),
x
.
getPayWay
()
==
null
?
StatisticsStatusEnum
.
NO_PAY_WAY
:
x
.
getPayWay
(),
x
.
getHasPay
()));
}).
collect
(
Collectors
.
groupingBy
(
OrderDTO:
:
getStateGroup
,
Collectors
.
groupingBy
(
OrderDTO:
:
getLevelEnum
,
Collectors
.
toList
())));
if
(!
ordersMap
.
isEmpty
())
{
Set
<
Map
.
Entry
<
String
,
Map
<
LevelEnum
,
List
<
OrderDTO
>>>>
orderSet
=
ordersMap
.
entrySet
();
for
(
Map
.
Entry
<
String
,
Map
<
LevelEnum
,
List
<
OrderDTO
>>>
orderEntry
:
orderSet
)
{
//获取状态
String
orderStatisticsGroup
=
orderEntry
.
getKey
();
Map
<
LevelEnum
,
List
<
OrderDTO
>>
orderEntryValue
=
orderEntry
.
getValue
();
//创建会员统计对象
OrderMemberReceivedStatistics
orderMemberReceivedStatistics
=
StatisticsStatusEnum
.
wrapStatisticsObject
(
startDate
,
orderStatisticsGroup
,
new
OrderMemberReceivedStatistics
());
//等级金额 和量 的计算
Set
<
Map
.
Entry
<
LevelEnum
,
List
<
OrderDTO
>>>
memberOrdersSet
=
orderEntryValue
.
entrySet
();
for
(
Map
.
Entry
<
LevelEnum
,
List
<
OrderDTO
>>
levelEnumListEntry
:
memberOrdersSet
)
{
orderMemberReceivedStatistics
=
wrapOrderMemberReceivedStatistics
(
levelEnumListEntry
.
getValue
(),
levelEnumListEntry
.
getKey
(),
orderMemberReceivedStatistics
);
}
//总金额
BigDecimal
totalAmount
=
orderMemberReceivedStatistics
.
getToalCommonAmmount
()
.
add
(
orderMemberReceivedStatistics
.
getTotalGoldAmount
())
.
add
(
orderMemberReceivedStatistics
.
getTotalDiamondAmmount
());
//数据处理 状态组合 按支付状态分组 而后按组合状态
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
.
getOrderOrigin
(),
x
.
getPayWay
()
==
null
?
StatisticsStatusEnum
.
NO_PAY_WAY
:
x
.
getPayWay
(),
x
.
getHasPay
()));
stisticsActiveState
.
add
(
x
.
getStateGroup
());
})
.
collect
(
Collectors
.
partitioningBy
(
x
->
Objects
.
nonNull
(
x
.
getPayWay
()),
Collectors
.
groupingBy
(
OrderDTO:
:
getStateGroup
,
Collectors
.
groupingBy
(
OrderDTO:
:
getLevelEnum
,
Collectors
.
toList
()))));
//订单账目信息
List
<
OrderAccountBo
>
orderAccountBoList
=
orderAccountBiz
.
selectByTypeAndDate
(
StatisticsStatusEnum
.
ORDER_MEMBER_TYPE
,
startDate
,
endDate
);
//账目数据处理 状态组合
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
.
getPayWay
()
==
null
?
StatisticsStatusEnum
.
NO_PAY_WAY
:
x
.
getPayWay
(),
x
.
getHasPay
()));
}).
collect
(
Collectors
.
groupingBy
(
OrderAccountBo:
:
getStateGroup
,
Collectors
.
groupingBy
(
OrderAccountBo:
:
getLevelEnum
,
Collectors
.
toList
())));
//总量
Integer
totalQuantity
=
orderMemberReceivedStatistics
.
getTotalCommonQuantity
()
+
orderMemberReceivedStatistics
.
getTotalGoldQuantity
()
+
orderMemberReceivedStatistics
.
getTotalDiamondQuantity
();
orderMemberReceivedStatistics
.
setTotalQuantity
(
totalQuantity
);
orderMemberReceivedStatistics
.
setTotalAmount
(
totalAmount
);
//已经支付单
Set
<
Map
.
Entry
<
String
,
Map
<
LevelEnum
,
List
<
OrderAccountBo
>>>>
ordersSet
=
orderAccountMap
.
entrySet
();
for
(
Map
.
Entry
<
String
,
Map
<
LevelEnum
,
List
<
OrderAccountBo
>>>
orderEntry
:
ordersSet
)
{
//状态key
String
orderKey
=
orderEntry
.
getKey
();
Map
<
LevelEnum
,
List
<
OrderAccountBo
>>
orderMemberLevelMap
=
orderEntry
.
getValue
();
BigDecimal
generaTotalAmount
=
BigDecimal
.
ZERO
;
BigDecimal
generalTotalRefundAmount
=
BigDecimal
.
ZERO
;
BigDecimal
goldTotalAmount
=
BigDecimal
.
ZERO
;
BigDecimal
goldTotalRefundAmount
=
BigDecimal
.
ZERO
;
BigDecimal
diamondTotalAmount
=
BigDecimal
.
ZERO
;
BigDecimal
diamondTotalRefundAmount
=
BigDecimal
.
ZERO
;
//普通
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
))
{
//创建会员统计对象
OrderMemberReceivedStatistics
orderMemberReceivedStatistics
=
StatisticsStatusEnum
.
wrapStatisticsObject
(
startDate
,
orderKey
,
new
OrderMemberReceivedStatistics
());
orderMemberReceivedStatistics
.
setToalCommonAmmount
(
generaTotalAmount
.
subtract
(
generalTotalRefundAmount
));
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
);
}
else
{
BigDecimal
totalAmount
=
generaTotalAmount
.
add
(
generaTotalAmount
).
add
(
goldTotalAmount
).
add
(
diamondTotalAmount
).
subtract
(
generalTotalRefundAmount
).
subtract
(
goldTotalRefundAmount
).
subtract
(
diamondTotalRefundAmount
);
Integer
compnayId
=
StatisticsStatusEnum
.
getCompnayId
(
orderKey
);
CompanyAmountBo
companyAmountBo
=
CompanyAmountBo
.
builder
().
companyId
(
compnayId
).
amount
(
totalAmount
).
build
();
companyAmoutList
.
add
(
companyAmountBo
);
}
}
Map
<
Integer
,
BigDecimal
>
companyAmountMap
=
companyAmoutList
.
stream
().
collect
(
Collectors
.
groupingBy
(
CompanyAmountBo:
:
getCompanyId
,
CollectorsUtil
.
summingBigDecimal
(
CompanyAmountBo:
:
getAmount
)));
Set
<
Map
.
Entry
<
Integer
,
BigDecimal
>>
companyAmountSet
=
companyAmountMap
.
entrySet
();
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
);
OrderMemberReceivedStatistics
orderMemberReceivedStatistics
=
StatisticsStatusEnum
.
wrapStatisticsObject
(
startDate
,
stateGrp
,
new
OrderMemberReceivedStatistics
());
orderMemberReceivedStatistics
.
setTotalAmount
(
companyAmountEntry
.
getValue
());
orderMemberReceivedStatisticsList
.
add
(
orderMemberReceivedStatistics
);
}
//未支付单
List
<
OrderMemberReceivedStatistics
>
noPayOrderMemberReceivedStatisticsList
=
createOrderMemberReceivedStatisticsList
(
startDate
,
stateGroupMap
.
get
(
Boolean
.
FALSE
));
orderMemberReceivedStatisticsList
.
addAll
(
noPayOrderMemberReceivedStatisticsList
);
//创建剩余状态数据
List
stisticsActiveState
=
ordersMap
==
null
?
Collections
.
EMPTY_LIST
:
Lists
.
newArrayList
(
ordersMap
.
keySet
());
List
<
OrderMemberReceivedStatistics
>
otherStatisticsStateGroupList
=
createOtherStatisticsStateGroupList
(
startDate
,
stisticsActiveState
,
StatisticsStatusEnum
.
DEFAULT_COMPANY
);
orderMemberReceivedStatisticsList
.
addAll
(
otherStatisticsStateGroupList
);
//保存
insertMemberReceivedStatisticsBatch
(
orderMemberReceivedStatisticsList
);
}
/**
* @param orders 某种状态下的会员单
* @param levelEnum 会员等级
* @param orderMemberReceivedStatistics 会员统计对象
* @param startDate 时间
* @param noPayOrdersMap 未支付单map
* @return
*/
private
OrderMemberReceivedStatistics
wrapOrderMemberReceivedStatistics
(
List
<
OrderDTO
>
orders
,
LevelEnum
levelEnum
,
OrderMemberReceivedStatistics
orderMemberReceivedStatistics
)
{
orders
=
CollectionUtils
.
isEmpty
(
orders
)
?
Collections
.
EMPTY_LIST
:
orders
;
BigDecimal
totalAmount
=
orders
.
stream
().
map
(
OrderDTO:
:
getRealAmount
).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
));
switch
(
levelEnum
)
{
case
GENERAL:
orderMemberReceivedStatistics
.
setToalCommonAmmount
(
totalAmount
);
orderMemberReceivedStatistics
.
setTotalCommonQuantity
(
orders
.
size
());
break
;
case
GOLD:
orderMemberReceivedStatistics
.
setTotalGoldAmount
(
totalAmount
);
orderMemberReceivedStatistics
.
setTotalGoldQuantity
(
orders
.
size
());
break
;
case
DIAMOND:
orderMemberReceivedStatistics
.
setTotalDiamondAmmount
(
totalAmount
);
orderMemberReceivedStatistics
.
setTotalDiamondQuantity
(
orders
.
size
());
break
;
default
:
break
;
private
List
<
OrderMemberReceivedStatistics
>
createOrderMemberReceivedStatisticsList
(
Date
startDate
,
Map
<
String
,
Map
<
LevelEnum
,
List
<
OrderDTO
>>>
noPayOrdersMap
)
{
List
<
OrderMemberReceivedStatistics
>
orderMemberReceivedStatisticsList
=
new
ArrayList
<>();
if
(
noPayOrdersMap
==
null
||
noPayOrdersMap
.
isEmpty
())
{
return
orderMemberReceivedStatisticsList
;
}
return
orderMemberReceivedStatistics
;
Set
<
Map
.
Entry
<
String
,
Map
<
LevelEnum
,
List
<
OrderDTO
>>>>
noPayOrderSet
=
noPayOrdersMap
.
entrySet
();
for
(
Map
.
Entry
<
String
,
Map
<
LevelEnum
,
List
<
OrderDTO
>>>
noPayOrderEntry
:
noPayOrderSet
)
{
BigDecimal
generalTotalAmount
=
BigDecimal
.
ZERO
;
Integer
generalTotalQuantity
=
0
;
BigDecimal
goldTotalAmount
=
BigDecimal
.
ZERO
;
Integer
goldTotalQuantity
=
0
;
BigDecimal
diamondTotalAmount
=
BigDecimal
.
ZERO
;
Integer
diamondTotalQuantity
=
0
;
//获取状态
String
noPayOrderStateGroup
=
noPayOrderEntry
.
getKey
();
Map
<
LevelEnum
,
List
<
OrderDTO
>>
noPayOrderEntryValue
=
noPayOrderEntry
.
getValue
();
OrderMemberReceivedStatistics
orderMemberReceivedStatistics
=
StatisticsStatusEnum
.
wrapStatisticsObject
(
startDate
,
noPayOrderStateGroup
,
new
OrderMemberReceivedStatistics
());
List
<
OrderDTO
>
generalOrderDTOList
=
noPayOrderEntryValue
.
get
(
LevelEnum
.
GENERAL
);
if
(
CollectionUtils
.
isNotEmpty
(
generalOrderDTOList
))
{
generalTotalAmount
=
generalOrderDTOList
.
stream
().
map
(
OrderDTO:
:
getRealAmount
).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
));
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
();
}
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
);
}
return
orderMemberReceivedStatisticsList
;
}
/**
* 创建剩余状态数据
*
* @param startDate 时间
* @param startDate
时间
* @param statisticsStateGroups 状态组合 集合
* @param companyId 公司 id
* @param companyId
公司 id
* @return
*/
private
List
<
OrderMemberReceivedStatistics
>
createOtherStatisticsStateGroupList
(
Date
startDate
,
List
<
String
>
statisticsStateGroups
,
Integer
companyId
)
{
...
...
@@ -140,7 +244,8 @@ public class OrderMemberReceivedStatisticsBiz extends BaseBiz<OrderMemberReceive
OrderMemberReceivedStatistics
orderMemberReceivedStatistics
=
createDefaultOrderMemberReceivedStatistics
();
//统计对象的生成
otherStatisticsStateGroup
.
parallelStream
().
peek
(
stateGroup
->
{
OrderMemberReceivedStatistics
orderMemberReceivedStatisticsClone
=
StatisticsStatusEnum
.
wrapStatisticsObject
(
startDate
,
stateGroup
,
ObjectUtil
.
cloneByStream
(
orderMemberReceivedStatistics
));
OrderMemberReceivedStatistics
orderMemberReceivedStatisticsClone
=
StatisticsStatusEnum
.
wrapStatisticsObject
(
startDate
,
stateGroup
,
ObjectUtil
.
cloneByStream
(
orderMemberReceivedStatistics
));
orderMemberReceivedStatisticsList
.
add
(
orderMemberReceivedStatisticsClone
);
}).
count
();
return
orderMemberReceivedStatisticsList
;
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderRentVehicleReceivedStatisticsBiz.java
View file @
853b658e
...
...
@@ -2,21 +2,26 @@ package com.xxfc.platform.order.biz;
import
cn.hutool.core.util.ObjectUtil
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.util.CollectorsUtil
;
import
com.xxfc.platform.order.contant.enumerate.StatisticsStatusEnum
;
import
com.xxfc.platform.order.entity.OrderReceivedStatisticsBase
;
import
com.xxfc.platform.order.entity.OrderRentVehicleReceivedStatistics
;
import
com.xxfc.platform.order.mapper.OrderRentVehicleReceivedStatisticsMapper
;
import
com.xxfc.platform.order.pojo.account.OrderAccountBo
;
import
com.xxfc.platform.order.pojo.account.OrderAccountDetail
;
import
com.xxfc.platform.order.pojo.dto.OrderDTO
;
import
com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO
;
import
com.xxfc.platform.order.pojo.order.CompanyAmountBo
;
import
com.xxfc.platform.vehicle.feign.VehicleFeign
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.math.BigDecimal
;
import
java.util.*
;
import
java.util.function.BinaryOperator
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -55,12 +60,17 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi
public
void
orderRentVehicleReceivedStatistics
(
Date
startDate
,
Date
endDate
)
{
List
<
OrderRentVehicleReceivedStatistics
>
orderRentVehicleReceivedStatisticsList
=
new
ArrayList
<>();
List
<
String
>
stisticsActiveState
=
new
ArrayList
<>();
//公司的收入与支出 ---》无状态
List
<
CompanyAmountBo
>
companyAmoutList
=
new
ArrayList
<>();
//根据租车订单类型 时间查询
List
<
OrderDTO
>
orderDTOS
=
baseOrderBiz
.
selectOrdersByTypeAndTime
(
Arrays
.
asList
(
StatisticsStatusEnum
.
ORDER_RENT_VEHICLE_TYPE
),
startDate
,
endDate
);
//数据处理 状态组合 按支付状态分组 而后按组合状态
Map
<
Boolean
,
Map
<
String
,
List
<
OrderDTO
>>>
stateGroupMap
=
orderDTOS
.
stream
().
peek
(
x
->
{
x
.
setStateGroup
(
String
.
format
(
"%d-%d-%d-%d"
,
x
.
getCompanyId
(),
x
.
getOrderOrigin
(),
x
.
getPayWay
()
==
null
?
StatisticsStatusEnum
.
NO_PAY_WAY
:
x
.
getPayWay
(),
x
.
getHasPay
()));
x
.
setStateGroup
(
String
.
format
(
"%d-%d-%d-%d"
,
x
.
getCompanyId
(),
x
.
getOrderOrigin
(),
x
.
getPayWay
()
==
null
?
StatisticsStatusEnum
.
NO_PAY_WAY
:
x
.
getPayWay
()
,
x
.
getHasPay
()));
stisticsActiveState
.
add
(
x
.
getStateGroup
());
})
.
collect
(
Collectors
.
partitioningBy
(
x
->
Objects
.
nonNull
(
x
.
getPayWay
()),
Collectors
.
groupingBy
(
OrderDTO:
:
getStateGroup
,
Collectors
.
toList
())));
...
...
@@ -69,11 +79,12 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi
List
<
OrderAccountBo
>
orderAccountBoList
=
orderAccountBiz
.
selectByTypeAndDate
(
StatisticsStatusEnum
.
ORDER_RENT_VEHICLE_TYPE
,
startDate
,
endDate
);
//账目数据处理 状态组合
Map
<
String
,
List
<
OrderAccountBo
>>
ordersMap
=
orderAccountBoList
.
stream
().
peek
(
x
->
{
x
.
setStateGroup
(
String
.
format
(
"%d-%d-%d-%d"
,
x
.
getCompanyId
(),
x
.
getOrderOrigin
(),
x
.
getPayWay
()
==
null
?
StatisticsStatusEnum
.
NO_PAY_WAY
:
x
.
getPayWay
(),
x
.
getHasPay
()));
x
.
setStateGroup
(
String
.
format
(
"%d-%d-%d-%d"
,
x
.
getCompanyId
(),
x
.
getOrderOrigin
(),
x
.
getPayWay
()
==
null
?
StatisticsStatusEnum
.
NO_PAY_WAY
:
x
.
getPayWay
(),
x
.
getHasPay
()));
}).
collect
(
Collectors
.
groupingBy
(
OrderAccountBo:
:
getStateGroup
,
Collectors
.
toList
()));
BigDecimal
globalTotalAmount
=
BigDecimal
.
ZERO
;
//已经支付单
Set
<
Map
.
Entry
<
String
,
List
<
OrderAccountBo
>>>
ordersSet
=
ordersMap
.
entrySet
();
for
(
Map
.
Entry
<
String
,
List
<
OrderAccountBo
>>
orderEntry
:
ordersSet
)
{
...
...
@@ -91,15 +102,27 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi
refundAmount
.
add
(
accountDetailEntity
.
getOrderAmount
()).
add
(
accountDetailEntity
.
getDepositAmount
());
}
}
boolean
flag
=
stateGroupMap
==
null
?
false
:
stateGroupMap
.
get
(
Boolean
.
TRUE
)
==
null
?
false
:
stateGroupMap
.
get
(
Boolean
.
TRUE
).
get
(
orderKey
)==
null
?
false
:
true
;
if
(
flag
){
if
(
stisticsActiveState
.
contains
(
orderKey
)){
OrderRentVehicleReceivedStatistics
orderRentVehicleReceivedStatistics
=
StatisticsStatusEnum
.
wrapStatisticsObject
(
startDate
,
orderKey
,
new
OrderRentVehicleReceivedStatistics
());
orderRentVehicleReceivedStatistics
.
setTotalAmount
(
totalAmount
.
subtract
(
refundAmount
));
orderRentVehicleReceivedStatistics
.
setTotalQuantity
(
stateGroupMap
.
get
(
Boolean
.
TRUE
).
get
(
orderKey
).
size
());
orderRentVehicleReceivedStatisticsList
.
add
(
orderRentVehicleReceivedStatistics
);
}
else
{
Integer
compnayId
=
StatisticsStatusEnum
.
getCompnayId
(
orderKey
);
CompanyAmountBo
companyAmountBo
=
CompanyAmountBo
.
builder
().
companyId
(
compnayId
).
amount
(
totalAmount
.
subtract
(
refundAmount
)).
build
();
companyAmoutList
.
add
(
companyAmountBo
);
}
globalTotalAmount
.
add
(
totalAmount
.
subtract
(
refundAmount
));
}
Map
<
Integer
,
BigDecimal
>
companyAmountMap
=
companyAmoutList
.
stream
().
collect
(
Collectors
.
groupingBy
(
CompanyAmountBo:
:
getCompanyId
,
CollectorsUtil
.
summingBigDecimal
(
CompanyAmountBo:
:
getAmount
)));
Set
<
Map
.
Entry
<
Integer
,
BigDecimal
>>
companyAmountSet
=
companyAmountMap
.
entrySet
();
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
);
OrderRentVehicleReceivedStatistics
orderRentVehicleReceivedStatistics
=
StatisticsStatusEnum
.
wrapStatisticsObject
(
startDate
,
stateGrp
,
new
OrderRentVehicleReceivedStatistics
());
orderRentVehicleReceivedStatistics
.
setTotalQuantity
(
0
);
orderRentVehicleReceivedStatistics
.
setTotalAmount
(
companyAmountEntry
.
getValue
());
orderRentVehicleReceivedStatisticsList
.
add
(
orderRentVehicleReceivedStatistics
);
}
//未支付单
...
...
@@ -109,7 +132,7 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi
//查询分公司ids
List
<
Integer
>
companyIds
=
vehicleFeign
.
findCompanyIdsByAreaId
(
null
);
//创建剩余状态组合的租车统计对象
List
<
OrderRentVehicleReceivedStatistics
>
otherStatisticsStateGroupList
=
createOtherStatisticsStateGroupList
(
startDate
,
globalTotalAmount
,
stisticsActiveState
,
companyIds
);
List
<
OrderRentVehicleReceivedStatistics
>
otherStatisticsStateGroupList
=
createOtherStatisticsStateGroupList
(
startDate
,
stisticsActiveState
,
companyIds
);
orderRentVehicleReceivedStatisticsList
.
addAll
(
otherStatisticsStateGroupList
);
//保存
insertMemberReceivedStatisticsBatch
(
orderRentVehicleReceivedStatisticsList
);
...
...
@@ -143,13 +166,11 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi
* 创建剩余状态数据
*
* @param startDate 时间
* @param totalAmount 订单状态
* @param statisticsStateGroups 状态组合 集合
* @param companyIds 公司ids
* @return
*/
private
List
<
OrderRentVehicleReceivedStatistics
>
createOtherStatisticsStateGroupList
(
Date
startDate
,
BigDecimal
totalAmount
,
List
<
String
>
statisticsStateGroups
,
List
<
Integer
>
companyIds
)
{
...
...
@@ -159,13 +180,14 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi
//创建租车统计克隆对象
OrderRentVehicleReceivedStatistics
orderRentVehicleReceivedStatistics
=
new
OrderRentVehicleReceivedStatistics
();
//统计对象的生成
otherStatisticsStateGroup
.
parallelS
tream
().
map
(
stateGroup
->
{
otherStatisticsStateGroup
.
s
tream
().
map
(
stateGroup
->
{
OrderRentVehicleReceivedStatistics
orderRentVehicleReceivedStatisticsClone
=
StatisticsStatusEnum
.
wrapStatisticsObject
(
startDate
,
stateGroup
,
ObjectUtil
.
cloneByStream
(
orderRentVehicleReceivedStatistics
));
orderRentVehicleReceivedStatisticsClone
.
setTotalAmount
(
totalAmount
);
orderRentVehicleReceivedStatisticsClone
.
setTotalAmount
(
BigDecimal
.
ZERO
);
orderRentVehicleReceivedStatisticsClone
.
setTotalQuantity
(
0
);
orderRentVehicleReceivedStatisticsList
.
add
(
orderRentVehicleReceivedStatisticsClone
);
return
orderRentVehicleReceivedStatisticsClone
;
}).
count
();
return
orderRentVehicleReceivedStatisticsList
;
}
...
...
@@ -175,7 +197,7 @@ public class OrderRentVehicleReceivedStatisticsBiz extends BaseBiz<OrderRentVehi
* @param orderRentVehicleReceivedStatistics
*/
public
void
insertMemberReceivedStatisticsBatch
(
List
<
OrderRentVehicleReceivedStatistics
>
orderRentVehicleReceivedStatistics
)
{
orderRentVehicleReceivedStatistics
.
sort
(
Comparator
.
comparing
(
OrderRentVehicleReceivedStatistics:
:
getCompanyId
));
int
orderSize
=
orderRentVehicleReceivedStatistics
.
size
();
int
sqlAdq
=
orderSize
/
StatisticsStatusEnum
.
DEFAULT_SQL_SIZE
;
int
sqlMod
=
orderSize
%
StatisticsStatusEnum
.
DEFAULT_SQL_SIZE
;
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/mapper/OrderMemberReceivedStatisticsMapper.java
View file @
853b658e
...
...
@@ -2,8 +2,9 @@ package com.xxfc.platform.order.mapper;
import
com.xxfc.platform.order.entity.OrderMemberReceivedStatistics
;
import
com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO
;
import
org.apache.ibatis.annotations.Param
;
import
tk.mybatis.mapper.additional.insert.InsertListMapper
;
import
tk.mybatis.mapper.common.Mapper
;
import
tk.mybatis.mapper.common.special.InsertListMapper
;
import
java.util.List
;
...
...
@@ -17,4 +18,6 @@ import java.util.List;
public
interface
OrderMemberReceivedStatisticsMapper
extends
Mapper
<
OrderMemberReceivedStatistics
>,
InsertListMapper
<
OrderMemberReceivedStatistics
>
{
List
<
OrderMemberReceivedStatistics
>
selectOrderMemberReceivedStatistics
(
OrderReceivedStatisticsFindDTO
orderReceivedStatisticsFindDTO
);
void
inserMemberReceivedtList
(
@Param
(
"orderMembers"
)
List
<
OrderMemberReceivedStatistics
>
orderMemberReceivedStatistics
);
}
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/mapper/OrderRentVehicleReceivedStatisticsMapper.java
View file @
853b658e
...
...
@@ -2,8 +2,8 @@ package com.xxfc.platform.order.mapper;
import
com.xxfc.platform.order.entity.OrderRentVehicleReceivedStatistics
;
import
com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO
;
import
tk.mybatis.mapper.additional.insert.InsertListMapper
;
import
tk.mybatis.mapper.common.Mapper
;
import
tk.mybatis.mapper.common.special.InsertListMapper
;
import
java.util.List
;
...
...
xx-order/xx-order-server/src/main/resources/mapper/OrderAccountMapper.xml
View file @
853b658e
...
...
@@ -62,11 +62,13 @@
bo.order_origin,
bo.pay_way,
bo.has_pay,
brvd.start_company_id AS `companyId`
brvd.start_company_id AS `companyId`,
omd.member_level AS `memberLevel`
FROM
`order_account` AS `oa`
INNER JOIN `base_order` AS `bo` ON bo.id = oa.order_id
INNER JOIN `order_rent_vehicle_detail` AS `brvd` ON brvd.order_id=oa.order_id
LEFT JOIN `order_rent_vehicle_detail` AS `brvd` ON brvd.order_id=oa.order_id
LEFT JOIN `order_member_detail` AS `omd` ON omd.order_id=oa.order_id
WHERE bo.type=#{orderType} AND oa.`crt_time` BETWEEN #{startTime} AND #{endTime}
</select>
</mapper>
\ No newline at end of file
xx-order/xx-order-server/src/main/resources/mapper/OrderMemberReceivedStatisticsMapper.xml
View file @
853b658e
...
...
@@ -17,8 +17,8 @@
<result
property=
"totalGoldQuantity"
column=
"total_gold_quantity"
/>
<result
property=
"totalDiamondAmmount"
column=
"total_diamond_ammount"
/>
<result
property=
"totalDiamondQuantity"
column=
"total_diamond_quantity"
/>
<result
property=
"isFinish"
column=
"is_finish"
/>
<result
property=
"orderOrigin"
column=
"order_origin"
/>
<result
property=
"hasPay"
column=
"has_pay"
/>
<result
property=
"payWay"
column=
"pay_way"
/>
<result
property=
"companyId"
column=
"company_id"
/>
<result
property=
"crtTime"
column=
"crt_time"
/>
...
...
@@ -50,4 +50,7 @@
</if>
</select>
<delete
id=
"inserMemberReceivedtList"
>
</delete>
</mapper>
\ No newline at end of file
xx-order/xx-order-server/src/main/resources/mapper/OrderRentVehicleReceivedStatisticsMapper.xml
View file @
853b658e
...
...
@@ -12,8 +12,7 @@
<result
property=
"weekOfYear"
column=
"week_of_year"
/>
<result
property=
"totalAmount"
column=
"total_amount"
/>
<result
property=
"totalQuantity"
column=
"total_quantity"
/>
<result
property=
"realAmount"
column=
"real_amount"
/>
<result
property=
"isFinish"
column=
"is_finish"
/>
<result
property=
"hasPay"
column=
"has_pay"
/>
<result
property=
"orderOrigin"
column=
"order_origin"
/>
<result
property=
"payWay"
column=
"pay_way"
/>
<result
property=
"companyId"
column=
"company_id"
/>
...
...
xx-order/xx-order-server/src/main/resources/mapper/OrderTourReceivedStatisticsMapper.xml
View file @
853b658e
...
...
@@ -12,7 +12,7 @@
<result
property=
"weekOfYear"
column=
"week_of_year"
/>
<result
property=
"totalAmount"
column=
"total_amount"
/>
<result
property=
"totalQuantity"
column=
"total_quantity"
/>
<result
property=
"
isFinish"
column=
"is_finish
"
/>
<result
property=
"
hasPay"
column=
"has_pay
"
/>
<result
property=
"orderOrigin"
column=
"order_origin"
/>
<result
property=
"payWay"
column=
"pay_way"
/>
<result
property=
"companyId"
column=
"company_id"
/>
...
...
xx-order/xx-order-server/src/test/java/ServiceTest.java
View file @
853b658e
...
...
@@ -46,8 +46,10 @@ public class ServiceTest {
@Test
public
void
testMemberStatisticsInsert
(){
Date
date
=
cn
.
hutool
.
core
.
date
.
DateTime
.
of
(
"2019-11-16"
,
"yyyy-MM-dd"
).
toJdkDate
();
//orderMemberReceivedStatisticsBiz.orderMemberReceivedStatistics(date);
Date
date
=
cn
.
hutool
.
core
.
date
.
DateTime
.
of
(
"2019-11-15"
,
"yyyy-MM-dd"
).
toJdkDate
();
Date
startDate
=
DateUtil
.
beginOfDay
(
date
).
toJdkDate
();
Date
endDate
=
DateUtil
.
endOfDay
(
date
).
toJdkDate
();
orderMemberReceivedStatisticsBiz
.
orderMemberReceivedStatistics
(
startDate
,
endDate
);
}
@Test
...
...
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