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
Expand all
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 {
*/
@Column
(
name
=
"detail"
)
@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
;
import
cn.hutool.json.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.DelayAddPriceVO
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
...
...
@@ -353,4 +356,12 @@ public class OrderRentVehicleDetail implements Serializable {
@Column
(
name
=
"delay_add_end_time"
)
@ApiModelProperty
(
value
=
"延期结束时间"
)
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 {
* 添加的延期费用
*/
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.*;
@Data
public
class
DelayRentOrderDTO
{
Integer
operateId
;
String
no
;
Integer
needDamageSafe
=
0
;
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 {
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
)
{
List
<
VMCalendarPriceCostDTO
>
vmcpds
=
getVehicleDetail
();
...
...
@@ -187,8 +204,12 @@ public class VehicleItemDTO extends OrderItem {
if
(
ableFreeDays
>
cycleNum
&&
cycleNum
+
dto
.
getFreeDays
()
>
ableFreeDays
)
{
//本次累加天数 大于 可用免费天数
paramDTO
.
setFreeNum
(
ableFreeDays
);
//分子
Integer
up
=
(
ableFreeDays
-
cycleNum
);
//分母
Integer
down
=
dto
.
getFreeDays
();
//设置当前生效免费天数
dto
.
setValidFreeDays
(
up
);
//根据百分比计算消费价格
dto
.
setFreeAndConsumeAmount
(
dto
.
getPrice
(),
dto
.
getPrice
().
multiply
(
new
BigDecimal
(
up
+
""
).
divide
(
new
BigDecimal
(
down
+
""
),
2
,
RoundingMode
.
HALF_UP
))
...
...
@@ -198,6 +219,7 @@ public class VehicleItemDTO extends OrderItem {
paramDTO
.
setFreeNum
(
paramDTO
.
getFreeNum
()+
dto
.
getFreeDays
());
//直接设置价格
dto
.
setFreeAndConsumeAmount
(
dto
.
getPrice
(),
dto
.
getPrice
());
dto
.
setValidFreeDays
(
dto
.
getFreeDays
());
paramDTO
.
offsetNum
+=
1
;
}
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;
import
cn.hutool.core.collection.CollUtil
;
import
com.xxfc.platform.vehicle.pojo.dto.order.VMCalendarPriceCostDTO
;
import
lombok.Data
;
import
org.springframework.data.mongodb.core.aggregation.ArrayOperators
;
import
java.math.BigDecimal
;
import
java.util.List
;
...
...
@@ -32,4 +33,48 @@ public class DelayAddPriceVO {
public
void
initDelayDamageSafeAmount
()
{
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
;
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
com.xxfc.platform.order.entity.OrderLog
;
...
...
@@ -14,5 +17,22 @@ import com.github.wxiaoqi.security.common.biz.BaseBiz;
* @date 2019-07-23 17:33:06
*/
@Service
@Slf4j
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
This diff is collapsed.
Click to expand it.
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 {
Long
timeLag
=
orvd
.
getStartTime
()
-
System
.
currentTimeMillis
();
if
(
timeLag
<
0
)
{
Integer
useDays
=
orderCalculateBiz
.
getIncludeDays
(
orvd
.
getStartTime
(),
System
.
currentTimeMillis
());
if
(
useDays
>
orvd
.
get
DayNum
())
{
useDays
=
orvd
.
get
DayNum
();
if
(
useDays
>
orvd
.
obtainReal
DayNum
())
{
useDays
=
orvd
.
obtainReal
DayNum
();
}
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 {
@Autowired
OrderTemplateBiz
orderTemplateBiz
;
@Autowired
OrderLogBiz
orderLogBiz
;
@Autowired
UserFeign
userFeign
;
...
...
@@ -106,6 +109,7 @@ public class OrderDelayBiz {
public
void
delayRentOrder
(
OrderPageVO
orderPageVO
,
DelayRentOrderDTO
dto
)
{
OrderRentVehicleDetail
orvd
=
orderPageVO
.
getOrderRentVehicleDetail
();
OrderRentVehicleDetail
oldOrvd
=
BeanUtil
.
toBean
(
orvd
,
OrderRentVehicleDetail
.
class
);
Integer
delayAddDays
=
0
;
Integer
delayAddFreeDays
=
0
;
//分布式事务执行标记
...
...
@@ -126,6 +130,12 @@ public class OrderDelayBiz {
if
(
delayAddDays
>
0
)
{
//获得延期天数费用
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
();
}
else
{
delayAmountList
=
CollUtil
.
newArrayList
();
...
...
@@ -198,6 +208,7 @@ public class OrderDelayBiz {
}
orvd
.
setDelayAddDetail
(
JSONUtil
.
toJsonStr
(
delayAddPriceVO
));
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 {
*/
private
BigDecimal
freeAmount
=
BigDecimal
.
ZERO
;
/**
* 生效的免费天数
*/
private
Integer
validFreeDays
=
0
;
public
void
setFreeAndConsumeAmount
(
BigDecimal
realAmount
,
BigDecimal
freeAmount
)
{
setFreeAmount
(
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