Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in
Toggle navigation
H
hzsomms
Project
Project
Details
Activity
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
ZTGK
hzsomms
Commits
28f0e352
Commit
28f0e352
authored
Jul 12, 2023
by
shizhilong
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev-szl' of
http://gitlab.suntrayoa.com/ztgk/hzsomms
into dev
parents
c9e9e694
355f90b7
Changes
38
Hide whitespace changes
Inline
Side-by-side
Showing
38 changed files
with
2715 additions
and
117 deletions
+2715
-117
MovementCourseController.java
...uipmentCheckData/controller/MovementCourseController.java
+23
-0
MovementCourseInfoController.java
...entCheckData/controller/MovementCourseInfoController.java
+23
-0
MovementRecordsMasterController.java
...CheckData/controller/MovementRecordsMasterController.java
+264
-0
RecordsMasterCheckController.java
...entCheckData/controller/RecordsMasterCheckController.java
+54
-0
MovementCourseDTO.java
...s/checkData/equipmentCheckData/dto/MovementCourseDTO.java
+69
-0
MovementCourseInfoDTO.java
...eckData/equipmentCheckData/dto/MovementCourseInfoDTO.java
+75
-0
MovementRecordsMasterDTO.java
...Data/equipmentCheckData/dto/MovementRecordsMasterDTO.java
+102
-0
MovementCourse.java
...s/checkData/equipmentCheckData/entity/MovementCourse.java
+98
-0
MovementCourseInfo.java
...eckData/equipmentCheckData/entity/MovementCourseInfo.java
+106
-0
MovementRecordsMaster.java
...Data/equipmentCheckData/entity/MovementRecordsMaster.java
+146
-0
RecordsMasterCheck.java
...eckData/equipmentCheckData/entity/RecordsMasterCheck.java
+30
-14
MovementCourseInfoMapper.java
...a/equipmentCheckData/mapper/MovementCourseInfoMapper.java
+16
-0
MovementCourseMapper.java
...kData/equipmentCheckData/mapper/MovementCourseMapper.java
+16
-0
MovementRecordsMasterMapper.java
...quipmentCheckData/mapper/MovementRecordsMasterMapper.java
+27
-0
MovementCourseInfoMapper.xml
...quipmentCheckData/mapper/xml/MovementCourseInfoMapper.xml
+5
-0
MovementCourseMapper.xml
...ta/equipmentCheckData/mapper/xml/MovementCourseMapper.xml
+5
-0
MovementRecordsMasterMapper.xml
...pmentCheckData/mapper/xml/MovementRecordsMasterMapper.xml
+28
-0
IMovementCourseInfoService.java
...quipmentCheckData/service/IMovementCourseInfoService.java
+16
-0
IMovementCourseService.java
...ta/equipmentCheckData/service/IMovementCourseService.java
+16
-0
IMovementRecordsMasterService.java
...pmentCheckData/service/IMovementRecordsMasterService.java
+25
-0
MovementCourseInfoServiceImpl.java
...CheckData/service/impl/MovementCourseInfoServiceImpl.java
+20
-0
MovementCourseServiceImpl.java
...mentCheckData/service/impl/MovementCourseServiceImpl.java
+20
-0
MovementRecordsMasterServiceImpl.java
...ckData/service/impl/MovementRecordsMasterServiceImpl.java
+32
-0
MovementCourseInfoOneVO.java
...ckData/equipmentCheckData/vo/MovementCourseInfoOneVO.java
+30
-0
MovementCourseInfoVO.java
...checkData/equipmentCheckData/vo/MovementCourseInfoVO.java
+81
-0
MovementCourseVO.java
...les/checkData/equipmentCheckData/vo/MovementCourseVO.java
+75
-0
MovementRecordsMasterVO.java
...ckData/equipmentCheckData/vo/MovementRecordsMasterVO.java
+113
-0
MovementSavaQueryVO.java
.../checkData/equipmentCheckData/vo/MovementSavaQueryVO.java
+55
-0
RecordPatrolMasterAssistVO.java
...ata/equipmentCheckData/vo/RecordPatrolMasterAssistVO.java
+0
-15
RecordPatrolMasterInfoVO.java
...kData/equipmentCheckData/vo/RecordPatrolMasterInfoVO.java
+0
-12
RecordPatrolMasterVO.java
...checkData/equipmentCheckData/vo/RecordPatrolMasterVO.java
+0
-26
RecordsMasterCheckVO.java
...checkData/equipmentCheckData/vo/RecordsMasterCheckVO.java
+0
-21
TrackBedManagementCheckVO.java
...Data/equipmentCheckData/vo/TrackBedManagementCheckVO.java
+0
-12
TurnoutUseCheckVO.java
...es/checkData/equipmentCheckData/vo/TurnoutUseCheckVO.java
+0
-17
ExcelClassField.java
...rc/main/java/org/jeecg/modules/utils/ExcelClassField.java
+77
-0
ExcelExport.java
...em/src/main/java/org/jeecg/modules/utils/ExcelExport.java
+27
-0
ExcelImport.java
...em/src/main/java/org/jeecg/modules/utils/ExcelImport.java
+32
-0
ExcelUtils.java
...tem/src/main/java/org/jeecg/modules/utils/ExcelUtils.java
+1009
-0
No files found.
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/controller/MovementCourseController.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
checkData
.
equipmentCheckData
.
controller
;
import
org.jeecg.modules.checkData.equipmentCheckData.entity.MovementCourse
;
import
org.jeecg.modules.checkData.equipmentCheckData.service.IMovementCourseService
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.jeecg.common.system.base.controller.JeecgController
;
/**
* <p>
* 动静态几何尺寸对应得里程相关信息表 前端控制器
* </p>
*
* @author hkl
* @since 2023-07-11
*/
@RestController
@RequestMapping
(
"/movement/course"
)
public
class
MovementCourseController
extends
JeecgController
<
MovementCourse
,
IMovementCourseService
>
{
}
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/controller/MovementCourseInfoController.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
checkData
.
equipmentCheckData
.
controller
;
import
org.jeecg.modules.checkData.equipmentCheckData.entity.MovementCourseInfo
;
import
org.jeecg.modules.checkData.equipmentCheckData.service.IMovementCourseInfoService
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.jeecg.common.system.base.controller.JeecgController
;
/**
* <p>
* 动静态几何尺寸对应得里程相关信息详情表 前端控制器
* </p>
*
* @author hkl
* @since 2023-07-11
*/
@RestController
@RequestMapping
(
"/movement/courseInfo"
)
public
class
MovementCourseInfoController
extends
JeecgController
<
MovementCourseInfo
,
IMovementCourseInfoService
>
{
}
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/controller/MovementRecordsMasterController.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
checkData
.
equipmentCheckData
.
controller
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiParam
;
import
org.jeecg.common.api.vo.Result
;
import
org.jeecg.common.aspect.annotation.AutoLog
;
import
org.jeecg.modules.checkData.equipmentCheckData.dto.MovementRecordsMasterDTO
;
import
org.jeecg.modules.checkData.equipmentCheckData.entity.MovementCourse
;
import
org.jeecg.modules.checkData.equipmentCheckData.entity.MovementCourseInfo
;
import
org.jeecg.modules.checkData.equipmentCheckData.entity.MovementRecordsMaster
;
import
org.jeecg.modules.checkData.equipmentCheckData.service.IMovementCourseInfoService
;
import
org.jeecg.modules.checkData.equipmentCheckData.service.IMovementCourseService
;
import
org.jeecg.modules.checkData.equipmentCheckData.service.IMovementRecordsMasterService
;
import
org.jeecg.modules.checkData.equipmentCheckData.vo.*
;
import
org.jeecg.modules.subwayNetwork.entity.SubwaySection
;
import
org.jeecg.modules.subwayNetwork.service.ISubwaySectionService
;
import
org.jeecg.modules.utils.BeanCopyUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
org.jeecg.common.system.base.controller.JeecgController
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Set
;
import
java.util.stream.Collectors
;
/**
* <p>
* 动静态几何尺寸数据主表 前端控制器
* </p>
*
* @author hkl
* @since 2023-07-11
*/
@RestController
@RequestMapping
(
"/movement/master"
)
@Api
(
tags
=
"动静态几何尺寸数据"
)
public
class
MovementRecordsMasterController
extends
JeecgController
<
MovementRecordsMaster
,
IMovementRecordsMasterService
>
{
@Autowired
private
IMovementCourseService
movementCourseService
;
@Autowired
private
IMovementCourseInfoService
movementCourseInfoService
;
@Autowired
private
ISubwaySectionService
subwaySectionService
;
/**
* 动静态几何尺寸数据-分页列表查询
*
* @param pageNo
* @param pageSize
* @param dto
* @return
*/
@AutoLog
(
value
=
"动静态几何尺寸数据-分页列表查询"
)
@ApiOperation
(
value
=
"动静态几何尺寸数据-分页列表查询"
,
notes
=
"动静态几何尺寸数据-分页列表查询"
)
@GetMapping
(
value
=
"/list"
)
public
Result
<
IPage
<
MovementRecordsMasterVO
>>
queryPageList
(
@RequestParam
(
name
=
"pageNo"
,
defaultValue
=
"1"
)
Integer
pageNo
,
@RequestParam
(
name
=
"pageSize"
,
defaultValue
=
"10"
)
Integer
pageSize
,
MovementRecordsMasterDTO
dto
)
{
if
(
ObjectUtil
.
isEmpty
(
dto
.
getType
()))
{
return
Result
.
error
(
"传递参数不完整"
);
}
Page
<
MovementRecordsMasterVO
>
pageData
=
new
Page
<>(
pageNo
,
pageSize
);
pageData
=
this
.
service
.
queryPageList
(
pageData
,
dto
);
return
Result
.
OK
(
pageData
);
}
/**
* 根据动静态几何尺寸数据主键查询检查里程相关信息
*
* @param id 动静态几何尺寸数据id
* @return
*/
@AutoLog
(
value
=
"根据动静态几何尺寸数据主键查询检查里程相关信息"
)
@ApiOperation
(
value
=
"根据动静态几何尺寸数据主键查询检查里程相关信息"
,
notes
=
"根据动静态几何尺寸数据主键查询检查里程相关信息"
)
@GetMapping
(
value
=
"/getCourseList"
)
public
Result
<
List
<
MovementCourseVO
>>
getCourseList
(
@ApiParam
(
name
=
"动静态几何尺寸数据id"
)
String
id
)
{
List
<
MovementCourse
>
listResult
=
movementCourseService
.
lambdaQuery
()
.
eq
(
ObjectUtil
.
isNotEmpty
(
id
),
MovementCourse:
:
getMovementMasterId
,
id
)
.
eq
(
MovementCourse:
:
getDelFlag
,
"0"
)
.
orderByAsc
(
MovementCourse:
:
getCreateTime
)
.
list
();
List
<
MovementCourseVO
>
resultList
=
new
ArrayList
<>();
if
(
listResult
!=
null
)
{
resultList
=
BeanCopyUtil
.
copyListProperties
(
listResult
,
MovementCourseVO:
:
new
);
}
return
Result
.
OK
(
resultList
);
}
/**
* 根据动静态几何尺寸数据id和对应的里程相关信息id查询其详情
*
* @param movementMasterId 动静态几何尺寸数据id
* @param movementCourseId 对应的里程相关信息id
* @return
*/
@AutoLog
(
value
=
"根据动静态几何尺寸数据id和对应的里程相关信息id查询其详情"
)
@ApiOperation
(
value
=
"根据动静态几何尺寸数据id和对应的里程相关信息id查询其详情"
,
notes
=
"根据动静态几何尺寸数据id和对应的里程相关信息id查询其详情"
)
@GetMapping
(
value
=
"/getInfoById"
)
public
Result
<
List
<
MovementCourseInfoOneVO
>>
getInfoById
(
@ApiParam
(
name
=
"动静态几何尺寸数据id"
)
String
movementMasterId
,
@ApiParam
(
name
=
"检查里程相关信息id"
)
String
movementCourseId
)
{
List
<
MovementCourseInfo
>
listResult
=
movementCourseInfoService
.
lambdaQuery
()
.
eq
(
ObjectUtil
.
isNotEmpty
(
movementMasterId
),
MovementCourseInfo:
:
getMovementMasterId
,
movementMasterId
)
.
eq
(
ObjectUtil
.
isNotEmpty
(
movementCourseId
),
MovementCourseInfo:
:
getMovementCourseId
,
movementCourseId
)
.
eq
(
MovementCourseInfo:
:
getDelFlag
,
"0"
)
.
orderByDesc
(
MovementCourseInfo:
:
getTrackCode
)
.
list
();
//初始化最终返回的集合
List
<
MovementCourseInfoOneVO
>
resultList
=
new
ArrayList
<>();
if
(
listResult
!=
null
&&
listResult
.
size
()
>
0
)
{
//获取去重后的项目名称的集合
Set
<
String
>
trackCodeList
=
listResult
.
stream
().
map
(
MovementCourseInfo:
:
getTrackCode
).
collect
(
Collectors
.
toSet
());
for
(
String
code
:
trackCodeList
)
{
//初始化最终返回的对象
MovementCourseInfoOneVO
resultModel
=
new
MovementCourseInfoOneVO
();
//初始化检查项目对应的详情记录的集合
List
<
MovementCourseInfoVO
>
infoList
=
new
ArrayList
<>();
//循环符合条件的数据项集合
for
(
MovementCourseInfo
entity
:
listResult
)
{
//判断项目名称一样
if
(
code
.
equals
(
entity
.
getTrackCode
()))
{
//初始化检查项目对应的详情记录的对象
MovementCourseInfoVO
infoVo
=
new
MovementCourseInfoVO
();
BeanCopyUtil
.
copyProperties
(
entity
,
infoVo
);
infoList
.
add
(
infoVo
);
}
}
resultModel
.
setInfoList
(
infoList
);
resultModel
.
setTrackCode
(
code
);
resultList
.
add
(
resultModel
);
}
}
return
Result
.
OK
(
resultList
);
}
/**
* 动静态几何尺寸数据新增时初始化回显数据
*
* @param subwaySectionId 区间id
* @param lightRailId 线路id
* @param lineAliasId 线别id
* @return
*/
@AutoLog
(
value
=
"动静态几何尺寸数据新增时初始化回显数据"
)
@ApiOperation
(
value
=
"动静态几何尺寸数据新增时初始化回显数据"
,
notes
=
"动静态几何尺寸数据新增时初始化回显数据"
)
@GetMapping
(
value
=
"/getMovementQuery"
)
public
Result
<
MovementSavaQueryVO
>
getMovementQuery
(
@ApiParam
(
name
=
"区间id"
,
required
=
true
)
String
subwaySectionId
,
@ApiParam
(
name
=
"线路id"
,
required
=
true
)
String
lightRailId
,
@ApiParam
(
name
=
"线别id"
,
required
=
true
)
String
lineAliasId
)
{
MovementSavaQueryVO
result
=
new
MovementSavaQueryVO
();
result
.
setSubwaySectionId
(
subwaySectionId
);
result
.
setLightRailId
(
lightRailId
);
result
.
setLineAliasId
(
lineAliasId
);
//查询区间起始终点里程
LambdaQueryWrapper
<
SubwaySection
>
lambdaQuery
=
Wrappers
.
lambdaQuery
();
lambdaQuery
.
eq
(
SubwaySection:
:
getId
,
subwaySectionId
);
lambdaQuery
.
eq
(
SubwaySection:
:
getLightRailId
,
lightRailId
);
lambdaQuery
.
eq
(
SubwaySection:
:
getLineAliasId
,
lineAliasId
);
SubwaySection
bean
=
subwaySectionService
.
getOne
(
lambdaQuery
);
if
(
bean
!=
null
)
{
if
(
bean
.
getSectionStartingMileage
()
!=
null
)
{
result
.
setStartingMileage
(
bean
.
getSectionStartingMileage
());
}
if
(
bean
.
getSectionEndMileage
()
!=
null
)
{
result
.
setEndMileage
(
bean
.
getSectionEndMileage
());
}
}
//TODO 后期改造完补充逻辑
result
.
setRailNum
(
25
);
result
.
setCurveNum
(
30
);
result
.
setVerticalCurveNum
(
58
);
result
.
setSwitchNum
(
38
);
return
Result
.
OK
(
result
);
}
@AutoLog
(
value
=
"动静态几何尺寸主数据新增或者编辑"
)
@ApiOperation
(
value
=
"动静态几何尺寸主数据新增或者编辑"
,
notes
=
"动静态几何尺寸主数据新增或者编辑"
)
@PostMapping
(
value
=
"/saveOrUpdate"
)
@ResponseBody
public
Result
<
String
>
saveOrUpdate
(
@RequestBody
MovementRecordsMaster
movementRecordsMaster
)
{
boolean
state
=
validate
(
movementRecordsMaster
);
if
(
false
==
state
)
{
return
Result
.
error
(
"传递参数不完整"
);
}
movementRecordsMaster
.
setUpdateTime
(
new
Date
());
movementRecordsMaster
.
setDelFlag
(
"0"
);
if
(
ObjectUtil
.
isEmpty
(
movementRecordsMaster
.
getId
()))
{
this
.
service
.
save
(
movementRecordsMaster
);
}
else
{
this
.
service
.
updateById
(
movementRecordsMaster
);
}
return
Result
.
OK
(
"操作成功!"
);
}
/**
* 删除动静态几何尺寸数据及相关联的数据
*
* @param id
* @return
*/
@AutoLog
(
value
=
"删除动静态几何尺寸数据及相关联的数据"
)
@ApiOperation
(
value
=
"删除动静态几何尺寸数据及相关联的数据"
,
notes
=
"删除动静态几何尺寸数据及相关联的数据"
)
@GetMapping
(
value
=
"/delete"
)
public
Result
<
String
>
delete
(
@ApiParam
(
name
=
"动静态几何尺寸数据id"
,
required
=
true
)
String
id
)
{
//删除里程详情
LambdaUpdateWrapper
<
MovementCourseInfo
>
lambdaUpdateWrapper
=
Wrappers
.
lambdaUpdate
();
lambdaUpdateWrapper
.
set
(
MovementCourseInfo:
:
getDelFlag
,
"1"
);
lambdaUpdateWrapper
.
eq
(
MovementCourseInfo:
:
getMovementMasterId
,
id
);
movementCourseInfoService
.
update
(
lambdaUpdateWrapper
);
//删除里程相关
LambdaUpdateWrapper
<
MovementCourse
>
updateWrapper
=
Wrappers
.
lambdaUpdate
();
updateWrapper
.
set
(
MovementCourse:
:
getDelFlag
,
"1"
);
updateWrapper
.
eq
(
MovementCourse:
:
getMovementMasterId
,
id
);
movementCourseService
.
update
(
updateWrapper
);
//删除动静态几何尺寸数据
LambdaUpdateWrapper
<
MovementRecordsMaster
>
update
=
Wrappers
.
lambdaUpdate
();
update
.
set
(
MovementRecordsMaster:
:
getDelFlag
,
"1"
);
update
.
eq
(
MovementRecordsMaster:
:
getId
,
id
);
this
.
service
.
update
(
update
);
return
Result
.
OK
(
"删除成功!"
);
}
/**
* 校验参数
*
* @param movementRecordsMaster
*/
private
boolean
validate
(
MovementRecordsMaster
movementRecordsMaster
)
{
if
(
ObjectUtil
.
isEmpty
(
movementRecordsMaster
.
getType
()))
{
return
false
;
}
if
(
ObjectUtil
.
isEmpty
(
movementRecordsMaster
.
getSubwaySectionName
()))
{
return
false
;
}
if
(
ObjectUtil
.
isEmpty
(
movementRecordsMaster
.
getSubwaySectionId
()))
{
return
false
;
}
if
(
ObjectUtil
.
isEmpty
(
movementRecordsMaster
.
getLightRailName
()))
{
return
false
;
}
if
(
ObjectUtil
.
isEmpty
(
movementRecordsMaster
.
getLightRailId
()))
{
return
false
;
}
if
(
ObjectUtil
.
isEmpty
(
movementRecordsMaster
.
getLineAliasName
()))
{
return
false
;
}
if
(
ObjectUtil
.
isEmpty
(
movementRecordsMaster
.
getLineAliasId
()))
{
return
false
;
}
if
(
ObjectUtil
.
isEmpty
(
movementRecordsMaster
.
getEkCode
()))
{
return
false
;
}
return
true
;
}
}
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/controller/RecordsMasterCheckController.java
View file @
28f0e352
...
@@ -2,13 +2,16 @@ package org.jeecg.modules.checkData.equipmentCheckData.controller;
...
@@ -2,13 +2,16 @@ package org.jeecg.modules.checkData.equipmentCheckData.controller;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiParam
;
import
io.swagger.annotations.ApiParam
;
import
org.apache.shiro.SecurityUtils
;
import
org.jeecg.common.api.vo.Result
;
import
org.jeecg.common.api.vo.Result
;
import
org.jeecg.common.aspect.annotation.AutoLog
;
import
org.jeecg.common.aspect.annotation.AutoLog
;
import
org.jeecg.common.system.vo.LoginUser
;
import
org.jeecg.modules.checkData.equipmentCheckData.dto.RecordsMasterCheckDTO
;
import
org.jeecg.modules.checkData.equipmentCheckData.dto.RecordsMasterCheckDTO
;
import
org.jeecg.modules.checkData.equipmentCheckData.entity.RecordsMasterCheck
;
import
org.jeecg.modules.checkData.equipmentCheckData.entity.RecordsMasterCheck
;
import
org.jeecg.modules.checkData.equipmentCheckData.entity.TrackBedManagementCheck
;
import
org.jeecg.modules.checkData.equipmentCheckData.entity.TrackBedManagementCheck
;
...
@@ -19,6 +22,10 @@ import org.jeecg.modules.checkData.equipmentCheckData.vo.TrackBedManagementCheck
...
@@ -19,6 +22,10 @@ import org.jeecg.modules.checkData.equipmentCheckData.vo.TrackBedManagementCheck
import
org.jeecg.modules.deviceAsset.entity.TrackBedManagement
;
import
org.jeecg.modules.deviceAsset.entity.TrackBedManagement
;
import
org.jeecg.modules.deviceAsset.service.ITrackBedManagementService
;
import
org.jeecg.modules.deviceAsset.service.ITrackBedManagementService
;
import
org.jeecg.modules.utils.BeanCopyUtil
;
import
org.jeecg.modules.utils.BeanCopyUtil
;
import
org.jeecg.modules.utils.ExcelUtils
;
import
org.jeecgframework.poi.excel.def.NormalExcelConstants
;
import
org.jeecgframework.poi.excel.entity.ExportParams
;
import
org.jeecgframework.poi.excel.view.JeecgEntityExcelView
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
...
@@ -29,6 +36,7 @@ import org.jeecg.common.system.base.controller.JeecgController;
...
@@ -29,6 +36,7 @@ import org.jeecg.common.system.base.controller.JeecgController;
import
org.springframework.web.servlet.ModelAndView
;
import
org.springframework.web.servlet.ModelAndView
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
...
@@ -120,4 +128,50 @@ public class RecordsMasterCheckController extends JeecgController<RecordsMasterC
...
@@ -120,4 +128,50 @@ public class RecordsMasterCheckController extends JeecgController<RecordsMasterC
return
super
.
exportXls
(
request
,
recordsMasterCheck
,
RecordsMasterCheck
.
class
,
"道床使用情况检查"
);
return
super
.
exportXls
(
request
,
recordsMasterCheck
,
RecordsMasterCheck
.
class
,
"道床使用情况检查"
);
}
}
/**
* 导出excel
*
* @param request
*/
@AutoLog
(
value
=
"设备检查记录-导出"
)
@ApiOperation
(
value
=
"设备检查记录-导出"
,
notes
=
"设备检查记录-导出"
)
@GetMapping
(
value
=
"/exportXl"
)
public
ModelAndView
exportXl
(
RecordsMasterCheck
recordsMasterCheck
,
HttpServletRequest
request
)
{
// Step.1 组装查询条件
//Step.2 AutoPoi 导出Excel
ModelAndView
mv
=
new
ModelAndView
(
new
JeecgEntityExcelView
());
List
<
RecordsMasterCheck
>
resultList
=
this
.
service
.
list
(
new
LambdaQueryWrapper
<
RecordsMasterCheck
>()
.
like
(
ObjectUtil
.
isNotEmpty
(
recordsMasterCheck
.
getEkCode
()),
RecordsMasterCheck:
:
getEkCode
,
recordsMasterCheck
.
getEkCode
())
.
like
(
ObjectUtil
.
isNotEmpty
(
recordsMasterCheck
.
getSubwaySectionName
()),
RecordsMasterCheck:
:
getSubwaySectionName
,
recordsMasterCheck
.
getSubwaySectionName
())
.
like
(
ObjectUtil
.
isNotEmpty
(
recordsMasterCheck
.
getLightRailName
()),
RecordsMasterCheck:
:
getLightRailName
,
recordsMasterCheck
.
getLightRailName
())
.
orderByAsc
(
RecordsMasterCheck:
:
getCreateTime
));
//导出文件名称
mv
.
addObject
(
NormalExcelConstants
.
FILE_NAME
,
"道床使用情况检查"
);
mv
.
addObject
(
NormalExcelConstants
.
CLASS
,
RecordsMasterCheck
.
class
);
LoginUser
user
=
(
LoginUser
)
SecurityUtils
.
getSubject
().
getPrincipal
();
mv
.
addObject
(
NormalExcelConstants
.
PARAMS
,
new
ExportParams
(
"道床使用情况检查列表数据"
,
"导出人:"
,
"导出信息"
));
mv
.
addObject
(
NormalExcelConstants
.
DATA_LIST
,
resultList
);
return
mv
;
}
/**
* 设备检查记录-导出
*
* @param response
*/
@AutoLog
(
value
=
"设备检查记录-导出"
)
@ApiOperation
(
value
=
"设备检查记录-导出"
,
notes
=
"设备检查记录-导出"
)
@GetMapping
(
"/exportXls2"
)
public
void
export
(
RecordsMasterCheck
recordsMasterCheck
,
HttpServletResponse
response
)
{
List
<
RecordsMasterCheck
>
resultList
=
this
.
service
.
list
(
new
LambdaQueryWrapper
<
RecordsMasterCheck
>()
.
like
(
ObjectUtil
.
isNotEmpty
(
recordsMasterCheck
.
getEkCode
()),
RecordsMasterCheck:
:
getEkCode
,
recordsMasterCheck
.
getEkCode
())
.
like
(
ObjectUtil
.
isNotEmpty
(
recordsMasterCheck
.
getSubwaySectionName
()),
RecordsMasterCheck:
:
getSubwaySectionName
,
recordsMasterCheck
.
getSubwaySectionName
())
.
like
(
ObjectUtil
.
isNotEmpty
(
recordsMasterCheck
.
getLightRailName
()),
RecordsMasterCheck:
:
getLightRailName
,
recordsMasterCheck
.
getLightRailName
())
.
orderByAsc
(
RecordsMasterCheck:
:
getCreateTime
));
int
num
=
0
;
for
(
RecordsMasterCheck
s
:
resultList
)
{
num
=
num
+
1
;
s
.
setRowNum
(
num
);
}
ExcelUtils
.
export
(
response
,
"设备检查记录"
,
resultList
,
RecordsMasterCheck
.
class
);
}
}
}
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/dto/MovementCourseDTO.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
checkData
.
equipmentCheckData
.
dto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* <p>
* 动静态几何尺寸对应得里程相关信息表
* </p>
*
* @author hkl
* @since 2023-07-11
*/
@Data
public
class
MovementCourseDTO
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"主键"
)
private
String
id
;
@ApiModelProperty
(
"创建人"
)
private
String
createBy
;
@ApiModelProperty
(
"创建日期"
)
private
Date
createTime
;
@ApiModelProperty
(
"更新人"
)
private
String
updateBy
;
@ApiModelProperty
(
"更新时间"
)
private
Date
updateTime
;
@ApiModelProperty
(
"动静态几何尺寸数据主表主键-》外键"
)
private
String
movementMasterId
;
@ApiModelProperty
(
"检查起始里程(m)"
)
private
BigDecimal
courseStartingMileage
;
@ApiModelProperty
(
"检查终点里程(m)"
)
private
BigDecimal
courseEndMileage
;
@ApiModelProperty
(
"曲线半径(m)"
)
private
BigDecimal
curveRadius
;
@ApiModelProperty
(
"超高(mm)"
)
private
BigDecimal
superHigh
;
@ApiModelProperty
(
"加宽(mm)"
)
private
BigDecimal
widen
;
@ApiModelProperty
(
"顺坡率(‰)"
)
private
BigDecimal
slopeRatio
;
@ApiModelProperty
(
"长度(m)"
)
private
BigDecimal
longExtent
;
@ApiModelProperty
(
"备注"
)
private
String
remark
;
@ApiModelProperty
(
"是否删除(0:未删除;1:已删除)"
)
private
String
delFlag
;
}
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/dto/MovementCourseInfoDTO.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
checkData
.
equipmentCheckData
.
dto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* <p>
* 动静态几何尺寸对应得里程相关信息详情表
* </p>
*
* @author hkl
* @since 2023-07-11
*/
@Data
public
class
MovementCourseInfoDTO
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"主键"
)
private
String
id
;
@ApiModelProperty
(
"创建人"
)
private
String
createBy
;
@ApiModelProperty
(
"创建日期"
)
private
Date
createTime
;
@ApiModelProperty
(
"更新人"
)
private
String
updateBy
;
@ApiModelProperty
(
"更新时间"
)
private
Date
updateTime
;
@ApiModelProperty
(
"动静态几何尺寸数据主表主键-》外键"
)
private
String
movementMasterId
;
@ApiModelProperty
(
"动静态几何尺寸对应得里程信息主键-》外键"
)
private
BigDecimal
movementCourseId
;
@ApiModelProperty
(
"轨号"
)
private
String
trackCode
;
@ApiModelProperty
(
"测点"
)
private
Integer
measurePoint
;
@ApiModelProperty
(
"轨距"
)
private
String
trackGauge
;
@ApiModelProperty
(
"水平"
)
private
String
level
;
@ApiModelProperty
(
"三角坑"
)
private
String
triangularPit
;
@ApiModelProperty
(
"方向"
)
private
String
direction
;
@ApiModelProperty
(
"高低"
)
private
String
height
;
@ApiModelProperty
(
"结构"
)
private
String
structure
;
@ApiModelProperty
(
"整改"
)
private
String
rectification
;
@ApiModelProperty
(
"是否删除(0:未删除;1:已删除)"
)
private
String
delFlag
;
}
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/dto/MovementRecordsMasterDTO.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
checkData
.
equipmentCheckData
.
dto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* <p>
* 动静态几何尺寸数据主表
* </p>
*
* @author hkl
* @since 2023-07-11
*/
@Data
public
class
MovementRecordsMasterDTO
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"主键"
)
private
String
id
;
@ApiModelProperty
(
"创建人"
)
private
String
createBy
;
@ApiModelProperty
(
"创建日期"
)
private
Date
createTime
;
@ApiModelProperty
(
"更新人"
)
private
String
updateBy
;
@ApiModelProperty
(
"更新时间"
)
private
Date
updateTime
;
@ApiModelProperty
(
"动态几何尺寸类型(1:人工静态检查;2:轨检仪静态检查)"
)
private
String
type
;
@ApiModelProperty
(
"检查批次编号"
)
private
String
ekCode
;
@ApiModelProperty
(
"工单编号"
)
private
String
workCode
;
@ApiModelProperty
(
"检查区间id"
)
private
String
subwaySectionId
;
@ApiModelProperty
(
"检查区间名称"
)
private
String
subwaySectionName
;
@ApiModelProperty
(
"所属线路id"
)
private
String
lightRailId
;
@ApiModelProperty
(
"所属线路名称"
)
private
String
lightRailName
;
@ApiModelProperty
(
"所属线别id"
)
private
String
lineAliasId
;
@ApiModelProperty
(
"所属线别名称"
)
private
String
lineAliasName
;
@ApiModelProperty
(
"起始里程"
)
private
BigDecimal
startingMileage
;
@ApiModelProperty
(
"终点里程"
)
private
BigDecimal
endMileage
;
@ApiModelProperty
(
"钢轨单元数量"
)
private
Integer
railNum
;
@ApiModelProperty
(
"曲线数量"
)
private
Integer
curveNum
;
@ApiModelProperty
(
"竖曲线数量"
)
private
Integer
verticalCurveNum
;
@ApiModelProperty
(
"道岔数量"
)
private
Integer
switchNum
;
@ApiModelProperty
(
"检查人姓名"
)
private
String
checkBy
;
@ApiModelProperty
(
"检查日期"
)
private
Date
checkTime
;
@ApiModelProperty
(
"审核人姓名"
)
private
String
verifyBy
;
@ApiModelProperty
(
"审核时间"
)
private
Date
verifyTime
;
@ApiModelProperty
(
"备注"
)
private
String
remark
;
@ApiModelProperty
(
"是否删除(0:未删除;1:已删除)"
)
private
String
delFlag
;
}
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/entity/MovementCourse.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
checkData
.
equipmentCheckData
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
import
org.springframework.format.annotation.DateTimeFormat
;
/**
* <p>
* 动静态几何尺寸对应得里程相关信息表
* </p>
*
* @author hkl
* @since 2023-07-11
*/
@Getter
@Setter
@TableName
(
"t_djt_movement_course"
)
@ApiModel
(
value
=
"MovementCourse对象"
,
description
=
"动静态几何尺寸对应得里程相关信息表 "
)
public
class
MovementCourse
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"主键"
)
@TableId
(
"id"
)
private
String
id
;
@ApiModelProperty
(
"创建人"
)
@TableField
(
"create_by"
)
private
String
createBy
;
@ApiModelProperty
(
"创建日期"
)
@TableField
(
"create_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
createTime
;
@ApiModelProperty
(
"更新人"
)
@TableField
(
"update_by"
)
private
String
updateBy
;
@ApiModelProperty
(
"更新时间"
)
@TableField
(
"update_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
updateTime
;
@ApiModelProperty
(
"动静态几何尺寸数据主表主键-》外键"
)
@TableField
(
"movement_master_id"
)
private
String
movementMasterId
;
@ApiModelProperty
(
"检查起始里程(m)"
)
@TableField
(
"course_starting_mileage"
)
private
BigDecimal
courseStartingMileage
;
@ApiModelProperty
(
"检查终点里程(m)"
)
@TableField
(
"course_end_mileage"
)
private
BigDecimal
courseEndMileage
;
@ApiModelProperty
(
"曲线半径(m)"
)
@TableField
(
"curve_radius"
)
private
BigDecimal
curveRadius
;
@ApiModelProperty
(
"超高(mm)"
)
@TableField
(
"super_high"
)
private
BigDecimal
superHigh
;
@ApiModelProperty
(
"加宽(mm)"
)
@TableField
(
"widen"
)
private
BigDecimal
widen
;
@ApiModelProperty
(
"顺坡率(‰)"
)
@TableField
(
"slope_ratio"
)
private
BigDecimal
slopeRatio
;
@ApiModelProperty
(
"长度(m)"
)
@TableField
(
"long_extent"
)
private
BigDecimal
longExtent
;
@ApiModelProperty
(
"备注"
)
@TableField
(
"remark"
)
private
String
remark
;
@ApiModelProperty
(
"是否删除(0:未删除;1:已删除)"
)
@TableField
(
"del_flag"
)
private
String
delFlag
;
}
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/entity/MovementCourseInfo.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
checkData
.
equipmentCheckData
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
import
org.springframework.format.annotation.DateTimeFormat
;
/**
* <p>
* 动静态几何尺寸对应得里程相关信息详情表
* </p>
*
* @author hkl
* @since 2023-07-11
*/
@Getter
@Setter
@TableName
(
"t_djt_movement_course_info"
)
@ApiModel
(
value
=
"MovementCourseInfo对象"
,
description
=
"动静态几何尺寸对应得里程相关信息详情表"
)
public
class
MovementCourseInfo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"主键"
)
@TableId
(
"id"
)
private
String
id
;
@ApiModelProperty
(
"创建人"
)
@TableField
(
"create_by"
)
private
String
createBy
;
@ApiModelProperty
(
"创建日期"
)
@TableField
(
"create_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
createTime
;
@ApiModelProperty
(
"更新人"
)
@TableField
(
"update_by"
)
private
String
updateBy
;
@ApiModelProperty
(
"更新时间"
)
@TableField
(
"update_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
updateTime
;
@ApiModelProperty
(
"动静态几何尺寸数据主表主键-》外键"
)
@TableField
(
"movement_master_id"
)
private
String
movementMasterId
;
@ApiModelProperty
(
"动静态几何尺寸对应得里程信息主键-》外键"
)
@TableField
(
"movement_course_id"
)
private
BigDecimal
movementCourseId
;
@ApiModelProperty
(
"轨号"
)
@TableField
(
"track_code"
)
private
String
trackCode
;
@ApiModelProperty
(
"测点"
)
@TableField
(
"measure_point"
)
private
Integer
measurePoint
;
@ApiModelProperty
(
"轨距"
)
@TableField
(
"track_gauge"
)
private
String
trackGauge
;
@ApiModelProperty
(
"水平"
)
@TableField
(
"level"
)
private
String
level
;
@ApiModelProperty
(
"三角坑"
)
@TableField
(
"triangular_pit"
)
private
String
triangularPit
;
@ApiModelProperty
(
"方向"
)
@TableField
(
"direction"
)
private
String
direction
;
@ApiModelProperty
(
"高低"
)
@TableField
(
"height"
)
private
String
height
;
@ApiModelProperty
(
"结构"
)
@TableField
(
"structure"
)
private
String
structure
;
@ApiModelProperty
(
"整改"
)
@TableField
(
"rectification"
)
private
String
rectification
;
@ApiModelProperty
(
"是否删除(0:未删除;1:已删除)"
)
@TableField
(
"del_flag"
)
private
String
delFlag
;
}
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/entity/MovementRecordsMaster.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
checkData
.
equipmentCheckData
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.Setter
;
import
org.springframework.format.annotation.DateTimeFormat
;
/**
* <p>
* 动静态几何尺寸数据主表
* </p>
*
* @author hkl
* @since 2023-07-11
*/
@Getter
@Setter
@TableName
(
"t_djt_movement_records_master"
)
@ApiModel
(
value
=
"MovementRecordsMaster对象"
,
description
=
"动静态几何尺寸数据主表 "
)
public
class
MovementRecordsMaster
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"主键"
)
@TableId
(
"id"
)
private
String
id
;
@ApiModelProperty
(
"创建人"
)
@TableField
(
"create_by"
)
private
String
createBy
;
@ApiModelProperty
(
"创建日期"
)
@TableField
(
"create_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
createTime
;
@ApiModelProperty
(
"更新人"
)
@TableField
(
"update_by"
)
private
String
updateBy
;
@ApiModelProperty
(
"更新时间"
)
@TableField
(
"update_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
updateTime
;
@ApiModelProperty
(
"动态几何尺寸类型(1:人工静态检查;2:轨检仪静态检查)"
)
@TableField
(
"type"
)
private
String
type
;
@ApiModelProperty
(
"检查批次编号"
)
@TableField
(
"ek_code"
)
private
String
ekCode
;
@ApiModelProperty
(
"工单编号"
)
@TableField
(
"work_code"
)
private
String
workCode
;
@ApiModelProperty
(
"检查区间id"
)
@TableField
(
"subway_section_id"
)
private
String
subwaySectionId
;
@ApiModelProperty
(
"检查区间名称"
)
@TableField
(
"subway_section_name"
)
private
String
subwaySectionName
;
@ApiModelProperty
(
"所属线路id"
)
@TableField
(
"light_rail_id"
)
private
String
lightRailId
;
@ApiModelProperty
(
"所属线路名称"
)
@TableField
(
"light_rail_name"
)
private
String
lightRailName
;
@ApiModelProperty
(
"所属线别id"
)
@TableField
(
"line_alias_id"
)
private
String
lineAliasId
;
@ApiModelProperty
(
"所属线别名称"
)
@TableField
(
"line_alias_name"
)
private
String
lineAliasName
;
@ApiModelProperty
(
"起始里程"
)
@TableField
(
"starting_mileage"
)
private
BigDecimal
startingMileage
;
@ApiModelProperty
(
"终点里程"
)
@TableField
(
"end_mileage"
)
private
BigDecimal
endMileage
;
@ApiModelProperty
(
"钢轨单元数量"
)
@TableField
(
"rail_num"
)
private
Integer
railNum
;
@ApiModelProperty
(
"曲线数量"
)
@TableField
(
"curve_num"
)
private
Integer
curveNum
;
@ApiModelProperty
(
"竖曲线数量"
)
@TableField
(
"vertical_curve_num"
)
private
Integer
verticalCurveNum
;
@ApiModelProperty
(
"道岔数量"
)
@TableField
(
"switch_num"
)
private
Integer
switchNum
;
@ApiModelProperty
(
"检查人姓名"
)
@TableField
(
"check_by"
)
private
String
checkBy
;
@ApiModelProperty
(
"检查日期"
)
@TableField
(
"check_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
checkTime
;
@ApiModelProperty
(
"审核人姓名"
)
@TableField
(
"verify_by"
)
private
String
verifyBy
;
@ApiModelProperty
(
"审核时间"
)
@TableField
(
"verify_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
verifyTime
;
@ApiModelProperty
(
"备注"
)
@TableField
(
"remark"
)
private
String
remark
;
@ApiModelProperty
(
"是否删除(0:未删除;1:已删除)"
)
@TableField
(
"del_flag"
)
private
String
delFlag
;
}
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/entity/RecordsMasterCheck.java
View file @
28f0e352
...
@@ -12,9 +12,9 @@ import io.swagger.annotations.ApiModel;
...
@@ -12,9 +12,9 @@ import io.swagger.annotations.ApiModel;
import
io.swagger.annotations.ApiModelProperty
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.Setter
;
import
org.jeecg
framework.poi.excel.annotation.Excel
;
import
org.jeecg
.modules.utils.ExcelExport
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
org.jeecgframework.poi.excel.annotation.Excel
;
/**
/**
* <p>
* <p>
* 设备检查记录主表
* 设备检查记录主表
...
@@ -31,6 +31,10 @@ public class RecordsMasterCheck implements Serializable {
...
@@ -31,6 +31,10 @@ public class RecordsMasterCheck implements Serializable {
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
@ExcelExport
(
value
=
"序号"
,
sort
=
1
)
@TableField
(
exist
=
false
)
private
int
rowNum
;
@ApiModelProperty
(
"主键"
)
@ApiModelProperty
(
"主键"
)
@TableId
(
"id"
)
@TableId
(
"id"
)
private
String
id
;
private
String
id
;
...
@@ -55,14 +59,16 @@ public class RecordsMasterCheck implements Serializable {
...
@@ -55,14 +59,16 @@ public class RecordsMasterCheck implements Serializable {
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
updateTime
;
private
Date
updateTime
;
@Excel
(
name
=
"检查批次编号"
,
width
=
15
,
orderNum
=
"1"
)
@ExcelExport
(
value
=
"检查批次编号"
,
sort
=
2
)
//@Excel(name = "检查批次编号", width = 15, orderNum = "1")
@ApiModelProperty
(
"检查批次编号"
)
@ApiModelProperty
(
"检查批次编号"
)
@TableField
(
"ek_code"
)
@TableField
(
"ek_code"
)
private
String
ekCode
;
private
String
ekCode
;
@ExcelExport
(
value
=
"工单编号"
,
sort
=
3
)
@ApiModelProperty
(
"工单编号"
)
@ApiModelProperty
(
"工单编号"
)
@TableField
(
"work_code"
)
@TableField
(
"work_code"
)
@Excel
(
name
=
"工单编号"
,
width
=
15
,
orderNum
=
"2"
)
//
@Excel(name = "工单编号", width = 15, orderNum = "2")
private
String
workCode
;
private
String
workCode
;
@ApiModelProperty
(
"检查区间id"
)
@ApiModelProperty
(
"检查区间id"
)
...
@@ -71,7 +77,8 @@ public class RecordsMasterCheck implements Serializable {
...
@@ -71,7 +77,8 @@ public class RecordsMasterCheck implements Serializable {
@ApiModelProperty
(
"检查区间名称"
)
@ApiModelProperty
(
"检查区间名称"
)
@TableField
(
"subway_section_name"
)
@TableField
(
"subway_section_name"
)
@Excel
(
name
=
"检查区间"
,
width
=
15
,
orderNum
=
"3"
)
@ExcelExport
(
value
=
"检查区间名称"
,
sort
=
4
)
// @Excel(name = "检查区间", width = 15, orderNum = "3")
private
String
subwaySectionName
;
private
String
subwaySectionName
;
@ApiModelProperty
(
"所属线路id"
)
@ApiModelProperty
(
"所属线路id"
)
...
@@ -80,7 +87,8 @@ public class RecordsMasterCheck implements Serializable {
...
@@ -80,7 +87,8 @@ public class RecordsMasterCheck implements Serializable {
@ApiModelProperty
(
"所属线路名称"
)
@ApiModelProperty
(
"所属线路名称"
)
@TableField
(
"light_rail_name"
)
@TableField
(
"light_rail_name"
)
@Excel
(
name
=
"所属线路"
,
width
=
15
,
orderNum
=
"4"
)
@ExcelExport
(
value
=
"所属线路"
,
sort
=
5
)
//@Excel(name = "所属线路", width = 15, orderNum = "4")
private
String
lightRailName
;
private
String
lightRailName
;
@ApiModelProperty
(
"所属线别id"
)
@ApiModelProperty
(
"所属线别id"
)
...
@@ -89,44 +97,52 @@ public class RecordsMasterCheck implements Serializable {
...
@@ -89,44 +97,52 @@ public class RecordsMasterCheck implements Serializable {
@ApiModelProperty
(
"所属线别名称"
)
@ApiModelProperty
(
"所属线别名称"
)
@TableField
(
"line_alias_name"
)
@TableField
(
"line_alias_name"
)
@Excel
(
name
=
"所属线路"
,
width
=
15
,
orderNum
=
"5"
)
@ExcelExport
(
value
=
"所属线别"
,
sort
=
6
)
//@Excel(name = "所属线别", width = 15, orderNum = "5")
private
String
lineAliasName
;
private
String
lineAliasName
;
@ApiModelProperty
(
"起始里程"
)
@ApiModelProperty
(
"起始里程"
)
@TableField
(
"starting_mileage"
)
@TableField
(
"starting_mileage"
)
@Excel
(
name
=
"起始里程"
,
width
=
15
,
orderNum
=
"6"
)
//@Excel(name = "起始里程", width = 15, orderNum = "6")
@ExcelExport
(
value
=
"起始里程"
,
sort
=
7
)
private
BigDecimal
startingMileage
;
private
BigDecimal
startingMileage
;
@ApiModelProperty
(
"终点里程"
)
@ApiModelProperty
(
"终点里程"
)
@TableField
(
"end_mileage"
)
@TableField
(
"end_mileage"
)
@Excel
(
name
=
"终点里程"
,
width
=
15
,
orderNum
=
"7"
)
//@Excel(name = "终点里程", width = 15, orderNum = "7")
@ExcelExport
(
value
=
"终点里程"
,
sort
=
8
)
private
BigDecimal
endMileage
;
private
BigDecimal
endMileage
;
@ApiModelProperty
(
"备注"
)
@ApiModelProperty
(
"备注"
)
@TableField
(
"remark"
)
@TableField
(
"remark"
)
@Excel
(
name
=
"备注"
,
width
=
15
,
orderNum
=
"12"
)
//@Excel(name = "备注", width = 15, orderNum = "12")
@ExcelExport
(
value
=
"备注"
,
sort
=
13
)
private
String
remark
;
private
String
remark
;
@ApiModelProperty
(
"检查人姓名"
)
@ApiModelProperty
(
"检查人姓名"
)
@TableField
(
"check_by"
)
@TableField
(
"check_by"
)
@Excel
(
name
=
"检查人姓名"
,
width
=
15
,
orderNum
=
"8"
)
//@Excel(name = "检查人姓名", width = 15, orderNum = "8")
@ExcelExport
(
value
=
"检查人姓名"
,
sort
=
9
)
private
String
checkBy
;
private
String
checkBy
;
@ApiModelProperty
(
"检查日期"
)
@ApiModelProperty
(
"检查日期"
)
@TableField
(
"check_time"
)
@TableField
(
"check_time"
)
@Excel
(
name
=
"检查日期"
,
width
=
15
,
format
=
"yyyy-MM-dd"
,
orderNum
=
"9"
)
// @Excel(name = "检查日期", width = 15, format = "yyyy-MM-dd", orderNum = "9")
@ExcelExport
(
value
=
"检查日期"
,
format
=
"yyyy-MM-dd"
,
sort
=
10
)
private
Date
checkTime
;
private
Date
checkTime
;
@ApiModelProperty
(
"审核人姓名"
)
@ApiModelProperty
(
"审核人姓名"
)
@TableField
(
"verify_by"
)
@TableField
(
"verify_by"
)
@Excel
(
name
=
"审核人姓名"
,
width
=
15
,
orderNum
=
"10"
)
// @Excel(name = "审核人姓名", width = 15, orderNum = "10")
@ExcelExport
(
value
=
"审核人姓名"
,
sort
=
11
)
private
String
verifyBy
;
private
String
verifyBy
;
@ApiModelProperty
(
"审核时间"
)
@ApiModelProperty
(
"审核时间"
)
@TableField
(
"verify_time"
)
@TableField
(
"verify_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@Excel
(
name
=
"审核日期"
,
width
=
15
,
format
=
"yyyy-MM-dd"
,
orderNum
=
"11"
)
// @Excel(name = "审核日期", width = 15, format = "yyyy-MM-dd", orderNum = "11")
@ExcelExport
(
value
=
"审核日期"
,
format
=
"yyyy-MM-dd"
,
sort
=
12
)
private
Date
verifyTime
;
private
Date
verifyTime
;
@ApiModelProperty
(
"是否删除(0:未删除;1:已删除)"
)
@ApiModelProperty
(
"是否删除(0:未删除;1:已删除)"
)
...
...
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/mapper/MovementCourseInfoMapper.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
checkData
.
equipmentCheckData
.
mapper
;
import
org.jeecg.modules.checkData.equipmentCheckData.entity.MovementCourseInfo
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
/**
* <p>
* 动静态几何尺寸对应得里程相关信息详情表 Mapper 接口
* </p>
*
* @author hkl
* @since 2023-07-11
*/
public
interface
MovementCourseInfoMapper
extends
BaseMapper
<
MovementCourseInfo
>
{
}
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/mapper/MovementCourseMapper.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
checkData
.
equipmentCheckData
.
mapper
;
import
org.jeecg.modules.checkData.equipmentCheckData.entity.MovementCourse
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
/**
* <p>
* 动静态几何尺寸对应得里程相关信息表 Mapper 接口
* </p>
*
* @author hkl
* @since 2023-07-11
*/
public
interface
MovementCourseMapper
extends
BaseMapper
<
MovementCourse
>
{
}
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/mapper/MovementRecordsMasterMapper.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
checkData
.
equipmentCheckData
.
mapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
org.jeecg.modules.checkData.equipmentCheckData.dto.MovementRecordsMasterDTO
;
import
org.jeecg.modules.checkData.equipmentCheckData.dto.RecordPatrolMasterDTO
;
import
org.jeecg.modules.checkData.equipmentCheckData.entity.MovementRecordsMaster
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.jeecg.modules.checkData.equipmentCheckData.vo.MovementRecordsMasterVO
;
import
org.jeecg.modules.checkData.equipmentCheckData.vo.RecordPatrolMasterVO
;
/**
* <p>
* 动静态几何尺寸数据主表 Mapper 接口
* </p>
*
* @author hkl
* @since 2023-07-11
*/
public
interface
MovementRecordsMasterMapper
extends
BaseMapper
<
MovementRecordsMaster
>
{
/**
* 动静态几何尺寸列表-分页列表查询
* @param pageData
* @param dto
* @return
*/
Page
<
MovementRecordsMasterVO
>
queryPageList
(
Page
<
MovementRecordsMasterVO
>
pageData
,
MovementRecordsMasterDTO
dto
);
}
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/mapper/xml/MovementCourseInfoMapper.xml
0 → 100644
View file @
28f0e352
<?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=
"org.jeecg.modules.checkData.equipmentCheckData.mapper.MovementCourseInfoMapper"
>
</mapper>
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/mapper/xml/MovementCourseMapper.xml
0 → 100644
View file @
28f0e352
<?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=
"org.jeecg.modules.checkData.equipmentCheckData.mapper.MovementCourseMapper"
>
</mapper>
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/mapper/xml/MovementRecordsMasterMapper.xml
0 → 100644
View file @
28f0e352
<?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=
"org.jeecg.modules.checkData.equipmentCheckData.mapper.MovementRecordsMasterMapper"
>
<select
id=
"queryPageList"
resultType=
"org.jeecg.modules.checkData.equipmentCheckData.vo.MovementRecordsMasterVO"
>
SELECT
t1.*
FROM
t_djt_movement_records_master t1
<where>
1=1
<if
test=
"dto.ekCode != null and dto.ekCode != ''"
>
AND t1.ek_code like concat('%',#{dto.ekCode},'%')
</if>
<if
test=
"dto.subwaySectionName != null and dto.subwaySectionName != ''"
>
AND t1.subway_section_name like concat('%',#{dto.subwaySectionName},'%')
</if>
<if
test=
"dto.lightRailName != null and dto.lightRailName != ''"
>
AND t1.light_rail_name like concat('%',#{dto.lightRailName},'%')
</if>
<if
test=
"dto.lineAliasName != null and dto.lineAliasName != ''"
>
AND t1.line_alias_name like concat('%',#{dto.lineAliasName},'%')
</if>
AND t1.type = #{dto.type}
AND t1.del_flag = '0'
order by t1.create_time desc
</where>
</select>
</mapper>
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/service/IMovementCourseInfoService.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
checkData
.
equipmentCheckData
.
service
;
import
org.jeecg.modules.checkData.equipmentCheckData.entity.MovementCourseInfo
;
import
com.baomidou.mybatisplus.extension.service.IService
;
/**
* <p>
* 动静态几何尺寸对应得里程相关信息详情表 服务类
* </p>
*
* @author hkl
* @since 2023-07-11
*/
public
interface
IMovementCourseInfoService
extends
IService
<
MovementCourseInfo
>
{
}
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/service/IMovementCourseService.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
checkData
.
equipmentCheckData
.
service
;
import
org.jeecg.modules.checkData.equipmentCheckData.entity.MovementCourse
;
import
com.baomidou.mybatisplus.extension.service.IService
;
/**
* <p>
* 动静态几何尺寸对应得里程相关信息表 服务类
* </p>
*
* @author hkl
* @since 2023-07-11
*/
public
interface
IMovementCourseService
extends
IService
<
MovementCourse
>
{
}
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/service/IMovementRecordsMasterService.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
checkData
.
equipmentCheckData
.
service
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
org.jeecg.modules.checkData.equipmentCheckData.dto.MovementRecordsMasterDTO
;
import
org.jeecg.modules.checkData.equipmentCheckData.entity.MovementRecordsMaster
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
org.jeecg.modules.checkData.equipmentCheckData.vo.MovementRecordsMasterVO
;
/**
* <p>
* 动静态几何尺寸数据主表 服务类
* </p>
*
* @author hkl
* @since 2023-07-11
*/
public
interface
IMovementRecordsMasterService
extends
IService
<
MovementRecordsMaster
>
{
/**
* 动静态几何尺寸列表-分页列表查询
* @param pageData
* @param dto
* @return
*/
Page
<
MovementRecordsMasterVO
>
queryPageList
(
Page
<
MovementRecordsMasterVO
>
pageData
,
MovementRecordsMasterDTO
dto
);
}
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/service/impl/MovementCourseInfoServiceImpl.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
checkData
.
equipmentCheckData
.
service
.
impl
;
import
org.jeecg.modules.checkData.equipmentCheckData.entity.MovementCourseInfo
;
import
org.jeecg.modules.checkData.equipmentCheckData.mapper.MovementCourseInfoMapper
;
import
org.jeecg.modules.checkData.equipmentCheckData.service.IMovementCourseInfoService
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.stereotype.Service
;
/**
* <p>
* 动静态几何尺寸对应得里程相关信息详情表 服务实现类
* </p>
*
* @author hkl
* @since 2023-07-11
*/
@Service
public
class
MovementCourseInfoServiceImpl
extends
ServiceImpl
<
MovementCourseInfoMapper
,
MovementCourseInfo
>
implements
IMovementCourseInfoService
{
}
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/service/impl/MovementCourseServiceImpl.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
checkData
.
equipmentCheckData
.
service
.
impl
;
import
org.jeecg.modules.checkData.equipmentCheckData.entity.MovementCourse
;
import
org.jeecg.modules.checkData.equipmentCheckData.mapper.MovementCourseMapper
;
import
org.jeecg.modules.checkData.equipmentCheckData.service.IMovementCourseService
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.stereotype.Service
;
/**
* <p>
* 动静态几何尺寸对应得里程相关信息表 服务实现类
* </p>
*
* @author hkl
* @since 2023-07-11
*/
@Service
public
class
MovementCourseServiceImpl
extends
ServiceImpl
<
MovementCourseMapper
,
MovementCourse
>
implements
IMovementCourseService
{
}
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/service/impl/MovementRecordsMasterServiceImpl.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
checkData
.
equipmentCheckData
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
org.jeecg.modules.checkData.equipmentCheckData.dto.MovementRecordsMasterDTO
;
import
org.jeecg.modules.checkData.equipmentCheckData.entity.MovementRecordsMaster
;
import
org.jeecg.modules.checkData.equipmentCheckData.mapper.MovementRecordsMasterMapper
;
import
org.jeecg.modules.checkData.equipmentCheckData.service.IMovementRecordsMasterService
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.jeecg.modules.checkData.equipmentCheckData.vo.MovementRecordsMasterVO
;
import
org.springframework.stereotype.Service
;
/**
* <p>
* 动静态几何尺寸数据主表 服务实现类
* </p>
*
* @author hkl
* @since 2023-07-11
*/
@Service
public
class
MovementRecordsMasterServiceImpl
extends
ServiceImpl
<
MovementRecordsMasterMapper
,
MovementRecordsMaster
>
implements
IMovementRecordsMasterService
{
/**
* 动静态几何尺寸列表-分页列表查询
* @param pageData
* @param dto
* @return
*/
@Override
public
Page
<
MovementRecordsMasterVO
>
queryPageList
(
Page
<
MovementRecordsMasterVO
>
pageData
,
MovementRecordsMasterDTO
dto
)
{
return
this
.
baseMapper
.
queryPageList
(
pageData
,
dto
);
}
}
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/vo/MovementCourseInfoOneVO.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
checkData
.
equipmentCheckData
.
vo
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.math.BigDecimal
;
import
java.util.Date
;
import
java.util.List
;
/**
* <p>
* 动静态几何尺寸对应得里程相关信息详情表
* </p>
*
* @author hkl
* @since 2023-07-11
*/
@Data
public
class
MovementCourseInfoOneVO
{
@ApiModelProperty
(
"轨号"
)
private
String
trackCode
;
@ApiModelProperty
(
"轨号对应的详情集合"
)
private
List
<
MovementCourseInfoVO
>
infoList
;
}
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/vo/MovementCourseInfoVO.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
checkData
.
equipmentCheckData
.
vo
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* <p>
* 动静态几何尺寸对应得里程相关信息详情表
* </p>
*
* @author hkl
* @since 2023-07-11
*/
@Data
public
class
MovementCourseInfoVO
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"主键"
)
private
String
id
;
@ApiModelProperty
(
"创建人"
)
private
String
createBy
;
@ApiModelProperty
(
"创建日期"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
createTime
;
@ApiModelProperty
(
"更新人"
)
private
String
updateBy
;
@ApiModelProperty
(
"更新时间"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
updateTime
;
@ApiModelProperty
(
"动静态几何尺寸数据主表主键-》外键"
)
private
String
movementMasterId
;
@ApiModelProperty
(
"动静态几何尺寸对应得里程信息主键-》外键"
)
private
BigDecimal
movementCourseId
;
@ApiModelProperty
(
"轨号"
)
private
String
trackCode
;
@ApiModelProperty
(
"测点"
)
private
Integer
measurePoint
;
@ApiModelProperty
(
"轨距"
)
private
String
trackGauge
;
@ApiModelProperty
(
"水平"
)
private
String
level
;
@ApiModelProperty
(
"三角坑"
)
private
String
triangularPit
;
@ApiModelProperty
(
"方向"
)
private
String
direction
;
@ApiModelProperty
(
"高低"
)
private
String
height
;
@ApiModelProperty
(
"结构"
)
private
String
structure
;
@ApiModelProperty
(
"整改"
)
private
String
rectification
;
@ApiModelProperty
(
"是否删除(0:未删除;1:已删除)"
)
private
String
delFlag
;
}
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/vo/MovementCourseVO.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
checkData
.
equipmentCheckData
.
vo
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* <p>
* 动静态几何尺寸对应得里程相关信息表
* </p>
*
* @author hkl
* @since 2023-07-11
*/
@Data
public
class
MovementCourseVO
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"主键"
)
private
String
id
;
@ApiModelProperty
(
"创建人"
)
private
String
createBy
;
@ApiModelProperty
(
"创建日期"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
createTime
;
@ApiModelProperty
(
"更新人"
)
private
String
updateBy
;
@ApiModelProperty
(
"更新时间"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
updateTime
;
@ApiModelProperty
(
"动静态几何尺寸数据主表主键-》外键"
)
private
String
movementMasterId
;
@ApiModelProperty
(
"检查起始里程(m)"
)
private
BigDecimal
courseStartingMileage
;
@ApiModelProperty
(
"检查终点里程(m)"
)
private
BigDecimal
courseEndMileage
;
@ApiModelProperty
(
"曲线半径(m)"
)
private
BigDecimal
curveRadius
;
@ApiModelProperty
(
"超高(mm)"
)
private
BigDecimal
superHigh
;
@ApiModelProperty
(
"加宽(mm)"
)
private
BigDecimal
widen
;
@ApiModelProperty
(
"顺坡率(‰)"
)
private
BigDecimal
slopeRatio
;
@ApiModelProperty
(
"长度(m)"
)
private
BigDecimal
longExtent
;
@ApiModelProperty
(
"备注"
)
private
String
remark
;
@ApiModelProperty
(
"是否删除(0:未删除;1:已删除)"
)
private
String
delFlag
;
}
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/vo/MovementRecordsMasterVO.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
checkData
.
equipmentCheckData
.
vo
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
lombok.Getter
;
import
lombok.Setter
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
java.math.BigDecimal
;
import
java.util.Date
;
/**
* <p>
* 动静态几何尺寸数据主表
* </p>
*
* @author hkl
* @since 2023-07-11
*/
@Data
public
class
MovementRecordsMasterVO
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"主键"
)
private
String
id
;
@ApiModelProperty
(
"创建人"
)
private
String
createBy
;
@ApiModelProperty
(
"创建日期"
)
private
Date
createTime
;
@ApiModelProperty
(
"更新人"
)
private
String
updateBy
;
@ApiModelProperty
(
"更新时间"
)
private
Date
updateTime
;
@ApiModelProperty
(
"动态几何尺寸类型(1:人工静态检查;2:轨检仪静态检查)"
)
private
String
type
;
@ApiModelProperty
(
"检查批次编号"
)
private
String
ekCode
;
@ApiModelProperty
(
"工单编号"
)
private
String
workCode
;
@ApiModelProperty
(
"检查区间id"
)
private
String
subwaySectionId
;
@ApiModelProperty
(
"检查区间名称"
)
private
String
subwaySectionName
;
@ApiModelProperty
(
"所属线路id"
)
private
String
lightRailId
;
@ApiModelProperty
(
"所属线路名称"
)
private
String
lightRailName
;
@ApiModelProperty
(
"所属线别id"
)
private
String
lineAliasId
;
@ApiModelProperty
(
"所属线别名称"
)
private
String
lineAliasName
;
@ApiModelProperty
(
"起始里程"
)
private
BigDecimal
startingMileage
;
@ApiModelProperty
(
"终点里程"
)
private
BigDecimal
endMileage
;
@ApiModelProperty
(
"钢轨单元数量"
)
private
Integer
railNum
;
@ApiModelProperty
(
"曲线数量"
)
private
Integer
curveNum
;
@ApiModelProperty
(
"竖曲线数量"
)
private
Integer
verticalCurveNum
;
@ApiModelProperty
(
"道岔数量"
)
private
Integer
switchNum
;
@ApiModelProperty
(
"检查人姓名"
)
private
String
checkBy
;
@ApiModelProperty
(
"检查日期"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
checkTime
;
@ApiModelProperty
(
"审核人姓名"
)
private
String
verifyBy
;
@ApiModelProperty
(
"审核时间"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
verifyTime
;
@ApiModelProperty
(
"备注"
)
private
String
remark
;
@ApiModelProperty
(
"是否删除(0:未删除;1:已删除)"
)
private
String
delFlag
;
}
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/vo/MovementSavaQueryVO.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
checkData
.
equipmentCheckData
.
vo
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.math.BigDecimal
;
import
java.util.List
;
/**
* 动静态几何保存时初始化回显接口返回类
*/
@Data
public
class
MovementSavaQueryVO
{
@ApiModelProperty
(
"检查区间id"
)
private
String
subwaySectionId
;
@ApiModelProperty
(
"检查区间名称"
)
private
String
subwaySectionName
;
@ApiModelProperty
(
"所属线路id"
)
private
String
lightRailId
;
@ApiModelProperty
(
"所属线路名称"
)
private
String
lightRailName
;
@ApiModelProperty
(
"所属线别id"
)
private
String
lineAliasId
;
@ApiModelProperty
(
"所属线别名称"
)
private
String
lineAliasName
;
@ApiModelProperty
(
"起始里程"
)
private
BigDecimal
startingMileage
;
@ApiModelProperty
(
"终点里程"
)
private
BigDecimal
endMileage
;
@ApiModelProperty
(
"钢轨单元数量"
)
private
Integer
railNum
;
@ApiModelProperty
(
"曲线数量"
)
private
Integer
curveNum
;
@ApiModelProperty
(
"竖曲线数量"
)
private
Integer
verticalCurveNum
;
@ApiModelProperty
(
"道岔数量"
)
private
Integer
switchNum
;
}
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/vo/RecordPatrolMasterAssistVO.java
View file @
28f0e352
...
@@ -28,67 +28,52 @@ public class RecordPatrolMasterAssistVO {
...
@@ -28,67 +28,52 @@ public class RecordPatrolMasterAssistVO {
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"主键"
)
@ApiModelProperty
(
"主键"
)
@TableId
(
"id"
)
private
String
id
;
private
String
id
;
@ApiModelProperty
(
"创建人"
)
@ApiModelProperty
(
"创建人"
)
@TableField
(
"create_by"
)
private
String
createBy
;
private
String
createBy
;
@ApiModelProperty
(
"创建日期"
)
@ApiModelProperty
(
"创建日期"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@TableField
(
"create_time"
)
private
Date
createTime
;
private
Date
createTime
;
@ApiModelProperty
(
"更新人"
)
@ApiModelProperty
(
"更新人"
)
@TableField
(
"update_by"
)
private
String
updateBy
;
private
String
updateBy
;
@ApiModelProperty
(
"更新时间"
)
@ApiModelProperty
(
"更新时间"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@TableField
(
"update_time"
)
private
Date
updateTime
;
private
Date
updateTime
;
@ApiModelProperty
(
"线路巡查记录主表id-外键"
)
@ApiModelProperty
(
"线路巡查记录主表id-外键"
)
@TableField
(
"record_master_id"
)
private
String
recordMasterId
;
private
String
recordMasterId
;
@ApiModelProperty
(
"巡查区间id"
)
@ApiModelProperty
(
"巡查区间id"
)
@TableField
(
"subway_section_id"
)
private
String
subwaySectionId
;
private
String
subwaySectionId
;
@ApiModelProperty
(
"巡查区间名称"
)
@ApiModelProperty
(
"巡查区间名称"
)
@TableField
(
"subway_section_name"
)
private
String
subwaySectionName
;
private
String
subwaySectionName
;
@ApiModelProperty
(
"线别id"
)
@ApiModelProperty
(
"线别id"
)
@TableField
(
"line_alias_id"
)
private
String
lineAliasId
;
private
String
lineAliasId
;
@ApiModelProperty
(
"线别名称"
)
@ApiModelProperty
(
"线别名称"
)
@TableField
(
"line_alias_name"
)
private
String
lineAliasName
;
private
String
lineAliasName
;
@ApiModelProperty
(
"起始里程"
)
@ApiModelProperty
(
"起始里程"
)
@TableField
(
"starting_mileage"
)
private
BigDecimal
startingMileage
;
private
BigDecimal
startingMileage
;
@ApiModelProperty
(
"终点里程"
)
@ApiModelProperty
(
"终点里程"
)
@TableField
(
"end_mileage"
)
private
BigDecimal
endMileage
;
private
BigDecimal
endMileage
;
@ApiModelProperty
(
"问题记录"
)
@ApiModelProperty
(
"问题记录"
)
@TableField
(
"problem_record"
)
private
String
problemRecord
;
private
String
problemRecord
;
@ApiModelProperty
(
"处理情况"
)
@ApiModelProperty
(
"处理情况"
)
@TableField
(
"handing_log"
)
private
String
handingLog
;
private
String
handingLog
;
@ApiModelProperty
(
"是否删除(0:未删除;1:已删除)"
)
@ApiModelProperty
(
"是否删除(0:未删除;1:已删除)"
)
@TableField
(
"del_flag"
)
private
String
delFlag
;
private
String
delFlag
;
...
...
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/vo/RecordPatrolMasterInfoVO.java
View file @
28f0e352
...
@@ -27,55 +27,43 @@ public class RecordPatrolMasterInfoVO {
...
@@ -27,55 +27,43 @@ public class RecordPatrolMasterInfoVO {
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"主键"
)
@ApiModelProperty
(
"主键"
)
@TableId
(
"id"
)
private
String
id
;
private
String
id
;
@ApiModelProperty
(
"创建人"
)
@ApiModelProperty
(
"创建人"
)
@TableField
(
"create_by"
)
private
String
createBy
;
private
String
createBy
;
@ApiModelProperty
(
"创建日期"
)
@ApiModelProperty
(
"创建日期"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@TableField
(
"create_time"
)
private
Date
createTime
;
private
Date
createTime
;
@ApiModelProperty
(
"更新人"
)
@ApiModelProperty
(
"更新人"
)
@TableField
(
"update_by"
)
private
String
updateBy
;
private
String
updateBy
;
@ApiModelProperty
(
"更新时间"
)
@ApiModelProperty
(
"更新时间"
)
@TableField
(
"update_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
updateTime
;
private
Date
updateTime
;
@ApiModelProperty
(
"线路巡查记录主表id-外键"
)
@ApiModelProperty
(
"线路巡查记录主表id-外键"
)
@TableField
(
"record_master_id"
)
private
String
recordMasterId
;
private
String
recordMasterId
;
@ApiModelProperty
(
"检查项目名称"
)
@ApiModelProperty
(
"检查项目名称"
)
@TableField
(
"ek_project_name"
)
private
String
ekProjectName
;
private
String
ekProjectName
;
@ApiModelProperty
(
"重点检查项目内容"
)
@ApiModelProperty
(
"重点检查项目内容"
)
@TableField
(
"ek_project_content"
)
private
String
ekProjectContent
;
private
String
ekProjectContent
;
@ApiModelProperty
(
"问题记录"
)
@ApiModelProperty
(
"问题记录"
)
@TableField
(
"problem_record"
)
private
String
problemRecord
;
private
String
problemRecord
;
@ApiModelProperty
(
"处理情况"
)
@ApiModelProperty
(
"处理情况"
)
@TableField
(
"handing_log"
)
private
String
handingLog
;
private
String
handingLog
;
@ApiModelProperty
(
"是否满足(1:是;2:否)"
)
@ApiModelProperty
(
"是否满足(1:是;2:否)"
)
@TableField
(
"status"
)
private
String
status
;
private
String
status
;
@ApiModelProperty
(
"是否删除(0:未删除;1:已删除)"
)
@ApiModelProperty
(
"是否删除(0:未删除;1:已删除)"
)
@TableField
(
"del_flag"
)
private
String
delFlag
;
private
String
delFlag
;
...
...
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/vo/RecordPatrolMasterVO.java
View file @
28f0e352
...
@@ -29,81 +29,63 @@ public class RecordPatrolMasterVO {
...
@@ -29,81 +29,63 @@ public class RecordPatrolMasterVO {
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"主键"
)
@ApiModelProperty
(
"主键"
)
@TableId
(
"id"
)
private
String
id
;
private
String
id
;
@ApiModelProperty
(
"创建人"
)
@ApiModelProperty
(
"创建人"
)
@TableField
(
"create_by"
)
private
String
createBy
;
private
String
createBy
;
@ApiModelProperty
(
"创建日期"
)
@ApiModelProperty
(
"创建日期"
)
@TableField
(
"create_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
createTime
;
private
Date
createTime
;
@ApiModelProperty
(
"更新人"
)
@ApiModelProperty
(
"更新人"
)
@TableField
(
"update_by"
)
private
String
updateBy
;
private
String
updateBy
;
@ApiModelProperty
(
"更新时间"
)
@ApiModelProperty
(
"更新时间"
)
@TableField
(
"update_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
updateTime
;
private
Date
updateTime
;
@ApiModelProperty
(
"检查批次编号"
)
@ApiModelProperty
(
"检查批次编号"
)
@TableField
(
"ek_code"
)
private
String
ekCode
;
private
String
ekCode
;
@ApiModelProperty
(
"工单编号"
)
@ApiModelProperty
(
"工单编号"
)
@TableField
(
"work_code"
)
private
String
workCode
;
private
String
workCode
;
@ApiModelProperty
(
"检查日期"
)
@ApiModelProperty
(
"检查日期"
)
@TableField
(
"inspect_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
inspectTime
;
private
Date
inspectTime
;
@ApiModelProperty
(
"天气"
)
@ApiModelProperty
(
"天气"
)
@TableField
(
"weather"
)
private
String
weather
;
private
String
weather
;
@ApiModelProperty
(
"巡查线路id"
)
@ApiModelProperty
(
"巡查线路id"
)
@TableField
(
"light_rail_id"
)
private
String
lightRailId
;
private
String
lightRailId
;
@ApiModelProperty
(
"巡查线路名称"
)
@ApiModelProperty
(
"巡查线路名称"
)
@TableField
(
"light_rail_name"
)
private
String
lightRailName
;
private
String
lightRailName
;
@ApiModelProperty
(
"计划巡道里程(km)"
)
@ApiModelProperty
(
"计划巡道里程(km)"
)
@TableField
(
"planned_patrol_mileage"
)
private
BigDecimal
plannedPatrolMileage
;
private
BigDecimal
plannedPatrolMileage
;
@ApiModelProperty
(
"巡道线别id"
)
@ApiModelProperty
(
"巡道线别id"
)
@TableField
(
"line_alias_id"
)
private
String
lineAliasId
;
private
String
lineAliasId
;
@ApiModelProperty
(
"巡道线别名称"
)
@ApiModelProperty
(
"巡道线别名称"
)
@TableField
(
"line_alias_name"
)
private
String
lineAliasName
;
private
String
lineAliasName
;
@ApiModelProperty
(
"起始里程"
)
@ApiModelProperty
(
"起始里程"
)
@TableField
(
"starting_mileage"
)
private
BigDecimal
startingMileage
;
private
BigDecimal
startingMileage
;
@ApiModelProperty
(
"终点里程"
)
@ApiModelProperty
(
"终点里程"
)
@TableField
(
"end_mileage"
)
private
BigDecimal
endMileage
;
private
BigDecimal
endMileage
;
@ApiModelProperty
(
"完成里程"
)
@ApiModelProperty
(
"完成里程"
)
@TableField
(
"completed_mileage"
)
private
BigDecimal
completedMileage
;
private
BigDecimal
completedMileage
;
@ApiModelProperty
(
"巡道类型(1:步行巡道 2:乘车巡道)"
)
@ApiModelProperty
(
"巡道类型(1:步行巡道 2:乘车巡道)"
)
@TableField
(
"patrol_type"
)
private
String
patrolType
;
private
String
patrolType
;
@ApiModelProperty
(
"巡道类型翻译(1:步行巡道 2:乘车巡道)"
)
@ApiModelProperty
(
"巡道类型翻译(1:步行巡道 2:乘车巡道)"
)
...
@@ -113,41 +95,33 @@ public class RecordPatrolMasterVO {
...
@@ -113,41 +95,33 @@ public class RecordPatrolMasterVO {
}
}
@ApiModelProperty
(
"巡道工时"
)
@ApiModelProperty
(
"巡道工时"
)
@TableField
(
"patrol_hourse"
)
private
BigDecimal
patrolHourse
;
private
BigDecimal
patrolHourse
;
@ApiModelProperty
(
"检查人姓名"
)
@ApiModelProperty
(
"检查人姓名"
)
@TableField
(
"check_by"
)
private
String
checkBy
;
private
String
checkBy
;
@ApiModelProperty
(
"清点时间"
)
@ApiModelProperty
(
"清点时间"
)
@TableField
(
"check_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd hh:mm"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd hh:mm"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd hh:mm"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd hh:mm"
)
private
Date
checkTime
;
private
Date
checkTime
;
@ApiModelProperty
(
"销点时间"
)
@ApiModelProperty
(
"销点时间"
)
@TableField
(
"pinpoint_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd hh:mm"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd hh:mm"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd hh:mm"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd hh:mm"
)
private
Date
pinpointTime
;
private
Date
pinpointTime
;
@ApiModelProperty
(
"审核人姓名"
)
@ApiModelProperty
(
"审核人姓名"
)
@TableField
(
"verify_by"
)
private
String
verifyBy
;
private
String
verifyBy
;
@ApiModelProperty
(
"审核时间"
)
@ApiModelProperty
(
"审核时间"
)
@TableField
(
"verify_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
verifyTime
;
private
Date
verifyTime
;
@ApiModelProperty
(
"巡道员备忘录"
)
@ApiModelProperty
(
"巡道员备忘录"
)
@TableField
(
"remark"
)
private
String
remark
;
private
String
remark
;
@ApiModelProperty
(
"是否删除(0:未删除;1:已删除)"
)
@ApiModelProperty
(
"是否删除(0:未删除;1:已删除)"
)
@TableField
(
"del_flag"
)
private
String
delFlag
;
private
String
delFlag
;
...
...
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/vo/RecordsMasterCheckVO.java
View file @
28f0e352
...
@@ -28,95 +28,74 @@ public class RecordsMasterCheckVO {
...
@@ -28,95 +28,74 @@ public class RecordsMasterCheckVO {
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"主键"
)
@ApiModelProperty
(
"主键"
)
@TableId
(
"id"
)
private
String
id
;
private
String
id
;
@ApiModelProperty
(
"创建人"
)
@ApiModelProperty
(
"创建人"
)
@TableField
(
"create_by"
)
private
String
createBy
;
private
String
createBy
;
@ApiModelProperty
(
"创建日期"
)
@ApiModelProperty
(
"创建日期"
)
@TableField
(
"create_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
createTime
;
private
Date
createTime
;
@ApiModelProperty
(
"更新人"
)
@ApiModelProperty
(
"更新人"
)
@TableField
(
"update_by"
)
private
String
updateBy
;
private
String
updateBy
;
@ApiModelProperty
(
"更新时间"
)
@ApiModelProperty
(
"更新时间"
)
@TableField
(
"update_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
updateTime
;
private
Date
updateTime
;
@ApiModelProperty
(
"检查批次编号"
)
@ApiModelProperty
(
"检查批次编号"
)
@TableField
(
"ek_code"
)
private
String
ekCode
;
private
String
ekCode
;
@ApiModelProperty
(
"工单编号"
)
@ApiModelProperty
(
"工单编号"
)
@TableField
(
"work_code"
)
private
String
workCode
;
private
String
workCode
;
@ApiModelProperty
(
"检查区间id"
)
@ApiModelProperty
(
"检查区间id"
)
@TableField
(
"subway_section_id"
)
private
String
subwaySectionId
;
private
String
subwaySectionId
;
@ApiModelProperty
(
"检查区间名称"
)
@ApiModelProperty
(
"检查区间名称"
)
@TableField
(
"subway_section_name"
)
private
String
subwaySectionName
;
private
String
subwaySectionName
;
@ApiModelProperty
(
"所属线路id"
)
@ApiModelProperty
(
"所属线路id"
)
@TableField
(
"light_rail_id"
)
private
String
lightRailId
;
private
String
lightRailId
;
@ApiModelProperty
(
"所属线路名称"
)
@ApiModelProperty
(
"所属线路名称"
)
@TableField
(
"light_rail_name"
)
private
String
lightRailName
;
private
String
lightRailName
;
@ApiModelProperty
(
"所属线别id"
)
@ApiModelProperty
(
"所属线别id"
)
@TableField
(
"line_alias_id"
)
private
String
lineAliasId
;
private
String
lineAliasId
;
@ApiModelProperty
(
"所属线别名称"
)
@ApiModelProperty
(
"所属线别名称"
)
@TableField
(
"line_alias_name"
)
private
String
lineAliasName
;
private
String
lineAliasName
;
@ApiModelProperty
(
"起始里程"
)
@ApiModelProperty
(
"起始里程"
)
@TableField
(
"starting_mileage"
)
private
BigDecimal
startingMileage
;
private
BigDecimal
startingMileage
;
@ApiModelProperty
(
"终点里程"
)
@ApiModelProperty
(
"终点里程"
)
@TableField
(
"end_mileage"
)
private
BigDecimal
endMileage
;
private
BigDecimal
endMileage
;
@ApiModelProperty
(
"备注"
)
@ApiModelProperty
(
"备注"
)
@TableField
(
"remark"
)
private
String
remark
;
private
String
remark
;
@ApiModelProperty
(
"检查人姓名"
)
@ApiModelProperty
(
"检查人姓名"
)
@TableField
(
"check_by"
)
private
String
checkBy
;
private
String
checkBy
;
@ApiModelProperty
(
"检查日期"
)
@ApiModelProperty
(
"检查日期"
)
@TableField
(
"check_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
checkTime
;
private
Date
checkTime
;
@ApiModelProperty
(
"审核人姓名"
)
@ApiModelProperty
(
"审核人姓名"
)
@TableField
(
"verify_by"
)
private
String
verifyBy
;
private
String
verifyBy
;
@ApiModelProperty
(
"审核时间"
)
@ApiModelProperty
(
"审核时间"
)
@TableField
(
"verify_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
verifyTime
;
private
Date
verifyTime
;
@ApiModelProperty
(
"是否删除(0:未删除;1:已删除)"
)
@ApiModelProperty
(
"是否删除(0:未删除;1:已删除)"
)
@TableField
(
"del_flag"
)
private
String
delFlag
;
private
String
delFlag
;
...
...
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/vo/TrackBedManagementCheckVO.java
View file @
28f0e352
...
@@ -25,51 +25,40 @@ public class TrackBedManagementCheckVO {
...
@@ -25,51 +25,40 @@ public class TrackBedManagementCheckVO {
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"主键"
)
@ApiModelProperty
(
"主键"
)
@TableId
(
"id"
)
private
String
id
;
private
String
id
;
@ApiModelProperty
(
"创建人"
)
@ApiModelProperty
(
"创建人"
)
@TableField
(
"create_by"
)
private
String
createBy
;
private
String
createBy
;
@ApiModelProperty
(
"创建日期"
)
@ApiModelProperty
(
"创建日期"
)
@TableField
(
"create_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
createTime
;
private
Date
createTime
;
@ApiModelProperty
(
"更新人"
)
@ApiModelProperty
(
"更新人"
)
@TableField
(
"update_by"
)
private
String
updateBy
;
private
String
updateBy
;
@ApiModelProperty
(
"更新时间"
)
@ApiModelProperty
(
"更新时间"
)
@TableField
(
"update_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
updateTime
;
private
Date
updateTime
;
@ApiModelProperty
(
"设备检查记录主表id->外键"
)
@ApiModelProperty
(
"设备检查记录主表id->外键"
)
@TableField
(
"records_master_check_id"
)
private
String
recordsMasterCheckId
;
private
String
recordsMasterCheckId
;
@ApiModelProperty
(
"道床id->外键"
)
@ApiModelProperty
(
"道床id->外键"
)
@TableField
(
"trak_bed_management_id"
)
private
String
trakBedManagementId
;
private
String
trakBedManagementId
;
@ApiModelProperty
(
"检查项目名称"
)
@ApiModelProperty
(
"检查项目名称"
)
@TableField
(
"ek_project_name"
)
private
String
ekProjectName
;
private
String
ekProjectName
;
@ApiModelProperty
(
"检查项目内容"
)
@ApiModelProperty
(
"检查项目内容"
)
@TableField
(
"ek_project_content"
)
private
String
ekProjectContent
;
private
String
ekProjectContent
;
@ApiModelProperty
(
"检查合格评判标准"
)
@ApiModelProperty
(
"检查合格评判标准"
)
@TableField
(
"ek_peoject_template"
)
private
String
ekPeojectTemplate
;
private
String
ekPeojectTemplate
;
@ApiModelProperty
(
"现场检查项目状态(1:合格;2:良好;3:不合格)"
)
@ApiModelProperty
(
"现场检查项目状态(1:合格;2:良好;3:不合格)"
)
@TableField
(
"ek_project_status"
)
private
String
ekProjectStatus
;
private
String
ekProjectStatus
;
@ApiModelProperty
(
"现场检查项目状态翻译(1:合格;2:良好;3:不合格)"
)
@ApiModelProperty
(
"现场检查项目状态翻译(1:合格;2:良好;3:不合格)"
)
...
@@ -79,7 +68,6 @@ public class TrackBedManagementCheckVO {
...
@@ -79,7 +68,6 @@ public class TrackBedManagementCheckVO {
}
}
@ApiModelProperty
(
"是否删除(0:未删除,1:已删除)"
)
@ApiModelProperty
(
"是否删除(0:未删除,1:已删除)"
)
@TableField
(
"del_flag"
)
private
String
delFlag
;
private
String
delFlag
;
...
...
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/vo/TurnoutUseCheckVO.java
View file @
28f0e352
...
@@ -22,71 +22,54 @@ public class TurnoutUseCheckVO {
...
@@ -22,71 +22,54 @@ public class TurnoutUseCheckVO {
private
static
final
long
serialVersionUID
=
1L
;
private
static
final
long
serialVersionUID
=
1L
;
@TableField
(
"id"
)
private
String
id
;
private
String
id
;
@ApiModelProperty
(
"创建人"
)
@ApiModelProperty
(
"创建人"
)
@TableField
(
"create_by"
)
private
String
createBy
;
private
String
createBy
;
@ApiModelProperty
(
"创建日期"
)
@ApiModelProperty
(
"创建日期"
)
@TableField
(
"create_time"
)
private
Date
createTime
;
private
Date
createTime
;
@ApiModelProperty
(
"更新人"
)
@ApiModelProperty
(
"更新人"
)
@TableField
(
"update_by"
)
private
String
updateBy
;
private
String
updateBy
;
@ApiModelProperty
(
"更新时间"
)
@ApiModelProperty
(
"更新时间"
)
@TableField
(
"update_time"
)
private
Date
updateTime
;
private
Date
updateTime
;
@ApiModelProperty
(
"检查批次号"
)
@ApiModelProperty
(
"检查批次号"
)
@TableField
(
"check_batch_code"
)
private
String
checkBatchCode
;
private
String
checkBatchCode
;
@ApiModelProperty
(
"工单编号"
)
@ApiModelProperty
(
"工单编号"
)
@TableField
(
"work_code"
)
private
String
workCode
;
private
String
workCode
;
@ApiModelProperty
(
"轨距水平尺编号"
)
@ApiModelProperty
(
"轨距水平尺编号"
)
@TableField
(
"gauge_level_code"
)
private
String
gaugeLevelCode
;
private
String
gaugeLevelCode
;
@ApiModelProperty
(
"检查人姓名"
)
@ApiModelProperty
(
"检查人姓名"
)
@TableField
(
"check_by"
)
private
String
checkBy
;
private
String
checkBy
;
@ApiModelProperty
(
"检查日期"
)
@ApiModelProperty
(
"检查日期"
)
@TableField
(
"check_time"
)
private
Date
checkTime
;
private
Date
checkTime
;
@ApiModelProperty
(
"道岔数量"
)
@ApiModelProperty
(
"道岔数量"
)
@TableField
(
"turnout_num"
)
private
Integer
turnoutNum
;
private
Integer
turnoutNum
;
@ApiModelProperty
(
"车站id"
)
@ApiModelProperty
(
"车站id"
)
@TableField
(
"train_station_id"
)
private
String
trainStationId
;
private
String
trainStationId
;
@ApiModelProperty
(
"线别id"
)
@ApiModelProperty
(
"线别id"
)
@TableField
(
"line_alias_id"
)
private
String
lineAliasId
;
private
String
lineAliasId
;
@ApiModelProperty
(
"曲线半径R(m)"
)
@ApiModelProperty
(
"曲线半径R(m)"
)
@TableField
(
"curve_adius"
)
private
BigDecimal
curveAdius
;
private
BigDecimal
curveAdius
;
@ApiModelProperty
(
"审核人姓名"
)
@ApiModelProperty
(
"审核人姓名"
)
@TableField
(
"verify_by"
)
private
String
verifyBy
;
private
String
verifyBy
;
@ApiModelProperty
(
"审核时间"
)
@ApiModelProperty
(
"审核时间"
)
@TableField
(
"verify_time"
)
private
Date
verifyTime
;
private
Date
verifyTime
;
@ApiModelProperty
(
"备注"
)
@ApiModelProperty
(
"备注"
)
@TableField
(
"remark"
)
private
String
remark
;
private
String
remark
;
...
...
jeecg-module-system/src/main/java/org/jeecg/modules/utils/ExcelClassField.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
utils
;
import
java.util.LinkedHashMap
;
/**
* @author sunnyzyq
* @date 2021/12/17
*/
public
class
ExcelClassField
{
/** 字段名称 */
private
String
fieldName
;
/** 表头名称 */
private
String
name
;
/** 映射关系 */
private
LinkedHashMap
<
String
,
String
>
kvMap
;
/** 示例值 */
private
Object
example
;
/** 排序 */
private
int
sort
;
/** 是否为注解字段:0-否,1-是 */
private
int
hasAnnotation
;
public
String
getFieldName
()
{
return
fieldName
;
}
public
void
setFieldName
(
String
fieldName
)
{
this
.
fieldName
=
fieldName
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
LinkedHashMap
<
String
,
String
>
getKvMap
()
{
return
kvMap
;
}
public
void
setKvMap
(
LinkedHashMap
<
String
,
String
>
kvMap
)
{
this
.
kvMap
=
kvMap
;
}
public
Object
getExample
()
{
return
example
;
}
public
void
setExample
(
Object
example
)
{
this
.
example
=
example
;
}
public
int
getSort
()
{
return
sort
;
}
public
void
setSort
(
int
sort
)
{
this
.
sort
=
sort
;
}
public
int
getHasAnnotation
()
{
return
hasAnnotation
;
}
public
void
setHasAnnotation
(
int
hasAnnotation
)
{
this
.
hasAnnotation
=
hasAnnotation
;
}
}
\ No newline at end of file
jeecg-module-system/src/main/java/org/jeecg/modules/utils/ExcelExport.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
utils
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
/**
* @author sunnyzyq
* @date 2021/12/17
*/
@Target
(
ElementType
.
FIELD
)
@Retention
(
RetentionPolicy
.
RUNTIME
)
public
@interface
ExcelExport
{
/** 字段名称 */
String
value
();
/** 导出排序先后: 数字越小越靠前(默认按Java类字段顺序导出) */
int
sort
()
default
0
;
/** 导出映射,格式如:0-未知;1-男;2-女 */
String
kv
()
default
""
;
/** 导出模板示例值(有值的话,直接取该值,不做映射) */
String
example
()
default
""
;
String
format
()
default
""
;
}
\ No newline at end of file
jeecg-module-system/src/main/java/org/jeecg/modules/utils/ExcelImport.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
utils
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
/**
* @author sunnyzyq
* @date 2021/12/17
*/
@Target
(
ElementType
.
FIELD
)
@Retention
(
RetentionPolicy
.
RUNTIME
)
public
@interface
ExcelImport
{
/** 字段名称 */
String
value
();
/** 导出映射,格式如:0-未知;1-男;2-女 */
String
kv
()
default
""
;
/** 是否为必填字段(默认为非必填) */
boolean
required
()
default
false
;
/** 最大长度(默认255) */
int
maxLength
()
default
255
;
/** 导入唯一性验证(多个字段则取联合验证) */
boolean
unique
()
default
false
;
}
\ No newline at end of file
jeecg-module-system/src/main/java/org/jeecg/modules/utils/ExcelUtils.java
0 → 100644
View file @
28f0e352
package
org
.
jeecg
.
modules
.
utils
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.poi.hssf.usermodel.HSSFDataValidation
;
import
org.apache.poi.hssf.usermodel.HSSFWorkbook
;
import
org.apache.poi.poifs.filesystem.POIFSFileSystem
;
import
org.apache.poi.ss.usermodel.*
;
import
org.apache.poi.ss.usermodel.ClientAnchor.AnchorType
;
import
org.apache.poi.ss.util.CellRangeAddress
;
import
org.apache.poi.ss.util.CellRangeAddressList
;
import
org.apache.poi.xssf.streaming.SXSSFWorkbook
;
import
org.apache.poi.xssf.usermodel.XSSFClientAnchor
;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.servlet.ServletOutputStream
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.*
;
import
java.lang.reflect.Field
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
import
java.net.URL
;
import
java.text.NumberFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.Map.Entry
;
import
java.util.regex.Pattern
;
/**
* Excel导入导出工具类
*
* @author sunnyzyq
* @date 2021/12/17
*/
@SuppressWarnings
(
"unused"
)
public
class
ExcelUtils
{
private
static
final
String
XLSX
=
".xlsx"
;
private
static
final
String
XLS
=
".xls"
;
public
static
final
String
ROW_MERGE
=
"row_merge"
;
public
static
final
String
COLUMN_MERGE
=
"column_merge"
;
private
static
final
String
DATE_FORMAT
=
"yyyy-MM-dd HH:mm:ss"
;
private
static
final
String
DATE_FORMATS
=
"yyyy-MM-dd"
;
private
static
final
String
ROW_NUM
=
"rowNum"
;
private
static
final
String
ROW_DATA
=
"rowData"
;
private
static
final
String
ROW_TIPS
=
"rowTips"
;
private
static
final
int
CELL_OTHER
=
0
;
private
static
final
int
CELL_ROW_MERGE
=
1
;
private
static
final
int
CELL_COLUMN_MERGE
=
2
;
private
static
final
int
IMG_HEIGHT
=
30
;
private
static
final
int
IMG_WIDTH
=
30
;
private
static
final
char
LEAN_LINE
=
'/'
;
private
static
final
int
BYTES_DEFAULT_LENGTH
=
10240
;
private
static
final
NumberFormat
NUMBER_FORMAT
=
NumberFormat
.
getNumberInstance
();
public
static
<
T
>
List
<
T
>
readFile
(
File
file
,
Class
<
T
>
clazz
)
throws
Exception
{
JSONArray
array
=
readFile
(
file
);
return
getBeanList
(
array
,
clazz
);
}
public
static
<
T
>
List
<
T
>
readMultipartFile
(
MultipartFile
mFile
,
Class
<
T
>
clazz
)
throws
Exception
{
JSONArray
array
=
readMultipartFile
(
mFile
);
return
getBeanList
(
array
,
clazz
);
}
public
static
JSONArray
readFile
(
File
file
)
throws
Exception
{
return
readExcel
(
null
,
file
);
}
public
static
JSONArray
readMultipartFile
(
MultipartFile
mFile
)
throws
Exception
{
return
readExcel
(
mFile
,
null
);
}
public
static
Map
<
String
,
JSONArray
>
readFileManySheet
(
File
file
)
throws
Exception
{
return
readExcelManySheet
(
null
,
file
);
}
public
static
Map
<
String
,
JSONArray
>
readFileManySheet
(
MultipartFile
file
)
throws
Exception
{
return
readExcelManySheet
(
file
,
null
);
}
private
static
<
T
>
List
<
T
>
getBeanList
(
JSONArray
array
,
Class
<
T
>
clazz
)
throws
Exception
{
List
<
T
>
list
=
new
ArrayList
<>();
Map
<
Integer
,
String
>
uniqueMap
=
new
HashMap
<>(
16
);
for
(
int
i
=
0
;
i
<
array
.
size
();
i
++)
{
list
.
add
(
getBean
(
clazz
,
array
.
getJSONObject
(
i
),
uniqueMap
));
}
return
list
;
}
/**
* 获取每个对象的数据
*/
private
static
<
T
>
T
getBean
(
Class
<
T
>
c
,
JSONObject
obj
,
Map
<
Integer
,
String
>
uniqueMap
)
throws
Exception
{
T
t
=
c
.
newInstance
();
Field
[]
fields
=
c
.
getDeclaredFields
();
List
<
String
>
errMsgList
=
new
ArrayList
<>();
boolean
hasRowTipsField
=
false
;
StringBuilder
uniqueBuilder
=
new
StringBuilder
();
int
rowNum
=
0
;
for
(
Field
field
:
fields
)
{
// 行号
if
(
field
.
getName
().
equals
(
ROW_NUM
))
{
rowNum
=
obj
.
getInteger
(
ROW_NUM
);
field
.
setAccessible
(
true
);
field
.
set
(
t
,
rowNum
);
continue
;
}
// 是否需要设置异常信息
if
(
field
.
getName
().
equals
(
ROW_TIPS
))
{
hasRowTipsField
=
true
;
continue
;
}
// 原始数据
if
(
field
.
getName
().
equals
(
ROW_DATA
))
{
field
.
setAccessible
(
true
);
field
.
set
(
t
,
obj
.
toString
());
continue
;
}
// 设置对应属性值
setFieldValue
(
t
,
field
,
obj
,
uniqueBuilder
,
errMsgList
);
}
// 数据唯一性校验
if
(
uniqueBuilder
.
length
()
>
0
)
{
if
(
uniqueMap
.
containsValue
(
uniqueBuilder
.
toString
()))
{
Set
<
Integer
>
rowNumKeys
=
uniqueMap
.
keySet
();
for
(
Integer
num
:
rowNumKeys
)
{
if
(
uniqueMap
.
get
(
num
).
equals
(
uniqueBuilder
.
toString
()))
{
errMsgList
.
add
(
String
.
format
(
"数据唯一性校验失败,(%s)与第%s行重复)"
,
uniqueBuilder
,
num
));
}
}
}
else
{
uniqueMap
.
put
(
rowNum
,
uniqueBuilder
.
toString
());
}
}
// 失败处理
if
(
errMsgList
.
isEmpty
()
&&
!
hasRowTipsField
)
{
return
t
;
}
StringBuilder
sb
=
new
StringBuilder
();
int
size
=
errMsgList
.
size
();
for
(
int
i
=
0
;
i
<
size
;
i
++)
{
if
(
i
==
size
-
1
)
{
sb
.
append
(
errMsgList
.
get
(
i
));
}
else
{
sb
.
append
(
errMsgList
.
get
(
i
)).
append
(
";"
);
}
}
// 设置错误信息
for
(
Field
field
:
fields
)
{
if
(
field
.
getName
().
equals
(
ROW_TIPS
))
{
field
.
setAccessible
(
true
);
field
.
set
(
t
,
sb
.
toString
());
}
}
return
t
;
}
private
static
<
T
>
void
setFieldValue
(
T
t
,
Field
field
,
JSONObject
obj
,
StringBuilder
uniqueBuilder
,
List
<
String
>
errMsgList
)
{
// 获取 ExcelImport 注解属性
ExcelImport
annotation
=
field
.
getAnnotation
(
ExcelImport
.
class
);
if
(
annotation
==
null
)
{
return
;
}
String
cname
=
annotation
.
value
();
if
(
cname
.
trim
().
length
()
==
0
)
{
return
;
}
// 获取具体值
String
val
=
null
;
if
(
obj
.
containsKey
(
cname
))
{
val
=
getString
(
obj
.
getString
(
cname
));
}
if
(
val
==
null
)
{
return
;
}
field
.
setAccessible
(
true
);
// 判断是否必填
boolean
require
=
annotation
.
required
();
if
(
require
&&
val
.
isEmpty
())
{
errMsgList
.
add
(
String
.
format
(
"[%s]不能为空"
,
cname
));
return
;
}
// 数据唯一性获取
boolean
unique
=
annotation
.
unique
();
if
(
unique
)
{
if
(
uniqueBuilder
.
length
()
>
0
)
{
uniqueBuilder
.
append
(
"--"
).
append
(
val
);
}
else
{
uniqueBuilder
.
append
(
val
);
}
}
// 判断是否超过最大长度
int
maxLength
=
annotation
.
maxLength
();
if
(
maxLength
>
0
&&
val
.
length
()
>
maxLength
)
{
errMsgList
.
add
(
String
.
format
(
"[%s]长度不能超过%s个字符(当前%s个字符)"
,
cname
,
maxLength
,
val
.
length
()));
}
// 判断当前属性是否有映射关系
LinkedHashMap
<
String
,
String
>
kvMap
=
getKvMap
(
annotation
.
kv
());
if
(!
kvMap
.
isEmpty
())
{
boolean
isMatch
=
false
;
for
(
String
key
:
kvMap
.
keySet
())
{
if
(
kvMap
.
get
(
key
).
equals
(
val
))
{
val
=
key
;
isMatch
=
true
;
break
;
}
}
if
(!
isMatch
)
{
errMsgList
.
add
(
String
.
format
(
"[%s]的值不正确(当前值为%s)"
,
cname
,
val
));
return
;
}
}
// 其余情况根据类型赋值
String
fieldClassName
=
field
.
getType
().
getSimpleName
();
try
{
if
(
"String"
.
equalsIgnoreCase
(
fieldClassName
))
{
field
.
set
(
t
,
val
);
}
else
if
(
"boolean"
.
equalsIgnoreCase
(
fieldClassName
))
{
field
.
set
(
t
,
Boolean
.
valueOf
(
val
));
}
else
if
(
"int"
.
equalsIgnoreCase
(
fieldClassName
)
||
"Integer"
.
equals
(
fieldClassName
))
{
try
{
field
.
set
(
t
,
Integer
.
valueOf
(
val
));
}
catch
(
NumberFormatException
e
)
{
errMsgList
.
add
(
String
.
format
(
"[%s]的值格式不正确(当前值为%s)"
,
cname
,
val
));
}
}
else
if
(
"double"
.
equalsIgnoreCase
(
fieldClassName
))
{
field
.
set
(
t
,
Double
.
valueOf
(
val
));
}
else
if
(
"long"
.
equalsIgnoreCase
(
fieldClassName
))
{
field
.
set
(
t
,
Long
.
valueOf
(
val
));
}
else
if
(
"BigDecimal"
.
equalsIgnoreCase
(
fieldClassName
))
{
field
.
set
(
t
,
new
BigDecimal
(
val
));
}
else
if
(
"Date"
.
equalsIgnoreCase
(
fieldClassName
))
{
try
{
field
.
set
(
t
,
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
).
parse
(
val
));
}
catch
(
Exception
e
)
{
field
.
set
(
t
,
new
SimpleDateFormat
(
"yyyy-MM-dd"
).
parse
(
val
));
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
private
static
Map
<
String
,
JSONArray
>
readExcelManySheet
(
MultipartFile
mFile
,
File
file
)
throws
IOException
{
Workbook
book
=
getWorkbook
(
mFile
,
file
);
if
(
book
==
null
)
{
return
Collections
.
emptyMap
();
}
Map
<
String
,
JSONArray
>
map
=
new
LinkedHashMap
<>();
for
(
int
i
=
0
;
i
<
book
.
getNumberOfSheets
();
i
++)
{
Sheet
sheet
=
book
.
getSheetAt
(
i
);
JSONArray
arr
=
readSheet
(
sheet
);
map
.
put
(
sheet
.
getSheetName
(),
arr
);
}
book
.
close
();
return
map
;
}
private
static
JSONArray
readExcel
(
MultipartFile
mFile
,
File
file
)
throws
IOException
{
Workbook
book
=
getWorkbook
(
mFile
,
file
);
if
(
book
==
null
)
{
return
new
JSONArray
();
}
JSONArray
array
=
readSheet
(
book
.
getSheetAt
(
0
));
book
.
close
();
return
array
;
}
private
static
Workbook
getWorkbook
(
MultipartFile
mFile
,
File
file
)
throws
IOException
{
boolean
fileNotExist
=
(
file
==
null
||
!
file
.
exists
());
if
(
mFile
==
null
&&
fileNotExist
)
{
return
null
;
}
// 解析表格数据
InputStream
in
;
String
fileName
;
if
(
mFile
!=
null
)
{
// 上传文件解析
in
=
mFile
.
getInputStream
();
fileName
=
getString
(
mFile
.
getOriginalFilename
()).
toLowerCase
();
}
else
{
// 本地文件解析
in
=
new
FileInputStream
(
file
);
fileName
=
file
.
getName
().
toLowerCase
();
}
Workbook
book
;
if
(
fileName
.
endsWith
(
XLSX
))
{
book
=
new
XSSFWorkbook
(
in
);
}
else
if
(
fileName
.
endsWith
(
XLS
))
{
POIFSFileSystem
poifsFileSystem
=
new
POIFSFileSystem
(
in
);
book
=
new
HSSFWorkbook
(
poifsFileSystem
);
}
else
{
return
null
;
}
in
.
close
();
return
book
;
}
private
static
JSONArray
readSheet
(
Sheet
sheet
)
{
// 首行下标
int
rowStart
=
sheet
.
getFirstRowNum
();
// 尾行下标
int
rowEnd
=
sheet
.
getLastRowNum
();
// 获取表头行
Row
headRow
=
sheet
.
getRow
(
rowStart
);
if
(
headRow
==
null
)
{
return
new
JSONArray
();
}
int
cellStart
=
headRow
.
getFirstCellNum
();
int
cellEnd
=
headRow
.
getLastCellNum
();
Map
<
Integer
,
String
>
keyMap
=
new
HashMap
<>();
for
(
int
j
=
cellStart
;
j
<
cellEnd
;
j
++)
{
// 获取表头数据
String
val
=
getCellValue
(
headRow
.
getCell
(
j
));
if
(
val
!=
null
&&
val
.
trim
().
length
()
!=
0
)
{
keyMap
.
put
(
j
,
val
);
}
}
// 如果表头没有数据则不进行解析
if
(
keyMap
.
isEmpty
())
{
return
(
JSONArray
)
Collections
.
emptyList
();
}
// 获取每行JSON对象的值
JSONArray
array
=
new
JSONArray
();
// 如果首行与尾行相同,表明只有一行,返回表头数据
if
(
rowStart
==
rowEnd
)
{
JSONObject
obj
=
new
JSONObject
();
// 添加行号
obj
.
put
(
ROW_NUM
,
1
);
for
(
int
i
:
keyMap
.
keySet
())
{
obj
.
put
(
keyMap
.
get
(
i
),
""
);
}
array
.
add
(
obj
);
return
array
;
}
for
(
int
i
=
rowStart
+
1
;
i
<=
rowEnd
;
i
++)
{
Row
eachRow
=
sheet
.
getRow
(
i
);
JSONObject
obj
=
new
JSONObject
();
// 添加行号
obj
.
put
(
ROW_NUM
,
i
+
1
);
StringBuilder
sb
=
new
StringBuilder
();
for
(
int
k
=
cellStart
;
k
<
cellEnd
;
k
++)
{
if
(
eachRow
!=
null
)
{
String
val
=
getCellValue
(
eachRow
.
getCell
(
k
));
// 所有数据添加到里面,用于判断该行是否为空
sb
.
append
(
val
);
obj
.
put
(
keyMap
.
get
(
k
),
val
);
}
}
if
(
sb
.
length
()
>
0
)
{
array
.
add
(
obj
);
}
}
return
array
;
}
private
static
String
getCellValue
(
Cell
cell
)
{
// 空白或空
if
(
cell
==
null
||
cell
.
getCellTypeEnum
()
==
CellType
.
BLANK
)
{
return
""
;
}
// String类型
if
(
cell
.
getCellTypeEnum
()
==
CellType
.
STRING
)
{
String
val
=
cell
.
getStringCellValue
();
if
(
val
==
null
||
val
.
trim
().
length
()
==
0
)
{
return
""
;
}
return
val
.
trim
();
}
// 数字类型
if
(
cell
.
getCellTypeEnum
()
==
CellType
.
NUMERIC
)
{
String
s
=
cell
.
getNumericCellValue
()
+
""
;
// 去掉尾巴上的小数点0
if
(
Pattern
.
matches
(
".*\\.0*"
,
s
))
{
return
s
.
split
(
"\\."
)[
0
];
}
else
{
return
s
;
}
}
// 布尔值类型
if
(
cell
.
getCellTypeEnum
()
==
CellType
.
BOOLEAN
)
{
return
cell
.
getBooleanCellValue
()
+
""
;
}
// 错误类型
return
cell
.
getCellFormula
();
}
public
static
<
T
>
void
exportTemplate
(
HttpServletResponse
response
,
String
fileName
,
Class
<
T
>
clazz
)
{
exportTemplate
(
response
,
fileName
,
fileName
,
clazz
,
false
);
}
public
static
<
T
>
void
exportTemplate
(
HttpServletResponse
response
,
String
fileName
,
String
sheetName
,
Class
<
T
>
clazz
)
{
exportTemplate
(
response
,
fileName
,
sheetName
,
clazz
,
false
);
}
public
static
<
T
>
void
exportTemplate
(
HttpServletResponse
response
,
String
fileName
,
Class
<
T
>
clazz
,
boolean
isContainExample
)
{
exportTemplate
(
response
,
fileName
,
fileName
,
clazz
,
isContainExample
);
}
public
static
<
T
>
void
exportTemplate
(
HttpServletResponse
response
,
String
fileName
,
String
sheetName
,
Class
<
T
>
clazz
,
boolean
isContainExample
)
{
// 获取表头字段
List
<
ExcelClassField
>
headFieldList
=
getExcelClassFieldList
(
clazz
);
// 获取表头数据和示例数据
List
<
List
<
Object
>>
sheetDataList
=
new
ArrayList
<>();
List
<
Object
>
headList
=
new
ArrayList
<>();
List
<
Object
>
exampleList
=
new
ArrayList
<>();
Map
<
Integer
,
List
<
String
>>
selectMap
=
new
LinkedHashMap
<>();
for
(
int
i
=
0
;
i
<
headFieldList
.
size
();
i
++)
{
ExcelClassField
each
=
headFieldList
.
get
(
i
);
headList
.
add
(
each
.
getName
());
exampleList
.
add
(
each
.
getExample
());
LinkedHashMap
<
String
,
String
>
kvMap
=
each
.
getKvMap
();
if
(
kvMap
!=
null
&&
kvMap
.
size
()
>
0
)
{
selectMap
.
put
(
i
,
new
ArrayList
<>(
kvMap
.
values
()));
}
}
sheetDataList
.
add
(
headList
);
if
(
isContainExample
)
{
sheetDataList
.
add
(
exampleList
);
}
// 导出数据
export
(
response
,
fileName
,
sheetName
,
sheetDataList
,
selectMap
);
}
private
static
<
T
>
List
<
ExcelClassField
>
getExcelClassFieldList
(
Class
<
T
>
clazz
)
{
// 解析所有字段
Field
[]
fields
=
clazz
.
getDeclaredFields
();
boolean
hasExportAnnotation
=
false
;
Map
<
Integer
,
List
<
ExcelClassField
>>
map
=
new
LinkedHashMap
<>();
List
<
Integer
>
sortList
=
new
ArrayList
<>();
for
(
Field
field
:
fields
)
{
ExcelClassField
cf
=
getExcelClassField
(
field
);
if
(
cf
.
getHasAnnotation
()
==
1
)
{
hasExportAnnotation
=
true
;
}
int
sort
=
cf
.
getSort
();
if
(
map
.
containsKey
(
sort
))
{
map
.
get
(
sort
).
add
(
cf
);
}
else
{
List
<
ExcelClassField
>
list
=
new
ArrayList
<>();
list
.
add
(
cf
);
sortList
.
add
(
sort
);
map
.
put
(
sort
,
list
);
}
}
Collections
.
sort
(
sortList
);
// 获取表头
List
<
ExcelClassField
>
headFieldList
=
new
ArrayList
<>();
if
(
hasExportAnnotation
)
{
for
(
Integer
sort
:
sortList
)
{
for
(
ExcelClassField
cf
:
map
.
get
(
sort
))
{
if
(
cf
.
getHasAnnotation
()
==
1
)
{
headFieldList
.
add
(
cf
);
}
}
}
}
else
{
headFieldList
.
addAll
(
map
.
get
(
0
));
}
return
headFieldList
;
}
private
static
ExcelClassField
getExcelClassField
(
Field
field
)
{
ExcelClassField
cf
=
new
ExcelClassField
();
String
fieldName
=
field
.
getName
();
cf
.
setFieldName
(
fieldName
);
ExcelExport
annotation
=
field
.
getAnnotation
(
ExcelExport
.
class
);
// 无 ExcelExport 注解情况
if
(
annotation
==
null
)
{
cf
.
setHasAnnotation
(
0
);
cf
.
setName
(
fieldName
);
cf
.
setSort
(
0
);
return
cf
;
}
// 有 ExcelExport 注解情况
cf
.
setHasAnnotation
(
1
);
cf
.
setName
(
annotation
.
value
());
String
example
=
getString
(
annotation
.
example
());
if
(!
example
.
isEmpty
())
{
if
(
isNumeric
(
example
)
&&
example
.
length
()
<
8
)
{
cf
.
setExample
(
Double
.
valueOf
(
example
));
}
else
{
cf
.
setExample
(
example
);
}
}
else
{
cf
.
setExample
(
""
);
}
cf
.
setSort
(
annotation
.
sort
());
// 解析映射
String
kv
=
getString
(
annotation
.
kv
());
cf
.
setKvMap
(
getKvMap
(
kv
));
return
cf
;
}
private
static
LinkedHashMap
<
String
,
String
>
getKvMap
(
String
kv
)
{
LinkedHashMap
<
String
,
String
>
kvMap
=
new
LinkedHashMap
<>();
if
(
kv
.
isEmpty
())
{
return
kvMap
;
}
String
[]
kvs
=
kv
.
split
(
";"
);
if
(
kvs
.
length
==
0
)
{
return
kvMap
;
}
for
(
String
each
:
kvs
)
{
String
[]
eachKv
=
getString
(
each
).
split
(
"-"
);
if
(
eachKv
.
length
!=
2
)
{
continue
;
}
String
k
=
eachKv
[
0
];
String
v
=
eachKv
[
1
];
if
(
k
.
isEmpty
()
||
v
.
isEmpty
())
{
continue
;
}
kvMap
.
put
(
k
,
v
);
}
return
kvMap
;
}
/**
* 导出表格到本地
*
* @param file 本地文件对象
* @param sheetData 导出数据
*/
public
static
void
exportFile
(
File
file
,
List
<
List
<
Object
>>
sheetData
)
{
if
(
file
==
null
)
{
System
.
out
.
println
(
"文件创建失败"
);
return
;
}
if
(
sheetData
==
null
)
{
sheetData
=
new
ArrayList
<>();
}
Map
<
String
,
List
<
List
<
Object
>>>
map
=
new
HashMap
<>();
map
.
put
(
file
.
getName
(),
sheetData
);
export
(
null
,
file
,
file
.
getName
(),
map
,
null
);
}
/**
* 导出表格到本地
*
* @param <T> 导出数据类似,和K类型保持一致
* @param filePath 文件父路径(如:D:/doc/excel/)
* @param fileName 文件名称(不带尾缀,如:学生表)
* @param list 导出数据
* @throws IOException IO异常
*/
public
static
<
T
>
File
exportFile
(
String
filePath
,
String
fileName
,
List
<
T
>
list
)
throws
IOException
{
File
file
=
getFile
(
filePath
,
fileName
);
List
<
List
<
Object
>>
sheetData
=
getSheetData
(
list
);
exportFile
(
file
,
sheetData
);
return
file
;
}
/**
* 获取文件
*
* @param filePath filePath 文件父路径(如:D:/doc/excel/)
* @param fileName 文件名称(不带尾缀,如:用户表)
* @return 本地File文件对象
*/
private
static
File
getFile
(
String
filePath
,
String
fileName
)
throws
IOException
{
String
dirPath
=
getString
(
filePath
);
String
fileFullPath
;
if
(
dirPath
.
isEmpty
())
{
fileFullPath
=
fileName
;
}
else
{
// 判定文件夹是否存在,如果不存在,则级联创建
File
dirFile
=
new
File
(
dirPath
);
if
(!
dirFile
.
exists
())
{
boolean
mkdirs
=
dirFile
.
mkdirs
();
if
(!
mkdirs
)
{
return
null
;
}
}
// 获取文件夹全名
if
(
dirPath
.
endsWith
(
String
.
valueOf
(
LEAN_LINE
)))
{
fileFullPath
=
dirPath
+
fileName
+
XLSX
;
}
else
{
fileFullPath
=
dirPath
+
LEAN_LINE
+
fileName
+
XLSX
;
}
}
System
.
out
.
println
(
fileFullPath
);
File
file
=
new
File
(
fileFullPath
);
if
(!
file
.
exists
())
{
boolean
result
=
file
.
createNewFile
();
if
(!
result
)
{
return
null
;
}
}
return
file
;
}
private
static
<
T
>
List
<
List
<
Object
>>
getSheetData
(
List
<
T
>
list
)
{
// 获取表头字段
List
<
ExcelClassField
>
excelClassFieldList
=
getExcelClassFieldList
(
list
.
get
(
0
).
getClass
());
List
<
String
>
headFieldList
=
new
ArrayList
<>();
List
<
Object
>
headList
=
new
ArrayList
<>();
Map
<
String
,
ExcelClassField
>
headFieldMap
=
new
HashMap
<>();
for
(
ExcelClassField
each
:
excelClassFieldList
)
{
String
fieldName
=
each
.
getFieldName
();
headFieldList
.
add
(
fieldName
);
headFieldMap
.
put
(
fieldName
,
each
);
headList
.
add
(
each
.
getName
());
}
// 添加表头名称
List
<
List
<
Object
>>
sheetDataList
=
new
ArrayList
<>();
sheetDataList
.
add
(
headList
);
// 获取表数据
for
(
T
t
:
list
)
{
Map
<
String
,
Object
>
fieldDataMap
=
getFieldDataMap
(
t
);
Set
<
String
>
fieldDataKeys
=
fieldDataMap
.
keySet
();
List
<
Object
>
rowList
=
new
ArrayList
<>();
for
(
String
headField
:
headFieldList
)
{
if
(!
fieldDataKeys
.
contains
(
headField
))
{
continue
;
}
Object
data
=
fieldDataMap
.
get
(
headField
);
if
(
data
==
null
)
{
rowList
.
add
(
""
);
continue
;
}
ExcelClassField
cf
=
headFieldMap
.
get
(
headField
);
// 判断是否有映射关系
LinkedHashMap
<
String
,
String
>
kvMap
=
cf
.
getKvMap
();
if
(
kvMap
==
null
||
kvMap
.
isEmpty
())
{
rowList
.
add
(
data
);
continue
;
}
String
val
=
kvMap
.
get
(
data
.
toString
());
if
(
isNumeric
(
val
))
{
rowList
.
add
(
Double
.
valueOf
(
val
));
}
else
{
rowList
.
add
(
val
);
}
}
sheetDataList
.
add
(
rowList
);
}
return
sheetDataList
;
}
private
static
<
T
>
Map
<
String
,
Object
>
getFieldDataMap
(
T
t
)
{
Map
<
String
,
Object
>
map
=
new
HashMap
<>();
Field
[]
fields
=
t
.
getClass
().
getDeclaredFields
();
try
{
for
(
Field
field
:
fields
)
{
String
fieldName
=
field
.
getName
();
field
.
setAccessible
(
true
);
Object
object
=
field
.
get
(
t
);
map
.
put
(
fieldName
,
object
);
}
}
catch
(
IllegalArgumentException
|
IllegalAccessException
e
)
{
e
.
printStackTrace
();
}
return
map
;
}
public
static
void
exportEmpty
(
HttpServletResponse
response
,
String
fileName
)
{
List
<
List
<
Object
>>
sheetDataList
=
new
ArrayList
<>();
List
<
Object
>
headList
=
new
ArrayList
<>();
headList
.
add
(
"导出无数据"
);
sheetDataList
.
add
(
headList
);
export
(
response
,
fileName
,
sheetDataList
);
}
public
static
void
export
(
HttpServletResponse
response
,
String
fileName
,
List
<
List
<
Object
>>
sheetDataList
)
{
export
(
response
,
fileName
,
fileName
,
sheetDataList
,
null
);
}
public
static
void
exportManySheet
(
HttpServletResponse
response
,
String
fileName
,
Map
<
String
,
List
<
List
<
Object
>>>
sheetMap
)
{
export
(
response
,
null
,
fileName
,
sheetMap
,
null
);
}
public
static
void
export
(
HttpServletResponse
response
,
String
fileName
,
String
sheetName
,
List
<
List
<
Object
>>
sheetDataList
)
{
export
(
response
,
fileName
,
sheetName
,
sheetDataList
,
null
);
}
public
static
void
export
(
HttpServletResponse
response
,
String
fileName
,
String
sheetName
,
List
<
List
<
Object
>>
sheetDataList
,
Map
<
Integer
,
List
<
String
>>
selectMap
)
{
Map
<
String
,
List
<
List
<
Object
>>>
map
=
new
HashMap
<>();
map
.
put
(
sheetName
,
sheetDataList
);
export
(
response
,
null
,
fileName
,
map
,
selectMap
);
}
public
static
<
T
,
K
>
void
export
(
HttpServletResponse
response
,
String
fileName
,
List
<
T
>
list
,
Class
<
K
>
template
)
{
// list 是否为空
boolean
lisIsEmpty
=
list
==
null
||
list
.
isEmpty
();
// 如果模板数据为空,且导入的数据为空,则导出空文件
if
(
template
==
null
&&
lisIsEmpty
)
{
exportEmpty
(
response
,
fileName
);
return
;
}
// 如果 list 数据,则导出模板数据
if
(
lisIsEmpty
)
{
exportTemplate
(
response
,
fileName
,
template
);
return
;
}
// 导出数据
List
<
List
<
Object
>>
sheetDataList
=
getSheetData
(
list
);
export
(
response
,
fileName
,
sheetDataList
);
}
public
static
void
export
(
HttpServletResponse
response
,
String
fileName
,
List
<
List
<
Object
>>
sheetDataList
,
Map
<
Integer
,
List
<
String
>>
selectMap
)
{
export
(
response
,
fileName
,
fileName
,
sheetDataList
,
selectMap
);
}
private
static
void
export
(
HttpServletResponse
response
,
File
file
,
String
fileName
,
Map
<
String
,
List
<
List
<
Object
>>>
sheetMap
,
Map
<
Integer
,
List
<
String
>>
selectMap
)
{
// 整个 Excel 表格 book 对象
SXSSFWorkbook
book
=
new
SXSSFWorkbook
();
// 每个 Sheet 页
Set
<
Entry
<
String
,
List
<
List
<
Object
>>>>
entries
=
sheetMap
.
entrySet
();
for
(
Entry
<
String
,
List
<
List
<
Object
>>>
entry
:
entries
)
{
List
<
List
<
Object
>>
sheetDataList
=
entry
.
getValue
();
Sheet
sheet
=
book
.
createSheet
(
entry
.
getKey
());
Drawing
<?>
patriarch
=
sheet
.
createDrawingPatriarch
();
// 设置表头背景色(灰色)
CellStyle
headStyle
=
book
.
createCellStyle
();
headStyle
.
setFillForegroundColor
(
IndexedColors
.
GREY_80_PERCENT
.
index
);
headStyle
.
setFillPattern
(
FillPatternType
.
SOLID_FOREGROUND
);
headStyle
.
setAlignment
(
HorizontalAlignment
.
CENTER
);
headStyle
.
setFillForegroundColor
(
IndexedColors
.
GREY_25_PERCENT
.
index
);
// 设置表身背景色(默认色)
CellStyle
rowStyle
=
book
.
createCellStyle
();
rowStyle
.
setAlignment
(
HorizontalAlignment
.
CENTER
);
rowStyle
.
setVerticalAlignment
(
VerticalAlignment
.
CENTER
);
// 设置表格列宽度(默认为15个字节)
sheet
.
setDefaultColumnWidth
(
15
);
// 创建合并算法数组
int
rowLength
=
sheetDataList
.
size
();
int
columnLength
=
sheetDataList
.
get
(
0
).
size
();
int
[][]
mergeArray
=
new
int
[
rowLength
][
columnLength
];
for
(
int
i
=
0
;
i
<
sheetDataList
.
size
();
i
++)
{
// 每个 Sheet 页中的行数据
Row
row
=
sheet
.
createRow
(
i
);
List
<
Object
>
rowList
=
sheetDataList
.
get
(
i
);
for
(
int
j
=
0
;
j
<
rowList
.
size
();
j
++)
{
// 每个行数据中的单元格数据
Object
o
=
rowList
.
get
(
j
);
int
v
=
0
;
if
(
o
instanceof
URL
)
{
// 如果要导出图片的话, 链接需要传递 URL 对象
setCellPicture
(
book
,
row
,
patriarch
,
i
,
j
,
(
URL
)
o
);
}
else
{
Cell
cell
=
row
.
createCell
(
j
);
if
(
i
==
0
)
{
// 第一行为表头行,采用灰色底背景
v
=
setCellValue
(
cell
,
o
,
headStyle
);
}
else
{
// 其他行为数据行,默认白底色
v
=
setCellValue
(
cell
,
o
,
rowStyle
);
}
}
mergeArray
[
i
][
j
]
=
v
;
}
}
// 合并单元格
mergeCells
(
sheet
,
mergeArray
);
// 设置下拉列表
setSelect
(
sheet
,
selectMap
);
}
// 写数据
if
(
response
!=
null
)
{
// 前端导出
try
{
write
(
response
,
book
,
fileName
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
else
{
// 本地导出
FileOutputStream
fos
;
try
{
fos
=
new
FileOutputStream
(
file
);
ByteArrayOutputStream
ops
=
new
ByteArrayOutputStream
();
book
.
write
(
ops
);
fos
.
write
(
ops
.
toByteArray
());
fos
.
close
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
/**
* 合并当前Sheet页的单元格
*
* @param sheet 当前 sheet 页
* @param mergeArray 合并单元格算法
*/
private
static
void
mergeCells
(
Sheet
sheet
,
int
[][]
mergeArray
)
{
// 横向合并
for
(
int
x
=
0
;
x
<
mergeArray
.
length
;
x
++)
{
int
[]
arr
=
mergeArray
[
x
];
boolean
merge
=
false
;
int
y1
=
0
;
int
y2
=
0
;
for
(
int
y
=
0
;
y
<
arr
.
length
;
y
++)
{
int
value
=
arr
[
y
];
if
(
value
==
CELL_COLUMN_MERGE
)
{
if
(!
merge
)
{
y1
=
y
;
}
y2
=
y
;
merge
=
true
;
}
else
{
merge
=
false
;
if
(
y1
>
0
)
{
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
x
,
x
,
(
y1
-
1
),
y2
));
}
y1
=
0
;
y2
=
0
;
}
}
if
(
y1
>
0
)
{
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
x
,
x
,
(
y1
-
1
),
y2
));
}
}
// 纵向合并
int
xLen
=
mergeArray
.
length
;
int
yLen
=
mergeArray
[
0
].
length
;
for
(
int
y
=
0
;
y
<
yLen
;
y
++)
{
boolean
merge
=
false
;
int
x1
=
0
;
int
x2
=
0
;
for
(
int
x
=
0
;
x
<
xLen
;
x
++)
{
int
value
=
mergeArray
[
x
][
y
];
if
(
value
==
CELL_ROW_MERGE
)
{
if
(!
merge
)
{
x1
=
x
;
}
x2
=
x
;
merge
=
true
;
}
else
{
merge
=
false
;
if
(
x1
>
0
)
{
sheet
.
addMergedRegion
(
new
CellRangeAddress
((
x1
-
1
),
x2
,
y
,
y
));
}
x1
=
0
;
x2
=
0
;
}
}
if
(
x1
>
0
)
{
sheet
.
addMergedRegion
(
new
CellRangeAddress
((
x1
-
1
),
x2
,
y
,
y
));
}
}
}
private
static
void
write
(
HttpServletResponse
response
,
SXSSFWorkbook
book
,
String
fileName
)
throws
IOException
{
response
.
setContentType
(
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
);
response
.
setCharacterEncoding
(
"utf-8"
);
String
name
=
new
String
(
fileName
.
getBytes
(
"GBK"
),
"ISO8859_1"
)
+
XLSX
;
response
.
addHeader
(
"Content-Disposition"
,
"attachment;filename="
+
name
);
ServletOutputStream
out
=
response
.
getOutputStream
();
book
.
write
(
out
);
out
.
flush
();
out
.
close
();
}
private
static
int
setCellValue
(
Cell
cell
,
Object
o
,
CellStyle
style
)
{
// 设置样式
cell
.
setCellStyle
(
style
);
// 数据为空时
if
(
o
==
null
)
{
cell
.
setCellType
(
CellType
.
STRING
);
cell
.
setCellValue
(
""
);
return
CELL_OTHER
;
}
// 是否为字符串
if
(
o
instanceof
String
)
{
String
s
=
o
.
toString
();
// 当数字类型长度超过8位时,改为字符串类型显示(Excel数字超过一定长度会显示为科学计数法)
if
(
isNumeric
(
s
)
&&
s
.
length
()
<
8
)
{
cell
.
setCellType
(
CellType
.
NUMERIC
);
if
(
StringUtils
.
isNotEmpty
(
s
)){
//如果不为空才能进一步操作
cell
.
setCellValue
(
Double
.
parseDouble
(
s
));
}
return
CELL_OTHER
;
}
else
{
cell
.
setCellType
(
CellType
.
STRING
);
cell
.
setCellValue
(
s
);
}
if
(
s
.
equals
(
ROW_MERGE
))
{
return
CELL_ROW_MERGE
;
}
else
if
(
s
.
equals
(
COLUMN_MERGE
))
{
return
CELL_COLUMN_MERGE
;
}
else
{
return
CELL_OTHER
;
}
}
// 是否为字符串
if
(
o
instanceof
Integer
||
o
instanceof
Long
||
o
instanceof
Double
||
o
instanceof
Float
)
{
cell
.
setCellType
(
CellType
.
NUMERIC
);
cell
.
setCellValue
(
Double
.
parseDouble
(
o
.
toString
()));
return
CELL_OTHER
;
}
// 是否为Boolean
if
(
o
instanceof
Boolean
)
{
cell
.
setCellType
(
CellType
.
BOOLEAN
);
cell
.
setCellValue
((
Boolean
)
o
);
return
CELL_OTHER
;
}
// 如果是BigDecimal,则默认3位小数
if
(
o
instanceof
BigDecimal
)
{
cell
.
setCellType
(
CellType
.
NUMERIC
);
cell
.
setCellValue
(((
BigDecimal
)
o
).
setScale
(
3
,
RoundingMode
.
HALF_UP
).
doubleValue
());
return
CELL_OTHER
;
}
// 如果是Date数据,则显示格式化数据
if
(
o
instanceof
Date
)
{
cell
.
setCellType
(
CellType
.
STRING
);
cell
.
setCellValue
(
formatDate
((
Date
)
o
));
return
CELL_OTHER
;
}
// 如果是其他,则默认字符串类型
cell
.
setCellType
(
CellType
.
STRING
);
cell
.
setCellValue
(
o
.
toString
());
return
CELL_OTHER
;
}
private
static
void
setCellPicture
(
SXSSFWorkbook
wb
,
Row
sr
,
Drawing
<?>
patriarch
,
int
x
,
int
y
,
URL
url
)
{
// 设置图片宽高
sr
.
setHeight
((
short
)
(
IMG_WIDTH
*
IMG_HEIGHT
));
// (jdk1.7版本try中定义流可自动关闭)
try
(
InputStream
is
=
url
.
openStream
();
ByteArrayOutputStream
outputStream
=
new
ByteArrayOutputStream
())
{
byte
[]
buff
=
new
byte
[
BYTES_DEFAULT_LENGTH
];
int
rc
;
while
((
rc
=
is
.
read
(
buff
,
0
,
BYTES_DEFAULT_LENGTH
))
>
0
)
{
outputStream
.
write
(
buff
,
0
,
rc
);
}
// 设置图片位置
XSSFClientAnchor
anchor
=
new
XSSFClientAnchor
(
0
,
0
,
0
,
0
,
y
,
x
,
y
+
1
,
x
+
1
);
// 设置这个,图片会自动填满单元格的长宽
anchor
.
setAnchorType
(
AnchorType
.
MOVE_AND_RESIZE
);
patriarch
.
createPicture
(
anchor
,
wb
.
addPicture
(
outputStream
.
toByteArray
(),
HSSFWorkbook
.
PICTURE_TYPE_JPEG
));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
private
static
String
formatDate
(
Date
date
)
{
if
(
date
==
null
)
{
return
""
;
}
SimpleDateFormat
format
=
new
SimpleDateFormat
(
DATE_FORMATS
);
return
format
.
format
(
date
);
}
private
static
void
setSelect
(
Sheet
sheet
,
Map
<
Integer
,
List
<
String
>>
selectMap
)
{
if
(
selectMap
==
null
||
selectMap
.
isEmpty
())
{
return
;
}
Set
<
Entry
<
Integer
,
List
<
String
>>>
entrySet
=
selectMap
.
entrySet
();
for
(
Entry
<
Integer
,
List
<
String
>>
entry
:
entrySet
)
{
int
y
=
entry
.
getKey
();
List
<
String
>
list
=
entry
.
getValue
();
if
(
list
==
null
||
list
.
isEmpty
())
{
continue
;
}
String
[]
arr
=
new
String
[
list
.
size
()];
for
(
int
i
=
0
;
i
<
list
.
size
();
i
++)
{
arr
[
i
]
=
list
.
get
(
i
);
}
DataValidationHelper
helper
=
sheet
.
getDataValidationHelper
();
CellRangeAddressList
addressList
=
new
CellRangeAddressList
(
1
,
65000
,
y
,
y
);
DataValidationConstraint
dvc
=
helper
.
createExplicitListConstraint
(
arr
);
DataValidation
dv
=
helper
.
createValidation
(
dvc
,
addressList
);
if
(
dv
instanceof
HSSFDataValidation
)
{
dv
.
setSuppressDropDownArrow
(
false
);
}
else
{
dv
.
setSuppressDropDownArrow
(
true
);
dv
.
setShowErrorBox
(
true
);
}
sheet
.
addValidationData
(
dv
);
}
}
private
static
boolean
isNumeric
(
String
str
)
{
if
(
Objects
.
nonNull
(
str
)
&&
"0.0"
.
equals
(
str
))
{
return
true
;
}
for
(
int
i
=
str
.
length
();
--
i
>=
0
;
)
{
if
(!
Character
.
isDigit
(
str
.
charAt
(
i
)))
{
return
false
;
}
}
return
true
;
}
private
static
String
getString
(
String
s
)
{
if
(
s
==
null
)
{
return
""
;
}
if
(
s
.
isEmpty
())
{
return
s
;
}
return
s
.
trim
();
}
}
\ No newline at end of file
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