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
d8d1e287
Commit
d8d1e287
authored
Feb 01, 2023
by
hanbing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
方案管理-方案下发,时间表下发
parent
0f23fc8a
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
181 additions
and
1 deletion
+181
-1
PlanSendController.java
...ain/java/net/wanji/web/controller/PlanSendController.java
+34
-0
ScheduleIdDTO.java
...ervice/src/main/java/net/wanji/web/dto/ScheduleIdDTO.java
+18
-0
SchemeSendService.java
...rc/main/java/net/wanji/web/service/SchemeSendService.java
+12
-0
SchemeSendServiceImpl.java
...ava/net/wanji/web/service/impl/SchemeSendServiceImpl.java
+110
-0
RunningPlanServiceImpl.java
...wanji/web/service/scheme/impl/RunningPlanServiceImpl.java
+7
-1
No files found.
signal-control-service/src/main/java/net/wanji/web/controller/PlanSendController.java
0 → 100644
View file @
d8d1e287
package
net
.
wanji
.
web
.
controller
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
net.wanji.feign.pojo.result.JsonViewObject
;
import
net.wanji.web.dto.ScheduleIdDTO
;
import
net.wanji.web.service.impl.SchemeSendServiceImpl
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* @author duanruiming
* @date 2023/01/04 16:10
*/
@Api
(
value
=
"PlanSendController"
,
description
=
"方案下发"
)
@RequestMapping
(
"/planSend"
)
@RestController
@SuppressWarnings
(
"all"
)
public
class
PlanSendController
{
private
final
SchemeSendServiceImpl
schemeSendService
;
public
PlanSendController
(
SchemeSendServiceImpl
schemeSendService
)
{
this
.
schemeSendService
=
schemeSendService
;
}
@ApiOperation
(
value
=
"方案下发"
,
notes
=
"时间表下发"
)
@PostMapping
(
"/scheduleSend"
)
public
JsonViewObject
timeTableSend
(
@RequestBody
ScheduleIdDTO
scheduleIdDTO
)
{
JsonViewObject
jsonViewObject
=
schemeSendService
.
scheduleSend
(
scheduleIdDTO
);
return
jsonViewObject
;
}
}
signal-control-service/src/main/java/net/wanji/web/dto/ScheduleIdDTO.java
0 → 100644
View file @
d8d1e287
package
net
.
wanji
.
web
.
dto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* 方案下发-时间表下发输入参数
*
* @author Kent HAN
* @date 2022/12/20 10:17
*/
@Data
public
class
ScheduleIdDTO
{
@ApiModelProperty
(
value
=
"路口ID,如:c7e7b1f352dd4acab4a60088eb391cca"
,
required
=
true
)
private
String
crossId
;
@ApiModelProperty
(
value
=
"运行计划ID"
,
required
=
true
)
private
Integer
scheduleId
;
}
signal-control-service/src/main/java/net/wanji/web/service/SchemeSendService.java
0 → 100644
View file @
d8d1e287
package
net
.
wanji
.
web
.
service
;
import
net.wanji.feign.pojo.result.JsonViewObject
;
import
net.wanji.web.dto.ScheduleIdDTO
;
/**
* @author Kent HAN
* @date 2022/11/3 16:14
*/
public
interface
SchemeSendService
{
JsonViewObject
scheduleSend
(
ScheduleIdDTO
scheduleIdDTO
);
}
signal-control-service/src/main/java/net/wanji/web/service/impl/SchemeSendServiceImpl.java
0 → 100644
View file @
d8d1e287
package
net
.
wanji
.
web
.
service
.
impl
;
import
net.wanji.feign.pojo.result.JsonViewObject
;
import
net.wanji.feign.pojo.vo.ScheduleSendVO
;
import
net.wanji.feign.service.UtcFeignClients
;
import
net.wanji.web.dto.ScheduleIdDTO
;
import
net.wanji.web.mapper.scheme.CrossPlanMapper
;
import
net.wanji.web.mapper.scheme.CrossSchedulesPlanMapper
;
import
net.wanji.web.po.scheme.CrossPlanPO
;
import
net.wanji.web.po.scheme.CrossSchedulesPlanPO
;
import
net.wanji.web.service.SchemeSendService
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.stereotype.Service
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
/**
* @author Kent HAN
* @date 2023/2/1 9:39
*/
@Service
public
class
SchemeSendServiceImpl
implements
SchemeSendService
{
private
final
UtcFeignClients
utcFeignClients
;
private
final
CrossSchedulesPlanMapper
crossSchedulesPlanMapper
;
private
final
CrossPlanMapper
crossPlanMapper
;
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
public
SchemeSendServiceImpl
(
@Qualifier
(
"net.wanji.feign.service.UtcFeignClients"
)
UtcFeignClients
utcFeignClients
,
CrossSchedulesPlanMapper
crossSchedulesPlanMapper
,
CrossPlanMapper
crossPlanMapper
)
{
this
.
utcFeignClients
=
utcFeignClients
;
this
.
crossSchedulesPlanMapper
=
crossSchedulesPlanMapper
;
this
.
crossPlanMapper
=
crossPlanMapper
;
}
@Override
public
JsonViewObject
scheduleSend
(
ScheduleIdDTO
scheduleIdDTO
)
{
String
crossId
=
scheduleIdDTO
.
getCrossId
();
ScheduleSendVO
scheduleSendVO
=
new
ScheduleSendVO
();
scheduleSendVO
.
setCrossCode
(
crossId
);
// 构造时间表
List
<
ScheduleSendVO
.
Schedule
>
schedules
=
buildSchedules
(
crossId
,
scheduleIdDTO
);
scheduleSendVO
.
setSchedules
(
schedules
);
// 发送请求
JsonViewObject
jsonViewObject
=
utcFeignClients
.
scheduleSend
(
scheduleSendVO
);
if
(
Objects
.
isNull
(
jsonViewObject
)
||
jsonViewObject
.
getCode
()
!=
200
)
{
return
jsonViewObject
.
fail
(
"信号机方案下发-基础方案下发UTC服务调用异常"
);
}
return
jsonViewObject
.
success
();
}
private
List
<
ScheduleSendVO
.
Schedule
>
buildSchedules
(
String
crossId
,
ScheduleIdDTO
scheduleIdDTO
)
{
List
<
ScheduleSendVO
.
Schedule
>
schedules
=
new
ArrayList
<>();
Integer
scheduleId
=
scheduleIdDTO
.
getScheduleId
();
List
<
CrossSchedulesPlanPO
>
crossSchedulesPlanPOList
=
crossSchedulesPlanMapper
.
selectByCrossIdAndSchedulesId
(
crossId
,
scheduleId
);
// 根据计划ID分组
Map
<
Integer
,
List
<
CrossSchedulesPlanPO
>>
collectMap
=
crossSchedulesPlanPOList
.
stream
()
.
collect
(
Collectors
.
groupingBy
(
CrossSchedulesPlanPO:
:
getPlanId
));
for
(
Map
.
Entry
<
Integer
,
List
<
CrossSchedulesPlanPO
>>
entry
:
collectMap
.
entrySet
())
{
ScheduleSendVO
.
Schedule
schedule
=
new
ScheduleSendVO
.
Schedule
();
List
<
ScheduleSendVO
.
Schedule
.
Week
>
weeks
=
new
ArrayList
<>();
List
<
ScheduleSendVO
.
Schedule
.
SpecialDay
>
specialDays
=
new
ArrayList
<>();
for
(
CrossSchedulesPlanPO
crossSchedulesPlanPO
:
entry
.
getValue
())
{
Integer
week
=
crossSchedulesPlanPO
.
getWeek
();
Date
specialDate
=
crossSchedulesPlanPO
.
getSpecialDate
();
if
(
week
!=
0
)
{
// 添加至星期列表
addToWeeks
(
weeks
,
week
,
entry
);
}
else
{
// 添加至特殊日期列表
addToSpecialDays
(
specialDays
,
specialDate
,
entry
);
}
}
schedule
.
setWeeks
(
weeks
);
schedule
.
setSpecialDays
(
specialDays
);
schedules
.
add
(
schedule
);
}
return
schedules
;
}
private
void
addToSpecialDays
(
List
<
ScheduleSendVO
.
Schedule
.
SpecialDay
>
specialDays
,
Date
specialDate
,
Map
.
Entry
<
Integer
,
List
<
CrossSchedulesPlanPO
>>
entry
)
{
ScheduleSendVO
.
Schedule
.
SpecialDay
specialDay
=
new
ScheduleSendVO
.
Schedule
.
SpecialDay
();
specialDay
.
setDateStr
(
sdf
.
format
(
specialDate
));
String
planNo
=
getPlanNo
(
entry
);
specialDay
.
setPlanNo
(
Integer
.
parseInt
(
planNo
));
specialDays
.
add
(
specialDay
);
}
private
void
addToWeeks
(
List
<
ScheduleSendVO
.
Schedule
.
Week
>
weeks
,
Integer
week
,
Map
.
Entry
<
Integer
,
List
<
CrossSchedulesPlanPO
>>
entry
)
{
ScheduleSendVO
.
Schedule
.
Week
weekObj
=
new
ScheduleSendVO
.
Schedule
.
Week
();
weekObj
.
setWeekNum
(
week
);
String
planNo
=
getPlanNo
(
entry
);
weekObj
.
setPlanNo
(
Integer
.
parseInt
(
planNo
));
weeks
.
add
(
weekObj
);
}
private
String
getPlanNo
(
Map
.
Entry
<
Integer
,
List
<
CrossSchedulesPlanPO
>>
entry
)
{
Integer
planId
=
entry
.
getKey
();
CrossPlanPO
crossPlanPO
=
crossPlanMapper
.
selectById
(
planId
);
return
crossPlanPO
.
getPlanNo
();
}
}
signal-control-service/src/main/java/net/wanji/web/service/scheme/impl/RunningPlanServiceImpl.java
View file @
d8d1e287
...
...
@@ -199,7 +199,13 @@ public class RunningPlanServiceImpl implements RunningPlanService {
for
(
RunningPlanDTO
.
DailyPlanListElement
dailyPlan
:
dailyPlanList
)
{
// 更新计划表获取计划ID
CrossPlanPO
crossPlanPO
=
new
CrossPlanPO
();
crossPlanPO
.
setPlanNo
(
dailyPlan
.
getPlanNo
());
String
planNo
=
dailyPlan
.
getPlanNo
();
try
{
Integer
.
parseInt
(
planNo
);
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
"计划编号必须为数字"
);
}
crossPlanPO
.
setPlanNo
(
planNo
);
crossPlanPO
.
setName
(
dailyPlan
.
getName
());
crossPlanPO
.
setCrossId
(
crossId
);
crossPlanMapper
.
insertOne
(
crossPlanPO
);
...
...
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