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
a7fbb3d3
Commit
a7fbb3d3
authored
Nov 30, 2019
by
周健威
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
延期还车代码
parent
09616a82
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
278 additions
and
28 deletions
+278
-28
OrderLogEnum.java
...m/xxfc/platform/order/contant/enumerate/OrderLogEnum.java
+73
-0
OrderLog.java
...rc/main/java/com/xxfc/platform/order/entity/OrderLog.java
+1
-1
OrderRentVehicleDetail.java
...om/xxfc/platform/order/entity/OrderRentVehicleDetail.java
+11
-0
InProgressVO.java
.../com/xxfc/platform/order/pojo/calculate/InProgressVO.java
+22
-0
DelayRentOrderDTO.java
...com/xxfc/platform/order/pojo/order/DelayRentOrderDTO.java
+1
-0
VehicleItemDTO.java
...va/com/xxfc/platform/order/pojo/order/VehicleItemDTO.java
+22
-0
DelayAddPriceVO.java
...a/com/xxfc/platform/order/pojo/price/DelayAddPriceVO.java
+45
-0
OrderLogBiz.java
...rc/main/java/com/xxfc/platform/order/biz/OrderLogBiz.java
+20
-0
OrderCalculateBiz.java
.../com/xxfc/platform/order/biz/inner/OrderCalculateBiz.java
+65
-25
OrderCancelBiz.java
...ava/com/xxfc/platform/order/biz/inner/OrderCancelBiz.java
+2
-2
OrderDelayBiz.java
...java/com/xxfc/platform/order/biz/inner/OrderDelayBiz.java
+11
-0
VMCalendarPriceCostDTO.java
...atform/vehicle/pojo/dto/order/VMCalendarPriceCostDTO.java
+5
-0
No files found.
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/contant/enumerate/OrderLogEnum.java
0 → 100644
View file @
a7fbb3d3
package
com
.
xxfc
.
platform
.
order
.
contant
.
enumerate
;
import
java.util.HashMap
;
import
java.util.Map
;
public
enum
OrderLogEnum
{
//账款类型 1--订单常规操作;2--与账相关;3--延期相关
ORDER_ADD
(
101
,
"删除订单"
),
DELAY_MODIFY
(
301
,
"延期增改"
,
"订单号:{}, 延期增改"
,
"旧:{}, 新:{}"
),
;
/**
* 编码
*/
private
Integer
code
;
/**
* 类型描述
*/
private
String
desc
;
/**
* 日志内容
*/
private
String
content
;
/**
* 细节
*/
private
String
detail
;
private
static
Map
<
Integer
,
String
>
codeAndDesc
=
new
HashMap
<
Integer
,
String
>();
OrderLogEnum
(
Integer
code
,
String
desc
){
this
.
code
=
code
;
this
.
desc
=
desc
;
}
OrderLogEnum
(
Integer
code
,
String
desc
,
String
content
,
String
detail
){
this
.
code
=
code
;
this
.
desc
=
desc
;
this
.
content
=
content
;
this
.
detail
=
detail
;
}
public
Integer
getCode
()
{
return
code
;
}
public
void
setCode
(
Integer
code
)
{
this
.
code
=
code
;
}
public
String
getDesc
()
{
return
desc
;
}
public
void
setDesc
(
String
desc
)
{
this
.
desc
=
desc
;
}
public
String
getContent
()
{
return
content
;
}
public
void
setContent
(
String
content
)
{
this
.
content
=
content
;
}
public
static
Boolean
exists
(
Integer
code
){
return
codeAndDesc
.
containsKey
(
code
);
}
}
\ No newline at end of file
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/OrderLog.java
View file @
a7fbb3d3
...
@@ -88,7 +88,7 @@ public class OrderLog implements Serializable {
...
@@ -88,7 +88,7 @@ public class OrderLog implements Serializable {
*/
*/
@Column
(
name
=
"detail"
)
@Column
(
name
=
"detail"
)
@ApiModelProperty
(
value
=
"详情"
)
@ApiModelProperty
(
value
=
"详情"
)
private
Integer
detail
;
private
String
detail
;
}
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/OrderRentVehicleDetail.java
View file @
a7fbb3d3
package
com
.
xxfc
.
platform
.
order
.
entity
;
package
com
.
xxfc
.
platform
.
order
.
entity
;
import
cn.hutool.json.JSONUtil
;
import
com.github.wxiaoqi.security.common.util.JsonUtil
;
import
com.github.wxiaoqi.security.common.util.JsonUtil
;
import
com.xxfc.platform.order.pojo.order.DelayRentOrderDTO
;
import
com.xxfc.platform.order.pojo.price.CostDetailExtend
;
import
com.xxfc.platform.order.pojo.price.CostDetailExtend
;
import
com.xxfc.platform.order.pojo.price.DelayAddPriceVO
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -353,4 +356,12 @@ public class OrderRentVehicleDetail implements Serializable {
...
@@ -353,4 +356,12 @@ public class OrderRentVehicleDetail implements Serializable {
@Column
(
name
=
"delay_add_end_time"
)
@Column
(
name
=
"delay_add_end_time"
)
@ApiModelProperty
(
value
=
"延期结束时间"
)
@ApiModelProperty
(
value
=
"延期结束时间"
)
private
Long
delayAddEndTime
;
private
Long
delayAddEndTime
;
public
Integer
obtainRealDayNum
()
{
return
this
.
dayNum
+
this
.
delayAddDays
;
}
public
DelayAddPriceVO
obtainDelayAddDetail
()
{
return
JSONUtil
.
toBean
(
this
.
getDelayAddDetail
(),
DelayAddPriceVO
.
class
);
}
}
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/calculate/InProgressVO.java
View file @
a7fbb3d3
...
@@ -103,4 +103,26 @@ public class InProgressVO {
...
@@ -103,4 +103,26 @@ public class InProgressVO {
* 添加的延期费用
* 添加的延期费用
*/
*/
DelayAddPriceVO
delayAddPriceVO
=
new
DelayAddPriceVO
();
DelayAddPriceVO
delayAddPriceVO
=
new
DelayAddPriceVO
();
/**
* 返还的原来订单的免费天数
*/
Integer
metaOrderBackFreeDays
=
0
;
/**
* 返还的延期增加的免费天数
*/
Integer
delayAddBackFreeDays
=
0
;
/**
* 原来订单的已使用的金额
*/
BigDecimal
metaOrderUsedAmount
=
BigDecimal
.
ZERO
;
/**
* 延期增加的已使用的金额
*/
BigDecimal
delayAddUsedAmount
=
BigDecimal
.
ZERO
;
}
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/order/DelayRentOrderDTO.java
View file @
a7fbb3d3
...
@@ -7,6 +7,7 @@ import static com.github.wxiaoqi.security.common.constant.CommonConstants.*;
...
@@ -7,6 +7,7 @@ import static com.github.wxiaoqi.security.common.constant.CommonConstants.*;
@Data
@Data
public
class
DelayRentOrderDTO
{
public
class
DelayRentOrderDTO
{
Integer
operateId
;
String
no
;
String
no
;
Integer
needDamageSafe
=
0
;
Integer
needDamageSafe
=
0
;
Long
delayEndTime
;
Long
delayEndTime
;
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/order/VehicleItemDTO.java
View file @
a7fbb3d3
...
@@ -119,6 +119,23 @@ public class VehicleItemDTO extends OrderItem {
...
@@ -119,6 +119,23 @@ public class VehicleItemDTO extends OrderItem {
return
usedAmount
;
return
usedAmount
;
}
}
// public BigDecimal getUsedAmountHasDelay(Integer useDays, List<VMCalendarPriceCostDTO> delayAmountList) {
//
// BigDecimal usedAmount = getUsedAmount(useDays);
// if((useDays - getTotalNum()) > 0) {
// Integer delayAddDays = useDays - getTotalNum();
// if(delayAddDays > delayAmountList.size()) {
// delayAddDays = delayAmountList.size();
// }
//
// for(int i = 0; i < delayAddDays; i++) {
// usedAmount = usedAmount.add(delayAmountList.get(i).getPrice());
// }
// }
//
// return usedAmount;
// }
//由于免费天数可以抵消不是完整的天数,所以处理比较不同
//由于免费天数可以抵消不是完整的天数,所以处理比较不同
public
BigDecimal
getFreeAmount
(
Integer
offsetDay
)
{
public
BigDecimal
getFreeAmount
(
Integer
offsetDay
)
{
List
<
VMCalendarPriceCostDTO
>
vmcpds
=
getVehicleDetail
();
List
<
VMCalendarPriceCostDTO
>
vmcpds
=
getVehicleDetail
();
...
@@ -187,8 +204,12 @@ public class VehicleItemDTO extends OrderItem {
...
@@ -187,8 +204,12 @@ public class VehicleItemDTO extends OrderItem {
if
(
ableFreeDays
>
cycleNum
&&
cycleNum
+
dto
.
getFreeDays
()
>
ableFreeDays
)
{
//本次累加天数 大于 可用免费天数
if
(
ableFreeDays
>
cycleNum
&&
cycleNum
+
dto
.
getFreeDays
()
>
ableFreeDays
)
{
//本次累加天数 大于 可用免费天数
paramDTO
.
setFreeNum
(
ableFreeDays
);
paramDTO
.
setFreeNum
(
ableFreeDays
);
//分子
Integer
up
=
(
ableFreeDays
-
cycleNum
);
Integer
up
=
(
ableFreeDays
-
cycleNum
);
//分母
Integer
down
=
dto
.
getFreeDays
();
Integer
down
=
dto
.
getFreeDays
();
//设置当前生效免费天数
dto
.
setValidFreeDays
(
up
);
//根据百分比计算消费价格
//根据百分比计算消费价格
dto
.
setFreeAndConsumeAmount
(
dto
.
getPrice
(),
dto
.
getPrice
().
multiply
(
dto
.
setFreeAndConsumeAmount
(
dto
.
getPrice
(),
dto
.
getPrice
().
multiply
(
new
BigDecimal
(
up
+
""
).
divide
(
new
BigDecimal
(
down
+
""
),
2
,
RoundingMode
.
HALF_UP
))
new
BigDecimal
(
up
+
""
).
divide
(
new
BigDecimal
(
down
+
""
),
2
,
RoundingMode
.
HALF_UP
))
...
@@ -198,6 +219,7 @@ public class VehicleItemDTO extends OrderItem {
...
@@ -198,6 +219,7 @@ public class VehicleItemDTO extends OrderItem {
paramDTO
.
setFreeNum
(
paramDTO
.
getFreeNum
()+
dto
.
getFreeDays
());
paramDTO
.
setFreeNum
(
paramDTO
.
getFreeNum
()+
dto
.
getFreeDays
());
//直接设置价格
//直接设置价格
dto
.
setFreeAndConsumeAmount
(
dto
.
getPrice
(),
dto
.
getPrice
());
dto
.
setFreeAndConsumeAmount
(
dto
.
getPrice
(),
dto
.
getPrice
());
dto
.
setValidFreeDays
(
dto
.
getFreeDays
());
paramDTO
.
offsetNum
+=
1
;
paramDTO
.
offsetNum
+=
1
;
}
else
{
//上次累加天数 大于 可用天数
}
else
{
//上次累加天数 大于 可用天数
//直接设置价格
//直接设置价格
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/price/DelayAddPriceVO.java
View file @
a7fbb3d3
...
@@ -3,6 +3,7 @@ package com.xxfc.platform.order.pojo.price;
...
@@ -3,6 +3,7 @@ package com.xxfc.platform.order.pojo.price;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
com.xxfc.platform.vehicle.pojo.dto.order.VMCalendarPriceCostDTO
;
import
com.xxfc.platform.vehicle.pojo.dto.order.VMCalendarPriceCostDTO
;
import
lombok.Data
;
import
lombok.Data
;
import
org.springframework.data.mongodb.core.aggregation.ArrayOperators
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
java.util.List
;
...
@@ -32,4 +33,48 @@ public class DelayAddPriceVO {
...
@@ -32,4 +33,48 @@ public class DelayAddPriceVO {
public
void
initDelayDamageSafeAmount
()
{
public
void
initDelayDamageSafeAmount
()
{
this
.
delayDamageSafeAmount
=
this
.
damageSafePrice
.
add
(
new
BigDecimal
(
delayAddDays
+
""
));
this
.
delayDamageSafeAmount
=
this
.
damageSafePrice
.
add
(
new
BigDecimal
(
delayAddDays
+
""
));
}
}
public
Integer
residueDelayFreeDays
(
Integer
realResidueDays
)
{
if
(
realResidueDays
>
delayAddDays
)
{
realResidueDays
=
delayAddDays
;
}
//已使用的延长天数
Integer
useDelayDays
=
delayAddDays
-
realResidueDays
;
//延长的免费天数
Integer
residueDelayFreeDays
=
0
;
List
<
VMCalendarPriceCostDTO
>
delayAmountList
=
getDelayAmountList
();
for
(
int
i
=
useDelayDays
;
i
<
delayAddDays
;
i
++)
{
residueDelayFreeDays
+=
delayAmountList
.
get
(
i
).
getFreeDays
();
}
return
residueDelayFreeDays
;
}
public
BigDecimal
delayAddUseAmount
(
Integer
delayAddUseDays
)
{
BigDecimal
delayUsedAmount
=
BigDecimal
.
ZERO
;
if
(
delayAddUseDays
>
getDelayAddDays
())
{
delayAddUseDays
=
getDelayAddDays
();
}
for
(
int
i
=
0
;
i
<
delayAddUseDays
;
i
++)
{
delayUsedAmount
=
delayUsedAmount
.
add
(
delayAmountList
.
get
(
i
).
getPrice
());
}
return
delayUsedAmount
;
}
public
BigDecimal
delayAddFreeAmount
(
Integer
delayAddUseDays
)
{
BigDecimal
delayFreeAmount
=
BigDecimal
.
ZERO
;
if
(
delayAddUseDays
>
getDelayAddDays
())
{
delayAddUseDays
=
getDelayAddDays
();
}
for
(
int
i
=
0
;
i
<
delayAddUseDays
;
i
++)
{
delayFreeAmount
=
delayFreeAmount
.
add
(
delayAmountList
.
get
(
i
).
getFreeAmount
());
}
return
delayFreeAmount
;
}
}
}
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderLogBiz.java
View file @
a7fbb3d3
package
com
.
xxfc
.
platform
.
order
.
biz
;
package
com
.
xxfc
.
platform
.
order
.
biz
;
import
cn.hutool.core.util.StrUtil
;
import
com.xxfc.platform.order.contant.enumerate.OrderLogEnum
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
com.xxfc.platform.order.entity.OrderLog
;
import
com.xxfc.platform.order.entity.OrderLog
;
...
@@ -14,5 +17,22 @@ import com.github.wxiaoqi.security.common.biz.BaseBiz;
...
@@ -14,5 +17,22 @@ import com.github.wxiaoqi.security.common.biz.BaseBiz;
* @date 2019-07-23 17:33:06
* @date 2019-07-23 17:33:06
*/
*/
@Service
@Service
@Slf4j
public
class
OrderLogBiz
extends
BaseBiz
<
OrderLogMapper
,
OrderLog
>
{
public
class
OrderLogBiz
extends
BaseBiz
<
OrderLogMapper
,
OrderLog
>
{
public
void
logChange
(
Object
newObj
,
Object
oldObj
,
Integer
logUserId
,
String
orderNo
,
OrderLogEnum
orderLogEnum
)
{
try
{
OrderLog
orderLog
=
new
OrderLog
(){{
// setLogUserType();
setType
(
orderLogEnum
.
getCode
());
setLogUserId
(
logUserId
);
setLogContent
(
StrUtil
.
format
(
orderLogEnum
.
getContent
(),
orderNo
));
setDetail
(
StrUtil
.
format
(
orderLogEnum
.
getDesc
(),
oldObj
,
newObj
));
}};
updateSelectiveByIdRe
(
orderLog
);
}
catch
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
}
}
}
}
\ No newline at end of file
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/inner/OrderCalculateBiz.java
View file @
a7fbb3d3
...
@@ -12,6 +12,7 @@ import com.xxfc.platform.app.feign.ConfigFeign;
...
@@ -12,6 +12,7 @@ import com.xxfc.platform.app.feign.ConfigFeign;
import
com.xxfc.platform.order.biz.BaseOrderBiz
;
import
com.xxfc.platform.order.biz.BaseOrderBiz
;
import
com.xxfc.platform.order.biz.OrderAccountBiz
;
import
com.xxfc.platform.order.biz.OrderAccountBiz
;
import
com.xxfc.platform.order.biz.OrderItemBiz
;
import
com.xxfc.platform.order.biz.OrderItemBiz
;
import
com.xxfc.platform.order.biz.OrderRentVehicleBiz
;
import
com.xxfc.platform.order.contant.enumerate.DeductionTypeEnum
;
import
com.xxfc.platform.order.contant.enumerate.DeductionTypeEnum
;
import
com.xxfc.platform.order.contant.enumerate.ItemTypeEnum
;
import
com.xxfc.platform.order.contant.enumerate.ItemTypeEnum
;
import
com.xxfc.platform.order.contant.enumerate.OrderStatusEnum
;
import
com.xxfc.platform.order.contant.enumerate.OrderStatusEnum
;
...
@@ -80,7 +81,10 @@ public class OrderCalculateBiz {
...
@@ -80,7 +81,10 @@ public class OrderCalculateBiz {
@Autowired
@Autowired
BaseOrderBiz
baseOrderBiz
;
BaseOrderBiz
baseOrderBiz
;
public
InProgressVO
inProgressCalculate
(
BaseOrder
baseOrder
,
VehicleItemDTO
vehicleItemDTO
,
Integer
useDays
,
OrderAccountDetail
oad
,
Boolean
isCancel
)
{
@Autowired
OrderRentVehicleBiz
orderRentVehicleBiz
;
public
InProgressVO
inProgressCalculate
(
BaseOrder
baseOrder
,
VehicleItemDTO
vehicleItemDTO
,
OrderRentVehicleDetail
orvd
,
Integer
useDays
,
OrderAccountDetail
oad
,
Boolean
isCancel
)
{
BigDecimal
refundAmount
=
BigDecimal
.
ZERO
;
BigDecimal
refundAmount
=
BigDecimal
.
ZERO
;
BigDecimal
consumeAmount
=
BigDecimal
.
ZERO
;
BigDecimal
consumeAmount
=
BigDecimal
.
ZERO
;
BigDecimal
topViolateAmount
=
BigDecimal
.
ZERO
;
BigDecimal
topViolateAmount
=
BigDecimal
.
ZERO
;
...
@@ -103,7 +107,14 @@ public class OrderCalculateBiz {
...
@@ -103,7 +107,14 @@ public class OrderCalculateBiz {
InProgressVO
inProgressVO
=
new
InProgressVO
();
InProgressVO
inProgressVO
=
new
InProgressVO
();
inProgressVO
.
setUsedDays
(
useDays
);
inProgressVO
.
setUsedDays
(
useDays
);
inProgressVO
.
setUsedAmount
(
vehicleItemDTO
.
getUsedAmount
(
useDays
));
inProgressVO
.
setMetaOrderUsedAmount
(
vehicleItemDTO
.
getUsedAmount
(
useDays
));
//查看是否有增加的延期天数-->添加分别原订单和延期的使用金额
if
(
orvd
.
getDelayAddDays
()
>
0
&&
useDays
>
vehicleItemDTO
.
getTotalNum
())
{
inProgressVO
.
setDelayAddUsedAmount
(
orvd
.
obtainDelayAddDetail
().
delayAddUseAmount
(
useDays
-
vehicleItemDTO
.
getTotalNum
()));
}
inProgressVO
.
setUsedAmount
(
inProgressVO
.
getMetaOrderUsedAmount
().
add
(
inProgressVO
.
getDelayAddUsedAmount
()));
//使用的天数对应的免费天数
//使用的天数对应的免费天数
Integer
useDaysMapFreeDays
=
vehicleItemDTO
.
mapFreeDays
(
useDays
);
Integer
useDaysMapFreeDays
=
vehicleItemDTO
.
mapFreeDays
(
useDays
);
...
@@ -113,10 +124,11 @@ public class OrderCalculateBiz {
...
@@ -113,10 +124,11 @@ public class OrderCalculateBiz {
//待返还的优惠券编号
//待返还的优惠券编号
List
<
String
>
backCouponNos
=
Lists
.
newArrayList
();
List
<
String
>
backCouponNos
=
Lists
.
newArrayList
();
//剩余天数
//剩余天数
Integer
re
sidueDays
=
vehicleItemDTO
.
getTotal
Num
()
-
useDays
;
Integer
re
alResidueDays
=
orvd
.
obtainRealDay
Num
()
-
useDays
;
//过了出发时间取消订单 ,优先使用免费天数
//过了出发时间取消订单 ,优先使用免费天数
if
(
backFreeDays
<=
0
)
{
if
(
backFreeDays
<=
0
)
{
//设置免费天数
//设置免费天数
inProgressVO
.
setUsedfreeDays
(
freeDays
);
inProgressVO
.
setUsedfreeDays
(
freeDays
);
inProgressVO
.
setUsedFreeDaysAmount
(
vehicleItemDTO
.
getFreeAmount
(
null
));
inProgressVO
.
setUsedFreeDaysAmount
(
vehicleItemDTO
.
getFreeAmount
(
null
));
...
@@ -169,20 +181,36 @@ public class OrderCalculateBiz {
...
@@ -169,20 +181,36 @@ public class OrderCalculateBiz {
inProgressVO
.
setConsumeAmount
(
consumeAmount
);
inProgressVO
.
setConsumeAmount
(
consumeAmount
);
refundAmount
=
handleConsumeAmount
(
oad
,
refundAmount
,
consumeAmount
,
goodsRealAmount
,
inProgressVO
);
refundAmount
=
handleConsumeAmount
(
oad
,
refundAmount
,
consumeAmount
,
goodsRealAmount
,
inProgressVO
);
//查看是否有增加的延期天数-->添加分别原订单和延期的返回天数
if
(
orvd
.
getDelayAddDays
()
>
0
&&
realResidueDays
>
0
)
{
inProgressVO
.
setDelayAddBackFreeDays
(
orvd
.
obtainDelayAddDetail
().
residueDelayFreeDays
(
realResidueDays
));
inProgressVO
.
setBackFreeDays
(
inProgressVO
.
getDelayAddBackFreeDays
());
}
//查看是否有增加的延期天数-->添加延期的已使用免费天数 和 已使用免费天数金额
if
(
orvd
.
getDelayAddDays
()
>
0
&&
useDays
>
vehicleItemDTO
.
getTotalNum
())
{
inProgressVO
.
setUsedfreeDays
(
inProgressVO
.
getUsedfreeDays
()
+
(
orvd
.
getDelayAddFreeDays
()
-
inProgressVO
.
getDelayAddBackFreeDays
()));
inProgressVO
.
setUsedFreeDaysAmount
(
inProgressVO
.
getUsedFreeDaysAmount
().
add
(
orvd
.
obtainDelayAddDetail
().
delayAddFreeAmount
(
useDays
-
vehicleItemDTO
.
getTotalNum
())));
}
}
else
{
}
else
{
//设置免费天数
//设置免费天数
inProgressVO
.
setUsedfreeDays
(
useDaysMapFreeDays
);
inProgressVO
.
setUsedfreeDays
(
useDaysMapFreeDays
);
inProgressVO
.
setUsedFreeDaysAmount
(
vehicleItemDTO
.
getFreeAmount
(
useDays
));
inProgressVO
.
setUsedFreeDaysAmount
(
vehicleItemDTO
.
getFreeAmount
(
useDays
));
//返回剩余免费天数,返回优惠券,订单款
//修改bug,不需要提前加, 已在handleConsumeAmount方法中添加
// refundAmount = refundAmount.add(goodsRealAmount);
// inProgressVO.setBackFreeDays(backFreeDays);
//融入日期价格
//融入日期价格
Integer
trueBackFreeDays
=
backFreeDays
;
Integer
trueBackFreeDays
=
backFreeDays
;
inProgressVO
.
setBackFreeDays
(
trueBackFreeDays
);
inProgressVO
.
setMetaOrderBackFreeDays
(
trueBackFreeDays
);
//查看是否有增加的延期天数-->添加分别原订单和延期的返回天数
if
(
orvd
.
getDelayAddDays
()
>
0
)
{
inProgressVO
.
setDelayAddBackFreeDays
(
orvd
.
getDelayAddFreeDays
());
}
inProgressVO
.
setBackFreeDays
(
inProgressVO
.
getMetaOrderBackFreeDays
()+
inProgressVO
.
getDelayAddBackFreeDays
());
//查看是否有增加的延期天数-->添加延期的已使用免费天数 和 已使用免费天数金额
//不需要
//返回优惠券
//返回优惠券
if
(
StrUtil
.
isNotBlank
(
baseOrder
.
getCouponTickerNos
()))
{
if
(
StrUtil
.
isNotBlank
(
baseOrder
.
getCouponTickerNos
()))
{
...
@@ -200,29 +228,37 @@ public class OrderCalculateBiz {
...
@@ -200,29 +228,37 @@ public class OrderCalculateBiz {
inProgressVO
.
setRefundOrderAmount
(
refundAmount
);
inProgressVO
.
setRefundOrderAmount
(
refundAmount
);
inProgressVO
.
setBackCoupons
(
backCouponNos
);
inProgressVO
.
setBackCoupons
(
backCouponNos
);
List
<
VMCalendarPriceCostDTO
>
realVmcpds
=
Convert
.
toList
(
VMCalendarPriceCostDTO
.
class
,
vmcpds
);
//查看是否有增加的延期天数-->添加延期的费用列表
if
(
orvd
.
getDelayAddDays
()
>
0
)
{
realVmcpds
.
addAll
(
orvd
.
obtainDelayAddDetail
().
getDelayAmountList
());
}
//计算违约金
//计算违约金
//residueDays * 身份价格
//residueDays * 身份价格
if
(
residueDays
>
0
)
{
if
(
realResidueDays
>
0
)
{
//设置消耗费用列表
//设置消耗费用列表
for
(
int
i
=
0
;
i
<
useDays
;
i
++)
{
for
(
int
i
=
0
;
i
<
useDays
;
i
++)
{
useAmountList
.
add
(
BeanUtil
.
toBean
(
v
mcpds
.
get
(
i
),
VMCalendarPriceCostDTO
.
class
));
useAmountList
.
add
(
BeanUtil
.
toBean
(
realV
mcpds
.
get
(
i
),
VMCalendarPriceCostDTO
.
class
));
}
}
//"{}元/天 x{}天"
//"{}元/天 x{}天"
BigDecimal
residueAmount
=
BigDecimal
.
ZERO
;
BigDecimal
residueAmount
=
BigDecimal
.
ZERO
;
for
(
int
i
=
useDays
;
i
<
vehicleItemDTO
.
getTotalNum
();
i
++)
{
for
(
int
i
=
useDays
;
i
<
vehicleItemDTO
.
getTotalNum
();
i
++)
{
residueAmount
=
residueAmount
.
add
(
v
mcpds
.
get
(
i
).
getPrice
());
residueAmount
=
residueAmount
.
add
(
realV
mcpds
.
get
(
i
).
getPrice
());
inProgressVO
.
getViolateAmountList
().
add
(
v
mcpds
.
get
(
i
));
inProgressVO
.
getViolateAmountList
().
add
(
realV
mcpds
.
get
(
i
));
}
}
String
violateDesc
=
StrUtil
.
format
(
"{}元"
,
residueAmount
.
toString
());
String
violateDesc
=
StrUtil
.
format
(
"{}元"
,
residueAmount
.
toString
());
if
(
residueDays
>=
2
)
{
if
(
re
alRe
sidueDays
>=
2
)
{
residueDays
=
2
;
re
alRe
sidueDays
=
2
;
residueAmount
=
BigDecimal
.
ZERO
;
residueAmount
=
BigDecimal
.
ZERO
;
inProgressVO
.
setViolateAmountList
(
CollUtil
.
newArrayList
());
inProgressVO
.
setViolateAmountList
(
CollUtil
.
newArrayList
());
for
(
int
i
=
useDays
;
i
<
(
useDays
+
residueDays
);
i
++)
{
for
(
int
i
=
useDays
;
i
<
(
useDays
+
re
alRe
sidueDays
);
i
++)
{
residueAmount
=
residueAmount
.
add
(
v
mcpds
.
get
(
i
).
getPrice
());
residueAmount
=
residueAmount
.
add
(
realV
mcpds
.
get
(
i
).
getPrice
());
inProgressVO
.
getViolateAmountList
().
add
(
v
mcpds
.
get
(
i
));
inProgressVO
.
getViolateAmountList
().
add
(
realV
mcpds
.
get
(
i
));
}
}
violateDesc
+=
StrUtil
.
format
(
"(封顶{}元)"
,
residueAmount
);
violateDesc
+=
StrUtil
.
format
(
"(封顶{}元)"
,
residueAmount
);
}
}
...
@@ -231,18 +267,18 @@ public class OrderCalculateBiz {
...
@@ -231,18 +267,18 @@ public class OrderCalculateBiz {
inProgressVO
.
setViolateDesc
(
" 提前还车违约金:"
+
violateDesc
);
inProgressVO
.
setViolateDesc
(
" 提前还车违约金:"
+
violateDesc
);
OrderAccountDeduction
violateDeduction
=
orderAccountBiz
.
initDeduction
(
inProgressVO
.
getViolateAmount
(),
violateDesc
,
DeductionTypeEnum
.
VIOLATE_ADVANCE
,
OrderAccountDeduction
.
ORIGIN_DEPOSIT
);
OrderAccountDeduction
violateDeduction
=
orderAccountBiz
.
initDeduction
(
inProgressVO
.
getViolateAmount
(),
violateDesc
,
DeductionTypeEnum
.
VIOLATE_ADVANCE
,
OrderAccountDeduction
.
ORIGIN_DEPOSIT
);
oad
.
getDeductions
().
add
(
violateDeduction
);
oad
.
getDeductions
().
add
(
violateDeduction
);
}
else
if
(
residueDays
<
0
&&
!
isCancel
){
}
else
if
(
re
alRe
sidueDays
<
0
&&
!
isCancel
){
//isCancel 表示是否为取消,取消则不计算延期还车(因为没有出车)
//isCancel 表示是否为取消,取消则不计算延期还车(因为没有出车)
//设置消耗费用列表
//设置消耗费用列表
useAmountList
.
addAll
(
Convert
.
toList
(
VMCalendarPriceCostDTO
.
class
,
v
mcpds
));
useAmountList
.
addAll
(
Convert
.
toList
(
VMCalendarPriceCostDTO
.
class
,
realV
mcpds
));
//如果订单 出发中 或者 已完成 或者定损中
//如果订单 出发中 或者 已完成 或者定损中
if
(
OrderStatusEnum
.
ORDER_WAIT
.
getCode
().
equals
(
baseOrder
.
getStatus
())
||
if
(
OrderStatusEnum
.
ORDER_WAIT
.
getCode
().
equals
(
baseOrder
.
getStatus
())
||
OrderStatusEnum
.
ORDER_FINISH
.
getCode
().
equals
(
baseOrder
.
getStatus
())
||
OrderStatusEnum
.
ORDER_FINISH
.
getCode
().
equals
(
baseOrder
.
getStatus
())
||
OrderStatusEnum
.
ORDER_FIXED_LOSS
.
getCode
().
equals
(
baseOrder
.
getStatus
()))
{
OrderStatusEnum
.
ORDER_FIXED_LOSS
.
getCode
().
equals
(
baseOrder
.
getStatus
()))
{
Integer
overDays
=
0
-
residueDays
;
Integer
overDays
=
0
-
re
alRe
sidueDays
;
String
violateDesc
=
StrUtil
.
format
(
" 延迟{}天"
,
overDays
);
String
violateDesc
=
StrUtil
.
format
(
" 延迟{}天"
,
overDays
);
List
<
VMCalendarPriceCostDTO
>
overAmountList
=
orderItemBiz
.
getOverAmountList
(
vmcpds
.
get
(
v
mcpds
.
size
()
-
1
).
getDate
(),
overDays
,
vehicleItemDTO
.
getGoodId
(),
baseOrder
.
getUserId
());
List
<
VMCalendarPriceCostDTO
>
overAmountList
=
orderItemBiz
.
getOverAmountList
(
realVmcpds
.
get
(
realV
mcpds
.
size
()
-
1
).
getDate
(),
overDays
,
vehicleItemDTO
.
getGoodId
(),
baseOrder
.
getUserId
());
BigDecimal
overAmount
=
overAmountList
.
parallelStream
()
BigDecimal
overAmount
=
overAmountList
.
parallelStream
()
.
map
(
VMCalendarPriceCostDTO:
:
getPrice
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
).
multiply
(
new
BigDecimal
(
2
+
""
));
.
map
(
VMCalendarPriceCostDTO:
:
getPrice
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
).
multiply
(
new
BigDecimal
(
2
+
""
));
...
@@ -285,11 +321,15 @@ public class OrderCalculateBiz {
...
@@ -285,11 +321,15 @@ public class OrderCalculateBiz {
setType
(
ItemTypeEnum
.
VEHICLE_MODEL
.
getCode
());
setType
(
ItemTypeEnum
.
VEHICLE_MODEL
.
getCode
());
setOrderId
(
baseOrder
.
getId
());
setOrderId
(
baseOrder
.
getId
());
}}),
VehicleItemDTO
.
class
);
}}),
VehicleItemDTO
.
class
);
return
inProgressCalculate
(
baseOrder
,
vehicleItemDTO
,
useDays
,
new
OrderAccountDetail
(),
Boolean
.
FALSE
);
OrderRentVehicleDetail
orvd
=
orderRentVehicleBiz
.
selectOne
(
new
OrderRentVehicleDetail
()
{{
setOrderId
(
baseOrder
.
getId
());
}});
return
inProgressCalculate
(
baseOrder
,
vehicleItemDTO
,
orvd
,
useDays
,
new
OrderAccountDetail
(),
Boolean
.
FALSE
);
}
}
public
InProgressVO
calculateOrderComplete
(
BaseOrder
baseOrder
,
OrderRentVehicleDetail
orvd
,
OrderAccountDetail
oad
,
VehicleItemDTO
vehicleItemDTO
,
Integer
useDays
,
Boolean
isCancel
)
{
public
InProgressVO
calculateOrderComplete
(
BaseOrder
baseOrder
,
OrderRentVehicleDetail
orvd
,
OrderAccountDetail
oad
,
VehicleItemDTO
vehicleItemDTO
,
Integer
useDays
,
Boolean
isCancel
)
{
InProgressVO
inProgressVO
=
inProgressCalculate
(
baseOrder
,
vehicleItemDTO
,
useDays
,
oad
,
isCancel
);
InProgressVO
inProgressVO
=
inProgressCalculate
(
baseOrder
,
vehicleItemDTO
,
orvd
,
useDays
,
oad
,
isCancel
);
//定金 - (额外消费金额 + 违约金)
//定金 - (额外消费金额 + 违约金)
oad
.
setDepositAmount
(
orvd
.
getDeposit
().
subtract
(
inProgressVO
.
getExtraAmount
().
add
(
inProgressVO
.
getViolateAmount
())));
oad
.
setDepositAmount
(
orvd
.
getDeposit
().
subtract
(
inProgressVO
.
getExtraAmount
().
add
(
inProgressVO
.
getViolateAmount
())));
...
@@ -361,7 +401,7 @@ public class OrderCalculateBiz {
...
@@ -361,7 +401,7 @@ public class OrderCalculateBiz {
if
(
timeLag
<
0
)
{
if
(
timeLag
<
0
)
{
Integer
useDays
=
getIncludeDays
(
orderPageVO
.
getOrderRentVehicleDetail
().
getStartTime
(),
DateTime
.
now
().
getMillis
());
Integer
useDays
=
getIncludeDays
(
orderPageVO
.
getOrderRentVehicleDetail
().
getStartTime
(),
DateTime
.
now
().
getMillis
());
OrderAccountDetail
oad
=
new
OrderAccountDetail
();
OrderAccountDetail
oad
=
new
OrderAccountDetail
();
inProgressVO
=
inProgressCalculate
(
orderPageVO
,
vehicleItemDTO
,
useDays
,
oad
,
Boolean
.
FALSE
);
inProgressVO
=
inProgressCalculate
(
orderPageVO
,
vehicleItemDTO
,
orderPageVO
.
getOrderRentVehicleDetail
(),
useDays
,
oad
,
Boolean
.
FALSE
);
topAmount
=
vehicleItemDTO
.
getTopAmount
(
useDays
);
topAmount
=
vehicleItemDTO
.
getTopAmount
(
useDays
);
totalDeductAmount
=
oad
.
realTotalDeduct
();
totalDeductAmount
=
oad
.
realTotalDeduct
();
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/inner/OrderCancelBiz.java
View file @
a7fbb3d3
...
@@ -149,8 +149,8 @@ public class OrderCancelBiz {
...
@@ -149,8 +149,8 @@ public class OrderCancelBiz {
Long
timeLag
=
orvd
.
getStartTime
()
-
System
.
currentTimeMillis
();
Long
timeLag
=
orvd
.
getStartTime
()
-
System
.
currentTimeMillis
();
if
(
timeLag
<
0
)
{
if
(
timeLag
<
0
)
{
Integer
useDays
=
orderCalculateBiz
.
getIncludeDays
(
orvd
.
getStartTime
(),
System
.
currentTimeMillis
());
Integer
useDays
=
orderCalculateBiz
.
getIncludeDays
(
orvd
.
getStartTime
(),
System
.
currentTimeMillis
());
if
(
useDays
>
orvd
.
get
DayNum
())
{
if
(
useDays
>
orvd
.
obtainReal
DayNum
())
{
useDays
=
orvd
.
get
DayNum
();
useDays
=
orvd
.
obtainReal
DayNum
();
}
}
inProgressVO
=
orderCalculateBiz
.
calculateOrderComplete
(
baseOrder
,
orvd
,
oad
,
vehicleItemDTO
,
useDays
,
Boolean
.
TRUE
);
inProgressVO
=
orderCalculateBiz
.
calculateOrderComplete
(
baseOrder
,
orvd
,
oad
,
vehicleItemDTO
,
useDays
,
Boolean
.
TRUE
);
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/inner/OrderDelayBiz.java
View file @
a7fbb3d3
...
@@ -89,6 +89,9 @@ public class OrderDelayBiz {
...
@@ -89,6 +89,9 @@ public class OrderDelayBiz {
@Autowired
@Autowired
OrderTemplateBiz
orderTemplateBiz
;
OrderTemplateBiz
orderTemplateBiz
;
@Autowired
OrderLogBiz
orderLogBiz
;
@Autowired
@Autowired
UserFeign
userFeign
;
UserFeign
userFeign
;
...
@@ -106,6 +109,7 @@ public class OrderDelayBiz {
...
@@ -106,6 +109,7 @@ public class OrderDelayBiz {
public
void
delayRentOrder
(
OrderPageVO
orderPageVO
,
DelayRentOrderDTO
dto
)
{
public
void
delayRentOrder
(
OrderPageVO
orderPageVO
,
DelayRentOrderDTO
dto
)
{
OrderRentVehicleDetail
orvd
=
orderPageVO
.
getOrderRentVehicleDetail
();
OrderRentVehicleDetail
orvd
=
orderPageVO
.
getOrderRentVehicleDetail
();
OrderRentVehicleDetail
oldOrvd
=
BeanUtil
.
toBean
(
orvd
,
OrderRentVehicleDetail
.
class
);
Integer
delayAddDays
=
0
;
Integer
delayAddDays
=
0
;
Integer
delayAddFreeDays
=
0
;
Integer
delayAddFreeDays
=
0
;
//分布式事务执行标记
//分布式事务执行标记
...
@@ -126,6 +130,12 @@ public class OrderDelayBiz {
...
@@ -126,6 +130,12 @@ public class OrderDelayBiz {
if
(
delayAddDays
>
0
)
{
if
(
delayAddDays
>
0
)
{
//获得延期天数费用
//获得延期天数费用
delayAmountList
=
orderItemBiz
.
getOverAmountList
(
DateUtil
.
date
(
orvd
.
getEndTime
()),
delayAddDays
,
orvd
.
getModelId
(),
orderPageVO
.
getUserId
());
delayAmountList
=
orderItemBiz
.
getOverAmountList
(
DateUtil
.
date
(
orvd
.
getEndTime
()),
delayAddDays
,
orvd
.
getModelId
(),
orderPageVO
.
getUserId
());
//处理免费天数和免费金额
delayAmountList
.
parallelStream
().
forEach
(
vmcpcd
->
{
vmcpcd
.
setValidFreeDays
(
vmcpcd
.
getFreeDays
());
vmcpcd
.
setFreeAmount
(
vmcpcd
.
getPrice
());
});
delayAddFreeDays
=
delayAmountList
.
parallelStream
().
mapToInt
(
VMCalendarPriceCostDTO:
:
getFreeDays
).
sum
();
delayAddFreeDays
=
delayAmountList
.
parallelStream
().
mapToInt
(
VMCalendarPriceCostDTO:
:
getFreeDays
).
sum
();
}
else
{
}
else
{
delayAmountList
=
CollUtil
.
newArrayList
();
delayAmountList
=
CollUtil
.
newArrayList
();
...
@@ -198,6 +208,7 @@ public class OrderDelayBiz {
...
@@ -198,6 +208,7 @@ public class OrderDelayBiz {
}
}
orvd
.
setDelayAddDetail
(
JSONUtil
.
toJsonStr
(
delayAddPriceVO
));
orvd
.
setDelayAddDetail
(
JSONUtil
.
toJsonStr
(
delayAddPriceVO
));
orderRentVehicleBiz
.
updateSelectiveByIdRe
(
orvd
);
orderRentVehicleBiz
.
updateSelectiveByIdRe
(
orvd
);
orderLogBiz
.
logChange
(
orvd
,
oldOrvd
,
dto
.
getOperateId
(),
orderPageVO
.
getNo
(),
OrderLogEnum
.
DELAY_MODIFY
);
}
}
}
}
}
}
\ No newline at end of file
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/pojo/dto/order/VMCalendarPriceCostDTO.java
View file @
a7fbb3d3
...
@@ -23,6 +23,11 @@ public class VMCalendarPriceCostDTO extends VehicleModelCalendarPriceDTO {
...
@@ -23,6 +23,11 @@ public class VMCalendarPriceCostDTO extends VehicleModelCalendarPriceDTO {
*/
*/
private
BigDecimal
freeAmount
=
BigDecimal
.
ZERO
;
private
BigDecimal
freeAmount
=
BigDecimal
.
ZERO
;
/**
* 生效的免费天数
*/
private
Integer
validFreeDays
=
0
;
public
void
setFreeAndConsumeAmount
(
BigDecimal
realAmount
,
BigDecimal
freeAmount
)
{
public
void
setFreeAndConsumeAmount
(
BigDecimal
realAmount
,
BigDecimal
freeAmount
)
{
setFreeAmount
(
freeAmount
);
setFreeAmount
(
freeAmount
);
setConsumeAmount
(
realAmount
.
subtract
(
freeAmount
));
setConsumeAmount
(
realAmount
.
subtract
(
freeAmount
));
...
...
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