Commit 70ffd196 by 黄准

车道指标相关计算逻辑

parent 6bb3ebdf
......@@ -69,6 +69,16 @@
<artifactId>lombok</artifactId>
<version>1.18.20</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table-api-java</artifactId>
<version>1.12.1</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table-api-java-bridge_2.11</artifactId>
<version>1.12.0</version>
</dependency>
</dependencies>
</project>
......@@ -16,9 +16,9 @@ public class Cycle {
//信控机编号
private String signalCode;
// 周期开始时间
private Date beginDateTime;
private String beginDateTime;
// 周期结束时间
private Date endDateTime;
private String endDateTime;
// 开始模式编码
private String beginControlModelCode;
// 结束模式编码
......@@ -30,7 +30,7 @@ public class Cycle {
// 周期时长,单位 秒
private int duration;
// 周期序号
private int cycleOrder;
private Long cycleOrder;
//绿信比
private Double greenRatio;
//损失时间
......@@ -54,19 +54,19 @@ public class Cycle {
this.crossCode = crossCode;
}
public Date getBeginDateTime() {
public String getBeginDateTime() {
return beginDateTime;
}
public void setBeginDateTime(Date beginDateTime) {
public void setBeginDateTime(String beginDateTime) {
this.beginDateTime = beginDateTime;
}
public Date getEndDateTime() {
public String getEndDateTime() {
return endDateTime;
}
public void setEndDateTime(Date endDateTime) {
public void setEndDateTime(String endDateTime) {
this.endDateTime = endDateTime;
}
......@@ -78,11 +78,11 @@ public class Cycle {
this.duration = duration;
}
public int getCycleOrder() {
public Long getCycleOrder() {
return cycleOrder;
}
public void setCycleOrder(int cycleOrder) {
public void setCycleOrder(Long cycleOrder) {
this.cycleOrder = cycleOrder;
}
......
package com.zhht.irn.entity;
import lombok.Data;
import java.util.List;
/**
* @Description: 方向指标
* @Author :Marinh
* @Param:
* @retrun:
* @Creat :2022-10-29-20:47
**/
@Data
public class DirectionNorm extends LaneNorm{
}
......@@ -11,22 +11,28 @@ public class LaneNorm extends Stage{
private String corssId;
//车道编号
private String laneId;
//车道名称
private String laneName;
//车道可视长度
private Integer laneLength;
//相位编号
private String phaseId;
//方向
private String direction;
//交通流量
private String trafficCapacity;
private Double trafficCapacity;
//最大排队长度
private String maxQueueLength;
private Integer maxQueueLength;
//有效绿灯时间
private String effectGreenTime;
//通行能力
private String passCapacity;
private Double passCapacity;
//饱和度
private String saturation;
private Double saturation;
//剩余承载力
private String residualCapacity;
private Double residualCapacity;
//识别空间占有率
private String spotSpaceShare;
//层级
private Integer order;
}
package com.zhht.irn.entity;
import java.util.Date;
import java.util.List;
/**
* 相位实体类
......@@ -14,9 +15,9 @@ public class Stage {
// 相位编号
private String phaseValue;
// 相位开始时间
private Date beginDateTime;
private String beginDateTime;
// 相位结束时间
private Date endDateTime;
private String endDateTime;
// 开始模式编码
private String beginControlModelCode;
// 结束模式编码
......@@ -39,9 +40,19 @@ public class Stage {
private Double greenRatio;
// 阶段有效绿灯时长
private int validGreen;
//损失时间
private int lossTime;
//相位允许通行的方向
private List<StageForDirection> stageForDirectionList;
public List<StageForDirection> getStageForDirectionList() {
return stageForDirectionList;
}
public void setStageForDirectionList(List<StageForDirection> stageForDirectionList) {
this.stageForDirectionList = stageForDirectionList;
}
public String getPhaseValue() {
return phaseValue;
......@@ -131,19 +142,19 @@ public class Stage {
this.lossTime = lossTime;
}
public Date getBeginDateTime() {
public String getBeginDateTime() {
return beginDateTime;
}
public void setBeginDateTime(Date beginDateTime) {
public void setBeginDateTime(String beginDateTime) {
this.beginDateTime = beginDateTime;
}
public Date getEndDateTime() {
public String getEndDateTime() {
return endDateTime;
}
public void setEndDateTime(Date endDateTime) {
public void setEndDateTime(String endDateTime) {
this.endDateTime = endDateTime;
}
......
package com.zhht.irn.entity;
import lombok.Data;
import java.util.List;
import java.util.Map;
/**
* 相位实体类
*/
@Data
public class StageForDirection{
private String direction;
private String traffic_flow_direction;
}
......@@ -23,16 +23,16 @@ public class TravelEvent {
private String recordId;
// 记录时间
private Date recordTime;
private String recordTime;
// 事件发生时车道ID
private Long eventLineId;
private String eventLineId;
// 事件发生时速度
private Double eventSpeed;
// 事件时间
private Date eventTime;
private String eventTime;
// 事件类型
private EventType eventType;
......@@ -40,6 +40,26 @@ public class TravelEvent {
// 备注
private String remark;
private String arrayTime;
private String inCorssTime;
public String getArrayTime() {
return arrayTime;
}
public void setArrayTime(String arrayTime) {
this.arrayTime = arrayTime;
}
public String getInCorssTime() {
return inCorssTime;
}
public void setInCorssTime(String inCorssTime) {
this.inCorssTime = inCorssTime;
}
public Integer getId() {
return id;
}
......@@ -64,19 +84,11 @@ public class TravelEvent {
this.recordId = recordId;
}
public Date getRecordTime() {
return recordTime;
}
public void setRecordTime(Date recordTime) {
this.recordTime = recordTime;
}
public Long getEventLineId() {
public String getEventLineId() {
return eventLineId;
}
public void setEventLineId(Long eventLineId) {
public void setEventLineId(String eventLineId) {
this.eventLineId = eventLineId;
}
......@@ -88,11 +100,19 @@ public class TravelEvent {
this.eventSpeed = eventSpeed;
}
public Date getEventTime() {
public String getRecordTime() {
return recordTime;
}
public void setRecordTime(String recordTime) {
this.recordTime = recordTime;
}
public String getEventTime() {
return eventTime;
}
public void setEventTime(Date eventTime) {
public void setEventTime(String eventTime) {
this.eventTime = eventTime;
}
......
......@@ -49,11 +49,11 @@ public class LaneMetricJob {
// 旅行事件数据流的 watermark 生成逻辑
WatermarkStrategy<TravelEvent> travelEventWatermarkStrategy = WatermarkStrategy.<TravelEvent>forBoundedOutOfOrderness(Duration.ofSeconds(30))
.withTimestampAssigner((travelEvent, timestamp) -> travelEvent.getEventTime().getTime());
.withTimestampAssigner((travelEvent, timestamp) -> DateUtils.dateToStamp(travelEvent.getEventTime()));
// 周期结束数据流的 cycle 生成逻辑
WatermarkStrategy<Cycle> cycleWatermarkStrategy = WatermarkStrategy.<Cycle>forBoundedOutOfOrderness(Duration.ofSeconds(10))
.withTimestampAssigner((cycle, timeStamp) -> cycle.getBeginDateTime().getTime());
.withTimestampAssigner((cycle, timeStamp) -> DateUtils.dateToStamp(cycle.getBeginDateTime()));
// 获取实时旅行事件数据流
// DataStream<TravelEvent> eventStream = FlinkUtils.createKafkaStream(args, env)
......@@ -75,7 +75,6 @@ public class LaneMetricJob {
.map((record) -> {
System.out.println(record);
Cycle cycle = JSON.parseObject(record, Cycle.class);
System.out.println(cycle);
return cycle;
})
// 给数据流添加水印
......
......@@ -52,10 +52,10 @@ public class GreenRadioSink extends RichSinkFunction<Cycle> {
insertCyclePstmt.setLong(1, cycle.getId());
insertCyclePstmt.setString(2, cycle.getCrossCode());
insertCyclePstmt.setString(3, cycle.getSignalCode());
insertCyclePstmt.setString(4, DateUtils.dateToString(cycle.getBeginDateTime(), "yyyy-MM-DD HH:mm:ss"));
insertCyclePstmt.setString(5, DateUtils.dateToString(cycle.getEndDateTime(), "yyyy-MM-DD HH:mm:ss"));
insertCyclePstmt.setString(4, cycle.getBeginDateTime());
insertCyclePstmt.setString(5, cycle.getEndDateTime());
insertCyclePstmt.setInt(6,cycle.getDuration());
insertCyclePstmt.setInt(7,cycle.getCycleOrder());
insertCyclePstmt.setLong(7,cycle.getCycleOrder());
insertCyclePstmt.setDouble(8,cycle.getGreenRatio());
insertCyclePstmt.setInt(9,cycle.getLossTime());
insertCyclePstmt.setString(10, DateUtils.getTodayTime());
......@@ -66,8 +66,8 @@ public class GreenRadioSink extends RichSinkFunction<Cycle> {
insertPhasePstmt.setLong(1,cycle.getCycleOrder());
insertPhasePstmt.setString(2,phase.getCrossCode());
insertPhasePstmt.setString(3,phase.getPhaseValue());
insertCyclePstmt.setString(4, DateUtils.dateToString(cycle.getBeginDateTime(), "yyyy-MM-DD HH:mm:ss"));
insertCyclePstmt.setString(5, DateUtils.dateToString(cycle.getEndDateTime(), "yyyy-MM-DD HH:mm:ss"));
insertCyclePstmt.setString(4, cycle.getBeginDateTime());
insertCyclePstmt.setString(5, cycle.getEndDateTime());
insertPhasePstmt.setInt(6,cycle.getDuration());
insertPhasePstmt.setInt(7,phase.getPhaseOrder());
insertPhasePstmt.setDouble(8,phase.getGreenRatio());
......
package com.zhht.irn.sink;
import com.zhht.irn.entity.LaneNorm;
import com.zhht.irn.utils.DateUtils;
import com.zhht.irn.utils.MySQLUtils;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.configuration.Configuration;
......@@ -30,15 +31,15 @@ public class LaneNormSink extends RichSinkFunction<LaneNorm> {
// path暂定为固定值
String path = "E:\\zhht\\ZHHT-IRN-BD-ANALYSIS\\realtime\\hologram-streaming\\src\\main\\resources\\mysql.properties";
connection = MySQLUtils.getConnection(path);
insertPstmt = connection.prepareStatement("insert into wyf_test(cross_code,lxb) values (?,?)");
updatePstmt = connection.prepareStatement("update wyf_test set lxb=? where cross_code=?");
insertPstmt = connection.prepareStatement("insert into " +
"app_cross_lane_norm(cross_id,lane_id,direction,cycle_id,max_queue_length,effect_green_time,pass_capacity,traffic_capacity,saturation,residual_capacity," +
"spot_space_share,lane_name,`order`,update_time) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
}
@Override
public void close() throws Exception {
super.close();
if(insertPstmt != null) insertPstmt.close();
if(updatePstmt != null) updatePstmt.close();
if(connection != null) connection.close();
}
......@@ -49,6 +50,20 @@ public class LaneNormSink extends RichSinkFunction<LaneNorm> {
*/
@Override
public void invoke(LaneNorm value, SinkFunction.Context context) throws Exception {
insertPstmt.setString(1, value.getCorssId());
insertPstmt.setString(2, value.getLaneId());
insertPstmt.setString(3, value.getDirection());
insertPstmt.setLong(4, value.getCycleOrder());
insertPstmt.setDouble(5, value.getMaxQueueLength());
insertPstmt.setString(6,value.getEffectGreenTime());
insertPstmt.setDouble(7,value.getPassCapacity());
insertPstmt.setDouble(8,value.getTrafficCapacity());
insertPstmt.setDouble(9,value.getSaturation());
insertPstmt.setDouble(10,value.getResidualCapacity());
insertPstmt.setString(11,value.getSpotSpaceShare());
insertPstmt.setString(12,value.getLaneName());
insertPstmt.setInt(13,value.getOrder());
insertPstmt.setString(14, DateUtils.getTodayTime());
insertPstmt.execute();
}
}
......@@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSON;
import com.zhht.irn.entity.Car;
import com.zhht.irn.entity.Cycle;
import com.zhht.irn.entity.Stage;
import com.zhht.irn.entity.TravelEvent;
import com.zhht.irn.enums.EventType;
import com.zhht.irn.utils.DateUtils;
import org.apache.flink.streaming.api.functions.source.SourceFunction;
......@@ -17,54 +19,52 @@ import java.util.*;
* @retrun:
* @Creat :2022-11-01-14:40
**/
public class CarSource implements SourceFunction<Car> {
public class CarSource implements SourceFunction<TravelEvent> {
private static boolean isRunning = true;
public static String[] lanePosition= new String[]{"南左转","南直行","南右转","北左转","北直行","北右转","东左转","东直行","东右转","西左转","西直行","西右转"};
public static String[] inlane= new String[]{"1","2","3","4","5","6","7","8","9","10","11","12"};
public static String[] inlane= new String[]{"01","02","03","04","05","06","07","08","09","10","11","12"};
public static String[] status= new String[]{"arrived","inCross","outCross","away"};
@Override
public void run(SourceContext<Car> sourceContext) throws Exception {
public void run(SourceContext<TravelEvent> sourceContext) throws Exception {
while (isRunning){
Calendar beforeTime = Calendar.getInstance();
Date date = new Date();
List<Car> cars = getCar(beforeTime, date);
for (Car car:cars){
List<TravelEvent> cars = getCar(date);
for (TravelEvent car:cars){
sourceContext.collect(car);
}
//每个3秒发送一条数据
Thread.sleep(10);
Thread.sleep(2000);
}
}
public static List<Car> getCar(Calendar beforeTime,Date date){
public static List<TravelEvent> getCar(Date date){
Calendar aftertime = Calendar.getInstance();
Date date1 = new Date();
//模拟到达事件
List<Car> cars = new ArrayList<>();
List<TravelEvent> cars = new ArrayList<>();
String uuid = UUID.randomUUID()+"";
String carId = UUID.randomUUID()+"";
String inLaneId = inlane[new Random().nextInt(12)];
Car arraycar = new Car();
TravelEvent arraycar = new TravelEvent();
arraycar.setRecordId(uuid);
arraycar.setCrossId("13070201");
arraycar.setEvenTime(DateUtils.formatTime(date1));
arraycar.setCrossId("13070202");
arraycar.setEventTime(DateUtils.formatTime(date1));
arraycar.setEventLineId(inLaneId);
arraycar.setEventSpeed(new Random().nextInt(60)+"");
arraycar.setEventType("arrived");
arraycar.setId(carId);
arraycar.setEventSpeed(55.5);
arraycar.setEventType(EventType.ARRIVED);
arraycar.setId(0);
cars.add(arraycar);
//模拟进入路口事件
String afterTimeSecond = DateUtils.getAfterTimeSecond(aftertime, new Random().nextInt(180));
Car incrosscar = new Car();
incrosscar.setCrossId("13070201");
incrosscar.setEvenTime(afterTimeSecond);
String afterTimeSecond = DateUtils.getAfterTimeSecond(new Random().nextInt(140));
TravelEvent incrosscar = new TravelEvent();
incrosscar.setCrossId("13070202");
incrosscar.setEventTime(afterTimeSecond);
incrosscar.setEventLineId(inLaneId);
incrosscar.setRecordId(uuid);
incrosscar.setId(carId);
incrosscar.setEventSpeed(new Random().nextInt(60)+"");
incrosscar.setEventType("inCross");
incrosscar.setId(0);
incrosscar.setEventSpeed(55.2);
incrosscar.setEventType(EventType.INCROSS);
cars.add(incrosscar);
return cars;
}
......
//package com.zhht.irn.source;
//
//import com.alibaba.fastjson.JSON;
//import com.zhht.irn.entity.Cycle;
//import com.zhht.irn.entity.Stage;
//import com.zhht.irn.utils.DateUtils;
//import org.apache.flink.streaming.api.functions.source.SourceFunction;
//import org.apache.flink.util.TimeUtils;
//
//import java.sql.Timestamp;
//import java.util.*;
//
///**
// * @Description:
// * @Author :Marinh
// * @Param:
// * @retrun:
// * @Creat :2022-11-01-14:40
// **/
//public class CirlceSource implements SourceFunction<Cycle> {
// private static boolean isRunning = true;
// private static int i = 0;
//
// @Override
// public void run(SourceFunction.SourceContext<Cycle> sourceContext) throws Exception {
// while (isRunning){
// Calendar beforeTime = Calendar.getInstance();
// Date date = new Date();
// sourceContext.collect(getCycle(beforeTime,date));
// //每个3秒发送一条数据
// Thread.sleep(60000);
// }
// }
//
// public static Cycle getCycle(Calendar beforeTime,Date date){
// Cycle cycle = new Cycle();
// cycle.setId(new Timestamp(System.currentTimeMillis()).getTime());
// cycle.setCrossCode("13070201");
// cycle.setBeginDateTime(DateUtils.getBeforeTime(beforeTime,2));//2分钟一个周期
// cycle.setEndDateTime(DateUtils.formatTime(date));
// cycle.setDuration(120);
// cycle.setCycleOrder(1);
// ArrayList<Stage> phases = new ArrayList<>();
// for(int i=0;i<3;i++){
// Stage phase = new Stage();
// phase.setPhaseValue("10"+i);
// if(i==0){
// phase.setPhaseValue("1");
// phase.setBeginTime(DateUtils.getBeforeTimeSecond(beforeTime,120));
// phase.setEndTime(DateUtils.getBeforeTimeSecond(beforeTime,90));
// phase.setDuration(30);
// phase.setGreen(30);
// phase.setAllRed(87);
// phase.setGreen(3);
// }
// if(i==1){
// phase.setPhaseValue("2");
// phase.setBeginTime(DateUtils.getBeforeTimeSecond(beforeTime,90));
// phase.setEndTime(DateUtils.getBeforeTimeSecond(beforeTime,60));
// phase.setDuration(30);
// phase.setGreen(30);
// phase.setAllRed(87);
// phase.setGreen(3);
// }
// if(i==2){
// phase.setPhaseValue("3");
// phase.setBeginTime(DateUtils.getBeforeTimeSecond(beforeTime,60));
// phase.setEndTime(DateUtils.getBeforeTimeSecond(beforeTime,0));
// phase.setDuration(60);
// phase.setGreen(60);
// phase.setAllRed(57);
// phase.setGreen(3);
// }
// phases.add(phase);
// }
// cycle.setStageList(phases);
// return cycle;
// }
//
// @Override
// public void cancel() {
// isRunning=false;
// }
//
//}
package com.zhht.irn.source;
import com.alibaba.fastjson.JSON;
import com.zhht.irn.entity.Cycle;
import com.zhht.irn.entity.Stage;
import com.zhht.irn.utils.DateUtils;
import org.apache.flink.streaming.api.functions.source.SourceFunction;
import org.apache.flink.util.TimeUtils;
import java.sql.Timestamp;
import java.util.*;
/**
* @Description:
* @Author :Marinh
* @Param:
* @retrun:
* @Creat :2022-11-01-14:40
**/
public class CirlceSource implements SourceFunction<Cycle> {
private static boolean isRunning = true;
private static Long cycleOrder = 0L;
@Override
public void run(SourceFunction.SourceContext<Cycle> sourceContext) throws Exception {
while (isRunning){
//每个3秒发送一条数据
Thread.sleep(120000);
Calendar beforeTime = Calendar.getInstance();
Date date = new Date();
sourceContext.collect(getCycle(beforeTime,date));
cycleOrder++;
}
}
public static Cycle getCycle(Calendar beforeTime,Date date){
Cycle cycle = new Cycle();
cycle.setId(new Timestamp(System.currentTimeMillis()).getTime());
cycle.setCrossCode("13070202");
cycle.setBeginDateTime(DateUtils.getBeforeTime(beforeTime,2));//2分钟一个周期
cycle.setEndDateTime(DateUtils.formatTime(date));
cycle.setDuration(120);
cycle.setCycleOrder(cycleOrder);
ArrayList<Stage> phases = new ArrayList<>();
for(int i=0;i<4;i++){
Stage phase = new Stage();
phase.setPhaseValue("10"+i);
if(i==0){//南北直行
phase.setPhaseValue("8");
phase.setBeginDateTime(DateUtils.getBeforeTimeSecond(120));
phase.setEndDateTime(DateUtils.getBeforeTimeSecond(90));
phase.setDuration(30);
phase.setGreen(30);
phase.setAllRed(87);
phase.setYellow(3);
phase.setCycleOrder(cycleOrder);
}
if(i==1){//南北左转
phase.setPhaseValue("0");
phase.setBeginDateTime(DateUtils.getBeforeTimeSecond(90));
phase.setEndDateTime(DateUtils.getBeforeTimeSecond(60));
phase.setDuration(30);
phase.setGreen(30);
phase.setAllRed(87);
phase.setYellow(3);
phase.setCycleOrder(cycleOrder);
}
if(i==2){//东西直行
phase.setPhaseValue("9");
phase.setBeginDateTime(DateUtils.getBeforeTimeSecond(60));
phase.setEndDateTime(DateUtils.getBeforeTimeSecond(0));
phase.setDuration(60);
phase.setGreen(60);
phase.setAllRed(57);
phase.setYellow(3);
phase.setCycleOrder(cycleOrder);
}
if(i==3){//东西左转
phase.setPhaseValue("4");
phase.setBeginDateTime(DateUtils.getBeforeTimeSecond(60));
phase.setEndDateTime(DateUtils.getBeforeTimeSecond(0));
phase.setDuration(60);
phase.setGreen(60);
phase.setAllRed(57);
phase.setYellow(3);
phase.setCycleOrder(cycleOrder);
}
phases.add(phase);
}
cycle.setStageList(phases);
return cycle;
}
@Override
public void cancel() {
isRunning=false;
}
}
......@@ -39,6 +39,25 @@ public class DateUtils {
}
public static Long dateDiff(String startTime, String endTime) {
// 按照传入的格式生成一个simpledateformate对象
SimpleDateFormat sd = new SimpleDateFormat(timeFormat);
long ns = 1000;// 一秒钟的毫秒数
long diff;
long sec = 0;
// 获得两个时间的毫秒时间差异
try {
diff = sd.parse(endTime).getTime() - sd.parse(startTime).getTime();
sec = diff / ns;// 计算差多少秒
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return sec;
}
public static Map getLM() {
String currentDateTime = DateUtils.getCurrentDateTime(dateFormat);
......@@ -215,6 +234,26 @@ public class DateUtils {
}
}
/**
* 判断时间是否在当前时间十分钟之类
* @param s
* @return
*/
public static boolean compareDataIsBefore10Min(String s){
try {
String res;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
Date afterDate = new Date(simpleDateFormat.parse(s).getTime() + 600000);
return date.compareTo(afterDate)>0?false:true;
}catch (Exception e){
return false;
}
}
/**
* 获取当前时间
* 字符串格式
......@@ -321,7 +360,8 @@ public class DateUtils {
return time;
}
public static String getBeforeTimeSecond(Calendar beforeTime,int before){
public static String getBeforeTimeSecond(int before){
Calendar beforeTime = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
beforeTime.add(Calendar.SECOND, -before);// 多少秒之前
Date beforeD = beforeTime.getTime();
......@@ -329,7 +369,8 @@ public class DateUtils {
return time;
}
public static String getAfterTimeSecond(Calendar afterTime,int before){
public static String getAfterTimeSecond(int before){
Calendar afterTime = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
afterTime.add(Calendar.SECOND, before);// 多少秒之后
Date beforeD = afterTime.getTime();
......@@ -1345,6 +1386,40 @@ public class DateUtils {
return daysStrList;
}
public static boolean belongCalendar(String dBegin, String dEnd, String dDate) {
SimpleDateFormat sdf = new SimpleDateFormat(timeFormat);
Date beginTime = null;
Date endTime = null;
Date nowTime = null;
try {
beginTime = sdf.parse(dBegin);
endTime = sdf.parse(dEnd);
nowTime = sdf.parse(dDate);
} catch (ParseException e) {
e.printStackTrace();
}
if (nowTime.getTime() == beginTime.getTime()
|| nowTime.getTime() == endTime.getTime()) {
return true;
}
Calendar date = Calendar.getInstance();
date.setTime(nowTime);
Calendar begin = Calendar.getInstance();
begin.setTime(beginTime);
Calendar end = Calendar.getInstance();
end.setTime(endTime);
if (date.after(begin) && date.before(end)) {
return true;
} else {
return false;
}
}
......
......@@ -18,8 +18,8 @@ import java.util.Collections;
public class CycleWindowAssigner extends WindowAssigner<CoGroupedStreams.TaggedUnion<Cycle, TravelEvent>, TimeWindow> {
@Override
public Collection<TimeWindow> assignWindows(CoGroupedStreams.TaggedUnion<Cycle, TravelEvent> element, long timestamp, WindowAssignerContext context) {
long start = element.getOne().getBeginDateTime().getTime();
long end = element.getOne().getEndDateTime().getTime();
long start = DateUtils.dateToStamp(element.getOne().getBeginDateTime());
long end = DateUtils.dateToStamp(element.getOne().getEndDateTime());
return Collections.singletonList(new TimeWindow(start, end));
}
......
driver=com.mysql.jdbc.Driver
host=127.0.0.1
port=13305
port=13306
username=root
password=mima
database=test
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