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
a8248fb0
Commit
a8248fb0
authored
Sep 17, 2019
by
周健威
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master-modify-cutAmount' into master-modify-cutAmount
parents
05afd2a5
c43fa74d
Changes
18
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
908 additions
and
294 deletions
+908
-294
DailyOrderStatistics.java
.../com/xxfc/platform/order/entity/DailyOrderStatistics.java
+4
-1
DailyTravelOrderStatistics.java
...xfc/platform/order/entity/DailyTravelOrderStatistics.java
+9
-3
DailyVehicleOrderStatistics.java
...fc/platform/order/entity/DailyVehicleOrderStatistics.java
+18
-11
OrderStatistics.java
.../java/com/xxfc/platform/order/entity/OrderStatistics.java
+27
-17
HomePageOrderData.java
.../java/com/xxfc/platform/order/pojo/HomePageOrderData.java
+23
-0
OrderAccountDTO.java
...com/xxfc/platform/order/pojo/account/OrderAccountDTO.java
+18
-0
DailyMembersOrderStatisticsBiz.java
...fc/platform/order/biz/DailyMembersOrderStatisticsBiz.java
+60
-20
DailyOrderStatisticsBiz.java
.../com/xxfc/platform/order/biz/DailyOrderStatisticsBiz.java
+3
-3
DailyTravelOrderStatisticsBiz.java
...xfc/platform/order/biz/DailyTravelOrderStatisticsBiz.java
+243
-36
DailyVehicleOrderStatisticsBiz.java
...fc/platform/order/biz/DailyVehicleOrderStatisticsBiz.java
+383
-132
OrderAccountBiz.java
...ain/java/com/xxfc/platform/order/biz/OrderAccountBiz.java
+21
-0
OrderStatisticsBiz.java
.../java/com/xxfc/platform/order/biz/OrderStatisticsBiz.java
+27
-14
OrderAccountMapper.java
...va/com/xxfc/platform/order/mapper/OrderAccountMapper.java
+7
-1
OrderStatisticsController.java
...form/order/rest/background/OrderStatisticsController.java
+19
-3
DailyMembersOrderStatisticsMapper.xml
...in/resources/mapper/DailyMembersOrderStatisticsMapper.xml
+3
-14
DailyTravelOrderStatisticsMapper.xml
...ain/resources/mapper/DailyTravelOrderStatisticsMapper.xml
+5
-16
DailyVehicleOrderStatisticsMapper.xml
...in/resources/mapper/DailyVehicleOrderStatisticsMapper.xml
+9
-23
OrderAccountMapper.xml
...r-server/src/main/resources/mapper/OrderAccountMapper.xml
+29
-0
No files found.
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/DailyOrderStatistics.java
View file @
a8248fb0
...
@@ -7,6 +7,7 @@ import org.springframework.format.annotation.DateTimeFormat;
...
@@ -7,6 +7,7 @@ import org.springframework.format.annotation.DateTimeFormat;
import
javax.persistence.Column
;
import
javax.persistence.Column
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.Id
;
import
javax.persistence.Id
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.Date
;
...
@@ -15,7 +16,9 @@ import java.util.Date;
...
@@ -15,7 +16,9 @@ import java.util.Date;
* @author Administrator
* @author Administrator
*/
*/
@Data
@Data
public
class
DailyOrderStatistics
{
public
class
DailyOrderStatistics
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@Id
@Id
@GeneratedValue
(
generator
=
"JDBC"
)
@GeneratedValue
(
generator
=
"JDBC"
)
private
Integer
id
;
private
Integer
id
;
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/DailyTravelOrderStatistics.java
View file @
a8248fb0
...
@@ -13,9 +13,15 @@ import java.math.BigDecimal;
...
@@ -13,9 +13,15 @@ import java.math.BigDecimal;
@Data
@Data
@Table
(
name
=
"daily_travel_order_statistics"
)
@Table
(
name
=
"daily_travel_order_statistics"
)
public
class
DailyTravelOrderStatistics
extends
DailyOrderStatistics
{
public
class
DailyTravelOrderStatistics
extends
DailyOrderStatistics
{
/**
* 违约总额
*/
@Column
(
name
=
"default_money "
)
private
BigDecimal
defaultMoney
;
/**
/**
*
取消订单总
额
*
退还订单金
额
*/
*/
@Column
(
name
=
"
penal_sum
"
)
@Column
(
name
=
"
return_gmv
"
)
private
BigDecimal
penalSum
;
private
BigDecimal
returnGmv
;
}
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/DailyVehicleOrderStatistics.java
View file @
a8248fb0
...
@@ -17,27 +17,28 @@ import java.util.Date;
...
@@ -17,27 +17,28 @@ import java.util.Date;
/**
/**
* 每日租车订单统计
* 每日租车订单统计
*
* @author Administrator
* @author Administrator
*/
*/
@Data
@Data
@Table
(
name
=
"daily_vehicle_order_statistics"
)
@Table
(
name
=
"daily_vehicle_order_statistics"
)
public
class
DailyVehicleOrderStatistics
extends
DailyOrderStatistics
{
public
class
DailyVehicleOrderStatistics
extends
DailyOrderStatistics
{
/**
/**
* 预交押金总额
* 预交押金总额
*/
*/
@Column
(
name
=
"security_deposit"
)
@Column
(
name
=
"security_deposit"
)
private
BigDecimal
securityDeposit
;
private
BigDecimal
securityDeposit
;
/**
/**
* 退还押金总额
* 退还押金总额
*/
*/
@Column
(
name
=
"refund_security_deposit"
)
@Column
(
name
=
"refund_security_deposit"
)
private
BigDecimal
refundSecurityDeposit
;
private
BigDecimal
refundSecurityDeposit
;
/**
/**
* 赔偿总额
*
损坏
赔偿总额
*/
*/
@Column
(
name
=
"compensation"
)
@Column
(
name
=
"compensation"
)
private
BigDecimal
compensation
;
private
BigDecimal
compensation
;
...
@@ -46,19 +47,25 @@ public class DailyVehicleOrderStatistics extends DailyOrderStatistics{
...
@@ -46,19 +47,25 @@ public class DailyVehicleOrderStatistics extends DailyOrderStatistics{
* 违章总额
* 违章总额
*/
*/
@Column
(
name
=
"forfeit"
)
@Column
(
name
=
"forfeit"
)
private
BigDecimal
violationMoney
;
private
BigDecimal
violationMoney
;
/**
/**
*
延期总
额
*
退还订单金
额
*/
*/
@Column
(
name
=
"
postpone
"
)
@Column
(
name
=
"
return_gmv
"
)
private
BigDecimal
postpone
;
private
BigDecimal
returnGmv
;
/**
/**
*
取消订单扣款
总额
*
违约
总额
*/
*/
@Column
(
name
=
"penal_sum"
)
@Column
(
name
=
"default_money "
)
private
BigDecimal
penalSum
;
private
BigDecimal
defaultMoney
;
/**
* 消费金总额
*/
@Column
(
name
=
"total_expenditure"
)
private
BigDecimal
totalExpenditure
;
}
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/OrderStatistics.java
View file @
a8248fb0
...
@@ -12,48 +12,58 @@ import java.math.BigDecimal;
...
@@ -12,48 +12,58 @@ import java.math.BigDecimal;
*/
*/
@Data
@Data
@ApiModel
(
value
=
"
月
订单统计实体"
)
@ApiModel
(
value
=
"
历史
订单统计实体"
)
public
class
OrderStatistics
{
public
class
OrderStatistics
{
/**
/**
*
月成
交总金额
*
历史
交总金额
*/
*/
@ApiModelProperty
(
value
=
"
月成
交总金额"
)
@ApiModelProperty
(
value
=
"
历史
交总金额"
)
private
BigDecimal
totalGmv
;
private
BigDecimal
totalGmv
;
/**
/**
*
月
押金总额
*
历史
押金总额
*/
*/
@ApiModelProperty
(
value
=
"
月
押金总额"
)
@ApiModelProperty
(
value
=
"
历史
押金总额"
)
private
BigDecimal
totalSecurityDeposit
;
private
BigDecimal
totalSecurityDeposit
;
/**
/**
*
月
退还押金总额
*
历史
退还押金总额
*/
*/
@ApiModelProperty
(
value
=
"
月
退还押金总额"
)
@ApiModelProperty
(
value
=
"
历史
退还押金总额"
)
private
BigDecimal
totalRefundSecurityDeposit
;
private
BigDecimal
totalRefundSecurityDeposit
;
/**
/**
*
月
赔偿总额
*
历史
赔偿总额
*/
*/
@ApiModelProperty
(
value
=
"
月
赔偿总额"
)
@ApiModelProperty
(
value
=
"
历史
赔偿总额"
)
private
BigDecimal
totalCompensation
;
private
BigDecimal
totalCompensation
;
/**
/**
*
月
违章总额
*
历史
违章总额
*/
*/
@ApiModelProperty
(
value
=
"
月
违章总额"
)
@ApiModelProperty
(
value
=
"
历史
违章总额"
)
private
BigDecimal
totalForfeit
;
private
BigDecimal
totalForfeit
;
/**
* 历史订单退款
*/
@ApiModelProperty
(
value
=
"历史订单退款"
)
private
BigDecimal
totalReturnGmv
;
/**
/**
*
月取消订单
扣款总额
*
历史延期
扣款总额
*/
*/
@ApiModelProperty
(
value
=
"
月取消订单
扣款总额"
)
@ApiModelProperty
(
value
=
"
历史延期
扣款总额"
)
private
BigDecimal
total
PenalSum
;
private
BigDecimal
total
DefaultMoney
;
/**
/**
*
月延期扣款
总额
*
历史实际消费
总额
*/
*/
@ApiModelProperty
(
value
=
"
月延期扣款
总额"
)
@ApiModelProperty
(
value
=
"
实际消费
总额"
)
private
BigDecimal
total
Postpon
e
;
private
BigDecimal
total
Expenditur
e
;
}
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/HomePageOrderData.java
0 → 100644
View file @
a8248fb0
package
com
.
xxfc
.
platform
.
order
.
pojo
;
import
lombok.Data
;
import
java.math.BigDecimal
;
@Data
public
class
HomePageOrderData
{
/**
* 订单总额
*/
private
BigDecimal
totalOrders
;
/**
* 为退还押金总额
*/
private
BigDecimal
totalOutstandingDeposit
;
/**
* 额外赔款
*/
private
BigDecimal
additionalIndemnity
;
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/account/OrderAccountDTO.java
0 → 100644
View file @
a8248fb0
package
com
.
xxfc
.
platform
.
order
.
pojo
.
account
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.xxfc.platform.order.entity.OrderAccount
;
import
lombok.Data
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
javax.persistence.Column
;
@Data
public
class
OrderAccountDTO
extends
OrderAccount
{
@Column
(
name
=
"companyId"
)
private
Integer
companyId
;
@Column
(
name
=
"oneDay"
)
private
String
oneDay
;
}
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/DailyMembersOrderStatisticsBiz.java
View file @
a8248fb0
package
com
.
xxfc
.
platform
.
order
.
biz
;
package
com
.
xxfc
.
platform
.
order
.
biz
;
import
cn.hutool.json.JSONUtil
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.exception.BaseException
;
import
com.github.wxiaoqi.security.common.exception.BaseException
;
import
com.google.common.collect.Lists
;
import
com.xxfc.platform.order.contant.enumerate.OrderTypeEnum
;
import
com.xxfc.platform.order.entity.DailyMembersOrderStatistics
;
import
com.xxfc.platform.order.entity.DailyMembersOrderStatistics
;
import
com.xxfc.platform.order.entity.OrderAccount
;
import
com.xxfc.platform.order.entity.OrderStatistics
;
import
com.xxfc.platform.order.entity.OrderStatistics
;
import
com.xxfc.platform.order.mapper.DailyMembersOrderStatisticsMapper
;
import
com.xxfc.platform.order.mapper.DailyMembersOrderStatisticsMapper
;
import
com.xxfc.platform.order.pojo.account.OrderAccountDTO
;
import
com.xxfc.platform.order.pojo.account.OrderAccountDetail
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.beanutils.BeanUtils
;
import
org.apache.commons.beanutils.BeanUtils
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.interceptor.TransactionAspectSupport
;
import
org.springframework.transaction.interceptor.TransactionAspectSupport
;
import
tk.mybatis.mapper.entity.Example
;
import
tk.mybatis.mapper.entity.Example
;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -33,31 +42,31 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta
...
@@ -33,31 +42,31 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta
@Value
(
"${order.day}"
)
@Value
(
"${order.day}"
)
private
Integer
day
;
private
Integer
day
;
/**
* 总公司id默认为1
*/
private
final
Integer
OMPANY_ID
=
1
;
@Autowired
private
OrderAccountBiz
accountBiz
;
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
boolean
memberOrderStatistics
()
{
public
boolean
saveDailyMembersOrderRecord
()
{
try
{
try
{
List
<
OrderAccountDTO
>
accountList
=
accountBiz
.
getOrderAccountByOrderType
(
OrderTypeEnum
.
MEMBER
.
getCode
(),
day
);
Map
<
String
,
Object
>
travelGmv
=
mapper
.
getTravelGmv
(
day
);
if
(
CollectionUtils
.
isNotEmpty
(
accountList
))
{
if
(
travelGmv
.
isEmpty
())
{
DailyMembersOrderStatistics
orderStatistics
=
new
DailyMembersOrderStatistics
();
return
true
;
ArrayList
<
OrderAccountDetail
>
orderAccountDetails
=
getOrderAccountDetail
(
accountList
);
}
if
(
CollectionUtils
.
isNotEmpty
(
orderAccountDetails
))
{
//获取订单总额
BigDecimal
gmv
=
getOrderAmountTotal
(
orderAccountDetails
);
DailyMembersOrderStatistics
MembersStatistics
=
new
DailyMembersOrderStatistics
();
orderStatistics
.
setGmv
(
gmv
);
BeanUtils
.
copyProperties
(
MembersStatistics
,
travelGmv
);
orderStatistics
.
setBranchCompanyId
(
OMPANY_ID
);
orderStatistics
.
setOneDay
(
accountList
.
get
(
0
).
getOneDay
());
String
oneDay
=
MembersStatistics
.
getOneDay
();
}
insertSelectiveRe
(
orderStatistics
);
if
(
StringUtils
.
isBlank
(
oneDay
))
{
throw
new
BaseException
();
}
}
Example
exa
=
new
Example
(
DailyMembersOrderStatistics
.
class
);
exa
.
createCriteria
().
andEqualTo
(
"oneDay"
,
oneDay
);
List
<
DailyMembersOrderStatistics
>
statistics
=
selectByExample
(
exa
);
if
(
CollectionUtils
.
isEmpty
(
statistics
))
{
insertSelective
(
MembersStatistics
);
}
return
true
;
return
true
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
TransactionAspectSupport
.
currentTransactionStatus
().
setRollbackOnly
();
TransactionAspectSupport
.
currentTransactionStatus
().
setRollbackOnly
();
...
@@ -66,6 +75,37 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta
...
@@ -66,6 +75,37 @@ public class DailyMembersOrderStatisticsBiz extends BaseBiz<DailyMembersOrderSta
}
}
}
}
/**
* 获取押金和
*
* @param orderAccountDetails
* @return
*/
private
BigDecimal
getOrderAmountTotal
(
ArrayList
<
OrderAccountDetail
>
orderAccountDetails
)
{
return
orderAccountDetails
.
stream
()
.
map
(
OrderAccountDetail:
:
getOrderAmount
)
.
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
}
/**
* 获取所有订单详情数据
*
* @param orderAccountDTOS
* @return
*/
private
ArrayList
<
OrderAccountDetail
>
getOrderAccountDetail
(
List
<
OrderAccountDTO
>
orderAccountDTOS
)
{
ArrayList
<
OrderAccountDetail
>
arrayList
=
Lists
.
newArrayList
();
orderAccountDTOS
.
parallelStream
()
.
map
(
OrderAccount:
:
getAccountDetail
)
.
forEach
(
detail
->
{
if
(
StringUtils
.
isNotBlank
(
detail
))
{
arrayList
.
add
(
JSONUtil
.
toBean
(
detail
,
OrderAccountDetail
.
class
));
}
});
return
arrayList
;
}
@Override
@Override
public
int
insertSelectiveRe
(
DailyMembersOrderStatistics
entity
)
{
public
int
insertSelectiveRe
(
DailyMembersOrderStatistics
entity
)
{
Date
date
=
new
Date
();
Date
date
=
new
Date
();
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/DailyOrderStatisticsBiz.java
View file @
a8248fb0
...
@@ -27,9 +27,9 @@ public class DailyOrderStatisticsBiz extends BaseBiz<DailyOrderStatisticsMapper,
...
@@ -27,9 +27,9 @@ public class DailyOrderStatisticsBiz extends BaseBiz<DailyOrderStatisticsMapper,
@Scheduled
(
cron
=
"0 0 2 * * ?"
)
@Scheduled
(
cron
=
"0 0 2 * * ?"
)
public
boolean
statisticalOrder
(){
public
boolean
statisticalOrder
(){
boolean
vehicleFlag
=
vehicleStatisticsBiz
.
StatisticsOfCarRentalOrders
();
boolean
vehicleFlag
=
vehicleStatisticsBiz
.
saveDailyVehicleOrderRecord
();
boolean
travelFlag
=
travelStatisticsBiz
.
StatisticsOfTravelOrders
();
boolean
travelFlag
=
travelStatisticsBiz
.
saveDailyTravelOrderRecord
();
boolean
membersFlag
=
membersStatisticsBiz
.
memberOrderStatistics
();
boolean
membersFlag
=
membersStatisticsBiz
.
saveDailyMembersOrderRecord
();
if
(
vehicleFlag
&&
travelFlag
&&
membersFlag
){
if
(
vehicleFlag
&&
travelFlag
&&
membersFlag
){
log
.
info
(
"----statisticalOrder:成功-----"
);
log
.
info
(
"----statisticalOrder:成功-----"
);
return
true
;
return
true
;
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/DailyTravelOrderStatisticsBiz.java
View file @
a8248fb0
...
@@ -2,20 +2,33 @@ package com.xxfc.platform.order.biz;
...
@@ -2,20 +2,33 @@ package com.xxfc.platform.order.biz;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.bean.copier.CopyOptions
;
import
cn.hutool.core.bean.copier.CopyOptions
;
import
cn.hutool.json.JSONUtil
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.exception.BaseException
;
import
com.github.wxiaoqi.security.common.exception.BaseException
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
import
com.xxfc.platform.order.contant.enumerate.DeductionTypeEnum
;
import
com.xxfc.platform.order.contant.enumerate.OrderTypeEnum
;
import
com.xxfc.platform.order.contant.enumerate.RefundTypeEnum
;
import
com.xxfc.platform.order.entity.DailyTravelOrderStatistics
;
import
com.xxfc.platform.order.entity.DailyTravelOrderStatistics
;
import
com.xxfc.platform.order.entity.OrderAccount
;
import
com.xxfc.platform.order.entity.OrderStatistics
;
import
com.xxfc.platform.order.entity.OrderStatistics
;
import
com.xxfc.platform.order.mapper.DailyTravelOrderStatisticsMapper
;
import
com.xxfc.platform.order.mapper.DailyTravelOrderStatisticsMapper
;
import
com.xxfc.platform.order.pojo.account.OrderAccountDTO
;
import
com.xxfc.platform.order.pojo.account.OrderAccountDeduction
;
import
com.xxfc.platform.order.pojo.account.OrderAccountDetail
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.collections.MapUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.interceptor.TransactionAspectSupport
;
import
org.springframework.transaction.interceptor.TransactionAspectSupport
;
import
tk.mybatis.mapper.entity.Example
;
import
tk.mybatis.mapper.entity.Example
;
import
java.math.BigDecimal
;
import
java.util.*
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -30,64 +43,258 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati
...
@@ -30,64 +43,258 @@ public class DailyTravelOrderStatisticsBiz extends BaseBiz<DailyTravelOrderStati
@Value
(
"${order.day}"
)
@Value
(
"${order.day}"
)
private
Integer
day
;
private
Integer
day
;
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
boolean
StatisticsOfTravelOrders
()
{
try
{
ArrayList
<
DailyTravelOrderStatistics
>
objects
=
new
ArrayList
<>();
@Autowired
List
<
DailyTravelOrderStatistics
>
travelGmv
=
mapper
.
getTravelGmv
(
day
);
private
OrderAccountBiz
accountBiz
;
objects
.
addAll
(
travelGmv
);
// @Transactional(rollbackFor = Exception.class)
List
<
DailyTravelOrderStatistics
>
travelPenalSum
=
mapper
.
getTravelPenalSum
(
day
);
// public boolean StatisticsOfTravelOrders() {
objects
.
addAll
(
travelPenalSum
);
// try {
insertByList
(
objects
);
//
// ArrayList<DailyTravelOrderStatistics> objects = new ArrayList<>();
// List<DailyTravelOrderStatistics> travelGmv = mapper.getTravelGmv(day);
// objects.addAll(travelGmv);
// List<DailyTravelOrderStatistics> travelPenalSum = mapper.getTravelPenalSum(day);
// objects.addAll(travelPenalSum);
// insertByList(objects);
//
// return true;
// } catch (Exception e) {
// e.printStackTrace();
// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
// return false;
// }
// }
//
// private void insertByList(ArrayList<DailyTravelOrderStatistics> objects) throws Exception {
//
// if (CollectionUtils.isNotEmpty(objects)) {
// HashMap<Integer, DailyTravelOrderStatistics> map = new HashMap<>();
// for (DailyTravelOrderStatistics object : objects) {
//
// DailyTravelOrderStatistics statistics = map.get(object.getBranchCompanyId());
// if (statistics == null) {
// statistics = new DailyTravelOrderStatistics();
// map.put(object.getBranchCompanyId(), statistics);
// }
//
// BeanUtil.copyProperties(object, statistics, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
//
// }
// String oneDay = map.entrySet().parallelStream().map(Map.Entry::getValue).collect(Collectors.toList()).get(0).getOneDay();
//
// if (StringUtils.isBlank(oneDay)) {
// throw new BaseException();
// }
// Example exa= new Example(DailyTravelOrderStatistics.class);
// exa.createCriteria().andEqualTo("oneDay",oneDay);
// List<DailyTravelOrderStatistics> statistics= selectByExample(exa);
// if (CollectionUtils.isEmpty(statistics)){
// for (Map.Entry<Integer, DailyTravelOrderStatistics> entry : map.entrySet()) {
// insertSelectiveRe(entry.getValue());
// }
// }else {
// log.error("今日已统计车辆订单,请不要重复统计!");
// }
//
////
//// for (Map.Entry<Integer, DailyTravelOrderStatistics> e : map.entrySet()) {
//// insertSelectiveRe(e.getValue());
//// }
// }
// }
/******************************************************************************************************************************/
/**
* 统计订单并保存到数据库当中
* @return
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
boolean
saveDailyTravelOrderRecord
()
{
try
{
//获取每日订单统计
List
<
DailyTravelOrderStatistics
>
orderStatistics
=
getDailyTravelOrderStatistics
();
if
(
CollectionUtils
.
isNotEmpty
(
orderStatistics
))
{
for
(
DailyTravelOrderStatistics
orderStatistic
:
orderStatistics
)
{
//保存统计
insertSelectiveRe
(
orderStatistic
);
}
}
return
true
;
return
true
;
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
log
.
error
(
e
.
getMessage
());
TransactionAspectSupport
.
currentTransactionStatus
().
setRollbackOnly
();
return
false
;
return
false
;
}
}
}
}
private
void
insertByList
(
ArrayList
<
DailyTravelOrderStatistics
>
objects
)
throws
Exception
{
private
List
<
DailyTravelOrderStatistics
>
getDailyTravelOrderStatistics
()
{
//获取当天所有订单账目
List
<
OrderAccountDTO
>
accountList
=
accountBiz
.
getOrderAccountByOrderType
(
OrderTypeEnum
.
TOUR
.
getCode
(),
day
);
if
(
CollectionUtils
.
isEmpty
(
accountList
))
{
return
null
;
}
//获取每个分公司,当天所有的订单帐目
HashMap
<
Integer
,
List
<
OrderAccountDTO
>>
companyIdmap
=
new
HashMap
<>();
for
(
OrderAccountDTO
orderAccountDTO
:
accountList
)
{
List
<
OrderAccountDTO
>
list
=
companyIdmap
.
get
(
orderAccountDTO
.
getCompanyId
());
if
(
list
==
null
)
{
list
=
new
ArrayList
<>();
companyIdmap
.
put
(
orderAccountDTO
.
getCompanyId
(),
list
);
}
list
.
add
(
orderAccountDTO
);
}
if
(
CollectionUtils
.
isNotEmpty
(
objects
))
{
//获取每个公司当天订单的总数据
HashMap
<
Integer
,
DailyTravelOrderStatistics
>
map
=
new
HashMap
<>();
ArrayList
<
DailyTravelOrderStatistics
>
statistics
=
new
ArrayList
<>();
for
(
DailyTravelOrderStatistics
object
:
objects
)
{
for
(
Map
.
Entry
<
Integer
,
List
<
OrderAccountDTO
>>
integerListEntry
:
companyIdmap
.
entrySet
())
{
//获取不同类型的账单详情
List
<
OrderAccountDTO
>
orderAccountDTOS
=
integerListEntry
.
getValue
();
if
(
CollectionUtils
.
isNotEmpty
(
orderAccountDTOS
))
{
Map
<
Integer
,
List
<
OrderAccountDTO
>>
typeMap
=
Maps
.
newHashMap
();
for
(
OrderAccountDTO
orderAccountDTO
:
orderAccountDTOS
)
{
List
<
OrderAccountDTO
>
list
=
typeMap
.
get
(
orderAccountDTO
.
getAccountType
());
if
(
list
==
null
)
{
list
=
new
ArrayList
<>();
companyIdmap
.
put
(
orderAccountDTO
.
getAccountType
(),
list
);
}
list
.
add
(
orderAccountDTO
);
}
DailyTravelOrderStatistics
statistics
=
map
.
get
(
object
.
getBranchCompanyId
());
if
(
MapUtils
.
isNotEmpty
(
typeMap
))
{
if
(
statistics
==
null
)
{
//获取该公司当天的账单数据
statistics
=
new
DailyTravelOrderStatistics
();
if
(
CollectionUtils
.
isNotEmpty
(
orderAccountDTOS
))
{
map
.
put
(
object
.
getBranchCompanyId
(),
statistics
);
DailyTravelOrderStatistics
dvos
=
getStatisticsByOrderAccountDetail
(
typeMap
);
if
(
dvos
!=
null
)
{
statistics
.
add
(
dvos
);
dvos
.
setBranchCompanyId
(
integerListEntry
.
getKey
());
dvos
.
setOneDay
(
orderAccountDTOS
.
get
(
0
).
getOneDay
());
}
}
}
}
}
}
return
statistics
;
}
BeanUtil
.
copyProperties
(
object
,
statistics
,
CopyOptions
.
create
().
setIgnoreNullValue
(
true
).
setIgnoreError
(
true
));
private
DailyTravelOrderStatistics
getStatisticsByOrderAccountDetail
(
Map
<
Integer
,
List
<
OrderAccountDTO
>>
map
)
{
//获取收入金额
DailyTravelOrderStatistics
orderStatistics
=
getGmvAndSecurityDeposit
(
map
);
//获取扣款和退还金额
refundAndDeductions
(
map
,
orderStatistics
);
return
orderStatistics
;
}
/**
* 获取扣款和退款金额
*
* @param map
* @param orderStatistics
*/
private
void
refundAndDeductions
(
Map
<
Integer
,
List
<
OrderAccountDTO
>>
map
,
DailyTravelOrderStatistics
orderStatistics
)
{
ArrayList
<
OrderAccountDTO
>
arrayList
=
Lists
.
newArrayList
();
for
(
Integer
key
:
map
.
keySet
())
{
if
(!
key
.
equals
(
RefundTypeEnum
.
ORDER_FUND
.
getCode
()))
{
arrayList
.
addAll
(
map
.
get
(
key
));
}
}
String
oneDay
=
map
.
entrySet
().
parallelStream
().
map
(
Map
.
Entry
::
getValue
).
collect
(
Collectors
.
toList
()).
get
(
0
).
getOneDay
();
}
if
(
CollectionUtils
.
isNotEmpty
(
arrayList
))
{
ArrayList
<
OrderAccountDetail
>
orderAccountDetail
=
getOrderAccountDetail
(
arrayList
);
if
(
CollectionUtils
.
isNotEmpty
(
orderAccountDetail
))
{
List
<
OrderAccountDeduction
>
OrderAccountDeductions
=
gettDeductions
(
orderAccountDetail
);
//获取违约总额
BigDecimal
bigDecimal
=
get
(
OrderAccountDeductions
,
new
ArrayList
<
Integer
>()
{{
add
(
DeductionTypeEnum
.
VIOLATE_CANCEL
.
getCode
());
}});
orderStatistics
.
setDefaultMoney
(
bigDecimal
);
//订单退还总额
orderStatistics
.
setReturnGmv
(
orderStatistics
.
getGmv
().
subtract
(
bigDecimal
));
if
(
StringUtils
.
isBlank
(
oneDay
))
{
throw
new
BaseException
();
}
}
Example
exa
=
new
Example
(
DailyTravelOrderStatistics
.
class
);
}
exa
.
createCriteria
().
andEqualTo
(
"oneDay"
,
oneDay
);
}
List
<
DailyTravelOrderStatistics
>
statistics
=
selectByExample
(
exa
);
if
(
CollectionUtils
.
isEmpty
(
statistics
)){
for
(
Map
.
Entry
<
Integer
,
DailyTravelOrderStatistics
>
entry
:
map
.
entrySet
())
{
insertSelectiveRe
(
entry
.
getValue
());
private
DailyTravelOrderStatistics
getGmvAndSecurityDeposit
(
Map
<
Integer
,
List
<
OrderAccountDTO
>>
map
)
{
}
DailyTravelOrderStatistics
orderStatistics
=
new
DailyTravelOrderStatistics
();
}
else
{
List
<
OrderAccountDTO
>
orderAccountDTOS
=
map
.
get
(
RefundTypeEnum
.
ORDER_FUND
.
getCode
());
log
.
error
(
"今日已统计车辆订单,请不要重复统计!"
);
if
(
CollectionUtils
.
isNotEmpty
(
orderAccountDTOS
))
{
ArrayList
<
OrderAccountDetail
>
orderAccountDetails
=
getOrderAccountDetail
(
orderAccountDTOS
);
if
(
CollectionUtils
.
isNotEmpty
(
orderAccountDetails
))
{
//获取订单总额
BigDecimal
gmv
=
getOrderAmountTotal
(
orderAccountDetails
);
orderStatistics
.
setGmv
(
gmv
);
}
}
}
return
orderStatistics
;
}
//
/**
// for (Map.Entry<Integer, DailyTravelOrderStatistics> e : map.entrySet()) {
* 获取金额详情
// insertSelectiveRe(e.getValue());
*
// }
* @param orderAccountDTOS
* @return
*/
private
ArrayList
<
OrderAccountDetail
>
getOrderAccountDetail
(
List
<
OrderAccountDTO
>
orderAccountDTOS
)
{
ArrayList
<
OrderAccountDetail
>
arrayList
=
Lists
.
newArrayList
();
orderAccountDTOS
.
parallelStream
()
.
map
(
OrderAccount:
:
getAccountDetail
)
.
forEach
(
detail
->
{
if
(
StringUtils
.
isNotBlank
(
detail
))
{
arrayList
.
add
(
JSONUtil
.
toBean
(
detail
,
OrderAccountDetail
.
class
));
}
});
return
arrayList
;
}
/**
* 获取订单和
*
* @param orderAccountDetails
* @return
*/
private
BigDecimal
getOrderAmountTotal
(
ArrayList
<
OrderAccountDetail
>
orderAccountDetails
)
{
return
orderAccountDetails
.
stream
()
.
map
(
OrderAccountDetail:
:
getOrderAmount
)
.
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
}
/**
* 获取赔款数据
*
* @param orderAccountDetails
* @return
*/
private
List
<
OrderAccountDeduction
>
gettDeductions
(
ArrayList
<
OrderAccountDetail
>
orderAccountDetails
)
{
ArrayList
<
OrderAccountDeduction
>
arrayList
=
Lists
.
newArrayList
();
for
(
OrderAccountDetail
orderAccountDetail
:
orderAccountDetails
)
{
arrayList
.
addAll
(
orderAccountDetail
.
getDeductions
());
}
}
return
arrayList
;
}
}
/**
* 根据type获取对应的金额总和
*
* @param OrderAccountDeduction
* @param type 金额类型
* @return
*/
private
BigDecimal
get
(
List
<
OrderAccountDeduction
>
OrderAccountDeduction
,
List
<
Integer
>
type
)
{
return
OrderAccountDeduction
.
parallelStream
()
.
filter
(
el
->
el
.
getType
().
equals
(
type
))
.
map
(
com
.
xxfc
.
platform
.
order
.
pojo
.
account
.
OrderAccountDeduction
::
getAmount
)
.
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
}
@Override
@Override
public
int
insertSelectiveRe
(
DailyTravelOrderStatistics
entity
)
{
public
int
insertSelectiveRe
(
DailyTravelOrderStatistics
entity
)
{
entity
.
setCrtTime
(
new
Date
());
entity
.
setCrtTime
(
new
Date
());
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/DailyVehicleOrderStatisticsBiz.java
View file @
a8248fb0
...
@@ -2,29 +2,35 @@ package com.xxfc.platform.order.biz;
...
@@ -2,29 +2,35 @@ package com.xxfc.platform.order.biz;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.bean.copier.CopyOptions
;
import
cn.hutool.core.bean.copier.CopyOptions
;
import
cn.hutool.db.sql.Order
;
import
cn.hutool.json.JSONUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.exception.BaseException
;
import
com.github.wxiaoqi.security.common.exception.BaseException
;
import
com.xxfc.platform.order.entity.DailyOrderStatistics
;
import
com.github.wxiaoqi.security.common.util.JsonUtil
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
import
com.xxfc.platform.order.contant.enumerate.DeductionTypeEnum
;
import
com.xxfc.platform.order.contant.enumerate.OrderTypeEnum
;
import
com.xxfc.platform.order.contant.enumerate.RefundTypeEnum
;
import
com.xxfc.platform.order.entity.DailyVehicleOrderStatistics
;
import
com.xxfc.platform.order.entity.DailyVehicleOrderStatistics
;
import
com.xxfc.platform.order.entity.OrderAccount
;
import
com.xxfc.platform.order.entity.OrderStatistics
;
import
com.xxfc.platform.order.entity.OrderStatistics
;
import
com.xxfc.platform.order.mapper.DailyVehicleOrderStatisticsMapper
;
import
com.xxfc.platform.order.mapper.DailyVehicleOrderStatisticsMapper
;
import
com.xxfc.platform.order.pojo.DedDetailDTO
;
import
com.xxfc.platform.order.pojo.account.OrderAccountDTO
;
import
com.xxfc.platform.order.pojo.account.OrderAccountDeduction
;
import
com.xxfc.platform.order.pojo.account.OrderAccountDetail
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.collections.MapUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.transaction.interceptor.TransactionAspectSupport
;
import
sun.rmi.runtime.Log
;
import
tk.mybatis.mapper.entity.Example
;
import
tk.mybatis.mapper.weekend.WeekendSqls
;
import
javax.print.attribute.standard.MediaSize
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.*
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
/**
* 每日租车订单统计
* 每日租车订单统计
...
@@ -34,185 +40,430 @@ import java.util.stream.Collectors;
...
@@ -34,185 +40,430 @@ import java.util.stream.Collectors;
@Service
@Service
@Slf4j
@Slf4j
public
class
DailyVehicleOrderStatisticsBiz
extends
BaseBiz
<
DailyVehicleOrderStatisticsMapper
,
DailyVehicleOrderStatistics
>
{
public
class
DailyVehicleOrderStatisticsBiz
extends
BaseBiz
<
DailyVehicleOrderStatisticsMapper
,
DailyVehicleOrderStatistics
>
{
/**
* 延期
*/
private
final
Integer
TYPE_DEFERRED
=
1
;
private
final
Integer
TYPE_DEFERRED
=
1
;
/**
* 损坏
*/
private
final
Integer
TYPE_DAMAGE
=
2
;
private
final
Integer
TYPE_DAMAGE
=
2
;
/**
* 其他
*/
private
final
Integer
TYPE_OTHER
=
3
;
private
final
Integer
TYPE_OTHER
=
3
;
/**
* 统计几天前的数据
*/
@Value
(
"${order.day}"
)
@Value
(
"${order.day}"
)
private
Integer
day
;
private
Integer
day
;
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
boolean
StatisticsOfCarRentalOrders
()
{
try
{
ArrayList
<
DailyVehicleOrderStatistics
>
result
=
new
ArrayList
<>();
// 获取每日租车订单成交金和押金总额
@Autowired
List
<
DailyVehicleOrderStatistics
>
gmvAndMarginTotal
=
mapper
.
getGmvAndMarginTotal
(
day
);
private
OrderAccountBiz
accountBiz
;
result
.
addAll
(
gmvAndMarginTotal
);
// @Transactional(rollbackFor = Exception.class)
// public boolean StatisticsOfCarRentalOrders() {
//
// try {
//
// ArrayList<DailyVehicleOrderStatistics> result = new ArrayList<>();
//
//// 获取每日租车订单成交金和押金总额
// List<DailyVehicleOrderStatistics> gmvAndMarginTotal = mapper.getGmvAndMarginTotal(day);
// result.addAll(gmvAndMarginTotal);
//
//// 获取取消订单扣款总额
// List<DailyVehicleOrderStatistics> penalSum = mapper.getPenalSum(day);
// result.addAll(penalSum);
//
//// 获取订单退还押金总额
// List<DailyVehicleOrderStatistics> refundSecurityDeposit = mapper.getRefundSecurityDeposit(day);
// result.addAll(refundSecurityDeposit);
//
//// 获取违章查询总和
// List<DailyVehicleOrderStatistics> violationMoney = mapper.getViolationMoney(day);
// result.addAll(violationMoney);
//
//// 获取赔偿和延期JSON字符串
// List<Map> compensationAndPostpone = mapper.getCompensationAndPostpone(day);
//// 获取赔偿和延期JSON字符串转换为map
// List<DailyVehicleOrderStatistics> compensationAndPostpones = getCompensationAndPostpones(compensationAndPostpone);
// result.addAll(compensationAndPostpones);
//
// InsertByList(result);
// return true;
// } catch (Exception e) {
// e.printStackTrace();
// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
// return false;
// }
//
// }
//
// private void InsertByList(ArrayList<DailyVehicleOrderStatistics> result) throws Exception {
// if (CollectionUtils.isNotEmpty(result)) {
//
// Map<Integer, DailyVehicleOrderStatistics> map = new HashMap<>();
//
// for (DailyVehicleOrderStatistics value : result) {
// Integer branchCompanyId = value.getBranchCompanyId();
// DailyVehicleOrderStatistics statistics = map.get(branchCompanyId);
//
// if (statistics == null) {
// statistics = new DailyVehicleOrderStatistics();
// map.put(branchCompanyId, statistics);
// }
// BeanUtil.copyProperties(
// value,
// statistics,
// CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
// }
//
// String oneDay = map.entrySet().parallelStream().map(Map.Entry::getValue).collect(Collectors.toList()).get(0).getOneDay();
// if (StringUtils.isBlank(oneDay)) {
// throw new BaseException();
// }
// Example exa = new Example(DailyVehicleOrderStatistics.class);
// exa.createCriteria().andEqualTo("oneDay", oneDay);
// List<DailyVehicleOrderStatistics> statistics = selectByExample(exa);
//
// if (CollectionUtils.isEmpty(statistics)) {
// for (Map.Entry<Integer, DailyVehicleOrderStatistics> entry : map.entrySet()) {
// insertSelectiveRe(entry.getValue());
// }
// } else {
// log.error("今日已统计车辆订单,请不要重复统计!");
// }
// }
//
// }
//
//
// /**
// * 获取赔偿总额和延期总额
// */
// private List<DailyVehicleOrderStatistics> getCompensationAndPostpones(List<Map> list) {
//
// if (CollectionUtils.isNotEmpty(list)) {
// //获取分公全部赔偿和延期DedDetailDTO
// HashMap<Integer, List<DedDetailDTO>> map = new HashMap<>();
//
// for (Map value : list) {
// if (value != null) {
//
// //获取分公司id
// Integer branchCompanyId = (Integer) value.get("branchCompanyId");
// List<DedDetailDTO> strings = map.get(branchCompanyId);
// if (strings == null) {
// strings = new ArrayList<DedDetailDTO>();
// map.put(branchCompanyId, strings);
// }
//
// String str = (String) value.get("dedDetail");
//
// if (StringUtils.isNotBlank(str)) {
// List<DedDetailDTO> dedDetailDTOS = JSON.parseArray(str, DedDetailDTO.class);
// if (CollectionUtils.isNotEmpty(dedDetailDTOS)) {
// strings.addAll(dedDetailDTOS);
// }
// }
// }
//
// }
//
//
// List<DailyVehicleOrderStatistics> result = new ArrayList<>();
//
// if (!map.isEmpty()) {
//
// //获取分工对象集合
// for (Map.Entry<Integer, List<DedDetailDTO>> entry : map.entrySet()) {
// DailyVehicleOrderStatistics statistics = new DailyVehicleOrderStatistics();
// //公司id添加到对象当中
// statistics.setBranchCompanyId(entry.getKey());
//
// //获取公司的JSON字符串
// List<DedDetailDTO> sumDedDetailDTOs = entry.getValue();
//
//// 获取赔偿金额总和
// BigDecimal compensation = get(sumDedDetailDTOs, TYPE_DAMAGE);
// statistics.setCompensation(compensation);
//// 获取延期金额总和
// BigDecimal postpone = get(sumDedDetailDTOs, TYPE_DEFERRED);
// statistics.setPostpone(postpone);
////// 其他款项总金额
//// BigDecimal other = get(sumDedDetailDTOs, TYPE_OTHER);
//
// result.add(statistics);
// }
//
// }
//
//
// return result;
// }
// return new ArrayList<>();
// }
/****************************************************************************************************************************/
// 获取取消订单扣款总额
List
<
DailyVehicleOrderStatistics
>
penalSum
=
mapper
.
getPenalSum
(
day
);
result
.
addAll
(
penalSum
);
// 获取订单退还押金总额
/**
List
<
DailyVehicleOrderStatistics
>
refundSecurityDeposit
=
mapper
.
getRefundSecurityDeposit
(
day
);
* 根据type获取对应的金额总和
result
.
addAll
(
refundSecurityDeposit
);
*
* @param OrderAccountDeduction
// 获取违章查询总和
* @param types 金额类型
List
<
DailyVehicleOrderStatistics
>
violationMoney
=
mapper
.
getViolationMoney
(
day
);
* @return
result
.
addAll
(
violationMoney
);
*/
private
BigDecimal
get
(
List
<
OrderAccountDeduction
>
OrderAccountDeduction
,
List
<
Integer
>
types
)
{
// 获取赔偿和延期JSON字符串
return
OrderAccountDeduction
.
parallelStream
()
List
<
Map
>
compensationAndPostpone
=
mapper
.
getCompensationAndPostpone
(
day
);
.
filter
(
el
->
types
.
contains
(
el
))
// 获取赔偿和延期JSON字符串转换为map
.
map
(
com
.
xxfc
.
platform
.
order
.
pojo
.
account
.
OrderAccountDeduction
::
getAmount
)
List
<
DailyVehicleOrderStatistics
>
compensationAndPostpones
=
getCompensationAndPostpones
(
compensationAndPostpone
);
.
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
result
.
addAll
(
compensationAndPostpones
);
InsertByList
(
result
);
}
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
TransactionAspectSupport
.
currentTransactionStatus
().
setRollbackOnly
();
return
false
;
}
/***
* 添加每日记录
* @param entity
* @return
*/
@Override
public
int
insertSelectiveRe
(
DailyVehicleOrderStatistics
entity
)
{
entity
.
setCrtTime
(
new
Date
());
return
mapper
.
insertSelective
(
entity
);
}
}
private
void
InsertByList
(
ArrayList
<
DailyVehicleOrderStatistics
>
result
)
throws
Exception
{
if
(
CollectionUtils
.
isNotEmpty
(
result
))
{
Map
<
Integer
,
DailyVehicleOrderStatistics
>
map
=
new
HashMap
<>();
public
OrderStatistics
findAll
(
Integer
companyId
)
{
return
mapper
.
monthOrderTotal
(
companyId
);
}
for
(
DailyVehicleOrderStatistics
value
:
result
)
{
/**
Integer
branchCompanyId
=
value
.
getBranchCompanyId
();
* 统计订单并保存到数据库当中
DailyVehicleOrderStatistics
statistics
=
map
.
get
(
branchCompanyId
);
* @return
*/
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
boolean
saveDailyVehicleOrderRecord
()
{
if
(
statistics
==
null
)
{
try
{
statistics
=
new
DailyVehicleOrderStatistics
();
//获取每日订单统计
map
.
put
(
branchCompanyId
,
statistics
);
List
<
DailyVehicleOrderStatistics
>
orderStatistics
=
getDailyVehicleOrderRecord
();
if
(
CollectionUtils
.
isNotEmpty
(
orderStatistics
))
{
for
(
DailyVehicleOrderStatistics
orderStatistic
:
orderStatistics
)
{
//保存统计
insertSelectiveRe
(
orderStatistic
);
}
}
BeanUtil
.
copyProperties
(
value
,
statistics
,
CopyOptions
.
create
().
setIgnoreNullValue
(
true
).
setIgnoreError
(
true
));
}
}
String
oneDay
=
map
.
entrySet
().
parallelStream
().
map
(
Map
.
Entry
::
getValue
).
collect
(
Collectors
.
toList
()).
get
(
0
).
getOneDay
();
return
true
;
if
(
StringUtils
.
isBlank
(
oneDay
))
{
}
catch
(
Exception
e
)
{
throw
new
BaseException
();
log
.
error
(
e
.
getMessage
());
}
return
false
;
Example
exa
=
new
Example
(
DailyVehicleOrderStatistics
.
class
);
exa
.
createCriteria
().
andEqualTo
(
"oneDay"
,
oneDay
);
List
<
DailyVehicleOrderStatistics
>
statistics
=
selectByExample
(
exa
);
if
(
CollectionUtils
.
isEmpty
(
statistics
)){
for
(
Map
.
Entry
<
Integer
,
DailyVehicleOrderStatistics
>
entry
:
map
.
entrySet
())
{
insertSelectiveRe
(
entry
.
getValue
());
}
}
else
{
log
.
error
(
"今日已统计车辆订单,请不要重复统计!"
);
}
}
}
}
}
/**
/**
* 获取赔偿总额和延期总额
* 获取所有分公司每日统计记录
* @return
*/
*/
private
List
<
DailyVehicleOrderStatistics
>
getCompensationAndPostpones
(
List
<
Map
>
list
)
{
private
List
<
DailyVehicleOrderStatistics
>
getDailyVehicleOrderRecord
()
{
//获取当天所有订单账目
List
<
OrderAccountDTO
>
accountList
=
accountBiz
.
getOrderAccountByOrderType
(
OrderTypeEnum
.
RENT_VEHICLE
.
getCode
(),
day
);
if
(
CollectionUtils
.
isEmpty
(
accountList
))
{
return
null
;
}
//获取每个分公司当天所有的订单帐目
HashMap
<
Integer
,
List
<
OrderAccountDTO
>>
companyIdmap
=
new
HashMap
<>();
for
(
OrderAccountDTO
orderAccountDTO
:
accountList
)
{
List
<
OrderAccountDTO
>
list
=
companyIdmap
.
get
(
orderAccountDTO
.
getCompanyId
());
if
(
list
==
null
)
{
list
=
new
ArrayList
<>();
companyIdmap
.
put
(
orderAccountDTO
.
getCompanyId
(),
list
);
}
list
.
add
(
orderAccountDTO
);
}
if
(
CollectionUtils
.
isNotEmpty
(
list
))
{
//获取每个公司当天订单的总数据
//获取分公全部赔偿和延期DedDetailDTO
ArrayList
<
DailyVehicleOrderStatistics
>
statistics
=
new
ArrayList
<>();
HashMap
<
Integer
,
List
<
DedDetailDTO
>>
map
=
new
HashMap
<>();
for
(
Map
.
Entry
<
Integer
,
List
<
OrderAccountDTO
>>
integerListEntry
:
companyIdmap
.
entrySet
())
{
//获取不同类型的账单详情
List
<
OrderAccountDTO
>
orderAccountDTOS
=
integerListEntry
.
getValue
();
if
(
CollectionUtils
.
isNotEmpty
(
orderAccountDTOS
))
{
Map
<
Integer
,
List
<
OrderAccountDTO
>>
typeMap
=
Maps
.
newHashMap
();
for
(
OrderAccountDTO
orderAccountDTO
:
orderAccountDTOS
)
{
for
(
Map
value
:
list
)
{
List
<
OrderAccountDTO
>
list
=
typeMap
.
get
(
orderAccountDTO
.
getAccountType
());
if
(
value
!=
null
)
{
if
(
list
==
null
)
{
list
=
new
ArrayList
<>();
companyIdmap
.
put
(
orderAccountDTO
.
getAccountType
(),
list
);
//获取分公司id
Integer
branchCompanyId
=
(
Integer
)
value
.
get
(
"branchCompanyId"
);
List
<
DedDetailDTO
>
strings
=
map
.
get
(
branchCompanyId
);
if
(
strings
==
null
)
{
strings
=
new
ArrayList
<
DedDetailDTO
>();
map
.
put
(
branchCompanyId
,
strings
);
}
}
list
.
add
(
orderAccountDTO
);
}
String
str
=
(
String
)
value
.
get
(
"dedDetail"
);
if
(
MapUtils
.
isNotEmpty
(
typeMap
))
{
//获取该公司当天的账单数据
if
(
StringUtils
.
isNotBlank
(
str
))
{
if
(
CollectionUtils
.
isNotEmpty
(
orderAccountDTOS
))
{
List
<
DedDetailDTO
>
dedDetailDTOS
=
JSON
.
parseArray
(
str
,
DedDetailDTO
.
class
);
DailyVehicleOrderStatistics
dvos
=
getStatisticsByOrderAccountDetail
(
typeMap
);
if
(
CollectionUtils
.
isNotEmpty
(
dedDetailDTOS
))
{
if
(
dvos
!=
null
)
{
strings
.
addAll
(
dedDetailDTOS
);
statistics
.
add
(
dvos
);
dvos
.
setBranchCompanyId
(
integerListEntry
.
getKey
());
dvos
.
setOneDay
(
orderAccountDTOS
.
get
(
0
).
getOneDay
());
}
}
}
}
}
}
}
}
}
return
statistics
;
}
List
<
DailyVehicleOrderStatistics
>
result
=
new
ArrayList
<>();
if
(!
map
.
isEmpty
())
{
//获取分工对象集合
/**
for
(
Map
.
Entry
<
Integer
,
List
<
DedDetailDTO
>>
entry
:
map
.
entrySet
())
{
* 获取该分公司的统计数据
DailyVehicleOrderStatistics
statistics
=
new
DailyVehicleOrderStatistics
();
* @param map
//公司id添加到对象当中
* @return
statistics
.
setBranchCompanyId
(
entry
.
getKey
());
*/
private
DailyVehicleOrderStatistics
getStatisticsByOrderAccountDetail
(
Map
<
Integer
,
List
<
OrderAccountDTO
>>
map
)
{
//获取收入金额
DailyVehicleOrderStatistics
orderStatistics
=
getGmvAndSecurityDeposit
(
map
);
//获取扣款和退还金额
refundAndDeductions
(
map
,
orderStatistics
);
return
orderStatistics
;
//获取公司的JSON字符串
}
List
<
DedDetailDTO
>
sumDedDetailDTOs
=
entry
.
getValue
();
// 获取赔偿金额总和
/**
BigDecimal
compensation
=
get
(
sumDedDetailDTOs
,
TYPE_DAMAGE
);
* 获取扣款和退款金额
statistics
.
setCompensation
(
compensation
);
*
// 获取延期金额总和
* @param map
BigDecimal
postpone
=
get
(
sumDedDetailDTOs
,
TYPE_DEFERRED
);
* @param orderStatistics
statistics
.
setPostpone
(
postpone
);
*/
//// 其他款项总金额
private
void
refundAndDeductions
(
Map
<
Integer
,
List
<
OrderAccountDTO
>>
map
,
DailyVehicleOrderStatistics
orderStatistics
)
{
// BigDecimal other = get(sumDedDetailDTOs, TYPE_OTHER);
ArrayList
<
OrderAccountDTO
>
arrayList
=
Lists
.
newArrayList
();
for
(
Integer
key
:
map
.
keySet
())
{
if
(!
key
.
equals
(
RefundTypeEnum
.
ORDER_FUND
.
getCode
()))
{
arrayList
.
addAll
(
map
.
get
(
key
));
}
}
if
(
CollectionUtils
.
isNotEmpty
(
arrayList
))
{
ArrayList
<
OrderAccountDetail
>
orderAccountDetail
=
getOrderAccountDetail
(
arrayList
);
if
(
CollectionUtils
.
isNotEmpty
(
orderAccountDetail
))
{
//获取退还订总额
BigDecimal
returnGmv
=
getOrderAmountTotal
(
orderAccountDetail
);
orderStatistics
.
setReturnGmv
(
returnGmv
);
//获取退还押金总额
BigDecimal
refundSecurityDeposit
=
getDepositAmountTotal
(
orderAccountDetail
);
orderStatistics
.
setRefundSecurityDeposit
(
refundSecurityDeposit
);
List
<
OrderAccountDeduction
>
OrderAccountDeductions
=
gettDeductions
(
orderAccountDetail
);
//获取违章总额
orderStatistics
.
setViolationMoney
(
get
(
OrderAccountDeductions
,
new
ArrayList
<
Integer
>(){{
add
(
DeductionTypeEnum
.
VIOLATE_TRAFFIC_DEDUCT
.
getCode
());
}}));
//获取损坏赔偿总额
orderStatistics
.
setCompensation
(
get
(
OrderAccountDeductions
,
new
ArrayList
<
Integer
>(){{
add
(
DeductionTypeEnum
.
DAMAGES
.
getCode
());
}}
));
//获取违约总额
ArrayList
<
Integer
>
types
=
Lists
.
newArrayList
();
types
.
add
(
DeductionTypeEnum
.
VIOLATE_ADVANCE
.
getCode
());
types
.
add
(
DeductionTypeEnum
.
VIOLATE_CANCEL
.
getCode
());
types
.
add
(
DeductionTypeEnum
.
VIOLATE_DELAY
.
getCode
());
orderStatistics
.
setDefaultMoney
(
get
(
OrderAccountDeductions
,
types
));
//消费金额
orderStatistics
.
setTotalExpenditure
(
get
(
OrderAccountDeductions
,
new
ArrayList
<
Integer
>(){{
add
(
DeductionTypeEnum
.
EXTRA
.
getCode
());
}}));
}
}
}
result
.
add
(
statistics
);
/**
}
* 获取订单总额和预交押金总额
*
* @param map
* @return
*/
private
DailyVehicleOrderStatistics
getGmvAndSecurityDeposit
(
Map
<
Integer
,
List
<
OrderAccountDTO
>>
map
)
{
DailyVehicleOrderStatistics
orderStatistics
=
new
DailyVehicleOrderStatistics
();
List
<
OrderAccountDTO
>
orderAccountDTOS
=
map
.
get
(
RefundTypeEnum
.
ORDER_FUND
.
getCode
());
}
if
(
CollectionUtils
.
isNotEmpty
(
orderAccountDTOS
))
{
ArrayList
<
OrderAccountDetail
>
orderAccountDetails
=
getOrderAccountDetail
(
orderAccountDTOS
);
if
(
CollectionUtils
.
isNotEmpty
(
orderAccountDetails
))
{
//获取订单总额
BigDecimal
gmv
=
getOrderAmountTotal
(
orderAccountDetails
);
orderStatistics
.
setGmv
(
gmv
);
//获取押金总额
BigDecimal
securityDeposit
=
getDepositAmountTotal
(
orderAccountDetails
);
orderStatistics
.
setSecurityDeposit
(
securityDeposit
);
return
result
;
}
}
}
return
new
ArrayList
<>()
;
return
orderStatistics
;
}
}
/**
* 获取订单和
*
* @param orderAccountDetails
* @return
*/
private
BigDecimal
getDepositAmountTotal
(
ArrayList
<
OrderAccountDetail
>
orderAccountDetails
)
{
return
orderAccountDetails
.
stream
()
.
map
(
OrderAccountDetail:
:
getDepositAmount
)
.
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
}
/**
/**
*
根据type获取对应的金额总
和
*
获取押金
和
*
*
* @param sumDedDetailDTOs
* @param orderAccountDetails
* @param type 金额类型
* @return
* @return
*/
*/
private
BigDecimal
get
(
List
<
DedDetailDTO
>
sumDedDetailDTOs
,
Integer
type
)
{
private
BigDecimal
getOrderAmountTotal
(
ArrayList
<
OrderAccountDetail
>
orderAccountDetails
)
{
if
(
CollectionUtils
.
isNotEmpty
(
sumDedDetailDTOs
))
{
return
orderAccountDetails
.
stream
()
BigDecimal
aggregateAmount
=
sumDedDetailDTOs
.
stream
()
.
map
(
OrderAccountDetail:
:
getOrderAmount
)
.
filter
(
d
->
type
.
equals
(
d
.
getType
()))
.
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
.
map
(
DedDetailDTO:
:
getCost
)
}
.
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
return
aggregateAmount
;
/**
* 获取赔款数据
*
* @param orderAccountDetails
* @return
*/
private
List
<
OrderAccountDeduction
>
gettDeductions
(
ArrayList
<
OrderAccountDetail
>
orderAccountDetails
)
{
ArrayList
<
OrderAccountDeduction
>
arrayList
=
Lists
.
newArrayList
();
for
(
OrderAccountDetail
orderAccountDetail
:
orderAccountDetails
)
{
arrayList
.
addAll
(
orderAccountDetail
.
getDeductions
());
}
}
return
BigDecimal
.
ZERO
;
return
arrayList
;
}
}
/**
* 获取金额详情
*
* @param orderAccountDTOS
* @return
*/
private
ArrayList
<
OrderAccountDetail
>
getOrderAccountDetail
(
List
<
OrderAccountDTO
>
orderAccountDTOS
)
{
ArrayList
<
OrderAccountDetail
>
arrayList
=
Lists
.
newArrayList
();
orderAccountDTOS
.
parallelStream
()
.
map
(
OrderAccount:
:
getAccountDetail
)
.
forEach
(
detail
->
{
if
(
StringUtils
.
isNotBlank
(
detail
))
{
arrayList
.
add
(
JSONUtil
.
toBean
(
detail
,
OrderAccountDetail
.
class
));
}
});
@Override
return
arrayList
;
public
int
insertSelectiveRe
(
DailyVehicleOrderStatistics
entity
)
{
entity
.
setCrtTime
(
new
Date
());
return
mapper
.
insertSelective
(
entity
);
}
}
public
OrderStatistics
findAll
(
Integer
companyId
)
{
return
mapper
.
monthOrderTotal
(
companyId
);
}
}
}
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderAccountBiz.java
View file @
a8248fb0
...
@@ -13,6 +13,7 @@ import com.xxfc.platform.order.biz.inner.OrderMsgBiz;
...
@@ -13,6 +13,7 @@ import com.xxfc.platform.order.biz.inner.OrderMsgBiz;
import
com.xxfc.platform.order.contant.enumerate.*
;
import
com.xxfc.platform.order.contant.enumerate.*
;
import
com.xxfc.platform.order.entity.*
;
import
com.xxfc.platform.order.entity.*
;
import
com.xxfc.platform.order.pojo.DedDetailDTO
;
import
com.xxfc.platform.order.pojo.DedDetailDTO
;
import
com.xxfc.platform.order.pojo.account.OrderAccountDTO
;
import
com.xxfc.platform.order.pojo.account.OrderAccountDeduction
;
import
com.xxfc.platform.order.pojo.account.OrderAccountDeduction
;
import
com.xxfc.platform.order.pojo.account.OrderAccountDetail
;
import
com.xxfc.platform.order.pojo.account.OrderAccountDetail
;
import
com.xxfc.platform.order.pojo.mq.OrderMQDTO
;
import
com.xxfc.platform.order.pojo.mq.OrderMQDTO
;
...
@@ -357,4 +358,24 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
...
@@ -357,4 +358,24 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
log
.
error
(
"crosstown.getViolateDetail() crosstown id :"
+
crosstown
.
getId
()
+
" 转换失败"
);
log
.
error
(
"crosstown.getViolateDetail() crosstown id :"
+
crosstown
.
getId
()
+
" 转换失败"
);
}
}
}
}
/**
* 获取每日订单账目,用于统计
* @param code
* @param day
* @return
*/
public
List
<
OrderAccountDTO
>
getOrderAccountByOrderType
(
Integer
code
,
Integer
day
)
{
return
mapper
.
getOrderAccountByOrderType
(
code
,
day
);
}
}
}
\ No newline at end of file
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderStatisticsBiz.java
View file @
a8248fb0
package
com
.
xxfc
.
platform
.
order
.
biz
;
package
com
.
xxfc
.
platform
.
order
.
biz
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.xxfc.platform.order.entity.OrderStatistics
;
import
com.xxfc.platform.order.entity.OrderStatistics
;
import
com.xxfc.platform.order.mapper.OrderStatisticsMapper
;
import
com.xxfc.platform.order.mapper.OrderStatisticsMapper
;
import
com.xxfc.platform.order.pojo.HomePageOrderData
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
@@ -26,37 +28,48 @@ public class OrderStatisticsBiz extends BaseBiz<OrderStatisticsMapper, OrderStat
...
@@ -26,37 +28,48 @@ public class OrderStatisticsBiz extends BaseBiz<OrderStatisticsMapper, OrderStat
@Autowired
@Autowired
private
DailyMembersOrderStatisticsBiz
membersBiz
;
private
DailyMembersOrderStatisticsBiz
membersBiz
;
public
OrderStatistics
getTotalOrder
(
Integer
companyId
)
{
public
HomePageOrderData
getTotalOrder
(
Integer
companyId
)
{
OrderStatistics
result
=
new
OrderStatistics
();
HomePageOrderData
result
=
new
HomePageOrderData
();
ArrayList
<
OrderStatistics
>
orderStatistics
=
new
ArrayList
<>();
ArrayList
<
HomePageOrderData
>
orderStatistics
=
new
ArrayList
<>();
OrderStatistics
vehicle
=
vehicleBiz
.
findAll
(
companyId
);
OrderStatistics
vehicle
=
vehicleBiz
.
findAll
(
companyId
);
if
(
vehicle
!=
null
)
{
if
(
vehicle
!=
null
)
{
orderStatistics
.
add
(
vehicle
);
HomePageOrderData
data
=
new
HomePageOrderData
()
{{
setTotalOrders
(
vehicle
.
getTotalGmv
().
subtract
(
vehicle
.
getTotalReturnGmv
()));
setAdditionalIndemnity
(
vehicle
.
getTotalCompensation
()
.
add
(
vehicle
.
getTotalForfeit
())
.
add
(
vehicle
.
getTotalDefaultMoney
())
.
add
(
vehicle
.
getTotalExpenditure
().
subtract
(
vehicle
.
getTotalGmv
().
subtract
(
vehicle
.
getTotalReturnGmv
())))
);
}};
orderStatistics
.
add
(
data
);
}
}
OrderStatistics
tour
=
TravelBiz
.
findAll
(
companyId
);
OrderStatistics
tour
=
TravelBiz
.
findAll
(
companyId
);
if
(
vehicle
!=
null
)
{
if
(
vehicle
!=
null
)
{
orderStatistics
.
add
(
tour
);
HomePageOrderData
data
=
new
HomePageOrderData
()
{{
setTotalOrders
(
tour
.
getTotalGmv
().
subtract
(
tour
.
getTotalReturnGmv
()));
setAdditionalIndemnity
(
tour
.
getTotalDefaultMoney
());
}};
orderStatistics
.
add
(
data
);
}
}
OrderStatistics
member
=
membersBiz
.
findAll
(
companyId
);
OrderStatistics
member
=
membersBiz
.
findAll
(
companyId
);
if
(
vehicle
!=
null
)
{
if
(
vehicle
!=
null
)
{
orderStatistics
.
add
(
member
);
HomePageOrderData
data
=
new
HomePageOrderData
()
{{
}
setTotalOrders
(
member
.
getTotalGmv
().
subtract
(
member
.
getTotalReturnGmv
()));
result
.
setTotalGmv
(
orderStatistics
.
stream
().
map
(
OrderStatistics:
:
getTotalGmv
).
filter
(
o
->
Objects
.
nonNull
(
o
)).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
));
}};
orderStatistics
.
add
(
data
);
}
result
.
setTotalForfeit
(
orderStatistics
.
stream
().
map
(
OrderStatistics:
:
getTotalForfeit
).
filter
(
o
->
Objects
.
nonNull
(
o
)).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
));
result
.
setTotalCompensation
(
orderStatistics
.
stream
().
map
(
OrderStatistics:
:
getTotalCompensation
).
filter
(
o
->
Objects
.
nonNull
(
o
)).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
));
result
.
setTotalRefundSecurityDeposit
(
orderStatistics
.
stream
().
map
(
OrderStatistics:
:
getTotalRefundSecurityDeposit
).
filter
(
o
->
Objects
.
nonNull
(
o
)).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
));
result
.
setTotal
SecurityDeposit
(
orderStatistics
.
stream
().
map
(
OrderStatistics:
:
getTotalSecurityDeposit
).
filter
(
o
->
Objects
.
nonNull
(
o
)).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
));
result
.
setTotal
Orders
(
orderStatistics
.
stream
().
map
(
HomePageOrderData:
:
getTotalOrders
).
filter
(
o
->
Objects
.
nonNull
(
o
)).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
));
result
.
setTotal
PenalSum
(
orderStatistics
.
stream
().
map
(
OrderStatistics:
:
getTotalPenalSum
).
filter
(
o
->
Objects
.
nonNull
(
o
)).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
));
result
.
setTotal
OutstandingDeposit
(
orderStatistics
.
stream
().
map
(
HomePageOrderData:
:
getTotalOutstandingDeposit
).
filter
(
o
->
Objects
.
nonNull
(
o
)).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
));
result
.
set
TotalPostpone
(
orderStatistics
.
stream
().
map
(
OrderStatistics:
:
getTotalPostpone
).
filter
(
o
->
Objects
.
nonNull
(
o
)).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
));
result
.
set
AdditionalIndemnity
(
orderStatistics
.
stream
().
map
(
HomePageOrderData:
:
getAdditionalIndemnity
).
filter
(
o
->
Objects
.
nonNull
(
o
)).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
));
return
result
;
return
result
;
}
}
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/mapper/OrderAccountMapper.java
View file @
a8248fb0
package
com
.
xxfc
.
platform
.
order
.
mapper
;
package
com
.
xxfc
.
platform
.
order
.
mapper
;
import
com.xxfc.platform.order.entity.OrderAccount
;
import
com.xxfc.platform.order.entity.OrderAccount
;
import
com.xxfc.platform.order.pojo.account.OrderAccountDTO
;
import
org.apache.ibatis.annotations.Param
;
import
tk.mybatis.mapper.common.Mapper
;
import
tk.mybatis.mapper.common.Mapper
;
import
java.util.List
;
/**
/**
* 订单帐目
* 订单帐目
*
*
...
@@ -11,5 +16,6 @@ import tk.mybatis.mapper.common.Mapper;
...
@@ -11,5 +16,6 @@ import tk.mybatis.mapper.common.Mapper;
* @date 2019-09-09 15:51:16
* @date 2019-09-09 15:51:16
*/
*/
public
interface
OrderAccountMapper
extends
Mapper
<
OrderAccount
>
{
public
interface
OrderAccountMapper
extends
Mapper
<
OrderAccount
>
{
List
<
OrderAccountDTO
>
getOrderAccountByOrderType
(
@Param
(
"type"
)
Integer
type
,
@Param
(
"day"
)
Integer
day
);
}
}
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/rest/background/OrderStatisticsController.java
View file @
a8248fb0
...
@@ -12,6 +12,7 @@ import com.xxfc.platform.order.biz.DailyTravelOrderStatisticsBiz;
...
@@ -12,6 +12,7 @@ import com.xxfc.platform.order.biz.DailyTravelOrderStatisticsBiz;
import
com.xxfc.platform.order.biz.DailyVehicleOrderStatisticsBiz
;
import
com.xxfc.platform.order.biz.DailyVehicleOrderStatisticsBiz
;
import
com.xxfc.platform.order.biz.OrderStatisticsBiz
;
import
com.xxfc.platform.order.biz.OrderStatisticsBiz
;
import
com.xxfc.platform.order.entity.OrderStatistics
;
import
com.xxfc.platform.order.entity.OrderStatistics
;
import
com.xxfc.platform.order.pojo.HomePageOrderData
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -88,15 +89,28 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
...
@@ -88,15 +89,28 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
if
(
TYPE_VEHICLE
.
equals
(
type
))
{
if
(
TYPE_VEHICLE
.
equals
(
type
))
{
OrderStatistics
vehicle
=
vehicleBiz
.
findAll
(
companyId
);
OrderStatistics
vehicle
=
vehicleBiz
.
findAll
(
companyId
);
return
ObjectRestResponse
.
succ
(
vehicle
);
return
ObjectRestResponse
.
succ
(
new
HomePageOrderData
(){{
setTotalOrders
(
vehicle
.
getTotalGmv
().
subtract
(
vehicle
.
getTotalReturnGmv
()));
setAdditionalIndemnity
(
vehicle
.
getTotalCompensation
()
.
add
(
vehicle
.
getTotalForfeit
())
.
add
(
vehicle
.
getTotalDefaultMoney
())
.
add
(
vehicle
.
getTotalExpenditure
().
subtract
(
vehicle
.
getTotalGmv
().
subtract
(
vehicle
.
getTotalReturnGmv
())))
);
}});
}
}
if
(
TYPE_TOUR
.
equals
(
type
))
{
if
(
TYPE_TOUR
.
equals
(
type
))
{
OrderStatistics
tour
=
TravelBiz
.
findAll
(
companyId
);
OrderStatistics
tour
=
TravelBiz
.
findAll
(
companyId
);
return
ObjectRestResponse
.
succ
(
tour
);
return
ObjectRestResponse
.
succ
(
new
HomePageOrderData
(){{
setTotalOrders
(
tour
.
getTotalGmv
().
subtract
(
tour
.
getTotalReturnGmv
()));
setAdditionalIndemnity
(
tour
.
getTotalDefaultMoney
());
}});
}
}
if
(
TYPE_MEMBER
.
equals
(
type
))
{
if
(
TYPE_MEMBER
.
equals
(
type
))
{
OrderStatistics
member
=
membersBiz
.
findAll
(
companyId
);
OrderStatistics
member
=
membersBiz
.
findAll
(
companyId
);
return
ObjectRestResponse
.
succ
(
member
);
return
ObjectRestResponse
.
succ
(
new
HomePageOrderData
(){{
setTotalOrders
(
member
.
getTotalGmv
().
subtract
(
member
.
getTotalReturnGmv
()));
}});
}
}
if
(
TYPE_TOTAL
.
equals
(
type
))
{
if
(
TYPE_TOTAL
.
equals
(
type
))
{
...
@@ -110,4 +124,6 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
...
@@ -110,4 +124,6 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
}
}
}
}
}
}
xx-order/xx-order-server/src/main/resources/mapper/DailyMembersOrderStatisticsMapper.xml
View file @
a8248fb0
...
@@ -17,24 +17,13 @@
...
@@ -17,24 +17,13 @@
<select
id=
"monthOrderTotal"
resultType=
"com.xxfc.platform.order.entity.OrderStatistics"
>
<select
id=
"monthOrderTotal"
resultType=
"com.xxfc.platform.order.entity.OrderStatistics"
>
SELECT
SELECT
IFNULL(
sum(gmv),0) as
totalGmv
IFNULL(
sum( gmv ), 0 ) AS
totalGmv
FROM
FROM
(
daily_vehicle_order_statistics
SELECT
ANY_VALUE(id) AS id ,
ANY_VALUE(branch_company_id) AS branch_company_id,
ANY_VALUE(one_day) AS one_day,
ANY_VALUE(gmv) AS gmv,
ANY_VALUE(crt_time) AS crt_time
FROM
daily_members_order_statistics
GROUP BY
one_day,branch_company_id
) m
WHERE
WHERE
1=1
1=1
<if
test=
"companyId != null"
>
<if
test=
"companyId != null"
>
and branch_company_id =#{companyId}
and branch_company_id =
#{companyId}
</if>
</if>
</select>
</select>
...
...
xx-order/xx-order-server/src/main/resources/mapper/DailyTravelOrderStatisticsMapper.xml
View file @
a8248fb0
...
@@ -51,26 +51,15 @@
...
@@ -51,26 +51,15 @@
<select
id=
"monthOrderTotal"
resultType=
"com.xxfc.platform.order.entity.OrderStatistics"
>
<select
id=
"monthOrderTotal"
resultType=
"com.xxfc.platform.order.entity.OrderStatistics"
>
SELECT
SELECT
IFNULL(sum(gmv),0) as totalGmv,
IFNULL( sum( gmv ), 0 ) AS totalGmv,
IFNULL(sum(penal_sum) ,0) as totalPenalSum
IFNULL( sum( default_money ), 0 ) AS totalDefaultMoney,
IFNULL( sum( return_gmv ), 0 ) AS totalReturnGmv
FROM
FROM
(
daily_vehicle_order_statistics
SELECT
ANY_VALUE(id) AS id,
ANY_VALUE(branch_company_id) AS branch_company_id,
ANY_VALUE(one_day) AS one_day,
ANY_VALUE(gmv) AS gmv,
ANY_VALUE(penal_sum) AS penal_sum,
ANY_VALUE(crt_time) AS crt_time
FROM
daily_travel_order_statistics
GROUP BY
one_day,branch_company_id
) o
WHERE
WHERE
1=1
1=1
<if
test=
"companyId != null"
>
<if
test=
"companyId != null"
>
and branch_company_id =#{companyId}
and branch_company_id =
#{companyId}
</if>
</if>
</select>
</select>
...
...
xx-order/xx-order-server/src/main/resources/mapper/DailyVehicleOrderStatisticsMapper.xml
View file @
a8248fb0
...
@@ -79,33 +79,19 @@
...
@@ -79,33 +79,19 @@
v.start_company_id
v.start_company_id
</select>
</select>
<!--
获取赔偿和延期JSON字符串
-->
<!-- -->
<select
id=
"monthOrderTotal"
resultType=
"com.xxfc.platform.order.entity.OrderStatistics"
>
<select
id=
"monthOrderTotal"
resultType=
"com.xxfc.platform.order.entity.OrderStatistics"
>
SELECT
SELECT
IFNULL(sum(gmv),0) as totalGmv,
IFNULL( sum( gmv ), 0 ) AS totalGmv,
(IFNULL(sum(security_deposit),0)-IFNULL(sum(refund_security_deposit) ,0)) as totalSecurityDeposit,
IFNULL( sum( security_deposit ), 0 ) AS totalSecurityDeposit,
IFNULL(sum(refund_security_deposit) ,0) as totalRefundSecurityDeposit,
IFNULL( sum( refund_security_deposit ), 0 ) AS totalRefundSecurityDeposit,
IFNULL(sum(compensation) ,0) as totalCompensation,
IFNULL( sum( forfeit ), 0 ) AS totalForfeit,
IFNULL(sum(forfeit) ,0) as totalForfeit,
IFNULL( sum( compensation ), 0 ) AS totalCompensation,
IFNULL(sum(penal_sum) ,0) as totalPenalSum,
IFNULL( sum( return_gmv ), 0 ) AS totalReturnGmv,
IFNULL(sum(postpone) ,0) as totalPostpone
IFNULL( sum( default_money ), 0 ) AS totalDefaultMoney,
FROM
IFNULL( sum( total_expenditure ), 0 ) AS totalExpenditure
(
SELECT
ANY_VALUE(id) as id,
one_day,
branch_company_id,
ANY_VALUE(gmv) AS gmv,
ANY_VALUE(security_deposit) AS security_deposit,
ANY_VALUE(refund_security_deposit) AS refund_security_deposit,
ANY_VALUE(forfeit) AS forfeit,ANY_VALUE(penal_sum) AS penal_sum,
ANY_VALUE(postpone) AS postpone,ANY_VALUE(crt_time) AS crt_time,
ANY_VALUE(compensation) AS compensation
FROM
FROM
daily_vehicle_order_statistics
daily_vehicle_order_statistics
GROUP BY
one_day,branch_company_id
) a
WHERE
WHERE
1=1
1=1
<if
test=
"companyId != null"
>
<if
test=
"companyId != null"
>
...
...
xx-order/xx-order-server/src/main/resources/mapper/OrderAccountMapper.xml
0 → 100644
View file @
a8248fb0
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.xxfc.platform.order.mapper.OrderAccountMapper"
>
<select
id=
"getOrderAccountByOrderType"
resultType=
"com.xxfc.platform.order.pojo.account.OrderAccountDTO"
>
SELECT
date(DATE_SUB(now(),interval #{day} day)) as oneDay,
a.*
<if
test=
"type != null and type == 1"
>
, v.start_company_id as companyId
</if>
<if
test=
"type != null and type == 2"
>
, t.start_company_id as companyId
</if>
FROM
order_account a
LEFT JOIN base_order b ON a.order_id = b.id
<if
test=
"type != null and type==1"
>
LEFT JOIN order_rent_vehicle_detail v ON b.id = v.order_id
</if>
<if
test=
"type != null and type==2"
>
LEFT JOIN order_tour_detail t ON b.id = t.order_id
</if>
WHERE
a.account_status=1
AND
b.type = #{type}
AND date( FROM_UNIXTIME( a.crt_time / 1000 ) ) = date( DATE_SUB( now( ), INTERVAL #{day} DAY ) )
</select>
</mapper>
\ No newline at end of file
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