Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
T
traffic-signal-platform
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
signal
traffic-signal-platform
Commits
386ff6e1
Commit
386ff6e1
authored
Jan 30, 2023
by
hanbing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
方案管理-运行计划,修改执行的日计划为列表
parent
c1e59458
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
56 additions
and
43 deletions
+56
-43
RunningPlanDTO.java
...rvice/src/main/java/net/wanji/web/dto/RunningPlanDTO.java
+7
-16
RunningPlanServiceImpl.java
...wanji/web/service/scheme/impl/RunningPlanServiceImpl.java
+49
-27
No files found.
signal-control-service/src/main/java/net/wanji/web/dto/RunningPlanDTO.java
View file @
386ff6e1
...
...
@@ -25,14 +25,6 @@ public class RunningPlanDTO {
@NoArgsConstructor
@Data
public
static
class
DailyPlanListElement
{
/**
* planNo : P01
* name : 计划名1
* startTime : 07:00
* endTime : 09:00
* schemeName : 方案名1
*/
@ApiModelProperty
(
value
=
"计划编号"
,
required
=
true
)
private
String
planNo
;
@ApiModelProperty
(
value
=
"日计划名"
,
required
=
true
)
...
...
@@ -54,18 +46,17 @@ public class RunningPlanDTO {
@NoArgsConstructor
@Data
public
static
class
SchedulesPlanListElement
{
/**
* scheduleNo : S01
* name : 运行计划名1
* week : [1,2,3,4,5]
* specialDate : null
* planName : 计划名1
*/
@ApiModelProperty
(
value
=
"运行计划编号"
,
required
=
true
)
private
String
scheduleNo
;
@ApiModelProperty
(
value
=
"运行计划名"
,
required
=
true
)
private
String
name
;
@ApiModelProperty
(
value
=
"执行的日计划列表"
,
required
=
true
)
private
List
<
ExecListElement
>
execList
;
}
@NoArgsConstructor
@Data
public
static
class
ExecListElement
{
@ApiModelProperty
(
value
=
"星期:1周一,2周二,3周三,4周四,5周五,6周六,7周日"
,
required
=
true
)
private
List
<
Integer
>
week
;
@ApiModelProperty
(
value
=
"特殊日期列表,格式 2023-01-28"
,
required
=
true
)
...
...
signal-control-service/src/main/java/net/wanji/web/service/scheme/impl/RunningPlanServiceImpl.java
View file @
386ff6e1
...
...
@@ -24,6 +24,8 @@ import java.text.SimpleDateFormat;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
/**
* @author Kent HAN
...
...
@@ -87,20 +89,34 @@ public class RunningPlanServiceImpl implements RunningPlanService {
for
(
CrossSchedulesPO
crossSchedulesPO
:
crossSchedulesPOList
)
{
String
scheduleNo
=
crossSchedulesPO
.
getScheduleNo
();
String
name
=
crossSchedulesPO
.
getName
();
// 获取调度ID
CrossSchedulesPO
schedulesPO
=
crossSchedulesMapper
.
selectByCrossIdAndScheduleNo
(
crossId
,
scheduleNo
);
Integer
schedulesId
=
schedulesPO
.
getId
();
// 根据路口ID和调度ID查询调度计划关系
List
<
CrossSchedulesPlanPO
>
crossSchedulesPlanPOList
=
crossSchedulesPlanMapper
.
selectByCrossIdAndSchedulesId
(
crossId
,
schedulesId
);
// 构造结果集
RunningPlanDTO
.
SchedulesPlanListElement
schedulesPlan
=
new
RunningPlanDTO
.
SchedulesPlanListElement
();
schedulesPlan
.
setScheduleNo
(
scheduleNo
);
schedulesPlan
.
setName
(
name
);
// 构造execList
List
<
RunningPlanDTO
.
ExecListElement
>
execList
=
buildExecList
(
crossId
,
scheduleNo
);
schedulesPlan
.
setExecList
(
execList
);
schedulesPlanList
.
add
(
schedulesPlan
);
}
return
schedulesPlanList
;
}
private
List
<
RunningPlanDTO
.
ExecListElement
>
buildExecList
(
String
crossId
,
String
scheduleNo
)
{
List
<
RunningPlanDTO
.
ExecListElement
>
execList
=
new
ArrayList
<>();
// 获取调度ID
CrossSchedulesPO
schedulesPO
=
crossSchedulesMapper
.
selectByCrossIdAndScheduleNo
(
crossId
,
scheduleNo
);
Integer
schedulesId
=
schedulesPO
.
getId
();
// 根据路口ID、调度ID和计划ID查询调度计划关系
List
<
CrossSchedulesPlanPO
>
crossSchedulesPlanPOList
=
crossSchedulesPlanMapper
.
selectByCrossIdAndSchedulesId
(
crossId
,
schedulesId
);
Map
<
Integer
,
List
<
CrossSchedulesPlanPO
>>
collectMap
=
crossSchedulesPlanPOList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
CrossSchedulesPlanPO:
:
getPlanId
));
for
(
Map
.
Entry
<
Integer
,
List
<
CrossSchedulesPlanPO
>>
entry
:
collectMap
.
entrySet
())
{
RunningPlanDTO
.
ExecListElement
execListElement
=
new
RunningPlanDTO
.
ExecListElement
();
List
<
Integer
>
week
=
new
ArrayList
<>();
List
<
String
>
specialDateList
=
new
ArrayList
<>();
Integer
planId
=
0
;
for
(
CrossSchedulesPlanPO
crossSchedulesPlanPO
:
crossSchedulesPlanPOList
)
{
Integer
planId
=
entry
.
getKey
();
List
<
CrossSchedulesPlanPO
>
secondList
=
entry
.
getValue
();
for
(
CrossSchedulesPlanPO
crossSchedulesPlanPO
:
secondList
)
{
Integer
day
=
crossSchedulesPlanPO
.
getWeek
();
if
(
day
==
0
)
{
// 特殊日期
Date
specialDate
=
crossSchedulesPlanPO
.
getSpecialDate
();
...
...
@@ -108,15 +124,14 @@ public class RunningPlanServiceImpl implements RunningPlanService {
}
else
{
week
.
add
(
day
);
}
planId
=
crossSchedulesPlanPO
.
getPlanId
();
}
schedulesPlan
.
setWeek
(
week
);
schedulesPlan
.
setSpecialDateList
(
specialDateList
);
execListElement
.
setWeek
(
week
);
execListElement
.
setSpecialDateList
(
specialDateList
);
CrossPlanPO
crossPlanPO
=
crossPlanMapper
.
selectById
(
planId
);
schedulesPlan
.
setPlanName
(
crossPlanPO
.
getName
());
schedulesPlanList
.
add
(
schedulesPlan
);
execListElement
.
setPlanName
(
crossPlanPO
.
getName
());
execList
.
add
(
execListElement
);
}
return
schedulesPlan
List
;
return
exec
List
;
}
private
List
<
RunningPlanDTO
.
DailyPlanListElement
>
buildDailyPlanList
(
String
crossId
)
{
...
...
@@ -136,17 +151,21 @@ public class RunningPlanServiceImpl implements RunningPlanService {
crossSchedulesPO
.
setCrossId
(
crossId
);
crossSchedulesMapper
.
insertOne
(
crossSchedulesPO
);
Integer
crossSchedulesId
=
crossSchedulesPO
.
getId
();
// 根据路口ID和计划名获取计划ID
String
planName
=
schedulesPlan
.
getPlanName
();
CrossPlanPO
crossPlanPO
=
crossPlanMapper
.
selectByCrossIdAndName
(
crossId
,
planName
);
Integer
planId
=
crossPlanPO
.
getId
();
// 更新调度计划关系表
updateCrossSchedulesPlan
(
crossId
,
schedulesPlan
,
crossSchedulesId
,
planId
);
// 遍历执行的日计划列表
List
<
RunningPlanDTO
.
ExecListElement
>
execList
=
schedulesPlan
.
getExecList
();
for
(
RunningPlanDTO
.
ExecListElement
execListElement
:
execList
)
{
// 根据路口ID和计划名获取计划ID
String
planName
=
execListElement
.
getPlanName
();
CrossPlanPO
crossPlanPO
=
crossPlanMapper
.
selectByCrossIdAndName
(
crossId
,
planName
);
Integer
planId
=
crossPlanPO
.
getId
();
// 更新调度计划关系表
updateCrossSchedulesPlan
(
crossId
,
execListElement
,
crossSchedulesId
,
planId
);
}
}
}
private
void
updateCrossSchedulesPlan
(
String
crossId
,
RunningPlanDTO
.
SchedulesPlan
ListElement
schedulesPlan
,
Integer
crossSchedulesId
,
Integer
planId
)
throws
ParseException
{
private
void
updateCrossSchedulesPlan
(
String
crossId
,
RunningPlanDTO
.
Exec
ListElement
schedulesPlan
,
Integer
crossSchedulesId
,
Integer
planId
)
throws
ParseException
{
List
<
Integer
>
week
=
schedulesPlan
.
getWeek
();
if
(
week
==
null
||
week
.
size
()
==
0
)
{
// 特殊日期
List
<
String
>
specialDateList
=
schedulesPlan
.
getSpecialDateList
();
...
...
@@ -217,10 +236,13 @@ public class RunningPlanServiceImpl implements RunningPlanService {
private
static
void
checkSpecialDate
(
RunningPlanDTO
runningPlanDTO
)
{
List
<
RunningPlanDTO
.
SchedulesPlanListElement
>
schedulesPlanList
=
runningPlanDTO
.
getSchedulesPlanList
();
for
(
RunningPlanDTO
.
SchedulesPlanListElement
schedulesPlan
:
schedulesPlanList
)
{
List
<
Integer
>
week
=
schedulesPlan
.
getWeek
();
List
<
String
>
specialDateList
=
schedulesPlan
.
getSpecialDateList
();
if
(
week
!=
null
&&
week
.
size
()
>
0
&&
!
CollectionUtil
.
isEmpty
(
specialDateList
))
{
throw
new
WeekException
(
"不能同时有星期选择和日期选择"
);
List
<
RunningPlanDTO
.
ExecListElement
>
execList
=
schedulesPlan
.
getExecList
();
for
(
RunningPlanDTO
.
ExecListElement
execListElement
:
execList
)
{
List
<
Integer
>
week
=
execListElement
.
getWeek
();
List
<
String
>
specialDateList
=
execListElement
.
getSpecialDateList
();
if
(
CollectionUtil
.
isNotEmpty
(
week
)
&&
CollectionUtil
.
isNotEmpty
(
specialDateList
))
{
throw
new
WeekException
(
"不能同时有星期选择和日期选择"
);
}
}
}
}
...
...
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