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
271591d2
Commit
271591d2
authored
Oct 31, 2023
by
hkl
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:1.人工检查数据导入bug
parent
aac0e86f
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
373 additions
and
280 deletions
+373
-280
MovementRecordsMasterController.java
...checkData/controller/MovementRecordsMasterController.java
+244
-251
MovementRecordsMasterFaceImpl.java
...es/checkData/face/impl/MovementRecordsMasterFaceImpl.java
+35
-0
RailInspectionEquipmentItemServiceImpl.java
.../service/impl/RailInspectionEquipmentItemServiceImpl.java
+52
-26
AnalysisAlgorithm.java
...es/dynamicStaticAnalysis/algorithm/AnalysisAlgorithm.java
+5
-2
SubwaySectionController.java
...les/subwayNetwork/controller/SubwaySectionController.java
+37
-1
No files found.
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/controller/MovementRecordsMasterController.java
View file @
271591d2
...
...
@@ -335,250 +335,250 @@ public class MovementRecordsMasterController extends JeecgController<MovementRec
}
@AutoLog
(
value
=
"导入"
)
@ApiOperation
(
value
=
"导入"
,
notes
=
"导入 "
)
@PostMapping
(
value
=
"/upload2"
)
@Transactional
public
Result
<
String
>
uploadFile2
(
MultipartFile
file
,
@ApiParam
(
name
=
"动静态几何尺寸主键id"
)
String
id
)
{
try
{
//初始化数据模板
movementCourseService
.
lambdaUpdate
()
.
eq
(
MovementCourse:
:
getMovementMasterId
,
id
)
.
remove
();
movementCourseInfoService
.
lambdaUpdate
()
.
eq
(
MovementCourseInfo:
:
getMovementMasterId
,
id
)
.
remove
();
//时间校验
String
pat
=
"\\d{4}.\\d{2}.\\d{2}"
;
Pattern
p
=
Pattern
.
compile
(
pat
);
//读取第一个sheet页的数据
ExcelReader
reader
=
ExcelUtil
.
getReader
(
file
.
getInputStream
(),
0
);
//读取Excel中所有的数据,以行保存
List
<
List
<
Object
>>
rowRecords
=
reader
.
read
();
// 获取excel的列数
int
column
=
rowRecords
.
get
(
0
).
size
();
//初始化列的索引
int
skipColumnNum
=
0
;
//int seq = 1; // 第一个
//初始化起始里程
String
startingAndEndingMileageStr
=
""
;
//初始化终点里程
String
endingMileageStr
=
""
;
//初始化曲线半径
String
curveRadius
=
""
;
//初始化超高
String
superHigh
=
""
;
//初始化加宽
String
widen
=
""
;
//初始化顺坡率
String
slopeRatio
=
""
;
//初始化长度
String
longExtent
=
""
;
//初始化备注
String
remark
=
""
;
//初始化起始里程表主键
String
courseId
=
""
;
// 如果做完了一个解析就跳过
List
<
MovementCourse
>
movementCourses
=
new
ArrayList
<>();
List
<
MovementCourseInfo
>
resultList
=
new
ArrayList
<>();
//初始化里程排序
int
sort
=
0
;
//初始化测点
int
measurePoint
=
0
;
//初始化轨号排序
int
infoSort
=
0
;
for
(
int
i
=
0
;
i
<
column
;
i
++)
{
skipColumnNum
++;
if
(
ObjectUtil
.
isEmpty
(
startingAndEndingMileageStr
))
{
// 1.起止里程
List
<
Object
>
startingAndEndingMileage
=
rowRecords
.
get
(
3
);
Object
mileageObject
=
startingAndEndingMileage
.
get
(
i
);
String
mileage
=
mileageObject
.
toString
();
//超高、加宽、顺坡率、线路全长
List
<
Object
>
courseList
=
rowRecords
.
get
(
4
);
Object
courseObject
=
courseList
.
get
(
i
);
String
courseStr
=
courseObject
.
toString
();
if
(
mileage
.
contains
(
"起止里程"
))
{
//开始里程
String
[]
start
=
mileage
.
split
(
"-"
);
String
s
=
start
[
0
];
String
k
=
s
.
substring
(
s
.
indexOf
(
"K"
)
+
1
,
s
.
length
()).
trim
();
// 按照“+”分割
startingAndEndingMileageStr
=
k
.
replace
(
"\\s"
,
""
).
replaceAll
(
" +"
,
""
).
replace
(
"+"
,
""
).
trim
();
//结束里程
String
s1
=
start
[
1
];
String
[]
ks1
=
s1
.
replaceAll
(
"\\s*"
,
""
).
replaceAll
(
" "
,
""
).
split
(
","
);
String
k1
=
ks1
[
0
];
String
n1
=
k1
.
replace
(
"+"
,
""
).
replace
(
"K"
,
""
);
endingMileageStr
=
n1
;
//曲线半径
String
[]
n2
=
s1
.
split
(
"半径 "
);
String
s3
=
n2
[
1
];
curveRadius
=
s3
.
substring
(
0
,
s3
.
indexOf
(
" m"
)).
replace
(
"/"
,
""
).
trim
();
//解析超高、加宽、顺坡率、线路全长
String
[]
n3
=
courseStr
.
split
(
"超高"
);
String
s4
=
n3
[
1
];
superHigh
=
s4
.
substring
(
0
,
s4
.
indexOf
(
"mm"
)).
replace
(
"/"
,
""
).
trim
();
//加宽
String
[]
n4
=
courseStr
.
split
(
"加宽"
);
String
s5
=
n4
[
1
];
widen
=
s5
.
substring
(
0
,
s5
.
indexOf
(
"mm"
)).
replace
(
"/"
,
""
).
trim
();
//System.out.println(skipColumnNum+"加宽="+widen+";");
//顺坡率
String
[]
n5
=
courseStr
.
split
(
"顺坡率"
);
String
s6
=
n5
[
1
];
slopeRatio
=
s6
.
substring
(
0
,
s6
.
indexOf
(
"‰"
)).
replace
(
"/"
,
""
).
trim
();
//System.out.println(skipColumnNum+"顺坡率="+slopeRatio+";");
//线路全长
String
[]
n6
=
courseStr
.
split
(
"线路全长:"
);
String
s7
=
n6
[
1
];
longExtent
=
s7
.
substring
(
0
,
s7
.
indexOf
(
"米"
)).
replace
(
"/"
,
""
).
trim
();
//System.out.println(skipColumnNum+"线路全长="+longExtent+";");
//解析备注
remark
=
rowRecords
.
get
(
14
).
get
(
i
+
3
).
toString
().
trim
();
MovementCourse
movementCourse
=
new
MovementCourse
();
movementCourse
.
setMovementMasterId
(
id
);
movementCourse
.
setCourseStartingMileage
(
new
BigDecimal
(
startingAndEndingMileageStr
));
movementCourse
.
setCourseEndMileage
(
new
BigDecimal
(
endingMileageStr
));
if
(
ObjectUtil
.
isNotEmpty
(
curveRadius
))
{
movementCourse
.
setCurveRadius
(
new
BigDecimal
(
curveRadius
));
}
if
(
ObjectUtil
.
isNotEmpty
(
superHigh
))
{
movementCourse
.
setSuperHigh
(
new
BigDecimal
(
superHigh
));
}
if
(
ObjectUtil
.
isNotEmpty
(
widen
))
{
movementCourse
.
setWiden
(
new
BigDecimal
(
widen
));
}
if
(
ObjectUtil
.
isNotEmpty
(
slopeRatio
))
{
movementCourse
.
setSlopeRatio
(
new
BigDecimal
(
slopeRatio
));
}
if
(
ObjectUtil
.
isNotEmpty
(
longExtent
))
{
movementCourse
.
setLongExtent
(
new
BigDecimal
(
longExtent
));
}
sort
++;
courseId
=
UUIDGenerator
.
generate
();
movementCourse
.
setId
(
courseId
);
movementCourse
.
setDelFlag
(
"0"
);
movementCourse
.
setRemark
(
remark
);
movementCourse
.
setSort
(
sort
);
movementCourses
.
add
(
movementCourse
);
}
}
//解析子集
if
((
skipColumnNum
-
1
)
%
28
==
0
)
{
continue
;
}
if
((
skipColumnNum
-
2
)
%
28
==
0
)
{
continue
;
}
// 保存明细
infoSort
++;
measurePoint
++;
MovementCourseInfo
movementCourseInfo
=
new
MovementCourseInfo
();
movementCourseInfo
.
setId
(
UUIDGenerator
.
generate
());
movementCourseInfo
.
setDelFlag
(
"0"
);
movementCourseInfo
.
setMovementMasterId
(
id
);
movementCourseInfo
.
setMovementCourseId
(
courseId
);
movementCourseInfo
.
setInfoSort
(
infoSort
);
movementCourseInfo
.
setMeasurePoint
(
measurePoint
);
//获取轨号
List
<
Object
>
trackCodeList
=
rowRecords
.
get
(
6
);
String
trackCode
=
trackCodeList
.
get
(
i
).
toString
().
trim
();
if
(
ObjectUtil
.
isNotEmpty
(
trackCode
)
&&
!(
"检查日期"
).
equals
(
trackCode
)
&&
!(
"轨号"
).
equals
(
trackCode
))
{
movementCourseInfo
.
setTrackCode
(
trackCode
);
}
//获取轨距
List
<
Object
>
trackGaugeList
=
rowRecords
.
get
(
7
);
String
trackGauge
=
trackGaugeList
.
get
(
i
).
toString
().
trim
();
if
(
ObjectUtil
.
isNotEmpty
(
trackGauge
)
&&
!(
"轨距"
).
equals
(
trackGauge
)
&&
!
p
.
matcher
(
trackGauge
).
matches
())
{
movementCourseInfo
.
setTrackGauge
(
trackGauge
);
}
//获取水平
List
<
Object
>
levelList
=
rowRecords
.
get
(
8
);
String
level
=
levelList
.
get
(
i
).
toString
().
trim
();
if
(
ObjectUtil
.
isNotEmpty
(
level
)
&&
!(
"水平"
).
equals
(
level
)
&&
!
p
.
matcher
(
level
).
matches
())
{
movementCourseInfo
.
setLevel
(
level
);
}
//获取三角坑
List
<
Object
>
triangularPitList
=
rowRecords
.
get
(
9
);
String
triangularPit
=
triangularPitList
.
get
(
i
).
toString
().
trim
();
if
(
ObjectUtil
.
isNotEmpty
(
triangularPit
)
&&
!(
"三角坑"
).
equals
(
triangularPit
)
&&
!
p
.
matcher
(
triangularPit
).
matches
())
{
movementCourseInfo
.
setTriangularPit
(
triangularPit
);
}
//获取方向
List
<
Object
>
directionList
=
rowRecords
.
get
(
10
);
String
direction
=
directionList
.
get
(
i
).
toString
().
trim
();
if
(
ObjectUtil
.
isNotEmpty
(
direction
)
&&
!(
"方向"
).
equals
(
direction
)
&&
!
p
.
matcher
(
direction
).
matches
())
{
movementCourseInfo
.
setDirection
(
direction
);
}
//获取高低
List
<
Object
>
heightList
=
rowRecords
.
get
(
11
);
String
height
=
heightList
.
get
(
i
).
toString
().
trim
();
if
(
ObjectUtil
.
isNotEmpty
(
height
)
&&
!(
"高低"
).
equals
(
height
)
&&
!
p
.
matcher
(
height
).
matches
())
{
movementCourseInfo
.
setHeight
(
height
);
}
//获取结构
List
<
Object
>
structureList
=
rowRecords
.
get
(
12
);
String
structure
=
structureList
.
get
(
i
).
toString
().
trim
();
if
(
ObjectUtil
.
isNotEmpty
(
structure
)
&&
!(
"结构"
).
equals
(
structure
)
&&
!
p
.
matcher
(
structure
).
matches
())
{
movementCourseInfo
.
setStructure
(
structure
);
}
//获取整改
List
<
Object
>
rectificationList
=
rowRecords
.
get
(
13
);
String
rectification
=
rectificationList
.
get
(
i
).
toString
().
trim
();
if
(
ObjectUtil
.
isNotEmpty
(
rectification
)
&&
!(
"整改"
).
equals
(
rectification
)
&&
!
p
.
matcher
(
rectification
).
matches
())
{
movementCourseInfo
.
setRectification
(
rectification
);
}
resultList
.
add
(
movementCourseInfo
);
if
(
measurePoint
%
8
==
0
)
{
measurePoint
=
0
;
}
if
((
skipColumnNum
+
2
)
%
28
==
0
)
{
i
=
i
+
4
;
skipColumnNum
=
skipColumnNum
+
4
;
startingAndEndingMileageStr
=
""
;
endingMileageStr
=
""
;
curveRadius
=
""
;
superHigh
=
""
;
widen
=
""
;
slopeRatio
=
""
;
longExtent
=
""
;
remark
=
""
;
courseId
=
""
;
infoSort
=
0
;
}
}
if
(
ObjectUtil
.
isNotEmpty
(
resultList
))
{
movementCourseInfoService
.
saveBatch
(
resultList
);
}
if
(
ObjectUtil
.
isNotEmpty
(
movementCourses
))
{
movementCourseService
.
saveBatch
(
movementCourses
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
new
RuntimeException
(
e
);
}
return
Result
.
ok
(
"操作成功"
);
}
//
@AutoLog(value = "导入")
//
@ApiOperation(value = "导入", notes = "导入 ")
//
@PostMapping(value = "/upload2")
//
@Transactional
//
public Result<String> uploadFile2(MultipartFile file, @ApiParam(name = "动静态几何尺寸主键id") String id) {
//
try {
//
//初始化数据模板
//
movementCourseService.lambdaUpdate()
//
.eq(MovementCourse::getMovementMasterId, id)
//
.remove();
//
movementCourseInfoService.lambdaUpdate()
//
.eq(MovementCourseInfo::getMovementMasterId, id)
//
.remove();
//
//
//时间校验
//
String pat = "\\d{4}.\\d{2}.\\d{2}";
//
Pattern p = Pattern.compile(pat);
//
//读取第一个sheet页的数据
//
ExcelReader reader = ExcelUtil.getReader(file.getInputStream(), 0);
//
//读取Excel中所有的数据,以行保存
//
List<List<Object>> rowRecords = reader.read();
//
// 获取excel的列数
//
int column = rowRecords.get(0).size();
//
//初始化列的索引
//
int skipColumnNum = 0;
//
//int seq = 1; // 第一个
//
//初始化起始里程
//
String startingAndEndingMileageStr = "";
//
//初始化终点里程
//
String endingMileageStr = "";
//
//初始化曲线半径
//
String curveRadius = "";
//
//初始化超高
//
String superHigh = "";
//
//初始化加宽
//
String widen = "";
//
//初始化顺坡率
//
String slopeRatio = "";
//
//初始化长度
//
String longExtent = "";
//
//初始化备注
//
String remark = "";
//
//初始化起始里程表主键
//
String courseId = "";
//
// 如果做完了一个解析就跳过
//
List<MovementCourse> movementCourses = new ArrayList<>();
//
List<MovementCourseInfo> resultList = new ArrayList<>();
//
//初始化里程排序
//
int sort = 0;
//
//初始化测点
//
int measurePoint = 0;
//
//初始化轨号排序
//
int infoSort = 0;
//
for (int i = 0; i < column; i++) {
//
skipColumnNum++;
//
if (ObjectUtil.isEmpty(startingAndEndingMileageStr)) {
//
// 1.起止里程
//
List<Object> startingAndEndingMileage = rowRecords.get(3);
//
Object mileageObject = startingAndEndingMileage.get(i);
//
String mileage = mileageObject.toString();
//
//
//超高、加宽、顺坡率、线路全长
//
List<Object> courseList = rowRecords.get(4);
//
Object courseObject = courseList.get(i);
//
String courseStr = courseObject.toString();
//
if (mileage.contains("起止里程")) {
//
//开始里程
//
String[] start = mileage.split("-");
//
String s = start[0];
//
String k = s.substring(s.indexOf("K") + 1, s.length()).trim();
//
//
// 按照“+”分割
//
startingAndEndingMileageStr = k.replace("\\s", "").replaceAll(" +", "").replace("+", "").trim();
//
//
//结束里程
//
String s1 = start[1];
//
String[] ks1 = s1.replaceAll("\\s*", "").replaceAll(" ", "").split(",");
//
String k1 = ks1[0];
//
String n1 = k1.replace("+", "").replace("K", "");
//
endingMileageStr = n1;
//
//
//曲线半径
//
String[] n2 = s1.split("半径 ");
//
String s3 = n2[1];
//
curveRadius = s3.substring(0, s3.indexOf(" m")).replace("/", "").trim();
//
//
//解析超高、加宽、顺坡率、线路全长
//
String[] n3 = courseStr.split("超高");
//
String s4 = n3[1];
//
superHigh = s4.substring(0, s4.indexOf("mm")).replace("/", "").trim();
//
//
//加宽
//
String[] n4 = courseStr.split("加宽");
//
String s5 = n4[1];
//
widen = s5.substring(0, s5.indexOf("mm")).replace("/", "").trim();
//
//System.out.println(skipColumnNum+"加宽="+widen+";");
//
//
//顺坡率
//
String[] n5 = courseStr.split("顺坡率");
//
String s6 = n5[1];
//
slopeRatio = s6.substring(0, s6.indexOf("‰")).replace("/", "").trim();
//
//System.out.println(skipColumnNum+"顺坡率="+slopeRatio+";");
//
//
//线路全长
//
String[] n6 = courseStr.split("线路全长:");
//
String s7 = n6[1];
//
longExtent = s7.substring(0, s7.indexOf("米")).replace("/", "").trim();
//
//System.out.println(skipColumnNum+"线路全长="+longExtent+";");
//
//
//解析备注
//
remark = rowRecords.get(14).get(i + 3).toString().trim();
//
//
MovementCourse movementCourse = new MovementCourse();
//
movementCourse.setMovementMasterId(id);
//
movementCourse.setCourseStartingMileage(new BigDecimal(startingAndEndingMileageStr));
//
movementCourse.setCourseEndMileage(new BigDecimal(endingMileageStr));
//
if (ObjectUtil.isNotEmpty(curveRadius)) {
//
movementCourse.setCurveRadius(new BigDecimal(curveRadius));
//
}
//
if (ObjectUtil.isNotEmpty(superHigh)) {
//
movementCourse.setSuperHigh(new BigDecimal(superHigh));
//
}
//
if (ObjectUtil.isNotEmpty(widen)) {
//
movementCourse.setWiden(new BigDecimal(widen));
//
}
//
if (ObjectUtil.isNotEmpty(slopeRatio)) {
//
movementCourse.setSlopeRatio(new BigDecimal(slopeRatio));
//
}
//
if (ObjectUtil.isNotEmpty(longExtent)) {
//
movementCourse.setLongExtent(new BigDecimal(longExtent));
//
}
//
sort++;
//
courseId = UUIDGenerator.generate();
//
movementCourse.setId(courseId);
//
movementCourse.setDelFlag("0");
//
movementCourse.setRemark(remark);
//
movementCourse.setSort(sort);
//
movementCourses.add(movementCourse);
//
}
//
}
//
//
//解析子集
//
if ((skipColumnNum - 1) % 28 == 0) {
//
continue;
//
}
//
if ((skipColumnNum - 2) % 28 == 0) {
//
continue;
//
}
//
//
// 保存明细
//
infoSort++;
//
measurePoint++;
//
MovementCourseInfo movementCourseInfo = new MovementCourseInfo();
//
movementCourseInfo.setId(UUIDGenerator.generate());
//
movementCourseInfo.setDelFlag("0");
//
movementCourseInfo.setMovementMasterId(id);
//
movementCourseInfo.setMovementCourseId(courseId);
//
movementCourseInfo.setInfoSort(infoSort);
//
movementCourseInfo.setMeasurePoint(measurePoint);
//
//获取轨号
//
List<Object> trackCodeList = rowRecords.get(6);
//
String trackCode = trackCodeList.get(i).toString().trim();
//
if (ObjectUtil.isNotEmpty(trackCode) && !("检查日期").equals(trackCode) && !("轨号").equals(trackCode)) {
//
movementCourseInfo.setTrackCode(trackCode);
//
}
//
//获取轨距
//
List<Object> trackGaugeList = rowRecords.get(7);
//
String trackGauge = trackGaugeList.get(i).toString().trim();
//
if (ObjectUtil.isNotEmpty(trackGauge) && !("轨距").equals(trackGauge) && !p.matcher(trackGauge).matches()) {
//
movementCourseInfo.setTrackGauge(trackGauge);
//
}
//
//获取水平
//
List<Object> levelList = rowRecords.get(8);
//
String level = levelList.get(i).toString().trim();
//
if (ObjectUtil.isNotEmpty(level) && !("水平").equals(level) && !p.matcher(level).matches()) {
//
movementCourseInfo.setLevel(level);
//
}
//
//获取三角坑
//
List<Object> triangularPitList = rowRecords.get(9);
//
String triangularPit = triangularPitList.get(i).toString().trim();
//
//
if (ObjectUtil.isNotEmpty(triangularPit) && !("三角坑").equals(triangularPit) && !p.matcher(triangularPit).matches()) {
//
movementCourseInfo.setTriangularPit(triangularPit);
//
}
//
//获取方向
//
List<Object> directionList = rowRecords.get(10);
//
String direction = directionList.get(i).toString().trim();
//
//
if (ObjectUtil.isNotEmpty(direction) && !("方向").equals(direction) && !p.matcher(direction).matches()) {
//
movementCourseInfo.setDirection(direction);
//
}
//
//获取高低
//
List<Object> heightList = rowRecords.get(11);
//
String height = heightList.get(i).toString().trim();
//
//
if (ObjectUtil.isNotEmpty(height) && !("高低").equals(height) && !p.matcher(height).matches()) {
//
movementCourseInfo.setHeight(height);
//
}
//
//获取结构
//
List<Object> structureList = rowRecords.get(12);
//
String structure = structureList.get(i).toString().trim();
//
//
if (ObjectUtil.isNotEmpty(structure) && !("结构").equals(structure) && !p.matcher(structure).matches()) {
//
movementCourseInfo.setStructure(structure);
//
}
//
//获取整改
//
List<Object> rectificationList = rowRecords.get(13);
//
String rectification = rectificationList.get(i).toString().trim();
//
//
if (ObjectUtil.isNotEmpty(rectification) && !("整改").equals(rectification) && !p.matcher(rectification).matches()) {
//
movementCourseInfo.setRectification(rectification);
//
}
//
resultList.add(movementCourseInfo);
//
if (measurePoint % 8 == 0) {
//
measurePoint = 0;
//
}
//
if ((skipColumnNum + 2) % 28 == 0) {
//
i = i + 4;
//
skipColumnNum = skipColumnNum + 4;
//
startingAndEndingMileageStr = "";
//
endingMileageStr = "";
//
curveRadius = "";
//
superHigh = "";
//
widen = "";
//
slopeRatio = "";
//
longExtent = "";
//
remark = "";
//
courseId = "";
//
infoSort = 0;
//
}
//
}
//
if (ObjectUtil.isNotEmpty(resultList)) {
//
movementCourseInfoService.saveBatch(resultList);
//
}
//
if (ObjectUtil.isNotEmpty(movementCourses)) {
//
movementCourseService.saveBatch(movementCourses);
//
}
//
//
} catch (Exception e) {
//
e.printStackTrace();
//
throw new RuntimeException(e);
//
}
//
return Result.ok("操作成功");
//
}
@AutoLog
(
value
=
"人工静态检查数据-保存曲线半径信息"
)
...
...
@@ -678,9 +678,6 @@ public class MovementRecordsMasterController extends JeecgController<MovementRec
ExcelReader
reader
=
ExcelUtil
.
getReader
(
file
.
getInputStream
(),
0
);
//读取Excel中所有的数据,以行保存
List
<
List
<
Object
>>
rowRecords
=
reader
.
read
();
//获取当前登录人信息
LoginUser
user
=
(
LoginUser
)
SecurityUtils
.
getSubject
().
getPrincipal
();
String
realname
=
user
.
getRealname
();
//初始化测点里程
String
pointMileage
=
""
;
//初始化水平加速度
...
...
@@ -739,10 +736,6 @@ public class MovementRecordsMasterController extends JeecgController<MovementRec
movementAdditiveInfo
.
setId
(
IdWorker
.
get32UUID
());
movementAdditiveInfo
.
setDelFlag
(
"0"
);
movementAdditiveInfo
.
setMovementMasterId
(
id
);
movementAdditiveInfo
.
setCreateTime
(
new
Date
());
movementAdditiveInfo
.
setUpdateTime
(
new
Date
());
movementAdditiveInfo
.
setCreateBy
(
realname
);
movementAdditiveInfo
.
setUpdateBy
(
realname
);
movementAdditiveInfo
.
setInfoSort
(
sort
);
if
(
ObjectUtil
.
isNotEmpty
(
pointMileage
))
{
movementAdditiveInfo
.
setPointMileage
(
new
BigDecimal
(
pointMileage
));
...
...
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/face/impl/MovementRecordsMasterFaceImpl.java
View file @
271591d2
...
...
@@ -10,9 +10,11 @@ import org.jeecg.common.exception.JeecgBootException;
import
org.jeecg.common.util.UUIDGenerator
;
import
org.jeecg.modules.checkData.entity.MovementCourse
;
import
org.jeecg.modules.checkData.entity.MovementCourseInfo
;
import
org.jeecg.modules.checkData.entity.MovementRecordsMaster
;
import
org.jeecg.modules.checkData.face.MovementRecordsMasterFace
;
import
org.jeecg.modules.checkData.service.IMovementCourseInfoService
;
import
org.jeecg.modules.checkData.service.IMovementCourseService
;
import
org.jeecg.modules.checkData.service.IMovementRecordsMasterService
;
import
org.springframework.stereotype.Service
;
import
org.springframework.web.multipart.MultipartFile
;
...
...
@@ -34,6 +36,9 @@ public class MovementRecordsMasterFaceImpl implements MovementRecordsMasterFace
@Resource
private
IMovementCourseInfoService
movementCourseInfoService
;
@Resource
private
IMovementRecordsMasterService
movementRecordsMasterService
;
@Override
public
void
saveLabourCheckItem
(
MovementCourse
record
)
{
...
...
@@ -90,6 +95,8 @@ public class MovementRecordsMasterFaceImpl implements MovementRecordsMasterFace
List
<
MovementCourse
>
movementCourseList
=
new
ArrayList
<>();
List
<
MovementCourseInfo
>
movementCourseInfoList
=
new
ArrayList
<>();
MovementRecordsMaster
recordsMaster
=
this
.
movementRecordsMasterService
.
getById
(
id
);
// 1.excel导入List<List<Object>> 中
CurrentRowHandler
currentRowHandler
=
new
CurrentRowHandler
();
ExcelUtil
.
readBySax
(
inputStream
,
0
,
currentRowHandler
);
...
...
@@ -99,6 +106,8 @@ public class MovementRecordsMasterFaceImpl implements MovementRecordsMasterFace
int
column
=
currentRowHandler
.
rowRecords
.
get
(
0
).
size
();
int
sort
=
0
;
int
trackCodeCount
=
1
;
boolean
startExist
=
false
;
boolean
endExist
=
false
;
for
(
int
i
=
0
;
i
<
column
;
i
++)
{
// 2.1 解析检查项目 获取 起止里程,曲线半径,超高,加宽,顺坡率,线路全长
...
...
@@ -126,6 +135,25 @@ public class MovementRecordsMasterFaceImpl implements MovementRecordsMasterFace
BigDecimal
startMileage
=
Convert
.
toBigDecimal
(
startMileageStr
);
BigDecimal
endMileage
=
Convert
.
toBigDecimal
(
endMileageStr
);
if
(
startMileage
.
compareTo
(
endMileage
)
>=
0
)
{
throw
JeecgBootException
.
error
(
"开始里程不能大于等于结束里程"
);
}
if
(
startMileage
.
compareTo
(
recordsMaster
.
getStartingMileage
())
<
0
)
{
throw
JeecgBootException
.
error
(
"开始里程小于当前批次开始里程"
);
}
else
if
(
startMileage
.
compareTo
(
recordsMaster
.
getStartingMileage
())
==
0
)
{
startExist
=
true
;
}
// 如果结束里程 < 外面的主表的结束里程
if
(
endMileage
.
compareTo
(
recordsMaster
.
getEndMileage
())
>
0
)
{
throw
JeecgBootException
.
error
(
"结束里程大于当前批次结束里程"
);
}
else
if
(
endMileage
.
compareTo
(
recordsMaster
.
getEndMileage
())
==
0
)
{
endExist
=
true
;
}
// ② 获取曲线半径,可能为空,‘/’ 视为空
startIndex
=
startingAndRowDataStr
.
indexOf
(
"曲线半径"
);
endIndex
=
startingAndRowDataStr
.
indexOf
(
"m"
);
...
...
@@ -276,6 +304,13 @@ public class MovementRecordsMasterFaceImpl implements MovementRecordsMasterFace
}
}
if
(!
startExist
)
{
throw
JeecgBootException
.
error
(
"起点里程要和批次的起点里程一致"
);
}
if
(!
endExist
)
{
throw
JeecgBootException
.
error
(
"终点里程要和批次的终点里程一致"
);
}
// 保存之前先删除
movementCourseService
.
lambdaUpdate
().
eq
(
MovementCourse:
:
getMovementMasterId
,
id
).
remove
();
movementCourseInfoService
.
lambdaUpdate
().
eq
(
MovementCourseInfo:
:
getMovementMasterId
,
id
).
remove
();
...
...
jeecg-module-system/src/main/java/org/jeecg/modules/checkData/service/impl/RailInspectionEquipmentItemServiceImpl.java
View file @
271591d2
...
...
@@ -10,14 +10,17 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.jeecg.common.exception.JeecgBootException
;
import
org.jeecg.common.util.UUIDGenerator
;
import
org.jeecg.modules.checkData.entity.MovementRecordsMaster
;
import
org.jeecg.modules.checkData.entity.RailInspectionEquipmentItem
;
import
org.jeecg.modules.checkData.entity.RailInspectionEquipmentItemDetail
;
import
org.jeecg.modules.checkData.mapper.MovementRecordsMasterMapper
;
import
org.jeecg.modules.checkData.mapper.RailInspectionEquipmentItemDetailMapper
;
import
org.jeecg.modules.checkData.mapper.RailInspectionEquipmentItemMapper
;
import
org.jeecg.modules.checkData.service.IRailInspectionEquipmentItemService
;
import
org.jeecg.modules.checkData.vo.RailInspectionEquipmentItemDetailVO
;
import
org.jeecg.modules.checkData.vo.RailInspectionEquipmentItemVO
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.web.multipart.MultipartFile
;
import
javax.annotation.Resource
;
...
...
@@ -41,14 +44,21 @@ public class RailInspectionEquipmentItemServiceImpl extends ServiceImpl<RailInsp
@Resource
private
RailInspectionEquipmentItemDetailMapper
railInspectionEquipmentItemDetailMapper
;
@Resource
private
MovementRecordsMasterMapper
movementRecordsMasterMapper
;
@Override
public
List
<
RailInspectionEquipmentItemVO
>
queryList
(
String
masterId
)
{
return
this
.
baseMapper
.
queryList
(
masterId
);
}
@Override
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
uploadFile
(
String
masterId
,
MultipartFile
file
)
{
try
{
MovementRecordsMaster
recordsMaster
=
movementRecordsMasterMapper
.
selectById
(
masterId
);
//读取第一个sheet页的数据
ExcelReader
reader
=
ExcelUtil
.
getReader
(
file
.
getInputStream
(),
0
);
//读取Excel中所有的数据,以行保存
...
...
@@ -57,15 +67,41 @@ public class RailInspectionEquipmentItemServiceImpl extends ServiceImpl<RailInsp
List
<
RailInspectionEquipmentItem
>
items
=
new
ArrayList
<>();
List
<
RailInspectionEquipmentItemDetail
>
itemDetails
=
new
ArrayList
<>();
boolean
startExist
=
false
;
boolean
endExist
=
false
;
int
sort
=
1
;
for
(
int
i
=
0
;
i
<
rowRecords
.
size
();
)
{
List
<
Object
>
cols
=
rowRecords
.
get
(
i
);
String
titleHeader
=
Convert
.
toStr
(
cols
.
get
(
13
));
// 检查起始里程
BigDecimal
courseStartingMileage
=
Convert
.
toBigDecimal
(
cols
.
get
(
3
));
// 检查终点里程
BigDecimal
courseEndMileage
=
Convert
.
toBigDecimal
(
cols
.
get
(
6
));
if
((
ObjectUtil
.
isNotEmpty
(
titleHeader
)
&&
titleHeader
.
contains
(
"股道"
))
&&
(
ObjectUtil
.
isNotEmpty
(
courseStartingMileage
)
&&
ObjectUtil
.
isNotEmpty
(
courseEndMileage
)))
{
// 如果开始里程 > 外面的主表的开始程则报错
BigDecimal
currentStartMileage
=
courseStartingMileage
.
multiply
(
new
BigDecimal
(
1000
));
BigDecimal
currentEntMileage
=
courseEndMileage
.
multiply
(
new
BigDecimal
(
1000
));
if
(
currentStartMileage
.
compareTo
(
currentEntMileage
)
>=
0
)
{
throw
JeecgBootException
.
error
(
"开始里程不能大于等于结束里程"
);
}
if
(
currentStartMileage
.
compareTo
(
recordsMaster
.
getStartingMileage
())
<
0
)
{
throw
JeecgBootException
.
error
(
"开始里程小于当前批次开始里程"
);
}
else
if
(
currentStartMileage
.
compareTo
(
recordsMaster
.
getStartingMileage
())
==
0
)
{
startExist
=
true
;
}
// 如果结束里程 < 外面的主表的结束里程
if
(
currentEntMileage
.
compareTo
(
recordsMaster
.
getEndMileage
())
>
0
)
{
throw
JeecgBootException
.
error
(
"结束里程大于当前批次结束里程"
);
}
else
if
(
currentEntMileage
.
compareTo
(
recordsMaster
.
getEndMileage
())
==
0
)
{
endExist
=
true
;
}
// 曲线半径
BigDecimal
curveRadius
=
null
;
if
(
ObjectUtil
.
isNotEmpty
(
cols
.
get
(
18
).
toString
().
trim
()))
{
...
...
@@ -88,24 +124,26 @@ public class RailInspectionEquipmentItemServiceImpl extends ServiceImpl<RailInsp
item
.
setCurveRadius
(
curveRadius
);
item
.
setSuperHigh
(
superHigh
);
item
.
setSlopeRatio
(
slopeRatio
);
item
.
setRailInspectionEquipmentId
(
masterId
);
item
.
setDelFlag
(
"0"
);
item
.
setSort
(
sort
);
items
.
add
(
item
);
int
skipRow
=
analysis
ItemDetail
(
i
,
titleHeader
,
item
.
getId
(),
rowRecords
,
itemDetails
);
// 读取item详情
int
skipRow
=
read
ItemDetail
(
i
,
titleHeader
,
item
.
getId
(),
rowRecords
,
itemDetails
);
i
=
i
+
skipRow
;
sort
++;
}
else
{
i
++;
}
}
for
(
int
i
=
0
;
i
<
items
.
size
();
i
++
)
{
RailInspectionEquipmentItem
item
=
items
.
get
(
i
);
item
.
setSort
(
i
+
1
);
item
.
setDelFlag
(
"0"
);
item
.
setRailInspectionEquipmentId
(
masterId
);
if
(!
startExist
)
{
throw
JeecgBootException
.
error
(
"起点里程要和批次的起点里程一致"
);
}
if
(!
endExist
)
{
throw
JeecgBootException
.
error
(
"终点里程要和批次的起点里程一致"
);
}
// 项目信息-先删除,再导入
this
.
lambdaUpdate
().
eq
(
RailInspectionEquipmentItem:
:
getRailInspectionEquipmentId
,
masterId
).
remove
();
...
...
@@ -113,17 +151,15 @@ public class RailInspectionEquipmentItemServiceImpl extends ServiceImpl<RailInsp
queryWrapper
.
eq
(
RailInspectionEquipmentItemDetail:
:
getRailInspectionEquipmentId
,
masterId
);
railInspectionEquipmentItemDetailMapper
.
delete
(
queryWrapper
);
railInspectionEquipmentItemDetailMapper
.
insertBatch
(
itemDetails
);
this
.
saveBatch
(
items
);
}
catch
(
IOException
io
)
{
throw
new
JeecgBootException
(
io
);
}
}
private
int
analysis
ItemDetail
(
int
rows
,
String
titleHeader
,
String
itemId
,
List
<
List
<
Object
>>
rowRecords
,
List
<
RailInspectionEquipmentItemDetail
>
itemDetails
)
{
private
int
read
ItemDetail
(
int
rows
,
String
titleHeader
,
String
itemId
,
List
<
List
<
Object
>>
rowRecords
,
List
<
RailInspectionEquipmentItemDetail
>
itemDetails
)
{
// 解析检查项目:1行:跳过2行不解析
...
...
@@ -183,9 +219,9 @@ public class RailInspectionEquipmentItemServiceImpl extends ServiceImpl<RailInsp
// 解析轨向、高低及其它 1行:空白不解析
// 解析临修日期及内容 1行:空白不解析
// 如果是
正线
解析首轮检查负责人1行
// 如果是
股道
解析首轮检查负责人1行
int
skipRow
=
14
;
if
(
titleHeader
.
contains
(
"
正线
"
))
{
if
(
titleHeader
.
contains
(
"
股道
"
))
{
skipRow
=
skipRow
+
1
;
}
...
...
@@ -258,17 +294,7 @@ public class RailInspectionEquipmentItemServiceImpl extends ServiceImpl<RailInsp
@Override
public
void
updateRecord
(
RailInspectionEquipmentItem
record
)
{
this
.
lambdaUpdate
()
.
set
(
RailInspectionEquipmentItem:
:
getRemark
,
record
.
getRemark
())
.
set
(
RailInspectionEquipmentItem:
:
getCourseStartingMileage
,
record
.
getCourseStartingMileage
())
.
set
(
RailInspectionEquipmentItem:
:
getCourseEndMileage
,
record
.
getCourseEndMileage
())
.
set
(
RailInspectionEquipmentItem:
:
getCurveRadius
,
record
.
getCurveRadius
())
.
set
(
RailInspectionEquipmentItem:
:
getLongExtent
,
record
.
getLongExtent
())
.
set
(
RailInspectionEquipmentItem:
:
getSlopeRatio
,
record
.
getSlopeRatio
())
.
set
(
RailInspectionEquipmentItem:
:
getSuperHigh
,
record
.
getSuperHigh
())
.
set
(
RailInspectionEquipmentItem:
:
getWiden
,
record
.
getWiden
())
.
eq
(
RailInspectionEquipmentItem:
:
getId
,
record
.
getId
())
.
update
();
this
.
lambdaUpdate
().
set
(
RailInspectionEquipmentItem:
:
getRemark
,
record
.
getRemark
()).
set
(
RailInspectionEquipmentItem:
:
getCourseStartingMileage
,
record
.
getCourseStartingMileage
()).
set
(
RailInspectionEquipmentItem:
:
getCourseEndMileage
,
record
.
getCourseEndMileage
()).
set
(
RailInspectionEquipmentItem:
:
getCurveRadius
,
record
.
getCurveRadius
()).
set
(
RailInspectionEquipmentItem:
:
getLongExtent
,
record
.
getLongExtent
()).
set
(
RailInspectionEquipmentItem:
:
getSlopeRatio
,
record
.
getSlopeRatio
()).
set
(
RailInspectionEquipmentItem:
:
getSuperHigh
,
record
.
getSuperHigh
()).
set
(
RailInspectionEquipmentItem:
:
getWiden
,
record
.
getWiden
()).
eq
(
RailInspectionEquipmentItem:
:
getId
,
record
.
getId
()).
update
();
// this.updateById(record);
}
...
...
jeecg-module-system/src/main/java/org/jeecg/modules/dynamicStaticAnalysis/algorithm/AnalysisAlgorithm.java
View file @
271591d2
...
...
@@ -1676,8 +1676,11 @@ public class AnalysisAlgorithm {
// 计算超限:如果为null则计算,否则和单元绑定
if
(
null
==
transfinite
)
{
transfinite
=
this
.
labourCheckTransfinite
(
analysisBatch
,
movementCourseInfo
);
}
else
{
unitDevice
.
put
(
"labourCheckTransfinite"
,
transfinite
);
// 如果超限不为空则添加进去
if
(
null
!=
transfinite
)
{
unitDevice
.
put
(
"labourCheckTransfinite"
,
transfinite
);
}
}
}
...
...
jeecg-module-system/src/main/java/org/jeecg/modules/subwayNetwork/controller/SubwaySectionController.java
View file @
271591d2
...
...
@@ -8,8 +8,15 @@ import cn.hutool.core.util.ObjectUtil;
import
org.jeecg.common.api.dto.PageSearch
;
import
org.jeecg.common.api.vo.Result
;
import
org.jeecg.common.exception.JeecgBootException
;
import
org.jeecg.modules.checkData.entity.MovementRecordsMaster
;
import
org.jeecg.modules.checkData.entity.RecordsMasterCheck
;
import
org.jeecg.modules.checkData.mapper.MovementRecordsMasterMapper
;
import
org.jeecg.modules.checkData.service.IMovementRecordsMasterService
;
import
org.jeecg.modules.checkData.service.IRecordsMasterCheckService
;
import
org.jeecg.modules.deviceAsset.entity.*
;
import
org.jeecg.modules.deviceAsset.service.*
;
import
org.jeecg.modules.dynamicStaticAnalysis.service.IAnalysisBatchService
;
import
org.jeecg.modules.maintenanceWork.service.IWorkBatchService
;
import
org.jeecg.modules.subwayNetwork.dto.SubwaySectionEditDTO
;
import
org.jeecg.modules.subwayNetwork.dto.SubwaySectionQueryDTO
;
import
org.jeecg.modules.subwayNetwork.entity.SectionStationMap
;
...
...
@@ -56,7 +63,11 @@ public class SubwaySectionController extends JeecgController<SubwaySection, ISub
private
ISignBoardManagementService
signBoardManagementService
;
@Resource
private
ISleeperManagementService
sleeperManagementService
;
@Resource
private
IMovementRecordsMasterService
movementRecordsMasterService
;
@Resource
private
IRecordsMasterCheckService
recordsMasterCheckService
;
@AutoLog
(
value
=
"线路车站-地铁区间-分页列表查询"
)
@ApiOperation
(
value
=
"线路车站-地铁区间-分页列表查询"
,
notes
=
"线路车站-地铁区间-分页列表查询"
)
...
...
@@ -132,7 +143,12 @@ public class SubwaySectionController extends JeecgController<SubwaySection, ISub
Long
signBoardCount
=
signBoardManagementService
.
lambdaQuery
()
.
eq
(
SignBoardManagement:
:
getSectionId
,
id
)
.
count
();
Long
movementRecordsCount
=
movementRecordsMasterService
.
lambdaQuery
()
.
eq
(
MovementRecordsMaster:
:
getSubwaySectionId
,
id
)
.
count
();
Long
recordsMasterCount
=
recordsMasterCheckService
.
lambdaQuery
()
.
eq
(
RecordsMasterCheck:
:
getSubwaySectionId
,
id
)
.
count
();
boolean
isDel
=
false
;
StringBuilder
errorMsg
=
new
StringBuilder
(
"该区间下还有"
);
...
...
@@ -168,6 +184,14 @@ public class SubwaySectionController extends JeecgController<SubwaySection, ISub
isDel
=
true
;
errorMsg
.
append
(
"轨行区标示牌:"
+
signBoardCount
+
"个"
);
}
if
(
movementRecordsCount
!=
0
)
{
isDel
=
true
;
errorMsg
.
append
(
"动静态几何数据关联:"
+
movementRecordsCount
+
"条"
);
}
if
(
recordsMasterCount
!=
0
)
{
isDel
=
true
;
errorMsg
.
append
(
"设备检查记录数据关联:"
+
recordsMasterCount
+
"条"
);
}
if
(
isDel
)
{
throw
JeecgBootException
.
error
(
errorMsg
.
toString
());
}
...
...
@@ -223,6 +247,12 @@ public class SubwaySectionController extends JeecgController<SubwaySection, ISub
Long
signBoardCount
=
signBoardManagementService
.
lambdaQuery
()
.
eq
(
SignBoardManagement:
:
getSectionId
,
id
)
.
count
();
Long
movementRecordsCount
=
movementRecordsMasterService
.
lambdaQuery
()
.
eq
(
MovementRecordsMaster:
:
getSubwaySectionId
,
id
)
.
count
();
Long
recordsMasterCount
=
recordsMasterCheckService
.
lambdaQuery
()
.
eq
(
RecordsMasterCheck:
:
getSubwaySectionId
,
id
)
.
count
();
boolean
isDel
=
false
;
if
(
railCount
!=
0
)
{
isDel
=
true
;
...
...
@@ -248,6 +278,12 @@ public class SubwaySectionController extends JeecgController<SubwaySection, ISub
if
(
signBoardCount
!=
0
)
{
isDel
=
true
;
}
if
(
movementRecordsCount
!=
0
)
{
isDel
=
true
;
}
if
(
recordsMasterCount
!=
0
)
{
isDel
=
true
;
}
if
(
isDel
)
{
failNum
++;
...
...
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