Commit 935cf26f by 杜发飞

1

parent 0b820297
...@@ -87,11 +87,6 @@ ...@@ -87,11 +87,6 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.ignite</groupId> <groupId>org.apache.ignite</groupId>
<artifactId>ignite-log4j2</artifactId>
<version>${ignite.version}</version>
</dependency>
<dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-spring</artifactId> <artifactId>ignite-spring</artifactId>
<version>${ignite.version}</version> <version>${ignite.version}</version>
</dependency> </dependency>
...@@ -106,7 +101,6 @@ ...@@ -106,7 +101,6 @@
<version>2.4.0</version> <version>2.4.0</version>
</dependency>--> </dependency>-->
<dependency> <dependency>
<groupId>org.apache.curator</groupId> <groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId> <artifactId>curator-framework</artifactId>
......
package com.hikcreate.ignite.domain.vehicles;
import org.apache.ignite.cache.query.annotations.QuerySqlField;
import java.io.Serializable;
public class DailyTravel implements Serializable {
private static final long serialVersionUID = 1L;
@QuerySqlField
private String province; //省 浙江省
@QuerySqlField
private String city; //市 杭州市
@QuerySqlField
private String area; //区 萧山区
@QuerySqlField
private String useNature; //使用性质 公交
@QuerySqlField
private String date; //统计日期 - 当天
@QuerySqlField
private Double lat; //最新一条记录的纬度
@QuerySqlField
private Double lng; //最新一条记录的经度
@QuerySqlField
private String time; //最新一条记录的时间
@QuerySqlField
private Double travelMileage; //当日累计里程,单位
@QuerySqlField
private Long travelTime; //当日累计行驶时间,单位秒
@QuerySqlField
private String gpsProvince; //车牌当前所处省
@QuerySqlField
private String gpsCity; //车牌当前所处市
@QuerySqlField
private String gpsArea; //车牌当前所处区
public DailyTravel(String province, String city, String area, String useNature, String date, Double lat, Double lng, String time,
Double travelMileage, Long travelTime, String gpsProvince, String gpsCity, String gpsArea) {
this.province = province;
this.city = city;
this.area = area;
this.useNature = useNature;
this.date = date;
this.lat = lat;
this.lng = lng;
this.time = time;
this.travelMileage = travelMileage;
this.travelTime = travelTime;
this.gpsProvince = gpsProvince;
this.gpsCity = gpsCity;
this.gpsArea = gpsArea;
}
}
package com.hikcreate.ignite.domain.vehicles.processor;
import org.apache.ignite.binary.BinaryObject;
import org.apache.ignite.binary.BinaryObjectBuilder;
import org.apache.ignite.cache.CacheEntryProcessor;
import org.joda.time.*;
import org.joda.time.format.DateTimeFormat;
import javax.cache.processor.EntryProcessorException;
import javax.cache.processor.MutableEntry;
public class DailyTravelUpdate implements CacheEntryProcessor<BinaryObject,BinaryObject,Void> {
private double lat;
private double lng;
private String time;
public DailyTravelUpdate(double lat, double lng, String time){
this.lat = lat;
this.lng = lng;
this.time = time;
}
@Override
public Void process(MutableEntry<BinaryObject, BinaryObject> mutableEntry, Object... objects) throws EntryProcessorException {
BinaryObject value = mutableEntry.getValue();
BinaryObjectBuilder builder = value.toBuilder();
LocalDate today = LocalDate.now(); //今日日期
LocalDate statisticalDate = LocalDate.parse(value.<String>field("date"),DateTimeFormat.forPattern("yyyy-MM-dd")); //统计日期
DateTime eventTime = DateTime.parse(time,DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss")); //事件日期
time = eventTime.toString("yyyy-MM-dd HH:mm:ss");
LocalDate eventDate = eventTime.toLocalDate();
if(statisticalDate.isBefore(today)){ //统计时间不是当前日,需要重置
builder.setField("date",today.toString("yyyy-MM-dd"));
builder.setField("travelMileage",0D);
builder.setField("travelTime",0L);
if(eventDate.equals(today)){ //代表这条数据是今天的
builder.setField("lat",lat);
builder.setField("lng",lng);
builder.setField("time",time);
mutableEntry.setValue(builder.build());
}else{
builder.setField("lat",null);
builder.setField("lng",null);
builder.setField("time",null);
mutableEntry.setValue(builder.build());
}
}else if(eventDate.equals(today)){
if(value.<Double>field("lat") == null){
builder.setField("lat",lat);
builder.setField("lng",lng);
builder.setField("time",time);
mutableEntry.setValue(builder.build());
}else{
DateTime lastTime = DateTime.parse(value.<String>field("time"),DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss"));
if(lastTime.isBefore(eventTime)){
Double differDistance = getDistance(value.<Double>field("lat"), value.<Double>field("lng"), lat, lng);
Interval interval = new Interval(lastTime,eventTime);
Period period = interval.toPeriod(PeriodType.millis());
int differTime = period.getMillis() / 1000;
builder.setField("lat",lat);
builder.setField("lng",lng);
builder.setField("time",time);
Object travelMileage = value.<Double>field("travelMileage") == null ? 0D : value.<Double>field("travelMileage") + differDistance;
builder.setField("travelMileage",travelMileage);
Long travelTime = value.<Long>field("travelTime") == null ? 0L : value.<Long>field("travelTime") + differTime;
builder.setField("travelTime",travelTime);
mutableEntry.setValue(builder.build());
}
}
}
return null;
}
private Double rad(Double d){
return d * Math.PI / 180.0;
}
private Double getDistance(Double lat1, Double lng1, Double lat2, Double lng2){
if(lat1 != null && lng1 != null && lat2 != null && lng2 != null){
Double EARTH_RADIUS = 6371.830D;
Double radLat1 = rad(lat1);
Double radLat2 = rad(lat2);
Double radLng1 = rad(lng1);
Double radLng2 = rad(lng2);
Double s = Math.acos(Math.cos(radLat1) * Math.cos(radLat2) * Math.cos(radLng1 - radLng2) + Math.sin(radLat1) * Math.sin(radLat2)) * EARTH_RADIUS;
return Math.round(s * 1000D) / 1000D;
}
return 0D;
}
}
package com.hikcreate.ignite.domain; package com.hikcreate.ignite.domain1;
import org.apache.ignite.cache.query.annotations.QuerySqlField; import org.apache.ignite.cache.query.annotations.QuerySqlField;
import java.io.Serializable; import java.io.Serializable;
......
package com.hikcreate.ignite.domain; package com.hikcreate.ignite.domain1;
import java.io.Serializable; import java.io.Serializable;
......
package com.hikcreate.ignite.domain.alarm; package com.hikcreate.ignite.domain1.alarm;
import org.apache.ignite.cache.query.annotations.QuerySqlField; import org.apache.ignite.cache.query.annotations.QuerySqlField;
import java.io.Serializable; import java.io.Serializable;
public class AttachmentInfo implements Serializable { public class AttachmentInfo implements Serializable {
...@@ -17,9 +18,6 @@ public class AttachmentInfo implements Serializable { ...@@ -17,9 +18,6 @@ public class AttachmentInfo implements Serializable {
private String vehicleColor; //车牌颜色 private String vehicleColor; //车牌颜色
@QuerySqlField @QuerySqlField
private String vehicleType; //车辆类型
@QuerySqlField
private String deviceId; //终端ID private String deviceId; //终端ID
@QuerySqlField @QuerySqlField
...@@ -40,12 +38,11 @@ public class AttachmentInfo implements Serializable { ...@@ -40,12 +38,11 @@ public class AttachmentInfo implements Serializable {
@QuerySqlField @QuerySqlField
private String businessTime; //业务发生时间,格式 yyyy-MM-dd HH:mm:ss private String businessTime; //业务发生时间,格式 yyyy-MM-dd HH:mm:ss
public AttachmentInfo(String appId, String vehicleNo, String vehicleColor, String vehicleType, String deviceId, String warnTime, String warnSeq, public AttachmentInfo(String appId, String vehicleNo, String vehicleColor, String deviceId, String warnTime, String warnSeq,
String fileCount, String fileIndex, String filePath, String businessTime) { String fileCount, String fileIndex, String filePath, String businessTime) {
this.appId = appId; this.appId = appId;
this.vehicleNo = vehicleNo; this.vehicleNo = vehicleNo;
this.vehicleColor = vehicleColor; this.vehicleColor = vehicleColor;
this.vehicleType = vehicleType;
this.deviceId = deviceId; this.deviceId = deviceId;
this.warnTime = warnTime; this.warnTime = warnTime;
this.warnSeq = warnSeq; this.warnSeq = warnSeq;
......
package com.hikcreate.ignite.domain.alarm; package com.hikcreate.ignite.domain1.alarm;
import org.apache.ignite.cache.query.annotations.QuerySqlField; import org.apache.ignite.cache.query.annotations.QuerySqlField;
import java.io.Serializable; import java.io.Serializable;
/** /**
* 每日报警数 * 每日报警数
*/ */
...@@ -10,29 +12,72 @@ public class DailyAlarm implements Serializable { ...@@ -10,29 +12,72 @@ public class DailyAlarm implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@QuerySqlField @QuerySqlField
private String useNature; //使用性质 公交
@QuerySqlField
private String province; //省 浙江省 private String province; //省 浙江省
@QuerySqlField @QuerySqlField
private String city; //市 杭州市 private String city; //市 杭州市
@QuerySqlField @QuerySqlField
private String area; //区 萧山区 private String area; //区 萧山区
@QuerySqlField
private String useNature; //使用性质 公交
@QuerySqlField @QuerySqlField
private String date; //统计日期 - 当天 private String date; //统计日期 - 当天
@QuerySqlField @QuerySqlField
private Long alarmNumber; //对应报警数 private Long number; //对应报警数
public DailyAlarm(String useNature, String province, String city, String area, String date, Long number) {
this.useNature = useNature;
this.province = province;
this.city = city;
this.area = area;
this.date = date;
this.number = number;
}
public String getProvince() {
return province;
}
public DailyAlarm(String province, String city, String area, String useNature, String date, Long alarmNumber) { public void setProvince(String province) {
this.province = province; this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city; this.city = city;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area; this.area = area;
}
public String getUseNature() {
return useNature;
}
public void setUseNature(String useNature) {
this.useNature = useNature; this.useNature = useNature;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date; this.date = date;
this.alarmNumber = alarmNumber; }
public Long getAlarmNumber() {
return number;
}
public void setAlarmNumber(Long alarmNumber) {
this.number = alarmNumber;
} }
} }
package com.hikcreate.ignite.domain.alarm; package com.hikcreate.ignite.domain1.alarm;
import org.apache.ignite.cache.query.annotations.QuerySqlField; import org.apache.ignite.cache.query.annotations.QuerySqlField;
import java.io.Serializable; import java.io.Serializable;
/** /**
* 每日报警处理 * 每日报警处理
*/ */
public class DailyAlarmDeal implements Serializable { public class DailyAlarmDeal implements Serializable {
...@@ -12,18 +13,14 @@ public class DailyAlarmDeal implements Serializable { ...@@ -12,18 +13,14 @@ public class DailyAlarmDeal implements Serializable {
@QuerySqlField @QuerySqlField
private String vehicleNo; //车牌号 private String vehicleNo; //车牌号
@QuerySqlField @QuerySqlField
private String vehicleColor; //车牌颜色 private String vehicleColor; //车牌颜色
@QuerySqlField @QuerySqlField
private String supervisionId; //报警督办 ID private String supervisionId; //报警督办 ID
@QuerySqlField @QuerySqlField
private String warnTime;//报警时间 private String warnTime;//报警时间
@QuerySqlField @QuerySqlField
private Boolean isDeal; //是否处理 private Boolean isDeal = false; //是否处理
public DailyAlarmDeal(String vehicleNo, String vehicleColor, String supervisionId, String warnTime, Boolean isDeal) { public DailyAlarmDeal(String vehicleNo, String vehicleColor, String supervisionId, String warnTime, Boolean isDeal) {
this.vehicleNo = vehicleNo; this.vehicleNo = vehicleNo;
......
package com.hikcreate.ignite.domain.alarm; package com.hikcreate.ignite.domain1.alarm;
import org.apache.ignite.cache.query.annotations.QuerySqlField; import org.apache.ignite.cache.query.annotations.QuerySqlField;
import java.io.Serializable; import java.io.Serializable;
/** /**
* 每日报警详情 * 每日报警详情
*/ */
...@@ -9,54 +11,72 @@ public class DailyAlarmDetail implements Serializable { ...@@ -9,54 +11,72 @@ public class DailyAlarmDetail implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
//车辆信息
@QuerySqlField
private String vehicleNo; //车牌号
@QuerySqlField
private String vehicleColor; //车牌颜色
@QuerySqlField
private String enterpriseCode; //车辆归属
@QuerySqlField
private String useNature; //使用性质 公交
@QuerySqlField
private String drivingPermitNo; //行驶证号
@QuerySqlField
private String operatingCertificateNo; // 营运证号
@QuerySqlField
private String indentifier; // 车架号
@QuerySqlField
private String classLine;// 班线
@QuerySqlField @QuerySqlField
private String province; //省 浙江省 private String province; //省 浙江省
@QuerySqlField @QuerySqlField
private String city; //市 杭州市 private String city; //市 杭州市
@QuerySqlField @QuerySqlField
private String area; //区 萧山区 private String area; //区 萧山区
//报警信息
@QuerySqlField @QuerySqlField
private String vehicleNo; //车牌号 private String appId; //智能视频企业监控平台的唯一标识号
@QuerySqlField @QuerySqlField
private String vehicleColor; //车牌颜色 private String infoId; //信息 ID
@QuerySqlField
private String useNature; //使用性质 公交
@QuerySqlField @QuerySqlField
private String deviceId; //终端ID private String deviceId; //终端ID
@QuerySqlField @QuerySqlField
private Double lon; //经度 private Double lon; //经度
@QuerySqlField @QuerySqlField
private Double lat; //纬度 private Double lat; //纬度
@QuerySqlField @QuerySqlField
private String warnTime; //报警时间 private String warnTime; //报警时间
@QuerySqlField @QuerySqlField
private Long warnType; //报警类型 private String warnAddress; //报警地址
@QuerySqlField @QuerySqlField
private String warnInfo; //风险因素 private Long warnLevelId; //报警程度
@QuerySqlField
private String warnTypeName; //报警类型
public DailyAlarmDetail(String province, String city, String area, String vehicleNo, String vehicleColor, String useNature, String deviceId, String warnTime, Double lon, Double lat, Long warnType, String warnInfo) { public DailyAlarmDetail(String vehicleNo, String vehicleColor, String enterpriseCode, String useNature, String drivingPermitNo,
this.province = province; String operatingCertificateNo, String indentifier, String classLine, String province, String city,
this.city = city; String area, String appId, String infoId, String deviceId, Double lon, Double lat, String warnTime,
this.area = area; String warnAddress, Long warnLevelId,String warnTypeName) {
this.vehicleNo = vehicleNo; this.vehicleNo = vehicleNo;
this.vehicleColor = vehicleColor; this.vehicleColor = vehicleColor;
this.enterpriseCode = enterpriseCode;
this.useNature = useNature; this.useNature = useNature;
this.drivingPermitNo = drivingPermitNo;
this.operatingCertificateNo = operatingCertificateNo;
this.indentifier = indentifier;
this.classLine = classLine;
this.province = province;
this.city = city;
this.area = area;
this.appId = appId;
this.infoId = infoId;
this.deviceId = deviceId; this.deviceId = deviceId;
this.warnTime = warnTime;
this.lon = lon; this.lon = lon;
this.lat = lat; this.lat = lat;
this.warnType = warnType; this.warnTime = warnTime;
this.warnInfo = warnInfo; this.warnAddress = warnAddress;
this.warnLevelId = warnLevelId;
this.warnTypeName = warnTypeName;
} }
} }
package com.hikcreate.ignite.domain1.alarm;
import org.apache.ignite.cache.query.annotations.QuerySqlField;
import java.io.Serializable;
public class IdentificationInfo implements Serializable {
private static final long serialVersionUID = 1L;
@QuerySqlField
private String appId; //智能视频企业监控平台的唯一标识号
@QuerySqlField
private String vehicleNo; //车牌号
@QuerySqlField
private String vehicleColor; //车牌颜色
@QuerySqlField
private String driverName; //驾驶员姓名
@QuerySqlField
private String driverId; //身份证编号
@QuerySqlField
private String licence; //从业资格证号
@QuerySqlField
private String orgName; //发证机构名称
@QuerySqlField
private String businessTime;//业务发生时间,格式 yyyy-MM-dd HH:mm:ss
public IdentificationInfo(String appId, String vehicleNo, String vehicleColor, String driverName, String driverId, String licence, String orgName, String businessTime) {
this.appId = appId;
this.vehicleNo = vehicleNo;
this.vehicleColor = vehicleColor;
this.driverName = driverName;
this.driverId = driverId;
this.licence = licence;
this.orgName = orgName;
this.businessTime = businessTime;
}
}
package com.hikcreate.ignite.domain.alarm.processor; package com.hikcreate.ignite.domain1.alarm.processor;
import org.apache.ignite.binary.BinaryObject; import org.apache.ignite.binary.BinaryObject;
import org.apache.ignite.binary.BinaryObjectBuilder; import org.apache.ignite.binary.BinaryObjectBuilder;
......
package com.hikcreate.ignite.domain.alarm.processor; package com.hikcreate.ignite.domain1.alarm.processor;
import org.apache.ignite.binary.BinaryObject; import org.apache.ignite.binary.BinaryObject;
import org.apache.ignite.binary.BinaryObjectBuilder; import org.apache.ignite.binary.BinaryObjectBuilder;
...@@ -27,16 +27,16 @@ public class DailyAlarmUpdate implements CacheEntryProcessor<BinaryObject,Binary ...@@ -27,16 +27,16 @@ public class DailyAlarmUpdate implements CacheEntryProcessor<BinaryObject,Binary
if(statisticalDate.isBefore(today)){ //统计时间不是当前日,需要重置 if(statisticalDate.isBefore(today)){ //统计时间不是当前日,需要重置
builder.setField("date",today.toString("yyyy-MM-dd")); builder.setField("date",today.toString("yyyy-MM-dd"));
if(eventDate.equals(today)){ if(eventDate.equals(today)){
builder.setField("alarmNumber",1L); builder.setField("number",1L);
mutableEntry.setValue(builder.build()); mutableEntry.setValue(builder.build());
}else{ }else{
builder.setField("alarmNumber",0L); builder.setField("number",0L);
mutableEntry.setValue(builder.build()); mutableEntry.setValue(builder.build());
} }
}else{ }else{
if(eventDate.equals(today)){ if(eventDate.equals(today)){
Long old = value.<Long>field("alarmNumber"); Long old = value.<Long>field("number");
builder.setField("alarmNumber",old +1); builder.setField("number",old +1);
mutableEntry.setValue(builder.build()); mutableEntry.setValue(builder.build());
} }
} }
......
package com.hikcreate.ignite.domain.basic; package com.hikcreate.ignite.domain1.basic;
import org.apache.ignite.cache.query.annotations.QuerySqlField; import org.apache.ignite.cache.query.annotations.QuerySqlField;
......
package com.hikcreate.ignite.domain.basic; package com.hikcreate.ignite.domain1.basic;
import org.apache.ignite.cache.query.annotations.QuerySqlField; import org.apache.ignite.cache.query.annotations.QuerySqlField;
import java.io.Serializable; import java.io.Serializable;
......
package com.hikcreate.ignite.domain.basic; package com.hikcreate.ignite.domain1.basic;
import org.apache.ignite.cache.query.annotations.QuerySqlField; import org.apache.ignite.cache.query.annotations.QuerySqlField;
import java.io.Serializable; import java.io.Serializable;
......
package com.hikcreate.ignite.domain.basic; package com.hikcreate.ignite.domain1.basic;
import org.apache.ignite.cache.query.annotations.QuerySqlField; import org.apache.ignite.cache.query.annotations.QuerySqlField;
import java.io.Serializable; import java.io.Serializable;
......
package com.hikcreate.ignite.domain.vehicles; package com.hikcreate.ignite.domain1.vehicles;
import org.apache.ignite.cache.query.annotations.QuerySqlField; import org.apache.ignite.cache.query.annotations.QuerySqlField;
...@@ -9,21 +9,61 @@ public class AlarmNumber implements Serializable { ...@@ -9,21 +9,61 @@ public class AlarmNumber implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@QuerySqlField @QuerySqlField
private String useNature; //使用性质 公交
@QuerySqlField
private String province; //省 浙江省 private String province; //省 浙江省
@QuerySqlField @QuerySqlField
private String city; //市 杭州市 private String city; //市 杭州市
@QuerySqlField @QuerySqlField
private String area; //区 萧山区 private String area; //区 萧山区
@QuerySqlField @QuerySqlField
private String useNature; //使用性质 公交 private Long number; //报警总数
@QuerySqlField
private Long number; //使用性质 公交
public AlarmNumber(String province, String city, String area, String useNature, Long number) { public AlarmNumber(String useNature, String province, String city, String area, Long number) {
this.useNature = useNature;
this.province = province; this.province = province;
this.city = city; this.city = city;
this.area = area; this.area = area;
this.number = number;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
public String getUseNature() {
return useNature;
}
public void setUseNature(String useNature) {
this.useNature = useNature; this.useNature = useNature;
}
public Long getNumber() {
return number;
}
public void setNumber(Long number) {
this.number = number; this.number = number;
} }
} }
package com.hikcreate.ignite.domain1.vehicles;
import org.apache.ignite.cache.query.annotations.QuerySqlField;
import java.io.Serializable;
public class DailyTravel implements Serializable {
private static final long serialVersionUID = 1L;
@QuerySqlField
private String vehicleNo; //车牌号
@QuerySqlField
private String vehicleColor; //车牌颜色
@QuerySqlField
private String useNature; //使用性质 公交
@QuerySqlField
private String province; //车辆归属地省
@QuerySqlField
private String city; //车辆归属地市
@QuerySqlField
private String area; //车辆归属地区
@QuerySqlField
private String gpsProvince; //车辆当前所处省
@QuerySqlField
private String gpsCity; //车辆当前所处市
@QuerySqlField
private String gpsArea; //车辆当前所处区
@QuerySqlField
private String date; //统计日期 - 当天
@QuerySqlField
private Double lat; //最新一条记录的纬度
@QuerySqlField
private Double lng; //最新一条记录的经度
@QuerySqlField
private String time; //最新一条记录的时间
@QuerySqlField
private Double travelMileage = 0D; //当日累计里程,单位
@QuerySqlField
private Long travelTime = 0L; //当日累计行驶时间,单位秒
public DailyTravel(String vehicleNo, String vehicleColor, String useNature, String province, String city, String area, String gpsProvince, String gpsCity, String gpsArea, String date, Double lat, Double lng, String time) {
this.vehicleNo = vehicleNo;
this.vehicleColor = vehicleColor;
this.useNature = useNature;
this.province = province;
this.city = city;
this.area = area;
this.gpsProvince = gpsProvince;
this.gpsCity = gpsCity;
this.gpsArea = gpsArea;
this.date = date;
this.lat = lat;
this.lng = lng;
this.time = time;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
public String getVehicleNo() {
return vehicleNo;
}
public void setVehicleNo(String vehicleNo) {
this.vehicleNo = vehicleNo;
}
public String getVehicleColor() {
return vehicleColor;
}
public void setVehicleColor(String vehicleColor) {
this.vehicleColor = vehicleColor;
}
public String getGpsProvince() {
return gpsProvince;
}
public void setGpsProvince(String gpsProvince) {
this.gpsProvince = gpsProvince;
}
public String getGpsCity() {
return gpsCity;
}
public void setGpsCity(String gpsCity) {
this.gpsCity = gpsCity;
}
public String getGpsArea() {
return gpsArea;
}
public void setGpsArea(String gpsArea) {
this.gpsArea = gpsArea;
}
public String getUseNature() {
return useNature;
}
public void setUseNature(String useNature) {
this.useNature = useNature;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public Double getLat() {
return lat;
}
public void setLat(Double lat) {
this.lat = lat;
}
public Double getLng() {
return lng;
}
public void setLng(Double lng) {
this.lng = lng;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public Double getTravelMileage() {
return travelMileage;
}
public void setTravelMileage(Double travelMileage) {
this.travelMileage = travelMileage;
}
public Long getTravelTime() {
return travelTime;
}
public void setTravelTime(Long travelTime) {
this.travelTime = travelTime;
}
}
package com.hikcreate.ignite.domain.vehicles; package com.hikcreate.ignite.domain1.vehicles;
import org.apache.ignite.cache.query.annotations.QuerySqlField; import org.apache.ignite.cache.query.annotations.QuerySqlField;
...@@ -9,6 +9,9 @@ public class DriverNumber implements Serializable { ...@@ -9,6 +9,9 @@ public class DriverNumber implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@QuerySqlField @QuerySqlField
private String useNature; //使用性质 公交
@QuerySqlField
private String province; //省 private String province; //省
@QuerySqlField @QuerySqlField
...@@ -17,13 +20,10 @@ public class DriverNumber implements Serializable { ...@@ -17,13 +20,10 @@ public class DriverNumber implements Serializable {
@QuerySqlField @QuerySqlField
private String area; //区 private String area; //区
@QuerySqlField public DriverNumber(String useNature, String province, String city, String area) {
private String useNature; //使用性质 公交 this.useNature = useNature;
public DriverNumber(String province, String city, String area, String useNature) {
this.province = province; this.province = province;
this.city = city; this.city = city;
this.area = area; this.area = area;
this.useNature = useNature;
} }
} }
package com.hikcreate.ignite.domain.vehicles; package com.hikcreate.ignite.domain1.vehicles;
import org.apache.ignite.cache.query.annotations.QuerySqlField; import org.apache.ignite.cache.query.annotations.QuerySqlField;
import java.io.Serializable; import java.io.Serializable;
public class VehicleNumber implements Serializable { public class VehicleNumber implements Serializable {
...@@ -9,18 +8,24 @@ public class VehicleNumber implements Serializable { ...@@ -9,18 +8,24 @@ public class VehicleNumber implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@QuerySqlField @QuerySqlField
private String vehicleNo; //车牌号
@QuerySqlField
private String vehicleColor; //车牌颜色
@QuerySqlField
private String useNature; //使用性质 公交
@QuerySqlField
private String province; //省 浙江省 private String province; //省 浙江省
@QuerySqlField @QuerySqlField
private String city; //市 杭州市 private String city; //市 杭州市
@QuerySqlField @QuerySqlField
private String area; //区 萧山区 private String area; //区 萧山区
@QuerySqlField
private String useNature; //使用性质 公交
public VehicleNumber(String province, String city, String area, String useNature) { public VehicleNumber(String vehicleNo, String vehicleColor, String useNature, String province, String city, String area) {
this.vehicleNo = vehicleNo;
this.vehicleColor = vehicleColor;
this.useNature = useNature;
this.province = province; this.province = province;
this.city = city; this.city = city;
this.area = area; this.area = area;
this.useNature = useNature;
} }
} }
package com.hikcreate.ignite.domain.vehicles.processor; package com.hikcreate.ignite.domain1.vehicles.processor;
import org.apache.ignite.binary.BinaryObject; import org.apache.ignite.binary.BinaryObject;
import org.apache.ignite.binary.BinaryObjectBuilder; import org.apache.ignite.binary.BinaryObjectBuilder;
......
...@@ -17,8 +17,8 @@ ...@@ -17,8 +17,8 @@
<bean class="org.apache.ignite.spi.discovery.zk.ZookeeperDiscoverySpi"> <bean class="org.apache.ignite.spi.discovery.zk.ZookeeperDiscoverySpi">
<property name="zkConnectionString" value="10.197.236.211:2181,10.197.236.212:2181,10.197.236.213:2181"/> <property name="zkConnectionString" value="10.197.236.211:2181,10.197.236.212:2181,10.197.236.213:2181"/>
<property name="sessionTimeout" value="30000"/> <property name="sessionTimeout" value="30000"/>
<property name="zkRootPath" value="/apacheIgnite"/> <!--<property name="zkRootPath" value="/apacheIgnite"/>-->
<!--<property name="zkRootPath" value="/Ignite"/>--> <property name="zkRootPath" value="/Ignite"/>
<property name="joinTimeout" value="0"/> <property name="joinTimeout" value="0"/>
</bean> </bean>
</property> </property>
......
package com.hikcreate.data.client package com.hikcreate.data.client
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
import com.hikcreate.ignite.domain1.{ErrorMsg, PrimaryKey}
import com.hikcreate.ignite.domain.{ErrorMsg, PrimaryKey} import com.hikcreate.ignite.domain1.alarm._
import com.hikcreate.ignite.domain.alarm._ import com.hikcreate.ignite.domain1.alarm.processor.{DailyAlarmDealUpdate, DailyAlarmUpdate}
import com.hikcreate.ignite.domain.alarm.processor.{DailyAlarmDealUpdate, DailyAlarmUpdate} import com.hikcreate.ignite.domain1.basic._
import com.hikcreate.ignite.domain.basic._ import com.hikcreate.ignite.domain1.vehicles.processor.{AlarmNumberUpdate, DailyTravelUpdate}
import com.hikcreate.ignite.domain.vehicles.processor.{AlarmNumberUpdate, DailyTravelUpdate} import com.hikcreate.ignite.domain1.vehicles._
import com.hikcreate.ignite.domain.vehicles._ import javax.cache.expiry.{CreatedExpiryPolicy, Duration}
import org.apache.ignite.binary.BinaryObject import org.apache.ignite.binary.BinaryObject
import org.apache.ignite.cache.CacheMode import org.apache.ignite.cache.CacheMode
import org.apache.ignite.configuration.CacheConfiguration import org.apache.ignite.configuration.CacheConfiguration
import org.apache.ignite.{Ignite, IgniteCache, Ignition} import org.apache.ignite.{Ignite, IgniteCache, Ignition}
import org.joda.time.DateTime
import scala.collection.JavaConversions.mapAsJavaMap import scala.collection.JavaConversions.mapAsJavaMap
import scala.collection.JavaConverters._
/**
* binary type无法自动更改
* 闭包序列化发送到服务器只会发送一次,代码结构改变需要重启ignite服务(待解决)
*/
object IgniteClient { object IgniteClient {
lazy val ignite: Ignite = Ignition.start("ignite.xml") lazy val ignite: Ignite = Ignition.start("ignite.xml")
...@@ -33,6 +29,7 @@ object IgniteClient { ...@@ -33,6 +29,7 @@ object IgniteClient {
binary.build() binary.build()
} }
/*********************************基础信息表****************************************************************/ /*********************************基础信息表****************************************************************/
//企业基础信息表--企业接入情况 //企业基础信息表--企业接入情况
lazy val basicEnterpriseInfo: IgniteCache[Long, EnterpriseInfo] = ignite.getOrCreateCache( lazy val basicEnterpriseInfo: IgniteCache[Long, EnterpriseInfo] = ignite.getOrCreateCache(
new CacheConfiguration[Long,EnterpriseInfo]() new CacheConfiguration[Long,EnterpriseInfo]()
...@@ -42,6 +39,7 @@ object IgniteClient { ...@@ -42,6 +39,7 @@ object IgniteClient {
.setCacheMode(CacheMode.REPLICATED) .setCacheMode(CacheMode.REPLICATED)
.setIndexedTypes(classOf[Long],classOf[EnterpriseInfo]) .setIndexedTypes(classOf[Long],classOf[EnterpriseInfo])
) )
//车辆基础信息表--接入车辆数 //车辆基础信息表--接入车辆数
lazy val basicVehicleInfo: IgniteCache[Long, VehicleInfo] = ignite.getOrCreateCache( lazy val basicVehicleInfo: IgniteCache[Long, VehicleInfo] = ignite.getOrCreateCache(
new CacheConfiguration[Long,VehicleInfo]() new CacheConfiguration[Long,VehicleInfo]()
...@@ -51,6 +49,7 @@ object IgniteClient { ...@@ -51,6 +49,7 @@ object IgniteClient {
.setCacheMode(CacheMode.REPLICATED) .setCacheMode(CacheMode.REPLICATED)
.setIndexedTypes(classOf[Long],classOf[VehicleInfo]) .setIndexedTypes(classOf[Long],classOf[VehicleInfo])
) )
//报警类型配置基础表 //报警类型配置基础表
lazy val basicAlarmTypeInfo: IgniteCache[Long, AlarmTypeInfo] = ignite.getOrCreateCache( lazy val basicAlarmTypeInfo: IgniteCache[Long, AlarmTypeInfo] = ignite.getOrCreateCache(
new CacheConfiguration[Long,AlarmTypeInfo]() new CacheConfiguration[Long,AlarmTypeInfo]()
...@@ -60,7 +59,9 @@ object IgniteClient { ...@@ -60,7 +59,9 @@ object IgniteClient {
.setCacheMode(CacheMode.REPLICATED) .setCacheMode(CacheMode.REPLICATED)
.setIndexedTypes(classOf[Long],classOf[AlarmTypeInfo]) .setIndexedTypes(classOf[Long],classOf[AlarmTypeInfo])
) )
/*********************************营运车辆监测****************************************************************/ /*********************************营运车辆监测****************************************************************/
/** /**
* 今日车辆在线情况 累计行驶 累计安全行驶里程 * 今日车辆在线情况 累计行驶 累计安全行驶里程
* 主键:车牌号 + 车牌颜色(定义唯一一辆车) * 主键:车牌号 + 车牌颜色(定义唯一一辆车)
...@@ -75,11 +76,12 @@ object IgniteClient { ...@@ -75,11 +76,12 @@ object IgniteClient {
.setCacheMode(CacheMode.REPLICATED) .setCacheMode(CacheMode.REPLICATED)
) )
def updateMileageCache(key: BinaryObject,lat:Double,lng:Double,time:String): Unit = { def updateMileageCache(key: BinaryObject,dailyTravel: DailyTravel): Unit = {
dailyTravelCache dailyTravelCache
.withKeepBinary() .withKeepBinary()
.invoke(key,new DailyTravelUpdate(lat,lng,time)) .invoke(key,new DailyTravelUpdate(dailyTravel))
} }
/** /**
* 接入驾驶人数 -完成 * 接入驾驶人数 -完成
* 主键:身份证号码 - 去重 * 主键:身份证号码 - 去重
...@@ -131,19 +133,6 @@ object IgniteClient { ...@@ -131,19 +133,6 @@ object IgniteClient {
} }
/*********************************安全行驶报警监测****************************************************************/ /*********************************安全行驶报警监测****************************************************************/
/**
* 附件历史记录
* 主键:车牌号 车牌颜色 设备ID 报警时间 序列号
*/
lazy val attachmentCache: IgniteCache[PrimaryKey, AttachmentInfo] = ignite.getOrCreateCache(
new CacheConfiguration[PrimaryKey,AttachmentInfo]()
.setSqlSchema("Alarm")
.setName("AttachmentInfo")
.setIndexedTypes(classOf[PrimaryKey],classOf[AttachmentInfo])
.setDataRegionName("500MB_Region")
.setCacheMode(CacheMode.REPLICATED)
//.setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(new Duration(TimeUnit.HOURS,24)))
)
/** /**
* 今日报警数 今日区域报警数 * 今日报警数 今日区域报警数
...@@ -164,6 +153,7 @@ object IgniteClient { ...@@ -164,6 +153,7 @@ object IgniteClient {
.withKeepBinary() .withKeepBinary()
.invoke(key,new DailyAlarmUpdate(time)) .invoke(key,new DailyAlarmUpdate(time))
} }
/** /**
* 今日报警处理数 * 今日报警处理数
* 主键:车牌号 车牌颜色 报警督办ID * 主键:车牌号 车牌颜色 报警督办ID
...@@ -184,8 +174,9 @@ object IgniteClient { ...@@ -184,8 +174,9 @@ object IgniteClient {
.withKeepBinary() .withKeepBinary()
.invoke(key,new DailyAlarmDealUpdate(map)) .invoke(key,new DailyAlarmDealUpdate(map))
} }
/** /**
* 今日报警详情 * 报警详情
* 主键:车牌号 车牌颜色 报警时间 * 主键:车牌号 车牌颜色 报警时间
* 数据来源:上报报警信息消息 * 数据来源:上报报警信息消息
*/ */
...@@ -199,18 +190,35 @@ object IgniteClient { ...@@ -199,18 +190,35 @@ object IgniteClient {
//.setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(new Duration(TimeUnit.HOURS,24))) //.setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(new Duration(TimeUnit.HOURS,24)))
) )
/*********************************错误数据****************************************************************/ /**
lazy val errorMsgInfo: IgniteCache[String,ErrorMsg] = ignite.getOrCreateCache( * 附件
new CacheConfiguration[String,ErrorMsg]() * 主键:车牌号 车牌颜色 设备ID 报警时间 序列号
.setSqlSchema("Error") */
.setName("ErrorMsg") lazy val attachmentCache: IgniteCache[PrimaryKey, AttachmentInfo] = ignite.getOrCreateCache(
new CacheConfiguration[PrimaryKey,AttachmentInfo]()
.setSqlSchema("Alarm")
.setName("AttachmentInfo")
.setIndexedTypes(classOf[PrimaryKey],classOf[AttachmentInfo])
.setDataRegionName("500MB_Region")
.setCacheMode(CacheMode.REPLICATED)
//.setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(new Duration(TimeUnit.HOURS,24)))
)
/**
* 身份识别
* 主键:车牌号 车牌颜色 业务发生时间
*/
lazy val identificationInfoCache: IgniteCache[PrimaryKey, IdentificationInfo] = ignite.getOrCreateCache(
new CacheConfiguration[PrimaryKey,IdentificationInfo]()
.setSqlSchema("Alarm")
.setName("IdentificationInfo")
.setIndexedTypes(classOf[PrimaryKey],classOf[IdentificationInfo])
.setDataRegionName("500MB_Region") .setDataRegionName("500MB_Region")
.setCacheMode(CacheMode.REPLICATED) .setCacheMode(CacheMode.REPLICATED)
.setIndexedTypes(classOf[String],classOf[ErrorMsg]) //.setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(new Duration(TimeUnit.HOURS,24)))
) )
def main(args: Array[String]): Unit = { def main(args: Array[String]): Unit = {
ignite.cacheNames().asScala.foreach(println(_)) //dailyAlarmDealCache.clear()
ignite.close()
} }
} }
...@@ -3,15 +3,14 @@ package com.hikcreate.data.offline ...@@ -3,15 +3,14 @@ package com.hikcreate.data.offline
import com.hikcreate.data.client.IgniteClient import com.hikcreate.data.client.IgniteClient
import com.hikcreate.data.common.Sparking import com.hikcreate.data.common.Sparking
import com.hikcreate.data.util.Tools import com.hikcreate.data.util.Tools
import com.hikcreate.ignite.domain.basic.{AlarmTypeInfo, EnterpriseInfo, VehicleInfo} import com.hikcreate.ignite.domain1.basic.{AlarmTypeInfo, EnterpriseInfo, VehicleInfo}
import org.apache.log4j.{Level, Logger}
import org.apache.spark.sql.SparkSession import org.apache.spark.sql.SparkSession
import scala.collection.JavaConverters._
object FullSync extends Sparking{ object FullSync extends Sparking{
def main(args: Array[String]): Unit = { def main(args: Array[String]): Unit = {
Logger.getRootLogger.setLevel(Level.OFF) //IgniteClient.ignite.cacheNames().asScala.foreach(x=>IgniteClient.ignite.destroyCache(x))
Logger.getLogger("org.apache.ignite").setLevel(Level.OFF)
val sparkSession = SparkSession.builder().config(conf).getOrCreate() val sparkSession = SparkSession.builder().config(conf).getOrCreate()
//基本企业信息表 //基本企业信息表
sparkSession.sqlContext.read.format("jdbc").options(Map( sparkSession.sqlContext.read.format("jdbc").options(Map(
......
...@@ -6,7 +6,7 @@ import com.hikcreate.data.client.IgniteClient ...@@ -6,7 +6,7 @@ import com.hikcreate.data.client.IgniteClient
import com.hikcreate.data.common.{Logging, Sparking} import com.hikcreate.data.common.{Logging, Sparking}
import com.hikcreate.data.constant.Const import com.hikcreate.data.constant.Const
import com.hikcreate.data.util.{Tools, ZkManager} import com.hikcreate.data.util.{Tools, ZkManager}
import com.hikcreate.ignite.domain.basic.{AlarmTypeInfo, EnterpriseInfo, VehicleInfo} import com.hikcreate.ignite.domain1.basic.{AlarmTypeInfo, EnterpriseInfo, VehicleInfo}
import org.apache.spark.streaming.kafka010._ import org.apache.spark.streaming.kafka010._
import org.apache.spark.streaming.{Seconds, StreamingContext} import org.apache.spark.streaming.{Seconds, StreamingContext}
import scala.collection.mutable.ArrayBuffer import scala.collection.mutable.ArrayBuffer
......
package com.hikcreate.data.util
import com.hikcreate.data.common.Logging
import org.apache.spark.streaming.StreamingContext
import org.apache.spark.streaming.scheduler.{StreamingListener, StreamingListenerBatchStarted}
class AppListener (ssc:StreamingContext) extends StreamingListener with Logging{
val DELAY_MAX = 20
override def onBatchStarted(batchStarted: StreamingListenerBatchStarted): Unit = {
val Delay_ts = batchStarted.batchInfo.schedulingDelay.get
/*if(Delay_ts > DELAY_MAX ){
sendEmail(...)
}*/
}
}
...@@ -6,11 +6,10 @@ import com.alibaba.fastjson.{JSON, JSONArray, JSONObject} ...@@ -6,11 +6,10 @@ import com.alibaba.fastjson.{JSON, JSONArray, JSONObject}
import com.hikcreate.data.client.IgniteClient import com.hikcreate.data.client.IgniteClient
import com.hikcreate.data.common.Logging import com.hikcreate.data.common.Logging
import com.hikcreate.data.constant.Const import com.hikcreate.data.constant.Const
import com.hikcreate.ignite.domain.basic.{AlarmTypeInfo, EnterpriseInfo, VehicleInfo} import com.hikcreate.ignite.domain1.basic.{AlarmTypeInfo, EnterpriseInfo, VehicleInfo}
import org.apache.ignite.cache.query.SqlQuery import org.apache.ignite.cache.query.SqlQuery
import org.joda.time.{DateTime, Duration} import org.joda.time.{DateTime, Duration}
import scalaj.http.Http import scalaj.http.Http
import scala.collection.mutable.ArrayBuffer import scala.collection.mutable.ArrayBuffer
object Tools extends Logging{ object Tools extends Logging{
...@@ -42,7 +41,7 @@ object Tools extends Logging{ ...@@ -42,7 +41,7 @@ object Tools extends Logging{
.header("content-type","application/json") .header("content-type","application/json")
//.timeout(connTimeoutMs = 1000,readTimeoutMs = 1000) //.timeout(connTimeoutMs = 1000,readTimeoutMs = 1000)
.asString .asString
val endtime = DateTime.now() //val endtime = DateTime.now()
//println("http请求时间:"+new Duration(starttime,endtime).getMillis) //println("http请求时间:"+new Duration(starttime,endtime).getMillis)
val body = JSON.parseObject(response.body) val body = JSON.parseObject(response.body)
val item = body.getJSONObject("result").getJSONArray("regeoItems").getJSONObject(0) val item = body.getJSONObject("result").getJSONArray("regeoItems").getJSONObject(0)
...@@ -67,7 +66,7 @@ object Tools extends Logging{ ...@@ -67,7 +66,7 @@ object Tools extends Logging{
def getAddressAndLocationCodes(buffer:List[(Double,Double)]): IndexedSeq[(String,String)] = { def getAddressAndLocationCodes(buffer:List[(Double,Double)]): IndexedSeq[(String,String)] = {
val json = new JSONObject() val json = new JSONObject()
val arr = new JSONArray() val arr = new JSONArray()
buffer.foreach{x => buffer.foreach{ x =>
val lonAndLat = new JSONObject() val lonAndLat = new JSONObject()
lonAndLat.put("longitude",x._1) lonAndLat.put("longitude",x._1)
lonAndLat.put("latitude",x._2) lonAndLat.put("latitude",x._2)
...@@ -79,7 +78,6 @@ object Tools extends Logging{ ...@@ -79,7 +78,6 @@ object Tools extends Logging{
//val endTime = DateTime.now() //val endTime = DateTime.now()
//println("http请求时间:"+new Duration(startTime,endTime).getMillis/1000) //println("http请求时间:"+new Duration(startTime,endTime).getMillis/1000)
val body = JSON.parseObject(response.body) val body = JSON.parseObject(response.body)
println(response.body)
val items = body.getJSONObject("result").getJSONArray("regeoItems") val items = body.getJSONObject("result").getJSONArray("regeoItems")
(0 until items.size()).map{ index => (0 until items.size()).map{ index =>
val item = items.getJSONObject(index) val item = items.getJSONObject(index)
...@@ -89,12 +87,12 @@ object Tools extends Logging{ ...@@ -89,12 +87,12 @@ object Tools extends Logging{
} }
} }
def getLocationCodes(buffer:List[(Double,Double)]): IndexedSeq[(String,String,String)] = { def getLocationCodes(buffer:List[(Double,Double)]): IndexedSeq[(String,String,String,String)] = {
getAddressAndLocationCodes(buffer).map(x=>x._2).map{ locationCode => getAddressAndLocationCodes(buffer).map{ locationCode =>
val provinceCode = locationCode.substring(0,2) val provinceCode = locationCode._2.substring(0,2)
val cityCode = locationCode.substring(2,4) val cityCode = locationCode._2.substring(2,4)
val areaCode = locationCode.substring(4,6) val areaCode = locationCode._2.substring(4,6)
(provinceCode,cityCode,areaCode) (provinceCode,cityCode,areaCode,locationCode._1)
} }
} }
......
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