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
5907b774
Commit
5907b774
authored
Nov 14, 2019
by
zuoyh
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/order_received_statistics' into order_received_statistics
parents
690c9950
42f7a384
Changes
26
Show whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
523 additions
and
90 deletions
+523
-90
LevelEnum.java
...ithub/wxiaoqi/security/common/enumconstant/LevelEnum.java
+38
-0
OrderReceivedStatisticsSignEnum.java
...er/contant/enumerate/OrderReceivedStatisticsSignEnum.java
+9
-1
OrderRentVehicleReceivedStatisticsSignEnum.java
...enumerate/OrderRentVehicleReceivedStatisticsSignEnum.java
+16
-2
OrderTourReceivedStatisticsSignEnum.java
...ontant/enumerate/OrderTourReceivedStatisticsSignEnum.java
+8
-1
ReceivedStatisticsEnum.java
...tform/order/contant/enumerate/ReceivedStatisticsEnum.java
+10
-2
StatisticsStatusEnum.java
...latform/order/contant/enumerate/StatisticsStatusEnum.java
+48
-0
BaseOrder.java
...c/main/java/com/xxfc/platform/order/entity/BaseOrder.java
+8
-6
OrderMemberReceivedStatistics.java
.../platform/order/entity/OrderMemberReceivedStatistics.java
+1
-7
OrderReceivedStatisticsBase.java
...fc/platform/order/entity/OrderReceivedStatisticsBase.java
+13
-7
OrderRentVehicleReceivedStatistics.java
...form/order/entity/OrderRentVehicleReceivedStatistics.java
+1
-6
OrderAccountDTO.java
...com/xxfc/platform/order/pojo/account/OrderAccountDTO.java
+7
-0
OrderDTO.java
.../main/java/com/xxfc/platform/order/pojo/dto/OrderDTO.java
+41
-0
OrderReceivedStatisticsFindDTO.java
...atform/order/pojo/dto/OrderReceivedStatisticsFindDTO.java
+1
-0
BaseOrderBiz.java
...c/main/java/com/xxfc/platform/order/biz/BaseOrderBiz.java
+8
-1
OrderAccountBiz.java
...ain/java/com/xxfc/platform/order/biz/OrderAccountBiz.java
+4
-0
OrderMemberReceivedStatisticsBiz.java
.../platform/order/biz/OrderMemberReceivedStatisticsBiz.java
+132
-2
OrderReceivedStatisticsBiz.java
...m/xxfc/platform/order/biz/OrderReceivedStatisticsBiz.java
+11
-8
OrderRentVehicleReceivedStatisticsBiz.java
...form/order/biz/OrderRentVehicleReceivedStatisticsBiz.java
+110
-2
BaseOrderMapper.java
.../java/com/xxfc/platform/order/mapper/BaseOrderMapper.java
+5
-0
OrderMemberReceivedStatisticsMapper.java
...orm/order/mapper/OrderMemberReceivedStatisticsMapper.java
+2
-1
OrderRentVehicleReceivedStatisticsMapper.java
...rder/mapper/OrderRentVehicleReceivedStatisticsMapper.java
+2
-1
OrderReceivedStatisticsAdminController.java
...st/background/OrderReceivedStatisticsAdminController.java
+6
-2
OrderMemberService.java
...a/com/xxfc/platform/order/service/OrderMemberService.java
+7
-36
BaseOrderMapper.xml
...rder-server/src/main/resources/mapper/BaseOrderMapper.xml
+22
-5
OrderReceivedStatisticsMapper.xml
...c/main/resources/mapper/OrderReceivedStatisticsMapper.xml
+2
-0
ServiceTest.java
xx-order/xx-order-server/src/test/java/ServiceTest.java
+11
-0
No files found.
ace-common/src/main/java/com/github/wxiaoqi/security/common/enumconstant/LevelEnum.java
0 → 100644
View file @
5907b774
package
com
.
github
.
wxiaoqi
.
security
.
common
.
enumconstant
;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/11/13 17:23
*/
public
enum
LevelEnum
{
DIAMOND
(
3
,
"钻石"
),
GOLD
(
2
,
"黄金"
),
GENERAL
(
1
,
"普通"
);
LevelEnum
(
Integer
level
,
String
desc
)
{
this
.
level
=
level
;
this
.
desc
=
desc
;
}
private
Integer
level
;
private
String
desc
;
public
Integer
getLevel
()
{
return
level
;
}
public
void
setLevel
(
Integer
level
)
{
this
.
level
=
level
;
}
public
String
getDesc
()
{
return
desc
;
}
public
void
setDesc
(
String
desc
)
{
this
.
desc
=
desc
;
}
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/contant/enumerate/OrderReceivedStatisticsSignEnum.java
View file @
5907b774
...
...
@@ -6,6 +6,7 @@ import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo;
import
java.math.BigDecimal
;
import
java.util.*
;
import
java.util.concurrent.atomic.AtomicReference
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
...
...
@@ -84,10 +85,17 @@ public enum OrderReceivedStatisticsSignEnum {
@Override
Map
<
String
,
List
<
OrderReceivedStatisticsVo
>>
wrapToMap
(
Map
<
Object
,
List
<
OrderReceivedStatisticsBase
>>
orderMap
)
{
Map
<
String
,
List
<
OrderReceivedStatisticsVo
>>
resultMap
=
new
HashMap
<>();
AtomicReference
<
BigDecimal
>
divisorAtomicReference
=
new
AtomicReference
<>();
List
<
OrderReceivedStatisticsVo
>
orderReceivedStatisticsVos
=
new
ArrayList
<>();
orderMap
.
forEach
((
K
,
V
)->{
List
<
OrderReceivedStatistics
>
orderReceivedStatisticsList
=
ReceivedStatisticsEnum
.
convertToTargetBean
(
V
);
BigDecimal
realAvgAmount
=
orderReceivedStatisticsList
.
stream
().
map
(
x
->
x
.
getRealAmount
()).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
)).
divide
(
new
BigDecimal
(
V
.
size
()));
BigDecimal
divisor
=
divisorAtomicReference
.
get
();
if
(
Objects
.
isNull
(
divisor
)){
Integer
divi
=
orderReceivedStatisticsList
.
get
(
0
).
getDivisor
();
divisor
=
new
BigDecimal
(
divi
);
divisorAtomicReference
.
set
(
divisor
);
}
BigDecimal
realAvgAmount
=
orderReceivedStatisticsList
.
stream
().
map
(
x
->
x
.
getRealAmount
()).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
)).
divide
(
divisor
);
OrderReceivedStatistics
orderReceivedStatistics
=
orderReceivedStatisticsList
.
get
(
0
);
OrderReceivedStatisticsVo
receivedStatisticsVo
=
ReceivedStatisticsEnum
.
createOrderReceivedStatistics
(
orderReceivedStatistics
,
realAvgAmount
,
null
);
orderReceivedStatisticsVos
.
add
(
receivedStatisticsVo
);
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/contant/enumerate/OrderRentVehicleReceivedStatisticsSignEnum.java
View file @
5907b774
...
...
@@ -7,6 +7,7 @@ import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.util.*
;
import
java.util.concurrent.atomic.AtomicReference
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
...
...
@@ -53,10 +54,16 @@ public enum OrderRentVehicleReceivedStatisticsSignEnum{
@Override
Map
<
String
,
List
<
OrderReceivedStatisticsVo
>>
wrapToMap
(
Map
<
Object
,
List
<
OrderReceivedStatisticsBase
>>
orderMap
)
{
Map
<
String
,
List
<
OrderReceivedStatisticsVo
>>
resultMap
=
new
HashMap
<>();
AtomicReference
<
Integer
>
divisorAtomicReference
=
new
AtomicReference
<>();
List
<
OrderReceivedStatisticsVo
>
orderReceivedStatisticsVos
=
new
ArrayList
<>();
orderMap
.
forEach
((
K
,
V
)->{
List
<
OrderRentVehicleReceivedStatistics
>
orderRentVehicleReceivedStatisticsList
=
ReceivedStatisticsEnum
.
convertToTargetBean
(
V
);
Integer
avgQuantity
=
orderRentVehicleReceivedStatisticsList
.
stream
().
map
(
x
->
x
.
getTotalQuantity
()).
reduce
(
0
,
(
x
,
y
)
->
x
+
y
)/
V
.
size
();
Integer
divisor
=
divisorAtomicReference
.
get
();
if
(
Objects
.
isNull
(
divisor
)){
divisor
=
orderRentVehicleReceivedStatisticsList
.
get
(
0
).
getDivisor
();
divisorAtomicReference
.
set
(
divisor
);
}
Integer
avgQuantity
=
orderRentVehicleReceivedStatisticsList
.
stream
().
map
(
x
->
x
.
getTotalQuantity
()).
reduce
(
0
,
(
x
,
y
)
->
x
+
y
)/
divisor
;
OrderRentVehicleReceivedStatistics
orderReceivedStatistics
=
orderRentVehicleReceivedStatisticsList
.
get
(
0
);
OrderReceivedStatisticsVo
receivedStatisticsVo
=
ReceivedStatisticsEnum
.
createOrderReceivedStatistics
(
orderReceivedStatistics
,
null
,
avgQuantity
);
orderReceivedStatisticsVos
.
add
(
receivedStatisticsVo
);
...
...
@@ -85,10 +92,17 @@ public enum OrderRentVehicleReceivedStatisticsSignEnum{
@Override
Map
<
String
,
List
<
OrderReceivedStatisticsVo
>>
wrapToMap
(
Map
<
Object
,
List
<
OrderReceivedStatisticsBase
>>
orderMap
)
{
Map
<
String
,
List
<
OrderReceivedStatisticsVo
>>
resultMap
=
new
HashMap
<>();
AtomicReference
<
BigDecimal
>
divisorAtomicReference
=
new
AtomicReference
<>();
List
<
OrderReceivedStatisticsVo
>
orderReceivedStatisticsVos
=
new
ArrayList
<>();
orderMap
.
forEach
((
K
,
V
)->{
List
<
OrderRentVehicleReceivedStatistics
>
orderRentVehicleReceivedStatisticsList
=
ReceivedStatisticsEnum
.
convertToTargetBean
(
V
);
BigDecimal
realAvgAmount
=
orderRentVehicleReceivedStatisticsList
.
stream
().
map
(
x
->
x
.
getRealAmount
()).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
)).
divide
(
new
BigDecimal
(
V
.
size
()),
RoundingMode
.
HALF_UP
);
BigDecimal
divisor
=
divisorAtomicReference
.
get
();
if
(
Objects
.
isNull
(
divisor
)){
Integer
divi
=
orderRentVehicleReceivedStatisticsList
.
get
(
0
).
getDivisor
();
divisor
=
new
BigDecimal
(
divi
);
divisorAtomicReference
.
set
(
divisor
);
}
BigDecimal
realAvgAmount
=
orderRentVehicleReceivedStatisticsList
.
stream
().
map
(
x
->
x
.
getRealAmount
()).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
)).
divide
(
divisor
,
RoundingMode
.
HALF_UP
);
OrderRentVehicleReceivedStatistics
orderReceivedStatistics
=
orderRentVehicleReceivedStatisticsList
.
get
(
0
);
OrderReceivedStatisticsVo
receivedStatisticsVo
=
ReceivedStatisticsEnum
.
createOrderReceivedStatistics
(
orderReceivedStatistics
,
realAvgAmount
,
null
);
orderReceivedStatisticsVos
.
add
(
receivedStatisticsVo
);
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/contant/enumerate/OrderTourReceivedStatisticsSignEnum.java
View file @
5907b774
...
...
@@ -6,6 +6,7 @@ import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo;
import
java.math.BigDecimal
;
import
java.util.*
;
import
java.util.concurrent.atomic.AtomicReference
;
import
java.util.function.Function
;
import
java.util.stream.Collectors
;
...
...
@@ -52,10 +53,16 @@ public enum OrderTourReceivedStatisticsSignEnum {
@Override
Map
<
String
,
List
<
OrderReceivedStatisticsVo
>>
wrapToMap
(
Map
<
Object
,
List
<
OrderReceivedStatisticsBase
>>
orderMap
)
{
Map
<
String
,
List
<
OrderReceivedStatisticsVo
>>
resultMap
=
new
HashMap
<>();
AtomicReference
<
Integer
>
divisorAtomicReference
=
new
AtomicReference
<>();
List
<
OrderReceivedStatisticsVo
>
orderReceivedStatisticsVos
=
new
ArrayList
<>();
orderMap
.
forEach
((
K
,
V
)
->
{
List
<
OrderTourReceivedStatistics
>
orderTourReceivedStatisticsList
=
ReceivedStatisticsEnum
.
convertToTargetBean
(
V
);
Integer
avgQuantity
=
orderTourReceivedStatisticsList
.
stream
().
map
(
x
->
x
.
getTotalQuantity
()).
reduce
(
0
,
(
x
,
y
)
->
x
+
y
)
/
V
.
size
();
Integer
divisor
=
divisorAtomicReference
.
get
();
if
(
Objects
.
isNull
(
divisor
)){
divisor
=
orderTourReceivedStatisticsList
.
get
(
0
).
getDivisor
();
divisorAtomicReference
.
set
(
divisor
);
}
Integer
avgQuantity
=
orderTourReceivedStatisticsList
.
stream
().
map
(
x
->
x
.
getTotalQuantity
()).
reduce
(
0
,
(
x
,
y
)
->
x
+
y
)
/
divisor
;
OrderTourReceivedStatistics
orderReceivedStatistics
=
orderTourReceivedStatisticsList
.
get
(
0
);
OrderReceivedStatisticsVo
receivedStatisticsVo
=
ReceivedStatisticsEnum
.
createOrderReceivedStatistics
(
orderReceivedStatistics
,
null
,
avgQuantity
);
orderReceivedStatisticsVos
.
add
(
receivedStatisticsVo
);
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/contant/enumerate/ReceivedStatisticsEnum.java
View file @
5907b774
...
...
@@ -5,6 +5,8 @@ import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo;
import
org.springframework.util.CollectionUtils
;
import
java.math.BigDecimal
;
import
java.time.LocalDate
;
import
java.time.temporal.TemporalAdjusters
;
import
java.util.Collections
;
import
java.util.EnumSet
;
import
java.util.List
;
...
...
@@ -25,7 +27,9 @@ public enum ReceivedStatisticsEnum {
if
(
CollectionUtils
.
isEmpty
(
orderReceivedStatisticsBases
))
{
return
Collections
.
EMPTY_MAP
;
}
return
orderReceivedStatisticsBases
.
stream
().
collect
(
Collectors
.
groupingBy
(
OrderReceivedStatisticsBase:
:
getDate
,
Collectors
.
toList
()));
return
orderReceivedStatisticsBases
.
stream
().
peek
(
x
->
{
((
OrderReceivedStatisticsBase
)
x
).
setDivisor
(
1
);
}).
collect
(
Collectors
.
groupingBy
(
OrderReceivedStatisticsBase:
:
getDate
,
Collectors
.
toList
()));
}
},
WEEK
(
2
,
"按周统计"
)
{
...
...
@@ -34,7 +38,7 @@ public enum ReceivedStatisticsEnum {
if
(
CollectionUtils
.
isEmpty
(
orderReceivedStatisticsBases
))
{
return
Collections
.
EMPTY_MAP
;
}
return
orderReceivedStatisticsBases
.
stream
().
collect
(
Collectors
.
groupingBy
(
OrderReceivedStatisticsBase:
:
getWeekOfYear
,
Collectors
.
toList
()));
return
orderReceivedStatisticsBases
.
stream
().
peek
(
x
->
((
OrderReceivedStatisticsBase
)
x
).
setDivisor
(
7
)).
collect
(
Collectors
.
groupingBy
(
OrderReceivedStatisticsBase:
:
getWeekOfYear
,
Collectors
.
toList
()));
}
},
MONTH
(
3
,
"按月统计"
)
{
...
...
@@ -47,6 +51,10 @@ public enum ReceivedStatisticsEnum {
OrderReceivedStatisticsBase
orderReceivedStatisticsBase
=
(
OrderReceivedStatisticsBase
)
x
;
orderReceivedStatisticsBase
.
setDate
(
null
);
orderReceivedStatisticsBase
.
setWeekOfYear
(
null
);
LocalDate
localDate
=
LocalDate
.
of
(
Integer
.
valueOf
(
orderReceivedStatisticsBase
.
getYear
()),
Integer
.
valueOf
(
orderReceivedStatisticsBase
.
getMonth
().
replace
(
orderReceivedStatisticsBase
.
getYear
(),
""
)),
1
);
int
lastDay
=
localDate
.
with
(
TemporalAdjusters
.
lastDayOfMonth
()).
getDayOfMonth
();
orderReceivedStatisticsBase
.
setDivisor
(
lastDay
);
}).
collect
(
Collectors
.
groupingBy
(
OrderReceivedStatisticsBase:
:
getMonth
,
Collectors
.
toList
()));
}
};
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/contant/enumerate/StatisticsStatusEnum.java
0 → 100644
View file @
5907b774
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/entity/BaseOrder.java
View file @
5907b774
package
com
.
xxfc
.
platform
.
order
.
entity
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
import
javax.persistence.*
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
org.assertj.core.util.Lists
;
import
tk.mybatis.mapper.annotation.Version
;
import
javax.persistence.Column
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.Id
;
import
javax.persistence.Table
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
*
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/OrderMemberReceivedStatistics.java
View file @
5907b774
...
...
@@ -5,6 +5,7 @@ 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
;
...
...
@@ -63,13 +64,6 @@ public class OrderMemberReceivedStatistics extends OrderReceivedStatisticsBase i
@ApiModelProperty
(
value
=
"钻石会员订单总量"
)
private
Integer
totalDiamondQuantity
;
/**
* 公司id
*/
@Column
(
name
=
"company_id"
)
@ApiModelProperty
(
value
=
"公司id"
)
private
Integer
companyId
;
/**
* 创建时间
*/
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/OrderReceivedStatisticsBase.java
View file @
5907b774
...
...
@@ -6,6 +6,7 @@ import lombok.Data;
import
javax.persistence.Column
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.Id
;
import
javax.persistence.Transient
;
import
java.math.BigDecimal
;
import
java.util.Date
;
...
...
@@ -17,7 +18,6 @@ import java.util.Date;
*/
@Data
public
class
OrderReceivedStatisticsBase
{
/**
*
*/
...
...
@@ -61,7 +61,6 @@ public class OrderReceivedStatisticsBase {
@ApiModelProperty
(
value
=
"订单总额"
)
protected
BigDecimal
totalAmount
;
/**
* 是否完成 1 完成 0 未完成
*/
...
...
@@ -82,4 +81,11 @@ public class OrderReceivedStatisticsBase {
@Column
(
name
=
"pay_way"
)
@ApiModelProperty
(
value
=
"支付方式 '1:微信公众号支付 2.支付宝即时到账,3,银联'"
)
protected
Integer
payWay
;
@Column
(
name
=
"company_id"
)
@ApiModelProperty
(
value
=
"分公司id"
)
protected
Integer
companyId
;
@Transient
protected
Integer
divisor
;
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/OrderRentVehicleReceivedStatistics.java
View file @
5907b774
...
...
@@ -35,12 +35,7 @@ public class OrderRentVehicleReceivedStatistics extends OrderReceivedStatisticsB
@ApiModelProperty
(
value
=
"实际收入"
)
private
BigDecimal
realAmount
;
/**
* 公司id
*/
@Column
(
name
=
"company_id"
)
@ApiModelProperty
(
value
=
"公司id"
)
private
Integer
companyId
;
/**
* 创建时间
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/account/OrderAccountDTO.java
View file @
5907b774
package
com
.
xxfc
.
platform
.
order
.
pojo
.
account
;
import
com.alibaba.fastjson.JSON
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.xxfc.platform.order.entity.OrderAccount
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
org.springframework.util.StringUtils
;
import
javax.persistence.Column
;
import
javax.persistence.GeneratedValue
;
...
...
@@ -111,6 +113,11 @@ public class OrderAccountDTO implements Serializable {
@Column
(
name
=
"oneDay"
)
private
String
oneDay
;
private
OrderAccountDetail
accountDetailEntity
;
public
OrderAccountDetail
getAccountDetailEntity
()
{
return
StringUtils
.
hasText
(
accountDetail
)?
JSON
.
parseObject
(
accountDetail
,
OrderAccountDetail
.
class
):
new
OrderAccountDetail
();
}
@Override
public
String
toString
()
{
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/dto/OrderDTO.java
0 → 100644
View file @
5907b774
package
com
.
xxfc
.
platform
.
order
.
pojo
.
dto
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/11/13 15:58
*/
@Data
@Builder
(
toBuilder
=
true
)
@AllArgsConstructor
@NoArgsConstructor
public
class
OrderDTO
{
private
Integer
id
;
private
Integer
type
;
private
Integer
status
;
private
BigDecimal
orderAmount
;
private
BigDecimal
realAmount
;
private
Integer
orderOrigin
;
private
Integer
payWay
;
private
Date
crtTime
;
private
Integer
companyId
;
private
String
stateGroup
;
/**
* 会员相关
*/
private
Integer
memberLevel
;
/**
* 租车相关
*/
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/dto/OrderReceivedStatisticsFindDTO.java
View file @
5907b774
...
...
@@ -33,4 +33,5 @@ public class OrderReceivedStatisticsFindDTO {
@ApiModelProperty
(
"统计项标识"
)
@NotNull
(
message
=
"统计标识不能为null"
)
private
List
<
String
>
statisticalSigns
;
private
List
<
Integer
>
companyId
;
}
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/BaseOrderBiz.java
View file @
5907b774
...
...
@@ -30,6 +30,7 @@ import com.xxfc.platform.order.pojo.account.OrderAccountDetail;
import
com.xxfc.platform.order.pojo.calculate.InProgressVO
;
import
com.xxfc.platform.order.pojo.dto.MemberOrderBo
;
import
com.xxfc.platform.order.pojo.dto.MemberOrderFindDTO
;
import
com.xxfc.platform.order.pojo.dto.OrderDTO
;
import
com.xxfc.platform.order.pojo.mq.OrderMQDTO
;
import
com.xxfc.platform.order.pojo.order.OrderListVo
;
import
com.xxfc.platform.order.pojo.order.OrderPageVO
;
...
...
@@ -53,6 +54,7 @@ import com.xxfc.platform.vehicle.pojo.CompanyDetail;
import
com.xxfc.platform.vehicle.util.DistanceUtil
;
import
lombok.Data
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.joda.time.DateTime
;
import
org.joda.time.format.DateTimeFormat
;
...
...
@@ -60,6 +62,7 @@ import org.joda.time.format.DateTimeFormatter;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
tk.mybatis.mapper.entity.Example
;
import
java.math.BigDecimal
;
import
java.util.*
;
...
...
@@ -781,7 +784,6 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
public
UserFeign
getUserFeign
()
{
return
userFeign
;
}
/**
* 订单查询类
*/
...
...
@@ -804,4 +806,9 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
return
Lists
.
newArrayList
();
}
public
List
<
OrderDTO
>
selectOrdersByTypeAndTime
(
List
<
Integer
>
types
,
Date
startDate
,
Date
endDate
)
{
List
<
OrderDTO
>
orderDTOS
=
mapper
.
selectOrdersByTypeAndTime
(
types
,
startDate
,
endDate
);
return
CollectionUtils
.
isEmpty
(
orderDTOS
)?
Collections
.
EMPTY_LIST
:
orderDTOS
;
}
}
\ No newline at end of file
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderAccountBiz.java
View file @
5907b774
...
...
@@ -621,4 +621,8 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
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 @
5907b774
package
com
.
xxfc
.
platform
.
order
.
biz
;
import
cn.hutool.core.date.DateField
;
import
cn.hutool.core.date.DateTime
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.date.TimeInterval
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
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.mapper.OrderMemberReceivedStatisticsMapper
;
import
com.xxfc.platform.order.pojo.dto.OrderDTO
;
import
com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO
;
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.util.List
;
import
java.math.BigDecimal
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* 会员订单统计
...
...
@@ -18,8 +31,125 @@ import java.util.List;
*/
@Service
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
class
OrderMemberReceivedStatisticsBiz
extends
BaseBiz
<
OrderMemberReceivedStatisticsMapper
,
OrderMemberReceivedStatistics
>
{
@RequiredArgsConstructor
(
onConstructor
=
@__
(
@Autowired
))
public
class
OrderMemberReceivedStatisticsBiz
extends
BaseBiz
<
OrderMemberReceivedStatisticsMapper
,
OrderMemberReceivedStatistics
>
{
private
final
BaseOrderBiz
baseOrderBiz
;
private
final
int
FINISH
=
6
;
private
final
int
CANCEL
=
2
;
private
final
int
UNFINISH
=
3
;
public
List
<
OrderMemberReceivedStatistics
>
selectOrderReceivedStatistics
(
OrderReceivedStatisticsFindDTO
orderReceivedStatisticsFindDTO
)
{
return
mapper
.
selectOrderMemberReceivedStatistics
(
orderReceivedStatisticsFindDTO
);
}
public
void
orderMemberReceivedStatistics
(
Date
date
)
{
List
<
OrderMemberReceivedStatistics
>
orderMemberReceivedStatisticsList
=
new
ArrayList
<>(
18
);
DateTime
yesterday
=
DateUtil
.
yesterday
();
Date
startDate
=
date
==
null
?
DateUtil
.
beginOfDay
(
yesterday
).
toJdkDate
()
:
DateUtil
.
beginOfDay
(
date
);
Date
endDate
=
date
==
null
?
DateUtil
.
endOfDay
(
yesterday
).
toJdkDate
()
:
DateUtil
.
beginOfDay
(
date
);
List
<
OrderDTO
>
orders
=
baseOrderBiz
.
selectOrdersByTypeAndTime
(
Arrays
.
asList
(
3
),
startDate
,
endDate
);
TimeInterval
timer
=
DateUtil
.
timer
();
//数据处理 把 完成状态6 取消状态2 的其他数据转换成状态为未完成3
Map
<
String
,
Map
<
Integer
,
List
<
OrderDTO
>>>
ordersMap
=
orders
.
stream
().
peek
(
x
->
{
Integer
status
=
x
.
getStatus
()==
CANCEL
?
CANCEL:
x
.
getStatus
()==
FINISH
?
FINISH:
UNFINISH
;
x
.
setStatus
(
status
);
x
.
setStateGroup
(
String
.
format
(
"%d-%d-%d-%d"
,
1
,
x
.
getOrderOrigin
(),
x
.
getPayWay
(),
x
.
getStatus
()));})
.
collect
(
Collectors
.
groupingBy
(
OrderDTO:
:
getStateGroup
,
Collectors
.
groupingBy
(
OrderDTO:
:
getMemberLevel
,
Collectors
.
toList
())));
Set
<
Map
.
Entry
<
String
,
Map
<
Integer
,
List
<
OrderDTO
>>>>
orderSet
=
ordersMap
.
entrySet
();
for
(
Map
.
Entry
<
String
,
Map
<
Integer
,
List
<
OrderDTO
>>>
orderEntry
:
orderSet
)
{
//获取状态
String
orderStatisticsGroup
=
orderEntry
.
getKey
();
Map
<
Integer
,
List
<
OrderDTO
>>
orderEntryValue
=
orderEntry
.
getValue
();
OrderMemberReceivedStatistics
orderMemberReceivedStatistics
=
createOrderMemberReceivedStatiscs
(
startDate
,
orderStatisticsGroup
);
//1.普通会员
List
<
OrderDTO
>
generalOrders
=
orderEntryValue
.
get
(
LevelEnum
.
GENERAL
.
getLevel
());
generalOrders
=
CollectionUtils
.
isEmpty
(
generalOrders
)
?
Collections
.
EMPTY_LIST
:
generalOrders
;
BigDecimal
totalCommAmount
=
generalOrders
.
stream
().
map
(
OrderDTO:
:
getRealAmount
).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
));
orderMemberReceivedStatistics
.
setToalCommonAmmount
(
totalCommAmount
);
orderMemberReceivedStatistics
.
setTotalCommonQuantity
(
generalOrders
.
size
());
//2.黄金会员
List
<
OrderDTO
>
goldOrders
=
orderEntryValue
.
get
(
LevelEnum
.
GOLD
.
getLevel
());
goldOrders
=
CollectionUtils
.
isEmpty
(
goldOrders
)
?
Collections
.
EMPTY_LIST
:
goldOrders
;
BigDecimal
totalGoldAmount
=
goldOrders
.
stream
().
map
(
OrderDTO:
:
getRealAmount
).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
));
orderMemberReceivedStatistics
.
setTotalGoldAmount
(
totalGoldAmount
);
orderMemberReceivedStatistics
.
setTotalGoldQuantity
(
goldOrders
.
size
());
//3.钻石会员
List
<
OrderDTO
>
diamondOrders
=
orderEntryValue
.
get
(
LevelEnum
.
DIAMOND
.
getLevel
());
diamondOrders
=
CollectionUtils
.
isEmpty
(
diamondOrders
)
?
Collections
.
EMPTY_LIST
:
diamondOrders
;
BigDecimal
totalDiamondAmount
=
diamondOrders
.
stream
().
map
(
OrderDTO:
:
getRealAmount
).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
));
orderMemberReceivedStatistics
.
setTotalDiamondAmmount
(
totalDiamondAmount
);
orderMemberReceivedStatistics
.
setTotalDiamondQuantity
(
diamondOrders
.
size
());
BigDecimal
totalAmount
=
totalCommAmount
.
add
(
totalGoldAmount
).
add
(
totalDiamondAmount
);
orderMemberReceivedStatistics
.
setTotalAmount
(
totalAmount
);
orderMemberReceivedStatisticsList
.
add
(
orderMemberReceivedStatistics
);
}
List
<
OrderMemberReceivedStatistics
>
otherStatisticsStateGroupList
=
createOtherStatisticsStateGroupList
(
startDate
,
Lists
.
newArrayList
(
ordersMap
.
keySet
()),
1
);
orderMemberReceivedStatisticsList
.
addAll
(
otherStatisticsStateGroupList
);
insertMemberReceivedStatisticsBatch
(
orderMemberReceivedStatisticsList
);
long
interval
=
timer
.
interval
();
System
.
out
.
println
(
"花费时间:"
+
interval
);
}
/**
* 创建剩余状态数据
* @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
)
{
mapper
.
insertList
(
orderMemberReceivedStatistics
);
}
}
\ No newline at end of file
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderReceivedStatisticsBiz.java
View file @
5907b774
package
com
.
xxfc
.
platform
.
order
.
biz
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.date.DateField
;
import
cn.hutool.core.date.DateTime
;
import
cn.hutool.core.date.DateUtil
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.util.excel.ExcelExport
;
import
com.google.common.collect.Lists
;
import
com.xxfc.platform.order.contant.enumerate.*
;
import
com.xxfc.platform.order.entity.*
;
...
...
@@ -15,7 +12,6 @@ import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo;
import
lombok.RequiredArgsConstructor
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.poi.ss.usermodel.*
;
import
org.apache.poi.xssf.usermodel.XSSFFont
;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
org.springframework.beans.factory.InitializingBean
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -24,8 +20,9 @@ import org.springframework.transaction.annotation.Transactional;
import
javax.servlet.ServletOutputStream
;
import
java.io.IOException
;
import
java.time.LocalDate
;
import
java.time.format.DateTimeFormatter
;
import
java.util.*
;
import
java.util.function.Predicate
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -48,6 +45,7 @@ public class OrderReceivedStatisticsBiz extends BaseBiz<OrderReceivedStatisticsM
private
List
<
String
>
orderRentVehicleSigns
;
private
List
<
String
>
orderTourSigns
;
private
Map
<
String
,
String
>
signAndDescMap
;
private
DateTimeFormatter
dateTimeFormatter
=
DateTimeFormatter
.
ofPattern
(
"yyyy-MM-dd"
);
/**
...
...
@@ -101,9 +99,14 @@ public class OrderReceivedStatisticsBiz extends BaseBiz<OrderReceivedStatisticsM
firstCell
.
setCellValue
(
DateUtil
.
format
(
orderReceivedStatisticsVo
.
getDate
(),
"yyyy.MM.dd"
));
}
if
(
ReceivedStatisticsEnum
.
WEEK
.
getWayCode
()==
statisticalWay
){
Date
startDate
=
orderReceivedStatisticsVo
.
getDate
();
String
startDateStr
=
DateUtil
.
format
(
startDate
,
"yyyy-MM-dd"
);
String
endDateStr
=
DateUtil
.
offset
(
startDate
,
DateField
.
DAY_OF_MONTH
,
6
).
toDateStr
();
LocalDate
localDate
=
LocalDate
.
of
(
Integer
.
valueOf
(
orderReceivedStatisticsVo
.
getYear
()),
Integer
.
valueOf
(
orderReceivedStatisticsVo
.
getMonth
().
replace
(
orderReceivedStatisticsVo
.
getYear
(),
""
)),
1
);
int
dayOfYear
=
localDate
.
getDayOfYear
();
int
days
=
Integer
.
valueOf
(
orderReceivedStatisticsVo
.
getWeekOfYear
().
replace
(
orderReceivedStatisticsVo
.
getYear
(),
""
))*
7
;
int
betweenDays
=
days
-
dayOfYear
;
LocalDate
endLocalDate
=
localDate
.
withDayOfMonth
(
betweenDays
);
LocalDate
startLocalDate
=
endLocalDate
.
minusDays
(
6
);
String
startDateStr
=
startLocalDate
.
format
(
dateTimeFormatter
);
String
endDateStr
=
endLocalDate
.
format
(
dateTimeFormatter
);
firstCell
.
setCellValue
(
String
.
format
(
"%s~%s"
,
startDateStr
,
endDateStr
));
}
if
(
ReceivedStatisticsEnum
.
MONTH
.
getWayCode
()==
statisticalWay
){
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderRentVehicleReceivedStatisticsBiz.java
View file @
5907b774
package
com
.
xxfc
.
platform
.
order
.
biz
;
import
cn.hutool.core.date.DateField
;
import
cn.hutool.core.date.DateTime
;
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.OrderReceivedStatisticsFindDTO
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.xxfc.platform.order.entity.OrderRentVehicleReceivedStatistics
;
...
...
@@ -8,7 +17,9 @@ import com.xxfc.platform.order.mapper.OrderRentVehicleReceivedStatisticsMapper;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.List
;
import
java.math.BigDecimal
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* 租车订单统计
...
...
@@ -19,8 +30,105 @@ import java.util.List;
*/
@Service
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
class
OrderRentVehicleReceivedStatisticsBiz
extends
BaseBiz
<
OrderRentVehicleReceivedStatisticsMapper
,
OrderRentVehicleReceivedStatistics
>
{
@RequiredArgsConstructor
(
onConstructor
=
@__
(
@Autowired
))
public
class
OrderRentVehicleReceivedStatisticsBiz
extends
BaseBiz
<
OrderRentVehicleReceivedStatisticsMapper
,
OrderRentVehicleReceivedStatistics
>
{
private
final
BaseOrderBiz
baseOrderBiz
;
private
final
OrderAccountBiz
orderAccountBiz
;
private
final
int
FINISH
=
6
;
private
final
int
CANCEL
=
2
;
private
final
int
UNFINISH
=
3
;
private
final
int
PAYWAYTEMP
=
99
;
public
List
<
OrderRentVehicleReceivedStatistics
>
selectOrderReceivedStatistics
(
OrderReceivedStatisticsFindDTO
orderReceivedStatisticsFindDTO
)
{
return
mapper
.
selectOrderRentVehicleReceivedStatistics
(
orderReceivedStatisticsFindDTO
);
}
public
void
orderRentVehicleReceivedStatistics
(
Date
startDate
,
Date
endDate
)
{
List
<
OrderRentVehicleReceivedStatistics
>
orderRentVehicleReceivedStatisticsList
=
new
ArrayList
<>(
18
);
String
year
=
String
.
valueOf
(
DateTime
.
of
(
startDate
).
getField
(
DateField
.
YEAR
));
String
month
=
String
.
format
(
"%s%d"
,
year
,
DateTime
.
of
(
startDate
).
getField
(
DateField
.
MONTH
));
String
weekOfYear
=
String
.
format
(
"%s%d"
,
year
,
DateTime
.
of
(
startDate
).
getField
(
DateField
.
DAY_OF_YEAR
));
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
Map
<
Integer
,
Map
<
Integer
,
Map
<
Integer
,
Map
<
Integer
,
List
<
OrderDTO
>>>>>
ordersMap
=
orders
.
stream
().
peek
(
x
->
{
if
(
x
.
getStatus
()
!=
CANCEL
&&
x
.
getStatus
()
!=
FINISH
)
{
x
.
setStatus
(
UNFINISH
);
}
}).
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
())))));
/* 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) {
//公司id
Integer companyKey = orderEntrie.getKey();
Set<Map.Entry<Integer, Map<Integer, Map<Integer, List<OrderDTO>>>>> companyEntries = orderEntrie.getValue().entrySet();
for (Map.Entry<Integer, Map<Integer, Map<Integer, List<OrderDTO>>>> companyEntrie : companyEntries) {
//下单来源
Integer orderOrignKey = companyEntrie.getKey();
Set<Map.Entry<Integer, Map<Integer, List<OrderDTO>>>> orderOriginEntries = companyEntrie.getValue().entrySet();
for (Map.Entry<Integer, Map<Integer, List<OrderDTO>>> orderOriginEntry : orderOriginEntries) {
//支付方式
Integer payWayKey = orderOriginEntry.getKey();
Set<Map.Entry<Integer, List<OrderDTO>>> statusEntries = orderOriginEntry.getValue().entrySet();
for (Map.Entry<Integer, List<OrderDTO>> statusEntry : statusEntries) {
List<OrderDTO> orderDTOList = statusEntry.getValue();
if (CollectionUtils.isEmpty(orderDTOList)) {
continue;
}
//状态
Integer statusKey = statusEntry.getKey();
OrderRentVehicleReceivedStatistics orderRentVehicleReceivedStatistics = new OrderRentVehicleReceivedStatistics();
orderRentVehicleReceivedStatistics.setCrtTime(new Date());
orderRentVehicleReceivedStatistics.setCompanyId(companyKey);
orderRentVehicleReceivedStatistics.setIsFinish(statusKey);
orderRentVehicleReceivedStatistics.setOrderOrigin(orderOrignKey);
orderRentVehicleReceivedStatistics.setPayWay(PAYWAYTEMP == payWayKey ? null : payWayKey);
orderRentVehicleReceivedStatistics.setDate(startDate);
orderRentVehicleReceivedStatistics.setYear(year);
orderRentVehicleReceivedStatistics.setMonth(month);
orderRentVehicleReceivedStatistics.setWeekOfYear(weekOfYear);
orderRentVehicleReceivedStatistics.setTotalQuantity(orderDTOList.size());
BigDecimal totalAmount = BigDecimal.ZERO;
BigDecimal realAmount = BigDecimal.ZERO;
for (OrderDTO orderDTO : orderDTOList) {
Integer orderId = orderDTO.getId();
List<OrderAccountDTO> orderAccountDTOS = orderAccountMap.get(orderId);
//完成单
if (FINISH == statusKey) {
}
//未完成单
if (UNFINISH == 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/BaseOrderMapper.java
View file @
5907b774
...
...
@@ -3,12 +3,14 @@ package com.xxfc.platform.order.mapper;
import
com.xxfc.platform.order.entity.BaseOrder
;
import
com.xxfc.platform.order.pojo.dto.MemberOrderBo
;
import
com.xxfc.platform.order.pojo.dto.MemberOrderFindDTO
;
import
com.xxfc.platform.order.pojo.dto.OrderDTO
;
import
com.xxfc.platform.order.pojo.order.OrderListVo
;
import
com.xxfc.platform.order.pojo.order.OrderPageVO
;
import
org.apache.ibatis.annotations.Param
;
import
tk.mybatis.mapper.common.Mapper
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -37,4 +39,7 @@ public interface BaseOrderMapper extends Mapper<BaseOrder> {
List
<
MemberOrderBo
>
findMemberOrders
(
MemberOrderFindDTO
memberOrderFindDTO
);
List
<
OrderDTO
>
selectOrdersByTypeAndTime
(
@Param
(
"types"
)
List
<
Integer
>
types
,
@Param
(
"startDate"
)
Date
startDate
,
@Param
(
"endDate"
)
Date
endDate
);
}
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/mapper/OrderMemberReceivedStatisticsMapper.java
View file @
5907b774
...
...
@@ -3,6 +3,7 @@ package com.xxfc.platform.order.mapper;
import
com.xxfc.platform.order.entity.OrderMemberReceivedStatistics
;
import
com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO
;
import
tk.mybatis.mapper.common.Mapper
;
import
tk.mybatis.mapper.common.special.InsertListMapper
;
import
java.util.List
;
...
...
@@ -13,7 +14,7 @@ import java.util.List;
* @email 18178966185@163.com
* @date 2019-11-08 18:03:42
*/
public
interface
OrderMemberReceivedStatisticsMapper
extends
Mapper
<
OrderMemberReceivedStatistics
>
{
public
interface
OrderMemberReceivedStatisticsMapper
extends
Mapper
<
OrderMemberReceivedStatistics
>
,
InsertListMapper
<
OrderMemberReceivedStatistics
>
{
List
<
OrderMemberReceivedStatistics
>
selectOrderMemberReceivedStatistics
(
OrderReceivedStatisticsFindDTO
orderReceivedStatisticsFindDTO
);
}
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/mapper/OrderRentVehicleReceivedStatisticsMapper.java
View file @
5907b774
...
...
@@ -3,6 +3,7 @@ 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.common.Mapper
;
import
tk.mybatis.mapper.common.special.InsertListMapper
;
import
java.util.List
;
...
...
@@ -13,7 +14,7 @@ import java.util.List;
* @email 18178966185@163.com
* @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
);
}
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/rest/background/OrderReceivedStatisticsAdminController.java
View file @
5907b774
package
com
.
xxfc
.
platform
.
order
.
rest
.
background
;
import
com.github.wxiaoqi.security.admin.feign.dto.UserDTO
;
import
com.github.wxiaoqi.security.common.annotation.BeanValid
;
import
com.github.wxiaoqi.security.common.annotation.SimpleValid
;
import
com.github.wxiaoqi.security.common.exception.BaseException
;
...
...
@@ -22,6 +23,7 @@ import javax.servlet.ServletOutputStream;
import
javax.servlet.http.HttpServletResponse
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -41,15 +43,17 @@ public class OrderReceivedStatisticsAdminController {
@ApiOperation
(
"订单统计"
)
@PostMapping
(
""
)
public
ObjectRestResponse
<
Map
<
String
,
List
<
OrderReceivedStatisticsVo
>>>
orderReceivedStatistics
(
@RequestBody
@SimpleValid
OrderReceivedStatisticsFindDTO
orderReceivedStatisticsFindDTO
){
public
ObjectRestResponse
<
Map
<
String
,
List
<
OrderReceivedStatisticsVo
>>>
orderReceivedStatistics
(
@RequestBody
@SimpleValid
OrderReceivedStatisticsFindDTO
orderReceivedStatisticsFindDTO
,
UserDTO
userDTO
){
orderReceivedStatisticsFindDTO
.
setCompanyId
(
Arrays
.
asList
(
userDTO
.
getCompanyId
()));
Map
<
String
,
List
<
OrderReceivedStatisticsVo
>>
orderReceivedStatisticsPageVo
=
orderReceivedStatisticsBiz
.
getOrderReceivedStatisticsResult
(
orderReceivedStatisticsFindDTO
);
return
ObjectRestResponse
.
succ
(
orderReceivedStatisticsPageVo
);
}
@ApiOperation
(
"订单统计excel导出下载"
)
@PostMapping
(
value
=
"/export"
,
consumes
=
MediaType
.
APPLICATION_JSON_UTF8_VALUE
)
public
ObjectRestResponse
<
Void
>
exportOrderReceivedStatistics
(
@RequestBody
@BeanValid
OrderReceivedStatisticsFindDTO
orderReceivedStatisticsFindDTO
,
HttpServletResponse
response
){
public
ObjectRestResponse
<
Void
>
exportOrderReceivedStatistics
(
@RequestBody
@BeanValid
OrderReceivedStatisticsFindDTO
orderReceivedStatisticsFindDTO
,
UserDTO
userDTO
,
HttpServletResponse
response
){
try
{
orderReceivedStatisticsFindDTO
.
setCompanyId
(
Arrays
.
asList
(
userDTO
.
getCompanyId
()));
String
name
=
DateTimeFormatter
.
ofPattern
(
"YYYYMMddHHmmss"
).
format
(
LocalDateTime
.
now
());
response
.
setContentType
(
"application/vnd.ms-excel;charset=utf-8"
);
String
filename
=
String
.
format
(
"%s-OrderReceivedStatistics.xlsx"
,
name
);
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/service/OrderMemberService.java
View file @
5907b774
...
...
@@ -6,6 +6,7 @@ import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import
com.github.wxiaoqi.security.admin.feign.UserFeign
;
import
com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface
;
import
com.github.wxiaoqi.security.auth.client.config.UserAuthConfig
;
import
com.github.wxiaoqi.security.common.enumconstant.LevelEnum
;
import
com.github.wxiaoqi.security.common.exception.BaseException
;
import
com.github.wxiaoqi.security.common.util.process.ResultCode
;
import
com.github.wxiaoqi.security.common.vo.PageDataVO
;
...
...
@@ -412,57 +413,27 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
BigDecimal
totalAmount
=
baseOrders
.
stream
().
filter
(
x
->
x
.
getHasPay
()==
1
).
map
(
MemberOrderBo:
:
getOrderAmount
).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
));
memberOrderStatisticsBo
.
setTotalAmount
(
totalAmount
);
List
<
MemberOrderBo
>
diamondOrders
=
baseOrderMap
.
get
(
l
evelEnum
.
DIAMOND
.
getLevel
());
List
<
MemberOrderBo
>
diamondOrders
=
baseOrderMap
.
get
(
L
evelEnum
.
DIAMOND
.
getLevel
());
memberOrderStatisticsBo
.
setDiamondOrderNum
(
diamondOrders
==
null
?
0
:
diamondOrders
.
size
());
List
<
MemberOrderBo
>
diamondHashPayOrders
=
baseOrderHasPayMap
.
get
(
l
evelEnum
.
DIAMOND
.
getLevel
());
List
<
MemberOrderBo
>
diamondHashPayOrders
=
baseOrderHasPayMap
.
get
(
L
evelEnum
.
DIAMOND
.
getLevel
());
diamondHashPayOrders
=
diamondHashPayOrders
==
null
?
Collections
.
EMPTY_LIST
:
diamondHashPayOrders
;
BigDecimal
diamondAmount
=
diamondHashPayOrders
.
stream
().
map
(
MemberOrderBo:
:
getOrderAmount
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
memberOrderStatisticsBo
.
setTotalDiamondAmount
(
diamondAmount
);
List
<
MemberOrderBo
>
goldOrders
=
baseOrderMap
.
get
(
l
evelEnum
.
GOLD
.
getLevel
());
List
<
MemberOrderBo
>
goldOrders
=
baseOrderMap
.
get
(
L
evelEnum
.
GOLD
.
getLevel
());
memberOrderStatisticsBo
.
setGoldOrderNum
(
goldOrders
==
null
?
0
:
goldOrders
.
size
());
List
<
MemberOrderBo
>
goldHasPayOrders
=
baseOrderHasPayMap
.
get
(
l
evelEnum
.
GOLD
.
getLevel
());
List
<
MemberOrderBo
>
goldHasPayOrders
=
baseOrderHasPayMap
.
get
(
L
evelEnum
.
GOLD
.
getLevel
());
goldHasPayOrders
=
goldHasPayOrders
==
null
?
Collections
.
EMPTY_LIST
:
goldHasPayOrders
;
BigDecimal
goldAmount
=
goldHasPayOrders
.
stream
().
map
(
MemberOrderBo:
:
getOrderAmount
).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
));
memberOrderStatisticsBo
.
setTotalGoldAmount
(
goldAmount
);
List
<
MemberOrderBo
>
generalOrders
=
baseOrderMap
.
get
(
l
evelEnum
.
GENERAL
.
getLevel
());
List
<
MemberOrderBo
>
generalOrders
=
baseOrderMap
.
get
(
L
evelEnum
.
GENERAL
.
getLevel
());
memberOrderStatisticsBo
.
setGeneralOrderNum
(
generalOrders
==
null
?
0
:
generalOrders
.
size
());
List
<
MemberOrderBo
>
generalHasPayOrders
=
baseOrderHasPayMap
.
get
(
l
evelEnum
.
GENERAL
.
getLevel
());
List
<
MemberOrderBo
>
generalHasPayOrders
=
baseOrderHasPayMap
.
get
(
L
evelEnum
.
GENERAL
.
getLevel
());
generalHasPayOrders
=
generalHasPayOrders
==
null
?
Collections
.
EMPTY_LIST
:
generalHasPayOrders
;
BigDecimal
generalAmount
=
generalHasPayOrders
.
stream
().
map
(
MemberOrderBo:
:
getOrderAmount
).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
));
memberOrderStatisticsBo
.
setTotalGeneralAmount
(
generalAmount
);
return
memberOrderStatisticsBo
;
}
private
enum
levelEnum
{
DIAMOND
(
3
,
"钻石"
),
GOLD
(
2
,
"黄金"
),
GENERAL
(
1
,
"普通"
);
levelEnum
(
Integer
level
,
String
desc
)
{
this
.
level
=
level
;
this
.
desc
=
desc
;
}
private
Integer
level
;
private
String
desc
;
public
Integer
getLevel
()
{
return
level
;
}
public
void
setLevel
(
Integer
level
)
{
this
.
level
=
level
;
}
public
String
getDesc
()
{
return
desc
;
}
public
void
setDesc
(
String
desc
)
{
this
.
desc
=
desc
;
}
}
}
xx-order/xx-order-server/src/main/resources/mapper/BaseOrderMapper.xml
View file @
5907b774
...
...
@@ -352,4 +352,21 @@
) AS `omd` ON omd.order_id=bo.id
ORDER BY bo.`creatTime` DESC
</select>
<select
id=
"selectOrdersByTypeAndTime"
resultType=
"com.xxfc.platform.order.pojo.dto.OrderDTO"
>
select bo.*,omd.memberLevel from (select `id`,`type`,`status`,`order_amount` AS `orderAmount`, `real_amount`AS
`realAmount`,`order_origin` AS `orderOrigin`,
`pay_way` AS `payWay`,`crt_time`AS `crtTime`
from `base_order` where `has_pay`=1 and `crt_time` between #{startDate} and #{endDate} and `type` IN
<foreach
collection=
"types"
item=
"type"
open=
"("
close=
")"
separator=
","
>
#{type}
</foreach>
) AS `bo`
LEFT JOIN (select `order_id`,`start_company_id` from `order_rent_vehicle_detail`) AS `orvd` ON
orvd.order_id=bo.id
LEFT JOIN (select `order_id`,`start_company_id` from `order_tour_detail`) AS `otd` ON otd.order_id=bo.id
LEFT JOIN (select `order_id`,`member_level` AS `memberLevel` from `order_member_detail`) AS `omd` ON
omd.order_id=bo.id;
</select>
</mapper>
\ No newline at end of file
xx-order/xx-order-server/src/main/resources/mapper/OrderReceivedStatisticsMapper.xml
View file @
5907b774
...
...
@@ -16,6 +16,7 @@
<result
property=
"isFinish"
column=
"is_finish"
/>
<result
property=
"orderOrigin"
column=
"order_origin"
/>
<result
property=
"payWay"
column=
"pay_way"
/>
<result
property=
"companyId"
column=
"company_id"
/>
<result
property=
"crtTime"
column=
"crt_time"
/>
</resultMap>
...
...
@@ -30,6 +31,7 @@
<if
test=
"payWay!=null"
>
and `pay_way`=#{payWay}
</if>
<if
test=
"startDate!=null and endDate!=null"
>
and `date` between #{startDate} and #{endDate}
</if>
...
...
xx-order/xx-order-server/src/test/java/ServiceTest.java
View file @
5907b774
import
com.xxfc.platform.order.OrderApplication
;
import
com.xxfc.platform.order.biz.DailyOrderStatisticsBiz
;
import
com.xxfc.platform.order.biz.OrderMemberReceivedStatisticsBiz
;
import
com.xxfc.platform.order.jobhandler.BaseOrderStatisticsJobHandler
;
import
org.joda.time.DateTime
;
import
org.junit.Test
;
...
...
@@ -28,12 +29,22 @@ public class ServiceTest {
@Autowired
private
BaseOrderStatisticsJobHandler
handler
;
@Autowired
private
OrderMemberReceivedStatisticsBiz
orderMemberReceivedStatisticsBiz
;
@Test
public
void
testSchedu
(){
dailyOrderStatisticsBiz
.
statisticalOrder
(
1
);
}
@Test
public
void
testMemberStatisticsInsert
(){
orderMemberReceivedStatisticsBiz
.
orderMemberReceivedStatistics
();
}
@Test
public
void
test
()
throws
ParseException
{
String
d
=
"2019-09-01"
;
...
...
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