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
cb58469c
Commit
cb58469c
authored
Nov 14, 2019
by
libin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
会员与租车订单统计
parent
92091d49
Changes
12
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
320 additions
and
51 deletions
+320
-51
LevelEnum.java
...ithub/wxiaoqi/security/common/enumconstant/LevelEnum.java
+38
-0
OrderMemberReceivedStatistics.java
.../platform/order/entity/OrderMemberReceivedStatistics.java
+1
-0
OrderReceivedStatisticsBase.java
...fc/platform/order/entity/OrderReceivedStatisticsBase.java
+1
-2
OrderDTO.java
.../main/java/com/xxfc/platform/order/pojo/dto/OrderDTO.java
+40
-0
BaseOrderBiz.java
...c/main/java/com/xxfc/platform/order/biz/BaseOrderBiz.java
+8
-1
OrderMemberReceivedStatisticsBiz.java
.../platform/order/biz/OrderMemberReceivedStatisticsBiz.java
+91
-4
OrderRentVehicleReceivedStatisticsBiz.java
...form/order/biz/OrderRentVehicleReceivedStatisticsBiz.java
+94
-2
BaseOrderMapper.java
.../java/com/xxfc/platform/order/mapper/BaseOrderMapper.java
+5
-0
OrderMemberReceivedStatisticsMapper.java
...orm/order/mapper/OrderMemberReceivedStatisticsMapper.java
+2
-1
OrderMemberService.java
...a/com/xxfc/platform/order/service/OrderMemberService.java
+7
-36
BaseOrderMapper.xml
...rder-server/src/main/resources/mapper/BaseOrderMapper.xml
+22
-5
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 @
cb58469c
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/entity/OrderMemberReceivedStatistics.java
View file @
cb58469c
...
@@ -5,6 +5,7 @@ import java.math.BigDecimal;
...
@@ -5,6 +5,7 @@ import java.math.BigDecimal;
import
java.util.Date
;
import
java.util.Date
;
import
javax.persistence.*
;
import
javax.persistence.*
;
import
cn.hutool.core.clone.CloneSupport
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.Data
;
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/OrderReceivedStatisticsBase.java
View file @
cb58469c
...
@@ -18,7 +18,6 @@ import java.util.Date;
...
@@ -18,7 +18,6 @@ import java.util.Date;
*/
*/
@Data
@Data
public
class
OrderReceivedStatisticsBase
{
public
class
OrderReceivedStatisticsBase
{
/**
/**
*
*
*/
*/
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/dto/OrderDTO.java
0 → 100644
View file @
cb58469c
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
Integer
memberLevel
;
/**
* 租车相关
*/
}
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/BaseOrderBiz.java
View file @
cb58469c
...
@@ -30,6 +30,7 @@ import com.xxfc.platform.order.pojo.account.OrderAccountDetail;
...
@@ -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.calculate.InProgressVO
;
import
com.xxfc.platform.order.pojo.dto.MemberOrderBo
;
import
com.xxfc.platform.order.pojo.dto.MemberOrderBo
;
import
com.xxfc.platform.order.pojo.dto.MemberOrderFindDTO
;
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.mq.OrderMQDTO
;
import
com.xxfc.platform.order.pojo.order.OrderListVo
;
import
com.xxfc.platform.order.pojo.order.OrderListVo
;
import
com.xxfc.platform.order.pojo.order.OrderPageVO
;
import
com.xxfc.platform.order.pojo.order.OrderPageVO
;
...
@@ -53,6 +54,7 @@ import com.xxfc.platform.vehicle.pojo.CompanyDetail;
...
@@ -53,6 +54,7 @@ import com.xxfc.platform.vehicle.pojo.CompanyDetail;
import
com.xxfc.platform.vehicle.util.DistanceUtil
;
import
com.xxfc.platform.vehicle.util.DistanceUtil
;
import
lombok.Data
;
import
lombok.Data
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.joda.time.DateTime
;
import
org.joda.time.DateTime
;
import
org.joda.time.format.DateTimeFormat
;
import
org.joda.time.format.DateTimeFormat
;
...
@@ -60,6 +62,7 @@ import org.joda.time.format.DateTimeFormatter;
...
@@ -60,6 +62,7 @@ import org.joda.time.format.DateTimeFormatter;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
tk.mybatis.mapper.entity.Example
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.*
;
import
java.util.*
;
...
@@ -781,7 +784,6 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
...
@@ -781,7 +784,6 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
public
UserFeign
getUserFeign
()
{
public
UserFeign
getUserFeign
()
{
return
userFeign
;
return
userFeign
;
}
}
/**
/**
* 订单查询类
* 订单查询类
*/
*/
...
@@ -804,4 +806,9 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
...
@@ -804,4 +806,9 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
return
Lists
.
newArrayList
();
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/OrderMemberReceivedStatisticsBiz.java
View file @
cb58469c
package
com
.
xxfc
.
platform
.
order
.
biz
;
package
com
.
xxfc
.
platform
.
order
.
biz
;
import
cn.hutool.core.date.DateField
;
import
cn.hutool.core.date.DateTime
;
import
cn.hutool.core.date.DateTime
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.date.TimeInterval
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.enumconstant.LevelEnum
;
import
com.xxfc.platform.order.entity.OrderMemberReceivedStatistics
;
import
com.xxfc.platform.order.entity.OrderMemberReceivedStatistics
;
import
com.xxfc.platform.order.mapper.OrderMemberReceivedStatisticsMapper
;
import
com.xxfc.platform.order.mapper.OrderMemberReceivedStatisticsMapper
;
import
com.xxfc.platform.order.pojo.dto.OrderDTO
;
import
com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO
;
import
com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO
;
import
lombok.RequiredArgsConstructor
;
import
lombok.RequiredArgsConstructor
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.http.client.utils.CloneUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
com.xxfc.platform.order.entity.BaseOrder
;
import
com.xxfc.platform.order.entity.BaseOrder
;
import
java.util.List
;
import
java.math.BigDecimal
;
import
java.util.*
;
import
java.util.function.Supplier
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
/**
/**
* 会员订单统计
* 会员订单统计
...
@@ -23,15 +34,91 @@ import java.util.List;
...
@@ -23,15 +34,91 @@ import java.util.List;
@Service
@Service
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
@RequiredArgsConstructor
(
onConstructor
=
@__
(
@Autowired
))
@RequiredArgsConstructor
(
onConstructor
=
@__
(
@Autowired
))
public
class
OrderMemberReceivedStatisticsBiz
extends
BaseBiz
<
OrderMemberReceivedStatisticsMapper
,
OrderMemberReceivedStatistics
>
{
public
class
OrderMemberReceivedStatisticsBiz
extends
BaseBiz
<
OrderMemberReceivedStatisticsMapper
,
OrderMemberReceivedStatistics
>
{
private
final
BaseOrderBiz
baseOrderBiz
;
private
final
BaseOrderBiz
baseOrderBiz
;
private
final
int
FINISH
=
6
;
private
final
int
CANCEL
=
2
;
private
final
int
UNFINISH
=
3
;
private
final
int
PAYWAYTEMP
=
99
;
public
List
<
OrderMemberReceivedStatistics
>
selectOrderReceivedStatistics
(
OrderReceivedStatisticsFindDTO
orderReceivedStatisticsFindDTO
)
{
public
List
<
OrderMemberReceivedStatistics
>
selectOrderReceivedStatistics
(
OrderReceivedStatisticsFindDTO
orderReceivedStatisticsFindDTO
)
{
return
mapper
.
selectOrderMemberReceivedStatistics
(
orderReceivedStatisticsFindDTO
);
return
mapper
.
selectOrderMemberReceivedStatistics
(
orderReceivedStatisticsFindDTO
);
}
}
public
void
orderMemberReceivedStatistics
(){
public
void
orderMemberReceivedStatistics
(
Date
date
)
{
DateTime
yesterday
=
DateUtil
.
yesterday
();
DateTime
yesterday
=
DateUtil
.
yesterday
();
// List<BaseOrder> baseOrders = baseOrderBiz.selectOrdersByTypeAndTime(3);
Date
startDate
=
date
==
null
?
DateUtil
.
beginOfDay
(
yesterday
).
toJdkDate
()
:
DateUtil
.
beginOfDay
(
date
);
Date
endDate
=
date
==
null
?
DateUtil
.
endOfDay
(
yesterday
).
toJdkDate
()
:
DateUtil
.
beginOfDay
(
date
);
String
year
=
String
.
valueOf
(
yesterday
.
getField
(
DateField
.
YEAR
));
String
month
=
String
.
format
(
"%s%d"
,
year
,
yesterday
.
getField
(
DateField
.
MONTH
));
String
weekOfYear
=
String
.
format
(
"%s%d"
,
year
,
yesterday
.
getField
(
DateField
.
WEEK_OF_YEAR
));
List
<
OrderDTO
>
orders
=
baseOrderBiz
.
selectOrdersByTypeAndTime
(
Arrays
.
asList
(
3
),
startDate
,
endDate
);
TimeInterval
timer
=
DateUtil
.
timer
();
//状态(3) -->下单来源(3)--->支付方式(2) --> 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
(
x
.
getStatus
()
!=
FINISH
)
{
x
.
setPayWay
(
PAYWAYTEMP
);
}
}).
collect
(
Collectors
.
groupingBy
(
OrderDTO:
:
getStatus
,
Collectors
.
groupingBy
(
OrderDTO:
:
getOrderOrigin
,
Collectors
.
groupingBy
(
OrderDTO:
:
getPayWay
,
Collectors
.
groupingBy
(
OrderDTO:
:
getMemberLevel
,
Collectors
.
toList
())))));
List
<
OrderMemberReceivedStatistics
>
orderMemberReceivedStatisticsList
=
new
ArrayList
<>(
18
);
ordersMap
.
forEach
((
KS
,
VS
)
->
{
//KS:状态 (完成|未完成|取消)
VS
.
forEach
((
KO
,
VO
)
->
{
//KO:下单来源状态 (app|小程序|后台)
VO
.
forEach
((
KP
,
VP
)
->
{
//KP:支付方式 (微信|支付宝)
OrderMemberReceivedStatistics
orderMemberReceivedStatistics
=
new
OrderMemberReceivedStatistics
();
orderMemberReceivedStatistics
.
setCrtTime
(
new
Date
());
orderMemberReceivedStatistics
.
setCompanyId
(
1
);
orderMemberReceivedStatistics
.
setIsFinish
(
KS
);
orderMemberReceivedStatistics
.
setOrderOrigin
(
KO
);
orderMemberReceivedStatistics
.
setPayWay
(
PAYWAYTEMP
==
KP
?
null
:
KP
);
orderMemberReceivedStatistics
.
setDate
(
startDate
);
orderMemberReceivedStatistics
.
setYear
(
year
);
orderMemberReceivedStatistics
.
setMonth
(
month
);
orderMemberReceivedStatistics
.
setWeekOfYear
(
weekOfYear
);
//1.普通会员
List
<
OrderDTO
>
generalOrders
=
VP
.
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
=
VP
.
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
=
VP
.
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
);
});
});
});
long
interval
=
timer
.
interval
();
System
.
out
.
println
(
"花费时间:"
+
interval
);
insertMemberReceivedStatisticsBatch
(
orderMemberReceivedStatisticsList
);
}
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/OrderRentVehicleReceivedStatisticsBiz.java
View file @
cb58469c
package
com
.
xxfc
.
platform
.
order
.
biz
;
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.pojo.dto.OrderDTO
;
import
com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO
;
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.stereotype.Service
;
import
com.xxfc.platform.order.entity.OrderRentVehicleReceivedStatistics
;
import
com.xxfc.platform.order.entity.OrderRentVehicleReceivedStatistics
;
...
@@ -8,7 +15,8 @@ import com.xxfc.platform.order.mapper.OrderRentVehicleReceivedStatisticsMapper;
...
@@ -8,7 +15,8 @@ import com.xxfc.platform.order.mapper.OrderRentVehicleReceivedStatisticsMapper;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.List
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
/**
* 租车订单统计
* 租车订单统计
...
@@ -19,8 +27,92 @@ import java.util.List;
...
@@ -19,8 +27,92 @@ import java.util.List;
*/
*/
@Service
@Service
@Transactional
(
rollbackFor
=
Exception
.
class
)
@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
int
FINISH
=
6
;
private
final
int
CANCEL
=
2
;
private
final
int
UNFINISH
=
3
;
private
final
int
PAYWAYTEMP
=
99
;
public
List
<
OrderRentVehicleReceivedStatistics
>
selectOrderReceivedStatistics
(
OrderReceivedStatisticsFindDTO
orderReceivedStatisticsFindDTO
)
{
public
List
<
OrderRentVehicleReceivedStatistics
>
selectOrderReceivedStatistics
(
OrderReceivedStatisticsFindDTO
orderReceivedStatisticsFindDTO
)
{
return
mapper
.
selectOrderRentVehicleReceivedStatistics
(
orderReceivedStatisticsFindDTO
);
return
mapper
.
selectOrderRentVehicleReceivedStatistics
(
orderReceivedStatisticsFindDTO
);
}
}
public
void
orderRentVehicleReceivedStatistics
(
Date
date
)
{
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
);
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
.
DAY_OF_YEAR
));
List
<
OrderDTO
>
orders
=
baseOrderBiz
.
selectOrdersByTypeAndTime
(
Arrays
.
asList
(
1
),
startDate
,
endDate
);
//分公司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
());
/* orderRentVehicleReceivedStatistics.setTotalAmount();
orderRentVehicleReceivedStatistics.setRealAmount();*/
for
(
OrderDTO
orderDTO
:
orderDTOList
)
{
//完成单
if
(
FINISH
==
statusKey
)
{
}
//未完成单
if
(
UNFINISH
==
statusKey
)
{
}
//取消单
if
(
CANCEL
==
statusKey
)
{
}
}
}
}
}
}
}
}
}
\ No newline at end of file
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/mapper/BaseOrderMapper.java
View file @
cb58469c
...
@@ -3,12 +3,14 @@ package com.xxfc.platform.order.mapper;
...
@@ -3,12 +3,14 @@ package com.xxfc.platform.order.mapper;
import
com.xxfc.platform.order.entity.BaseOrder
;
import
com.xxfc.platform.order.entity.BaseOrder
;
import
com.xxfc.platform.order.pojo.dto.MemberOrderBo
;
import
com.xxfc.platform.order.pojo.dto.MemberOrderBo
;
import
com.xxfc.platform.order.pojo.dto.MemberOrderFindDTO
;
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.OrderListVo
;
import
com.xxfc.platform.order.pojo.order.OrderPageVO
;
import
com.xxfc.platform.order.pojo.order.OrderPageVO
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Param
;
import
tk.mybatis.mapper.common.Mapper
;
import
tk.mybatis.mapper.common.Mapper
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -37,4 +39,7 @@ public interface BaseOrderMapper extends Mapper<BaseOrder> {
...
@@ -37,4 +39,7 @@ public interface BaseOrderMapper extends Mapper<BaseOrder> {
List
<
MemberOrderBo
>
findMemberOrders
(
MemberOrderFindDTO
memberOrderFindDTO
);
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 @
cb58469c
...
@@ -3,6 +3,7 @@ package com.xxfc.platform.order.mapper;
...
@@ -3,6 +3,7 @@ package com.xxfc.platform.order.mapper;
import
com.xxfc.platform.order.entity.OrderMemberReceivedStatistics
;
import
com.xxfc.platform.order.entity.OrderMemberReceivedStatistics
;
import
com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO
;
import
com.xxfc.platform.order.pojo.dto.OrderReceivedStatisticsFindDTO
;
import
tk.mybatis.mapper.common.Mapper
;
import
tk.mybatis.mapper.common.Mapper
;
import
tk.mybatis.mapper.common.special.InsertListMapper
;
import
java.util.List
;
import
java.util.List
;
...
@@ -13,7 +14,7 @@ import java.util.List;
...
@@ -13,7 +14,7 @@ import java.util.List;
* @email 18178966185@163.com
* @email 18178966185@163.com
* @date 2019-11-08 18:03:42
* @date 2019-11-08 18:03:42
*/
*/
public
interface
OrderMemberReceivedStatisticsMapper
extends
Mapper
<
OrderMemberReceivedStatistics
>
{
public
interface
OrderMemberReceivedStatisticsMapper
extends
Mapper
<
OrderMemberReceivedStatistics
>
,
InsertListMapper
<
OrderMemberReceivedStatistics
>
{
List
<
OrderMemberReceivedStatistics
>
selectOrderMemberReceivedStatistics
(
OrderReceivedStatisticsFindDTO
orderReceivedStatisticsFindDTO
);
List
<
OrderMemberReceivedStatistics
>
selectOrderMemberReceivedStatistics
(
OrderReceivedStatisticsFindDTO
orderReceivedStatisticsFindDTO
);
}
}
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/service/OrderMemberService.java
View file @
cb58469c
...
@@ -6,6 +6,7 @@ import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
...
@@ -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.UserFeign
;
import
com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface
;
import
com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface
;
import
com.github.wxiaoqi.security.auth.client.config.UserAuthConfig
;
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.exception.BaseException
;
import
com.github.wxiaoqi.security.common.util.process.ResultCode
;
import
com.github.wxiaoqi.security.common.util.process.ResultCode
;
import
com.github.wxiaoqi.security.common.vo.PageDataVO
;
import
com.github.wxiaoqi.security.common.vo.PageDataVO
;
...
@@ -412,57 +413,27 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
...
@@ -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
));
BigDecimal
totalAmount
=
baseOrders
.
stream
().
filter
(
x
->
x
.
getHasPay
()==
1
).
map
(
MemberOrderBo:
:
getOrderAmount
).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
));
memberOrderStatisticsBo
.
setTotalAmount
(
totalAmount
);
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
());
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
;
diamondHashPayOrders
=
diamondHashPayOrders
==
null
?
Collections
.
EMPTY_LIST
:
diamondHashPayOrders
;
BigDecimal
diamondAmount
=
diamondHashPayOrders
.
stream
().
map
(
MemberOrderBo:
:
getOrderAmount
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
BigDecimal
diamondAmount
=
diamondHashPayOrders
.
stream
().
map
(
MemberOrderBo:
:
getOrderAmount
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
memberOrderStatisticsBo
.
setTotalDiamondAmount
(
diamondAmount
);
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
());
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
;
goldHasPayOrders
=
goldHasPayOrders
==
null
?
Collections
.
EMPTY_LIST
:
goldHasPayOrders
;
BigDecimal
goldAmount
=
goldHasPayOrders
.
stream
().
map
(
MemberOrderBo:
:
getOrderAmount
).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
));
BigDecimal
goldAmount
=
goldHasPayOrders
.
stream
().
map
(
MemberOrderBo:
:
getOrderAmount
).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
));
memberOrderStatisticsBo
.
setTotalGoldAmount
(
goldAmount
);
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
());
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
;
generalHasPayOrders
=
generalHasPayOrders
==
null
?
Collections
.
EMPTY_LIST
:
generalHasPayOrders
;
BigDecimal
generalAmount
=
generalHasPayOrders
.
stream
().
map
(
MemberOrderBo:
:
getOrderAmount
).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
));
BigDecimal
generalAmount
=
generalHasPayOrders
.
stream
().
map
(
MemberOrderBo:
:
getOrderAmount
).
reduce
(
BigDecimal
.
ZERO
,
(
x
,
y
)
->
x
.
add
(
y
));
memberOrderStatisticsBo
.
setTotalGeneralAmount
(
generalAmount
);
memberOrderStatisticsBo
.
setTotalGeneralAmount
(
generalAmount
);
return
memberOrderStatisticsBo
;
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 @
cb58469c
...
@@ -352,4 +352,21 @@
...
@@ -352,4 +352,21 @@
) AS `omd` ON omd.order_id=bo.id
) AS `omd` ON omd.order_id=bo.id
ORDER BY bo.`creatTime` DESC
ORDER BY bo.`creatTime` DESC
</select>
</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 `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>
</mapper>
\ No newline at end of file
xx-order/xx-order-server/src/test/java/ServiceTest.java
View file @
cb58469c
import
com.xxfc.platform.order.OrderApplication
;
import
com.xxfc.platform.order.OrderApplication
;
import
com.xxfc.platform.order.biz.DailyOrderStatisticsBiz
;
import
com.xxfc.platform.order.biz.DailyOrderStatisticsBiz
;
import
com.xxfc.platform.order.biz.OrderMemberReceivedStatisticsBiz
;
import
com.xxfc.platform.order.jobhandler.BaseOrderStatisticsJobHandler
;
import
com.xxfc.platform.order.jobhandler.BaseOrderStatisticsJobHandler
;
import
org.joda.time.DateTime
;
import
org.joda.time.DateTime
;
import
org.junit.Test
;
import
org.junit.Test
;
...
@@ -28,12 +29,22 @@ public class ServiceTest {
...
@@ -28,12 +29,22 @@ public class ServiceTest {
@Autowired
@Autowired
private
BaseOrderStatisticsJobHandler
handler
;
private
BaseOrderStatisticsJobHandler
handler
;
@Autowired
private
OrderMemberReceivedStatisticsBiz
orderMemberReceivedStatisticsBiz
;
@Test
@Test
public
void
testSchedu
(){
public
void
testSchedu
(){
dailyOrderStatisticsBiz
.
statisticalOrder
(
1
);
dailyOrderStatisticsBiz
.
statisticalOrder
(
1
);
}
}
@Test
public
void
testMemberStatisticsInsert
(){
orderMemberReceivedStatisticsBiz
.
orderMemberReceivedStatistics
();
}
@Test
@Test
public
void
test
()
throws
ParseException
{
public
void
test
()
throws
ParseException
{
String
d
=
"2019-09-01"
;
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