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
6d051ed4
Commit
6d051ed4
authored
Dec 11, 2019
by
周健威
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature-delay-add'
parents
280f53ed
01fa0357
Changes
32
Hide whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
1621 additions
and
813 deletions
+1621
-813
CommonConstants.java
...hub/wxiaoqi/security/common/constant/CommonConstants.java
+7
-0
CommonBaseController.java
...ub/wxiaoqi/security/common/rest/CommonBaseController.java
+4
-0
UserRestInterface.java
.../wxiaoqi/security/admin/feign/rest/UserRestInterface.java
+1
-1
DeductionTypeEnum.java
...c/platform/order/contant/enumerate/DeductionTypeEnum.java
+2
-1
OrderLogEnum.java
...m/xxfc/platform/order/contant/enumerate/OrderLogEnum.java
+73
-0
OrderViolateEnum.java
...fc/platform/order/contant/enumerate/OrderViolateEnum.java
+1
-0
OrderLog.java
...rc/main/java/com/xxfc/platform/order/entity/OrderLog.java
+18
-4
OrderRentVehicleDetail.java
...om/xxfc/platform/order/entity/OrderRentVehicleDetail.java
+43
-0
OrderVehicleCrosstown.java
...com/xxfc/platform/order/entity/OrderVehicleCrosstown.java
+6
-0
DedDetailDTO.java
.../main/java/com/xxfc/platform/order/pojo/DedDetailDTO.java
+1
-0
InProgressVO.java
.../com/xxfc/platform/order/pojo/calculate/InProgressVO.java
+29
-0
DelayRentOrderDTO.java
...com/xxfc/platform/order/pojo/order/DelayRentOrderDTO.java
+32
-0
OrderPageVO.java
.../java/com/xxfc/platform/order/pojo/order/OrderPageVO.java
+2
-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
+80
-0
BaseOrderBiz.java
...c/main/java/com/xxfc/platform/order/biz/BaseOrderBiz.java
+695
-678
OrderAccountBiz.java
...ain/java/com/xxfc/platform/order/biz/OrderAccountBiz.java
+70
-14
OrderLogBiz.java
...rc/main/java/com/xxfc/platform/order/biz/OrderLogBiz.java
+20
-0
OrderVehicleCrosstownBiz.java
...com/xxfc/platform/order/biz/OrderVehicleCrosstownBiz.java
+12
-0
OrderCalculateBiz.java
.../com/xxfc/platform/order/biz/inner/OrderCalculateBiz.java
+157
-84
OrderCancelBiz.java
...ava/com/xxfc/platform/order/biz/inner/OrderCancelBiz.java
+19
-5
OrderDelayBiz.java
...java/com/xxfc/platform/order/biz/inner/OrderDelayBiz.java
+211
-0
OrderMsgBiz.java
...n/java/com/xxfc/platform/order/biz/inner/OrderMsgBiz.java
+1
-1
BackStageOrderController.java
...om/xxfc/platform/order/rest/BackStageOrderController.java
+55
-14
OrderRentVehicleService.java
.../xxfc/platform/order/service/OrderRentVehicleService.java
+2
-0
DictionaryKey.java
...a/com/xxfc/platform/universal/constant/DictionaryKey.java
+6
-1
VehicleFeign.java
...in/java/com/xxfc/platform/vehicle/feign/VehicleFeign.java
+11
-2
BookVehicleVO.java
...in/java/com/xxfc/platform/vehicle/pojo/BookVehicleVO.java
+8
-2
VMCalendarPriceCostDTO.java
...atform/vehicle/pojo/dto/order/VMCalendarPriceCostDTO.java
+5
-0
VehicleBiz.java
...c/main/java/com/xxfc/platform/vehicle/biz/VehicleBiz.java
+8
-5
VehicleModelCalendarPriceBiz.java
...fc/platform/vehicle/biz/VehicleModelCalendarPriceBiz.java
+2
-1
VehicleController.java
...ava/com/xxfc/platform/vehicle/rest/VehicleController.java
+18
-0
No files found.
ace-common/src/main/java/com/github/wxiaoqi/security/common/constant/CommonConstants.java
View file @
6d051ed4
...
@@ -2,6 +2,9 @@ package com.github.wxiaoqi.security.common.constant;
...
@@ -2,6 +2,9 @@ package com.github.wxiaoqi.security.common.constant;
import
cn.hutool.core.date.format.FastDateFormat
;
import
cn.hutool.core.date.format.FastDateFormat
;
import
java.time.Instant
;
import
java.time.LocalDateTime
;
import
java.time.ZoneOffset
;
import
java.time.format.DateTimeFormatter
;
import
java.time.format.DateTimeFormatter
;
/**
/**
...
@@ -50,4 +53,8 @@ public class CommonConstants {
...
@@ -50,4 +53,8 @@ public class CommonConstants {
public
static
final
org
.
joda
.
time
.
format
.
DateTimeFormatter
YMR_SLASH_FORMATTER_JODA
=
org
.
joda
.
time
.
format
.
DateTimeFormat
.
forPattern
(
YMR_SLASH
);
public
static
final
org
.
joda
.
time
.
format
.
DateTimeFormatter
YMR_SLASH_FORMATTER_JODA
=
org
.
joda
.
time
.
format
.
DateTimeFormat
.
forPattern
(
YMR_SLASH
);
public
static
final
FastDateFormat
HOUR_MINUTE_FORMATTE_HUTOOL
=
FastDateFormat
.
getInstance
(
HOUR_MINUTE
);
public
static
final
FastDateFormat
HOUR_MINUTE_FORMATTE_HUTOOL
=
FastDateFormat
.
getInstance
(
HOUR_MINUTE
);
public
static
String
stampTo8Zone
(
DateTimeFormatter
dateTimeFormatter
,
Long
timestamp
)
{
return
dateTimeFormatter
.
format
(
LocalDateTime
.
ofInstant
(
Instant
.
ofEpochMilli
(
timestamp
),
ZoneOffset
.
ofHours
(
8
)));
}
}
}
ace-common/src/main/java/com/github/wxiaoqi/security/common/rest/CommonBaseController.java
View file @
6d051ed4
...
@@ -31,4 +31,8 @@ public class CommonBaseController {
...
@@ -31,4 +31,8 @@ public class CommonBaseController {
public
String
getCurrentUserName
(){
public
String
getCurrentUserName
(){
return
BaseContextHandler
.
getUsername
();
return
BaseContextHandler
.
getUsername
();
}
}
public
String
getCurrentUserId
(){
return
BaseContextHandler
.
getUserID
();
}
}
}
ace-modules/ace-admin-api/src/main/java/com/github/wxiaoqi/security/admin/feign/rest/UserRestInterface.java
View file @
6d051ed4
...
@@ -38,7 +38,7 @@ public interface UserRestInterface {
...
@@ -38,7 +38,7 @@ public interface UserRestInterface {
default
void
checkAdminUser
(){
default
void
checkAdminUser
(){
if
(
null
==
getAdminUserInfo
())
{
if
(
null
==
getAdminUserInfo
())
{
throw
new
BaseException
(
ResultCode
.
DB_OPERATION_FAIL
_CODE
);
throw
new
BaseException
(
ResultCode
.
NOTEXIST
_CODE
);
}
}
}
}
}
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/contant/enumerate/DeductionTypeEnum.java
View file @
6d051ed4
...
@@ -8,7 +8,7 @@ import java.util.List;
...
@@ -8,7 +8,7 @@ import java.util.List;
import
java.util.Map
;
import
java.util.Map
;
public
enum
DeductionTypeEnum
{
public
enum
DeductionTypeEnum
{
//账款类型 1--违约金;2--消费金额;3--赔偿金(定损);4--违章相关
//账款类型 1--违约金;2--消费金额;3--赔偿金(定损);4--违章相关
;5--其他
VIOLATE_CANCEL
(
101
,
"提前取消违约金"
),
VIOLATE_CANCEL
(
101
,
"提前取消违约金"
),
VIOLATE_ADVANCE
(
102
,
"提前还车违约金"
),
VIOLATE_ADVANCE
(
102
,
"提前还车违约金"
),
VIOLATE_DELAY
(
103
,
"延迟还车违约金"
),
VIOLATE_DELAY
(
103
,
"延迟还车违约金"
),
...
@@ -17,6 +17,7 @@ public enum DeductionTypeEnum {
...
@@ -17,6 +17,7 @@ public enum DeductionTypeEnum {
DAMAGES
(
301
,
"赔偿金(定损)"
),
DAMAGES
(
301
,
"赔偿金(定损)"
),
VIOLATE_TRAFFIC_DEDUCT
(
401
,
"违章扣款"
),
VIOLATE_TRAFFIC_DEDUCT
(
401
,
"违章扣款"
),
VIOLATE_TRAFFIC_KEEP
(
402
,
"违章扣款保留金"
),
VIOLATE_TRAFFIC_KEEP
(
402
,
"违章扣款保留金"
),
OTHER_DELAY_SAFE
(
501
,
"其他费用-延迟用车不记免赔"
),
;
;
/**
/**
* 编码
* 编码
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/contant/enumerate/OrderLogEnum.java
0 → 100644
View file @
6d051ed4
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/contant/enumerate/OrderViolateEnum.java
View file @
6d051ed4
...
@@ -8,6 +8,7 @@ public enum OrderViolateEnum {
...
@@ -8,6 +8,7 @@ public enum OrderViolateEnum {
BEFORE
(
1
,
"提前"
),
BEFORE
(
1
,
"提前"
),
AFTER
(
2
,
"延期"
),
AFTER
(
2
,
"延期"
),
CHANGE
(
3
,
"更换还车公司"
),
CHANGE
(
3
,
"更换还车公司"
),
DELAY_VEHICLE
(
4
,
"延长还车不计免赔"
)
;
;
/**
/**
* 编码
* 编码
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/OrderLog.java
View file @
6d051ed4
...
@@ -52,7 +52,7 @@ public class OrderLog implements Serializable {
...
@@ -52,7 +52,7 @@ public class OrderLog implements Serializable {
* 操作者id,另外 -1为系统
* 操作者id,另外 -1为系统
*/
*/
@Column
(
name
=
"log_user_id"
)
@Column
(
name
=
"log_user_id"
)
@ApiModelProperty
(
value
=
"操作者id,另外 -1为系统"
)
@ApiModelProperty
(
value
=
"操作者id,另外 -1为系统
-1+id 为后台人员
"
)
private
Integer
logUserId
;
private
Integer
logUserId
;
/**
/**
...
@@ -68,13 +68,27 @@ public class OrderLog implements Serializable {
...
@@ -68,13 +68,27 @@ public class OrderLog implements Serializable {
@Column
(
name
=
"crt_time"
)
@Column
(
name
=
"crt_time"
)
@ApiModelProperty
(
value
=
"创建时间"
,
hidden
=
true
)
@ApiModelProperty
(
value
=
"创建时间"
,
hidden
=
true
)
private
Long
crtTime
;
private
Long
crtTime
;
/**
* 更新时间
*/
@Column
(
name
=
"upd_time"
)
@ApiModelProperty
(
value
=
"更新时间"
,
hidden
=
true
)
private
Long
updTime
;
/**
/**
* 日志类型 1
1--创建订单;12--创建订单
;
* 日志类型 1
01--创建订单;102--
;
*/
*/
@Column
(
name
=
"type"
)
@Column
(
name
=
"type"
)
@ApiModelProperty
(
value
=
"日志类型 1
1--创建订单;12--创建订单;
"
)
@ApiModelProperty
(
value
=
"日志类型 1
01--创建订单;102--创建订单;201--
"
)
private
Integer
type
;
private
Integer
type
;
/**
* 详情
*/
@Column
(
name
=
"detail"
)
@ApiModelProperty
(
value
=
"详情"
)
private
String
detail
;
}
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/entity/OrderRentVehicleDetail.java
View file @
6d051ed4
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
;
...
@@ -333,4 +336,44 @@ public class OrderRentVehicleDetail implements Serializable {
...
@@ -333,4 +336,44 @@ public class OrderRentVehicleDetail implements Serializable {
public
void
handelCostDetailExtend
(
CostDetailExtend
costDetailExtend
)
{
public
void
handelCostDetailExtend
(
CostDetailExtend
costDetailExtend
)
{
this
.
costDetailExtend
=
JsonUtil
.
objectToJson
(((
CostDetailExtend
)
costDetailExtend
));
this
.
costDetailExtend
=
JsonUtil
.
objectToJson
(((
CostDetailExtend
)
costDetailExtend
));
}
}
@Column
(
name
=
"delay_add_free_days"
)
@ApiModelProperty
(
value
=
"延期补充的免费天数"
)
private
Integer
delayAddFreeDays
;
@Column
(
name
=
"delay_add_days"
)
@ApiModelProperty
(
value
=
"延期增加的天数"
)
private
Integer
delayAddDays
;
@Column
(
name
=
"delay_add_detail"
)
@ApiModelProperty
(
value
=
"增加延期还车费用(计算)明细"
)
private
String
delayAddDetail
;
@Column
(
name
=
"delay_add_damage_safe"
)
@ApiModelProperty
(
value
=
"延期增加天数是否购买车损免赔"
)
private
Integer
delayAddDamageSafe
;
@Column
(
name
=
"delay_add_end_time"
)
@ApiModelProperty
(
value
=
"延期结束时间"
)
private
Long
delayAddEndTime
;
@Column
(
name
=
"meta_end_time"
)
@ApiModelProperty
(
value
=
"原结束时间"
)
private
Long
metaEndTime
;
public
Long
getEndTime
()
{
return
endTime
;
}
public
void
setEndTime
(
Long
endTime
)
{
this
.
endTime
=
endTime
;
}
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/entity/OrderVehicleCrosstown.java
View file @
6d051ed4
...
@@ -112,6 +112,12 @@ public class OrderVehicleCrosstown {
...
@@ -112,6 +112,12 @@ public class OrderVehicleCrosstown {
@Column
(
name
=
"violate_amount_detail"
)
@Column
(
name
=
"violate_amount_detail"
)
private
String
violateDetail
;
private
String
violateDetail
;
/**
* 延期还车,不计免赔额计算
*/
@Column
(
name
=
"delay_vehicle_detail"
)
private
String
delayVehicleDetail
;
/**
/**
* 1、交车, 2、还车, 3、定损还车
* 1、交车, 2、还车, 3、定损还车
*/
*/
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/DedDetailDTO.java
View file @
6d051ed4
...
@@ -33,6 +33,7 @@ public class DedDetailDTO {
...
@@ -33,6 +33,7 @@ public class DedDetailDTO {
//作为:DedDetail :2、车辆损坏 3、其他
//作为:DedDetail :2、车辆损坏 3、其他
//作为:violate_amount_detail 1--提前还车 2--延期还车 3--更换还车公司费用
//作为:violate_amount_detail 1--提前还车 2--延期还车 3--更换还车公司费用
//作为:delay_vehicle_detail
Integer
type
;
Integer
type
;
//小雨都不知道什么东西
//小雨都不知道什么东西
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/calculate/InProgressVO.java
View file @
6d051ed4
package
com
.
xxfc
.
platform
.
order
.
pojo
.
calculate
;
package
com
.
xxfc
.
platform
.
order
.
pojo
.
calculate
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
com.xxfc.platform.order.pojo.price.DelayAddPriceVO
;
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.assertj.core.util.Lists
;
import
org.assertj.core.util.Lists
;
...
@@ -96,4 +97,32 @@ public class InProgressVO {
...
@@ -96,4 +97,32 @@ public class InProgressVO {
* 违约金 费用详情列表
* 违约金 费用详情列表
*/
*/
List
<
VMCalendarPriceCostDTO
>
violateAmountList
=
CollUtil
.
newArrayList
();
List
<
VMCalendarPriceCostDTO
>
violateAmountList
=
CollUtil
.
newArrayList
();
/**
* 添加的延期费用
*/
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
0 → 100644
View file @
6d051ed4
package
com
.
xxfc
.
platform
.
order
.
pojo
.
order
;
import
com.github.wxiaoqi.security.common.constant.CommonConstants
;
import
lombok.Data
;
import
static
com
.
github
.
wxiaoqi
.
security
.
common
.
constant
.
CommonConstants
.*;
@Data
public
class
DelayRentOrderDTO
{
Integer
operateId
;
String
no
;
Integer
needDamageSafe
=
0
;
Long
delayEndTime
;
Long
endTime
;
String
bookEndDate
;
String
bookEndDateTime
;
Long
startTime
;
String
bookStartDate
;
String
bookStartDateTime
;
public
void
setStartTime
(
Long
startTime
)
{
this
.
startTime
=
startTime
;
this
.
bookStartDate
=
stampTo8Zone
(
YMR_SLASH_FORMATTER
,
startTime
);
this
.
bookStartDateTime
=
stampTo8Zone
(
DATE_TIME_LINE_FORMATTER
,
startTime
);
}
public
void
setEndTime
(
Long
endTime
)
{
this
.
endTime
=
endTime
;
this
.
bookEndDate
=
stampTo8Zone
(
YMR_SLASH_FORMATTER
,
endTime
);
this
.
bookEndDateTime
=
stampTo8Zone
(
DATE_TIME_LINE_FORMATTER
,
endTime
);
}
}
\ No newline at end of file
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/order/OrderPageVO.java
View file @
6d051ed4
...
@@ -40,6 +40,8 @@ public class OrderPageVO extends BaseOrder {
...
@@ -40,6 +40,8 @@ public class OrderPageVO extends BaseOrder {
private
String
positionName
;
private
String
positionName
;
//订单违约金
//订单违约金
private
String
dedDetailDTO
;
private
String
dedDetailDTO
;
//订单延长还车,不计免赔额
private
String
delayVehicleDetail
;
/**
/**
* 車輛編碼
* 車輛編碼
*/
*/
...
...
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/order/VehicleItemDTO.java
View file @
6d051ed4
...
@@ -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
0 → 100644
View file @
6d051ed4
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
;
@Data
public
class
DelayAddPriceVO
{
/**
* 延期增加的天数
*/
Integer
delayAddDays
=
0
;
/**
* 不计免赔单价
*/
BigDecimal
damageSafePrice
=
BigDecimal
.
ZERO
;
/**
* 延期不记免赔费用
*/
BigDecimal
delayDamageSafeAmount
=
BigDecimal
.
ZERO
;
/**
* 使用(消耗)详情列表
*/
List
<
VMCalendarPriceCostDTO
>
delayAmountList
=
CollUtil
.
newArrayList
();
public
void
initDelayDamageSafeAmount
()
{
this
.
delayDamageSafeAmount
=
this
.
damageSafePrice
.
multiply
(
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/BaseOrderBiz.java
View file @
6d051ed4
...
@@ -86,172 +86,173 @@ import static com.xxfc.platform.universal.constant.DictionaryKey.ILLEGAL_TYPE;
...
@@ -86,172 +86,173 @@ import static com.xxfc.platform.universal.constant.DictionaryKey.ILLEGAL_TYPE;
@Slf4j
@Slf4j
public
class
BaseOrderBiz
extends
BaseBiz
<
BaseOrderMapper
,
BaseOrder
>
implements
UserRestInterface
{
public
class
BaseOrderBiz
extends
BaseBiz
<
BaseOrderMapper
,
BaseOrder
>
implements
UserRestInterface
{
@Autowired
@Autowired
OrderMemberDetailBiz
orderMemberDetailBiz
;
OrderMemberDetailBiz
orderMemberDetailBiz
;
@Autowired
@Autowired
OrderTourDetailBiz
orderTourDetailBiz
;
OrderTourDetailBiz
orderTourDetailBiz
;
@Autowired
@Autowired
OrderRentVehicleBiz
orderRentVehicleBiz
;
OrderRentVehicleBiz
orderRentVehicleBiz
;
@Autowired
@Autowired
OrderVehicleCrosstownBiz
orderVehicleCrosstownBiz
;
OrderVehicleCrosstownBiz
orderVehicleCrosstownBiz
;
@Autowired
@Autowired
OrderUserLicenseBiz
orderUserLicenseBiz
;
OrderUserLicenseBiz
orderUserLicenseBiz
;
@Autowired
@Autowired
OrderItemBiz
orderItemBiz
;
OrderItemBiz
orderItemBiz
;
@Autowired
@Autowired
OrderAccountBiz
orderAccountBiz
;
OrderAccountBiz
orderAccountBiz
;
@Autowired
@Autowired
VehicleFeign
vehicleFeign
;
VehicleFeign
vehicleFeign
;
@Autowired
@Autowired
ThirdFeign
thirdFeign
;
ThirdFeign
thirdFeign
;
@Autowired
@Autowired
TourFeign
tourFeign
;
TourFeign
tourFeign
;
@Autowired
@Autowired
UserFeign
userFeign
;
UserFeign
userFeign
;
@Autowired
@Autowired
MQSenderFeign
mqSenderFeign
;
MQSenderFeign
mqSenderFeign
;
@Autowired
@Autowired
OrderMsgBiz
orderMsgBiz
;
OrderMsgBiz
orderMsgBiz
;
@Autowired
@Autowired
ActivityFeign
activityFeign
;
ActivityFeign
activityFeign
;
@Autowired
@Autowired
OrderCalculateBiz
orderCalculateBiz
;
OrderCalculateBiz
orderCalculateBiz
;
public
static
final
DateTimeFormatter
DEFAULT_DATE_TIME_FORMATTER
=
DateTimeFormat
.
forPattern
(
"yyyy-MM-dd HH:mm:ss"
);
public
static
final
DateTimeFormatter
DEFAULT_DATE_TIME_FORMATTER
=
DateTimeFormat
.
forPattern
(
"yyyy-MM-dd HH:mm:ss"
);
public
List
<
OrderPageVO
>
pageByParm
(
Map
<
String
,
Object
>
paramMap
)
{
public
List
<
OrderPageVO
>
pageByParm
(
Map
<
String
,
Object
>
paramMap
)
{
return
mapper
.
pageByParm
(
paramMap
);
return
mapper
.
pageByParm
(
paramMap
);
}
}
public
List
<
OrderListVo
>
listOrder
(
Map
<
String
,
Object
>
paramMap
)
{
public
List
<
OrderListVo
>
listOrder
(
Map
<
String
,
Object
>
paramMap
)
{
List
<
OrderListVo
>
orderListVos
=
mapper
.
listOrder
(
paramMap
);
List
<
OrderListVo
>
orderListVos
=
mapper
.
listOrder
(
paramMap
);
return
orderListVos
;
return
orderListVos
;
}
}
public
List
<
OrderPageVO
>
getRentVehicle
(
Map
<
String
,
Object
>
paramMap
)
{
public
List
<
OrderPageVO
>
getRentVehicle
(
Map
<
String
,
Object
>
paramMap
)
{
return
mapper
.
getRentVehicle
(
paramMap
);
return
mapper
.
getRentVehicle
(
paramMap
);
}
}
public
List
<
OrderPageVO
>
getTourList
(
Map
<
String
,
Object
>
paramMap
)
{
public
List
<
OrderPageVO
>
getTourList
(
Map
<
String
,
Object
>
paramMap
)
{
return
mapper
.
getTourList
(
paramMap
);
return
mapper
.
getTourList
(
paramMap
);
}
}
public
PageDataVO
<
MemberOrderBo
>
findMemberOrderPage
(
MemberOrderFindDTO
memberOrderFindDTO
)
{
public
PageDataVO
<
MemberOrderBo
>
findMemberOrderPage
(
MemberOrderFindDTO
memberOrderFindDTO
)
{
return
PageDataVO
.
pageInfo
(
memberOrderFindDTO
.
getPage
(),
memberOrderFindDTO
.
getLimit
(),()->
mapper
.
findMemberOrders
(
memberOrderFindDTO
));
return
PageDataVO
.
pageInfo
(
memberOrderFindDTO
.
getPage
(),
memberOrderFindDTO
.
getLimit
(),
()
->
mapper
.
findMemberOrders
(
memberOrderFindDTO
));
}
}
public
List
<
MemberOrderBo
>
findMemberOrders
(
MemberOrderFindDTO
memberOrderFindDTO
)
{
public
List
<
MemberOrderBo
>
findMemberOrders
(
MemberOrderFindDTO
memberOrderFindDTO
)
{
return
mapper
.
findMemberOrders
(
memberOrderFindDTO
);
return
mapper
.
findMemberOrders
(
memberOrderFindDTO
);
}
}
// public List<MemberOrderBo>
// public List<MemberOrderBo>
/**
/**
* 获取订单详情
* 获取订单详情
*
*
* @param no
* @param no
* @return
* @return
*/
*/
public
ObjectRestResponse
<
OrderPageVO
>
getOrderDetail
(
String
no
,
UserDTO
userDTO
)
{
public
ObjectRestResponse
<
OrderPageVO
>
getOrderDetail
(
String
no
,
UserDTO
userDTO
)
{
OrderPageVO
orderPageVo
=
mapper
.
getOrderDetail
(
no
);
OrderPageVO
orderPageVo
=
mapper
.
getOrderDetail
(
no
);
if
(
orderPageVo
==
null
)
{
if
(
orderPageVo
==
null
)
{
return
ObjectRestResponse
.
createFailedResult
(
ResCode
.
ORDER_IS_NOT_EXIST
.
getCode
(),
ResCode
.
ORDER_IS_NOT_EXIST
.
getDesc
());
return
ObjectRestResponse
.
createFailedResult
(
ResCode
.
ORDER_IS_NOT_EXIST
.
getCode
(),
ResCode
.
ORDER_IS_NOT_EXIST
.
getDesc
());
}
}
if
(
orderPageVo
.
getStatus
()
<=
3
&&
orderPageVo
.
getStatus
()
!=
2
&&
orderPageVo
.
getStatus
()
!=
-
1
)
{
if
(
orderPageVo
.
getStatus
()
<=
3
&&
orderPageVo
.
getStatus
()
!=
2
&&
orderPageVo
.
getStatus
()
!=
-
1
)
{
return
ObjectRestResponse
.
createFailedResult
(
ResCode
.
ORDER_DETAIL_IS_NOT_EXIST
.
getCode
(),
ResCode
.
ORDER_DETAIL_IS_NOT_EXIST
.
getDesc
());
return
ObjectRestResponse
.
createFailedResult
(
ResCode
.
ORDER_DETAIL_IS_NOT_EXIST
.
getCode
(),
ResCode
.
ORDER_DETAIL_IS_NOT_EXIST
.
getDesc
());
}
}
AppUserDTO
appUserVo
=
userFeign
.
userDetailById
(
orderPageVo
.
getUserId
()).
getData
();
AppUserDTO
appUserVo
=
userFeign
.
userDetailById
(
orderPageVo
.
getUserId
()).
getData
();
if
(
appUserVo
!=
null
)
{
if
(
appUserVo
!=
null
)
{
orderPageVo
.
setTelephone
(
appUserVo
.
getUsername
());
orderPageVo
.
setTelephone
(
appUserVo
.
getUsername
());
orderPageVo
.
setUsername
(
appUserVo
.
getRealname
());
orderPageVo
.
setUsername
(
appUserVo
.
getRealname
());
}
}
List
<
BranchCompany
>
branchCompanies
=
vehicleFeign
.
companyAll
(
userDTO
.
getDataAll
(),
userDTO
.
getDataCompany
(),
userDTO
.
getDataZone
());
List
<
BranchCompany
>
branchCompanies
=
vehicleFeign
.
companyAll
(
userDTO
.
getDataAll
(),
userDTO
.
getDataCompany
(),
userDTO
.
getDataZone
());
List
<
Integer
>
companyIds
=
branchCompanies
.
stream
().
map
(
BranchCompany:
:
getId
).
collect
(
Collectors
.
toList
());
List
<
Integer
>
companyIds
=
branchCompanies
.
stream
().
map
(
BranchCompany:
:
getId
).
collect
(
Collectors
.
toList
());
if
(
orderPageVo
.
getOrderRentVehicleDetail
()
!=
null
)
{
if
(
orderPageVo
.
getOrderRentVehicleDetail
()
!=
null
)
{
if
(!
companyIds
.
contains
(
orderPageVo
.
getOrderRentVehicleDetail
().
getStartCompanyId
())
&&
!
companyIds
.
contains
(
orderPageVo
.
getOrderRentVehicleDetail
().
getEndCompanyId
()))
{
if
(!
companyIds
.
contains
(
orderPageVo
.
getOrderRentVehicleDetail
().
getStartCompanyId
())
&&
!
companyIds
.
contains
(
orderPageVo
.
getOrderRentVehicleDetail
().
getEndCompanyId
()))
{
return
ObjectRestResponse
.
createFailedResult
(
ResCode
.
YOU_AUTH_FAIL
.
getCode
(),
ResCode
.
YOU_AUTH_FAIL
.
getDesc
());
return
ObjectRestResponse
.
createFailedResult
(
ResCode
.
YOU_AUTH_FAIL
.
getCode
(),
ResCode
.
YOU_AUTH_FAIL
.
getDesc
());
}
}
if
(
userDTO
.
getCompanyId
()
==
orderPageVo
.
getOrderRentVehicleDetail
().
getEndCompanyId
())
{
if
(
userDTO
.
getCompanyId
()
==
orderPageVo
.
getOrderRentVehicleDetail
().
getEndCompanyId
())
{
orderPageVo
.
setUserCompanyStatus
(
true
);
orderPageVo
.
setUserCompanyStatus
(
true
);
}
}
if
(
orderPageVo
.
getStatus
()
==
4
)
{
//未交车
if
(
orderPageVo
.
getStatus
()
==
4
)
{
//未交车
// boolean flag = getTodayTime(orderPageVo.getOrderRentVehicleDetail().getStartTime());
// boolean flag = getTodayTime(orderPageVo.getOrderRentVehicleDetail().getStartTime());
// if (!flag) {
// if (!flag) {
// return ObjectRestResponse.createFailedResult(3501, "今日不是交车日期");
// return ObjectRestResponse.createFailedResult(3501, "今日不是交车日期");
// }
// }
getDriverInfo
(
orderPageVo
);
getDriverInfo
(
orderPageVo
);
}
else
if
(
orderPageVo
.
getStatus
()
>=
5
||
orderPageVo
.
getStatus
()
==
-
1
)
{
//出行中 已交车
}
else
if
(
orderPageVo
.
getStatus
()
>=
5
||
orderPageVo
.
getStatus
()
==
-
1
)
{
//出行中 已交车
//设置违约金金额
//设置违约金金额
getDriverInfo
(
orderPageVo
);
getDriverInfo
(
orderPageVo
);
getUserLicense
(
orderPageVo
);
getUserLicense
(
orderPageVo
);
}
}
ObjectRestResponse
<
CompanyDetail
>
startResponse
=
vehicleFeign
.
getCompanyDetail
(
orderPageVo
.
getOrderRentVehicleDetail
().
getStartCompanyId
());
ObjectRestResponse
<
CompanyDetail
>
startResponse
=
vehicleFeign
.
getCompanyDetail
(
orderPageVo
.
getOrderRentVehicleDetail
().
getStartCompanyId
());
if
(
startResponse
.
getData
()
!=
null
)
{
if
(
startResponse
.
getData
()
!=
null
)
{
orderPageVo
.
setStartCompanyName
(
startResponse
.
getData
().
getName
());
orderPageVo
.
setStartCompanyName
(
startResponse
.
getData
().
getName
());
}
}
ObjectRestResponse
<
CompanyDetail
>
restResponse
=
vehicleFeign
.
getCompanyDetail
(
orderPageVo
.
getOrderRentVehicleDetail
().
getEndCompanyId
());
if
(
restResponse
.
getData
()
!=
null
)
{
orderPageVo
.
setEndCompanyName
(
restResponse
.
getData
().
getName
());
}
RestResponse
<
Vehicle
>
response
=
vehicleFeign
.
findById
(
orderPageVo
.
getOrderRentVehicleDetail
().
getVehicleId
());
if
(
response
.
getData
()
!=
null
)
{
orderPageVo
.
setVehicalNumberPlat
(
response
.
getData
().
getNumberPlate
());
orderPageVo
.
setCode
(
response
.
getData
().
getCode
());
}
}
else
if
(
orderPageVo
.
getOrderTourDetail
()
!=
null
)
{
if
(
StringUtils
.
isNotBlank
(
orderPageVo
.
getOrderTourDetail
().
getTourUserIds
()))
{
List
<
TourUser
>
list
=
tourFeign
.
getTourUsers
(
orderPageVo
.
getOrderTourDetail
().
getTourUserIds
()).
getData
();
orderPageVo
.
getOrderTourDetail
().
setUserVoList
(
list
==
null
||
list
.
size
()
<=
0
?
new
ArrayList
<>()
:
list
);
}
}
//设置保留金
ObjectRestResponse
<
CompanyDetail
>
restResponse
=
vehicleFeign
.
getCompanyDetail
(
orderPageVo
.
getOrderRentVehicleDetail
().
getEndCompanyId
());
Map
<
String
,
Dictionary
>
dictionaryMap
=
thirdFeign
.
dictionaryGetAll4Map
().
getData
();
if
(
restResponse
.
getData
()
!=
null
)
{
BigDecimal
illegalReserve
=
new
BigDecimal
(
dictionaryMap
.
get
(
APP_ORDER
+
"_"
+
DictionaryKey
.
ILLEGAL_RESERVE
).
getDetail
());
orderPageVo
.
setEndCompanyName
(
restResponse
.
getData
().
getName
());
orderPageVo
.
setIllegalReserve
(
illegalReserve
);
}
orderPageVo
.
setItems
(
orderItemBiz
.
selectList
(
new
OrderItem
(){{
RestResponse
<
Vehicle
>
response
=
vehicleFeign
.
findById
(
orderPageVo
.
getOrderRentVehicleDetail
().
getVehicleId
());
setOrderId
(
orderPageVo
.
getId
());
if
(
response
.
getData
()
!=
null
)
{
}}
));
orderPageVo
.
setVehicalNumberPlat
(
response
.
getData
().
getNumberPlate
(
));
return
ObjectRestResponse
.
succ
(
orderPageVo
);
orderPageVo
.
setCode
(
response
.
getData
().
getCode
()
);
}
}
}
else
if
(
orderPageVo
.
getOrderTourDetail
()
!=
null
)
{
if
(
StringUtils
.
isNotBlank
(
orderPageVo
.
getOrderTourDetail
().
getTourUserIds
()))
{
List
<
TourUser
>
list
=
tourFeign
.
getTourUsers
(
orderPageVo
.
getOrderTourDetail
().
getTourUserIds
()).
getData
();
orderPageVo
.
getOrderTourDetail
().
setUserVoList
(
list
==
null
||
list
.
size
()
<=
0
?
new
ArrayList
<>()
:
list
);
}
}
/**
//设置保留金
* 后台获取订单详情
Map
<
String
,
Dictionary
>
dictionaryMap
=
thirdFeign
.
dictionaryGetAll4Map
().
getData
();
* @param no
BigDecimal
illegalReserve
=
new
BigDecimal
(
dictionaryMap
.
get
(
APP_ORDER
+
"_"
+
DictionaryKey
.
ILLEGAL_RESERVE
).
getDetail
());
* @param userDTO
orderPageVo
.
setIllegalReserve
(
illegalReserve
);
* @return
orderPageVo
.
setItems
(
orderItemBiz
.
selectList
(
new
OrderItem
()
{{
*/
setOrderId
(
orderPageVo
.
getId
());
}}));
return
ObjectRestResponse
.
succ
(
orderPageVo
);
}
/**
* 后台获取订单详情
*
* @param no
* @param userDTO
* @return
*/
public
ObjectRestResponse
<
OrderPageVO
>
orderDetail
(
String
no
,
UserDTO
userDTO
)
{
public
ObjectRestResponse
<
OrderPageVO
>
orderDetail
(
String
no
,
UserDTO
userDTO
)
{
OrderPageVO
orderPageVo
=
mapper
.
getOrderDetail
(
no
);
OrderPageVO
orderPageVo
=
mapper
.
getOrderDetail
(
no
);
if
(
orderPageVo
==
null
)
{
if
(
orderPageVo
==
null
)
{
return
ObjectRestResponse
.
createFailedResult
(
ResCode
.
ORDER_IS_NOT_EXIST
.
getCode
(),
ResCode
.
ORDER_IS_NOT_EXIST
.
getDesc
());
return
ObjectRestResponse
.
createFailedResult
(
ResCode
.
ORDER_IS_NOT_EXIST
.
getCode
(),
ResCode
.
ORDER_IS_NOT_EXIST
.
getDesc
());
}
}
AppUserDTO
appUserVo
=
userFeign
.
userDetailById
(
orderPageVo
.
getUserId
()).
getData
();
AppUserDTO
appUserVo
=
userFeign
.
userDetailById
(
orderPageVo
.
getUserId
()).
getData
();
if
(
appUserVo
!=
null
)
{
if
(
appUserVo
!=
null
)
{
orderPageVo
.
setTelephone
(
appUserVo
.
getUsername
());
orderPageVo
.
setTelephone
(
appUserVo
.
getUsername
());
orderPageVo
.
setUsername
(
appUserVo
.
getRealname
());
orderPageVo
.
setUsername
(
appUserVo
.
getRealname
());
orderPageVo
.
setPositionName
(
appUserVo
.
getPositionName
());
orderPageVo
.
setPositionName
(
appUserVo
.
getPositionName
());
}
}
List
<
BranchCompany
>
branchCompanies
=
vehicleFeign
.
companyAll
(
userDTO
.
getDataAll
(),
userDTO
.
getDataCompany
(),
userDTO
.
getDataZone
());
List
<
BranchCompany
>
branchCompanies
=
vehicleFeign
.
companyAll
(
userDTO
.
getDataAll
(),
userDTO
.
getDataCompany
(),
userDTO
.
getDataZone
());
List
<
Integer
>
companyIds
=
branchCompanies
.
stream
().
map
(
BranchCompany:
:
getId
).
collect
(
Collectors
.
toList
());
List
<
Integer
>
companyIds
=
branchCompanies
.
stream
().
map
(
BranchCompany:
:
getId
).
collect
(
Collectors
.
toList
());
...
@@ -261,7 +262,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
...
@@ -261,7 +262,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
if
(!
companyIds
.
contains
(
orderPageVo
.
getOrderRentVehicleDetail
().
getStartCompanyId
())
&&
!
companyIds
.
contains
(
orderPageVo
.
getOrderRentVehicleDetail
().
getEndCompanyId
()))
{
if
(!
companyIds
.
contains
(
orderPageVo
.
getOrderRentVehicleDetail
().
getStartCompanyId
())
&&
!
companyIds
.
contains
(
orderPageVo
.
getOrderRentVehicleDetail
().
getEndCompanyId
()))
{
return
ObjectRestResponse
.
createFailedResult
(
ResCode
.
YOU_AUTH_FAIL
.
getCode
(),
ResCode
.
YOU_AUTH_FAIL
.
getDesc
());
return
ObjectRestResponse
.
createFailedResult
(
ResCode
.
YOU_AUTH_FAIL
.
getCode
(),
ResCode
.
YOU_AUTH_FAIL
.
getDesc
());
}
}
if
(
userDTO
.
getCompanyId
()
==
orderPageVo
.
getOrderRentVehicleDetail
().
getEndCompanyId
())
{
if
(
userDTO
.
getCompanyId
()
==
orderPageVo
.
getOrderRentVehicleDetail
().
getEndCompanyId
())
{
orderPageVo
.
setUserCompanyStatus
(
true
);
orderPageVo
.
setUserCompanyStatus
(
true
);
}
}
if
(
orderPageVo
.
getStatus
()
==
4
)
{
//未交车
if
(
orderPageVo
.
getStatus
()
==
4
)
{
//未交车
...
@@ -291,7 +292,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
...
@@ -291,7 +292,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
}
}
}
else
if
(
orderPageVo
.
getOrderTourDetail
()
!=
null
)
{
}
else
if
(
orderPageVo
.
getOrderTourDetail
()
!=
null
)
{
if
(
StringUtils
.
isNotBlank
(
orderPageVo
.
getOrderTourDetail
().
getTourUserIds
()))
{
if
(
StringUtils
.
isNotBlank
(
orderPageVo
.
getOrderTourDetail
().
getTourUserIds
()))
{
List
<
TourUser
>
list
=
tourFeign
.
getTourUsers
(
orderPageVo
.
getOrderTourDetail
().
getTourUserIds
()).
getData
();
List
<
TourUser
>
list
=
tourFeign
.
getTourUsers
(
orderPageVo
.
getOrderTourDetail
().
getTourUserIds
()).
getData
();
orderPageVo
.
getOrderTourDetail
().
setUserVoList
(
list
==
null
||
list
.
size
()
<=
0
?
new
ArrayList
<>()
:
list
);
orderPageVo
.
getOrderTourDetail
().
setUserVoList
(
list
==
null
||
list
.
size
()
<=
0
?
new
ArrayList
<>()
:
list
);
}
}
...
@@ -301,7 +302,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
...
@@ -301,7 +302,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
Map
<
String
,
Dictionary
>
dictionaryMap
=
thirdFeign
.
dictionaryGetAll4Map
().
getData
();
Map
<
String
,
Dictionary
>
dictionaryMap
=
thirdFeign
.
dictionaryGetAll4Map
().
getData
();
BigDecimal
illegalReserve
=
new
BigDecimal
(
dictionaryMap
.
get
(
APP_ORDER
+
"_"
+
DictionaryKey
.
ILLEGAL_RESERVE
).
getDetail
());
BigDecimal
illegalReserve
=
new
BigDecimal
(
dictionaryMap
.
get
(
APP_ORDER
+
"_"
+
DictionaryKey
.
ILLEGAL_RESERVE
).
getDetail
());
orderPageVo
.
setIllegalReserve
(
illegalReserve
);
orderPageVo
.
setIllegalReserve
(
illegalReserve
);
orderPageVo
.
setItems
(
orderItemBiz
.
selectList
(
new
OrderItem
(){{
orderPageVo
.
setItems
(
orderItemBiz
.
selectList
(
new
OrderItem
()
{{
setOrderId
(
orderPageVo
.
getId
());
setOrderId
(
orderPageVo
.
getId
());
setType
(
104
);
setType
(
104
);
}}));
}}));
...
@@ -309,23 +310,23 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
...
@@ -309,23 +310,23 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
}
}
//获取两个日期之间的天数(不包含头尾)
//获取两个日期之间的天数(不包含头尾)
public
int
getDaysBetweenDateTime
(
DateTime
startDay
,
DateTime
endDay
)
{
public
int
getDaysBetweenDateTime
(
DateTime
startDay
,
DateTime
endDay
)
{
int
a
=
0
;
int
a
=
0
;
for
(
DateTime
curDate
=
startDay
.
plusDays
(
1
);
curDate
.
compareTo
(
endDay
)
<
0
;
curDate
=
curDate
.
plusDays
(
1
))
{
for
(
DateTime
curDate
=
startDay
.
plusDays
(
1
);
curDate
.
compareTo
(
endDay
)
<
0
;
curDate
=
curDate
.
plusDays
(
1
))
{
a
++;
a
++;
}
}
return
a
;
return
a
;
}
}
//获取两个日期之间的天数(包含头尾)
//获取两个日期之间的天数(包含头尾)
public
int
getDaysBetweenDateTimeHasStartEnd
(
DateTime
startDay
,
DateTime
endDay
)
{
public
int
getDaysBetweenDateTimeHasStartEnd
(
DateTime
startDay
,
DateTime
endDay
)
{
int
a
=
0
;
int
a
=
0
;
for
(
DateTime
curDate
=
startDay
;
curDate
.
compareTo
(
endDay
)
<=
0
;
curDate
=
curDate
.
plusHours
(
1
))
{
for
(
DateTime
curDate
=
startDay
;
curDate
.
compareTo
(
endDay
)
<=
0
;
curDate
=
curDate
.
plusHours
(
1
))
{
a
++;
a
++;
}
}
return
a
;
return
a
;
}
}
// public static void main(String[] args) {
// public static void main(String[] args) {
// DateTime dateTime = DateTime.parse("2019-09-20 12:00:00", DEFAULT_DATE_TIME_FORMATTER);
// DateTime dateTime = DateTime.parse("2019-09-20 12:00:00", DEFAULT_DATE_TIME_FORMATTER);
...
@@ -336,489 +337,497 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
...
@@ -336,489 +337,497 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
// System.out.println(a);
// System.out.println(a);
// }
// }
public
void
updateCrossRefund
(
OrderPageVO
orderPageVO
)
{
public
void
updateCrossRefund
(
OrderPageVO
orderPageVO
)
{
//计算延期费用
//计算延期费用
DedDetailDTO
dedDetailDTO
=
new
DedDetailDTO
();
DedDetailDTO
dedDetailDTO
=
new
DedDetailDTO
();
//提前还车,结束时间大于当前时间
//提前还车,结束时间大于当前时间
Long
nowTime
=
System
.
currentTimeMillis
();
Long
nowTime
=
System
.
currentTimeMillis
();
Long
endTime
=
orderPageVO
.
getOrderRentVehicleDetail
().
getEndTime
();
Long
endTime
=
orderPageVO
.
getOrderRentVehicleDetail
().
getEndTime
();
Long
startTime
=
orderPageVO
.
getOrderRentVehicleDetail
().
getStartTime
();
Long
startTime
=
orderPageVO
.
getOrderRentVehicleDetail
().
getStartTime
();
//设置使用天数
//设置使用天数
int
userUsedDay
=
orderCalculateBiz
.
getIncludeDays
(
startTime
,
nowTime
);
int
userUsedDay
=
orderCalculateBiz
.
getIncludeDays
(
startTime
,
nowTime
);
orderPageVO
.
getOrderRentVehicleDetail
().
setUsedDay
(
userUsedDay
);
orderPageVO
.
getOrderRentVehicleDetail
().
setUsedDay
(
userUsedDay
);
orderRentVehicleBiz
.
updateSelectiveById
(
orderPageVO
.
getOrderRentVehicleDetail
());
orderRentVehicleBiz
.
updateSelectiveById
(
orderPageVO
.
getOrderRentVehicleDetail
());
//实际预定的天数
//实际预定的天数
int
actualDay
=
orderCalculateBiz
.
getIncludeDays
(
startTime
,
endTime
);
int
actualDay
=
orderCalculateBiz
.
getIncludeDays
(
startTime
,
endTime
);
Integer
orderId
=
orderPageVO
.
getId
();
InProgressVO
inProgressVO
=
orderCalculateBiz
.
inProgressCalculate
(
orderPageVO
,
userUsedDay
);
List
<
OrderItem
>
items
=
orderItemBiz
.
selectList
(
new
OrderItem
()
{{
setOrderId
(
orderId
);
}});
//租车车辆单价
BigDecimal
amount
=
new
BigDecimal
(
0
);
if
(
items
!=
null
&&
items
.
size
()
>
0
)
{
for
(
OrderItem
orderItem
:
items
)
{
if
(
orderItem
.
getType
()
==
ItemTypeEnum
.
VEHICLE_MODEL
.
getCode
())
{
amount
=
orderItem
.
getUnitPrice
();
break
;
}
}
}
/**
* 提前还车
*/
if
(
userUsedDay
-
actualDay
<
0
)
{
StringBuilder
stringBuilder
=
new
StringBuilder
();
//提前的天数, 当天就算使用一天
int
noUsedDay
=
actualDay
-
userUsedDay
;
//退还未使用的天数,或者金额,扣除违约金,实际未使用天数的金额,最多3000元
InProgressVO
inProgressVO
=
orderCalculateBiz
.
inProgressCalculate
(
orderPageVO
,
userUsedDay
);
if
(
inProgressVO
!=
null
)
{
//消费超额金
if
(
inProgressVO
.
getExtraAmount
()
!=
null
)
{
dedDetailDTO
.
setExcessCost
(
inProgressVO
.
getExtraAmount
());
}
stringBuilder
.
append
(
"违约金( "
);
stringBuilder
.
append
(
noUsedDay
);
stringBuilder
.
append
(
"天) = "
);
stringBuilder
.
append
(
inProgressVO
.
getViolateAmount
());
initDedDetail
(
dedDetailDTO
,
OrderViolateEnum
.
BEFORE
.
getCode
(),
inProgressVO
.
getViolateAmount
(),
stringBuilder
);
}
/**
* 延期还车
*/
}
else
if
(
userUsedDay
-
actualDay
>
0
)
{
StringBuilder
stringBuilder
=
new
StringBuilder
();
stringBuilder
.
append
(
"违约金( "
);
//延期的天数, 延期违约金是延期天数*200%
InProgressVO
inProgressVO
=
orderCalculateBiz
.
inProgressCalculate
(
orderPageVO
,
userUsedDay
);
if
(
inProgressVO
!=
null
)
{
int
extraUsedDay
=
userUsedDay
-
actualDay
;
if
(
extraUsedDay
>
0
)
{
stringBuilder
.
append
(
extraUsedDay
);
stringBuilder
.
append
(
"(天)"
);
stringBuilder
.
append
(
" x 2)"
);
stringBuilder
.
append
(
" = "
);
stringBuilder
.
append
(
inProgressVO
.
getViolateAmount
());
stringBuilder
.
append
(
"元"
);
initDedDetail
(
dedDetailDTO
,
OrderViolateEnum
.
AFTER
.
getCode
(),
inProgressVO
.
getViolateAmount
(),
stringBuilder
);
}
}
}
JSONArray
jsonArray
=
new
JSONArray
();
JSONArray
jsonArray
=
new
JSONArray
();
if
((
dedDetailDTO
.
getCost
()
!=
null
&&
dedDetailDTO
.
getCost
().
doubleValue
()
!=
0
)
||
(
dedDetailDTO
.
getExcessCost
()!=
null
&&
dedDetailDTO
.
getExcessCost
().
doubleValue
()
!=
0
))
{
if
(
inProgressVO
!=
null
)
{
jsonArray
.
add
(
dedDetailDTO
);
//新增延长还车,不计免赔额,金额大于0才显示
}
if
(
inProgressVO
.
getDelayAddPriceVO
().
getDelayDamageSafeAmount
()
!=
null
&&
inProgressVO
.
getDelayAddPriceVO
().
getDelayDamageSafeAmount
().
doubleValue
()
>
0
)
{
DedDetailDTO
dedDetailDTO1
=
new
DedDetailDTO
();
StringBuilder
stringBuilder
=
new
StringBuilder
();
//添加更改还车公司计算费用
stringBuilder
.
append
(
"延长用车"
);
if
(
orderPageVO
.
getOrderRentVehicleDetail
()
!=
null
&&
orderPageVO
.
getOrderRentVehicleDetail
().
getBookRecordId
()
!=
null
)
{
stringBuilder
.
append
(
inProgressVO
.
getDelayAddPriceVO
().
getDelayAddDays
());
//查询是否有更换还车记录
stringBuilder
.
append
(
"天, 补扣不计免赔费用"
);
List
<
BookRecordUpdateLog
>
bookRecordUpdateLogs
=
vehicleFeign
.
get
(
orderPageVO
.
getOrderRentVehicleDetail
().
getBookRecordId
()).
getData
();
stringBuilder
.
append
(
inProgressVO
.
getDelayAddPriceVO
().
getDelayDamageSafeAmount
());
if
(
bookRecordUpdateLogs
!=
null
&&
bookRecordUpdateLogs
.
size
()
>
0
)
{
stringBuilder
.
append
(
"元"
);
orderPageVO
.
setBookRecordUpdateLogs
(
bookRecordUpdateLogs
);
initDedDetail
(
dedDetailDTO
,
OrderViolateEnum
.
DELAY_VEHICLE
.
getCode
(),
inProgressVO
.
getDelayAddPriceVO
().
getDelayDamageSafeAmount
(),
stringBuilder
);
//有更换记录,则需要计算更换费用
jsonArray
.
add
(
dedDetailDTO
);
//原始公司经纬度,列表中最后一个 bookRecordUpdateLogs.get(bookRecordUpdateLogs.size -1 ) 最后还车公司是列表中的第一条中的getNewRetCompanyId
orderPageVO
.
setDelayVehicleDetail
(
jsonArray
.
toJSONString
());
BookRecordUpdateLog
oldCompany
=
bookRecordUpdateLogs
.
get
(
bookRecordUpdateLogs
.
size
()
-
1
);
jsonArray
=
new
JSONArray
();
BookRecordUpdateLog
newCompany
=
bookRecordUpdateLogs
.
get
(
0
);
dedDetailDTO
=
new
DedDetailDTO
();
if
(
oldCompany
!=
null
&&
newCompany
!=
null
)
{
}
else
{
CompanyDetail
oldCompanyDetail
=
vehicleFeign
.
getCompanyDetail
(
oldCompany
.
getOldRetCompanyId
()).
getData
();
orderPageVO
.
setDelayVehicleDetail
(
jsonArray
.
toJSONString
());
CompanyDetail
newCompanyDetail
=
vehicleFeign
.
getCompanyDetail
(
newCompany
.
getNewRetCompanyId
()).
getData
();
}
if
(
oldCompanyDetail
.
getLatitude
()
!=
null
&&
oldCompanyDetail
.
getLongitude
()
!=
null
&&
newCompanyDetail
.
getLongitude
()
!=
null
&&
newCompanyDetail
.
getLatitude
()
!=
null
)
{
/**
//根据经纬度获取两个公司的距离
* 提前还车
double
distance
=
DistanceUtil
.
getDistance
(
oldCompanyDetail
.
getLongitude
().
doubleValue
(),
oldCompanyDetail
.
getLatitude
().
doubleValue
(),
newCompanyDetail
.
getLongitude
().
doubleValue
(),
newCompanyDetail
.
getLatitude
().
doubleValue
());
*/
log
.
info
(
"两个公司的距离为(米): {}"
,
distance
);
if
(
userUsedDay
-
actualDay
<
0
)
{
BigDecimal
distanceNum
=
new
BigDecimal
(
distance
+
""
).
divide
(
new
BigDecimal
(
"1000"
),
0
,
BigDecimal
.
ROUND_UP
);
StringBuilder
stringBuilder
=
new
StringBuilder
();
//取出费用计算的单价
//提前的天数, 当天就算使用一天
Map
<
String
,
Dictionary
>
dictionaryMap
=
thirdFeign
.
dictionaryGetAll4Map
().
getData
();
int
noUsedDay
=
actualDay
-
userUsedDay
;
BigDecimal
illegalReserve
=
new
BigDecimal
(
dictionaryMap
.
get
(
ILLEGAL_TYPE
+
"_"
+
DictionaryKey
.
ILLEGAL_FEE_PRICE
).
getDetail
());
//退还未使用的天数,或者金额,扣除违约金,实际未使用天数的金额,最多3000元
BigDecimal
totalCost
=
distanceNum
.
multiply
(
illegalReserve
);
//消费超额金
log
.
info
(
"更换两个公司的总费用为: {}"
,
totalCost
);
if
(
inProgressVO
.
getExtraAmount
()
!=
null
)
{
StringBuilder
stringBuilder
=
new
StringBuilder
();
dedDetailDTO
.
setExcessCost
(
inProgressVO
.
getExtraAmount
());
stringBuilder
.
append
(
illegalReserve
);
}
stringBuilder
.
append
(
" x "
);
stringBuilder
.
append
(
"违约金( "
);
stringBuilder
.
append
(
distanceNum
);
stringBuilder
.
append
(
noUsedDay
);
stringBuilder
.
append
(
"(KM)"
);
stringBuilder
.
append
(
"天) = "
);
stringBuilder
.
append
(
" = "
);
stringBuilder
.
append
(
inProgressVO
.
getViolateAmount
());
stringBuilder
.
append
(
totalCost
);
initDedDetail
(
dedDetailDTO
,
OrderViolateEnum
.
BEFORE
.
getCode
(),
inProgressVO
.
getViolateAmount
(),
stringBuilder
);
stringBuilder
.
append
(
"元"
);
/**
dedDetailDTO1
.
setCost
(
totalCost
);
* 延期还车
initDedDetail
(
dedDetailDTO1
,
OrderViolateEnum
.
CHANGE
.
getCode
(),
totalCost
,
stringBuilder
);
*/
}
}
else
if
(
userUsedDay
-
actualDay
>
0
)
{
}
StringBuilder
stringBuilder
=
new
StringBuilder
();
}
stringBuilder
.
append
(
"违约金( "
);
}
//延期的天数, 延期违约金是延期天数*200%
if
(
dedDetailDTO1
.
getCost
()
!=
null
&&
dedDetailDTO1
.
getCost
().
doubleValue
()
!=
0
)
{
int
extraUsedDay
=
userUsedDay
-
actualDay
;
jsonArray
.
add
(
dedDetailDTO1
);
if
(
extraUsedDay
>
0
)
{
}
stringBuilder
.
append
(
extraUsedDay
);
orderPageVO
.
setDedDetailDTO
(
jsonArray
.
toJSONString
());
stringBuilder
.
append
(
"(天)"
);
}
stringBuilder
.
append
(
" x 2)"
);
stringBuilder
.
append
(
" = "
);
stringBuilder
.
append
(
inProgressVO
.
getViolateAmount
());
stringBuilder
.
append
(
"元"
);
initDedDetail
(
dedDetailDTO
,
OrderViolateEnum
.
AFTER
.
getCode
(),
inProgressVO
.
getViolateAmount
(),
stringBuilder
);
}
}
}
if
((
dedDetailDTO
.
getCost
()
!=
null
&&
dedDetailDTO
.
getCost
().
doubleValue
()
!=
0
)
||
(
dedDetailDTO
.
getExcessCost
()
!=
null
&&
dedDetailDTO
.
getExcessCost
().
doubleValue
()
!=
0
))
{
jsonArray
.
add
(
dedDetailDTO
);
}
DedDetailDTO
dedDetailDTO1
=
new
DedDetailDTO
();
//添加更改还车公司计算费用
if
(
orderPageVO
.
getOrderRentVehicleDetail
()
!=
null
&&
orderPageVO
.
getOrderRentVehicleDetail
().
getBookRecordId
()
!=
null
)
{
//查询是否有更换还车记录
List
<
BookRecordUpdateLog
>
bookRecordUpdateLogs
=
vehicleFeign
.
get
(
orderPageVO
.
getOrderRentVehicleDetail
().
getBookRecordId
()).
getData
();
if
(
bookRecordUpdateLogs
!=
null
&&
bookRecordUpdateLogs
.
size
()
>
0
)
{
orderPageVO
.
setBookRecordUpdateLogs
(
bookRecordUpdateLogs
);
//有更换记录,则需要计算更换费用
//原始公司经纬度,列表中最后一个 bookRecordUpdateLogs.get(bookRecordUpdateLogs.size -1 ) 最后还车公司是列表中的第一条中的getNewRetCompanyId
BookRecordUpdateLog
oldCompany
=
bookRecordUpdateLogs
.
get
(
bookRecordUpdateLogs
.
size
()
-
1
);
BookRecordUpdateLog
newCompany
=
bookRecordUpdateLogs
.
get
(
0
);
if
(
oldCompany
!=
null
&&
newCompany
!=
null
)
{
CompanyDetail
oldCompanyDetail
=
vehicleFeign
.
getCompanyDetail
(
oldCompany
.
getOldRetCompanyId
()).
getData
();
CompanyDetail
newCompanyDetail
=
vehicleFeign
.
getCompanyDetail
(
newCompany
.
getNewRetCompanyId
()).
getData
();
if
(
oldCompanyDetail
.
getLatitude
()
!=
null
&&
oldCompanyDetail
.
getLongitude
()
!=
null
&&
newCompanyDetail
.
getLongitude
()
!=
null
&&
newCompanyDetail
.
getLatitude
()
!=
null
)
{
//根据经纬度获取两个公司的距离
double
distance
=
DistanceUtil
.
getDistance
(
oldCompanyDetail
.
getLongitude
().
doubleValue
(),
oldCompanyDetail
.
getLatitude
().
doubleValue
(),
newCompanyDetail
.
getLongitude
().
doubleValue
(),
newCompanyDetail
.
getLatitude
().
doubleValue
());
log
.
info
(
"两个公司的距离为(米): {}"
,
distance
);
BigDecimal
distanceNum
=
new
BigDecimal
(
distance
+
""
).
divide
(
new
BigDecimal
(
"1000"
),
0
,
BigDecimal
.
ROUND_UP
);
//取出费用计算的单价
Map
<
String
,
Dictionary
>
dictionaryMap
=
thirdFeign
.
dictionaryGetAll4Map
().
getData
();
BigDecimal
illegalReserve
=
new
BigDecimal
(
dictionaryMap
.
get
(
ILLEGAL_TYPE
+
"_"
+
DictionaryKey
.
ILLEGAL_FEE_PRICE
).
getDetail
());
BigDecimal
totalCost
=
distanceNum
.
multiply
(
illegalReserve
);
log
.
info
(
"更换两个公司的总费用为: {}"
,
totalCost
);
StringBuilder
stringBuilder
=
new
StringBuilder
();
stringBuilder
.
append
(
illegalReserve
);
stringBuilder
.
append
(
" x "
);
stringBuilder
.
append
(
distanceNum
);
stringBuilder
.
append
(
"(KM)"
);
stringBuilder
.
append
(
" = "
);
stringBuilder
.
append
(
totalCost
);
stringBuilder
.
append
(
"元"
);
dedDetailDTO1
.
setCost
(
totalCost
);
initDedDetail
(
dedDetailDTO1
,
OrderViolateEnum
.
CHANGE
.
getCode
(),
totalCost
,
stringBuilder
);
}
}
}
}
if
(
dedDetailDTO1
.
getCost
()
!=
null
&&
dedDetailDTO1
.
getCost
().
doubleValue
()
!=
0
)
{
jsonArray
.
add
(
dedDetailDTO1
);
}
orderPageVO
.
setDedDetailDTO
(
jsonArray
.
toJSONString
());
}
/**
/**
* 初始化违约金实体
* 初始化违约金实体
* @param dedDetailDTO
*
* @param type
* @param dedDetailDTO
* @param cost
* @param type
* @param stringBuilder
* @param cost
*/
* @param stringBuilder
public
void
initDedDetail
(
DedDetailDTO
dedDetailDTO
,
Integer
type
,
BigDecimal
cost
,
StringBuilder
stringBuilder
)
{
*/
String
detailName
=
null
;
public
void
initDedDetail
(
DedDetailDTO
dedDetailDTO
,
Integer
type
,
BigDecimal
cost
,
StringBuilder
stringBuilder
)
{
if
(
type
==
OrderViolateEnum
.
BEFORE
.
getCode
())
{
String
detailName
=
null
;
dedDetailDTO
.
setType
(
OrderViolateEnum
.
BEFORE
.
getCode
());
if
(
type
==
OrderViolateEnum
.
BEFORE
.
getCode
())
{
detailName
=
"提前还车违约金"
;
dedDetailDTO
.
setType
(
OrderViolateEnum
.
BEFORE
.
getCode
());
}
else
if
(
type
==
OrderViolateEnum
.
AFTER
.
getCode
())
{
detailName
=
"提前还车违约金"
;
dedDetailDTO
.
setType
(
OrderViolateEnum
.
AFTER
.
getCode
());
}
else
if
(
type
==
OrderViolateEnum
.
AFTER
.
getCode
())
{
detailName
=
"延期还车违约金"
;
dedDetailDTO
.
setType
(
OrderViolateEnum
.
AFTER
.
getCode
());
}
else
if
(
type
==
OrderViolateEnum
.
CHANGE
.
getCode
())
{
detailName
=
"延期还车违约金"
;
dedDetailDTO
.
setType
(
OrderViolateEnum
.
CHANGE
.
getCode
());
}
else
if
(
type
==
OrderViolateEnum
.
CHANGE
.
getCode
())
{
detailName
=
"更换还车公司"
;
dedDetailDTO
.
setType
(
OrderViolateEnum
.
CHANGE
.
getCode
());
detailName
=
"更换还车公司"
;
}
else
if
(
type
==
OrderViolateEnum
.
DELAY_VEHICLE
.
getCode
())
{
dedDetailDTO
.
setType
(
OrderViolateEnum
.
DELAY_VEHICLE
.
getCode
());
detailName
=
"延长还车"
;
}
}
//900元+违约金(¥900x2天=)1800元
//900元+违约金(¥900x2天=)1800元
dedDetailDTO
.
setDeductions
(
stringBuilder
.
toString
());
dedDetailDTO
.
setDeductions
(
stringBuilder
.
toString
());
dedDetailDTO
.
setCost
(
cost
);
dedDetailDTO
.
setCost
(
cost
);
dedDetailDTO
.
setId
(
1
);
dedDetailDTO
.
setId
(
1
);
dedDetailDTO
.
setStatusIndex
(
1
);
dedDetailDTO
.
setStatusIndex
(
1
);
dedDetailDTO
.
setStatusName
(
detailName
);
dedDetailDTO
.
setStatusName
(
detailName
);
}
}
/**
/**
* 获取驾驶人驾照
* 获取驾驶人驾照
* @param orderPageVo
*
*/
* @param orderPageVo
public
void
getUserLicense
(
OrderPageVO
orderPageVo
)
{
*/
OrderVehicleCrosstownDto
orderVehicleCrosstownDto
=
new
OrderVehicleCrosstownDto
();
public
void
getUserLicense
(
OrderPageVO
orderPageVo
)
{
orderVehicleCrosstownDto
.
setOrderId
(
orderPageVo
.
getId
());
OrderVehicleCrosstownDto
orderVehicleCrosstownDto
=
new
OrderVehicleCrosstownDto
();
orderVehicleCrosstownDto
.
setOrderNo
(
orderPageVo
.
getNo
());
orderVehicleCrosstownDto
.
setOrderId
(
orderPageVo
.
getId
());
List
<
OrderVehicleCrosstownDto
>
orderVehicleCrosstown
=
orderVehicleCrosstownBiz
.
selectByOrderId
(
orderVehicleCrosstownDto
);
orderVehicleCrosstownDto
.
setOrderNo
(
orderPageVo
.
getNo
());
if
(
orderVehicleCrosstown
!=
null
&&
orderVehicleCrosstown
.
size
()
>
0
)
{
List
<
OrderVehicleCrosstownDto
>
orderVehicleCrosstown
=
orderVehicleCrosstownBiz
.
selectByOrderId
(
orderVehicleCrosstownDto
);
List
<
OrderUserLicense
>
orderUserLicenses
=
orderUserLicenseBiz
.
selectByIds
(
orderVehicleCrosstown
.
get
(
0
).
getUserLicenseId
()).
getData
();
if
(
orderVehicleCrosstown
!=
null
&&
orderVehicleCrosstown
.
size
()
>
0
)
{
if
(
orderUserLicenses
!=
null
&&
orderUserLicenses
.
size
()
>
0
)
{
List
<
OrderUserLicense
>
orderUserLicenses
=
orderUserLicenseBiz
.
selectByIds
(
orderVehicleCrosstown
.
get
(
0
).
getUserLicenseId
()).
getData
();
orderVehicleCrosstownDto
.
setLicenseIdCard
(
orderUserLicenses
.
get
(
0
).
getLicenseIdCard
());
if
(
orderUserLicenses
!=
null
&&
orderUserLicenses
.
size
()
>
0
)
{
orderVehicleCrosstownDto
.
setLicenseImg
(
orderUserLicenses
.
get
(
0
).
getLicenseImg
());
orderVehicleCrosstownDto
.
setLicenseIdCard
(
orderUserLicenses
.
get
(
0
).
getLicenseIdCard
());
orderVehicleCrosstownDto
.
setLicenseName
(
orderUserLicenses
.
get
(
0
).
getLicenseName
());
orderVehicleCrosstownDto
.
setLicenseImg
(
orderUserLicenses
.
get
(
0
).
getLicenseImg
());
orderVehicleCrosstownDto
.
setLicensePhone
(
orderUserLicenses
.
get
(
0
).
getLicensePhone
());
orderVehicleCrosstownDto
.
setLicenseName
(
orderUserLicenses
.
get
(
0
).
getLicenseName
());
}
orderVehicleCrosstownDto
.
setLicensePhone
(
orderUserLicenses
.
get
(
0
).
getLicensePhone
());
//设置违约明细
}
for
(
OrderVehicleCrosstownDto
a
:
orderVehicleCrosstown
)
{
//设置违约明细
if
(
a
.
getType
()
!=
CrosstownTypeEnum
.
DEPARTURE
.
getCode
())
{
for
(
OrderVehicleCrosstownDto
a
:
orderVehicleCrosstown
)
{
if
(
StringUtils
.
isNotBlank
(
a
.
getViolateDetail
()))
{
if
(
a
.
getType
()
!=
CrosstownTypeEnum
.
DEPARTURE
.
getCode
())
{
orderPageVo
.
setDedDetailDTO
(
a
.
getViolateDetail
());
if
(
StringUtils
.
isNotBlank
(
a
.
getViolateDetail
()))
{
}
orderPageVo
.
setDedDetailDTO
(
a
.
getViolateDetail
());
}
}
}
if
(
StringUtils
.
isNotBlank
(
a
.
getDelayVehicleDetail
()))
{
}
orderPageVo
.
setDelayVehicleDetail
(
a
.
getDelayVehicleDetail
());
if
(
StringUtils
.
isBlank
(
orderPageVo
.
getDedDetailDTO
()))
{
}
updateCrossRefund
(
orderPageVo
);
}
}
}
orderPageVo
.
setOrderVehicleCrosstownDto
(
orderVehicleCrosstownDto
);
}
}
if
(
StringUtils
.
isBlank
(
orderPageVo
.
getDedDetailDTO
())
||
StringUtils
.
isBlank
(
orderPageVo
.
getDelayVehicleDetail
()))
{
updateCrossRefund
(
orderPageVo
);
}
orderPageVo
.
setOrderVehicleCrosstownDto
(
orderVehicleCrosstownDto
);
}
//后台获取用户驾驶信息
//后台获取用户驾驶信息
public
void
getUserLicense1
(
OrderPageVO
orderPageVo
)
{
public
void
getUserLicense1
(
OrderPageVO
orderPageVo
)
{
OrderVehicleCrosstownDto
orderVehicleCrosstownDto
=
new
OrderVehicleCrosstownDto
();
OrderVehicleCrosstownDto
orderVehicleCrosstownDto
=
new
OrderVehicleCrosstownDto
();
orderVehicleCrosstownDto
.
setOrderId
(
orderPageVo
.
getId
());
orderVehicleCrosstownDto
.
setOrderId
(
orderPageVo
.
getId
());
orderVehicleCrosstownDto
.
setOrderNo
(
orderPageVo
.
getNo
());
orderVehicleCrosstownDto
.
setOrderNo
(
orderPageVo
.
getNo
());
List
<
OrderVehicleCrosstownDto
>
orderVehicleCrosstown
=
orderVehicleCrosstownBiz
.
selectByOrderId
(
orderVehicleCrosstownDto
);
List
<
OrderVehicleCrosstownDto
>
orderVehicleCrosstown
=
orderVehicleCrosstownBiz
.
selectByOrderId
(
orderVehicleCrosstownDto
);
if
(
orderVehicleCrosstown
!=
null
&&
orderVehicleCrosstown
.
size
()
>
0
)
{
if
(
orderVehicleCrosstown
!=
null
&&
orderVehicleCrosstown
.
size
()
>
0
)
{
List
<
OrderUserLicense
>
orderUserLicenses
=
orderUserLicenseBiz
.
selectByIds
(
orderVehicleCrosstown
.
get
(
0
).
getUserLicenseId
()).
getData
();
List
<
OrderUserLicense
>
orderUserLicenses
=
orderUserLicenseBiz
.
selectByIds
(
orderVehicleCrosstown
.
get
(
0
).
getUserLicenseId
()).
getData
();
if
(
orderUserLicenses
!=
null
&&
orderUserLicenses
.
size
()
>
0
)
{
if
(
orderUserLicenses
!=
null
&&
orderUserLicenses
.
size
()
>
0
)
{
orderVehicleCrosstownDto
.
setLicenseIdCard
(
orderUserLicenses
.
get
(
0
).
getLicenseIdCard
());
orderVehicleCrosstownDto
.
setLicenseIdCard
(
orderUserLicenses
.
get
(
0
).
getLicenseIdCard
());
orderVehicleCrosstownDto
.
setLicenseImg
(
orderUserLicenses
.
get
(
0
).
getLicenseImg
());
orderVehicleCrosstownDto
.
setLicenseImg
(
orderUserLicenses
.
get
(
0
).
getLicenseImg
());
orderVehicleCrosstownDto
.
setLicenseName
(
orderUserLicenses
.
get
(
0
).
getLicenseName
());
orderVehicleCrosstownDto
.
setLicenseName
(
orderUserLicenses
.
get
(
0
).
getLicenseName
());
orderVehicleCrosstownDto
.
setLicensePhone
(
orderUserLicenses
.
get
(
0
).
getLicensePhone
());
orderVehicleCrosstownDto
.
setLicensePhone
(
orderUserLicenses
.
get
(
0
).
getLicensePhone
());
}
}
//设置违约明细
//设置违约明细
for
(
OrderVehicleCrosstownDto
a
:
orderVehicleCrosstown
)
{
for
(
OrderVehicleCrosstownDto
a
:
orderVehicleCrosstown
)
{
if
(
a
.
getType
()
!=
CrosstownTypeEnum
.
DEPARTURE
.
getCode
())
{
if
(
a
.
getType
()
!=
CrosstownTypeEnum
.
DEPARTURE
.
getCode
())
{
if
(
StringUtils
.
isNotBlank
(
a
.
getViolateDetail
()))
{
if
(
StringUtils
.
isNotBlank
(
a
.
getViolateDetail
()))
{
orderPageVo
.
setDedDetailDTO
(
a
.
getViolateDetail
());
orderPageVo
.
setDedDetailDTO
(
a
.
getViolateDetail
());
}
}
}
}
}
}
}
}
orderPageVo
.
setOrderVehicleCrosstownDto
(
orderVehicleCrosstownDto
);
orderPageVo
.
setOrderVehicleCrosstownDto
(
orderVehicleCrosstownDto
);
}
}
/**
/**
* 获取驾驶人信息
* 获取驾驶人信息
* @param orderPageVo
*
*/
* @param orderPageVo
public
void
getDriverInfo
(
OrderPageVO
orderPageVo
)
{
*/
List
<
VehicleUserLicense
>
vehicleUserLicenses
=
Lists
.
newArrayList
();
public
void
getDriverInfo
(
OrderPageVO
orderPageVo
)
{
String
myDriverIds
=
orderPageVo
.
getOrderRentVehicleDetail
().
getMyDriverIds
();
List
<
VehicleUserLicense
>
vehicleUserLicenses
=
Lists
.
newArrayList
();
if
(
StringUtils
.
isNotBlank
(
myDriverIds
))
{
String
myDriverIds
=
orderPageVo
.
getOrderRentVehicleDetail
().
getMyDriverIds
();
if
(
myDriverIds
.
contains
(
","
))
{
if
(
StringUtils
.
isNotBlank
(
myDriverIds
))
{
String
[]
ids
=
myDriverIds
.
split
(
","
);
if
(
myDriverIds
.
contains
(
","
))
{
try
{
String
[]
ids
=
myDriverIds
.
split
(
","
);
//目前暂定一个驾驶人,后期需要更改再此更改
try
{
RestResponse
<
VehicleUserLicense
>
restResponse
=
vehicleFeign
.
getOne
(
Integer
.
parseInt
(
ids
[
0
]));
//目前暂定一个驾驶人,后期需要更改再此更改
log
.
info
(
restResponse
.
getMessage
());
RestResponse
<
VehicleUserLicense
>
restResponse
=
vehicleFeign
.
getOne
(
Integer
.
parseInt
(
ids
[
0
]));
if
(
restResponse
.
getData
()
!=
null
)
{
log
.
info
(
restResponse
.
getMessage
());
vehicleUserLicenses
.
add
(
restResponse
.
getData
());
if
(
restResponse
.
getData
()
!=
null
)
{
}
vehicleUserLicenses
.
add
(
restResponse
.
getData
());
}
catch
(
Exception
e
)
{
}
log
.
error
(
e
.
getMessage
(),
e
);
}
catch
(
Exception
e
)
{
}
log
.
error
(
e
.
getMessage
(),
e
);
}
else
{
}
try
{
}
else
{
vehicleUserLicenses
.
add
(
vehicleFeign
.
getOne
(
Integer
.
parseInt
(
myDriverIds
.
trim
())).
getData
());
try
{
}
catch
(
Exception
e
)
{
vehicleUserLicenses
.
add
(
vehicleFeign
.
getOne
(
Integer
.
parseInt
(
myDriverIds
.
trim
())).
getData
());
log
.
error
(
e
.
getMessage
(),
e
);
}
catch
(
Exception
e
)
{
}
log
.
error
(
e
.
getMessage
(),
e
);
}
}
}
}
orderPageVo
.
setVehicleUserLicenses
(
vehicleUserLicenses
);
}
}
orderPageVo
.
setVehicleUserLicenses
(
vehicleUserLicenses
);
}
/**
/**
* 修改订单还车公司
* 修改订单还车公司
* @param orderRentVehicleDetail
*
* @return
* @param orderRentVehicleDetail
*/
* @return
public
ObjectRestResponse
save
(
OrderRentVehicleDetail
orderRentVehicleDetail
)
{
*/
if
(
orderRentVehicleDetail
==
null
||
orderRentVehicleDetail
.
getId
()
==
null
)
{
public
ObjectRestResponse
save
(
OrderRentVehicleDetail
orderRentVehicleDetail
)
{
return
ObjectRestResponse
.
paramIsEmpty
();
if
(
orderRentVehicleDetail
==
null
||
orderRentVehicleDetail
.
getId
()
==
null
)
{
}
return
ObjectRestResponse
.
paramIsEmpty
();
log
.
info
(
"更新订单还车地点》》》 orderRentVehicleDetail = {}"
,
orderRentVehicleDetail
.
toString
());
}
UserDTO
userDTO
=
getAdminUserInfo
();
log
.
info
(
"更新订单还车地点》》》 orderRentVehicleDetail = {}"
,
orderRentVehicleDetail
.
toString
());
if
(
userDTO
==
null
)
{
UserDTO
userDTO
=
getAdminUserInfo
();
return
ObjectRestResponse
.
createFailedResult
(
ResultCode
.
RSTOKEN_EXPIRED_CODE
,
ResultCode
.
getMsg
(
ResultCode
.
RSTOKEN_EXPIRED_CODE
));
if
(
userDTO
==
null
)
{
}
return
ObjectRestResponse
.
createFailedResult
(
ResultCode
.
RSTOKEN_EXPIRED_CODE
,
ResultCode
.
getMsg
(
ResultCode
.
RSTOKEN_EXPIRED_CODE
));
}
StringBuilder
stringBuilder
=
new
StringBuilder
();
StringBuilder
stringBuilder
=
new
StringBuilder
();
OrderRentVehicleDetail
oldValue
=
orderRentVehicleBiz
.
selectById
(
orderRentVehicleDetail
.
getId
());
OrderRentVehicleDetail
oldValue
=
orderRentVehicleBiz
.
selectById
(
orderRentVehicleDetail
.
getId
());
if
(
oldValue
==
null
)
{
if
(
oldValue
==
null
)
{
return
ObjectRestResponse
.
createFailedResult
(
ResCode
.
ORDER_IS_NOT_EXIST
.
getCode
(),
ResCode
.
ORDER_IS_NOT_EXIST
.
getDesc
());
return
ObjectRestResponse
.
createFailedResult
(
ResCode
.
ORDER_IS_NOT_EXIST
.
getCode
(),
ResCode
.
ORDER_IS_NOT_EXIST
.
getDesc
());
}
}
stringBuilder
.
append
(
"修改订单和预定记录还车公司成功, 订单ID:"
);
stringBuilder
.
append
(
"修改订单和预定记录还车公司成功, 订单ID:"
);
stringBuilder
.
append
(
oldValue
.
getOrderId
());
stringBuilder
.
append
(
oldValue
.
getOrderId
());
stringBuilder
.
append
(
"; 原还车公司ID: "
);
stringBuilder
.
append
(
"; 原还车公司ID: "
);
stringBuilder
.
append
(
oldValue
.
getEndCompanyId
());
stringBuilder
.
append
(
oldValue
.
getEndCompanyId
());
stringBuilder
.
append
(
"; 更新后还车公司ID: "
);
stringBuilder
.
append
(
"; 更新后还车公司ID: "
);
stringBuilder
.
append
(
orderRentVehicleDetail
.
getEndCompanyId
());
stringBuilder
.
append
(
orderRentVehicleDetail
.
getEndCompanyId
());
stringBuilder
.
append
(
"; 操作人ID:"
);
stringBuilder
.
append
(
"; 操作人ID:"
);
stringBuilder
.
append
(
userDTO
.
getId
());
stringBuilder
.
append
(
userDTO
.
getId
());
stringBuilder
.
append
(
"; 操作人账号:"
);
stringBuilder
.
append
(
"; 操作人账号:"
);
stringBuilder
.
append
(
userDTO
.
getUsername
());
stringBuilder
.
append
(
userDTO
.
getUsername
());
//添加修改记录实体
//添加修改记录实体
BookRecordUpdateLog
bookRecordUpdateLog
=
new
BookRecordUpdateLog
();
BookRecordUpdateLog
bookRecordUpdateLog
=
new
BookRecordUpdateLog
();
bookRecordUpdateLog
.
setBookRecordId
(
oldValue
.
getBookRecordId
());
bookRecordUpdateLog
.
setBookRecordId
(
oldValue
.
getBookRecordId
());
bookRecordUpdateLog
.
setOldRetCompanyId
(
oldValue
.
getEndCompanyId
());
bookRecordUpdateLog
.
setOldRetCompanyId
(
oldValue
.
getEndCompanyId
());
bookRecordUpdateLog
.
setNewRetCompanyId
(
orderRentVehicleDetail
.
getEndCompanyId
());
bookRecordUpdateLog
.
setNewRetCompanyId
(
orderRentVehicleDetail
.
getEndCompanyId
());
bookRecordUpdateLog
.
setOperaterId
(
userDTO
.
getId
());
bookRecordUpdateLog
.
setOperaterId
(
userDTO
.
getId
());
bookRecordUpdateLog
.
setOperaterName
(
userDTO
.
getName
());
bookRecordUpdateLog
.
setOperaterName
(
userDTO
.
getName
());
bookRecordUpdateLog
.
setOrderId
(
oldValue
.
getOrderId
());
bookRecordUpdateLog
.
setOrderId
(
oldValue
.
getOrderId
());
bookRecordUpdateLog
.
setCreateTime
(
new
Date
());
bookRecordUpdateLog
.
setCreateTime
(
new
Date
());
BeanUtil
.
copyProperties
(
orderRentVehicleDetail
,
oldValue
,
CopyOptions
.
create
().
setIgnoreNullValue
(
true
).
setIgnoreError
(
true
));
BeanUtil
.
copyProperties
(
orderRentVehicleDetail
,
oldValue
,
CopyOptions
.
create
().
setIgnoreNullValue
(
true
).
setIgnoreError
(
true
));
CompanyDetail
companyDetail
=
vehicleFeign
.
getCompanyDetail
(
orderRentVehicleDetail
.
getEndCompanyId
()).
getData
();
CompanyDetail
companyDetail
=
vehicleFeign
.
getCompanyDetail
(
orderRentVehicleDetail
.
getEndCompanyId
()).
getData
();
if
(
companyDetail
!=
null
)
{
if
(
companyDetail
!=
null
)
{
oldValue
.
setEndCity
(
companyDetail
.
getAddrCity
());
oldValue
.
setEndCity
(
companyDetail
.
getAddrCity
());
oldValue
.
setEndAddr
(
companyDetail
.
detailAddr
());
oldValue
.
setEndAddr
(
companyDetail
.
detailAddr
());
}
}
oldValue
.
setEndCompanyId
(
orderRentVehicleDetail
.
getEndCompanyId
());
oldValue
.
setEndCompanyId
(
orderRentVehicleDetail
.
getEndCompanyId
());
orderRentVehicleBiz
.
updateSelectiveByIdRe
(
oldValue
);
orderRentVehicleBiz
.
updateSelectiveByIdRe
(
oldValue
);
ObjectRestResponse
objectRestResponse
=
vehicleFeign
.
update
(
bookRecordUpdateLog
);
ObjectRestResponse
objectRestResponse
=
vehicleFeign
.
update
(
bookRecordUpdateLog
);
if
(
objectRestResponse
!=
null
&&
objectRestResponse
.
getRel
())
{
if
(
objectRestResponse
!=
null
&&
objectRestResponse
.
getRel
())
{
log
.
info
(
stringBuilder
.
toString
());
log
.
info
(
stringBuilder
.
toString
());
return
ObjectRestResponse
.
succ
();
return
ObjectRestResponse
.
succ
();
}
}
return
ObjectRestResponse
.
createFailedResult
(
1355
,
"修改失败!"
);
return
ObjectRestResponse
.
createFailedResult
(
1355
,
"修改失败!"
);
}
}
/**
/**
* 获取订单详情,包含驾驶人信息,违约金等信息
* 获取订单详情,包含驾驶人信息,违约金等信息
* @param no
*
* @return
* @param no
*/
* @return
public
ObjectRestResponse
<
OrderPageVO
>
getOrderDetail
(
String
no
)
{
*/
OrderPageVO
orderPageVo
=
mapper
.
getOrderDetail
(
no
);
public
ObjectRestResponse
<
OrderPageVO
>
getOrderDetail
(
String
no
)
{
if
(
orderPageVo
==
null
)
{
OrderPageVO
orderPageVo
=
mapper
.
getOrderDetail
(
no
);
return
ObjectRestResponse
.
createFailedResult
(
ResCode
.
ORDER_IS_NOT_EXIST
.
getCode
(),
ResCode
.
ORDER_IS_NOT_EXIST
.
getDesc
());
if
(
orderPageVo
==
null
)
{
}
return
ObjectRestResponse
.
createFailedResult
(
ResCode
.
ORDER_IS_NOT_EXIST
.
getCode
(),
ResCode
.
ORDER_IS_NOT_EXIST
.
getDesc
());
if
(
orderPageVo
.
getOrderRentVehicleDetail
()
!=
null
)
{
}
if
(
orderPageVo
.
getStatus
()
==
4
)
{
//未交车
if
(
orderPageVo
.
getOrderRentVehicleDetail
()
!=
null
)
{
if
(
orderPageVo
.
getStatus
()
==
4
)
{
//未交车
// boolean flag = getTodayTime(orderPageVo.getOrderRentVehicleDetail().getStartTime());
// boolean flag = getTodayTime(orderPageVo.getOrderRentVehicleDetail().getStartTime());
// if (!flag) {
// if (!flag) {
// return ObjectRestResponse.createFailedResult(3501, "今日不是交车日期");
// return ObjectRestResponse.createFailedResult(3501, "今日不是交车日期");
// }
// }
getDriverInfo
(
orderPageVo
);
getDriverInfo
(
orderPageVo
);
}
else
if
(
orderPageVo
.
getStatus
()
>=
5
||
orderPageVo
.
getStatus
()
==
-
1
)
{
//出行中 已交车
}
else
if
(
orderPageVo
.
getStatus
()
>=
5
||
orderPageVo
.
getStatus
()
==
-
1
)
{
//出行中 已交车
getDriverInfo
(
orderPageVo
);
getDriverInfo
(
orderPageVo
);
getUserLicense
(
orderPageVo
);
getUserLicense
(
orderPageVo
);
}
}
RestResponse
<
Vehicle
>
restResponse
=
vehicleFeign
.
findById
(
orderPageVo
.
getOrderRentVehicleDetail
().
getVehicleId
());
RestResponse
<
Vehicle
>
restResponse
=
vehicleFeign
.
findById
(
orderPageVo
.
getOrderRentVehicleDetail
().
getVehicleId
());
if
(
restResponse
.
getData
()
!=
null
)
{
if
(
restResponse
.
getData
()
!=
null
)
{
orderPageVo
.
setVehicalNumberPlat
(
restResponse
.
getData
().
getNumberPlate
());
orderPageVo
.
setVehicalNumberPlat
(
restResponse
.
getData
().
getNumberPlate
());
}
}
}
else
if
(
orderPageVo
.
getOrderTourDetail
()
!=
null
)
{
}
else
if
(
orderPageVo
.
getOrderTourDetail
()
!=
null
)
{
if
(
StringUtils
.
isNotBlank
(
orderPageVo
.
getOrderTourDetail
().
getTourUserIds
()))
{
if
(
StringUtils
.
isNotBlank
(
orderPageVo
.
getOrderTourDetail
().
getTourUserIds
()))
{
List
<
TourUser
>
list
=
tourFeign
.
getTourUsers
(
orderPageVo
.
getOrderTourDetail
().
getTourUserIds
()).
getData
();
List
<
TourUser
>
list
=
tourFeign
.
getTourUsers
(
orderPageVo
.
getOrderTourDetail
().
getTourUserIds
()).
getData
();
orderPageVo
.
getOrderTourDetail
().
setUserVoList
(
list
==
null
||
list
.
size
()
<=
0
?
new
ArrayList
<>()
:
list
);
orderPageVo
.
getOrderTourDetail
().
setUserVoList
(
list
==
null
||
list
.
size
()
<=
0
?
new
ArrayList
<>()
:
list
);
}
}
}
}
//设置保留金
//设置保留金
Map
<
String
,
Dictionary
>
dictionaryMap
=
thirdFeign
.
dictionaryGetAll4Map
().
getData
();
Map
<
String
,
Dictionary
>
dictionaryMap
=
thirdFeign
.
dictionaryGetAll4Map
().
getData
();
BigDecimal
illegalReserve
=
new
BigDecimal
(
dictionaryMap
.
get
(
APP_ORDER
+
"_"
+
DictionaryKey
.
ILLEGAL_RESERVE
).
getDetail
());
BigDecimal
illegalReserve
=
new
BigDecimal
(
dictionaryMap
.
get
(
APP_ORDER
+
"_"
+
DictionaryKey
.
ILLEGAL_RESERVE
).
getDetail
());
orderPageVo
.
setIllegalReserve
(
illegalReserve
);
orderPageVo
.
setIllegalReserve
(
illegalReserve
);
orderPageVo
.
setItems
(
orderItemBiz
.
selectList
(
new
OrderItem
(){{
orderPageVo
.
setItems
(
orderItemBiz
.
selectList
(
new
OrderItem
()
{{
setOrderId
(
orderPageVo
.
getId
());
setOrderId
(
orderPageVo
.
getId
());
}}));
}}));
return
ObjectRestResponse
.
succ
(
orderPageVo
);
return
ObjectRestResponse
.
succ
(
orderPageVo
);
}
}
/**
* 支付回调处理
*
* @param orderNo
* @param tradeNo
*/
@Transactional
public
void
payNotifyHandle
(
String
orderNo
,
String
tradeNo
,
Integer
type
,
Integer
payWay
)
{
OrderRentVehicleDetail
orvd
=
new
OrderRentVehicleDetail
();
OrderTourDetail
otd
=
new
OrderTourDetail
();
OrderMemberDetail
omd
=
new
OrderMemberDetail
();
BaseOrder
baseOrder
=
this
.
selectOne
(
new
BaseOrder
()
{{
setNo
(
orderNo
);
}});
if
(
OrderStatusEnum
.
ORDER_UNPAY
.
getCode
().
equals
(
baseOrder
.
getStatus
())
&&
baseOrder
.
getHasPay
().
equals
(
SYS_FALSE
))
{
BaseOrder
updateOrder
=
new
BaseOrder
()
{{
setId
(
baseOrder
.
getId
());
setOutTradeNo
(
tradeNo
);
setHasPay
(
SYS_TRUE
);
setPayTime
(
System
.
currentTimeMillis
());
setPayOrigin
(
type
);
setPayWay
(
payWay
);
setVersion
(
baseOrder
.
getVersion
());
}};
//订单账款类
OrderAccountDetail
oad
=
new
OrderAccountDetail
();
oad
.
setOriginOrderAmount
(
baseOrder
.
getGoodsAmount
().
subtract
(
baseOrder
.
getCouponAmount
()));
//账单的的orderAmount 对应 的是商品金额
oad
.
setOrderAmount
(
baseOrder
.
getGoodsAmount
().
subtract
(
baseOrder
.
getCouponAmount
()));
//如果是会员订单,则触发会员效益
if
(
OrderTypeEnum
.
MEMBER
.
getCode
().
equals
(
baseOrder
.
getType
()))
{
//直接设置订单完成
updateOrder
.
setStatus
(
OrderStatusEnum
.
ORDER_FINISH
.
getCode
());
omd
=
orderMemberDetailBiz
.
selectOne
(
new
OrderMemberDetail
()
{{
setOrderId
(
baseOrder
.
getId
());
}});
//触发会员效益
UserMemberDTO
userMemberDTO
=
new
UserMemberDTO
()
{{
setUserId
(
baseOrder
.
getUserId
());
setIsBind
(
ISBIND_BIND
);
}};
userMemberDTO
.
setMemberLevel
(
omd
.
getMemberLevel
());
userMemberDTO
.
setRentFreeDays
(
omd
.
getRentFreeNum
());
userMemberDTO
.
setTotalNumber
(
omd
.
getRentFreeNum
());
userMemberDTO
.
setDiscount
(
omd
.
getRebate
());
ObjectRestResponse
orr
=
userFeign
.
buyMember
(
userMemberDTO
);
log
.
info
(
"orr.getStatus() : "
+
orr
.
getStatus
());
}
else
if
(
OrderTypeEnum
.
RENT_VEHICLE
.
getCode
().
equals
(
baseOrder
.
getType
()))
{
updateOrder
.
setStatus
(
OrderStatusEnum
.
ORDER_TOSTART
.
getCode
());
orvd
=
orderRentVehicleBiz
.
selectOne
(
new
OrderRentVehicleDetail
()
{{
setOrderId
(
baseOrder
.
getId
());
}});
//账款设置押金
oad
.
setOriginDepositAmount
(
orvd
.
getDeposit
());
oad
.
setDepositAmount
(
orvd
.
getDeposit
());
//车辆预定审核通过
RestResponse
<
Integer
>
result
=
vehicleFeign
.
rentProveVehicleBooking
(
orvd
.
getBookRecordId
());
//确认免费天数
if
(
orvd
.
getFreeDays
()
>
0
)
{
userFeign
.
memberDays
(
baseOrder
.
getUserId
(),
orvd
.
getFreeDays
(),
UserFeign
.
MEMBER_DAYS_CONFIRM
);
}
}
else
if
(
OrderTypeEnum
.
TOUR
.
getCode
().
equals
(
baseOrder
.
getType
()))
{
updateOrder
.
setStatus
(
OrderStatusEnum
.
ORDER_TOSTART
.
getCode
());
otd
=
orderTourDetailBiz
.
selectOne
(
new
OrderTourDetail
()
{{
setOrderId
(
baseOrder
.
getId
());
}});
//站点总人数添加
tourFeign
.
updateTourGoodPersonNum
(
otd
.
getVerificationId
(),
TourFeign
.
TOTAL_PERSON
,
otd
.
getTotalNumber
());
}
try
{
this
.
updateSelectiveByIdRe
(
updateOrder
);
//记录订单账款记录
Integer
flag
=
orderAccountBiz
.
addOrderAccount
(
baseOrder
.
getId
(),
"订单支付"
,
oad
.
getOriginOrderAmount
().
add
(
oad
.
getOriginDepositAmount
()),
oad
.
getOrderAmount
().
add
(
oad
.
getDepositAmount
()),
tradeNo
,
AccountTypeEnum
.
IN_ORDER_PAY
.
getCode
(),
JSONUtil
.
toJsonStr
(
oad
));
}
finally
{
AppUserDTO
appUserDTO
=
userFeign
.
userDetailById
(
baseOrder
.
getUserId
()).
getData
();
/**
//处理App用户提醒短信的发送
* 支付回调处理
*
* @param orderNo
* @param tradeNo
*/
@Transactional
public
void
payNotifyHandle
(
String
orderNo
,
String
tradeNo
,
Integer
type
,
Integer
payWay
)
{
OrderRentVehicleDetail
orvd
=
new
OrderRentVehicleDetail
();
OrderTourDetail
otd
=
new
OrderTourDetail
();
OrderMemberDetail
omd
=
new
OrderMemberDetail
();
BaseOrder
baseOrder
=
this
.
selectOne
(
new
BaseOrder
()
{{
setNo
(
orderNo
);
}});
if
(
OrderStatusEnum
.
ORDER_UNPAY
.
getCode
().
equals
(
baseOrder
.
getStatus
())
&&
baseOrder
.
getHasPay
().
equals
(
SYS_FALSE
))
{
BaseOrder
updateOrder
=
new
BaseOrder
()
{{
setId
(
baseOrder
.
getId
());
setOutTradeNo
(
tradeNo
);
setHasPay
(
SYS_TRUE
);
setPayTime
(
System
.
currentTimeMillis
());
setPayOrigin
(
type
);
setPayWay
(
payWay
);
setVersion
(
baseOrder
.
getVersion
());
}};
//订单账款类
OrderAccountDetail
oad
=
new
OrderAccountDetail
();
oad
.
setOriginOrderAmount
(
baseOrder
.
getGoodsAmount
().
subtract
(
baseOrder
.
getCouponAmount
()));
//账单的的orderAmount 对应 的是商品金额
oad
.
setOrderAmount
(
baseOrder
.
getGoodsAmount
().
subtract
(
baseOrder
.
getCouponAmount
()));
//如果是会员订单,则触发会员效益
if
(
OrderTypeEnum
.
MEMBER
.
getCode
().
equals
(
baseOrder
.
getType
()))
{
//直接设置订单完成
updateOrder
.
setStatus
(
OrderStatusEnum
.
ORDER_FINISH
.
getCode
());
omd
=
orderMemberDetailBiz
.
selectOne
(
new
OrderMemberDetail
()
{{
setOrderId
(
baseOrder
.
getId
());
}});
//触发会员效益
UserMemberDTO
userMemberDTO
=
new
UserMemberDTO
()
{{
setUserId
(
baseOrder
.
getUserId
());
setIsBind
(
ISBIND_BIND
);
}};
userMemberDTO
.
setMemberLevel
(
omd
.
getMemberLevel
());
userMemberDTO
.
setRentFreeDays
(
omd
.
getRentFreeNum
());
userMemberDTO
.
setTotalNumber
(
omd
.
getRentFreeNum
());
userMemberDTO
.
setDiscount
(
omd
.
getRebate
());
ObjectRestResponse
orr
=
userFeign
.
buyMember
(
userMemberDTO
);
log
.
info
(
"orr.getStatus() : "
+
orr
.
getStatus
());
}
else
if
(
OrderTypeEnum
.
RENT_VEHICLE
.
getCode
().
equals
(
baseOrder
.
getType
()))
{
updateOrder
.
setStatus
(
OrderStatusEnum
.
ORDER_TOSTART
.
getCode
());
orvd
=
orderRentVehicleBiz
.
selectOne
(
new
OrderRentVehicleDetail
()
{{
setOrderId
(
baseOrder
.
getId
());
}});
//账款设置押金
oad
.
setOriginDepositAmount
(
orvd
.
getDeposit
());
oad
.
setDepositAmount
(
orvd
.
getDeposit
());
//车辆预定审核通过
RestResponse
<
Integer
>
result
=
vehicleFeign
.
rentProveVehicleBooking
(
orvd
.
getBookRecordId
());
//确认免费天数
if
(
orvd
.
getFreeDays
()
>
0
)
{
userFeign
.
memberDays
(
baseOrder
.
getUserId
(),
orvd
.
getFreeDays
(),
UserFeign
.
MEMBER_DAYS_CONFIRM
);
}
}
else
if
(
OrderTypeEnum
.
TOUR
.
getCode
().
equals
(
baseOrder
.
getType
()))
{
updateOrder
.
setStatus
(
OrderStatusEnum
.
ORDER_TOSTART
.
getCode
());
otd
=
orderTourDetailBiz
.
selectOne
(
new
OrderTourDetail
()
{{
setOrderId
(
baseOrder
.
getId
());
}});
//站点总人数添加
tourFeign
.
updateTourGoodPersonNum
(
otd
.
getVerificationId
(),
TourFeign
.
TOTAL_PERSON
,
otd
.
getTotalNumber
());
}
try
{
this
.
updateSelectiveByIdRe
(
updateOrder
);
//记录订单账款记录
Integer
flag
=
orderAccountBiz
.
addOrderAccount
(
baseOrder
.
getId
(),
"订单支付"
,
oad
.
getOriginOrderAmount
().
add
(
oad
.
getOriginDepositAmount
()),
oad
.
getOrderAmount
().
add
(
oad
.
getDepositAmount
()),
tradeNo
,
AccountTypeEnum
.
IN_ORDER_PAY
.
getCode
(),
JSONUtil
.
toJsonStr
(
oad
));
}
finally
{
AppUserDTO
appUserDTO
=
userFeign
.
userDetailById
(
baseOrder
.
getUserId
()).
getData
();
//处理App用户提醒短信的发送
// orderMsgBiz.handelAppUserMsg(orvd, omd, baseOrder, appUserDTO);
// orderMsgBiz.handelAppUserMsg(orvd, omd, baseOrder, appUserDTO);
orderMsgBiz
.
handelMsgPayNew
(
orvd
,
otd
,
omd
,
baseOrder
,
appUserDTO
);
orderMsgBiz
.
handelMsgPayNew
(
orvd
,
otd
,
omd
,
baseOrder
,
appUserDTO
);
//处理后台用户提醒短信的发送
//处理后台用户提醒短信的发送
// orderMsgBiz.handelBgUserMsg4Pay(orvd, baseOrder, appUserDTO, OrderMsgBiz.RENT_PAY);
// orderMsgBiz.handelBgUserMsg4Pay(orvd, baseOrder, appUserDTO, OrderMsgBiz.RENT_PAY);
sendOrderMq
(
orvd
,
otd
,
omd
,
baseOrder
,
OrderMQDTO
.
ORDER_PAY
);
sendOrderMq
(
orvd
,
otd
,
omd
,
baseOrder
,
OrderMQDTO
.
ORDER_PAY
);
if
(
OrderTypeEnum
.
MEMBER
.
getCode
().
equals
(
baseOrder
.
getType
()))
{
if
(
OrderTypeEnum
.
MEMBER
.
getCode
().
equals
(
baseOrder
.
getType
()))
{
sendOrderMq
(
orvd
,
otd
,
omd
,
baseOrder
,
OrderMQDTO
.
ORDER_FINISH
);
sendOrderMq
(
orvd
,
otd
,
omd
,
baseOrder
,
OrderMQDTO
.
ORDER_FINISH
);
}
}
}
}
}
else
{
}
else
{
log
.
error
(
" order has payed , orderNo:{}, tradeNo:{} "
,
orderNo
,
tradeNo
);
log
.
error
(
" order has payed , orderNo:{}, tradeNo:{} "
,
orderNo
,
tradeNo
);
}
}
}
}
public
void
sendOrderMq
(
OrderRentVehicleDetail
orvd
,
OrderTourDetail
otd
,
OrderMemberDetail
omd
,
BaseOrder
baseOrder
,
Integer
sign
)
{
//发送队列消息
OrderMQDTO
orderMQDTO
=
BeanUtil
.
toBean
(
baseOrder
,
OrderMQDTO
.
class
);
orderMQDTO
.
setOrderRentVehicleDetail
(
orvd
);
orderMQDTO
.
setOrderTourDetail
(
otd
);
orderMQDTO
.
setOrderMemberDetail
(
omd
);
//获取item
public
void
sendOrderMq
(
OrderRentVehicleDetail
orvd
,
OrderTourDetail
otd
,
OrderMemberDetail
omd
,
BaseOrder
baseOrder
,
Integer
sign
)
{
orderMQDTO
.
setItems
(
orderItemBiz
.
selectList
(
new
OrderItem
()
{{
//发送队列消息
setOrderId
(
baseOrder
.
getId
());
OrderMQDTO
orderMQDTO
=
BeanUtil
.
toBean
(
baseOrder
,
OrderMQDTO
.
class
);
}}));
orderMQDTO
.
setOrderRentVehicleDetail
(
orvd
);
orderMQDTO
.
setOrderTourDetail
(
otd
);
orderMQDTO
.
setOrderMemberDetail
(
omd
);
sendQueue
(
orderMQDTO
,
sign
);
//获取item
}
orderMQDTO
.
setItems
(
orderItemBiz
.
selectList
(
new
OrderItem
()
{{
setOrderId
(
baseOrder
.
getId
());
}}));
@Override
sendQueue
(
orderMQDTO
,
sign
);
public
void
updateSelectiveById
(
BaseOrder
entity
)
{
}
super
.
updateSelectiveById
(
entity
);
}
/**
@Override
* 更新(不成功抛异常)
public
void
updateSelectiveById
(
BaseOrder
entity
)
{
*
super
.
updateSelectiveById
(
entity
);
* @param baseOrder
}
* @return
*/
public
BaseOrder
updateSelectiveByIdReT
(
BaseOrder
baseOrder
)
{
return
updateSelectiveByIdReT
(
baseOrder
,
false
);
}
/**
/**
* 更新(不成功抛异常)
* 更新(不成功抛异常)
*
*
* @param baseOrder
* @param baseOrder
* @return
* @return
*/
*/
public
BaseOrder
updateSelectiveByIdReT
(
BaseOrder
baseOrder
,
boolean
needVersion
)
{
public
BaseOrder
updateSelectiveByIdReT
(
BaseOrder
baseOrder
)
{
if
(
needVersion
)
{
return
updateSelectiveByIdReT
(
baseOrder
,
false
);
baseOrder
.
setVersion
(
selectById
(
baseOrder
.
getId
()).
getVersion
());
}
}
if
(
updateSelectiveByIdRe
(
baseOrder
)
>
0
)
{
return
selectById
(
baseOrder
.
getId
());
}
else
{
log
.
error
(
StrUtil
.
format
(
"数据更新失败:baseOrder: {}"
,
JSONUtil
.
toJsonStr
(
baseOrder
)));
throw
new
BaseException
(
ResultCode
.
DB_OPERATION_FAIL_CODE
);
}
}
/**
* 更新(不成功抛异常)
*
* @param baseOrder
* @return
*/
public
BaseOrder
updateSelectiveByIdReT
(
BaseOrder
baseOrder
,
boolean
needVersion
)
{
if
(
needVersion
)
{
baseOrder
.
setVersion
(
selectById
(
baseOrder
.
getId
()).
getVersion
());
}
if
(
updateSelectiveByIdRe
(
baseOrder
)
>
0
)
{
return
selectById
(
baseOrder
.
getId
());
}
else
{
log
.
error
(
StrUtil
.
format
(
"数据更新失败:baseOrder: {}"
,
JSONUtil
.
toJsonStr
(
baseOrder
)));
throw
new
BaseException
(
ResultCode
.
DB_OPERATION_FAIL_CODE
);
}
}
// /**
// /**
...
@@ -834,86 +843,94 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
...
@@ -834,86 +843,94 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
// }
// }
// }
// }
public
boolean
getTodayTime
(
Long
time
)
{
public
boolean
getTodayTime
(
Long
time
)
{
Long
startTime
=
getDayStart
();
Long
startTime
=
getDayStart
();
if
(
time
>=
startTime
&&
time
<=
startTime
+
24
*
60
*
60
*
1000
-
1
)
{
if
(
time
>=
startTime
&&
time
<=
startTime
+
24
*
60
*
60
*
1000
-
1
)
{
return
true
;
return
true
;
}
}
return
false
;
return
false
;
}
}
public
static
Long
getDayStart
()
{
public
static
Long
getDayStart
()
{
long
current
=
System
.
currentTimeMillis
();
long
current
=
System
.
currentTimeMillis
();
long
zero
=
current
/
(
1000
*
3600
*
24
)
*
(
1000
*
3600
*
24
)
-
TimeZone
.
getDefault
().
getRawOffset
();
long
zero
=
current
/
(
1000
*
3600
*
24
)
*
(
1000
*
3600
*
24
)
-
TimeZone
.
getDefault
().
getRawOffset
();
return
zero
;
return
zero
;
}
}
private
void
sendQueue
(
OrderMQDTO
orderMQDTO
,
Integer
sign
)
{
private
void
sendQueue
(
OrderMQDTO
orderMQDTO
,
Integer
sign
)
{
try
{
try
{
orderMQDTO
.
setSign
(
sign
);
orderMQDTO
.
setSign
(
sign
);
SendMsgDTO
sendMsgDTO
=
new
SendMsgDTO
()
{{
SendMsgDTO
sendMsgDTO
=
new
SendMsgDTO
()
{{
setExchange
(
ORDER_TOPIC
);
setExchange
(
ORDER_TOPIC
);
}};
}};
sendMsgDTO
.
setJson
(
JSONUtil
.
toJsonStr
(
orderMQDTO
));
sendMsgDTO
.
setJson
(
JSONUtil
.
toJsonStr
(
orderMQDTO
));
switch
(
sign
)
{
switch
(
sign
)
{
case
2
:
case
2
:
sendMsgDTO
.
setRoutKey
(
KEY_ORDER_CANCEL
);
sendMsgDTO
.
setRoutKey
(
KEY_ORDER_CANCEL
);
break
;
break
;
case
4
:
case
4
:
sendMsgDTO
.
setRoutKey
(
KEY_ORDER_PAY
);
sendMsgDTO
.
setRoutKey
(
KEY_ORDER_PAY
);
break
;
break
;
case
6
:
case
6
:
sendMsgDTO
.
setRoutKey
(
KEY_ORDER_FINLISH
);
sendMsgDTO
.
setRoutKey
(
KEY_ORDER_FINLISH
);
break
;
break
;
case
101
:
case
101
:
sendMsgDTO
.
setRoutKey
(
KEY_ORDER_PART_DEPOSIT
);
sendMsgDTO
.
setRoutKey
(
KEY_ORDER_PART_DEPOSIT
);
break
;
break
;
default
:
default
:
break
;
break
;
}
}
mqSenderFeign
.
postSendMessage
(
sendMsgDTO
);
mqSenderFeign
.
postSendMessage
(
sendMsgDTO
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
log
.
error
(
e
.
getMessage
(),
e
);
}
}
}
}
public
Query
initQuery
(
String
no
)
{
public
Query
initQuery
(
String
no
)
{
QueryOrderDetailDTO
qodd
=
new
QueryOrderDetailDTO
();
QueryOrderDetailDTO
qodd
=
new
QueryOrderDetailDTO
();
//qodd.setCrtUser(Integer.valueOf(BaseContextHandler.getUserID()));
//qodd.setCrtUser(Integer.valueOf(BaseContextHandler.getUserID()));
qodd
.
setUserId
(
Integer
.
valueOf
(
BaseContextHandler
.
getUserID
()));
qodd
.
setUserId
(
Integer
.
valueOf
(
BaseContextHandler
.
getUserID
()));
qodd
.
setNo
(
no
);
qodd
.
setNo
(
no
);
qodd
.
setLimit
(
1
);
qodd
.
setLimit
(
1
);
qodd
.
setPage
(
1
);
qodd
.
setPage
(
1
);
Query
query
=
new
Query
(
qodd
);
Query
query
=
new
Query
(
qodd
);
return
query
;
return
query
;
}
}
@Override
public
Query
initBgQuery
(
String
no
)
{
public
UserFeign
getUserFeign
()
{
Query
query
=
initQuery
(
no
);
return
userFeign
;
query
.
put
(
"crtUser"
,
null
);
}
query
.
put
(
"userId"
,
null
);
return
query
;
}
/**
@Override
* 订单查询类
public
UserFeign
getUserFeign
()
{
*/
return
userFeign
;
@Data
}
public
static
class
QueryOrderDetailDTO
extends
QueryOrderDTO
{
private
String
no
;
}
/**
/**
* 获取退还优惠卷
* 订单查询类
* @param orderId
*/
*/
@Data
public
List
<
Coupon
>
getReturnCouponByOrderId
(
Integer
orderId
)
{
public
static
class
QueryOrderDetailDTO
extends
QueryOrderDTO
{
BaseOrder
baseOrder
=
mapper
.
selectByPrimaryKey
(
orderId
);
private
String
no
;
String
backCoupon
=
baseOrder
.
getBackCoupon
();
}
if
(
StringUtils
.
isNotBlank
(
backCoupon
))
{
String
[]
couponArray
=
backCoupon
.
split
(
","
);
/**
return
activityFeign
.
couponsByTickerNoList
(
Lists
.
newArrayList
(
couponArray
));
* 获取退还优惠卷
}
*
return
Lists
.
newArrayList
();
* @param orderId
}
*/
public
List
<
Coupon
>
getReturnCouponByOrderId
(
Integer
orderId
)
{
BaseOrder
baseOrder
=
mapper
.
selectByPrimaryKey
(
orderId
);
String
backCoupon
=
baseOrder
.
getBackCoupon
();
if
(
StringUtils
.
isNotBlank
(
backCoupon
))
{
String
[]
couponArray
=
backCoupon
.
split
(
","
);
return
activityFeign
.
couponsByTickerNoList
(
Lists
.
newArrayList
(
couponArray
));
}
return
Lists
.
newArrayList
();
}
public
List
<
OrderDTO
>
selectOrdersByTypeAndTime
(
List
<
Integer
>
types
,
Integer
hasPay
,
Date
startDate
,
Date
endDate
)
{
public
List
<
OrderDTO
>
selectOrdersByTypeAndTime
(
List
<
Integer
>
types
,
Integer
hasPay
,
Date
startDate
,
Date
endDate
)
{
List
<
OrderDTO
>
orderDTOS
=
mapper
.
selectOrdersByTypeAndTime
(
types
,
hasPay
,
startDate
,
endDate
);
List
<
OrderDTO
>
orderDTOS
=
mapper
.
selectOrdersByTypeAndTime
(
types
,
hasPay
,
startDate
,
endDate
);
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderAccountBiz.java
View file @
6d051ed4
...
@@ -31,6 +31,7 @@ import com.xxfc.platform.order.pojo.mq.OrderMQDTO;
...
@@ -31,6 +31,7 @@ import com.xxfc.platform.order.pojo.mq.OrderMQDTO;
import
com.xxfc.platform.order.pojo.order.VehicleItemDTO
;
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.order.pojo.price.DelayAddPriceVO
;
import
com.xxfc.platform.universal.constant.DictionaryKey
;
import
com.xxfc.platform.universal.constant.DictionaryKey
;
import
com.xxfc.platform.universal.entity.Dictionary
;
import
com.xxfc.platform.universal.entity.Dictionary
;
import
com.xxfc.platform.universal.feign.ThirdFeign
;
import
com.xxfc.platform.universal.feign.ThirdFeign
;
...
@@ -108,8 +109,10 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
...
@@ -108,8 +109,10 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
* @param orderViolateCoverAmount 订单违约金覆盖值
* @param orderViolateCoverAmount 订单违约金覆盖值
* @param depositViolateCoverAmount 押金违约金覆盖值
* @param depositViolateCoverAmount 押金违约金覆盖值
*/
*/
public
BigDecimal
rentRefundProcessCancel
(
BaseOrder
baseOrder
,
BigDecimal
orderDeductSource
,
Long
timeLag
,
String
dicParentKey
,
BigDecimal
depositAmount
,
BigDecimal
depositDeductSource
public
BigDecimal
rentRefundProcessCancel
(
BaseOrder
baseOrder
,
BigDecimal
orderDeductSource
,
Long
timeLag
,
OrderAccountDetail
oad
,
BigDecimal
topAmount
,
BigDecimal
orderViolateCoverAmount
,
BigDecimal
depositViolateCoverAmount
)
{
,
String
dicParentKey
,
BigDecimal
depositAmount
,
BigDecimal
depositDeductSource
,
OrderAccountDetail
oad
,
BigDecimal
topAmount
,
BigDecimal
orderViolateCoverAmount
,
BigDecimal
depositViolateCoverAmount
,
Boolean
noDeduct
)
{
//原来退款 和 最终退款
//原来退款 和 最终退款
BigDecimal
originalRefundAmount
=
BigDecimal
.
ZERO
;
BigDecimal
originalRefundAmount
=
BigDecimal
.
ZERO
;
BigDecimal
refundAmount
=
BigDecimal
.
ZERO
;
BigDecimal
refundAmount
=
BigDecimal
.
ZERO
;
...
@@ -126,6 +129,11 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
...
@@ -126,6 +129,11 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
if
(
null
!=
orderDeductSource
&&
BigDecimal
.
ZERO
.
compareTo
(
orderDeductSource
)
<
0
)
{
if
(
null
!=
orderDeductSource
&&
BigDecimal
.
ZERO
.
compareTo
(
orderDeductSource
)
<
0
)
{
BigDecimal
orderDeductAmount
=
calculateDeduction
(
orderDeductSource
,
timeLag
,
dicParentKey
,
orderRefundDescBuilder
);
BigDecimal
orderDeductAmount
=
calculateDeduction
(
orderDeductSource
,
timeLag
,
dicParentKey
,
orderRefundDescBuilder
);
//如果属于免扣费情况
if
(
noDeduct
)
{
orderDeductAmount
=
BigDecimal
.
ZERO
;
orderRefundDescBuilder
=
new
StringBuilder
(
""
);
}
orderDeductAmount
=
orderDeductAmount
.
setScale
(
2
,
RoundingMode
.
HALF_UP
);
orderDeductAmount
=
orderDeductAmount
.
setScale
(
2
,
RoundingMode
.
HALF_UP
);
if
(
null
!=
orderViolateCoverAmount
)
{
if
(
null
!=
orderViolateCoverAmount
)
{
orderDeductAmount
=
orderViolateCoverAmount
;
orderDeductAmount
=
orderViolateCoverAmount
;
...
@@ -159,6 +167,11 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
...
@@ -159,6 +167,11 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
if
(
null
!=
depositDeductSource
&&
BigDecimal
.
ZERO
.
compareTo
(
depositDeductSource
)
<
0
)
{
if
(
null
!=
depositDeductSource
&&
BigDecimal
.
ZERO
.
compareTo
(
depositDeductSource
)
<
0
)
{
//通过原扣除款 计算剩余款
//通过原扣除款 计算剩余款
BigDecimal
depositDeductAmount
=
calculateDeduction
(
depositDeductSource
,
timeLag
,
dicParentKey
,
depositRefundDescBuilder
);
BigDecimal
depositDeductAmount
=
calculateDeduction
(
depositDeductSource
,
timeLag
,
dicParentKey
,
depositRefundDescBuilder
);
//如果属于免扣费情况
if
(
noDeduct
)
{
depositDeductAmount
=
BigDecimal
.
ZERO
;
depositRefundDescBuilder
=
new
StringBuilder
(
""
);
}
depositDeductAmount
=
depositDeductAmount
.
setScale
(
2
,
RoundingMode
.
HALF_UP
);
depositDeductAmount
=
depositDeductAmount
.
setScale
(
2
,
RoundingMode
.
HALF_UP
);
if
(
null
!=
orderViolateCoverAmount
)
{
if
(
null
!=
orderViolateCoverAmount
)
{
depositDeductAmount
=
orderViolateCoverAmount
;
depositDeductAmount
=
orderViolateCoverAmount
;
...
@@ -428,6 +441,11 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
...
@@ -428,6 +441,11 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
);
);
}
}
//还车扣除款 剩余的 钱,再减去违章预备金
oad
.
getDeductions
().
add
(
initDeduction
(
illegalReserve
,
"违章保证金"
,
DeductionTypeEnum
.
VIOLATE_TRAFFIC_KEEP
,
OrderAccountDeduction
.
ORIGIN_DEPOSIT
)
);
//剩余押金 = 押金 - 违章保证金 - 定损金额
//剩余押金 = 押金 - 违章保证金 - 定损金额
oad
.
setDepositAmount
(
oad
.
getDepositAmount
().
subtract
(
illegalReserve
).
subtract
(
csv
.
getDamagesAmount
()));
oad
.
setDepositAmount
(
oad
.
getDepositAmount
().
subtract
(
illegalReserve
).
subtract
(
csv
.
getDamagesAmount
()));
...
@@ -437,6 +455,7 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
...
@@ -437,6 +455,7 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
csv
.
setViolateDesc
(
""
);
csv
.
setViolateDesc
(
""
);
//处理更改之后的违约金及描述
//处理更改之后的违约金及描述
handleCrosstownDetail
(
crosstown
,
oad
,
csv
);
handleCrosstownDetail
(
crosstown
,
oad
,
csv
);
handleCrosstownDelayDetail
(
crosstown
,
oad
);
if
(
StrUtil
.
isBlank
(
csv
.
getViolateDesc
()))
{
if
(
StrUtil
.
isBlank
(
csv
.
getViolateDesc
()))
{
csv
.
setViolateDesc
(
inProgressVO
.
getViolateDesc
());
csv
.
setViolateDesc
(
inProgressVO
.
getViolateDesc
());
...
@@ -451,11 +470,6 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
...
@@ -451,11 +470,6 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
String
refundDesc
=
"退还车辆押金:"
+
refundAmont
.
toString
();
String
refundDesc
=
"退还车辆押金:"
+
refundAmont
.
toString
();
//还车扣除款 剩余的 钱,再减去违章预备金
oad
.
getDeductions
().
add
(
initDeduction
(
illegalReserve
,
"违章保证金"
,
DeductionTypeEnum
.
VIOLATE_TRAFFIC_KEEP
,
OrderAccountDeduction
.
ORIGIN_DEPOSIT
)
);
refundTrigger
(
orderMQDTO
,
orderMQDTO
.
getOrderRentVehicleDetail
(),
illegalReserve
,
originalRefundAmount
,
refundAmont
,
refundDesc
,
RefundStatusEnum
.
RESIDUE_ILLEGAL
.
getCode
(),
AccountTypeEnum
.
OUT_PART_DEPOSIT
,
oad
);
refundTrigger
(
orderMQDTO
,
orderMQDTO
.
getOrderRentVehicleDetail
(),
illegalReserve
,
originalRefundAmount
,
refundAmont
,
refundDesc
,
RefundStatusEnum
.
RESIDUE_ILLEGAL
.
getCode
(),
AccountTypeEnum
.
OUT_PART_DEPOSIT
,
oad
);
//修改押金退还记录状态
//修改押金退还记录状态
...
@@ -507,13 +521,13 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
...
@@ -507,13 +521,13 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
csv
.
setOverAmountList
(
inProgressVO
.
getOverAmountList
());
csv
.
setOverAmountList
(
inProgressVO
.
getOverAmountList
());
csv
.
setViolateAmountList
(
inProgressVO
.
getViolateAmountList
());
csv
.
setViolateAmountList
(
inProgressVO
.
getViolateAmountList
());
if
(
csv
.
getUsedDayNum
()
==
orderMQDTO
.
getOrderRentVehicleDetail
().
get
DayNum
())
{
if
(
csv
.
getUsedDayNum
()
==
orderMQDTO
.
getOrderRentVehicleDetail
().
obtainReal
DayNum
())
{
csv
.
setType
(
CostDetailExtend
.
FINLISH_ONTIME
);
csv
.
setType
(
CostDetailExtend
.
FINLISH_ONTIME
);
}
else
if
(
csv
.
getUsedDayNum
()
>
orderMQDTO
.
getOrderRentVehicleDetail
().
get
DayNum
()){
}
else
if
(
csv
.
getUsedDayNum
()
>
orderMQDTO
.
getOrderRentVehicleDetail
().
obtainReal
DayNum
()){
csv
.
setType
(
CostDetailExtend
.
FINLISH_DELAY
);
csv
.
setType
(
CostDetailExtend
.
FINLISH_DELAY
);
}
else
if
(
csv
.
getUsedDayNum
()
<
orderMQDTO
.
getOrderRentVehicleDetail
().
get
DayNum
()){
}
else
if
(
csv
.
getUsedDayNum
()
<
orderMQDTO
.
getOrderRentVehicleDetail
().
obtainReal
DayNum
()){
csv
.
setType
(
CostDetailExtend
.
FINLISH_ADVANCE
);
csv
.
setType
(
CostDetailExtend
.
FINLISH_ADVANCE
);
}
}
...
@@ -582,15 +596,58 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
...
@@ -582,15 +596,58 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
}
}
}
}
private
void
handleCrosstownDelayDetail
(
OrderVehicleCrosstown
crosstown
,
OrderAccountDetail
oad
)
{
try
{
if
(
null
!=
crosstown
.
getDelayVehicleDetail
())
{
//修改代码
List
<
DedDetailDTO
>
vios
=
JSONUtil
.
toList
(
JSONUtil
.
parseArray
(
crosstown
.
getDelayVehicleDetail
()),
DedDetailDTO
.
class
);
for
(
DedDetailDTO
vio
:
vios
)
{
if
(
OrderViolateEnum
.
DELAY_VEHICLE
.
getCode
().
equals
(
vio
.
getType
()))
{
Boolean
flag
=
Boolean
.
FALSE
;
for
(
OrderAccountDeduction
deduction
:
oad
.
getDeductions
())
{
if
(
DeductionTypeEnum
.
OTHER_DELAY_SAFE
.
getCode
().
equals
(
deduction
.
getType
()))
{
deduction
.
setName
(
vio
.
getDeductions
());
deduction
.
setAmount
(
vio
.
getCost
());
//修改归还押金金额
resetDeposit
(
oad
);
flag
=
Boolean
.
TRUE
;
break
;
}
}
//如果没有修改,则添加
if
(
Boolean
.
FALSE
.
equals
(
flag
))
{
OrderAccountDeduction
oadNew
=
initDeduction
(
vio
.
getCost
(),
vio
.
getDeductions
(),
DeductionTypeEnum
.
OTHER_DELAY_SAFE
,
OrderAccountDeduction
.
ORIGIN_DEPOSIT
);
oad
.
getDeductions
().
add
(
oadNew
);
//修改归还押金金额
resetDeposit
(
oad
);
}
}
}
}
}
catch
(
Exception
e
)
{
log
.
error
(
"crosstown.getDelayVehicleDetail() crosstown id :"
+
crosstown
.
getId
()
+
" 转换失败"
);
}
}
private
void
resetDeposit
(
OrderAccountDetail
oad
)
{
//修改归还押金金额
BigDecimal
toDeduction
=
oad
.
getDeductions
().
parallelStream
().
map
(
OrderAccountDeduction:
:
getAmount
).
reduce
(
BigDecimal
.
ZERO
,
BigDecimal:
:
add
);
oad
.
setDepositAmount
(
oad
.
getOriginDepositAmount
().
subtract
(
toDeduction
));
}
private
void
handleViolateDetail
(
DeductionTypeEnum
dte
,
OrderAccountDetail
oad
,
DedDetailDTO
vio
,
CancelStartedVO
csv
)
{
private
void
handleViolateDetail
(
DeductionTypeEnum
dte
,
OrderAccountDetail
oad
,
DedDetailDTO
vio
,
CancelStartedVO
csv
)
{
Boolean
flag
=
Boolean
.
FALSE
;
Boolean
flag
=
Boolean
.
FALSE
;
for
(
OrderAccountDeduction
deduction
:
oad
.
getDeductions
())
{
for
(
OrderAccountDeduction
deduction
:
oad
.
getDeductions
())
{
if
(
dte
.
getCode
().
equals
(
deduction
.
getType
()))
{
if
(
dte
.
getCode
().
equals
(
deduction
.
getType
()))
{
deduction
.
setName
(
vio
.
getDeductions
());
deduction
.
setName
(
vio
.
getDeductions
());
BigDecimal
diff
=
vio
.
getCost
().
subtract
(
deduction
.
getAmount
());
BigDecimal
diff
=
vio
.
getCost
().
subtract
(
deduction
.
getAmount
());
//修改归还押金金额
oad
.
setDepositAmount
(
oad
.
getDepositAmount
().
subtract
(
diff
));
deduction
.
setAmount
(
vio
.
getCost
());
deduction
.
setAmount
(
vio
.
getCost
());
//修改归还押金金额
resetDeposit
(
oad
);
//设置订单明细参数
//设置订单明细参数
csv
.
setViolateAmount
(
csv
.
getViolateAmount
().
add
(
diff
));
csv
.
setViolateAmount
(
csv
.
getViolateAmount
().
add
(
diff
));
...
@@ -605,7 +662,7 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
...
@@ -605,7 +662,7 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
OrderAccountDeduction
oadNew
=
initDeduction
(
vio
.
getCost
(),
vio
.
getDeductions
(),
dte
,
OrderAccountDeduction
.
ORIGIN_DEPOSIT
);
OrderAccountDeduction
oadNew
=
initDeduction
(
vio
.
getCost
(),
vio
.
getDeductions
(),
dte
,
OrderAccountDeduction
.
ORIGIN_DEPOSIT
);
oad
.
getDeductions
().
add
(
oadNew
);
oad
.
getDeductions
().
add
(
oadNew
);
//修改归还押金金额
//修改归还押金金额
oad
.
setDepositAmount
(
oad
.
getDepositAmount
().
subtract
(
oadNew
.
getAmount
())
);
resetDeposit
(
oad
);
//设置订单明细参数
//设置订单明细参数
csv
.
setViolateAmount
(
csv
.
getViolateAmount
().
add
(
oadNew
.
getAmount
()));
csv
.
setViolateAmount
(
csv
.
getViolateAmount
().
add
(
oadNew
.
getAmount
()));
...
@@ -613,7 +670,6 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
...
@@ -613,7 +670,6 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
}
}
}
}
/**
/**
* 获取每日订单账目,用于统计
* 获取每日订单账目,用于统计
* @param term
* @param term
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderLogBiz.java
View file @
6d051ed4
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
));
}};
insertSelectiveRe
(
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/OrderVehicleCrosstownBiz.java
View file @
6d051ed4
...
@@ -348,6 +348,18 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
...
@@ -348,6 +348,18 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
}
}
}
}
}
}
//延期扣除费用
if
(
StringUtils
.
isNotBlank
(
orderVehicleCrosstownDto
.
getDelayVehicleDetail
()))
{
JSONArray
jsonArray
=
JSONArray
.
parseArray
(
orderVehicleCrosstownDto
.
getDelayVehicleDetail
());
if
(
jsonArray
!=
null
&&
jsonArray
.
size
()
>
0
)
{
for
(
int
i
=
0
;
i
<
jsonArray
.
size
();
i
++)
{
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
jsonArray
.
get
(
i
).
toString
());
if
(
jsonObject
.
getString
(
"cost"
)
!=
null
)
{
cost
+=
Double
.
parseDouble
(
jsonObject
.
getString
(
"cost"
));
}
}
}
}
orderVehicleCrosstownDto
.
setUserLicenseImg
(
orderVehicleCrosstownDto
.
getLicenseImg
());
orderVehicleCrosstownDto
.
setUserLicenseImg
(
orderVehicleCrosstownDto
.
getLicenseImg
());
//扣除费用,每次都是重新计算
//扣除费用,每次都是重新计算
BigDecimal
amount
=
new
BigDecimal
(
cost
.
toString
()).
divide
(
new
BigDecimal
(
"1"
),
2
,
BigDecimal
.
ROUND_UP
);
BigDecimal
amount
=
new
BigDecimal
(
cost
.
toString
()).
divide
(
new
BigDecimal
(
"1"
),
2
,
BigDecimal
.
ROUND_UP
);
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/inner/OrderCalculateBiz.java
View file @
6d051ed4
...
@@ -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
;
...
@@ -25,6 +26,7 @@ import com.xxfc.platform.order.pojo.calculate.InProgressVO;
...
@@ -25,6 +26,7 @@ import com.xxfc.platform.order.pojo.calculate.InProgressVO;
import
com.xxfc.platform.order.pojo.calculate.OrderRefundPriceVO
;
import
com.xxfc.platform.order.pojo.calculate.OrderRefundPriceVO
;
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.order.pojo.order.VehicleItemDTO
;
import
com.xxfc.platform.order.pojo.price.DelayAddPriceVO
;
import
com.xxfc.platform.universal.constant.DictionaryKey
;
import
com.xxfc.platform.universal.constant.DictionaryKey
;
import
com.xxfc.platform.universal.entity.Dictionary
;
import
com.xxfc.platform.universal.entity.Dictionary
;
import
com.xxfc.platform.universal.feign.ThirdFeign
;
import
com.xxfc.platform.universal.feign.ThirdFeign
;
...
@@ -80,7 +82,10 @@ public class OrderCalculateBiz {
...
@@ -80,7 +82,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 +108,21 @@ public class OrderCalculateBiz {
...
@@ -103,7 +108,21 @@ public class OrderCalculateBiz {
InProgressVO
inProgressVO
=
new
InProgressVO
();
InProgressVO
inProgressVO
=
new
InProgressVO
();
inProgressVO
.
setUsedDays
(
useDays
);
inProgressVO
.
setUsedDays
(
useDays
);
inProgressVO
.
setUsedAmount
(
vehicleItemDTO
.
getUsedAmount
(
useDays
));
//处理不记免赔违约金
if
(
useDays
>
0
)
{
inProgressVO
.
setDelayAddPriceVO
(
orvd
.
obtainDelayAddDetail
());
OrderAccountDeduction
violateDeduction
=
orderAccountBiz
.
initDeduction
(
orvd
.
obtainDelayAddDetail
().
getDelayDamageSafeAmount
(),
""
,
DeductionTypeEnum
.
OTHER_DELAY_SAFE
,
OrderAccountDeduction
.
ORIGIN_DEPOSIT
);
oad
.
getDeductions
().
add
(
violateDeduction
);
}
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 +132,11 @@ public class OrderCalculateBiz {
...
@@ -113,10 +132,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 +189,36 @@ public class OrderCalculateBiz {
...
@@ -169,20 +189,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 +236,37 @@ public class OrderCalculateBiz {
...
@@ -200,29 +236,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
<
realVmcpds
.
size
();
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 +275,21 @@ public class OrderCalculateBiz {
...
@@ -231,18 +275,21 @@ 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
(
realResidueDays
.
equals
(
0
))
{
//准时还车
//设置消耗费用列表
useAmountList
.
addAll
(
Convert
.
toList
(
VMCalendarPriceCostDTO
.
class
,
realVmcpds
));
}
else
if
(
realResidueDays
<
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 +332,15 @@ public class OrderCalculateBiz {
...
@@ -285,11 +332,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
())));
...
@@ -345,78 +396,100 @@ public class OrderCalculateBiz {
...
@@ -345,78 +396,100 @@ public class OrderCalculateBiz {
InProgressVO
inProgressVO
=
new
InProgressVO
();
InProgressVO
inProgressVO
=
new
InProgressVO
();
BigDecimal
topAmount
=
BigDecimal
.
ZERO
;
BigDecimal
topAmount
=
BigDecimal
.
ZERO
;
switch
(
orderTypeEnum
)
{
if
(
SYS_TRUE
.
equals
(
orderPageVO
.
getHasPay
())
&&
null
!=
orderPageVO
.
getPayTime
())
{
case
RENT_VEHICLE:
//缓冲取消时间(一个小时)
Map
<
String
,
Dictionary
>
dictionaryMap
=
thirdFeign
.
dictionaryGetAll4Map
().
getData
();
Long
autoCancelTime
=
Long
.
valueOf
(
dictionaryMap
.
get
(
APP_ORDER
+
"_"
+
DictionaryKey
.
CANCEL_TIME_BUFFER
).
getDetail
());
autoCancelTime
=
autoCancelTime
*
60L
*
1000L
;
Long
timeLag
=
orderPageVO
.
getOrderRentVehicleDetail
().
getStartTime
()
-
System
.
currentTimeMillis
();
//判断是否支付超过缓冲取消时间(一个小时)
Long
orderCrtLag
=
System
.
currentTimeMillis
()
-
orderPageVO
.
getPayTime
();
Boolean
overCancelBuffer
=
(
orderCrtLag
>
autoCancelTime
)?
Boolean
.
TRUE
:
Boolean
.
FALSE
;
VehicleItemDTO
vehicleItemDTO
=
BeanUtil
.
toBean
(
orderItemBiz
.
selectOne
(
new
OrderItem
(){{
switch
(
orderTypeEnum
)
{
setType
(
ItemTypeEnum
.
VEHICLE_MODEL
.
getCode
());
case
RENT_VEHICLE:
setOrderId
(
orderPageVO
.
getId
());
}}),
VehicleItemDTO
.
class
);
//融入日期价格
Long
timeLag
=
orderPageVO
.
getOrderRentVehicleDetail
().
getStartTime
()
-
System
.
currentTimeMillis
();
List
<
VehicleModelCalendarPriceDTO
>
vmcpds
=
JSONUtil
.
toList
(
JSONUtil
.
parseArray
(
vehicleItemDTO
.
getDetail
()),
VehicleModelCalendarPriceDTO
.
class
);
VehicleItemDTO
vehicleItemDTO
=
BeanUtil
.
toBean
(
orderItemBiz
.
selectOne
(
new
OrderItem
(){{
setType
(
ItemTypeEnum
.
VEHICLE_MODEL
.
getCode
());
setOrderId
(
orderPageVO
.
getId
());
}}),
VehicleItemDTO
.
class
);
//融入日期价格
List
<
VehicleModelCalendarPriceDTO
>
vmcpds
=
JSONUtil
.
toList
(
JSONUtil
.
parseArray
(
vehicleItemDTO
.
getDetail
()),
VehicleModelCalendarPriceDTO
.
class
);
if
(
timeLag
<
0
&&
overCancelBuffer
)
{
Integer
useDays
=
getIncludeDays
(
orderPageVO
.
getOrderRentVehicleDetail
().
getStartTime
(),
DateTime
.
now
().
getMillis
());
OrderAccountDetail
oad
=
new
OrderAccountDetail
();
inProgressVO
=
inProgressCalculate
(
orderPageVO
,
vehicleItemDTO
,
orderPageVO
.
getOrderRentVehicleDetail
(),
useDays
,
oad
,
Boolean
.
FALSE
);
topAmount
=
vehicleItemDTO
.
getTopAmount
(
useDays
);
totalDeductAmount
=
oad
.
realTotalDeduct
();
totalRefundAmount
=
oad
.
getOrderAmount
().
add
(
oad
.
getDepositAmount
());
refundDesc
=
inProgressVO
.
getViolateDesc
();
}
else
{
String
key
=
RENT_REFUND
;
BigDecimal
deductionAmount
=
orderAccountBiz
.
calculateDeduction
(
vehicleItemDTO
.
getBuyAmount
()
,
orderPageVO
.
getOrderRentVehicleDetail
().
getStartTime
()
-
System
.
currentTimeMillis
()
,
DictionaryKey
.
APP_ORDER
+
"_"
+
key
,
refundDescBuilder
);
if
(!
overCancelBuffer
)
{
deductionAmount
=
BigDecimal
.
ZERO
;
refundDescBuilder
=
new
StringBuilder
(
""
);
}
topAmount
=
vehicleItemDTO
.
getTopAmount
(
0
);
totalDeductAmount
=
(
topAmount
.
compareTo
(
deductionAmount
)
<
0
)
?
topAmount:
deductionAmount
;
totalRefundAmount
=
orderPageVO
.
getRealAmount
().
subtract
(
totalDeductAmount
);
refundDesc
=
refundDescBuilder
.
toString
();
}
break
;
case
TOUR:
//判断是省内还是省外
String
key
=
TOUR_IN_REFUND
;
if
(
SYS_TRUE
.
equals
(
orderPageVO
.
getOrderTourDetail
().
getIsOutside
()))
{
key
=
TOUR_REFUND
;
}
if
(
timeLag
<
0
)
{
OrderItem
adultItem
=
orderItemBiz
.
selectOne
(
new
OrderItem
(){
{
Integer
useDays
=
getIncludeDays
(
orderPageVO
.
getOrderRentVehicleDetail
().
getStartTime
(),
DateTime
.
now
().
getMillis
());
setType
(
ItemTypeEnum
.
TOUR_ADULT
.
getCode
());
OrderAccountDetail
oad
=
new
OrderAccountDetail
(
);
setOrderId
(
orderPageVO
.
getId
()
);
inProgressVO
=
inProgressCalculate
(
orderPageVO
,
vehicleItemDTO
,
useDays
,
oad
,
Boolean
.
FALSE
);
}}
);
topAmount
=
vehicleItemDTO
.
getTopAmount
(
useDays
);
OrderItem
childItem
=
orderItemBiz
.
selectOne
(
new
OrderItem
(){{
totalDeductAmount
=
oad
.
realTotalDeduct
();
setType
(
ItemTypeEnum
.
TOUR_CHILD
.
getCode
());
totalRefundAmount
=
oad
.
getOrderAmount
().
add
(
oad
.
getDepositAmount
());
setOrderId
(
orderPageVO
.
getId
());
refundDesc
=
inProgressVO
.
getViolateDesc
();
}});
}
else
{
String
key
=
RENT_REFUND
;
BigDecimal
adultItemAmount
=
(
null
==
adultItem
)?
BigDecimal
.
ZERO
:
adultItem
.
getRealAmount
();
BigDecimal
childItemAmount
=
(
null
==
childItem
)?
BigDecimal
.
ZERO
:
childItem
.
getRealAmount
();
BigDecimal
deductionAmount
=
orderAccountBiz
.
calculateDeduction
(
vehicleItemDTO
.
getBuyAmount
(
)
BigDecimal
deductionAmount
=
orderAccountBiz
.
calculateDeduction
(
adultItemAmount
.
add
(
childItemAmount
)
,
orderPageVO
.
getOrder
RentVehicle
Detail
().
getStartTime
()
-
System
.
currentTimeMillis
()
,
orderPageVO
.
getOrder
Tour
Detail
().
getStartTime
()
-
System
.
currentTimeMillis
()
,
DictionaryKey
.
APP_ORDER
+
"_"
+
key
,
DictionaryKey
.
APP_ORDER
+
"_"
+
key
,
refundDescBuilder
);
,
refundDescBuilder
);
topAmount
=
vehicleItemDTO
.
getTopAmount
(
0
);
if
(!
overCancelBuffer
)
{
totalDeductAmount
=
(
topAmount
.
compareTo
(
deductionAmount
)
<
0
)
?
topAmount:
deductionAmount
;
deductionAmount
=
BigDecimal
.
ZERO
;
totalRefundAmount
=
orderPageVO
.
getRealAmount
().
subtract
(
totalDeductAmount
);
refundDescBuilder
=
new
StringBuilder
(
""
);
refundDesc
=
refundDescBuilder
.
toString
();
}
}
break
;
case
TOUR:
//判断是省内还是省外
String
key
=
TOUR_IN_REFUND
;
if
(
SYS_TRUE
.
equals
(
orderPageVO
.
getOrderTourDetail
().
getIsOutside
()))
{
key
=
TOUR_REFUND
;
}
OrderItem
adultItem
=
orderItemBiz
.
selectOne
(
new
OrderItem
(){{
topAmount
=
adultItemAmount
.
add
(
childItemAmount
);
setType
(
ItemTypeEnum
.
TOUR_ADULT
.
getCode
());
totalDeductAmount
=
deductionAmount
;
setOrderId
(
orderPageVO
.
getId
());
totalRefundAmount
=
orderPageVO
.
getRealAmount
().
subtract
(
deductionAmount
);
}});
refundDesc
=
refundDescBuilder
.
toString
();
break
;
OrderItem
childItem
=
orderItemBiz
.
selectOne
(
new
OrderItem
(){{
default
:
setType
(
ItemTypeEnum
.
TOUR_CHILD
.
getCode
());
break
;
setOrderId
(
orderPageVO
.
getId
());
}
}});
BigDecimal
adultItemAmount
=
(
null
==
adultItem
)?
BigDecimal
.
ZERO
:
adultItem
.
getRealAmount
();
BigDecimal
childItemAmount
=
(
null
==
childItem
)?
BigDecimal
.
ZERO
:
childItem
.
getRealAmount
();
BigDecimal
deductionAmount
=
orderAccountBiz
.
calculateDeduction
(
adultItemAmount
.
add
(
childItemAmount
)
,
orderPageVO
.
getOrderTourDetail
().
getStartTime
()
-
System
.
currentTimeMillis
()
,
DictionaryKey
.
APP_ORDER
+
"_"
+
key
,
refundDescBuilder
);
topAmount
=
adultItemAmount
.
add
(
childItemAmount
);
totalDeductAmount
=
deductionAmount
;
totalRefundAmount
=
orderPageVO
.
getRealAmount
().
subtract
(
deductionAmount
);
refundDesc
=
refundDescBuilder
.
toString
();
break
;
default
:
break
;
}
}
OrderRefundPriceVO
orpv
=
new
OrderRefundPriceVO
();
OrderRefundPriceVO
orpv
=
new
OrderRefundPriceVO
();
orpv
.
setRealAmount
(
orderPageVO
.
getRealAmount
());
orpv
.
setRealAmount
(
orderPageVO
.
getRealAmount
());
orpv
.
setRefundAmount
(
totalRefundAmount
);
orpv
.
setRefundAmount
(
totalRefundAmount
);
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/inner/OrderCancelBiz.java
View file @
6d051ed4
...
@@ -22,6 +22,8 @@ import com.xxfc.platform.order.pojo.price.CancelNoStartVO;
...
@@ -22,6 +22,8 @@ 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
;
import
com.xxfc.platform.tour.feign.TourFeign
;
import
com.xxfc.platform.tour.feign.TourFeign
;
import
com.xxfc.platform.universal.constant.DictionaryKey
;
import
com.xxfc.platform.universal.entity.Dictionary
;
import
com.xxfc.platform.universal.feign.ThirdFeign
;
import
com.xxfc.platform.universal.feign.ThirdFeign
;
import
com.xxfc.platform.vehicle.common.RestResponse
;
import
com.xxfc.platform.vehicle.common.RestResponse
;
import
com.xxfc.platform.vehicle.feign.VehicleFeign
;
import
com.xxfc.platform.vehicle.feign.VehicleFeign
;
...
@@ -132,6 +134,16 @@ public class OrderCancelBiz {
...
@@ -132,6 +134,16 @@ public class OrderCancelBiz {
//触发退款流程
//触发退款流程
//判断是否已支付
//判断是否已支付
if
(
SYS_TRUE
.
equals
(
baseOrder
.
getHasPay
()))
{
if
(
SYS_TRUE
.
equals
(
baseOrder
.
getHasPay
()))
{
//缓冲取消时间(一个小时)
Map
<
String
,
Dictionary
>
dictionaryMap
=
thirdFeign
.
dictionaryGetAll4Map
().
getData
();
Long
autoCancelTime
=
Long
.
valueOf
(
dictionaryMap
.
get
(
APP_ORDER
+
"_"
+
DictionaryKey
.
CANCEL_TIME_BUFFER
).
getDetail
());
autoCancelTime
=
autoCancelTime
*
60L
*
1000L
;
//判断是否支付超过缓冲取消时间(一个小时)
Long
orderCrtLag
=
System
.
currentTimeMillis
()
-
baseOrder
.
getPayTime
();
Boolean
overCancelBuffer
=
(
orderCrtLag
>
autoCancelTime
)?
Boolean
.
TRUE
:
Boolean
.
FALSE
;
//判断订单类型
//判断订单类型
if
(
OrderTypeEnum
.
RENT_VEHICLE
.
getCode
().
equals
(
baseOrder
.
getType
()))
{
if
(
OrderTypeEnum
.
RENT_VEHICLE
.
getCode
().
equals
(
baseOrder
.
getType
()))
{
orvd
=
orderRentVehicleBiz
.
selectOne
(
new
OrderRentVehicleDetail
(){{
orvd
=
orderRentVehicleBiz
.
selectOne
(
new
OrderRentVehicleDetail
(){{
...
@@ -147,10 +159,11 @@ public class OrderCancelBiz {
...
@@ -147,10 +159,11 @@ public class OrderCancelBiz {
//根据时间处理goodsAmount
//根据时间处理goodsAmount
//获取出发时间 到现在 距离时间
//获取出发时间 到现在 距离时间
Long
timeLag
=
orvd
.
getStartTime
()
-
System
.
currentTimeMillis
();
Long
timeLag
=
orvd
.
getStartTime
()
-
System
.
currentTimeMillis
();
if
(
timeLag
<
0
)
{
if
(
timeLag
<
0
&&
overCancelBuffer
)
{
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
);
...
@@ -222,7 +235,7 @@ public class OrderCancelBiz {
...
@@ -222,7 +235,7 @@ public class OrderCancelBiz {
//退款流程
//退款流程
//违约金封顶 租车身份价 * 2天
//违约金封顶 租车身份价 * 2天
orderAccountBiz
.
rentRefundProcessCancel
(
baseOrder
,
BigDecimal
.
ZERO
,
timeLag
,
APP_ORDER
+
"_"
+
RENT_REFUND
,
orvd
.
getDeposit
(),
vehicleItemDTO
.
getBuyAmount
(),
oad
,
vehicleItemDTO
.
getTopAmount
(
0
),
null
,
changeViolateAmount
);
orderAccountBiz
.
rentRefundProcessCancel
(
baseOrder
,
BigDecimal
.
ZERO
,
timeLag
,
APP_ORDER
+
"_"
+
RENT_REFUND
,
orvd
.
getDeposit
(),
vehicleItemDTO
.
getBuyAmount
(),
oad
,
vehicleItemDTO
.
getTopAmount
(
0
),
null
,
changeViolateAmount
,
(!
overCancelBuffer
)
);
//设置订单数据
//设置订单数据
//baseOrder.setDamagesAmount(csv.getDamagesAmount());
//baseOrder.setDamagesAmount(csv.getDamagesAmount());
...
@@ -265,6 +278,7 @@ public class OrderCancelBiz {
...
@@ -265,6 +278,7 @@ public class OrderCancelBiz {
}
}
}
else
if
(
OrderTypeEnum
.
TOUR
.
getCode
().
equals
(
baseOrder
.
getType
()))
{
}
else
if
(
OrderTypeEnum
.
TOUR
.
getCode
().
equals
(
baseOrder
.
getType
()))
{
otd
=
orderTourDetailBiz
.
selectOne
(
new
OrderTourDetail
(){{
otd
=
orderTourDetailBiz
.
selectOne
(
new
OrderTourDetail
(){{
setOrderId
(
baseOrder
.
getId
());
setOrderId
(
baseOrder
.
getId
());
}});
}});
...
@@ -291,7 +305,7 @@ public class OrderCancelBiz {
...
@@ -291,7 +305,7 @@ public class OrderCancelBiz {
}
}
//退款流程
//退款流程
orderAccountBiz
.
rentRefundProcessCancel
(
baseOrder
,
adultItemAmount
.
add
(
childItemAmount
),
timeLag
,
APP_ORDER
+
"_"
+
key
,
BigDecimal
.
ZERO
,
BigDecimal
.
ZERO
,
oad
,
adultItemAmount
.
add
(
childItemAmount
),
changeViolateAmount
,
null
);
orderAccountBiz
.
rentRefundProcessCancel
(
baseOrder
,
adultItemAmount
.
add
(
childItemAmount
),
timeLag
,
APP_ORDER
+
"_"
+
key
,
BigDecimal
.
ZERO
,
BigDecimal
.
ZERO
,
oad
,
adultItemAmount
.
add
(
childItemAmount
),
changeViolateAmount
,
null
,
(!
overCancelBuffer
)
);
//如果有扣款项,则生成额外的费用明细
//如果有扣款项,则生成额外的费用明细
if
(
oad
.
getDeductions
().
size
()
>
0
)
{
if
(
oad
.
getDeductions
().
size
()
>
0
)
{
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/inner/OrderDelayBiz.java
0 → 100644
View file @
6d051ed4
package
com
.
xxfc
.
platform
.
order
.
biz
.
inner
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.github.wxiaoqi.security.admin.feign.UserFeign
;
import
com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO
;
import
com.github.wxiaoqi.security.common.exception.BaseException
;
import
com.github.wxiaoqi.security.common.util.process.ResultCode
;
import
com.xxfc.platform.activity.feign.ActivityFeign
;
import
com.xxfc.platform.order.biz.*
;
import
com.xxfc.platform.order.contant.enumerate.ItemTypeEnum
;
import
com.xxfc.platform.order.contant.enumerate.OrderLogEnum
;
import
com.xxfc.platform.order.entity.OrderItem
;
import
com.xxfc.platform.order.entity.OrderRentVehicleDetail
;
import
com.xxfc.platform.order.pojo.order.DelayRentOrderDTO
;
import
com.xxfc.platform.order.pojo.order.OrderPageVO
;
import
com.xxfc.platform.order.pojo.order.VehicleItemDTO
;
import
com.xxfc.platform.order.pojo.price.DelayAddPriceVO
;
import
com.xxfc.platform.tour.feign.TourFeign
;
import
com.xxfc.platform.universal.constant.DictionaryKey
;
import
com.xxfc.platform.universal.entity.Dictionary
;
import
com.xxfc.platform.universal.feign.ThirdFeign
;
import
com.xxfc.platform.vehicle.common.RestResponse
;
import
com.xxfc.platform.vehicle.feign.VehicleFeign
;
import
com.xxfc.platform.vehicle.pojo.BookVehicleVO
;
import
com.xxfc.platform.vehicle.pojo.dto.order.VMCalendarPriceCostDTO
;
import
lombok.extern.slf4j.Slf4j
;
import
org.mockito.internal.util.collections.Sets
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
import
java.util.List
;
import
java.util.Map
;
import
static
com
.
github
.
wxiaoqi
.
security
.
common
.
constant
.
CommonConstants
.
SYS_JSON_TRUE
;
import
static
com
.
github
.
wxiaoqi
.
security
.
common
.
constant
.
CommonConstants
.
SYS_TRUE
;
import
static
com
.
xxfc
.
platform
.
universal
.
constant
.
DictionaryKey
.
APP_ORDER
;
/**
* 订单退款记录表
*
* @author zjw
* @email nishijjo@qq.com
* @date 2019-06-18 11:08:09
*/
@Slf4j
@Service
public
class
OrderDelayBiz
{
@Autowired
BaseOrderBiz
baseOrderBiz
;
@Autowired
OrderItemBiz
orderItemBiz
;
@Autowired
OrderMemberDetailBiz
orderMemberDetailBiz
;
@Autowired
OrderTourDetailBiz
orderTourDetailBiz
;
@Autowired
OrderRentVehicleBiz
orderRentVehicleBiz
;
@Autowired
OrderMsgBiz
orderMsgBiz
;
@Autowired
OrderCalculateBiz
orderCalculateBiz
;
@Autowired
OrderAccountBiz
orderAccountBiz
;
@Autowired
OrderTemplateBiz
orderTemplateBiz
;
@Autowired
OrderLogBiz
orderLogBiz
;
@Autowired
UserFeign
userFeign
;
@Autowired
VehicleFeign
vehicleFeign
;
@Autowired
TourFeign
tourFeign
;
@Autowired
ThirdFeign
thirdFeign
;
@Autowired
ActivityFeign
activityFeign
;
public
void
delayRentOrder
(
OrderPageVO
orderPageVO
,
DelayRentOrderDTO
dto
)
{
OrderRentVehicleDetail
orvd
=
orderPageVO
.
getOrderRentVehicleDetail
();
OrderRentVehicleDetail
oldOrvd
=
BeanUtil
.
toBean
(
orvd
,
OrderRentVehicleDetail
.
class
);
Integer
delayAddDays
=
0
;
Integer
delayAddFreeDays
=
0
;
//分布式事务执行标记
Integer
cloudTransact
=
0
;
//计算delay多少天
delayAddDays
=
orderCalculateBiz
.
getIncludeDays
(
orvd
.
getStartTime
(),
dto
.
getDelayEndTime
());
delayAddDays
=
delayAddDays
-
orderPageVO
.
getOrderRentVehicleDetail
().
getDayNum
();
//判断
if
(
delayAddDays
<
0
)
{
throw
new
BaseException
(
ResultCode
.
PARAM_ILLEGAL_CODE
,
Sets
.
newSet
(
"延期时间不对"
));
}
else
{
//变化的延期免费天数
Integer
changeDelayFreeDays
=
0
;
List
<
VMCalendarPriceCostDTO
>
delayAmountList
;
if
(
delayAddDays
>
0
)
{
VehicleItemDTO
vehicleItemDTO
=
BeanUtil
.
toBean
(
orderItemBiz
.
selectOne
(
new
OrderItem
(){{
setType
(
ItemTypeEnum
.
VEHICLE_MODEL
.
getCode
());
setOrderId
(
orderPageVO
.
getId
());
}}),
VehicleItemDTO
.
class
);
List
<
VMCalendarPriceCostDTO
>
vmcpcds
=
vehicleItemDTO
.
getVehicleDetail
();
//获得延期天数费用
delayAmountList
=
orderItemBiz
.
getOverAmountList
(
vmcpcds
.
get
(
vmcpcds
.
size
()
-
1
).
getDate
(),
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
();
delayAddFreeDays
=
0
;
}
//初始化变化的延期免费天数为延期天数
changeDelayFreeDays
=
delayAddFreeDays
;
//判断是否已经设置了延期, 修改变化的延期免费天数
if
(
orvd
.
getDelayAddDays
()
>
0
)
{
//extendDelayDays = delayAddDays - orvd.getDelayAddDays();
changeDelayFreeDays
=
delayAddFreeDays
-
orvd
.
getDelayAddFreeDays
();
}
//根据 changeDelayFreeDays 判断 是否拥有那么足够的天数
if
(
changeDelayFreeDays
>
0
)
{
AppUserDTO
appUserDTO
=
userFeign
.
userDetailById
(
orderPageVO
.
getUserId
()).
getData
();
if
(
appUserDTO
.
getRentFreeDays
()
<
changeDelayFreeDays
)
{
throw
new
BaseException
(
ResultCode
.
FAILED_CODE
,
Sets
.
newSet
(
"免费天数不够"
));
}
}
//触发调用修改预约
dto
.
setEndTime
(
dto
.
getDelayEndTime
());
dto
.
setStartTime
(
orderPageVO
.
getOrderRentVehicleDetail
().
getStartTime
());
//根据订单号获取订单
RestResponse
restResponse
=
vehicleFeign
.
updateOrderBookRecord
(
new
BookVehicleVO
()
{{
setVehicleId
(
orderPageVO
.
getOrderRentVehicleDetail
().
getVehicleId
());
setVehicleBookRecordId
(
orvd
.
getBookRecordId
());
setBookStartDate
(
dto
.
getBookStartDateTime
());
setBookEndDate
(
dto
.
getBookEndDateTime
());
setBookStartDateTime
(
dto
.
getBookStartDateTime
());
setBookEndDateTime
(
dto
.
getBookEndDateTime
());
setBookType
(
BOOK_TYPE_RENT
);
}});
if
(
!
SYS_JSON_TRUE
.
equals
(
restResponse
.
getStatus
()))
{
throw
new
BaseException
(
ResultCode
.
FAILED_CODE
,
Sets
.
newSet
(
"延期失败"
));
}
cloudTransact
=
1
;
//扣减免费天数
if
(
changeDelayFreeDays
>
0
)
{
int
result
=
userFeign
.
memberDays
(
orderPageVO
.
getUserId
(),
changeDelayFreeDays
,
UserFeign
.
MEMBER_DAYS_LOCK
);
if
(
result
<
0
)
{
throw
new
BaseException
(
ResultCode
.
FAILED_CODE
);
}
}
else
if
(
changeDelayFreeDays
<
0
){
int
result
=
userFeign
.
memberDays
(
orderPageVO
.
getUserId
(),
0
-
changeDelayFreeDays
,
UserFeign
.
MEMBER_DAYS_WITHDRAW
);
if
(
result
<
0
)
{
throw
new
BaseException
(
ResultCode
.
FAILED_CODE
);
}
}
cloudTransact
=
2
;
//更新OrderRentVehicleDetail
Map
<
String
,
Dictionary
>
dictionaryMap
=
thirdFeign
.
dictionaryGetAll4Map
().
getData
();
orvd
.
setDelayAddDamageSafe
(
dto
.
getNeedDamageSafe
());
orvd
.
setDelayAddDays
(
delayAddDays
);
orvd
.
setDelayAddFreeDays
(
delayAddFreeDays
);
orvd
.
setDelayAddEndTime
(
dto
.
getDelayEndTime
());
//修改还车时间
orvd
.
setEndTime
(
dto
.
getDelayEndTime
());
DelayAddPriceVO
delayAddPriceVO
=
new
DelayAddPriceVO
(){{
setDamageSafePrice
(
new
BigDecimal
(
dictionaryMap
.
get
(
APP_ORDER
+
"_"
+
DictionaryKey
.
DAMAGE_SAFE
).
getDetail
()));
setDelayAddDays
(
orvd
.
getDelayAddDays
());
setDelayAmountList
(
delayAmountList
);
}};
if
(
SYS_TRUE
.
equals
(
dto
.
getNeedDamageSafe
()))
{
delayAddPriceVO
.
initDelayDamageSafeAmount
();
}
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-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/inner/OrderMsgBiz.java
View file @
6d051ed4
...
@@ -517,7 +517,7 @@ public class OrderMsgBiz {
...
@@ -517,7 +517,7 @@ public class OrderMsgBiz {
smsParams
.
add
(
orvd
.
getEndAddr
());
smsParams
.
add
(
orvd
.
getEndAddr
());
smsParams
.
add
(
DateUtil
.
formatDateTime
(
DateUtil
.
date
(
orvd
.
getStartTime
())));
smsParams
.
add
(
DateUtil
.
formatDateTime
(
DateUtil
.
date
(
orvd
.
getStartTime
())));
smsParams
.
add
(
DateUtil
.
formatDateTime
(
DateUtil
.
date
(
orvd
.
getEndTime
())));
smsParams
.
add
(
DateUtil
.
formatDateTime
(
DateUtil
.
date
(
orvd
.
getEndTime
())));
smsParams
.
add
(
orvd
.
get
DayNum
().
toString
());
smsParams
.
add
(
orvd
.
obtainReal
DayNum
().
toString
());
smsParams
.
add
(
appUserDTO
.
getUsername
());
smsParams
.
add
(
appUserDTO
.
getUsername
());
}
}
}
}
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/rest/BackStageOrderController.java
View file @
6d051ed4
package
com
.
xxfc
.
platform
.
order
.
rest
;
package
com
.
xxfc
.
platform
.
order
.
rest
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.json.JSONUtil
;
import
cn.hutool.json.JSONUtil
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.github.wxiaoqi.security.admin.entity.AppUserLogin
;
import
com.github.wxiaoqi.security.admin.entity.AppUserLogin
;
...
@@ -22,15 +24,22 @@ import com.google.common.collect.Lists;
...
@@ -22,15 +24,22 @@ import com.google.common.collect.Lists;
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
;
import
com.xxfc.platform.order.biz.*
;
import
com.xxfc.platform.order.biz.*
;
import
com.xxfc.platform.order.biz.inner.OrderCalculateBiz
;
import
com.xxfc.platform.order.biz.inner.OrderDelayBiz
;
import
com.xxfc.platform.order.contant.enumerate.ItemTypeEnum
;
import
com.xxfc.platform.order.contant.enumerate.ItemTypeEnum
;
import
com.xxfc.platform.order.contant.enumerate.OrderTypeEnum
;
import
com.xxfc.platform.order.entity.OrderItem
;
import
com.xxfc.platform.order.entity.OrderItem
;
import
com.xxfc.platform.order.entity.OrderRentVehicleDetail
;
import
com.xxfc.platform.order.entity.OrderRentVehicleDetail
;
import
com.xxfc.platform.order.pojo.OrderAccompanyDTO
;
import
com.xxfc.platform.order.pojo.OrderAccompanyDTO
;
import
com.xxfc.platform.order.pojo.order.*
;
import
com.xxfc.platform.order.pojo.order.*
;
import
com.xxfc.platform.order.pojo.price.DelayAddPriceVO
;
import
com.xxfc.platform.order.pojo.price.RentVehiclePriceVO
;
import
com.xxfc.platform.order.pojo.price.RentVehiclePriceVO
;
import
com.xxfc.platform.order.service.OrderRentVehicleService
;
import
com.xxfc.platform.order.service.OrderRentVehicleService
;
import
com.xxfc.platform.tour.entity.TourUser
;
import
com.xxfc.platform.tour.entity.TourUser
;
import
com.xxfc.platform.tour.feign.TourFeign
;
import
com.xxfc.platform.tour.feign.TourFeign
;
import
com.xxfc.platform.universal.constant.DictionaryKey
;
import
com.xxfc.platform.universal.entity.Dictionary
;
import
com.xxfc.platform.universal.feign.ThirdFeign
;
import
com.xxfc.platform.vehicle.common.RestResponse
;
import
com.xxfc.platform.vehicle.common.RestResponse
;
import
com.xxfc.platform.vehicle.constant.VehicleBookRecordStatus
;
import
com.xxfc.platform.vehicle.constant.VehicleBookRecordStatus
;
import
com.xxfc.platform.vehicle.entity.BranchCompany
;
import
com.xxfc.platform.vehicle.entity.BranchCompany
;
...
@@ -39,6 +48,7 @@ import com.xxfc.platform.vehicle.entity.VehicleUserLicense;
...
@@ -39,6 +48,7 @@ import com.xxfc.platform.vehicle.entity.VehicleUserLicense;
import
com.xxfc.platform.vehicle.feign.VehicleFeign
;
import
com.xxfc.platform.vehicle.feign.VehicleFeign
;
import
com.xxfc.platform.vehicle.pojo.BookVehicleVO
;
import
com.xxfc.platform.vehicle.pojo.BookVehicleVO
;
import
com.xxfc.platform.vehicle.pojo.CompanyDetail
;
import
com.xxfc.platform.vehicle.pojo.CompanyDetail
;
import
com.xxfc.platform.vehicle.pojo.dto.order.VMCalendarPriceCostDTO
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
jodd.util.StringUtil
;
import
jodd.util.StringUtil
;
...
@@ -52,17 +62,18 @@ import org.springframework.web.bind.annotation.*;
...
@@ -52,17 +62,18 @@ import org.springframework.web.bind.annotation.*;
import
javax.annotation.Resource
;
import
javax.annotation.Resource
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.math.BigDecimal
;
import
java.time.Instant
;
import
java.time.Instant
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.time.ZoneOffset
;
import
java.time.ZoneOffset
;
import
java.util.*
;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
import
static
com
.
github
.
wxiaoqi
.
security
.
common
.
constant
.
CommonConstants
.
DATE_TIME_LINE_FORMATTER
;
import
static
com
.
github
.
wxiaoqi
.
security
.
common
.
constant
.
CommonConstants
.
*
;
import
static
com
.
github
.
wxiaoqi
.
security
.
common
.
constant
.
CommonConstants
.
YMR_SLASH_FORMATT
ER
;
import
static
com
.
xxfc
.
platform
.
universal
.
constant
.
DictionaryKey
.
APP_ORD
ER
;
@Controller
@Controller
@RequestMapping
(
"baseOrder"
)
//
@RequestMapping("baseOrder")
@Api
(
value
=
"订单后台相关"
,
tags
=
{
"订单后台相关"
})
@Api
(
value
=
"订单后台相关"
,
tags
=
{
"订单后台相关"
})
@Slf4j
@Slf4j
public
class
BackStageOrderController
extends
CommonBaseController
implements
UserRestInterface
{
public
class
BackStageOrderController
extends
CommonBaseController
implements
UserRestInterface
{
...
@@ -83,6 +94,12 @@ public class BackStageOrderController extends CommonBaseController implements Us
...
@@ -83,6 +94,12 @@ public class BackStageOrderController extends CommonBaseController implements Us
@Autowired
@Autowired
OrderItemBiz
orderItemBiz
;
OrderItemBiz
orderItemBiz
;
@Autowired
OrderCalculateBiz
orderCalculateBiz
;
@Autowired
OrderDelayBiz
orderDelayBiz
;
@Autowired
@Autowired
UserFeign
userFeign
;
UserFeign
userFeign
;
...
@@ -95,6 +112,9 @@ public class BackStageOrderController extends CommonBaseController implements Us
...
@@ -95,6 +112,9 @@ public class BackStageOrderController extends CommonBaseController implements Us
@Resource
@Resource
VehicleFeign
vehicleFeign
;
VehicleFeign
vehicleFeign
;
@Autowired
ThirdFeign
thirdFeign
;
@Autowired
@Autowired
BackgroundBaseOrderBiz
backgroundBaseOrderBiz
;
BackgroundBaseOrderBiz
backgroundBaseOrderBiz
;
@Override
@Override
...
@@ -102,7 +122,7 @@ public class BackStageOrderController extends CommonBaseController implements Us
...
@@ -102,7 +122,7 @@ public class BackStageOrderController extends CommonBaseController implements Us
return
userFeign
;
return
userFeign
;
}
}
@RequestMapping
(
value
=
"/getOrderList"
,
method
=
RequestMethod
.
GET
)
@RequestMapping
(
value
=
"/
baseOrder/
getOrderList"
,
method
=
RequestMethod
.
GET
)
@ResponseBody
@ResponseBody
@ApiOperation
(
value
=
"获取后台订单列表"
)
@ApiOperation
(
value
=
"获取后台订单列表"
)
@IgnoreClientToken
@IgnoreClientToken
...
@@ -278,7 +298,7 @@ public class BackStageOrderController extends CommonBaseController implements Us
...
@@ -278,7 +298,7 @@ public class BackStageOrderController extends CommonBaseController implements Us
return
new
ObjectRestResponse
<>().
data
(
pageDataVO
);
return
new
ObjectRestResponse
<>().
data
(
pageDataVO
);
}
}
@RequestMapping
(
value
=
"/getVehicleList"
,
method
=
RequestMethod
.
GET
)
@RequestMapping
(
value
=
"/
baseOrder/
getVehicleList"
,
method
=
RequestMethod
.
GET
)
@ResponseBody
@ResponseBody
@ApiOperation
(
value
=
"交还车租车订单列表"
)
@ApiOperation
(
value
=
"交还车租车订单列表"
)
@IgnoreClientToken
@IgnoreClientToken
...
@@ -341,7 +361,7 @@ public class BackStageOrderController extends CommonBaseController implements Us
...
@@ -341,7 +361,7 @@ public class BackStageOrderController extends CommonBaseController implements Us
return
new
ObjectRestResponse
<>().
data
(
pageDataVO
);
return
new
ObjectRestResponse
<>().
data
(
pageDataVO
);
}
}
@RequestMapping
(
value
=
"/getTourList"
,
method
=
RequestMethod
.
GET
)
@RequestMapping
(
value
=
"/
baseOrder/
getTourList"
,
method
=
RequestMethod
.
GET
)
@ResponseBody
@ResponseBody
@ApiOperation
(
value
=
"交还车旅游订单列表"
)
@ApiOperation
(
value
=
"交还车旅游订单列表"
)
@IgnoreClientToken
@IgnoreClientToken
...
@@ -356,7 +376,7 @@ public class BackStageOrderController extends CommonBaseController implements Us
...
@@ -356,7 +376,7 @@ public class BackStageOrderController extends CommonBaseController implements Us
return
new
ObjectRestResponse
<>().
data
(
pageDataVO
);
return
new
ObjectRestResponse
<>().
data
(
pageDataVO
);
}
}
@GetMapping
(
value
=
"/orderDetail"
)
@GetMapping
(
value
=
"/
baseOrder/
orderDetail"
)
@ApiOperation
(
value
=
"交还车获取订单详情,带驾驶人信息"
)
@ApiOperation
(
value
=
"交还车获取订单详情,带驾驶人信息"
)
@IgnoreClientToken
@IgnoreClientToken
@ResponseBody
@ResponseBody
...
@@ -377,7 +397,7 @@ public class BackStageOrderController extends CommonBaseController implements Us
...
@@ -377,7 +397,7 @@ public class BackStageOrderController extends CommonBaseController implements Us
@ApiOperation
(
"结合后台人员所属公司查询订单详情"
)
@ApiOperation
(
"结合后台人员所属公司查询订单详情"
)
@RequestMapping
(
value
=
"/company/{no}"
,
method
=
RequestMethod
.
GET
)
@RequestMapping
(
value
=
"/
baseOrder/
company/{no}"
,
method
=
RequestMethod
.
GET
)
@IgnoreClientToken
@IgnoreClientToken
@ResponseBody
@ResponseBody
public
ObjectRestResponse
<
OrderPageVO
>
companyGet
(
@PathVariable
String
no
)
{
public
ObjectRestResponse
<
OrderPageVO
>
companyGet
(
@PathVariable
String
no
)
{
...
@@ -395,16 +415,15 @@ public class BackStageOrderController extends CommonBaseController implements Us
...
@@ -395,16 +415,15 @@ public class BackStageOrderController extends CommonBaseController implements Us
}
}
@ApiOperation
(
"更換車輛"
)
@ApiOperation
(
"更換車輛"
)
@RequestMapping
(
value
=
"/bg/change-vehicle"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
value
=
"/b
aseOrder/b
g/change-vehicle"
,
method
=
RequestMethod
.
POST
)
@IgnoreClientToken
@IgnoreClientToken
@ResponseBody
@ResponseBody
public
ObjectRestResponse
<
OrderPageVO
>
changeVehicle
(
@RequestBody
ChangeVehicleDTO
dto
)
{
public
ObjectRestResponse
<
OrderPageVO
>
changeVehicle
(
@RequestBody
ChangeVehicleDTO
dto
)
{
checkAdminUser
();
checkAdminUser
();
//根据订单号获取订单
//根据订单号获取订单
//查询列表数据
//查询列表数据
Query
query
=
baseOrderBiz
.
initQuery
(
dto
.
getNo
());
Query
query
=
baseOrderBiz
.
initBgQuery
(
dto
.
getNo
());
query
.
put
(
"crtUser"
,
null
);
query
.
put
(
"userId"
,
null
);
PageDataVO
<
OrderPageVO
>
page
=
PageDataVO
.
pageInfo
(
query
,
()
->
baseOrderBiz
.
pageByParm
(
query
.
getSuper
()));
PageDataVO
<
OrderPageVO
>
page
=
PageDataVO
.
pageInfo
(
query
,
()
->
baseOrderBiz
.
pageByParm
(
query
.
getSuper
()));
OrderPageVO
orderPageVO
=
page
.
getData
().
get
(
0
);
OrderPageVO
orderPageVO
=
page
.
getData
().
get
(
0
);
if
(
null
==
orderPageVO
)
{
if
(
null
==
orderPageVO
)
{
...
@@ -438,13 +457,35 @@ public class BackStageOrderController extends CommonBaseController implements Us
...
@@ -438,13 +457,35 @@ public class BackStageOrderController extends CommonBaseController implements Us
return
ObjectRestResponse
.
succ
();
return
ObjectRestResponse
.
succ
();
}
}
@PostMapping
(
"/updateEndCompany"
)
@ApiOperation
(
"修改租车订单延长时间"
)
@RequestMapping
(
value
=
"/baseOrder/bg/delay-rent-order"
,
method
=
RequestMethod
.
POST
)
@IgnoreClientToken
@ResponseBody
public
ObjectRestResponse
<
OrderPageVO
>
delayRentOrder
(
@RequestBody
DelayRentOrderDTO
dto
)
{
checkAdminUser
();
dto
.
setOperateId
(
Integer
.
valueOf
(
"-1"
+
getCurrentUserId
()));
Query
query
=
baseOrderBiz
.
initBgQuery
(
dto
.
getNo
());
PageDataVO
<
OrderPageVO
>
page
=
PageDataVO
.
pageInfo
(
query
,
()
->
baseOrderBiz
.
pageByParm
(
query
.
getSuper
()));
OrderPageVO
orderPageVO
=
page
.
getData
().
get
(
0
);
if
(
null
==
orderPageVO
||
!
OrderTypeEnum
.
RENT_VEHICLE
.
getCode
().
equals
(
orderPageVO
.
getType
()))
{
throw
new
BaseException
(
ResultCode
.
PARAM_ILLEGAL_CODE
,
Sets
.
newSet
(
"订单不存在,或不是租车订单"
));
}
orderDelayBiz
.
delayRentOrder
(
orderPageVO
,
dto
);
return
ObjectRestResponse
.
succ
();
}
@PostMapping
(
"/baseOrder/updateEndCompany"
)
@ResponseBody
@ResponseBody
public
ObjectRestResponse
updateEndCompany
(
@RequestBody
OrderRentVehicleDetail
orderRentVehicleDetail
)
{
public
ObjectRestResponse
updateEndCompany
(
@RequestBody
OrderRentVehicleDetail
orderRentVehicleDetail
)
{
return
baseOrderBiz
.
save
(
orderRentVehicleDetail
);
return
baseOrderBiz
.
save
(
orderRentVehicleDetail
);
}
}
@GetMapping
(
value
=
"/getAll"
)
@GetMapping
(
value
=
"/
baseOrder/
getAll"
)
@ResponseBody
@ResponseBody
public
ObjectRestResponse
getAllOrderList
(
BaseOrderController
.
QueryOrderList
dto
)
{
public
ObjectRestResponse
getAllOrderList
(
BaseOrderController
.
QueryOrderList
dto
)
{
return
backgroundBaseOrderBiz
.
getAllOrderList
(
dto
);
return
backgroundBaseOrderBiz
.
getAllOrderList
(
dto
);
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/service/OrderRentVehicleService.java
View file @
6d051ed4
...
@@ -207,6 +207,8 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
...
@@ -207,6 +207,8 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
bo
.
getOrder
().
setCrtUser
(
bo
.
getCrtUser
());
bo
.
getOrder
().
setCrtUser
(
bo
.
getCrtUser
());
}
}
//
bo
.
setMetaEndTime
(
bo
.
getEndTime
());
super
.
handleDetail
(
bo
);
super
.
handleDetail
(
bo
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
//事务补偿处理
//事务补偿处理
...
...
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/constant/DictionaryKey.java
View file @
6d051ed4
...
@@ -56,7 +56,7 @@ public class DictionaryKey {
...
@@ -56,7 +56,7 @@ public class DictionaryKey {
public
static
final
String
TOUR_IN_REFUND
=
"TOUR_IN_REFUND"
;
public
static
final
String
TOUR_IN_REFUND
=
"TOUR_IN_REFUND"
;
/**
/**
* 租车:公司司机租金、免赔费用、违章预备金
* 租车:公司司机租金、免赔费用、违章预备金
、租车时间缓冲(小时)
*/
*/
public
static
final
String
DRIVER_PRICE
=
"DRIVER_PRICE"
;
public
static
final
String
DRIVER_PRICE
=
"DRIVER_PRICE"
;
public
static
final
String
DAMAGE_SAFE
=
"DAMAGE_SAFE"
;
public
static
final
String
DAMAGE_SAFE
=
"DAMAGE_SAFE"
;
...
@@ -84,4 +84,9 @@ public class DictionaryKey {
...
@@ -84,4 +84,9 @@ public class DictionaryKey {
* 自动退款保留押金的时间(小时)
* 自动退款保留押金的时间(小时)
*/
*/
public
static
final
String
RENT_DEPOSIT_AUTO_REFUND_TIME
=
"RENT_DEPOSIT_AUTO_REFUND_TIME"
;
public
static
final
String
RENT_DEPOSIT_AUTO_REFUND_TIME
=
"RENT_DEPOSIT_AUTO_REFUND_TIME"
;
/**
* 取消时间缓冲(分钟)
*/
public
static
final
String
CANCEL_TIME_BUFFER
=
"CANCEL_TIME_BUFFER"
;
}
}
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/feign/VehicleFeign.java
View file @
6d051ed4
package
com
.
xxfc
.
platform
.
vehicle
.
feign
;
package
com
.
xxfc
.
platform
.
vehicle
.
feign
;
import
com.github.wxiaoqi.security.admin.feign.dto.UserDTO
;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.github.wxiaoqi.security.common.vo.GoodDataVO
;
import
com.github.wxiaoqi.security.common.vo.GoodDataVO
;
import
com.github.wxiaoqi.security.common.vo.PageDataVO
;
import
com.github.wxiaoqi.security.common.vo.PageDataVO
;
...
@@ -16,7 +15,9 @@ import org.springframework.cloud.openfeign.FeignClient;
...
@@ -16,7 +15,9 @@ import org.springframework.cloud.openfeign.FeignClient;
import
org.springframework.http.MediaType
;
import
org.springframework.http.MediaType
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.*
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
/**
/**
* Created by ace on 2017/9/15.
* Created by ace on 2017/9/15.
...
@@ -200,6 +201,14 @@ public interface VehicleFeign {
...
@@ -200,6 +201,14 @@ public interface VehicleFeign {
@RequestParam
(
value
=
"endDate"
)
Long
endDate
,
@RequestParam
(
value
=
"endDate"
)
Long
endDate
,
@RequestParam
(
value
=
"vehicleModelId"
)
Integer
vehicleModelId
,
@RequestParam
(
value
=
"vehicleModelId"
)
Integer
vehicleModelId
,
@RequestParam
(
value
=
"userId"
)
Integer
userId
);
@RequestParam
(
value
=
"userId"
)
Integer
userId
);
/**
* 订单修改订单时间,同时需要修改预定记录
* * @param bookVehicleVo
* @return
*/
@RequestMapping
(
value
=
"/vehicleInfo/bookRecord/order-update"
,
method
=
RequestMethod
.
POST
)
public
RestResponse
updateOrderBookRecord
(
@RequestBody
BookVehicleVO
bookVehicleVo
);
@GetMapping
(
"/branchCompany/company_info"
)
@GetMapping
(
"/branchCompany/company_info"
)
Map
<
Integer
,
String
>
findCompanyMap
();
Map
<
Integer
,
String
>
findCompanyMap
();
...
...
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/pojo/BookVehicleVO.java
View file @
6d051ed4
...
@@ -7,24 +7,30 @@ import java.util.Map;
...
@@ -7,24 +7,30 @@ import java.util.Map;
@Data
@Data
public
class
BookVehicleVO
{
public
class
BookVehicleVO
{
//用途
public
static
final
int
BOOK_TYPE_RENT
=
1
;
/**
/**
* 车辆id
* 车辆id
*/
*/
@ApiModelProperty
(
"车辆id"
)
@ApiModelProperty
(
"车辆id"
)
private
String
vehicleId
;
private
String
vehicleId
;
/**
* 填写RecordId 修改日期
*/
private
Long
vehicleBookRecordId
;
private
Long
vehicleBookRecordId
;
/**
/**
* 预定目标日期(开始)
* 预定目标日期(开始)
*/
*/
@ApiModelProperty
(
"预定目标日期(开始)"
)
@ApiModelProperty
(
"预定目标日期(开始)
yyyy-MM-dd HH:mm:ss
"
)
private
String
bookStartDate
;
private
String
bookStartDate
;
/**
/**
* 预定目标日期(结束)
* 预定目标日期(结束)
*/
*/
@ApiModelProperty
(
"预定目标日期(结束)"
)
@ApiModelProperty
(
"预定目标日期(结束)
yyyy-MM-dd HH:mm:ss
"
)
private
String
bookEndDate
;
private
String
bookEndDate
;
/**
/**
...
...
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/pojo/dto/order/VMCalendarPriceCostDTO.java
View file @
6d051ed4
...
@@ -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
));
...
...
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/biz/VehicleBiz.java
View file @
6d051ed4
...
@@ -399,7 +399,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
...
@@ -399,7 +399,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
DateTime
startDay
=
DateTime
.
parse
(
bookVehicleVo
.
getBookStartDate
(),
DATE_TIME_FORMATTER
);
DateTime
startDay
=
DateTime
.
parse
(
bookVehicleVo
.
getBookStartDate
(),
DATE_TIME_FORMATTER
);
DateTime
endDay
=
DateTime
.
parse
(
bookVehicleVo
.
getBookEndDate
(),
DATE_TIME_FORMATTER
);
DateTime
endDay
=
DateTime
.
parse
(
bookVehicleVo
.
getBookEndDate
(),
DATE_TIME_FORMATTER
);
//转换日期范围为列表,并检查是否合法
//转换日期范围为列表,并检查是否合法
fillDateList4DatePeriod
(
yearMonthAndDate
,
DateTime
.
parse
(
startDay
.
toString
(
DEFAULT_DATE_TIME_FORMATTER
),
DEFAULT_DATE_TIME_FORMATTER
),
DateTime
.
parse
(
endDay
.
toString
(
DEFAULT_DATE_TIME_FORMATTER
),
DEFAULT_DATE_TIME_FORMATTER
));
fillDateList4DatePeriod
(
yearMonthAndDate
,
DateTime
.
parse
(
startDay
.
toString
(
DEFAULT_DATE_TIME_FORMATTER
),
DEFAULT_DATE_TIME_FORMATTER
),
DateTime
.
parse
(
endDay
.
toString
(
DEFAULT_DATE_TIME_FORMATTER
),
DEFAULT_DATE_TIME_FORMATTER
)
,
bookVehicleVo
.
getNotCheckTimeLegal
()
);
if
(
yearMonthAndDate
.
size
()
>
3
)
{
//连续的日期最多夸3个月
if
(
yearMonthAndDate
.
size
()
>
3
)
{
//连续的日期最多夸3个月
throw
new
BaseException
(
ResultCode
.
ONLY_BOOK_TWO_MONTH
);
throw
new
BaseException
(
ResultCode
.
ONLY_BOOK_TWO_MONTH
);
}
}
...
@@ -702,7 +702,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
...
@@ -702,7 +702,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
DateTime
startDay
=
DateTime
.
parse
(
bookVehicleVo
.
getBookStartDate
(),
DATE_TIME_FORMATTER
);
DateTime
startDay
=
DateTime
.
parse
(
bookVehicleVo
.
getBookStartDate
(),
DATE_TIME_FORMATTER
);
DateTime
endDay
=
DateTime
.
parse
(
bookVehicleVo
.
getBookEndDate
(),
DATE_TIME_FORMATTER
);
DateTime
endDay
=
DateTime
.
parse
(
bookVehicleVo
.
getBookEndDate
(),
DATE_TIME_FORMATTER
);
//转换日期范围为列表,并检查是否合法
//转换日期范围为列表,并检查是否合法
fillDateList4DatePeriod
(
yearMonthAndDate
,
DateTime
.
parse
(
startDay
.
toString
(
DEFAULT_DATE_TIME_FORMATTER
),
DEFAULT_DATE_TIME_FORMATTER
),
DateTime
.
parse
(
endDay
.
toString
(
DEFAULT_DATE_TIME_FORMATTER
),
DEFAULT_DATE_TIME_FORMATTER
));
fillDateList4DatePeriod
(
yearMonthAndDate
,
DateTime
.
parse
(
startDay
.
toString
(
DEFAULT_DATE_TIME_FORMATTER
),
DEFAULT_DATE_TIME_FORMATTER
),
DateTime
.
parse
(
endDay
.
toString
(
DEFAULT_DATE_TIME_FORMATTER
),
DEFAULT_DATE_TIME_FORMATTER
)
,
bookVehicleVo
.
getNotCheckTimeLegal
()
);
if
(
yearMonthAndDate
.
size
()
>
3
)
{
//连续的日期最多夸3个月
if
(
yearMonthAndDate
.
size
()
>
3
)
{
//连续的日期最多夸3个月
throw
new
BaseException
(
ResultCode
.
ONLY_BOOK_TWO_MONTH
);
throw
new
BaseException
(
ResultCode
.
ONLY_BOOK_TWO_MONTH
);
}
}
...
@@ -824,11 +824,14 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
...
@@ -824,11 +824,14 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
* @param startDay
* @param startDay
* @param endDay
* @param endDay
*/
*/
private
void
fillDateList4DatePeriod
(
Map
<
String
,
List
<
String
>>
yearMonthAndDate
,
DateTime
startDay
,
DateTime
endDay
)
{
private
void
fillDateList4DatePeriod
(
Map
<
String
,
List
<
String
>>
yearMonthAndDate
,
DateTime
startDay
,
DateTime
endDay
,
Boolean
notCheckTimeLegal
)
{
for
(
DateTime
curDate
=
startDay
;
curDate
.
compareTo
(
endDay
)
<=
0
;
curDate
=
curDate
.
plusDays
(
1
))
{
for
(
DateTime
curDate
=
startDay
;
curDate
.
compareTo
(
endDay
)
<=
0
;
curDate
=
curDate
.
plusDays
(
1
))
{
String
curDateStr
=
curDate
.
toString
(
DEFAULT_DATE_TIME_FORMATTER
);
String
curDateStr
=
curDate
.
toString
(
DEFAULT_DATE_TIME_FORMATTER
);
if
(
curDateStr
.
compareTo
(
DateTime
.
now
().
toString
(
DEFAULT_DATE_TIME_FORMATTER
))
<
0
)
{
if
(!
Boolean
.
TRUE
.
equals
(
notCheckTimeLegal
))
{
throw
new
BaseException
(
ResultCode
.
ONLY_BOOK_FROM_TODAY
);
//判定时间是否合法
if
(
curDateStr
.
compareTo
(
DateTime
.
now
().
toString
(
DEFAULT_DATE_TIME_FORMATTER
))
<
0
)
{
throw
new
BaseException
(
ResultCode
.
ONLY_BOOK_FROM_TODAY
);
}
}
}
String
curYearMonth
=
curDate
.
toString
(
YEARMONTH_DATE_TIME_FORMATTER
);
String
curYearMonth
=
curDate
.
toString
(
YEARMONTH_DATE_TIME_FORMATTER
);
if
(!
yearMonthAndDate
.
containsKey
(
curYearMonth
))
{
if
(!
yearMonthAndDate
.
containsKey
(
curYearMonth
))
{
...
...
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/biz/VehicleModelCalendarPriceBiz.java
View file @
6d051ed4
...
@@ -400,7 +400,7 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr
...
@@ -400,7 +400,7 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr
log
.
info
(
"参数:【{}==当前时间:{}==价格:{}==折扣:{}】"
,
festivalDayMap
,
current_date
,
vehicle_price
,
discount
);
log
.
info
(
"参数:【{}==当前时间:{}==价格:{}==折扣:{}】"
,
festivalDayMap
,
current_date
,
vehicle_price
,
discount
);
Map
<
String
,
Object
>
vehicle_price_days_map
=
new
HashMap
<>(
3
);
Map
<
String
,
Object
>
vehicle_price_days_map
=
new
HashMap
<>(
3
);
Integer
free_days
=
DEFAULT_FREE_DAYS
;
Integer
free_days
=
DEFAULT_FREE_DAYS
;
vehicle_price_days_map
.
put
(
BASE_PRICE_VAL
,
vehicle_price
);
//
vehicle_price_days_map.put(BASE_PRICE_VAL, vehicle_price);
if
(
MapUtil
.
isNotEmpty
(
festivalDayMap
))
{
if
(
MapUtil
.
isNotEmpty
(
festivalDayMap
))
{
VehicleModelHolidayPriceDTO
vehicleModelHolidayPriceDTO
=
festivalDayMap
.
get
(
current_date
);
VehicleModelHolidayPriceDTO
vehicleModelHolidayPriceDTO
=
festivalDayMap
.
get
(
current_date
);
if
(
Objects
.
nonNull
(
vehicleModelHolidayPriceDTO
))
{
if
(
Objects
.
nonNull
(
vehicleModelHolidayPriceDTO
))
{
...
@@ -408,6 +408,7 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr
...
@@ -408,6 +408,7 @@ public class VehicleModelCalendarPriceBiz extends BaseBiz<VehicleModelCalendarPr
free_days
=
vehicleModelHolidayPriceDTO
.
getFreeDays
()
==
null
?
free_days
:
vehicleModelHolidayPriceDTO
.
getFreeDays
();
free_days
=
vehicleModelHolidayPriceDTO
.
getFreeDays
()
==
null
?
free_days
:
vehicleModelHolidayPriceDTO
.
getFreeDays
();
}
}
}
}
vehicle_price_days_map
.
put
(
BASE_PRICE_VAL
,
vehicle_price
);
vehicle_price
=
vehicle_price
.
multiply
(
new
BigDecimal
(
Objects
.
toString
(
discount
/
100.00
)));
vehicle_price
=
vehicle_price
.
multiply
(
new
BigDecimal
(
Objects
.
toString
(
discount
/
100.00
)));
vehicle_price_days_map
.
put
(
PRICE_VAL
,
vehicle_price
);
vehicle_price_days_map
.
put
(
PRICE_VAL
,
vehicle_price
);
vehicle_price_days_map
.
put
(
DAYS_VAL
,
free_days
);
vehicle_price_days_map
.
put
(
DAYS_VAL
,
free_days
);
...
...
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/rest/VehicleController.java
View file @
6d051ed4
...
@@ -229,6 +229,24 @@ public class VehicleController extends BaseController<VehicleBiz> implements Use
...
@@ -229,6 +229,24 @@ public class VehicleController extends BaseController<VehicleBiz> implements Use
return
RestResponse
.
suc
();
return
RestResponse
.
suc
();
}
}
/**
* 订单修改订单时间,同时需要修改预定记录
* * @param bookVehicleVo
* @return
*/
@RequestMapping
(
value
=
"/bookRecord/order-update"
,
method
=
RequestMethod
.
POST
)
@ApiOperation
(
value
=
"订单修改订单时间"
)
public
RestResponse
updateOrderBookRecord
(
@RequestBody
BookVehicleVO
bookVehicleVo
)
throws
Exception
{
Integer
operatorId
=
Integer
.
parseInt
(
BaseContextHandler
.
getUserID
());
String
userName
=
BaseContextHandler
.
getName
();
bookVehicleVo
.
setStatus
(
VehicleBookRecordStatus
.
APPROVE
.
getCode
());
bookVehicleVo
.
setNotCheckTimeLegal
(
Boolean
.
TRUE
);
baseBiz
.
applyVehicle
(
operatorId
,
bookVehicleVo
,
userName
);
return
RestResponse
.
suc
();
}
/**
/**
* 申请预定车辆 需要审核
* 申请预定车辆 需要审核
*
*
...
...
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