Commit 3d7d72bc authored by duanruiming's avatar duanruiming

Merge remote-tracking branch 'origin/master'

parents d6d29ea4 951affee
......@@ -17,6 +17,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author hanbing
* @date 2023/01/04 16:10
......@@ -124,7 +126,22 @@ public class PlanSendController {
@ApiResponse(code = 200, message = "OK", response = SaveSchemeConfigDTO.PhaseListElement.class),
})
public JsonViewObject phaseListByTimeSingleRing(@RequestBody CrossIdAndTimeDTO crossIdAndTimeDTO) {
RingPhasePO ringPhasePO = planSendService.phaseListByTimeSingleRing(crossIdAndTimeDTO);
List<SaveSchemeConfigDTO.PhaseListElement> phaseListByTime
= planSendService.phaseListByTimeSingleRing(crossIdAndTimeDTO);
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
return jsonViewObject.success(phaseListByTime);
}
@AspectLog(description = "根据当前时间返回相位列表-方案优化对比", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "根据当前时间返回相位列表-方案优化对比)", notes = "根据当前时间返回相位列表-方案优化对比")
@PostMapping("/phaseListByTimeSingleRingNew")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = SaveSchemeConfigDTO.PhaseListElement.class),
})
public JsonViewObject phaseListByTimeSingleRingNew(@RequestBody CrossIdAndTimeDTO crossIdAndTimeDTO) {
RingPhasePO ringPhasePO = planSendService.phaseListByTimeSingleRingNew(crossIdAndTimeDTO);
JsonViewObject jsonViewObject = JsonViewObject.newInstance();
return jsonViewObject.success(ringPhasePO);
......
......@@ -2,13 +2,12 @@ package net.wanji.web.service;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.databus.bo.CrossIdBO;
import net.wanji.web.dto.CrossIdAndPhaseIdsDTO;
import net.wanji.web.dto.CrossIdAndTimeDTO;
import net.wanji.web.dto.ScheduleIdDTO;
import net.wanji.web.dto.SchemeIdDTO;
import net.wanji.web.dto.*;
import net.wanji.web.po.RingPhasePO;
import net.wanji.web.vo.PhaseListByTimeVO;
import java.util.List;
/**
* @author Kent HAN
* @date 2022/11/3 16:14
......@@ -32,7 +31,9 @@ public interface PlanSendService {
PhaseListByTimeVO phaseListByTime(CrossIdAndTimeDTO crossIdAndTimeDTO);
RingPhasePO phaseListByTimeSingleRing(CrossIdAndTimeDTO crossIdAndTimeDTO);
// RingPhasePO phaseListByTimeSingleRing(CrossIdAndTimeDTO crossIdAndTimeDTO);
RingPhasePO phaseListByTimeSingleRingNew(CrossIdAndTimeDTO crossIdAndTimeDTO);
List<SaveSchemeConfigDTO.PhaseListElement> phaseListByTimeSingleRing(CrossIdAndTimeDTO crossIdAndTimeDTO);
/**
* 下发数据到utc数据库
......
......@@ -624,7 +624,7 @@ public class PlanSendServiceImpl implements PlanSendService {
}
@Override
public RingPhasePO phaseListByTimeSingleRing(CrossIdAndTimeDTO crossIdAndTimeDTO) {
public RingPhasePO phaseListByTimeSingleRingNew(CrossIdAndTimeDTO crossIdAndTimeDTO) {
RingPhasePO ringPhasePO = new RingPhasePO();
List<SaveSchemeConfigDTO.PhaseListElement> oriPhaseList = new ArrayList<>();
List<SaveSchemeConfigDTO.PhaseListElement> optPhaseList = new ArrayList<>();
......@@ -727,6 +727,26 @@ public class PlanSendServiceImpl implements PlanSendService {
return ringPhasePO;
}
@Override
public List<SaveSchemeConfigDTO.PhaseListElement> phaseListByTimeSingleRing(CrossIdAndTimeDTO crossIdAndTimeDTO) {
List<SaveSchemeConfigDTO.PhaseListElement> phaseListByTime = new ArrayList<>();
PhaseListByTimeVO phaseListByTimeVO = phaseListByTime(crossIdAndTimeDTO);
SaveSchemeConfigDTO.PhaseScheme phaseScheme = phaseListByTimeVO.getPhaseScheme();
if (phaseScheme != null) {
List<SaveSchemeConfigDTO.RingListElement> ringList = phaseScheme.getRingList();
SaveSchemeConfigDTO.RingListElement ringListElement = ringList.get(0);
List<SaveSchemeConfigDTO.GroupListElement> groupList = ringListElement.getGroupList();
for (SaveSchemeConfigDTO.GroupListElement groupListElement : groupList) {
List<SaveSchemeConfigDTO.PhaseListElement> phaseList = groupListElement.getPhaseList();
phaseListByTime.addAll(phaseList);
}
}
return phaseListByTime;
}
private PhaseListByTimeVO getPhaseListByTimeVO(String planName, Date datetime, RunningPlanDTO runningPlanDTO,
CrossIdBO crossIdBO) {
PhaseListByTimeVO phaseListByTimeVO = new PhaseListByTimeVO();
......
......@@ -144,6 +144,13 @@
<artifactId>commons-net</artifactId>
<version>3.7</version>
</dependency>
<!--swagger -start-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.4</version>
</dependency>
</dependencies>
<build>
......
......@@ -101,7 +101,7 @@ public class GreenwaveHistRestServer {
}
@GetMapping("/findUnCoordinateDirIndex")
@ApiOperation(httpMethod="GET",value="绿波非协调方向指标趋势", notes="")
@ApiOperation(httpMethod="GET",value="绿波非协调方向->指标趋势", notes="")
@ApiImplicitParams({
@ApiImplicitParam(name = "crossId", value = "路口ID", required = true, dataType = "String",defaultValue = "13MOD0B5SI0"),
@ApiImplicitParam(name = "greenDir", value = "绿波协调方向,多个逗号分隔", required = true, dataType = "String",defaultValue = "5,7"),
......@@ -126,4 +126,60 @@ public class GreenwaveHistRestServer {
return jsonView;
}
@GetMapping("/findGreenWaveCrossDirIndex")
@ApiOperation(httpMethod="GET",value="绿波路口方向级->分粒度指标趋势", notes="")
@ApiImplicitParams({
@ApiImplicitParam(name = "crossId", value = "路口ID", required = true, dataType = "String",defaultValue = "13MOD0B5SI0"),
@ApiImplicitParam(name = "groupType", value = "时间粒度类型 1:15分钟粒度 2:30分钟粒度 3:小时粒度", required = true, dataType = "Integer",defaultValue = "1"),
@ApiImplicitParam(name = "startTime", value = "截止时间,格式:yyyy-MM-dd HH:mm:ss", required = false, dataType = "String",defaultValue = "2024-12-04 00:00:00"),
@ApiImplicitParam(name = "endTime", value = "截止时间,格式:yyyy-MM-dd HH:mm:ss", required = false, dataType = "String",defaultValue = "2024-12-05 00:00:00")
})
@ApiResponses({
@ApiResponse(code = 200, message = "成功", response = GreenwaveHist.class,
responseHeaders = {@ResponseHeader(name = "Content-Type", description = "application/json")})
})
public JsonViewObject findGreenWaveCrossDirIndex(String crossId, String startTime, String endTime,String groupType) {
JsonViewObject jsonView = JsonViewObject.newInstance();
try {
JSONObject list = greenwaveHistProvider.findGreenWaveCrossDirIndex(crossId,startTime,endTime,groupType);
jsonView.success(list);
} catch (DubboProviderException e) {
jsonView.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getAll error", this.getClass().getSimpleName(), e);
}
return jsonView;
}
@GetMapping("/findGreenWaveCrossIndex")
@ApiOperation(httpMethod="GET",value="绿波路口级->分粒度指标趋势", notes="")
@ApiImplicitParams({
@ApiImplicitParam(name = "crossId", value = "路口ID", required = true, dataType = "String",defaultValue = "13MOD0B5SI0"),
@ApiImplicitParam(name = "groupType", value = "时间粒度类型 1:15分钟粒度 2:30分钟粒度 3:小时粒度", required = true, dataType = "Integer",defaultValue = "1"),
@ApiImplicitParam(name = "startTime", value = "截止时间,格式:yyyy-MM-dd HH:mm:ss", required = false, dataType = "String",defaultValue = "2024-12-04 00:00:00"),
@ApiImplicitParam(name = "endTime", value = "截止时间,格式:yyyy-MM-dd HH:mm:ss", required = false, dataType = "String",defaultValue = "2024-12-05 00:00:00")
})
@ApiResponses({
@ApiResponse(code = 200, message = "成功", response = GreenwaveHist.class,
responseHeaders = {@ResponseHeader(name = "Content-Type", description = "application/json")})
})
public JsonViewObject findGreenWaveCrossIndex(String crossId, String startTime, String endTime,String groupType) {
JsonViewObject jsonView = JsonViewObject.newInstance();
try {
JSONObject list = greenwaveHistProvider.findGreenWaveCrossIndex(crossId,startTime,endTime,groupType);
jsonView.success(list);
} catch (DubboProviderException e) {
jsonView.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getAll error", this.getClass().getSimpleName(), e);
}
return jsonView;
}
}
......@@ -2,6 +2,8 @@ package net.wanji.opt.dao.mapper;
import net.wanji.common.framework.mapper.BaseInterfaceMapper;
import net.wanji.databus.po.CrossDataHistPO;
import net.wanji.databus.po.CrossDirDataHistPO;
import net.wanji.opt.entity.GreenwaveHist;
import java.util.List;
......@@ -37,5 +39,19 @@ public interface GreenwaveHistoryMapper extends BaseInterfaceMapper<GreenwaveHis
*/
List<GreenwaveHist> findUnCoordinateCrossIndex(Map<String,Object> params);
/**
* 绿波路口方向级指标查询
* @param params
* @return
*/
List<CrossDirDataHistPO> findGreenWaveCrossDirIndex(Map<String,Object> params);
/**
* 绿波路口级指标查询
* @param params
* @return
*/
List<CrossDataHistPO> findGreenWaveCrossIndex(Map<String,Object> params);
}
......@@ -3,6 +3,7 @@ package net.wanji.opt.service;
import com.alibaba.fastjson.JSONObject;
import net.wanji.common.framework.dubbointerface.BaseDubboInterface;
import net.wanji.common.framework.exception.DubboProviderException;
import net.wanji.databus.po.CrossDirDataHistPO;
import net.wanji.opt.entity.GreenwaveHist;
import java.util.List;
......@@ -18,7 +19,6 @@ import java.util.Map;
*/
public interface GreenwaveHistProvider extends BaseDubboInterface<GreenwaveHist> {
/**
*
* @param greenId
* @param startTime
* @param endTime
......@@ -30,6 +30,7 @@ public interface GreenwaveHistProvider extends BaseDubboInterface<GreenwaveHist>
/**
* 干线路口信息
*
* @param greenId
* @return
* @throws DubboProviderException
......@@ -38,13 +39,35 @@ public interface GreenwaveHistProvider extends BaseDubboInterface<GreenwaveHist>
/**
* 非协调方向路口指标统计
*
* @param crossId 路口ID
* @param greenDir 协调方向
* @param startTime 开始时间
* @param endTime 截止时间
* @return
*/
JSONObject findUnCoordinateCrossIndex(String crossId,String greenDir, String startTime, String endTime) throws DubboProviderException;
JSONObject findUnCoordinateCrossIndex(String crossId, String greenDir, String startTime, String endTime) throws DubboProviderException;
/**
* 路口方向级不同时间粒度指标分析
* @param crossId
* @param startTime
* @param endTime
* @param groupType
* @return
* @throws DubboProviderException
*/
JSONObject findGreenWaveCrossDirIndex(String crossId, String startTime, String endTime, String groupType) throws DubboProviderException;
/**
* 路口级不同时间粒度指标分析
* @param crossId
* @param startTime
* @param endTime
* @param groupType
* @return
* @throws DubboProviderException
*/
JSONObject findGreenWaveCrossIndex(String crossId, String startTime, String endTime, String groupType) throws DubboProviderException;
}
......@@ -7,6 +7,8 @@ import net.wanji.common.framework.dubbointerface.impl.BaseDubboInterfaceImpl;
import net.wanji.common.framework.exception.DubboProviderException;
import net.wanji.common.framework.mapper.BaseInterfaceMapper;
import net.wanji.common.utils.tool.DateUtil;
import net.wanji.databus.po.CrossDataHistPO;
import net.wanji.databus.po.CrossDirDataHistPO;
import net.wanji.opt.dao.mapper.GreenwaveHistoryMapper;
import net.wanji.opt.entity.GreenwaveHist;
import net.wanji.opt.service.GreenwaveHistProvider;
......@@ -163,4 +165,85 @@ public class GreenwaveHistProviderImpl extends BaseDubboInterfaceImpl<GreenwaveH
}
@Override
public JSONObject findGreenWaveCrossDirIndex(String crossId, String startTime, String endTime,String groupType) {
Map<String,Object> params = new HashMap<>();
params.put("crossId",crossId);
params.put("startDate",startTime);
params.put("endDate",endTime);
params.put("groupType",groupType);
List<CrossDirDataHistPO> list = greenwaveHistoryMapper.findGreenWaveCrossDirIndex(params);
list = list.stream().sorted(Comparator.comparing(o -> o.getStartTime())).collect(Collectors.toList());
//存放时段
Set<String> sortedSet = new TreeSet<>();
//存放所有进口数据
List<Map<String, Object>> allList = new ArrayList<>();
//按时间分组分组
Map<Integer, List<CrossDirDataHistPO>> groupByDir = list.stream().collect(Collectors.groupingBy(o -> o.getDirType(), TreeMap::new, Collectors.toList()));
List<Map<String, Object>> turnList = new ArrayList<>();
for (Map.Entry<Integer, List<CrossDirDataHistPO>> entry : groupByDir.entrySet()) {
Integer key = entry.getKey();
//按方向排序
List<CrossDirDataHistPO> value = entry.getValue().stream().sorted(Comparator.comparing(o -> o.getStartTime())).collect(Collectors.toList());
Map<String, Object> mapList = new HashMap<>();
mapList.put("direction", key);
mapList.put("list", value);
allList.add(mapList);
for (CrossDirDataHistPO po : value) {
Map<String, Object> turnMap = new HashMap<>();
turnMap.put("direction", po.getDirType());
if (!turnList.contains(turnMap)) {
turnList.add(turnMap);
}
//提取时间
sortedSet.add(DateUtil.formatDate(po.getStartTime(), "HH:mm"));
}
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("timeList", sortedSet);
jsonObject.put("dataList", allList);
jsonObject.put("dirList", groupByDir.keySet());
return jsonObject;
}
@Override
public JSONObject findGreenWaveCrossIndex(String crossId, String startTime, String endTime,String groupType) {
Map<String,Object> params = new HashMap<>();
params.put("crossId",crossId);
params.put("startDate",startTime);
params.put("endDate",endTime);
params.put("groupType",groupType);
List<CrossDataHistPO> list = greenwaveHistoryMapper.findGreenWaveCrossIndex(params);
list = list.stream().sorted(Comparator.comparing(o -> o.getStartTime())).collect(Collectors.toList());
//存放时段
Set<String> sortedSet = new TreeSet<>();
for (CrossDataHistPO po : list) {
//提取时间
sortedSet.add(DateUtil.formatDate(po.getStartTime(), "HH:mm"));
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("timeList", sortedSet);
jsonObject.put("dataList", list);
return jsonObject;
}
}
......@@ -38,6 +38,7 @@ import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.io.IOException;
import java.text.ParseException;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.ArrayList;
......@@ -171,12 +172,15 @@ public class InducesMonitorTask {
LambdaQueryWrapper<GreenwaveInducesHist> greenwaveInducesHistQueryWrapper = new LambdaQueryWrapper<>();
greenwaveInducesHistQueryWrapper.eq(GreenwaveInducesHist::getGreenId, greenwaveInfoPO.getId());
greenwaveInducesHistQueryWrapper.eq(GreenwaveInducesHist::getDir, getDir(greenOptHistEntity.getDir()));
GreenwaveInducesHist greenwaveInducesHist = greenwaveInducesHistService.getOne(greenwaveInducesHistQueryWrapper);
if (Objects.isNull(greenwaveInducesHist)) {
List<GreenwaveInducesHist> greenwaveInducesHistList = greenwaveInducesHistService.list(greenwaveInducesHistQueryWrapper);
GreenwaveInducesHist greenwaveInducesHist=null;
if (Objects.isNull(greenwaveInducesHistList) || greenwaveInducesHistList.size()<1) {
greenwaveInducesHist = new GreenwaveInducesHist();
greenwaveInducesHist.setCreateTime(new Date());
greenwaveInducesHist.setGreenId(greenwaveInfoPO.getId());
greenwaveInducesHist.setDir(getDir(greenOptHistEntity.getDir()));
}else{
greenwaveInducesHist=greenwaveInducesHistList.get(0);
}
greenwaveInducesHist.setStrategyId(strategyId.get());
greenwaveInducesHist.setStrategyName(greenwaveInfoPO.getName());//当前策略名称
......@@ -186,7 +190,7 @@ public class InducesMonitorTask {
greenwaveInducesHist.setType(greenOptHistEntity.getType());// 执行策略
greenwaveInducesHist.setMinSpeed(greenOptHistEntity.getMinSpeed());
greenwaveInducesHist.setMaxSpeed(greenOptHistEntity.getMaxSpeed());
greenwaveInducesHist.setDir(greenOptHistEntity.getDirType());
// greenwaveInducesHist.setDir(greenOptHistEntity.getDirType());
//5、获取绿波信息,调用上屏服务;发布互联网诱导方案
//[{"crossId":"13MOD0B5SI0","phaseStartTime":32.0,"phaseEndTime":122.0,"greenStartTime":35.0,"speed":"39.71","offset":208.0,"travelTime":57.0,"distance":"628.81"},{"crossId":"13MQJ0B5SI0","phaseStartTime":43.0,"phaseEndTime":158.0,"greenStartTime":0.0,"speed":"35.54","offset":69.0,"travelTime":42.0,"distance":"414.62"},{"crossId":"13MS20B5SI0","phaseStartTime":32.0,"phaseEndTime":142.0,"greenStartTime":8.0,"speed":"22.72","offset":114.0,"travelTime":116.0,"distance":"732.00"},{"crossId":"13MUK0B5SH0","phaseStartTime":0.0,"phaseEndTime":135.0,"greenStartTime":0.0,"speed":"42.33","offset":50.0,"travelTime":45.0,"distance":"529.16"},{"crossId":"13N0F0B5SH0","phaseStartTime":25.0,"phaseEndTime":156.0,"greenStartTime":70.0,"speed":"40.67","offset":0.0,"travelTime":40.0,"distance":"451.89"},{"crossId":"13N200B5SH0","phaseStartTime":23.0,"phaseEndTime":150.0,"greenStartTime":0.0,"speed":"-1.00","offset":112.0,"travelTime":-1.0,"distance":"-1.00"}]
// List<GreenBeltInfoVO.CrossGreenDetail> crossGreenDetailList = new ArrayList<>();
......@@ -195,8 +199,7 @@ public class InducesMonitorTask {
// } catch (JsonProcessingException e) {
// log.error("绿波详情转换失败:" + greenOptHistEntity.getGreenId() + "---" + e.getMessage());
// }
greenwaveInducesHistService.saveOrUpdate(greenwaveInducesHist);
//greenwaveInducesHistService.saveOrUpdate(greenwaveInducesHist);
////自动发送诱导消息
MessageParam messageParam = new MessageParam();
messageParam.setFlg(1);
......@@ -204,7 +207,7 @@ public class InducesMonitorTask {
messageParam.setContents(new String[]{greenOptHistEntity.getMaxSpeed()+"-"+greenOptHistEntity.getMaxSpeed()+"km/h"});
messageParam.setType("TFMH");
try {
if(greenwaveInducesHist.getStatus()==0||greenwaveInducesHist.getModifyTime()!=greenOptHistEntity.getCreateTime()) {
if(greenwaveInducesHist.getStatus()==0||greenwaveInducesHist.getModifyTime().before(greenOptHistEntity.getCreateTime())) {
LambdaQueryWrapper<GreenwaveInduces> greenwaveInducesQueryWrapper = new LambdaQueryWrapper<>();
greenwaveInducesQueryWrapper.eq(GreenwaveInduces::getGreenId, greenwaveInfoPO.getId());
List<GreenwaveInduces> greenwaveInducesList = greenwaveInducesService.list(greenwaveInducesQueryWrapper);
......@@ -229,16 +232,16 @@ public class InducesMonitorTask {
}
}
greenwaveInducesHist.setStatus(1);
greenwaveInducesHist.setModifyTime(greenOptHistEntity.getCreateTime());
greenwaveInducesHistService.saveOrUpdate(greenwaveInducesHist);
}
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
log.info("发送上屏信息异常" + e.getMessage());
}
greenwaveInducesHist.setModifyTime(greenOptHistEntity.getCreateTime());
greenwaveInducesHistService.saveOrUpdate(greenwaveInducesHist);
synCount.getAndIncrement();
log.info("同步绿波状态信息成功->" + greenwaveInfoPO.getName());
log.info("同步绿波状态信息成功->" + greenwaveInfoPO.getName()+greenOptHistEntity.getDir());
}
}
}
......@@ -300,37 +303,39 @@ public class InducesMonitorTask {
* @return
*/
private Integer getDir(String dirType) {
if (dirType=="e2w") { //东
if (dirType.equals("e2w")) { //东
return 4;
} else if (dirType=="s2n") {//南
} else if (dirType.equals("s2n")) {//南
return 1;
} else if (dirType=="w2e") {//西
} else if (dirType.equals("w2e")) {//西
return 2;
} else if (dirType=="n2s") {//北
} else if (dirType.equals("n2s")) {//北
return 3;
}
return null;
}
public static void main(String []args){
public static void main(String []args) throws ParseException {
// 获取当前时间
LocalTime now = LocalTime.now();
List<String> timesList=new ArrayList();
timesList.add("00:00");
timesList.add("23:59");
// 定义时间范围
LocalTime startTime = LocalTime.parse(timesList.get(0));
LocalTime endTime = LocalTime.parse(timesList.get(1));
// LocalTime now = LocalTime.now();
// List<String> timesList=new ArrayList();
// timesList.add("00:00");
// timesList.add("23:59");
// // 定义时间范围
// LocalTime startTime = LocalTime.parse(timesList.get(0));
// LocalTime endTime = LocalTime.parse(timesList.get(1));
//
// // 判断当前时间是否在范围内
// if (now.isAfter(startTime) && now.isBefore(endTime)) {
// System.out.println("当前时间在范围内: " + now);
// } else if (now.equals(startTime) || now.equals(endTime)) {
// System.out.println("当前时间恰好在范围边界: " + now);
// } else {
// System.out.println("当前时间不在范围内: " + now);
// }
// 判断当前时间是否在范围内
if (now.isAfter(startTime) && now.isBefore(endTime)) {
System.out.println("当前时间在范围内: " + now);
} else if (now.equals(startTime) || now.equals(endTime)) {
System.out.println("当前时间恰好在范围边界: " + now);
} else {
System.out.println("当前时间不在范围内: " + now);
}
System.out.print(new Date().before(DateUtil.parse("2024-12-04", Constants.DATE_FORMAT.E_DATE_FORMAT_DAY)));
}
}
......@@ -39,7 +39,7 @@
</sql>
<!-- 绿波路口查询 -->
<select id="findGreenCross" resultType="map">
select a.green_id greenId, a.cross_id crossId, b.`name` crossName,a.in_dir inDir
select a.green_id greenId, a.cross_id crossId, b.`name` crossName, a.in_dir inDir
from t_greenwave_cross a
join t_base_cross_info b on a.cross_id = b.id
where green_id = #{greenId}
......@@ -68,27 +68,109 @@
<!-- 查看非协调方向路口指标 -->
<select id="findUnCoordinateCrossIndex" resultMap="BaseResultMap">
SELECT
t.cross_id ,t.direction, MAX(t.queue_length) queue_length,round(avg(stop_times),2) stop_times,DATE_FORMAT(t.start_time,'%Y-%m-%d %H:%i:00') start_time
FROM
(
SELECT
cross_id,
SELECT t.cross_id,
t.direction,
MAX(t.queue_length) queue_length,
round(avg(stop_times), 2) stop_times,
DATE_FORMAT(t.start_time, '%Y-%m-%d %H:%i:00') start_time
FROM (
SELECT cross_id,
dir_type direction,
queue_length,
stop_times,
start_time
FROM
t_cross_dir_data_hist a
WHERE
cross_id = #{crossId}
FROM t_cross_dir_data_hist a
WHERE cross_id = #{crossId}
AND dir_type not in (#{greenDir})
AND start_time BETWEEN #{startDate}
AND #{endDate}
) t
GROUP BY t.cross_id,DATE_FORMAT(start_time,'%Y-%m-%d %H:%i:00')
GROUP BY t.cross_id, DATE_FORMAT(start_time, '%Y-%m-%d %H:%i:00')
;
</select>
<!-- 绿波路口方向级指标趋势,支持按15分钟粒度、30分钟粒度、1小时粒度汇聚 -->
<select id="findGreenWaveCrossDirIndex"
resultMap="net.wanji.databus.dao.mapper.CrossDirDataHistMapper.BaseResultMap">
SELECT MIN(start_time) start_time,
cross_id,
dir_type,
round(AVG(traffic_index),2),
SUM(flow) flow,
round(AVG(speed),2) speed,
MAX(queue_length) queue_length,
round(AVG(stop_times),2) stop_times,
round(AVG(delay_time),2) delay_time,
round(AVG(sturation),4) sturation
FROM
(
SELECT start_time,
(case
when #{groupType}=1 then CEIL(UNIX_TIMESTAMP(DATE_ADD(t.start_time,INTERVAL 5 MINUTE)) / 900)
when #{groupType}=2 then CEIL(UNIX_TIMESTAMP(DATE_ADD(t.start_time,INTERVAL 5 MINUTE)) / 1800)
when #{groupType}=3 then CEIL(UNIX_TIMESTAMP(DATE_ADD(t.start_time,INTERVAL 5 MINUTE)) / 3600)
end
) unit_time,
cross_id,
dir_type,
(traffic_index) traffic_index,
(flow) flow,
(speed) speed,
(queue_length) queue_length,
(stop_times) stop_times,
(delay_time) delay_time,
(sturation) sturation
FROM t_cross_dir_data_hist t
where 1=1
<if test="crossId!=null and crossId !=''">
and cross_id = #{crossId}
</if>
<if test="startDate !=null and endDate !=null">
AND start_time >= #{startDate} and start_time &lt; #{endDate}
</if>
) t
GROUP BY t.cross_id,t.dir_type,unit_time
</select>
<!-- 绿波路口级指标趋势,支持按15分钟粒度、30分钟粒度、1小时粒度汇聚 -->
<select id="findGreenWaveCrossIndex" resultMap="net.wanji.databus.dao.mapper.CrossDataHistMapper.BaseResultMap">
SELECT MIN(start_time) start_time,
cross_id,
AVG(traffic_index),
SUM(flow) flow,
round(AVG(speed),2) speed,
MAX(queue_length) queue_length,
round(AVG(stop_times),2) stop_times,
round(AVG(delay_time),0) delay_time,
round(AVG(sturation),4) sturation
FROM
(
SELECT start_time,
(case
when #{groupType}=1 then CEIL(UNIX_TIMESTAMP(DATE_ADD(t.start_time,INTERVAL 5 MINUTE)) / 900)
when #{groupType}=2 then CEIL(UNIX_TIMESTAMP(DATE_ADD(t.start_time,INTERVAL 5 MINUTE)) / 1800)
when #{groupType}=3 then CEIL(UNIX_TIMESTAMP(DATE_ADD(t.start_time,INTERVAL 5 MINUTE)) / 3600)
end
) unit_time,
cross_id,
(traffic_index) traffic_index,
(flow) flow,
(speed) speed,
(queue_length) queue_length,
(stop_times) stop_times,
(delay_time) delay_time,
(sturation) sturation
FROM t_cross_data_hist t
where 1=1
<if test="crossId!=null and crossId !=''">
and cross_id = #{crossId}
</if>
<if test="startDate !=null and endDate !=null">
AND start_time >= #{startDate} and start_time &lt; #{endDate}
</if>
) t
GROUP BY t.cross_id,unit_time
</select>
<!--新增操作 -->
<insert id="save" parameterType="net.wanji.opt.entity.GreenwaveHist">
......
package net.wanji.databus.po;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
......@@ -42,6 +44,8 @@ public class CrossDataRealtimePO {
* 开始时间:yyyy-MM-dd HH;mm:ss
*/
@ApiModelProperty(value = "开始时间:yyyy-MM-dd HH:mm:ss", notes = "")
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date startTime;
@ApiModelProperty(value = "结束时间:yyyy-MM-dd HH:mm:ss", notes = "")
......
package net.wanji.databus.po;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
......@@ -30,6 +32,8 @@ public class CrossDirDataRealtimePO {
@ApiModelProperty(name = "交通指数",notes = "")
public Double trafficIndex;
@ApiModelProperty(name = "开始时间",notes = "")
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
public Date startTime;
@ApiModelProperty(name = "通行能力",notes = "")
public Integer capacity;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment