Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
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
346944ca
Commit
346944ca
authored
Jul 12, 2023
by
hkl
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/dev-szl' into dev
parents
30714c53
355f90b7
Changes
38
Show 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 @
346944ca
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 @
346944ca
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 @
346944ca
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 @
346944ca
...
...
@@ -2,13 +2,16 @@ 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.metadata.IPage
;
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.apache.shiro.SecurityUtils
;
import
org.jeecg.common.api.vo.Result
;
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.entity.RecordsMasterCheck
;
import
org.jeecg.modules.checkData.equipmentCheckData.entity.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.service.ITrackBedManagementService
;
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.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
...
...
@@ -29,6 +36,7 @@ import org.jeecg.common.system.base.controller.JeecgController;
import
org.springframework.web.servlet.ModelAndView
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.ArrayList
;
import
java.util.List
;
...
...
@@ -120,4 +128,50 @@ public class RecordsMasterCheckController extends JeecgController<RecordsMasterC
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 @
346944ca
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 @
346944ca
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 @
346944ca
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 @
346944ca
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 @
346944ca
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 @
346944ca
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 @
346944ca
...
...
@@ -12,9 +12,9 @@ import io.swagger.annotations.ApiModel;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Getter
;
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.jeecgframework.poi.excel.annotation.Excel
;
/**
* <p>
* 设备检查记录主表
...
...
@@ -31,6 +31,10 @@ public class RecordsMasterCheck implements Serializable {
private
static
final
long
serialVersionUID
=
1L
;
@ExcelExport
(
value
=
"序号"
,
sort
=
1
)
@TableField
(
exist
=
false
)
private
int
rowNum
;
@ApiModelProperty
(
"主键"
)
@TableId
(
"id"
)
private
String
id
;
...
...
@@ -55,14 +59,16 @@ public class RecordsMasterCheck implements Serializable {
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
updateTime
;
@Excel
(
name
=
"检查批次编号"
,
width
=
15
,
orderNum
=
"1"
)
@ExcelExport
(
value
=
"检查批次编号"
,
sort
=
2
)
//@Excel(name = "检查批次编号", width = 15, orderNum = "1")
@ApiModelProperty
(
"检查批次编号"
)
@TableField
(
"ek_code"
)
private
String
ekCode
;
@ExcelExport
(
value
=
"工单编号"
,
sort
=
3
)
@ApiModelProperty
(
"工单编号"
)
@TableField
(
"work_code"
)
@Excel
(
name
=
"工单编号"
,
width
=
15
,
orderNum
=
"2"
)
//
@Excel(name = "工单编号", width = 15, orderNum = "2")
private
String
workCode
;
@ApiModelProperty
(
"检查区间id"
)
...
...
@@ -71,7 +77,8 @@ public class RecordsMasterCheck implements Serializable {
@ApiModelProperty
(
"检查区间名称"
)
@TableField
(
"subway_section_name"
)
@Excel
(
name
=
"检查区间"
,
width
=
15
,
orderNum
=
"3"
)
@ExcelExport
(
value
=
"检查区间名称"
,
sort
=
4
)
// @Excel(name = "检查区间", width = 15, orderNum = "3")
private
String
subwaySectionName
;
@ApiModelProperty
(
"所属线路id"
)
...
...
@@ -80,7 +87,8 @@ public class RecordsMasterCheck implements Serializable {
@ApiModelProperty
(
"所属线路名称"
)
@TableField
(
"light_rail_name"
)
@Excel
(
name
=
"所属线路"
,
width
=
15
,
orderNum
=
"4"
)
@ExcelExport
(
value
=
"所属线路"
,
sort
=
5
)
//@Excel(name = "所属线路", width = 15, orderNum = "4")
private
String
lightRailName
;
@ApiModelProperty
(
"所属线别id"
)
...
...
@@ -89,44 +97,52 @@ public class RecordsMasterCheck implements Serializable {
@ApiModelProperty
(
"所属线别名称"
)
@TableField
(
"line_alias_name"
)
@Excel
(
name
=
"所属线路"
,
width
=
15
,
orderNum
=
"5"
)
@ExcelExport
(
value
=
"所属线别"
,
sort
=
6
)
//@Excel(name = "所属线别", width = 15, orderNum = "5")
private
String
lineAliasName
;
@ApiModelProperty
(
"起始里程"
)
@TableField
(
"starting_mileage"
)
@Excel
(
name
=
"起始里程"
,
width
=
15
,
orderNum
=
"6"
)
//@Excel(name = "起始里程", width = 15, orderNum = "6")
@ExcelExport
(
value
=
"起始里程"
,
sort
=
7
)
private
BigDecimal
startingMileage
;
@ApiModelProperty
(
"终点里程"
)
@TableField
(
"end_mileage"
)
@Excel
(
name
=
"终点里程"
,
width
=
15
,
orderNum
=
"7"
)
//@Excel(name = "终点里程", width = 15, orderNum = "7")
@ExcelExport
(
value
=
"终点里程"
,
sort
=
8
)
private
BigDecimal
endMileage
;
@ApiModelProperty
(
"备注"
)
@TableField
(
"remark"
)
@Excel
(
name
=
"备注"
,
width
=
15
,
orderNum
=
"12"
)
//@Excel(name = "备注", width = 15, orderNum = "12")
@ExcelExport
(
value
=
"备注"
,
sort
=
13
)
private
String
remark
;
@ApiModelProperty
(
"检查人姓名"
)
@TableField
(
"check_by"
)
@Excel
(
name
=
"检查人姓名"
,
width
=
15
,
orderNum
=
"8"
)
//@Excel(name = "检查人姓名", width = 15, orderNum = "8")
@ExcelExport
(
value
=
"检查人姓名"
,
sort
=
9
)
private
String
checkBy
;
@ApiModelProperty
(
"检查日期"
)
@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
;
@ApiModelProperty
(
"审核人姓名"
)
@TableField
(
"verify_by"
)
@Excel
(
name
=
"审核人姓名"
,
width
=
15
,
orderNum
=
"10"
)
// @Excel(name = "审核人姓名", width = 15, orderNum = "10")
@ExcelExport
(
value
=
"审核人姓名"
,
sort
=
11
)
private
String
verifyBy
;
@ApiModelProperty
(
"审核时间"
)
@TableField
(
"verify_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
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
;
@ApiModelProperty
(
"是否删除(0:未删除;1:已删除)"
)
...
...
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/mapper/MovementCourseInfoMapper.java
0 → 100644
View file @
346944ca
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 @
346944ca
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 @
346944ca
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 @
346944ca
<?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 @
346944ca
<?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 @
346944ca
<?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 @
346944ca
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 @
346944ca
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 @
346944ca
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 @
346944ca
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 @
346944ca
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 @
346944ca
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 @
346944ca
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 @
346944ca
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 @
346944ca
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 @
346944ca
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 @
346944ca
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 @
346944ca
...
...
@@ -28,67 +28,52 @@ public class RecordPatrolMasterAssistVO {
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"主键"
)
@TableId
(
"id"
)
private
String
id
;
@ApiModelProperty
(
"创建人"
)
@TableField
(
"create_by"
)
private
String
createBy
;
@ApiModelProperty
(
"创建日期"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@TableField
(
"create_time"
)
private
Date
createTime
;
@ApiModelProperty
(
"更新人"
)
@TableField
(
"update_by"
)
private
String
updateBy
;
@ApiModelProperty
(
"更新时间"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@TableField
(
"update_time"
)
private
Date
updateTime
;
@ApiModelProperty
(
"线路巡查记录主表id-外键"
)
@TableField
(
"record_master_id"
)
private
String
recordMasterId
;
@ApiModelProperty
(
"巡查区间id"
)
@TableField
(
"subway_section_id"
)
private
String
subwaySectionId
;
@ApiModelProperty
(
"巡查区间名称"
)
@TableField
(
"subway_section_name"
)
private
String
subwaySectionName
;
@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
(
"problem_record"
)
private
String
problemRecord
;
@ApiModelProperty
(
"处理情况"
)
@TableField
(
"handing_log"
)
private
String
handingLog
;
@ApiModelProperty
(
"是否删除(0:未删除;1:已删除)"
)
@TableField
(
"del_flag"
)
private
String
delFlag
;
...
...
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/vo/RecordPatrolMasterInfoVO.java
View file @
346944ca
...
...
@@ -27,55 +27,43 @@ public class RecordPatrolMasterInfoVO {
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"主键"
)
@TableId
(
"id"
)
private
String
id
;
@ApiModelProperty
(
"创建人"
)
@TableField
(
"create_by"
)
private
String
createBy
;
@ApiModelProperty
(
"创建日期"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
@TableField
(
"create_time"
)
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
(
"线路巡查记录主表id-外键"
)
@TableField
(
"record_master_id"
)
private
String
recordMasterId
;
@ApiModelProperty
(
"检查项目名称"
)
@TableField
(
"ek_project_name"
)
private
String
ekProjectName
;
@ApiModelProperty
(
"重点检查项目内容"
)
@TableField
(
"ek_project_content"
)
private
String
ekProjectContent
;
@ApiModelProperty
(
"问题记录"
)
@TableField
(
"problem_record"
)
private
String
problemRecord
;
@ApiModelProperty
(
"处理情况"
)
@TableField
(
"handing_log"
)
private
String
handingLog
;
@ApiModelProperty
(
"是否满足(1:是;2:否)"
)
@TableField
(
"status"
)
private
String
status
;
@ApiModelProperty
(
"是否删除(0:未删除;1:已删除)"
)
@TableField
(
"del_flag"
)
private
String
delFlag
;
...
...
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/vo/RecordPatrolMasterVO.java
View file @
346944ca
...
...
@@ -29,81 +29,63 @@ public class RecordPatrolMasterVO {
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
(
"ek_code"
)
private
String
ekCode
;
@ApiModelProperty
(
"工单编号"
)
@TableField
(
"work_code"
)
private
String
workCode
;
@ApiModelProperty
(
"检查日期"
)
@TableField
(
"inspect_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd"
)
private
Date
inspectTime
;
@ApiModelProperty
(
"天气"
)
@TableField
(
"weather"
)
private
String
weather
;
@ApiModelProperty
(
"巡查线路id"
)
@TableField
(
"light_rail_id"
)
private
String
lightRailId
;
@ApiModelProperty
(
"巡查线路名称"
)
@TableField
(
"light_rail_name"
)
private
String
lightRailName
;
@ApiModelProperty
(
"计划巡道里程(km)"
)
@TableField
(
"planned_patrol_mileage"
)
private
BigDecimal
plannedPatrolMileage
;
@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
(
"completed_mileage"
)
private
BigDecimal
completedMileage
;
@ApiModelProperty
(
"巡道类型(1:步行巡道 2:乘车巡道)"
)
@TableField
(
"patrol_type"
)
private
String
patrolType
;
@ApiModelProperty
(
"巡道类型翻译(1:步行巡道 2:乘车巡道)"
)
...
...
@@ -113,41 +95,33 @@ public class RecordPatrolMasterVO {
}
@ApiModelProperty
(
"巡道工时"
)
@TableField
(
"patrol_hourse"
)
private
BigDecimal
patrolHourse
;
@ApiModelProperty
(
"检查人姓名"
)
@TableField
(
"check_by"
)
private
String
checkBy
;
@ApiModelProperty
(
"清点时间"
)
@TableField
(
"check_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd hh:mm"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd hh:mm"
)
private
Date
checkTime
;
@ApiModelProperty
(
"销点时间"
)
@TableField
(
"pinpoint_time"
)
@JsonFormat
(
timezone
=
"GMT+8"
,
pattern
=
"yyyy-MM-dd hh:mm"
)
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd hh:mm"
)
private
Date
pinpointTime
;
@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/vo/RecordsMasterCheckVO.java
View file @
346944ca
...
...
@@ -28,95 +28,74 @@ public class RecordsMasterCheckVO {
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
(
"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
(
"remark"
)
private
String
remark
;
@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
(
"是否删除(0:未删除;1:已删除)"
)
@TableField
(
"del_flag"
)
private
String
delFlag
;
...
...
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/vo/TrackBedManagementCheckVO.java
View file @
346944ca
...
...
@@ -25,51 +25,40 @@ public class TrackBedManagementCheckVO {
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
(
"设备检查记录主表id->外键"
)
@TableField
(
"records_master_check_id"
)
private
String
recordsMasterCheckId
;
@ApiModelProperty
(
"道床id->外键"
)
@TableField
(
"trak_bed_management_id"
)
private
String
trakBedManagementId
;
@ApiModelProperty
(
"检查项目名称"
)
@TableField
(
"ek_project_name"
)
private
String
ekProjectName
;
@ApiModelProperty
(
"检查项目内容"
)
@TableField
(
"ek_project_content"
)
private
String
ekProjectContent
;
@ApiModelProperty
(
"检查合格评判标准"
)
@TableField
(
"ek_peoject_template"
)
private
String
ekPeojectTemplate
;
@ApiModelProperty
(
"现场检查项目状态(1:合格;2:良好;3:不合格)"
)
@TableField
(
"ek_project_status"
)
private
String
ekProjectStatus
;
@ApiModelProperty
(
"现场检查项目状态翻译(1:合格;2:良好;3:不合格)"
)
...
...
@@ -79,7 +68,6 @@ public class TrackBedManagementCheckVO {
}
@ApiModelProperty
(
"是否删除(0:未删除,1:已删除)"
)
@TableField
(
"del_flag"
)
private
String
delFlag
;
...
...
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/equipmentCheckData/vo/TurnoutUseCheckVO.java
View file @
346944ca
...
...
@@ -22,71 +22,54 @@ public class TurnoutUseCheckVO {
private
static
final
long
serialVersionUID
=
1L
;
@TableField
(
"id"
)
private
String
id
;
@ApiModelProperty
(
"创建人"
)
@TableField
(
"create_by"
)
private
String
createBy
;
@ApiModelProperty
(
"创建日期"
)
@TableField
(
"create_time"
)
private
Date
createTime
;
@ApiModelProperty
(
"更新人"
)
@TableField
(
"update_by"
)
private
String
updateBy
;
@ApiModelProperty
(
"更新时间"
)
@TableField
(
"update_time"
)
private
Date
updateTime
;
@ApiModelProperty
(
"检查批次号"
)
@TableField
(
"check_batch_code"
)
private
String
checkBatchCode
;
@ApiModelProperty
(
"工单编号"
)
@TableField
(
"work_code"
)
private
String
workCode
;
@ApiModelProperty
(
"轨距水平尺编号"
)
@TableField
(
"gauge_level_code"
)
private
String
gaugeLevelCode
;
@ApiModelProperty
(
"检查人姓名"
)
@TableField
(
"check_by"
)
private
String
checkBy
;
@ApiModelProperty
(
"检查日期"
)
@TableField
(
"check_time"
)
private
Date
checkTime
;
@ApiModelProperty
(
"道岔数量"
)
@TableField
(
"turnout_num"
)
private
Integer
turnoutNum
;
@ApiModelProperty
(
"车站id"
)
@TableField
(
"train_station_id"
)
private
String
trainStationId
;
@ApiModelProperty
(
"线别id"
)
@TableField
(
"line_alias_id"
)
private
String
lineAliasId
;
@ApiModelProperty
(
"曲线半径R(m)"
)
@TableField
(
"curve_adius"
)
private
BigDecimal
curveAdius
;
@ApiModelProperty
(
"审核人姓名"
)
@TableField
(
"verify_by"
)
private
String
verifyBy
;
@ApiModelProperty
(
"审核时间"
)
@TableField
(
"verify_time"
)
private
Date
verifyTime
;
@ApiModelProperty
(
"备注"
)
@TableField
(
"remark"
)
private
String
remark
;
...
...
jeecg-module-system/src/main/java/org/jeecg/modules/utils/ExcelClassField.java
0 → 100644
View file @
346944ca
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 @
346944ca
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 @
346944ca
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 @
346944ca
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