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
85c4f39b
Commit
85c4f39b
authored
Oct 26, 2023
by
hanbing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[add] 统一信控-方案列表返回当前方案ID
parent
2e5b5215
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
138 additions
and
2 deletions
+138
-2
SaveSchemeConfigDTO.java
.../src/main/java/net/wanji/web/dto/SaveSchemeConfigDTO.java
+5
-0
SchemeConfigServiceImpl.java
...anji/web/service/scheme/impl/SchemeConfigServiceImpl.java
+74
-2
BaseCrossSectionMapper.java
.../net/wanji/databus/dao/mapper/BaseCrossSectionMapper.java
+3
-0
CrossAllSchemesDTO.java
...c/main/java/net/wanji/databus/dto/CrossAllSchemesDTO.java
+42
-0
BaseCrossSectionMapper.xml
...abus/src/main/resources/mapper/BaseCrossSectionMapper.xml
+14
-0
No files found.
signal-control-service/src/main/java/net/wanji/web/dto/SaveSchemeConfigDTO.java
View file @
85c4f39b
...
...
@@ -15,8 +15,13 @@ import java.util.List;
public
class
SaveSchemeConfigDTO
{
@ApiModelProperty
(
value
=
"路口ID"
,
required
=
true
)
private
String
crossId
;
@ApiModelProperty
(
value
=
"配时方式 1阶段式 2环式"
,
required
=
true
)
private
Integer
timeType
;
@ApiModelProperty
(
name
=
"当前方案ID"
,
notes
=
""
)
private
Integer
currentSchemeId
;
private
List
<
PhaseScheme
>
phaseSchemeList
;
// 方案列表
@Data
public
static
class
PhaseScheme
{
...
...
signal-control-service/src/main/java/net/wanji/web/service/scheme/impl/SchemeConfigServiceImpl.java
View file @
85c4f39b
...
...
@@ -3,10 +3,11 @@ package net.wanji.web.service.scheme.impl;
import
cn.hutool.core.collection.CollectionUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
net.wanji.databus.bo.CrossIdBO
;
import
net.wanji.databus.dao.entity.BaseCrossSchemePO
;
import
net.wanji.databus.dao.entity.CrossPhaseLightsPO
;
import
net.wanji.databus.dao.entity.CrossPhasePO
;
import
net.wanji.databus.dao.entity.BaseCrossSchemePO
;
import
net.wanji.databus.dao.mapper.*
;
import
net.wanji.databus.dto.CrossAllSchemesDTO
;
import
net.wanji.databus.po.BaseCrossLightsPO
;
import
net.wanji.databus.po.CrossLaneLightsPO
;
import
net.wanji.databus.po.LaneInfoPO
;
...
...
@@ -20,9 +21,11 @@ import net.wanji.web.po.scheme.CrossAccompanyPhasePO;
import
net.wanji.web.service.scheme.SchemeConfigService
;
import
net.wanji.web.vo.scheme.LaneIdsVO
;
import
net.wanji.web.vo.scheme.LightIdVO
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
java.time.LocalTime
;
import
java.util.*
;
import
java.util.stream.Collectors
;
...
...
@@ -39,10 +42,11 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
private
final
BaseCrossPhaseLightsMapper
baseCrossPhaseLightsMapper
;
private
final
BaseCrossLightsMapper
baseCrossLightsMapper
;
private
final
CrossAccompanyPhaseMapper
crossAccompanyPhaseMapper
;
private
final
BaseCrossSectionMapper
baseCrossSectionMapper
;
public
SchemeConfigServiceImpl
(
BaseCrossSchemeMapper
baseCrossSchemeMapper
,
BaseCrossPhaseMapper
baseCrossPhaseMapper
,
LaneInfoMapper
laneInfoMapper
,
BaseCrossLaneLightsMapper
baseCrossLaneLightsMapper
,
BaseCrossPhaseLightsMapper
baseCrossPhaseLightsMapper
,
BaseCrossLightsMapper
baseCrossLightsMapper
,
CrossAccompanyPhaseMapper
crossAccompanyPhaseMapper
)
{
BaseCrossPhaseLightsMapper
baseCrossPhaseLightsMapper
,
BaseCrossLightsMapper
baseCrossLightsMapper
,
CrossAccompanyPhaseMapper
crossAccompanyPhaseMapper
,
@Qualifier
(
"baseCrossSectionMapper"
)
BaseCrossSectionMapper
baseCrossSectionMapper
)
{
this
.
baseCrossSchemeMapper
=
baseCrossSchemeMapper
;
this
.
crossPhaseMapper
=
baseCrossPhaseMapper
;
this
.
laneInfoMapper
=
laneInfoMapper
;
...
...
@@ -50,6 +54,7 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
this
.
baseCrossPhaseLightsMapper
=
baseCrossPhaseLightsMapper
;
this
.
baseCrossLightsMapper
=
baseCrossLightsMapper
;
this
.
crossAccompanyPhaseMapper
=
crossAccompanyPhaseMapper
;
this
.
baseCrossSectionMapper
=
baseCrossSectionMapper
;
}
@Override
...
...
@@ -117,9 +122,76 @@ public class SchemeConfigServiceImpl implements SchemeConfigService {
saveSchemeConfigDTO
.
setPhaseSchemeList
(
sort
);
// todo 暂时只有环式
saveSchemeConfigDTO
.
setTimeType
(
2
);
saveSchemeConfigDTO
.
setCurrentSchemeId
(
calcCurrentSchemeId
(
crossId
));
return
saveSchemeConfigDTO
;
}
/**
* 获取当前方案ID
*/
private
Integer
calcCurrentSchemeId
(
String
crossId
)
{
List
<
CrossAllSchemesDTO
>
dtoList
=
baseCrossSectionMapper
.
selectCrossAllSchemes
(
crossId
);
// 先依据特殊日期
// 获取今天的年月日
Calendar
todayCalendar
=
Calendar
.
getInstance
();
todayCalendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
);
todayCalendar
.
set
(
Calendar
.
MINUTE
,
0
);
todayCalendar
.
set
(
Calendar
.
SECOND
,
0
);
todayCalendar
.
set
(
Calendar
.
MILLISECOND
,
0
);
Date
today
=
todayCalendar
.
getTime
();
List
<
CrossAllSchemesDTO
>
filteredList1
=
dtoList
.
stream
()
.
filter
(
dto
->
dto
.
getWeek
()
!=
null
&&
dto
.
getWeek
()
==
0
)
.
filter
(
dto
->
{
if
(
dto
.
getSpecialDate
()
==
null
)
{
return
false
;
}
Calendar
specialDateCalendar
=
Calendar
.
getInstance
();
specialDateCalendar
.
setTime
(
dto
.
getSpecialDate
());
specialDateCalendar
.
set
(
Calendar
.
HOUR_OF_DAY
,
0
);
specialDateCalendar
.
set
(
Calendar
.
MINUTE
,
0
);
specialDateCalendar
.
set
(
Calendar
.
SECOND
,
0
);
specialDateCalendar
.
set
(
Calendar
.
MILLISECOND
,
0
);
return
today
.
equals
(
specialDateCalendar
.
getTime
());
// 今天与specialDate相同
})
.
collect
(
Collectors
.
toList
());
if
(
CollectionUtil
.
isNotEmpty
(
filteredList1
))
{
return
getSchemeIdFromFilteredList
(
filteredList1
);
}
// 再依据星期
// 获取今天是周几
Calendar
calendar
=
Calendar
.
getInstance
();
int
dayOfWeek
=
calendar
.
get
(
Calendar
.
DAY_OF_WEEK
);
// Java Calendar 类中,周日为1,周一为2,依此类推。转换为(周一为1,周二为2... 周日为7)
int
convertedDayOfWeek
=
dayOfWeek
==
1
?
7
:
dayOfWeek
-
1
;
// 筛选出与今天星期相同的记录
List
<
CrossAllSchemesDTO
>
filteredListWeek
=
dtoList
.
stream
()
.
filter
(
dto
->
dto
.
getWeek
()
==
convertedDayOfWeek
)
.
collect
(
Collectors
.
toList
());
if
(
CollectionUtil
.
isNotEmpty
(
filteredListWeek
))
{
return
getSchemeIdFromFilteredList
(
filteredListWeek
);
}
return
null
;
}
private
static
Integer
getSchemeIdFromFilteredList
(
List
<
CrossAllSchemesDTO
>
filteredListWeek
)
{
// 获取当前系统时间的小时和分钟
LocalTime
now
=
LocalTime
.
now
();
Optional
<
CrossAllSchemesDTO
>
result
=
filteredListWeek
.
stream
()
.
filter
(
dto
->
{
LocalTime
start
=
LocalTime
.
parse
(
dto
.
getStartTime
());
// 将 startTime 转换为 LocalTime
LocalTime
end
=
LocalTime
.
parse
(
dto
.
getEndTime
());
// 将 endTime 转换为 LocalTime
return
(
now
.
isAfter
(
start
)
||
now
.
equals
(
start
))
&&
now
.
isBefore
(
end
);
// 判断当前时间是否在 startTime 和 endTime 之间
})
.
findFirst
();
// 只会有一个元素
CrossAllSchemesDTO
targetDto
=
result
.
get
();
return
targetDto
.
getSchemeId
();
}
/**
* 构造方案列表
*
...
...
wj-databus/src/main/java/net/wanji/databus/dao/mapper/BaseCrossSectionMapper.java
View file @
85c4f39b
...
...
@@ -2,6 +2,7 @@ package net.wanji.databus.dao.mapper;
import
net.wanji.databus.dao.entity.CrossSectionPO
;
import
net.wanji.databus.dao.entity.CrossSectionPOExt
;
import
net.wanji.databus.dto.CrossAllSchemesDTO
;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.stereotype.Repository
;
...
...
@@ -41,4 +42,6 @@ public interface BaseCrossSectionMapper {
CrossSectionPO
selectbyStartTimeCrossIdPlanId
(
String
startTime
,
String
crossId
,
Integer
planId
);
List
<
CrossSectionPOExt
>
selectByCrossIdsAndStartTime
(
String
startTime
,
List
<
String
>
crossList
);
List
<
CrossAllSchemesDTO
>
selectCrossAllSchemes
(
String
crossId
);
}
wj-databus/src/main/java/net/wanji/databus/dto/CrossAllSchemesDTO.java
0 → 100644
View file @
85c4f39b
package
net
.
wanji
.
databus
.
dto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @author hfx
* @date 2023/1/12 9:15
* @desc 路口方向
*/
@Data
public
class
CrossAllSchemesDTO
{
@ApiModelProperty
(
value
=
"路口ID"
)
private
String
crossId
;
@ApiModelProperty
(
value
=
"开始时间"
)
private
String
startTime
;
@ApiModelProperty
(
value
=
"结束时间"
)
private
String
endTime
;
@ApiModelProperty
(
value
=
"方案ID"
)
private
Integer
schemeId
;
@ApiModelProperty
(
value
=
"计划名称"
)
private
String
planName
;
@ApiModelProperty
(
value
=
"调度ID"
)
private
Integer
schedulesId
;
@ApiModelProperty
(
value
=
"星期"
)
private
Integer
week
;
@ApiModelProperty
(
value
=
"特殊日期"
)
private
Date
specialDate
;
@ApiModelProperty
(
value
=
"调度名称"
)
private
String
schedulesName
;
}
wj-databus/src/main/resources/mapper/BaseCrossSectionMapper.xml
View file @
85c4f39b
...
...
@@ -114,5 +114,19 @@
</foreach>
</select>
<select
id=
"selectCrossAllSchemes"
resultType=
"net.wanji.databus.dto.CrossAllSchemesDTO"
>
SELECT t1.cross_id, t1.start_time, t1.end_time, t1.scheme_id, t2.name as planName, t3.schedules_id,
t3.week, t3.special_date, t4.name as scheduleName
FROM t_base_cross_section t1
JOIN t_base_cross_plan t2
JOIN t_base_cross_schedules_plan t3
JOIN t_base_cross_schedules t4
ON t1.plan_id = t2.id
AND t2.id = t3.plan_id
AND t3.schedules_id = t4.id
WHERE t1.cross_id = #{crossId}
AND t4.status = 1
</select>
</mapper>
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