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
4429469d
Commit
4429469d
authored
Oct 22, 2019
by
周健威
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改代码
parent
adac92e4
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
254 additions
and
57 deletions
+254
-57
OrderItem.java
...c/main/java/com/xxfc/platform/order/entity/OrderItem.java
+3
-14
InProgressVO.java
.../com/xxfc/platform/order/pojo/calculate/InProgressVO.java
+13
-0
VehicleItemDTO.java
...va/com/xxfc/platform/order/pojo/order/VehicleItemDTO.java
+99
-0
CancelStartedVO.java
...a/com/xxfc/platform/order/pojo/price/CancelStartedVO.java
+9
-0
OrderAccountBiz.java
...ain/java/com/xxfc/platform/order/biz/OrderAccountBiz.java
+4
-3
OrderItemBiz.java
...c/main/java/com/xxfc/platform/order/biz/OrderItemBiz.java
+25
-0
OrderCalculateBiz.java
.../com/xxfc/platform/order/biz/inner/OrderCalculateBiz.java
+71
-25
OrderCancelBiz.java
...ava/com/xxfc/platform/order/biz/inner/OrderCancelBiz.java
+8
-10
OrderRefundController.java
...a/com/xxfc/platform/order/rest/OrderRefundController.java
+5
-4
OrderRentVehicleService.java
.../xxfc/platform/order/service/OrderRentVehicleService.java
+2
-1
VehicleModelCalendarPriceDTO.java
...atform/vehicle/pojo/dto/VehicleModelCalendarPriceDTO.java
+1
-0
VMCalendarPriceCostDTO.java
...atform/vehicle/pojo/dto/order/VMCalendarPriceCostDTO.java
+14
-0
No files found.
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/OrderItem.java
View file @
4429469d
...
@@ -4,10 +4,13 @@ import java.io.Serializable;
...
@@ -4,10 +4,13 @@ import java.io.Serializable;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.math.RoundingMode
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
javax.persistence.*
;
import
javax.persistence.*
;
import
cn.hutool.json.JSONUtil
;
import
com.xxfc.platform.order.contant.enumerate.ItemTypeEnum
;
import
com.xxfc.platform.order.contant.enumerate.ItemTypeEnum
;
import
com.xxfc.platform.vehicle.constant.AccompanyingItemType
;
import
com.xxfc.platform.vehicle.constant.AccompanyingItemType
;
import
com.xxfc.platform.vehicle.pojo.dto.VehicleModelCalendarPriceDTO
;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -147,20 +150,6 @@ public class OrderItem implements Serializable {
...
@@ -147,20 +150,6 @@ public class OrderItem implements Serializable {
return
calculateAmount
;
return
calculateAmount
;
}
}
public
BigDecimal
calculateVehicleUnitPrice
(
BigDecimal
vehicleAmount
,
BigDecimal
metaVehicleAmount
,
Boolean
isSetRealAmount
)
{
BigDecimal
unitPrice
=
vehicleAmount
.
divide
(
new
BigDecimal
(
getCalculateNum
()+
""
),
2
,
RoundingMode
.
HALF_UP
);
BigDecimal
metaUnitPrice
=
metaVehicleAmount
.
divide
(
new
BigDecimal
(
getCalculateNum
()+
""
),
2
,
RoundingMode
.
HALF_UP
);
if
(
isSetRealAmount
)
{
setRealAmount
(
vehicleAmount
);
}
setUnitPrice
(
unitPrice
);
setMetaUnitPrice
(
metaUnitPrice
);
return
unitPrice
;
}
public
BigDecimal
getBuyAmount
()
{
public
BigDecimal
getBuyAmount
()
{
return
getUnitPrice
().
multiply
(
new
BigDecimal
(
getBuyNum
()
+
""
));
return
getUnitPrice
().
multiply
(
new
BigDecimal
(
getBuyNum
()
+
""
));
}
}
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/calculate/InProgressVO.java
View file @
4429469d
package
com
.
xxfc
.
platform
.
order
.
pojo
.
calculate
;
package
com
.
xxfc
.
platform
.
order
.
pojo
.
calculate
;
import
cn.hutool.core.collection.CollUtil
;
import
com.xxfc.platform.vehicle.pojo.dto.order.VMCalendarPriceCostDTO
;
import
lombok.Data
;
import
lombok.Data
;
import
org.assertj.core.util.Lists
;
import
org.assertj.core.util.Lists
;
...
@@ -69,4 +71,15 @@ public class InProgressVO {
...
@@ -69,4 +71,15 @@ public class InProgressVO {
String
violateDesc
=
""
;
String
violateDesc
=
""
;
/**
* 使用(消耗)详情列表
*/
List
<
VMCalendarPriceCostDTO
>
useAmountList
=
CollUtil
.
newArrayList
();
/**
* 延期 详情列表
*/
List
<
VMCalendarPriceCostDTO
>
overAmountList
=
CollUtil
.
newArrayList
();
}
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/order/VehicleItemDTO.java
0 → 100644
View file @
4429469d
package
com
.
xxfc
.
platform
.
order
.
pojo
.
order
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.xxfc.platform.order.entity.OrderItem
;
import
com.xxfc.platform.vehicle.feign.VehicleFeign
;
import
com.xxfc.platform.vehicle.pojo.dto.VehicleModelCalendarPriceDTO
;
import
com.xxfc.platform.vehicle.pojo.dto.order.VMCalendarPriceCostDTO
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.util.Date
;
import
java.util.List
;
@Data
public
class
VehicleItemDTO
extends
OrderItem
{
public
static
final
int
topNum
=
2
;
public
BigDecimal
calculateVehicleUnitPrice
(
BigDecimal
vehicleAmount
,
BigDecimal
metaVehicleAmount
,
Boolean
isSetRealAmount
)
{
BigDecimal
unitPrice
=
vehicleAmount
.
divide
(
new
BigDecimal
(
getCalculateNum
()+
""
),
2
,
RoundingMode
.
HALF_UP
);
BigDecimal
metaUnitPrice
=
metaVehicleAmount
.
divide
(
new
BigDecimal
(
getCalculateNum
()+
""
),
2
,
RoundingMode
.
HALF_UP
);
if
(
isSetRealAmount
)
{
setRealAmount
(
vehicleAmount
);
}
setUnitPrice
(
unitPrice
);
setMetaUnitPrice
(
metaUnitPrice
);
return
unitPrice
;
}
public
BigDecimal
getCutAmount
()
{
List
<
VehicleModelCalendarPriceDTO
>
vmcpds
=
getVehicleDetail
();
if
(
CollUtil
.
isEmpty
(
vmcpds
)){
return
super
.
getCutAmount
();
}
BigDecimal
cutAmount
=
BigDecimal
.
ZERO
;
for
(
int
i
=
0
;
i
<
getCutNum
();
i
++)
{
cutAmount
=
cutAmount
.
add
(
vmcpds
.
get
(
i
).
getPrice
());
}
return
cutAmount
;
}
public
List
<
VehicleModelCalendarPriceDTO
>
getVehicleDetail
()
{
if
(
StrUtil
.
isBlank
(
getDetail
()))
{
return
CollUtil
.
newArrayList
();
}
return
JSONUtil
.
toList
(
JSONUtil
.
parseArray
(
getDetail
()),
VehicleModelCalendarPriceDTO
.
class
);
}
public
BigDecimal
getBuyAmount
()
{
List
<
VehicleModelCalendarPriceDTO
>
vmcpds
=
getVehicleDetail
();
if
(
CollUtil
.
isEmpty
(
vmcpds
)){
return
super
.
getBuyAmount
();
}
BigDecimal
buyAmount
=
BigDecimal
.
ZERO
;
for
(
int
i
=
0
;
i
<
getBuyNum
();
i
++)
{
buyAmount
=
buyAmount
.
add
(
vmcpds
.
get
(
i
).
getPrice
());
}
return
buyAmount
;
}
public
BigDecimal
getTopAmount
(
Integer
useDays
)
{
List
<
VehicleModelCalendarPriceDTO
>
vmcpds
=
getVehicleDetail
();
if
(
CollUtil
.
isEmpty
(
vmcpds
)){
return
getUnitPrice
().
multiply
(
new
BigDecimal
(
topNum
+
""
));
}
BigDecimal
topAmount
=
BigDecimal
.
ZERO
;
for
(
int
i
=
useDays
;
i
<
getTotalNum
();
i
++)
{
topAmount
=
topAmount
.
add
(
vmcpds
.
get
(
i
).
getPrice
());
}
//未用天数 小于 topNum
if
(
getTotalNum
()
-
useDays
<
topNum
)
{
Integer
residue
=
getTotalNum
()
-
useDays
;
topAmount
=
topAmount
.
add
(
vmcpds
.
get
(
vmcpds
.
size
()
-
1
).
getPrice
().
multiply
(
new
BigDecimal
((
topNum
-
residue
)
+
""
)));
}
return
topAmount
;
}
public
BigDecimal
getUsedAmount
(
Integer
useDays
)
{
return
getUnitPrice
().
multiply
(
new
BigDecimal
(
useDays
+
""
));
}
public
BigDecimal
getFreeAmount
(
Integer
freeDays
)
{
List
<
VehicleModelCalendarPriceDTO
>
vmcpds
=
getVehicleDetail
();
if
(
CollUtil
.
isEmpty
(
vmcpds
)){
return
getUnitPrice
().
multiply
(
new
BigDecimal
(
freeDays
+
""
));
}
BigDecimal
freeAmount
=
BigDecimal
.
ZERO
;
for
(
int
i
=
0
;
i
<
getBuyNum
();
i
++)
{
freeAmount
=
freeAmount
.
add
(
vmcpds
.
get
(
i
).
getPrice
());
}
return
freeAmount
;
}
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/price/CancelStartedVO.java
View file @
4429469d
package
com
.
xxfc
.
platform
.
order
.
pojo
.
price
;
package
com
.
xxfc
.
platform
.
order
.
pojo
.
price
;
import
com.xxfc.platform.vehicle.pojo.dto.order.VMCalendarPriceCostDTO
;
import
lombok.Data
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.List
;
@Data
@Data
public
class
CancelStartedVO
extends
CostDetailExtend
{
public
class
CancelStartedVO
extends
CostDetailExtend
{
...
@@ -65,4 +67,11 @@ public class CancelStartedVO extends CostDetailExtend {
...
@@ -65,4 +67,11 @@ public class CancelStartedVO extends CostDetailExtend {
* 赔偿金
* 赔偿金
*/
*/
private
BigDecimal
damagesAmount
=
BigDecimal
.
ZERO
;
private
BigDecimal
damagesAmount
=
BigDecimal
.
ZERO
;
/**
* 使用(消耗)详情列表
*/
List
<
VMCalendarPriceCostDTO
>
useAmountList
;
//= CollUtil.newArrayList();
}
}
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderAccountBiz.java
View file @
4429469d
...
@@ -23,6 +23,7 @@ import com.xxfc.platform.order.pojo.account.OrderAccountDeduction;
...
@@ -23,6 +23,7 @@ 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.calculate.InProgressVO
;
import
com.xxfc.platform.order.pojo.calculate.InProgressVO
;
import
com.xxfc.platform.order.pojo.mq.OrderMQDTO
;
import
com.xxfc.platform.order.pojo.mq.OrderMQDTO
;
import
com.xxfc.platform.order.pojo.order.VehicleItemDTO
;
import
com.xxfc.platform.order.pojo.price.CancelStartedVO
;
import
com.xxfc.platform.order.pojo.price.CancelStartedVO
;
import
com.xxfc.platform.order.pojo.price.CostDetailExtend
;
import
com.xxfc.platform.order.pojo.price.CostDetailExtend
;
import
com.xxfc.platform.universal.constant.DictionaryKey
;
import
com.xxfc.platform.universal.constant.DictionaryKey
;
...
@@ -346,7 +347,7 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
...
@@ -346,7 +347,7 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
setType
(
crosstownTypeEnum
);
setType
(
crosstownTypeEnum
);
}});
}});
OrderItem
orderItem
=
orderItemBiz
.
selectOne
(
new
OrderItem
(){{
VehicleItemDTO
vehicleItemDTO
=
(
VehicleItemDTO
)
orderItemBiz
.
selectOne
(
new
OrderItem
(){{
setType
(
ItemTypeEnum
.
VEHICLE_MODEL
.
getCode
());
setType
(
ItemTypeEnum
.
VEHICLE_MODEL
.
getCode
());
setOrderId
(
orderMQDTO
.
getId
());
setOrderId
(
orderMQDTO
.
getId
());
}});
}});
...
@@ -361,7 +362,7 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
...
@@ -361,7 +362,7 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
}
}
OrderAccountDetail
oad
=
new
OrderAccountDetail
();
OrderAccountDetail
oad
=
new
OrderAccountDetail
();
InProgressVO
inProgressVO
=
orderCalculateBiz
.
calculateOrderComplete
(
orderMQDTO
,
orderMQDTO
.
getOrderRentVehicleDetail
(),
oad
,
orderItem
,
orderMQDTO
.
getOrderRentVehicleDetail
().
getUsedDay
(),
Boolean
.
FALSE
);
InProgressVO
inProgressVO
=
orderCalculateBiz
.
calculateOrderComplete
(
orderMQDTO
,
orderMQDTO
.
getOrderRentVehicleDetail
(),
oad
,
vehicleItemDTO
,
orderMQDTO
.
getOrderRentVehicleDetail
().
getUsedDay
(),
Boolean
.
FALSE
);
//设置定损金额
//设置定损金额
String
handleDedRefundDesc
=
""
;
String
handleDedRefundDesc
=
""
;
...
@@ -427,7 +428,7 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
...
@@ -427,7 +428,7 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
//生成额外的费用明细
//生成额外的费用明细
csv
.
setConsumeAmount
(
inProgressVO
.
getConsumeAmount
());
csv
.
setConsumeAmount
(
inProgressVO
.
getConsumeAmount
());
csv
.
setModelAmount
(
orderItem
.
getUnitPrice
());
csv
.
setModelAmount
(
vehicleItemDTO
.
getUnitPrice
());
csv
.
setUsedAmount
(
inProgressVO
.
getUsedAmount
());
csv
.
setUsedAmount
(
inProgressVO
.
getUsedAmount
());
csv
.
setUsedDayNum
(
inProgressVO
.
getUsedDays
());
csv
.
setUsedDayNum
(
inProgressVO
.
getUsedDays
());
csv
.
setUsedfreeDayNum
(
inProgressVO
.
getUsedfreeDays
());
csv
.
setUsedfreeDayNum
(
inProgressVO
.
getUsedfreeDays
());
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderItemBiz.java
View file @
4429469d
package
com
.
xxfc
.
platform
.
order
.
biz
;
package
com
.
xxfc
.
platform
.
order
.
biz
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.date.DateUtil
;
import
com.xxfc.platform.order.contant.enumerate.ItemTypeEnum
;
import
com.xxfc.platform.order.contant.enumerate.ItemTypeEnum
;
import
com.xxfc.platform.vehicle.feign.VehicleFeign
;
import
com.xxfc.platform.vehicle.pojo.dto.VehicleModelCalendarPriceDTO
;
import
com.xxfc.platform.vehicle.pojo.dto.order.VMCalendarPriceCostDTO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
com.xxfc.platform.order.entity.OrderItem
;
import
com.xxfc.platform.order.entity.OrderItem
;
...
@@ -8,6 +14,8 @@ import com.xxfc.platform.order.mapper.OrderItemMapper;
...
@@ -8,6 +14,8 @@ import com.xxfc.platform.order.mapper.OrderItemMapper;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
/**
/**
* 购房车提交表单
* 购房车提交表单
...
@@ -18,6 +26,10 @@ import java.math.BigDecimal;
...
@@ -18,6 +26,10 @@ import java.math.BigDecimal;
*/
*/
@Service
@Service
public
class
OrderItemBiz
extends
BaseBiz
<
OrderItemMapper
,
OrderItem
>
{
public
class
OrderItemBiz
extends
BaseBiz
<
OrderItemMapper
,
OrderItem
>
{
@Autowired
VehicleFeign
vehicleFeign
;
public
OrderItem
initOrderItem
(
BigDecimal
price
,
Integer
num
,
String
name
,
Integer
goodId
,
ItemTypeEnum
itemTypeEnum
,
String
detail
){
public
OrderItem
initOrderItem
(
BigDecimal
price
,
Integer
num
,
String
name
,
Integer
goodId
,
ItemTypeEnum
itemTypeEnum
,
String
detail
){
return
new
OrderItem
(){{
return
new
OrderItem
(){{
setMetaUnitPrice
(
price
);
setMetaUnitPrice
(
price
);
...
@@ -37,4 +49,17 @@ public class OrderItemBiz extends BaseBiz<OrderItemMapper,OrderItem> {
...
@@ -37,4 +49,17 @@ public class OrderItemBiz extends BaseBiz<OrderItemMapper,OrderItem> {
public
OrderItem
initOrderItem
(
BigDecimal
price
,
Integer
num
,
String
name
,
Integer
goodId
,
ItemTypeEnum
itemTypeEnum
){
public
OrderItem
initOrderItem
(
BigDecimal
price
,
Integer
num
,
String
name
,
Integer
goodId
,
ItemTypeEnum
itemTypeEnum
){
return
initOrderItem
(
price
,
num
,
name
,
goodId
,
itemTypeEnum
,
null
);
return
initOrderItem
(
price
,
num
,
name
,
goodId
,
itemTypeEnum
,
null
);
}
}
public
List
<
VMCalendarPriceCostDTO
>
getOverAmountList
(
Date
endDate
,
Integer
overDays
,
Integer
modelId
,
Integer
userId
)
{
List
<
VMCalendarPriceCostDTO
>
overAmountList
=
CollUtil
.
newArrayList
();
//根据延期的天数算出 对应的日期价格
Date
overStart
=
DateUtil
.
offsetDay
(
endDate
,
1
);
Date
overEnd
=
DateUtil
.
offsetDay
(
endDate
,
overDays
);
List
<
VehicleModelCalendarPriceDTO
>
overlist
=
vehicleFeign
.
findVehicleModelCalendarPriceByDate
(
overStart
,
overEnd
,
modelId
,
userId
);
for
(
VehicleModelCalendarPriceDTO
vmcpd
:
overlist
)
{
overAmountList
.
add
((
VMCalendarPriceCostDTO
)
vmcpd
);
}
return
overAmountList
;
}
}
}
\ No newline at end of file
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/inner/OrderCalculateBiz.java
View file @
4429469d
package
com
.
xxfc
.
platform
.
order
.
biz
.
inner
;
package
com
.
xxfc
.
platform
.
order
.
biz
.
inner
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.convert.Convert
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.github.wxiaoqi.security.admin.feign.UserFeign
;
import
com.github.wxiaoqi.security.admin.feign.UserFeign
;
import
com.xxfc.platform.activity.entity.Coupon
;
import
com.xxfc.platform.activity.entity.Coupon
;
import
com.xxfc.platform.activity.feign.ActivityFeign
;
import
com.xxfc.platform.activity.feign.ActivityFeign
;
...
@@ -16,14 +21,19 @@ import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
...
@@ -16,14 +21,19 @@ import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
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.calculate.InProgressVO
;
import
com.xxfc.platform.order.pojo.calculate.InProgressVO
;
import
com.xxfc.platform.order.pojo.order.VehicleItemDTO
;
import
com.xxfc.platform.universal.feign.ThirdFeign
;
import
com.xxfc.platform.universal.feign.ThirdFeign
;
import
com.xxfc.platform.vehicle.feign.VehicleFeign
;
import
com.xxfc.platform.vehicle.feign.VehicleFeign
;
import
com.xxfc.platform.vehicle.pojo.dto.VehicleModelCalendarPriceDTO
;
import
com.xxfc.platform.vehicle.pojo.dto.order.VMCalendarPriceCostDTO
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.assertj.core.util.Lists
;
import
org.assertj.core.util.Lists
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.util.Collection
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
/**
/**
...
@@ -58,42 +68,52 @@ public class OrderCalculateBiz {
...
@@ -58,42 +68,52 @@ public class OrderCalculateBiz {
@Autowired
@Autowired
OrderAccountBiz
orderAccountBiz
;
OrderAccountBiz
orderAccountBiz
;
public
InProgressVO
inProgressCalculate
(
BaseOrder
baseOrder
,
OrderItem
orderItem
,
Integer
freeDays
,
Integer
useDays
,
OrderAccountDetail
oad
,
Boolean
isCancel
)
{
public
InProgressVO
inProgressCalculate
(
BaseOrder
baseOrder
,
VehicleItemDTO
vehicleItemDTO
,
Integer
freeDays
,
Integer
useDays
,
OrderAccountDetail
oad
,
Boolean
isCancel
)
{
BigDecimal
refundAmount
=
BigDecimal
.
ZERO
;
BigDecimal
refundAmount
=
BigDecimal
.
ZERO
;
BigDecimal
consumeAmount
=
BigDecimal
.
ZERO
;
BigDecimal
consumeAmount
=
BigDecimal
.
ZERO
;
//融入日期价格
List
<
VehicleModelCalendarPriceDTO
>
vmcpds
=
JSONUtil
.
toList
(
JSONUtil
.
parseArray
(
vehicleItemDTO
.
getDetail
()),
VehicleModelCalendarPriceDTO
.
class
);
List
<
VMCalendarPriceCostDTO
>
useAmountList
=
CollUtil
.
newArrayList
();
//商品真实价格
//商品真实价格
BigDecimal
goodsRealAmount
=
baseOrder
.
getGoodsAmount
().
subtract
(
baseOrder
.
getCouponAmount
());
BigDecimal
goodsRealAmount
=
baseOrder
.
getGoodsAmount
().
subtract
(
baseOrder
.
getCouponAmount
());
//其他消费金额 = 商品真实价格 - 主要商品真实价格 = (商品价格 - 优惠价格)- 主要商品真实价格
//其他消费金额 = 商品真实价格 - 主要商品真实价格 = (商品价格 - 优惠价格)- 主要商品真实价格
BigDecimal
otherItemRealAmount
=
goodsRealAmount
.
subtract
(
orderItem
.
getRealAmount
());
BigDecimal
otherItemRealAmount
=
goodsRealAmount
.
subtract
(
vehicleItemDTO
.
getRealAmount
());
InProgressVO
inProgressVO
=
new
InProgressVO
();
InProgressVO
inProgressVO
=
new
InProgressVO
();
inProgressVO
.
setUsedDays
(
useDays
);
inProgressVO
.
setUsedDays
(
useDays
);
inProgressVO
.
setUsedAmount
(
orderItem
.
getUnitPrice
().
multiply
(
new
BigDecimal
(
useDays
+
""
)
));
inProgressVO
.
setUsedAmount
(
vehicleItemDTO
.
getUsedAmount
(
useDays
));
//计算:剩余免费天数
//计算:剩余免费天数
Integer
backFreeDays
=
freeDays
-
useDays
;
Integer
backFreeDays
=
freeDays
-
useDays
;
//待返还的免费天数
//待返还的免费天数
List
<
String
>
backCouponNos
=
Lists
.
newArrayList
();
List
<
String
>
backCouponNos
=
Lists
.
newArrayList
();
//剩余天数
//剩余天数
Integer
residueDays
=
orderItem
.
getTotalNum
()
-
useDays
;
Integer
residueDays
=
vehicleItemDTO
.
getTotalNum
()
-
useDays
;
//过了出发时间取消订单 ,优先使用免费天数
//过了出发时间取消订单 ,优先使用免费天数
if
(
backFreeDays
<=
0
)
{
if
(
backFreeDays
<=
0
)
{
//设置免费天数
//设置免费天数
inProgressVO
.
setUsedfreeDays
(
freeDays
);
inProgressVO
.
setUsedfreeDays
(
freeDays
);
inProgressVO
.
setUsedFreeDaysAmount
(
orderItem
.
getUnitPrice
().
multiply
(
new
BigDecimal
(
freeDays
+
""
)
));
inProgressVO
.
setUsedFreeDaysAmount
(
vehicleItemDTO
.
getFreeAmount
(
freeDays
));
//消费天数
//消费天数
Integer
consumeDays
=
useDays
-
freeDays
;
Integer
consumeDays
=
useDays
-
freeDays
;
//如果使用天数 大于 总天数
//如果使用天数 大于 总天数
if
(
useDays
>
orderItem
.
getTotalNum
())
{
if
(
useDays
>
vehicleItemDTO
.
getTotalNum
())
{
//消费天数
//消费天数
consumeDays
=
orderItem
.
getTotalNum
()
-
freeDays
;
consumeDays
=
vehicleItemDTO
.
getTotalNum
()
-
freeDays
;
}
}
//需要扣除订单费用
//需要扣除订单费用
//判断是否达到优惠券条件 不符合则返还优惠券
//判断是否达到优惠券条件 不符合则返还优惠券
//计算使用天数的费用
//计算使用天数的费用
consumeAmount
=
orderItem
.
getUnitPrice
().
multiply
(
new
BigDecimal
(
consumeDays
+
""
));
//融入日期价格
//consumeAmount = orderItem.getUnitPrice().multiply(new BigDecimal(consumeDays+""));
for
(
int
i
=
freeDays
;
i
<
(
freeDays
+
consumeDays
);
i
++)
{
consumeAmount
=
consumeAmount
.
add
(
vmcpds
.
get
(
i
).
getPrice
());
}
if
(
StrUtil
.
isNotBlank
(
baseOrder
.
getCouponTickerNos
()))
{
if
(
StrUtil
.
isNotBlank
(
baseOrder
.
getCouponTickerNos
()))
{
List
<
BigDecimal
>
couponAmounts
=
Lists
.
newArrayList
();
List
<
BigDecimal
>
couponAmounts
=
Lists
.
newArrayList
();
for
(
String
tickerNo
:
baseOrder
.
getCouponTickerNos
().
split
(
","
))
{
for
(
String
tickerNo
:
baseOrder
.
getCouponTickerNos
().
split
(
","
))
{
...
@@ -119,12 +139,19 @@ public class OrderCalculateBiz {
...
@@ -119,12 +139,19 @@ public class OrderCalculateBiz {
}
else
{
}
else
{
//设置免费天数
//设置免费天数
inProgressVO
.
setUsedfreeDays
(
useDays
);
inProgressVO
.
setUsedfreeDays
(
useDays
);
inProgressVO
.
setUsedFreeDaysAmount
(
orderItem
.
getUnitPrice
().
multiply
(
new
BigDecimal
(
useDays
+
""
)
));
inProgressVO
.
setUsedFreeDaysAmount
(
vehicleItemDTO
.
getFreeAmount
(
useDays
));
//返回剩余免费天数,返回优惠券,订单款
//返回剩余免费天数,返回优惠券,订单款
//修改bug,不需要提前加, 已在handleConsumeAmount方法中添加
//修改bug,不需要提前加, 已在handleConsumeAmount方法中添加
// refundAmount = refundAmount.add(goodsRealAmount);
// refundAmount = refundAmount.add(goodsRealAmount);
inProgressVO
.
setBackFreeDays
(
backFreeDays
);
// inProgressVO.setBackFreeDays(backFreeDays);
//融入日期价格
Integer
trueBackFreeDays
=
0
;
for
(
int
i
=
(
freeDays
-
backFreeDays
);
i
<
freeDays
;
i
++)
{
trueBackFreeDays
+=
vmcpds
.
get
(
i
).
getFreeDays
();
}
inProgressVO
.
setBackFreeDays
(
trueBackFreeDays
);
//返回优惠券
//返回优惠券
if
(
StrUtil
.
isNotBlank
(
baseOrder
.
getCouponTickerNos
()))
{
if
(
StrUtil
.
isNotBlank
(
baseOrder
.
getCouponTickerNos
()))
{
...
@@ -149,33 +176,52 @@ public class OrderCalculateBiz {
...
@@ -149,33 +176,52 @@ public class OrderCalculateBiz {
//计算违约金
//计算违约金
//residueDays * 身份价格
//residueDays * 身份价格
if
(
residueDays
>
0
)
{
if
(
residueDays
>
0
)
{
String
violateDesc
=
StrUtil
.
format
(
"{}元/天 x{}天"
,
orderItem
.
getUnitPrice
().
toString
(),
residueDays
);
//设置消耗费用列表
for
(
int
i
=
0
;
i
<
useDays
;
i
++)
{
useAmountList
.
add
((
VMCalendarPriceCostDTO
)
vmcpds
.
get
(
i
));
}
//"{}元/天 x{}天"
BigDecimal
residueAmount
=
BigDecimal
.
ZERO
;
for
(
int
i
=
useDays
;
i
<
vehicleItemDTO
.
getTotalNum
();
i
++)
{
residueAmount
=
residueAmount
.
add
(
vmcpds
.
get
(
i
).
getPrice
());
}
String
violateDesc
=
StrUtil
.
format
(
"{}元"
,
residueAmount
.
toString
());
if
(
residueDays
>
2
)
{
if
(
residueDays
>
2
)
{
residueDays
=
2
;
residueDays
=
2
;
violateDesc
+=
StrUtil
.
format
(
"(封顶{}元)"
,
orderItem
.
getUnitPrice
().
multiply
(
new
BigDecimal
((
residueDays
+
""
))));
residueAmount
=
BigDecimal
.
ZERO
;
for
(
int
i
=
useDays
;
i
<
(
useDays
+
residueDays
+
1
);
i
++)
{
residueAmount
=
residueAmount
.
add
(
vmcpds
.
get
(
i
).
getPrice
());
}
violateDesc
+=
StrUtil
.
format
(
"(封顶{}元)"
,
residueAmount
);
}
}
inProgressVO
.
setViolateAmount
(
orderItem
.
getUnitPrice
().
multiply
(
new
BigDecimal
((
residueDays
+
""
)))
);
inProgressVO
.
setViolateAmount
(
residueAmount
);
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
(
residueDays
<
0
&&
!
isCancel
){
//设置消耗费用列表
useAmountList
.
addAll
(
Convert
.
toList
(
VMCalendarPriceCostDTO
.
class
,
vmcpds
));
//如果订单 出发中 或者 已完成 或者定损中
//如果订单 出发中 或者 已完成 或者定损中
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
-
residueDays
;
String
violateDesc
=
StrUtil
.
format
(
"({}元/天 x200%) x{}天"
,
orderItem
.
getUnitPrice
().
toString
(),
overDays
);
String
violateDesc
=
StrUtil
.
format
(
" 延迟{}天"
,
overDays
);
// if(overDays > 2) {
// overDays = 2;
List
<
VMCalendarPriceCostDTO
>
overAmountList
=
orderItemBiz
.
getOverAmountList
(
vmcpds
.
get
(
vmcpds
.
size
()
-
1
).
getDate
(),
overDays
,
vehicleItemDTO
.
getGoodId
(),
baseOrder
.
getUserId
());
// violateDesc += StrUtil.format("(封顶{}元)", orderItem.getUnitPrice().multiply(new BigDecimal((residueDays + ""))));
BigDecimal
overAmount
=
overAmountList
.
parallelStream
()
// }
.
map
(
VMCalendarPriceCostDTO:
:
getPrice
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
).
add
(
new
BigDecimal
(
2
+
""
));
//超过的天数 * 200% * 单价
inProgressVO
.
setViolateAmount
(
orderItem
.
getUnitPrice
().
multiply
(
new
BigDecimal
(
2
+
""
)).
multiply
(
new
BigDecimal
((
overDays
+
""
))));
//超过的天数 价格 * 200%
inProgressVO
.
setViolateAmount
(
overAmount
);
inProgressVO
.
setViolateDesc
(
" 延期还车违约金:"
+
violateDesc
);
inProgressVO
.
setViolateDesc
(
" 延期还车违约金:"
+
violateDesc
);
OrderAccountDeduction
violateDeduction
=
orderAccountBiz
.
initDeduction
(
inProgressVO
.
getViolateAmount
(),
violateDesc
,
DeductionTypeEnum
.
VIOLATE_DELAY
,
OrderAccountDeduction
.
ORIGIN_DEPOSIT
);
OrderAccountDeduction
violateDeduction
=
orderAccountBiz
.
initDeduction
(
inProgressVO
.
getViolateAmount
(),
violateDesc
,
DeductionTypeEnum
.
VIOLATE_DELAY
,
OrderAccountDeduction
.
ORIGIN_DEPOSIT
);
oad
.
getDeductions
().
add
(
violateDeduction
);
oad
.
getDeductions
().
add
(
violateDeduction
);
}
}
}
}
//设置消耗费用列表
inProgressVO
.
setUseAmountList
(
useAmountList
);
return
inProgressVO
;
return
inProgressVO
;
}
}
...
@@ -199,16 +245,16 @@ public class OrderCalculateBiz {
...
@@ -199,16 +245,16 @@ public class OrderCalculateBiz {
}
}
public
InProgressVO
inProgressCalculate
(
BaseOrder
baseOrder
,
Integer
useDays
)
{
public
InProgressVO
inProgressCalculate
(
BaseOrder
baseOrder
,
Integer
useDays
)
{
OrderItem
orderItem
=
orderItemBiz
.
selectOne
(
new
OrderItem
(){{
VehicleItemDTO
vehicleItemDTO
=
(
VehicleItemDTO
)
orderItemBiz
.
selectOne
(
new
OrderItem
(){{
setType
(
ItemTypeEnum
.
VEHICLE_MODEL
.
getCode
());
setType
(
ItemTypeEnum
.
VEHICLE_MODEL
.
getCode
());
setOrderId
(
baseOrder
.
getId
());
setOrderId
(
baseOrder
.
getId
());
}});
}});
Integer
freeDays
=
(
null
==
orderItem
.
getCutNum
())?
0
:
orderItem
.
getCutNum
();
Integer
freeDays
=
(
null
==
vehicleItemDTO
.
getCutNum
())?
0
:
vehicleItemDTO
.
getCutNum
();
return
inProgressCalculate
(
baseOrder
,
orderItem
,
freeDays
,
useDays
,
new
OrderAccountDetail
(),
Boolean
.
FALSE
);
return
inProgressCalculate
(
baseOrder
,
vehicleItemDTO
,
freeDays
,
useDays
,
new
OrderAccountDetail
(),
Boolean
.
FALSE
);
}
}
public
InProgressVO
calculateOrderComplete
(
BaseOrder
baseOrder
,
OrderRentVehicleDetail
orvd
,
OrderAccountDetail
oad
,
OrderItem
orderItem
,
Integer
useDays
,
Boolean
isCancel
)
{
public
InProgressVO
calculateOrderComplete
(
BaseOrder
baseOrder
,
OrderRentVehicleDetail
orvd
,
OrderAccountDetail
oad
,
VehicleItemDTO
vehicleItemDTO
,
Integer
useDays
,
Boolean
isCancel
)
{
InProgressVO
inProgressVO
=
inProgressCalculate
(
baseOrder
,
orderItem
,
orvd
.
getFreeDays
(),
useDays
,
oad
,
isCancel
);
InProgressVO
inProgressVO
=
inProgressCalculate
(
baseOrder
,
vehicleItemDTO
,
vehicleItemDTO
.
getCutNum
(),
useDays
,
oad
,
isCancel
);
//定金 - (额外消费金额 + 违约金)
//定金 - (额外消费金额 + 违约金)
oad
.
setDepositAmount
(
orvd
.
getDeposit
().
subtract
(
inProgressVO
.
getExtraAmount
().
add
(
inProgressVO
.
getViolateAmount
())));
oad
.
setDepositAmount
(
orvd
.
getDeposit
().
subtract
(
inProgressVO
.
getExtraAmount
().
add
(
inProgressVO
.
getViolateAmount
())));
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/inner/OrderCancelBiz.java
View file @
4429469d
...
@@ -4,7 +4,6 @@ import cn.hutool.core.bean.BeanUtil;
...
@@ -4,7 +4,6 @@ import cn.hutool.core.bean.BeanUtil;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.convert.Convert
;
import
cn.hutool.core.convert.Convert
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.ArrayUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.github.wxiaoqi.security.admin.feign.UserFeign
;
import
com.github.wxiaoqi.security.admin.feign.UserFeign
;
import
com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO
;
import
com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO
;
...
@@ -18,6 +17,7 @@ import com.xxfc.platform.order.pojo.account.OrderAccountDeduction;
...
@@ -18,6 +17,7 @@ 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.calculate.InProgressVO
;
import
com.xxfc.platform.order.pojo.calculate.InProgressVO
;
import
com.xxfc.platform.order.pojo.mq.OrderMQDTO
;
import
com.xxfc.platform.order.pojo.mq.OrderMQDTO
;
import
com.xxfc.platform.order.pojo.order.VehicleItemDTO
;
import
com.xxfc.platform.order.pojo.price.CancelNoStartVO
;
import
com.xxfc.platform.order.pojo.price.CancelNoStartVO
;
import
com.xxfc.platform.order.pojo.price.CancelStartedVO
;
import
com.xxfc.platform.order.pojo.price.CancelStartedVO
;
import
com.xxfc.platform.order.pojo.price.CostDetailExtend
;
import
com.xxfc.platform.order.pojo.price.CostDetailExtend
;
...
@@ -139,7 +139,7 @@ public class OrderCancelBiz {
...
@@ -139,7 +139,7 @@ public class OrderCancelBiz {
setOrderId
(
baseOrder
.
getId
());
setOrderId
(
baseOrder
.
getId
());
}});
}});
OrderItem
orderItem
=
orderItemBiz
.
selectOne
(
new
OrderItem
(){{
VehicleItemDTO
vehicleItemDTO
=
(
VehicleItemDTO
)
orderItemBiz
.
selectOne
(
new
OrderItem
(){{
setType
(
ItemTypeEnum
.
VEHICLE_MODEL
.
getCode
());
setType
(
ItemTypeEnum
.
VEHICLE_MODEL
.
getCode
());
setOrderId
(
baseOrder
.
getId
());
setOrderId
(
baseOrder
.
getId
());
}});
}});
...
@@ -156,7 +156,7 @@ public class OrderCancelBiz {
...
@@ -156,7 +156,7 @@ public class OrderCancelBiz {
log
.
info
(
"useTimeLag {}"
,
new
BigDecimal
(
useTimeLag
+
""
));
log
.
info
(
"useTimeLag {}"
,
new
BigDecimal
(
useTimeLag
+
""
));
log
.
info
(
"divide {}"
,
new
BigDecimal
((
24
*
60
*
60
*
1000
)+
""
));
log
.
info
(
"divide {}"
,
new
BigDecimal
((
24
*
60
*
60
*
1000
)+
""
));
Integer
useDays
=
new
BigDecimal
(
useTimeLag
+
""
).
divide
(
new
BigDecimal
((
24
*
60
*
60
*
1000
)+
""
),
0
,
RoundingMode
.
UP
).
intValue
();
Integer
useDays
=
new
BigDecimal
(
useTimeLag
+
""
).
divide
(
new
BigDecimal
((
24
*
60
*
60
*
1000
)+
""
),
0
,
RoundingMode
.
UP
).
intValue
();
inProgressVO
=
orderCalculateBiz
.
calculateOrderComplete
(
baseOrder
,
orvd
,
oad
,
orderItem
,
useDays
,
Boolean
.
TRUE
);
inProgressVO
=
orderCalculateBiz
.
calculateOrderComplete
(
baseOrder
,
orvd
,
oad
,
vehicleItemDTO
,
useDays
,
Boolean
.
TRUE
);
//结合
//结合
//退款子流程: 订单基础,退款描述,退款金额
//退款子流程: 订单基础,退款描述,退款金额
orderAccountBiz
.
refundSubProcess
(
baseOrder
,
""
,
baseOrder
.
getRealAmount
().
subtract
(
orvd
.
getDeposit
()),
oad
.
getDepositAmount
().
add
(
oad
.
getOrderAmount
()),
AccountTypeEnum
.
OUT_ORDER_FUND
.
getCode
(),
RefundStatusEnum
.
ALL
.
getCode
(),
oad
);
orderAccountBiz
.
refundSubProcess
(
baseOrder
,
""
,
baseOrder
.
getRealAmount
().
subtract
(
orvd
.
getDeposit
()),
oad
.
getDepositAmount
().
add
(
oad
.
getOrderAmount
()),
AccountTypeEnum
.
OUT_ORDER_FUND
.
getCode
(),
RefundStatusEnum
.
ALL
.
getCode
(),
oad
);
...
@@ -166,7 +166,7 @@ public class OrderCancelBiz {
...
@@ -166,7 +166,7 @@ public class OrderCancelBiz {
CancelStartedVO
csv
=
new
CancelStartedVO
();
CancelStartedVO
csv
=
new
CancelStartedVO
();
csv
.
setType
(
CostDetailExtend
.
CANCEL_STARTED
);
csv
.
setType
(
CostDetailExtend
.
CANCEL_STARTED
);
csv
.
setConsumeAmount
(
inProgressVO
.
getConsumeAmount
());
csv
.
setConsumeAmount
(
inProgressVO
.
getConsumeAmount
());
csv
.
setModelAmount
(
orderItem
.
getUnitPrice
());
csv
.
setModelAmount
(
vehicleItemDTO
.
getUnitPrice
());
csv
.
setUsedAmount
(
inProgressVO
.
getUsedAmount
());
csv
.
setUsedAmount
(
inProgressVO
.
getUsedAmount
());
csv
.
setUsedDayNum
(
inProgressVO
.
getUsedDays
());
csv
.
setUsedDayNum
(
inProgressVO
.
getUsedDays
());
csv
.
setUsedfreeDayNum
(
inProgressVO
.
getUsedfreeDays
());
csv
.
setUsedfreeDayNum
(
inProgressVO
.
getUsedfreeDays
());
...
@@ -174,6 +174,7 @@ public class OrderCancelBiz {
...
@@ -174,6 +174,7 @@ public class OrderCancelBiz {
csv
.
setHadConpon
((
StrUtil
.
isNotBlank
(
baseOrder
.
getCouponTickerNos
())?
Boolean
.
TRUE
:
Boolean
.
FALSE
));
csv
.
setHadConpon
((
StrUtil
.
isNotBlank
(
baseOrder
.
getCouponTickerNos
())?
Boolean
.
TRUE
:
Boolean
.
FALSE
));
csv
.
setViolateAmount
(
BigDecimal
.
ZERO
);
csv
.
setViolateAmount
(
BigDecimal
.
ZERO
);
csv
.
setViolateDesc
(
""
);
csv
.
setViolateDesc
(
""
);
csv
.
setUseAmountList
(
inProgressVO
.
getUseAmountList
());
//如果有扣款项,则生成额外的费用明细
//如果有扣款项,则生成额外的费用明细
if
(
oad
.
getDeductions
().
size
()
>
0
)
{
if
(
oad
.
getDeductions
().
size
()
>
0
)
{
...
@@ -194,14 +195,11 @@ public class OrderCancelBiz {
...
@@ -194,14 +195,11 @@ public class OrderCancelBiz {
orvd
.
handelCostDetailExtend
(
csv
);
orvd
.
handelCostDetailExtend
(
csv
);
orderRentVehicleBiz
.
updateSelectiveByIdRe
(
orvd
);
orderRentVehicleBiz
.
updateSelectiveByIdRe
(
orvd
);
}
else
{
}
else
{
// //没到出车时间
// //没到出车时间
// //判断是否使用免费天数,并且进行扣款
//违约金封顶 租车身份价 * 2天
BigDecimal
topAmount
=
orderItem
.
getUnitPrice
().
multiply
(
new
BigDecimal
(
2
+
""
));
//退款流程
//退款流程
orderAccountBiz
.
rentRefundProcessCancel
(
baseOrder
,
BigDecimal
.
ZERO
,
timeLag
,
APP_ORDER
+
"_"
+
RENT_REFUND
,
orvd
.
getDeposit
(),
orderItem
.
getBuyAmount
(),
oad
,
topAmount
);
//违约金封顶 租车身份价 * 2天
orderAccountBiz
.
rentRefundProcessCancel
(
baseOrder
,
BigDecimal
.
ZERO
,
timeLag
,
APP_ORDER
+
"_"
+
RENT_REFUND
,
orvd
.
getDeposit
(),
vehicleItemDTO
.
getBuyAmount
(),
oad
,
vehicleItemDTO
.
getTopAmount
(
0
));
//设置订单数据
//设置订单数据
//baseOrder.setDamagesAmount(csv.getDamagesAmount());
//baseOrder.setDamagesAmount(csv.getDamagesAmount());
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/rest/OrderRefundController.java
View file @
4429469d
...
@@ -24,6 +24,7 @@ import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
...
@@ -24,6 +24,7 @@ import com.xxfc.platform.order.entity.OrderRentVehicleDetail;
import
com.xxfc.platform.order.pojo.account.OrderAccountDetail
;
import
com.xxfc.platform.order.pojo.account.OrderAccountDetail
;
import
com.xxfc.platform.order.pojo.calculate.InProgressVO
;
import
com.xxfc.platform.order.pojo.calculate.InProgressVO
;
import
com.xxfc.platform.order.pojo.order.OrderPageVO
;
import
com.xxfc.platform.order.pojo.order.OrderPageVO
;
import
com.xxfc.platform.order.pojo.order.VehicleItemDTO
;
import
com.xxfc.platform.universal.constant.DictionaryKey
;
import
com.xxfc.platform.universal.constant.DictionaryKey
;
import
lombok.Data
;
import
lombok.Data
;
import
org.joda.time.DateTime
;
import
org.joda.time.DateTime
;
...
@@ -92,15 +93,15 @@ public class OrderRefundController extends BaseController<OrderRefundBiz,OrderRe
...
@@ -92,15 +93,15 @@ public class OrderRefundController extends BaseController<OrderRefundBiz,OrderRe
Long
timeLag
=
orderPageVO
.
getOrderRentVehicleDetail
().
getStartTime
()
-
System
.
currentTimeMillis
();
Long
timeLag
=
orderPageVO
.
getOrderRentVehicleDetail
().
getStartTime
()
-
System
.
currentTimeMillis
();
OrderItem
vehicleItem
=
orderItemBiz
.
selectOne
(
new
OrderItem
(){{
VehicleItemDTO
vehicleItemDTO
=
(
VehicleItemDTO
)
orderItemBiz
.
selectOne
(
new
OrderItem
(){{
setType
(
ItemTypeEnum
.
VEHICLE_MODEL
.
getCode
());
setType
(
ItemTypeEnum
.
VEHICLE_MODEL
.
getCode
());
setOrderId
(
orderPageVO
.
getId
());
setOrderId
(
orderPageVO
.
getId
());
}});
}});
if
(
timeLag
<
0
)
{
if
(
timeLag
<
0
)
{
OrderAccountDetail
oad
=
new
OrderAccountDetail
();
OrderAccountDetail
oad
=
new
OrderAccountDetail
();
Integer
freeDays
=
(
null
==
vehicleItem
.
getCutNum
())?
0
:
vehicleItem
.
getCutNum
();
Integer
freeDays
=
(
null
==
vehicleItem
DTO
.
getCutNum
())?
0
:
vehicleItemDTO
.
getCutNum
();
inProgressVO
=
orderCalculateBiz
.
inProgressCalculate
(
orderPageVO
,
vehicleItem
,
freeDays
,
baseOrderBiz
.
getDaysBetweenDateTime
(
startTime
,
nowTime
),
new
OrderAccountDetail
(),
Boolean
.
FALSE
);
inProgressVO
=
orderCalculateBiz
.
inProgressCalculate
(
orderPageVO
,
vehicleItem
DTO
,
freeDays
,
baseOrderBiz
.
getDaysBetweenDateTime
(
startTime
,
nowTime
),
new
OrderAccountDetail
(),
Boolean
.
FALSE
);
//.inProgressCalculate(orderPageVO, baseOrderBiz.getDaysBetweenDateTime(startTime, nowTime));
//.inProgressCalculate(orderPageVO, baseOrderBiz.getDaysBetweenDateTime(startTime, nowTime));
totalDeductAmount
=
oad
.
realTotalDeduct
();
totalDeductAmount
=
oad
.
realTotalDeduct
();
totalRefundAmount
=
oad
.
getOrderAmount
().
add
(
oad
.
getDepositAmount
());
totalRefundAmount
=
oad
.
getOrderAmount
().
add
(
oad
.
getDepositAmount
());
...
@@ -109,7 +110,7 @@ public class OrderRefundController extends BaseController<OrderRefundBiz,OrderRe
...
@@ -109,7 +110,7 @@ public class OrderRefundController extends BaseController<OrderRefundBiz,OrderRe
String
key
=
RENT_REFUND
;
String
key
=
RENT_REFUND
;
BigDecimal
deductionAmount
=
orderAccountBiz
.
calculateDeduction
(
vehicleItem
.
getBuyAmount
()
BigDecimal
deductionAmount
=
orderAccountBiz
.
calculateDeduction
(
vehicleItem
DTO
.
getBuyAmount
()
,
orderPageVO
.
getOrderRentVehicleDetail
().
getStartTime
()
-
System
.
currentTimeMillis
()
,
orderPageVO
.
getOrderRentVehicleDetail
().
getStartTime
()
-
System
.
currentTimeMillis
()
,
DictionaryKey
.
APP_ORDER
+
"_"
+
key
,
DictionaryKey
.
APP_ORDER
+
"_"
+
key
,
refundDescBuilder
);
,
refundDescBuilder
);
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/service/OrderRentVehicleService.java
View file @
4429469d
...
@@ -28,6 +28,7 @@ import com.xxfc.platform.order.entity.OrderItem;
...
@@ -28,6 +28,7 @@ import com.xxfc.platform.order.entity.OrderItem;
import
com.xxfc.platform.order.entity.OrderTemplate
;
import
com.xxfc.platform.order.entity.OrderTemplate
;
import
com.xxfc.platform.order.pojo.OrderAccompanyDTO
;
import
com.xxfc.platform.order.pojo.OrderAccompanyDTO
;
import
com.xxfc.platform.order.pojo.order.RentVehicleBO
;
import
com.xxfc.platform.order.pojo.order.RentVehicleBO
;
import
com.xxfc.platform.order.pojo.order.VehicleItemDTO
;
import
com.xxfc.platform.order.pojo.price.RentVehiclePriceVO
;
import
com.xxfc.platform.order.pojo.price.RentVehiclePriceVO
;
import
com.xxfc.platform.universal.constant.DictionaryKey
;
import
com.xxfc.platform.universal.constant.DictionaryKey
;
import
com.xxfc.platform.universal.feign.ThirdFeign
;
import
com.xxfc.platform.universal.feign.ThirdFeign
;
...
@@ -241,7 +242,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
...
@@ -241,7 +242,7 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
//设置Item
//设置Item
OrderItem
vehicleOrderItem
=
orderItemBiz
.
initOrderItem
(
vehicleModel
.
getPrice
(),
detail
.
getDayNum
(),
vehicleModel
.
getName
(),
vehicleModel
.
getId
(),
ItemTypeEnum
.
VEHICLE_MODEL
,
JSONUtil
.
parseArray
(
vmcpds
).
toString
());
VehicleItemDTO
vehicleOrderItem
=
(
VehicleItemDTO
)
orderItemBiz
.
initOrderItem
(
vehicleModel
.
getPrice
(),
detail
.
getDayNum
(),
vehicleModel
.
getName
(),
vehicleModel
.
getId
(),
ItemTypeEnum
.
VEHICLE_MODEL
,
JSONUtil
.
parseArray
(
vmcpds
).
toString
());
OrderItem
driverOrderItem
=
orderItemBiz
.
initOrderItem
(
DRIVER_PRICE
,
detail
.
getDayNum
(),
"平台司机"
,
null
,
ItemTypeEnum
.
DRIVER
);
OrderItem
driverOrderItem
=
orderItemBiz
.
initOrderItem
(
DRIVER_PRICE
,
detail
.
getDayNum
(),
"平台司机"
,
null
,
ItemTypeEnum
.
DRIVER
);
OrderItem
damageSafeOrderItem
=
orderItemBiz
.
initOrderItem
(
DAMAGE_SAFE
,
detail
.
getDayNum
(),
"免赔费用"
,
null
,
ItemTypeEnum
.
DAMAGE_SAFE
);
OrderItem
damageSafeOrderItem
=
orderItemBiz
.
initOrderItem
(
DAMAGE_SAFE
,
detail
.
getDayNum
(),
"免赔费用"
,
null
,
ItemTypeEnum
.
DAMAGE_SAFE
);
...
...
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/pojo/dto/VehicleModelCalendarPriceDTO.java
View file @
4429469d
package
com
.
xxfc
.
platform
.
vehicle
.
pojo
.
dto
;
package
com
.
xxfc
.
platform
.
vehicle
.
pojo
.
dto
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.AllArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.Data
;
...
...
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/pojo/dto/order/VMCalendarPriceCostDTO.java
0 → 100644
View file @
4429469d
package
com
.
xxfc
.
platform
.
vehicle
.
pojo
.
dto
.
order
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.xxfc.platform.vehicle.pojo.dto.VehicleModelCalendarPriceDTO
;
import
lombok.Data
;
import
java.util.Date
;
@Data
public
class
VMCalendarPriceCostDTO
extends
VehicleModelCalendarPriceDTO
{
@JsonFormat
(
locale
=
"zh"
,
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
private
Date
date
;
}
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