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
5b931e2a
Commit
5b931e2a
authored
Oct 09, 2019
by
libin
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
14d829e5
c18f7b42
Changes
26
Show whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
1046 additions
and
5 deletions
+1046
-5
OrderFeign.java
...c/main/java/com/xxfc/platform/order/feign/OrderFeign.java
+4
-0
RentVehicleBO.java
...ava/com/xxfc/platform/order/pojo/order/RentVehicleBO.java
+6
-0
OrderListBiz.java
...in/java/com/xxfc/platform/order/biz/rpc/OrderListBiz.java
+51
-0
BaseOrderMapper.java
.../java/com/xxfc/platform/order/mapper/BaseOrderMapper.java
+4
-0
OrderRentVehicleController.java
.../xxfc/platform/order/rest/OrderRentVehicleController.java
+1
-0
OrderListController.java
...c/platform/order/rest/background/OrderListController.java
+26
-0
OrderRentVehicleService.java
.../xxfc/platform/order/service/OrderRentVehicleService.java
+2
-0
BaseOrderMapper.xml
...rder-server/src/main/resources/mapper/BaseOrderMapper.xml
+21
-3
VehicleCountType.java
.../com/xxfc/platform/vehicle/constant/VehicleCountType.java
+62
-0
VehicleCountRecord.java
.../com/xxfc/platform/vehicle/entity/VehicleCountRecord.java
+81
-0
ExcelParamDto.java
...in/java/com/xxfc/platform/vehicle/pojo/ExcelParamDto.java
+13
-0
RentVehicleBookDTO.java
...va/com/xxfc/platform/vehicle/pojo/RentVehicleBookDTO.java
+6
-0
UsableVeicleDTO.java
.../java/com/xxfc/platform/vehicle/pojo/UsableVeicleDTO.java
+6
-0
VehicleBookRecordVo.java
...a/com/xxfc/platform/vehicle/pojo/VehicleBookRecordVo.java
+3
-0
DownloadUtil.java
...va/com/xxfc/platform/vehicle/util/excel/DownloadUtil.java
+113
-0
pom.xml
xx-vehicle/xx-vehicle-server/pom.xml
+5
-0
VehicleBookRecordBiz.java
...a/com/xxfc/platform/vehicle/biz/VehicleBookRecordBiz.java
+21
-0
VehicleCountRecordBiz.java
.../com/xxfc/platform/vehicle/biz/VehicleCountRecordBiz.java
+475
-0
VehicleBookRecordMapper.java
...xxfc/platform/vehicle/mapper/VehicleBookRecordMapper.java
+3
-0
VehicleCountRecordMapper.java
...xfc/platform/vehicle/mapper/VehicleCountRecordMapper.java
+13
-0
RentVehicleController.java
...com/xxfc/platform/vehicle/rest/RentVehicleController.java
+21
-0
VehicleCountRecordController.java
...c/platform/vehicle/rest/VehicleCountRecordController.java
+46
-0
generatorConfig.xml
...cle-server/src/main/resources/builder/generatorConfig.xml
+2
-2
VehicleBookRecordMapper.xml
...ver/src/main/resources/mapper/VehicleBookRecordMapper.xml
+20
-0
VehicleCountRecordMapper.xml
...er/src/main/resources/mapper/VehicleCountRecordMapper.xml
+38
-0
VehicleMapper.xml
...ehicle-server/src/main/resources/mapper/VehicleMapper.xml
+3
-0
No files found.
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/feign/OrderFeign.java
View file @
5b931e2a
...
...
@@ -3,6 +3,7 @@ package com.xxfc.platform.order.feign;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.github.wxiaoqi.security.common.vo.GoodDataVO
;
import
com.xxfc.platform.order.entity.BaseOrder
;
import
com.xxfc.platform.order.pojo.order.OrderPageVO
;
import
com.xxfc.platform.vehicle.common.RestResponse
;
import
com.xxfc.platform.vehicle.entity.*
;
import
com.xxfc.platform.vehicle.pojo.*
;
...
...
@@ -21,4 +22,7 @@ import java.util.Set;
public
interface
OrderFeign
{
@GetMapping
(
"/baseOrder/count"
)
public
ObjectRestResponse
<
Integer
>
baseOrderCount
(
@RequestParam
(
"hasMemberRight"
)
Integer
hasMemberRight
,
@RequestParam
(
"multiStatus"
)
String
multiStatus
,
@RequestParam
(
"multiTypes"
)
String
multiTypes
,
@RequestParam
(
"userId"
)
Integer
userId
);
@GetMapping
(
"/count/list"
)
public
ObjectRestResponse
<
List
<
OrderPageVO
>>
getOrderList
(
@RequestParam
(
"dateTime"
)
Long
dateTime
,
@RequestParam
(
"type"
)
Integer
type
,
@RequestParam
(
"status"
)
Integer
status
);
}
xx-order/xx-order-api/src/main/java/com/xxfc/platform/order/pojo/order/RentVehicleBO.java
View file @
5b931e2a
...
...
@@ -47,4 +47,10 @@ public class RentVehicleBO extends OrderRentVehicleDetail implements OrderDetail
* 创建用户 -1+后台用户id 后台系统
*/
String
crtUser
;
/**
* 用途 1 租车
*/
@ApiModelProperty
(
hidden
=
true
)
Integer
useType
=
1
;
}
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/rpc/OrderListBiz.java
0 → 100644
View file @
5b931e2a
package
com
.
xxfc
.
platform
.
order
.
biz
.
rpc
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.xxfc.platform.order.contant.enumerate.OrderTypeEnum
;
import
com.xxfc.platform.order.entity.BaseOrder
;
import
com.xxfc.platform.order.mapper.BaseOrderMapper
;
import
com.xxfc.platform.order.pojo.order.OrderPageVO
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Service
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.TimeZone
;
@Service
public
class
OrderListBiz
extends
BaseBiz
<
BaseOrderMapper
,
BaseOrder
>
{
/**
*
* @param dateTime 筛选的时间
* @param type 筛选的类型, 1,租车,2,旅游
* @return
*/
public
ObjectRestResponse
<
List
<
OrderPageVO
>>
getOrderList
(
Long
dateTime
,
Integer
type
,
Integer
status
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
if
(
dateTime
!=
null
)
{
map
.
put
(
"startTime"
,
getDayStart
(
dateTime
));
map
.
put
(
"endTime"
,
getDayStart
(
dateTime
)
+
3600
*
24
*
1000
);
}
map
.
put
(
"status"
,
status
);
if
(
type
==
OrderTypeEnum
.
RENT_VEHICLE
.
getCode
())
{
//租车
List
<
OrderPageVO
>
list
=
mapper
.
selectAllRentVehicleOrder
(
map
);
return
ObjectRestResponse
.
succ
(
list
);
}
else
if
(
type
==
OrderTypeEnum
.
TOUR
.
getCode
())
{
List
<
OrderPageVO
>
list
=
mapper
.
selectAllTourOrder
(
map
);
return
ObjectRestResponse
.
succ
(
list
);
}
else
{
return
ObjectRestResponse
.
succ
();
}
}
public
static
Long
getDayStart
(
Long
datetime
)
{
long
current
=
datetime
;
long
zero
=
current
/
(
1000
*
3600
*
24
)
*
(
1000
*
3600
*
24
)
-
TimeZone
.
getDefault
().
getRawOffset
();
return
zero
;
}
}
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/mapper/BaseOrderMapper.java
View file @
5b931e2a
...
...
@@ -28,4 +28,8 @@ public interface BaseOrderMapper extends Mapper<BaseOrder> {
public
OrderPageVO
getOrderDetail
(
String
no
);
public
List
<
OrderPageVO
>
selectAllRentVehicleOrder
(
Map
<
String
,
Object
>
paramMap
);
public
List
<
OrderPageVO
>
selectAllTourOrder
(
Map
<
String
,
Object
>
paramMap
);
}
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/rest/OrderRentVehicleController.java
View file @
5b931e2a
...
...
@@ -74,6 +74,7 @@ public class OrderRentVehicleController extends CommonBaseController {
bo
.
setAppUserDTO
(
userFeign
.
userDetailById
(
dto
.
getAppUserId
()).
getData
());
bo
.
setCrtUser
(
"-1"
+
BaseContextHandler
.
getUserID
());
bo
.
setUseType
(
null
);
orderRentVehicleService
.
createOrder
(
bo
);
return
ObjectRestResponse
.
succ
(
bo
.
getOrder
());
}
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/rest/background/OrderListController.java
0 → 100644
View file @
5b931e2a
package
com
.
xxfc
.
platform
.
order
.
rest
.
background
;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.xxfc.platform.order.biz.rpc.OrderListBiz
;
import
com.xxfc.platform.order.pojo.order.OrderPageVO
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
@RestController
@RequestMapping
(
value
=
"/count"
)
public
class
OrderListController
{
@Autowired
OrderListBiz
orderListBiz
;
@GetMapping
(
"/list"
)
public
ObjectRestResponse
<
List
<
OrderPageVO
>>
getOrderList
(
@RequestParam
(
"dateTime"
)
Long
dateTime
,
@RequestParam
(
"type"
)
Integer
type
,
@RequestParam
(
"status"
)
Integer
status
)
{
return
orderListBiz
.
getOrderList
(
dateTime
,
type
,
status
);
}
}
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/service/OrderRentVehicleService.java
View file @
5b931e2a
...
...
@@ -459,6 +459,8 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
rentVehicleBookDTO
.
setOrderNo
(
detail
.
getOrder
().
getNo
());
rentVehicleBookDTO
.
setNumberPlate
(
numberPlate
);
rentVehicleBookDTO
.
setStatus
(
status
);
rentVehicleBookDTO
.
setUseType
(
detail
.
getUseType
());
if
(
null
!=
detail
.
getAccompanyItems
())
{
rentVehicleBookDTO
.
setSelectedAccItem
(
detail
.
getAccompanyItems
().
parallelStream
().
collect
(
Collectors
.
toMap
(
OrderAccompanyDTO:
:
getId
,
OrderAccompanyDTO:
:
getNum
)));
}
...
...
xx-order/xx-order-server/src/main/resources/mapper/BaseOrderMapper.xml
View file @
5b931e2a
...
...
@@ -130,9 +130,6 @@
</foreach>
</if>
<if
test=
"userId != null"
>
and b.user_id = #{userId}
</if>
<if
test=
"status != null"
>
and b.status = #{status}
</if>
...
...
@@ -260,5 +257,26 @@
where no = #{no}
</select>
<select
id=
"selectAllRentVehicleOrder"
parameterType=
"Map"
resultMap=
"orderPageMap"
>
select b.*
from base_order b
LEFT JOIN order_rent_vehicle_detail r on r.order_id = b.id
where b.type = 2 and b.status
>
= 4
<if
test=
"startTime != null and status == 1"
>
and r.start_time between #{startTime} and #{endTime}
</if>
<if
test=
"startTime != null and status == 2"
>
and r.start_time between #{startTime} and #{endTime}
</if>
</select>
<select
id=
"selectAllTourOrder"
parameterType=
"Map"
resultMap=
"orderPageMap"
>
select b.*
from base_order b
LEFT JOIN order_tour_detail r on r.order_id = b.id
where b.type = 2 and b.status
>
= 4
<if
test=
"startTime != null"
>
and r.start_time between #{startTime} and #{endTime}
</if>
</select>
</mapper>
\ No newline at end of file
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/constant/VehicleCountType.java
0 → 100644
View file @
5b931e2a
package
com
.
xxfc
.
platform
.
vehicle
.
constant
;
import
java.util.HashMap
;
import
java.util.Map
;
public
enum
VehicleCountType
{
RENT_VEHICLE
(
1
,
"租车用车"
),
TOUR
(
2
,
"旅游用车"
),
INNER
(
3
,
"内部用车"
),
;
/**
* 编码
*/
private
Integer
code
;
/**
* 类型描述
*/
private
String
desc
;
public
static
Map
<
Integer
,
VehicleCountType
>
codeAndDesc
=
new
HashMap
<
Integer
,
VehicleCountType
>();
//Maps.newHashMap();
static
{
for
(
VehicleCountType
enumE
:
VehicleCountType
.
values
()){
codeAndDesc
.
put
(
enumE
.
getCode
(),
enumE
);
}
}
VehicleCountType
(
Integer
code
,
String
desc
){
this
.
code
=
code
;
this
.
desc
=
desc
;
}
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
static
Boolean
exists
(
Integer
code
){
return
codeAndDesc
.
containsKey
(
code
);
}
public
static
VehicleCountType
get
(
Integer
code
)
{
for
(
VehicleCountType
enumE
:
VehicleCountType
.
values
())
{
if
(
enumE
.
getCode
().
equals
(
code
))
{
return
enumE
;
}
}
return
null
;
}
}
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/entity/VehicleCountRecord.java
0 → 100644
View file @
5b931e2a
package
com
.
xxfc
.
platform
.
vehicle
.
entity
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
lombok.Data
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
javax.persistence.*
;
import
java.util.Date
;
@Table
(
name
=
"vehicle_count_record"
)
@Data
public
class
VehicleCountRecord
{
@Id
private
Integer
id
;
private
Integer
type
;
/**
* 应出车数量
*/
@Column
(
name
=
"departure_num"
)
private
Integer
departureNum
;
/**
* 实际出车数量
*/
@Column
(
name
=
"actual_departure_num"
)
private
Integer
actualDepartureNum
;
/**
* 延期交车数量
*/
@Column
(
name
=
"after_departure_num"
)
private
Integer
afterDepartureNum
;
/**
* 提前交车数
*/
@Column
(
name
=
"before_departure_num"
)
private
Integer
beforeDepartureNum
;
/**
* 应还车数量
*/
@Column
(
name
=
"arrival_num"
)
private
Integer
arrivalNum
;
/**
* 未提前还车数量
*/
@Column
(
name
=
"actual_arrival_num"
)
private
Integer
actualArrivalNum
;
/**
* 延后还车数量
*/
@Column
(
name
=
"after_arrival_num"
)
private
Integer
afterArrivalNum
;
/**
* 提前还车数量
*/
@Column
(
name
=
"before_arrival_num"
)
private
Integer
beforeArrivalNum
;
/**
* 统计日期 yyyy-MM-dd
*/
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
countDate
;
@Transient
private
String
startTime
;
@Transient
private
String
endTime
;
}
\ No newline at end of file
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/pojo/ExcelParamDto.java
0 → 100644
View file @
5b931e2a
package
com
.
xxfc
.
platform
.
vehicle
.
pojo
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
ExcelParamDto
{
List
<
Object
[]>
data
;
String
[]
header
;
String
name
;
String
path
;
}
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/pojo/RentVehicleBookDTO.java
View file @
5b931e2a
...
...
@@ -91,6 +91,12 @@ public class RentVehicleBookDTO extends PageParam {
@ApiModelProperty
(
"扩展结束时间"
)
String
endDateExtend
;
/**
* 用途 1 租车
*/
@ApiModelProperty
(
hidden
=
true
)
Integer
useType
=
1
;
public
void
setBookStartDate
(
String
bookStartDate
)
{
this
.
bookStartDate
=
bookStartDate
;
//首次设置
...
...
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/pojo/UsableVeicleDTO.java
View file @
5b931e2a
...
...
@@ -57,6 +57,12 @@ public class UsableVeicleDTO extends PageParam {
@ApiModelProperty
(
hidden
=
true
)
Integer
withoutRecordWhere
=
1
;
/**
* 用途 1 租车
*/
@ApiModelProperty
(
hidden
=
true
)
Integer
useType
=
1
;
public
void
setStartDateTamp
(
Long
startDateTamp
)
{
this
.
startDateTamp
=
startDateTamp
;
this
.
startDate
=
DEFAULT_DATE_TIME_FORMATTER
.
format
(
LocalDateTime
.
ofInstant
(
Instant
.
ofEpochMilli
(
startDateTamp
),
ZoneOffset
.
ofHours
(
8
)));
...
...
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/pojo/VehicleBookRecordVo.java
View file @
5b931e2a
...
...
@@ -40,4 +40,7 @@ public class VehicleBookRecordVo extends VehicleBookRecord {
List
<
VehicleUpkeepItem
>
vehicleUpkeepItems
;
private
String
userCompanyName
;
}
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/util/excel/DownloadUtil.java
0 → 100644
View file @
5b931e2a
package
com
.
xxfc
.
platform
.
vehicle
.
util
.
excel
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.*
;
import
java.net.URLEncoder
;
/***
* 将文件内容响应到浏览器
*/
public
class
DownloadUtil
{
// 字符编码格式
private
static
String
charsetCode
=
"utf-8"
;
/**
* 文件的内容类型
*/
private
static
String
getFileContentType
(
String
name
){
String
result
=
""
;
String
fileType
=
name
.
toLowerCase
();
if
(
fileType
.
endsWith
(
".png"
))
{
result
=
"image/png"
;
}
else
if
(
fileType
.
endsWith
(
".gif"
))
{
result
=
"image/gif"
;
}
else
if
(
fileType
.
endsWith
(
".jpg"
)
||
fileType
.
endsWith
(
".jpeg"
))
{
result
=
"image/jpeg"
;
}
else
if
(
fileType
.
endsWith
(
".svg"
)){
result
=
"image/svg+xml"
;
}
else
if
(
fileType
.
endsWith
(
".doc"
))
{
result
=
"application/msword"
;
}
else
if
(
fileType
.
endsWith
(
".xls"
))
{
result
=
"application/x-excel"
;
}
else
if
(
fileType
.
endsWith
(
".zip"
))
{
result
=
"application/zip"
;
}
else
if
(
fileType
.
endsWith
(
".pdf"
))
{
result
=
"application/pdf"
;
}
else
{
result
=
"application/octet-stream"
;
}
return
result
;
}
/**
* 下载文件
* @param path 文件的位置
* @param fileName 自定义下载文件的名称
* @param resp http响应
* @param req http请求
*/
public
static
void
downloadFile
(
String
path
,
String
fileName
,
HttpServletResponse
resp
,
HttpServletRequest
req
){
File
file
=
new
File
(
path
);
try
{
/**
* 中文乱码解决
*/
String
type
=
req
.
getHeader
(
"User-Agent"
).
toLowerCase
();
if
(
type
.
indexOf
(
"firefox"
)>
0
||
type
.
indexOf
(
"chrome"
)>
0
){
/**
* 谷歌或火狐
*/
fileName
=
new
String
(
fileName
.
getBytes
(
charsetCode
),
"iso8859-1"
);
}
else
{
/**
* IE
*/
fileName
=
URLEncoder
.
encode
(
fileName
,
charsetCode
);
}
// 设置响应的头部信息
resp
.
setHeader
(
"content-disposition"
,
"attachment;filename="
+
fileName
);
// 设置响应内容的类型
resp
.
setContentType
(
getFileContentType
(
fileName
)+
"; charset="
+
charsetCode
);
// 设置响应内容的长度
resp
.
setContentLength
((
int
)
file
.
length
());
// 输出
outStream
(
new
FileInputStream
(
file
),
resp
.
getOutputStream
());
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
"执行downloadFile发生了异常:"
+
e
.
getMessage
());
}
finally
{
if
(
file
.
exists
())
{
file
.
delete
();
}
}
}
/**
* 基础字节数组输出
*/
private
static
void
outStream
(
InputStream
is
,
OutputStream
os
)
{
try
{
byte
[]
buffer
=
new
byte
[
10240
];
int
length
=
-
1
;
while
((
length
=
is
.
read
(
buffer
))
!=
-
1
)
{
os
.
write
(
buffer
,
0
,
length
);
os
.
flush
();
}
}
catch
(
Exception
e
)
{
System
.
out
.
println
(
"执行 outStream 发生了异常:"
+
e
.
getMessage
());
}
finally
{
try
{
os
.
close
();
}
catch
(
IOException
e
)
{
}
try
{
is
.
close
();
}
catch
(
IOException
e
)
{
}
}
}
}
\ No newline at end of file
xx-vehicle/xx-vehicle-server/pom.xml
View file @
5b931e2a
...
...
@@ -29,6 +29,11 @@
<artifactId>
xx-universal-api
</artifactId>
<version>
2.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
com.xxfc.platform
</groupId>
<artifactId>
xx-order-api
</artifactId>
<version>
2.0-SNAPSHOT
</version>
</dependency>
</dependencies>
<build>
...
...
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/biz/VehicleBookRecordBiz.java
View file @
5b931e2a
...
...
@@ -311,10 +311,24 @@ public class VehicleBookRecordBiz extends BaseBiz<VehicleBookRecordMapper, Vehic
}
}
}
if
(
vehicleBookRecordVo
.
getBookUser
()
!=
null
)
{
UserDTO
userDTO
=
userFeign
.
userinfoByUid
(
vehicleBookRecordVo
.
getBookUser
()).
getData
();
if
(
userDTO
!=
null
)
{
BranchCompany
branchCompany
=
branchCompanyBiz
.
getById
(
userDTO
.
getCompanyId
());
if
(
branchCompany
!=
null
)
{
vehicleBookRecordVo
.
setUserCompanyName
(
branchCompany
.
getName
());
}
}
}
}
return
vehicleBookRecordVos
;
}
public
ObjectRestResponse
<
List
<
VehicleBookRecordVo
>>
selectByIds
(
List
<
Long
>
ids
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"ids"
,
ids
);
return
ObjectRestResponse
.
succ
(
mapper
.
selectByIds
(
map
));
}
public
RestResponse
<
Integer
>
lift
(
Integer
operatorId
,
String
userName
,
LiftVehicleVo
liftVehicleVo
)
throws
Exception
{
Map
<
String
,
Object
>
params
=
PropertyUtils
.
describe
(
liftVehicleVo
);
...
...
@@ -499,6 +513,13 @@ public class VehicleBookRecordBiz extends BaseBiz<VehicleBookRecordMapper, Vehic
}
public
ObjectRestResponse
<
List
<
VehicleBookRecordVo
>>
selectAllBookRecord
(
Date
startTime
,
Date
endTime
,
Integer
status
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"startTime"
,
startTime
);
map
.
put
(
"endTime"
,
endTime
);
map
.
put
(
"status"
,
status
);
return
ObjectRestResponse
.
succ
(
mapper
.
selectAllBookRecord
(
map
));
}
/**
* 获取上月数据,并复制到历史表
...
...
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/biz/VehicleCountRecordBiz.java
0 → 100644
View file @
5b931e2a
package
com
.
xxfc
.
platform
.
vehicle
.
biz
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.hutool.core.bean.copier.CopyOptions
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.github.wxiaoqi.security.common.exception.BaseException
;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.xxfc.platform.order.contant.enumerate.OrderTypeEnum
;
import
com.xxfc.platform.order.entity.OrderRentVehicleDetail
;
import
com.xxfc.platform.order.entity.OrderTourDetail
;
import
com.xxfc.platform.order.feign.OrderFeign
;
import
com.xxfc.platform.order.pojo.order.OrderPageVO
;
import
com.xxfc.platform.vehicle.constant.ResCode.ResCode
;
import
com.xxfc.platform.vehicle.constant.VehicleCountType
;
import
com.xxfc.platform.vehicle.entity.VehicleBookRecord
;
import
com.xxfc.platform.vehicle.entity.VehicleCountRecord
;
import
com.xxfc.platform.vehicle.mapper.VehicleCountRecordMapper
;
import
com.xxfc.platform.vehicle.pojo.ExcelParamDto
;
import
com.xxfc.platform.vehicle.pojo.VehicleBookRecordVo
;
import
com.xxfc.platform.vehicle.util.excel.ExcelExport
;
import
org.apache.commons.collections.MapUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.joda.time.DateTime
;
import
org.joda.time.format.DateTimeFormat
;
import
org.joda.time.format.DateTimeFormatter
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Service
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.*
;
import
java.math.BigDecimal
;
import
java.sql.Timestamp
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* 统计出车,交车数量
*/
@Service
public
class
VehicleCountRecordBiz
extends
BaseBiz
<
VehicleCountRecordMapper
,
VehicleCountRecord
>
{
public
static
final
DateTimeFormatter
DEFAULT_DATE_TIME_FORMATTER
=
DateTimeFormat
.
forPattern
(
"yyyy-MM-dd"
);
public
static
final
DateTimeFormatter
DATE_TIME_FORMATTER
=
DateTimeFormat
.
forPattern
(
"yyyy-MM-dd HH:mm:ss"
);
@Autowired
VehicleBookRecordBiz
vehicleBookRecordBiz
;
@Autowired
VehicleDepartureService
vehicleDepartureService
;
@Autowired
OrderFeign
orderFeign
;
/**
* 获取统计出车记录
*
* @param vehicleCountRecord
* @return
*/
public
ObjectRestResponse
countDepartureVehicle
(
VehicleCountRecord
vehicleCountRecord
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
if
(
vehicleCountRecord
.
getType
()
!=
null
)
{
map
.
put
(
"type"
,
vehicleCountRecord
.
getType
());
}
if
(
StringUtils
.
isNotBlank
(
vehicleCountRecord
.
getStartTime
()))
{
if
(
StringUtils
.
isBlank
(
vehicleCountRecord
.
getEndTime
()))
{
vehicleCountRecord
.
setEndTime
(
vehicleCountRecord
.
getStartTime
());
}
map
.
put
(
"startTime"
,
DateTime
.
parse
(
vehicleCountRecord
.
getStartTime
(),
DEFAULT_DATE_TIME_FORMATTER
).
toDate
());
map
.
put
(
"endTime"
,
DateTime
.
parse
(
vehicleCountRecord
.
getEndTime
(),
DEFAULT_DATE_TIME_FORMATTER
).
toDate
());
}
if
(
MapUtils
.
isNotEmpty
(
map
))
{
List
<
VehicleCountRecord
>
list
=
mapper
.
selectByTypeAndTime
(
map
);
if
(
list
==
null
)
{
return
ObjectRestResponse
.
createFailedResult
(
ResCode
.
FIND_DATA_NOT_EXIST
.
getCode
(),
ResCode
.
FIND_DATA_NOT_EXIST
.
getDesc
());
}
return
ObjectRestResponse
.
succ
(
list
);
}
return
ObjectRestResponse
.
succ
(
new
ArrayList
<>());
}
/**
* 添加统计记录
*
* @return
*/
public
void
addAll
()
{
Long
nowTime
=
getDayStart
();
Long
lastTime
=
nowTime
+
24
*
3600
*
1000
-
1
;
Date
startTime
=
new
Date
();
startTime
.
setTime
(
nowTime
);
Date
endTime
=
new
Date
();
endTime
.
setTime
(
lastTime
);
SimpleDateFormat
simpleDateFormat
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
String
startDate
=
null
;
String
endDate
=
null
;
try
{
startDate
=
simpleDateFormat
.
format
(
startTime
);
endDate
=
simpleDateFormat
.
format
(
endTime
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
DateTime
startDay
=
DateTime
.
parse
(
startDate
,
DEFAULT_DATE_TIME_FORMATTER
);
DateTime
endDay
=
DateTime
.
parse
(
endDate
,
DEFAULT_DATE_TIME_FORMATTER
);
int
i
=
0
;
for
(
DateTime
curDate
=
startDay
;
i
<
30
;
curDate
=
curDate
.
minusDays
(
1
))
{
i
++;
nowTime
=
curDate
.
getMillis
();
lastTime
=
nowTime
+
24
*
3600
*
1000
-
1
;
startTime
.
setTime
(
nowTime
);
endTime
.
setTime
(
lastTime
);
Date
nowDate
=
curDate
.
toDate
();
VehicleCountRecord
vehicleCountRecord
=
new
VehicleCountRecord
();
VehicleCountRecord
tourCountRecord
=
new
VehicleCountRecord
();
VehicleCountRecord
innerCountRecord
=
new
VehicleCountRecord
();
//租车应出车数量
List
<
OrderPageVO
>
vehicleDepartureList
=
orderFeign
.
getOrderList
(
nowTime
,
OrderTypeEnum
.
RENT_VEHICLE
.
getCode
(),
1
).
getData
();
if
(
vehicleDepartureList
!=
null
&&
vehicleDepartureList
.
size
()
>
0
)
{
vehicleCountRecord
.
setDepartureNum
(
vehicleDepartureList
.
size
());
List
<
OrderRentVehicleDetail
>
orderRentVehicleDetails
=
vehicleDepartureList
.
stream
().
map
(
OrderPageVO:
:
getOrderRentVehicleDetail
).
collect
(
Collectors
.
toList
());
if
(
orderRentVehicleDetails
!=
null
&&
orderRentVehicleDetails
.
size
()
>
0
)
{
List
<
Long
>
bookRecordIds
=
orderRentVehicleDetails
.
stream
().
map
(
OrderRentVehicleDetail:
:
getBookRecordId
).
collect
(
Collectors
.
toList
());
if
(
bookRecordIds
!=
null
&&
bookRecordIds
.
size
()
>
0
)
{
List
<
VehicleBookRecordVo
>
vehicleBookRecordVos
=
vehicleBookRecordBiz
.
selectByIds
(
bookRecordIds
).
getData
();
if
(
vehicleBookRecordVos
!=
null
&&
vehicleBookRecordVos
.
size
()
>
0
)
{
Map
<
Integer
,
Integer
>
map
=
getDeparture
(
vehicleBookRecordVos
,
1
);
if
(
MapUtils
.
isNotEmpty
(
map
))
{
// 租车提前交车数量 已经还车且交车时间小于出车时间,
vehicleCountRecord
.
setBeforeDepartureNum
(
map
.
get
(
2
));
//延后交车,还未交车
vehicleCountRecord
.
setAfterDepartureNum
(
map
.
get
(
1
));
//正常交车,在当天时间内交车
vehicleCountRecord
.
setActualDepartureNum
(
map
.
get
(
3
));
}
}
}
}
}
vehicleCountRecord
.
setType
(
VehicleCountType
.
RENT_VEHICLE
.
getCode
());
//旅游应出车数量
List
<
OrderPageVO
>
tourDepartureList
=
orderFeign
.
getOrderList
(
nowTime
,
OrderTypeEnum
.
TOUR
.
getCode
(),
1
).
getData
();
if
(
tourDepartureList
!=
null
&&
tourDepartureList
.
size
()
>
0
)
{
tourCountRecord
.
setDepartureNum
(
tourDepartureList
.
size
());
tourCountRecord
.
setActualDepartureNum
(
tourDepartureList
.
size
());
}
tourCountRecord
.
setType
(
VehicleCountType
.
TOUR
.
getCode
());
//内部用车应出车数量
List
<
VehicleBookRecordVo
>
vehicleDepartureBookRecordList
=
vehicleBookRecordBiz
.
selectAllBookRecord
(
startTime
,
endTime
,
1
).
getData
();
if
(
vehicleDepartureBookRecordList
!=
null
&&
vehicleDepartureBookRecordList
.
size
()
>
0
)
{
innerCountRecord
.
setDepartureNum
(
vehicleDepartureBookRecordList
.
size
());
Map
<
Integer
,
Integer
>
map
=
getDeparture
(
vehicleDepartureBookRecordList
,
1
);
if
(
MapUtils
.
isNotEmpty
(
map
))
{
// 租车提前交车数量 已经出车且交车时间小于出车时间,
innerCountRecord
.
setBeforeDepartureNum
(
map
.
get
(
2
));
//延后交车,还未交车
innerCountRecord
.
setAfterDepartureNum
(
map
.
get
(
1
));
//正常交车,在当天时间内交车
innerCountRecord
.
setActualDepartureNum
(
map
.
get
(
3
));
}
}
innerCountRecord
.
setType
(
VehicleCountType
.
INNER
.
getCode
());
//租车应还车数量
List
<
OrderPageVO
>
vehicleArrivalList
=
orderFeign
.
getOrderList
(
nowTime
,
OrderTypeEnum
.
RENT_VEHICLE
.
getCode
(),
2
).
getData
();
if
(
vehicleArrivalList
!=
null
&&
vehicleArrivalList
.
size
()
>
0
)
{
vehicleCountRecord
.
setArrivalNum
(
vehicleArrivalList
.
size
());
List
<
OrderRentVehicleDetail
>
orderRentVehicleDetails
=
vehicleDepartureList
.
stream
().
map
(
OrderPageVO:
:
getOrderRentVehicleDetail
).
collect
(
Collectors
.
toList
());
if
(
orderRentVehicleDetails
!=
null
&&
orderRentVehicleDetails
.
size
()
>
0
)
{
List
<
Long
>
bookRecordIds
=
orderRentVehicleDetails
.
stream
().
map
(
OrderRentVehicleDetail:
:
getBookRecordId
).
collect
(
Collectors
.
toList
());
if
(
bookRecordIds
!=
null
&&
bookRecordIds
.
size
()
>
0
)
{
List
<
VehicleBookRecordVo
>
vehicleBookRecordVos
=
vehicleBookRecordBiz
.
selectByIds
(
bookRecordIds
).
getData
();
if
(
vehicleBookRecordVos
!=
null
&&
vehicleBookRecordVos
.
size
()
>
0
)
{
Map
<
Integer
,
Integer
>
map
=
getDeparture
(
vehicleBookRecordVos
,
2
);
if
(
MapUtils
.
isNotEmpty
(
map
))
{
// 租车提前还车数量 已经出车且还车时间小于还车时间,
vehicleCountRecord
.
setBeforeArrivalNum
(
map
.
get
(
2
));
//延后还车,还未还车
vehicleCountRecord
.
setAfterArrivalNum
(
map
.
get
(
1
));
//正常还车,在当天时间内还车
vehicleCountRecord
.
setActualArrivalNum
(
map
.
get
(
3
));
}
}
}
}
}
//旅游应还车数量
List
<
OrderPageVO
>
tourArrivalList
=
orderFeign
.
getOrderList
(
nowTime
,
OrderTypeEnum
.
TOUR
.
getCode
(),
2
).
getData
();
if
(
tourArrivalList
!=
null
&&
tourArrivalList
.
size
()
>
0
)
{
tourCountRecord
.
setArrivalNum
(
tourArrivalList
.
size
());
tourCountRecord
.
setActualArrivalNum
(
tourArrivalList
.
size
());
}
//内部用车应还车数量
List
<
VehicleBookRecordVo
>
vehicleArrivalBookRecordList
=
vehicleBookRecordBiz
.
selectAllBookRecord
(
startTime
,
endTime
,
2
).
getData
();
if
(
vehicleArrivalBookRecordList
!=
null
&&
vehicleArrivalBookRecordList
.
size
()
>
0
)
{
innerCountRecord
.
setArrivalNum
(
vehicleArrivalBookRecordList
.
size
());
Map
<
Integer
,
Integer
>
map
=
getDeparture
(
vehicleDepartureBookRecordList
,
2
);
if
(
MapUtils
.
isNotEmpty
(
map
))
{
// 租车提前交车数量 已经出车且还车时间小于还车时间,
innerCountRecord
.
setBeforeArrivalNum
(
map
.
get
(
2
));
//延后还车,还未还车
innerCountRecord
.
setAfterArrivalNum
(
map
.
get
(
1
));
//正常还车,在当天时间内还车
innerCountRecord
.
setActualArrivalNum
(
map
.
get
(
3
));
}
}
vehicleCountRecord
.
setCountDate
(
nowDate
);
tourCountRecord
.
setCountDate
(
nowDate
);
innerCountRecord
.
setCountDate
(
nowDate
);
save
(
vehicleCountRecord
);
save
(
tourCountRecord
);
save
(
innerCountRecord
);
}
}
/**
* 添加统计记录
*
* @return
*/
@Scheduled
(
cron
=
"0 0 2 * * ?"
)
public
void
add
()
{
Long
nowTime
=
getDayStart
();
Long
lastTime
=
nowTime
+
24
*
3600
*
1000
-
1
;
Date
startTime
=
new
Date
();
startTime
.
setTime
(
nowTime
);
Date
endTime
=
new
Date
();
endTime
.
setTime
(
lastTime
);
SimpleDateFormat
simpleDateFormat
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
String
startDate
=
null
;
try
{
startDate
=
simpleDateFormat
.
format
(
startTime
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
DateTime
startDay
=
DateTime
.
parse
(
startDate
,
DEFAULT_DATE_TIME_FORMATTER
);
Date
nowDate
=
startDay
.
toDate
();
VehicleCountRecord
vehicleCountRecord
=
new
VehicleCountRecord
();
VehicleCountRecord
tourCountRecord
=
new
VehicleCountRecord
();
VehicleCountRecord
innerCountRecord
=
new
VehicleCountRecord
();
//租车应出车数量
List
<
OrderPageVO
>
vehicleDepartureList
=
orderFeign
.
getOrderList
(
nowTime
,
OrderTypeEnum
.
RENT_VEHICLE
.
getCode
(),
1
).
getData
();
if
(
vehicleDepartureList
!=
null
&&
vehicleDepartureList
.
size
()
>
0
)
{
vehicleCountRecord
.
setDepartureNum
(
vehicleDepartureList
.
size
());
List
<
OrderRentVehicleDetail
>
orderRentVehicleDetails
=
vehicleDepartureList
.
stream
().
map
(
OrderPageVO:
:
getOrderRentVehicleDetail
).
collect
(
Collectors
.
toList
());
if
(
orderRentVehicleDetails
!=
null
&&
orderRentVehicleDetails
.
size
()
>
0
)
{
List
<
Long
>
bookRecordIds
=
orderRentVehicleDetails
.
stream
().
map
(
OrderRentVehicleDetail:
:
getBookRecordId
).
collect
(
Collectors
.
toList
());
if
(
bookRecordIds
!=
null
&&
bookRecordIds
.
size
()
>
0
)
{
List
<
VehicleBookRecordVo
>
vehicleBookRecordVos
=
vehicleBookRecordBiz
.
selectByIds
(
bookRecordIds
).
getData
();
if
(
vehicleBookRecordVos
!=
null
&&
vehicleBookRecordVos
.
size
()
>
0
)
{
Map
<
Integer
,
Integer
>
map
=
getDeparture
(
vehicleBookRecordVos
,
1
);
if
(
MapUtils
.
isNotEmpty
(
map
))
{
// 租车提前交车数量 已经还车且交车时间小于出车时间,
vehicleCountRecord
.
setBeforeDepartureNum
(
map
.
get
(
2
));
//延后交车,还未交车
vehicleCountRecord
.
setAfterDepartureNum
(
map
.
get
(
1
));
//正常交车,在当天时间内交车
vehicleCountRecord
.
setActualDepartureNum
(
map
.
get
(
3
));
}
}
}
}
}
vehicleCountRecord
.
setType
(
VehicleCountType
.
RENT_VEHICLE
.
getCode
());
//旅游应出车数量
List
<
OrderPageVO
>
tourDepartureList
=
orderFeign
.
getOrderList
(
nowTime
,
OrderTypeEnum
.
TOUR
.
getCode
(),
1
).
getData
();
if
(
tourDepartureList
!=
null
&&
tourDepartureList
.
size
()
>
0
)
{
tourCountRecord
.
setDepartureNum
(
tourDepartureList
.
size
());
tourCountRecord
.
setActualDepartureNum
(
tourDepartureList
.
size
());
}
tourCountRecord
.
setType
(
VehicleCountType
.
TOUR
.
getCode
());
//内部用车应出车数量
List
<
VehicleBookRecordVo
>
vehicleDepartureBookRecordList
=
vehicleBookRecordBiz
.
selectAllBookRecord
(
startTime
,
endTime
,
1
).
getData
();
if
(
vehicleDepartureBookRecordList
!=
null
&&
vehicleDepartureBookRecordList
.
size
()
>
0
)
{
innerCountRecord
.
setDepartureNum
(
vehicleDepartureBookRecordList
.
size
());
Map
<
Integer
,
Integer
>
map
=
getDeparture
(
vehicleDepartureBookRecordList
,
1
);
if
(
MapUtils
.
isNotEmpty
(
map
))
{
// 租车提前交车数量 已经出车且交车时间小于出车时间,
innerCountRecord
.
setBeforeDepartureNum
(
map
.
get
(
2
));
//延后交车,还未交车
innerCountRecord
.
setAfterDepartureNum
(
map
.
get
(
1
));
//正常交车,在当天时间内交车
innerCountRecord
.
setActualDepartureNum
(
map
.
get
(
3
));
}
}
innerCountRecord
.
setType
(
VehicleCountType
.
INNER
.
getCode
());
//租车应还车数量
List
<
OrderPageVO
>
vehicleArrivalList
=
orderFeign
.
getOrderList
(
nowTime
,
OrderTypeEnum
.
RENT_VEHICLE
.
getCode
(),
2
).
getData
();
if
(
vehicleArrivalList
!=
null
&&
vehicleArrivalList
.
size
()
>
0
)
{
vehicleCountRecord
.
setArrivalNum
(
vehicleArrivalList
.
size
());
List
<
OrderRentVehicleDetail
>
orderRentVehicleDetails
=
vehicleDepartureList
.
stream
().
map
(
OrderPageVO:
:
getOrderRentVehicleDetail
).
collect
(
Collectors
.
toList
());
if
(
orderRentVehicleDetails
!=
null
&&
orderRentVehicleDetails
.
size
()
>
0
)
{
List
<
Long
>
bookRecordIds
=
orderRentVehicleDetails
.
stream
().
map
(
OrderRentVehicleDetail:
:
getBookRecordId
).
collect
(
Collectors
.
toList
());
if
(
bookRecordIds
!=
null
&&
bookRecordIds
.
size
()
>
0
)
{
List
<
VehicleBookRecordVo
>
vehicleBookRecordVos
=
vehicleBookRecordBiz
.
selectByIds
(
bookRecordIds
).
getData
();
if
(
vehicleBookRecordVos
!=
null
&&
vehicleBookRecordVos
.
size
()
>
0
)
{
Map
<
Integer
,
Integer
>
map
=
getDeparture
(
vehicleBookRecordVos
,
2
);
if
(
MapUtils
.
isNotEmpty
(
map
))
{
// 租车提前还车数量 已经出车且还车时间小于还车时间,
vehicleCountRecord
.
setBeforeArrivalNum
(
map
.
get
(
2
));
//延后还车,还未还车
vehicleCountRecord
.
setAfterArrivalNum
(
map
.
get
(
1
));
//正常还车,在当天时间内还车
vehicleCountRecord
.
setActualArrivalNum
(
map
.
get
(
3
));
}
}
}
}
}
//旅游应还车数量
List
<
OrderPageVO
>
tourArrivalList
=
orderFeign
.
getOrderList
(
nowTime
,
OrderTypeEnum
.
TOUR
.
getCode
(),
2
).
getData
();
if
(
tourArrivalList
!=
null
&&
tourArrivalList
.
size
()
>
0
)
{
tourCountRecord
.
setArrivalNum
(
tourArrivalList
.
size
());
tourCountRecord
.
setActualArrivalNum
(
tourArrivalList
.
size
());
}
//内部用车应还车数量
List
<
VehicleBookRecordVo
>
vehicleArrivalBookRecordList
=
vehicleBookRecordBiz
.
selectAllBookRecord
(
startTime
,
endTime
,
2
).
getData
();
if
(
vehicleArrivalBookRecordList
!=
null
&&
vehicleArrivalBookRecordList
.
size
()
>
0
)
{
innerCountRecord
.
setArrivalNum
(
vehicleArrivalBookRecordList
.
size
());
Map
<
Integer
,
Integer
>
map
=
getDeparture
(
vehicleDepartureBookRecordList
,
2
);
if
(
MapUtils
.
isNotEmpty
(
map
))
{
// 租车提前交车数量 已经出车且还车时间小于还车时间,
innerCountRecord
.
setBeforeArrivalNum
(
map
.
get
(
2
));
//延后还车,还未还车
innerCountRecord
.
setAfterArrivalNum
(
map
.
get
(
1
));
//正常还车,在当天时间内还车
innerCountRecord
.
setActualArrivalNum
(
map
.
get
(
3
));
}
}
vehicleCountRecord
.
setCountDate
(
nowDate
);
tourCountRecord
.
setCountDate
(
nowDate
);
innerCountRecord
.
setCountDate
(
nowDate
);
save
(
vehicleCountRecord
);
save
(
tourCountRecord
);
save
(
innerCountRecord
);
}
public
void
save
(
VehicleCountRecord
vehicleCountRecord
)
{
if
(
vehicleCountRecord
!=
null
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
map
.
put
(
"type"
,
vehicleCountRecord
.
getType
());
map
.
put
(
"startTime"
,
getDayStart
(
vehicleCountRecord
.
getCountDate
().
getTime
()));
map
.
put
(
"endTime"
,
getDayStart
(
vehicleCountRecord
.
getCountDate
().
getTime
())
+
24
*
3600
*
1000
);
List
<
VehicleCountRecord
>
list
=
mapper
.
selectByTypeAndTime
(
map
);
if
(
list
!=
null
&&
list
.
size
()
>
0
)
{
BeanUtil
.
copyProperties
(
vehicleCountRecord
,
list
.
get
(
0
),
CopyOptions
.
create
().
setIgnoreNullValue
(
true
).
setIgnoreError
(
true
));
updateByIdRe
(
list
.
get
(
0
));
}
else
{
insertSelective
(
vehicleCountRecord
);
}
}
}
public
ObjectRestResponse
export
(
ExcelParamDto
excelParamDto
)
{
ExcelExport
ee1
=
new
ExcelExport
();
ee1
.
addSheetByArray
(
excelParamDto
.
getName
(),
excelParamDto
.
getData
(),
excelParamDto
.
getHeader
());
Properties
properties
=
System
.
getProperties
();
String
osName
=
properties
.
getProperty
(
"os.name"
);
String
path
=
""
;
if
(
osName
.
contains
(
"Windows"
))
{
path
=
"d://"
+
excelParamDto
.
getName
()
+
".xlsx"
;
}
else
{
path
=
"/data/temp/"
+
excelParamDto
.
getName
()
+
".xlsx"
;
}
File
file
=
new
File
(
path
);
if
(!
file
.
exists
())
{
try
{
file
.
createNewFile
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
return
ObjectRestResponse
.
createFailedResult
(
1024
,
"文件写入失败!"
);
}
}
OutputStream
fis
;
try
{
fis
=
new
FileOutputStream
(
path
);
ee1
.
getWorkbook
().
write
(
fis
);
}
catch
(
FileNotFoundException
e
)
{
e
.
printStackTrace
();
return
ObjectRestResponse
.
createFailedResult
(
1024
,
"文件不存在!"
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
return
ObjectRestResponse
.
createFailedResult
(
1024
,
"文件写入失败!"
);
}
return
ObjectRestResponse
.
succ
(
path
);
}
public
void
download
(
String
path
,
HttpServletResponse
response
){
// 下载本地文件
String
fileName
=
"export.xlsx"
.
toString
();
// 文件的默认保存名
// 读到流中
InputStream
inStream
=
null
;
// 文件的存放路径
try
{
inStream
=
new
FileInputStream
(
path
);
}
catch
(
FileNotFoundException
e
)
{
e
.
printStackTrace
();
}
// 设置输出的格式
response
.
reset
();
response
.
setContentType
(
"bin"
);
response
.
addHeader
(
"Content-Disposition"
,
"attachment; filename=\""
+
fileName
+
"\""
);
// 循环取出流中的数据
byte
[]
b
=
new
byte
[
100
];
int
len
;
try
{
while
((
len
=
inStream
.
read
(
b
))
>
0
)
response
.
getOutputStream
().
write
(
b
,
0
,
len
);
inStream
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
public
Map
<
Integer
,
Integer
>
getDeparture
(
List
<
VehicleBookRecordVo
>
list
,
Integer
type
)
{
Map
<
Integer
,
Integer
>
map
=
new
HashMap
<>();
Integer
a
=
0
;
Integer
b
=
0
;
Integer
c
=
0
;
for
(
VehicleBookRecordVo
vehicleBookRecordVo
:
list
)
{
//延后交车
if
(
type
==
1
)
{
if
(
vehicleBookRecordVo
.
getVehicleDepartureLogVo
()
==
null
)
{
a
++;
//提前交车
}
else
if
(
vehicleBookRecordVo
.
getVehicleDepartureLogVo
()
!=
null
&&
DateTime
.
parse
(
vehicleBookRecordVo
.
getVehicleDepartureLogVo
().
getDepartureTime
(),
DATE_TIME_FORMATTER
).
getMillis
()
<
getDayStart
(
vehicleBookRecordVo
.
getBookStartDate
().
getTime
()))
{
b
++;
//正常交车
}
else
if
(
vehicleBookRecordVo
.
getVehicleDepartureLogVo
()
!=
null
&&
DateTime
.
parse
(
vehicleBookRecordVo
.
getVehicleDepartureLogVo
().
getDepartureTime
(),
DATE_TIME_FORMATTER
).
getMillis
()
>=
getDayStart
(
vehicleBookRecordVo
.
getBookStartDate
().
getTime
())
&&
DateTime
.
parse
(
vehicleBookRecordVo
.
getVehicleDepartureLogVo
().
getDepartureTime
(),
DATE_TIME_FORMATTER
).
getMillis
()
<=
getDayStart
(
vehicleBookRecordVo
.
getBookStartDate
().
getTime
())
+
24
*
3600
*
1000
-
1
)
{
c
++;
}
}
else
if
(
type
==
2
)
{
//延后还车
if
(
vehicleBookRecordVo
.
getVehicleDepartureLogVo
()
!=
null
&&
vehicleBookRecordVo
.
getVehicleDepartureLogVo
().
getState
()
==
1
&&
DateTime
.
parse
(
vehicleBookRecordVo
.
getVehicleDepartureLogVo
().
getArrivalTime
(),
DATE_TIME_FORMATTER
).
getMillis
()
>
getDayStart
(
vehicleBookRecordVo
.
getBookEndDate
().
getTime
())
+
24
*
3600
*
1000
-
1
)
{
a
++;
//提前还车
}
else
if
(
vehicleBookRecordVo
.
getVehicleDepartureLogVo
()
!=
null
&&
vehicleBookRecordVo
.
getVehicleDepartureLogVo
().
getState
()
==
1
&&
DateTime
.
parse
(
vehicleBookRecordVo
.
getVehicleDepartureLogVo
().
getArrivalTime
(),
DATE_TIME_FORMATTER
).
getMillis
()
<
getDayStart
(
vehicleBookRecordVo
.
getBookEndDate
().
getTime
()))
{
b
++;
//正常还车
}
else
if
(
vehicleBookRecordVo
.
getVehicleDepartureLogVo
()
!=
null
&&
vehicleBookRecordVo
.
getVehicleDepartureLogVo
().
getState
()
==
1
&&
DateTime
.
parse
(
vehicleBookRecordVo
.
getVehicleDepartureLogVo
().
getArrivalTime
(),
DATE_TIME_FORMATTER
).
getMillis
()
>=
getDayStart
(
vehicleBookRecordVo
.
getBookEndDate
().
getTime
())
&&
DateTime
.
parse
(
vehicleBookRecordVo
.
getVehicleDepartureLogVo
().
getArrivalTime
(),
DATE_TIME_FORMATTER
).
getMillis
()
<=
getDayStart
(
vehicleBookRecordVo
.
getBookEndDate
().
getTime
())
+
24
*
3600
*
1000
-
1
)
{
c
++;
}
}
}
map
.
put
(
1
,
a
);
map
.
put
(
2
,
b
);
map
.
put
(
3
,
c
);
return
map
;
}
public
static
Long
getDayStart
()
{
long
current
=
System
.
currentTimeMillis
();
long
zero
=
current
/
(
1000
*
3600
*
24
)
*
(
1000
*
3600
*
24
)
-
TimeZone
.
getDefault
().
getRawOffset
();
return
zero
;
}
public
static
Long
getDayStart
(
Long
time
)
{
long
current
=
time
;
long
zero
=
current
/
(
1000
*
3600
*
24
)
*
(
1000
*
3600
*
24
)
-
TimeZone
.
getDefault
().
getRawOffset
();
return
zero
;
}
}
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/mapper/VehicleBookRecordMapper.java
View file @
5b931e2a
...
...
@@ -40,4 +40,7 @@ public interface VehicleBookRecordMapper extends Mapper<VehicleBookRecord> {
public
List
<
VehicleBookRecordVo
>
selectZeroHourRecord
(
Map
<
String
,
Object
>
param
);
public
List
<
VehicleBookRecordVo
>
selectAllBookRecord
(
Map
<
String
,
Object
>
param
);
public
List
<
VehicleBookRecordVo
>
selectByIds
(
Map
<
String
,
Object
>
param
);
}
\ No newline at end of file
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/mapper/VehicleCountRecordMapper.java
0 → 100644
View file @
5b931e2a
package
com
.
xxfc
.
platform
.
vehicle
.
mapper
;
import
com.xxfc.platform.vehicle.entity.VehicleCountRecord
;
import
tk.mybatis.mapper.common.Mapper
;
import
java.util.List
;
import
java.util.Map
;
public
interface
VehicleCountRecordMapper
extends
Mapper
<
VehicleCountRecord
>
{
List
<
VehicleCountRecord
>
countDepartureVehicle
(
VehicleCountRecord
vehicleCountRecord
);
List
<
VehicleCountRecord
>
selectByTypeAndTime
(
Map
<
String
,
Object
>
param
);
}
\ No newline at end of file
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/rest/RentVehicleController.java
View file @
5b931e2a
...
...
@@ -125,6 +125,27 @@ public class RentVehicleController extends BaseController<VehicleBiz> implements
return
ObjectRestResponse
.
succ
(
vehicleBiz
.
searchUsableModel
(
dto
));
}
/**
* 后台查询可用车辆(车型)
*
* @param dto
* @return
*/
@ApiOperation
(
"可用车辆查询"
)
@RequestMapping
(
value
=
"/rent/back-stage/usable-vehicle"
,
method
=
RequestMethod
.
GET
)
@IgnoreUserToken
public
ObjectRestResponse
<
PageDataVO
<
UsableVehicleModelVO
>>
rentBgUsableVehicle
(
UsableVeicleDTO
dto
)
throws
Exception
{
//根据时间 获得 可用车辆
//结合车型
if
(
StringUtils
.
isNotBlank
(
dto
.
getCatasStr
()))
{
dto
.
setCatas
(
vehiclePlatCataBiz
.
groupCatasByParent
(
dto
.
getCatasStr
()));
}
//设置显示是否有车
dto
.
setYearNo4Where
(
Boolean
.
TRUE
);
dto
.
setUseType
(
null
);
return
ObjectRestResponse
.
succ
(
vehicleBiz
.
searchUsableModel
(
dto
));
}
/**
* 热门车型
*
...
...
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/rest/VehicleCountRecordController.java
0 → 100644
View file @
5b931e2a
package
com
.
xxfc
.
platform
.
vehicle
.
rest
;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.xxfc.platform.vehicle.biz.VehicleCountRecordBiz
;
import
com.xxfc.platform.vehicle.entity.VehicleCountRecord
;
import
com.xxfc.platform.vehicle.pojo.ExcelParamDto
;
import
com.xxfc.platform.vehicle.util.excel.DownloadUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.File
;
@Controller
@RequestMapping
(
value
=
"/vehicleCount"
)
public
class
VehicleCountRecordController
{
@Autowired
VehicleCountRecordBiz
vehicleCountRecordBiz
;
@GetMapping
(
"/app/unauth/test"
)
@ResponseBody
public
ObjectRestResponse
add
()
{
vehicleCountRecordBiz
.
addAll
();
return
ObjectRestResponse
.
succ
();
}
@GetMapping
(
"/app/unauth/get"
)
@ResponseBody
public
ObjectRestResponse
getByTypeAndDate
(
VehicleCountRecord
vehicleCountRecord
)
{
return
vehicleCountRecordBiz
.
countDepartureVehicle
(
vehicleCountRecord
);
}
@PostMapping
(
"/app/unauth/export"
)
@ResponseBody
public
ObjectRestResponse
export
(
@RequestBody
ExcelParamDto
excelParamDto
)
{
return
vehicleCountRecordBiz
.
export
(
excelParamDto
);
}
@GetMapping
(
"/app/unauth/download"
)
public
void
download
(
ExcelParamDto
excelParamDto
,
HttpServletRequest
request
,
HttpServletResponse
response
)
{
DownloadUtil
.
downloadFile
(
excelParamDto
.
getPath
(),
"export.xls"
,
response
,
request
);
}
}
xx-vehicle/xx-vehicle-server/src/main/resources/builder/generatorConfig.xml
View file @
5b931e2a
...
...
@@ -15,7 +15,7 @@
</plugin>
<jdbcConnection
driverClass=
"com.mysql.jdbc.Driver"
connectionURL=
"jdbc:mysql://10.5.52.3:3306/vehicle?useUnicode=true&characterEncoding=UTF8"
connectionURL=
"jdbc:mysql://10.5.52.3:3306/
xxfc_
vehicle?useUnicode=true&characterEncoding=UTF8"
userId=
"root"
password=
"sslcloud123*()"
>
</jdbcConnection>
...
...
@@ -37,7 +37,7 @@
<!-- </table>-->
<!-- <table tableName="branch_company_stock_info" domainObjectName="BranchCompanyStockInfo"></table>-->
<!-- <table tableName="branch_company_stock_apply_info" domainObjectName="BranchCompanyStockApplyInfo"></table>-->
<table
tableName=
"vehicle_
book_hour_info"
domainObjectName=
"VehicleBookHourInfo
"
></table>
<table
tableName=
"vehicle_
count_record"
domainObjectName=
"VehicleCountRecord
"
></table>
<!-- <table tableName="vehicle_upkeep_log" domainObjectName="VehicleUpkeepLog"></table>-->
</context>
</generatorConfiguration>
\ No newline at end of file
xx-vehicle/xx-vehicle-server/src/main/resources/mapper/VehicleBookRecordMapper.xml
View file @
5b931e2a
...
...
@@ -516,6 +516,26 @@
order by create_time DESC
</select>
<select
id=
"selectAllBookRecord"
resultMap=
"searchBookRecord"
parameterType=
"Map"
>
select v1.* from vehicle_book_record v1
where v1.status not in (4,6,7,3)
<if
test=
"startTime != null and status == 1"
>
and v1.book_start_date between #{startTime} and #{endTime}
</if>
<if
test=
"startTime != null and status == 2"
>
and v1.book_end_date between #{startTime} and #{endTime}
</if>
</select>
<select
id=
"selectByIds"
resultMap=
"searchBookRecord"
parameterType=
"Map"
>
select v1.* from vehicle_book_record v1
where v1.status not in (4,6,7,3)
<if
test=
"ids != null and ids.size > 0"
>
and v1.id in
<foreach
collection=
"ids"
item=
"id"
open=
"("
separator=
","
close=
")"
>
#{id}
</foreach>
</if>
</select>
<insert
id=
"createTbIfNotExists"
parameterType=
"java.lang.String"
>
CREATE TABLE IF NOT EXISTS ${_parameter} (
...
...
xx-vehicle/xx-vehicle-server/src/main/resources/mapper/VehicleCountRecordMapper.xml
0 → 100644
View file @
5b931e2a
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper
namespace=
"com.xxfc.platform.vehicle.mapper.VehicleCountRecordMapper"
>
<resultMap
id=
"BaseResultMap"
type=
"com.xxfc.platform.vehicle.entity.VehicleCountRecord"
>
<!--
WARNING - @mbg.generated
-->
<id
column=
"id"
property=
"id"
jdbcType=
"INTEGER"
/>
<result
column=
"type"
property=
"type"
jdbcType=
"INTEGER"
/>
<result
column=
"departure_num"
property=
"departureNum"
jdbcType=
"INTEGER"
/>
<result
column=
"actual_departure_num"
property=
"actualDepartureNum"
jdbcType=
"INTEGER"
/>
<result
column=
"after_departure_num"
property=
"afterDepartureNum"
jdbcType=
"INTEGER"
/>
<result
column=
"before_departure_num"
property=
"beforeDepartureNum"
jdbcType=
"INTEGER"
/>
<result
column=
"arrival_num"
property=
"arrivalNum"
jdbcType=
"INTEGER"
/>
<result
column=
"actual_arrival_num"
property=
"actualArrivalNum"
jdbcType=
"INTEGER"
/>
<result
column=
"after_arrival_num"
property=
"afterArrivalNum"
jdbcType=
"INTEGER"
/>
<result
column=
"before_arrival_num"
property=
"beforeArrivalNum"
jdbcType=
"INTEGER"
/>
<result
column=
"count_date"
property=
"countDate"
jdbcType=
"DATE"
/>
</resultMap>
<select
id =
"countDepartureVehicle"
parameterType =
"com.xxfc.platform.vehicle.entity.VehicleCountRecord"
resultMap =
"BaseResultMap"
>
select * from vehicle_count_record where count_date = #{time}
</select>
<select
id=
"selectByTypeAndTime"
parameterType =
"Map"
resultType=
"com.xxfc.platform.vehicle.entity.VehicleCountRecord"
>
select * from vehicle_count_record
<where>
<if
test=
"type != null"
>
and type = #{type}
</if>
<if
test=
"startTime != null"
>
and count_date = #{startTime}
</if>
</where>
order by id DESC
</select>
</mapper>
\ No newline at end of file
xx-vehicle/xx-vehicle-server/src/main/resources/mapper/VehicleMapper.xml
View file @
5b931e2a
...
...
@@ -682,6 +682,9 @@
</if>
and v.is_del = 0
and v.status != 3
<if
test=
"useType != null"
>
and v.use_type = #{useType}
</if>
and v.use_type = 1
and bc.is_del = 0
and bc.is_show = 1
...
...
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