Commit 63fcf6fa by admin

预警部分的数据修改

parent 8943d8e5
...@@ -21,5 +21,5 @@ public interface NewsDao { ...@@ -21,5 +21,5 @@ public interface NewsDao {
public List<EasyNews> finAllNews(Date start,Date end); public List<EasyNews> finAllNews(Date start,Date end);
public List<Map<String,Object>> findNews(String host,int port,String dbNamel,String collection,int count,String id,String pt); // public List<Map<String,Object>> findNews(String host,int port,String dbNamel,String collection,int count,String id,String pt);
} }
...@@ -116,32 +116,32 @@ public class NewsDaoImpl implements NewsDao { ...@@ -116,32 +116,32 @@ public class NewsDaoImpl implements NewsDao {
/** /**
* 获取新闻检测 * 获取新闻检测
*/ */
@SuppressWarnings("unchecked") // @SuppressWarnings("unchecked")
@Override // @Override
public List<Map<String, Object>> findNews(String host, int port, String dbNamel, String collection, int count, // public List<Map<String, Object>> findNews(String host, int port, String dbNamel, String collection, int count,
String id, String pt) { // String id, String pt) {
Calendar cal = Calendar.getInstance(); // Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1); // cal.add(Calendar.DATE, -1);
int month = cal.get(Calendar.MONTH) + 1; // int month = cal.get(Calendar.MONTH) + 1;
String end = cal.get(Calendar.YEAR) + "" + (month > 9 ? month : "0" + month); // String end = cal.get(Calendar.YEAR) + "" + (month > 9 ? month : "0" + month);
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); // List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
DBCollection con = mongo.getCollection(collection + end); // DBCollection con = mongo.getCollection(collection + end);
if (id != null && !id.equals("")) { // if (id != null && !id.equals("")) {
DBCursor cur = con.find(new BasicDBObject("spyderInfoId", id)).sort(new BasicDBObject("rsid", -1)) // DBCursor cur = con.find(new BasicDBObject("spyderInfoId", id)).sort(new BasicDBObject("rsid", -1))
.limit(count); // .limit(count);
while (cur.hasNext()) { // while (cur.hasNext()) {
Map<String, Object> map = (Map<String, Object>) cur.next(); // Map<String, Object> map = (Map<String, Object>) cur.next();
list.add(map); // list.add(map);
} // }
} else { // } else {
DBCursor cur = con.find().sort(new BasicDBObject("rsid", -1)) // DBCursor cur = con.find().sort(new BasicDBObject("rsid", -1))
.limit(count); // .limit(count);
while (cur.hasNext()) { // while (cur.hasNext()) {
Map<String, Object> map = (Map<String, Object>) cur.next(); // Map<String, Object> map = (Map<String, Object>) cur.next();
list.add(map); // list.add(map);
} // }
} // }
return list; // return list;
} // }
} }
...@@ -2,12 +2,17 @@ package com.zhiwei.manage.handle; ...@@ -2,12 +2,17 @@ package com.zhiwei.manage.handle;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.URL; import java.net.URL;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.zhiwei.manage.bean.FieldIntegerity; import com.zhiwei.manage.bean.FieldIntegerity;
import com.zhiwei.manage.bean.Message; import com.zhiwei.manage.bean.Message;
import com.zhiwei.manage.bean.NewsDelayed; import com.zhiwei.manage.bean.NewsDelayed;
...@@ -16,12 +21,18 @@ import com.zhiwei.manage.bean.Template; ...@@ -16,12 +21,18 @@ import com.zhiwei.manage.bean.Template;
import com.zhiwei.manage.orm.BeanFactory; import com.zhiwei.manage.orm.BeanFactory;
import com.zhiwei.manage.service.MessageService; import com.zhiwei.manage.service.MessageService;
import com.zhiwei.manage.service.NewsService; import com.zhiwei.manage.service.NewsService;
/**
* 任务执行
* @author admin
*
*/
public class Task implements Runnable { public class Task implements Runnable {
private NewsDelayed delayed; private NewsDelayed delayed;
private PingUrl ping; private PingUrl ping;
private FieldIntegerity field; private FieldIntegerity field;
final static SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS Z");
private final static Log log=LogFactory.getLog(Task.class);
public Task(Object runMsg) { public Task(Object runMsg) {
if (runMsg instanceof NewsDelayed) { if (runMsg instanceof NewsDelayed) {
...@@ -35,6 +46,7 @@ public class Task implements Runnable { ...@@ -35,6 +46,7 @@ public class Task implements Runnable {
@Override @Override
public void run() { public void run() {
System.out.println("预警部分启动");
MessageService messageService = BeanFactory.getBean(MessageService.class); MessageService messageService = BeanFactory.getBean(MessageService.class);
NewsService newsService = BeanFactory.getBean(NewsService.class); NewsService newsService = BeanFactory.getBean(NewsService.class);
// 连通性测试 // 连通性测试
...@@ -124,68 +136,68 @@ public class Task implements Runnable { ...@@ -124,68 +136,68 @@ public class Task implements Runnable {
} }
} }
} }
if (field != null) { // if (field != null) {//字段缺失率,采集部分已经对缺失字段做了处理,没什么必要检测了
if (MainThread.mainMap.get(field.getTemplateId()) != null) { // if (MainThread.mainMap.get(field.getTemplateId()) != null) {
List<Map<String, Object>> list = newsService.findNews(field.getHost(), field.getPort(), // List<Map<String, Object>> list = newsService.findNews(field.getHost(), field.getPort(),
field.getdBName(), field.getCollection(), field.getTestCount(), field.getSpyderInfoId(), // field.getdBName(), field.getCollection(), field.getTestCount(), field.getSpyderInfoId(),
field.getPt()); // field.getPt());
if (list.size() ==0) { // if (list.size() ==0) {
Template tp = MainThread.mainMap.get(field.getTemplateId()); // Template tp = MainThread.mainMap.get(field.getTemplateId());
Message msg = new Message(); // Message msg = new Message();
msg.setCreateDate(new Date()); // msg.setCreateDate(new Date());
msg.setErrorMsg("字段检测发现库内的数据为0"); // msg.setErrorMsg("字段检测发现库内的数据为0");
msg.setHandle(false); // msg.setHandle(false);
msg.setPt(field.getPt()); // msg.setPt(field.getPt());
msg.setTemplateCreator(tp.getCreator()); // msg.setTemplateCreator(tp.getCreator());
msg.setTemplateLv(tp.getTemplateLv()); // msg.setTemplateLv(tp.getTemplateLv());
msg.setErrorType("count2"); // msg.setErrorType("count2");
msg.setTempName(field.getTempName()); // msg.setTempName(field.getTempName());
messageService.update(msg,field.getPt()); // messageService.update(msg,field.getPt());
} else { // } else {
Message msg = messageService.findMsg(field.getTempName(), "count2"); // Message msg = messageService.findMsg(field.getTempName(), "count2");
if (msg != null) { // if (msg != null) {
List<String> ids = new ArrayList<>(); // List<String> ids = new ArrayList<>();
ids.add(msg.getMessageId()); // ids.add(msg.getMessageId());
messageService.delete(ids, field.getPt()); // messageService.delete(ids, field.getPt());
} // }
} // }
String[] fields = field.getField().split(","); // String[] fields = field.getField().split(",");
int count = list.size(); // int count = list.size();
for (String fid : fields) { // for (String fid : fields) {
String str = ""; // String str = "";
int num = count; // int num = count;
for (Map<String, Object> map : list) { // for (Map<String, Object> map : list) {
if (map.get(fid) == null) { // if (map.get(fid) == null) {
num--; // num--;
str = String.valueOf(map.get("_id")); // str = String.valueOf(map.get("_id"));
} else if (String.valueOf(map.get(fid)).length() < 1) { // } else if (String.valueOf(map.get(fid)).length() < 1) {
num--; // num--;
str = String.valueOf(map.get("_id")); // str = String.valueOf(map.get("_id"));
} // }
} // }
if (num / 1.0 / count < field.getFieldIntegrityRate() / 100.0) { // if (num / 1.0 / count < field.getFieldIntegrityRate() / 100.0) {
Template tp = MainThread.mainMap.get(field.getTemplateId()); // Template tp = MainThread.mainMap.get(field.getTemplateId());
Message msg = new Message(); // Message msg = new Message();
msg.setCreateDate(new Date()); // msg.setCreateDate(new Date());
msg.setErrorMsg(fid + "字段存在缺失,完整率" + num / 1.0 / count + "其中一条:" + str); // msg.setErrorMsg(fid + "字段存在缺失,完整率" + num / 1.0 / count + "其中一条:" + str);
msg.setHandle(false); // msg.setHandle(false);
msg.setPt(field.getPt()); // msg.setPt(field.getPt());
msg.setErrorType("field"); // msg.setErrorType("field");
msg.setTemplateCreator(tp.getCreator()); // msg.setTemplateCreator(tp.getCreator());
msg.setTemplateLv(tp.getTemplateLv()); // msg.setTemplateLv(tp.getTemplateLv());
msg.setTempName(field.getTempName()); // msg.setTempName(field.getTempName());
messageService.update(msg,field.getPt()); // messageService.update(msg,field.getPt());
} else { // } else {
Message msg = messageService.findMsg(field.getTempName(), "field"); // Message msg = messageService.findMsg(field.getTempName(), "field");
if (msg != null) { // if (msg != null) {
List<String> ids = new ArrayList<>(); // List<String> ids = new ArrayList<>();
ids.add(msg.getMessageId()); // ids.add(msg.getMessageId());
messageService.delete(ids, field.getPt()); // messageService.delete(ids, field.getPt());
} // }
} // }
} // }
} // }
} // }
if (delayed != null) { if (delayed != null) {
if (MainThread.mainMap.get(delayed.getTemplateId()) != null) { if (MainThread.mainMap.get(delayed.getTemplateId()) != null) {
List<Map<String, Object>> list = newsService.findNews(delayed.getHost(), delayed.getPort(), List<Map<String, Object>> list = newsService.findNews(delayed.getHost(), delayed.getPort(),
...@@ -207,7 +219,12 @@ public class Task implements Runnable { ...@@ -207,7 +219,12 @@ public class Task implements Runnable {
Date time = null; Date time = null;
Date savetime = null; Date savetime = null;
if (map.get(delayed.getTime()) != null) { if (map.get(delayed.getTime()) != null) {
time = (Date) map.get(delayed.getTime()); try {
String date = String.valueOf(map.get(delayed.getTime())).replace("Z", " UTC");
time = sdf.parse(String.valueOf(date));
} catch (ParseException e) {
log.error("时间转换出错【{}】",e);
}
} }
if (map.get(delayed.getSavetime()) != null) { if (map.get(delayed.getSavetime()) != null) {
Date d = new Date((Long) map.get(delayed.getSavetime())); Date d = new Date((Long) map.get(delayed.getSavetime()));
......
...@@ -10,12 +10,13 @@ import org.springframework.stereotype.Service; ...@@ -10,12 +10,13 @@ import org.springframework.stereotype.Service;
import com.zhiwei.manage.bean.EasyNews; import com.zhiwei.manage.bean.EasyNews;
import com.zhiwei.manage.bean.News; import com.zhiwei.manage.bean.News;
import com.zhiwei.manage.dao.NewsDao; import com.zhiwei.manage.dao.NewsDao;
import com.zhiwei.manage.util.ESUtil;
@Service @Service
public class NewsServiceImpl implements NewsService{ public class NewsServiceImpl implements NewsService{
@Autowired @Autowired
private NewsDao newsDao; private NewsDao newsDao;
private ESUtil es=new ESUtil();
@Override @Override
public List<News> findByNew(int delayedCount, String type, String source) { public List<News> findByNew(int delayedCount, String type, String source) {
...@@ -51,7 +52,7 @@ public class NewsServiceImpl implements NewsService{ ...@@ -51,7 +52,7 @@ public class NewsServiceImpl implements NewsService{
@Override @Override
public List<Map<String, Object>> findNews(String host, int port, String dbNamel, String collection, int count, public List<Map<String, Object>> findNews(String host, int port, String dbNamel, String collection, int count,
String id,String pt) { String id,String pt) {
return newsDao.findNews(host, port, dbNamel, collection, count, id, pt); return es.getDatasMap(host, port, dbNamel, collection, count, id, pt);
} }
......
...@@ -18,9 +18,12 @@ import org.elasticsearch.index.query.QueryBuilder; ...@@ -18,9 +18,12 @@ import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit; import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits; import org.elasticsearch.search.SearchHits;
import org.elasticsearch.search.sort.SortBuilder;
import org.elasticsearch.search.sort.SortOrder;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.zhiwei.manage.bean.Data; import com.zhiwei.manage.bean.Data;
...@@ -93,22 +96,67 @@ public class ESUtil { ...@@ -93,22 +96,67 @@ public class ESUtil {
} }
return 0; return 0;
} }
public static void main(String[] args) throws ParseException { public static void main(String[] args) throws ParseException {
Client esClient = null; // Client esClient = null;
Calendar cal=Calendar.getInstance(); // Calendar cal=Calendar.getInstance();
cal.add(Calendar.HOUR_OF_DAY, -24); // cal.add(Calendar.HOUR_OF_DAY, -24);
esClient = new ESClient("Media-University","1.119.44.201", 9300).getClient(); // esClient = new ESClient("Media-University","1.119.44.201", 9300).getClient();
SearchRequestBuilder srb = esClient.prepareSearch("mediaspider*"); // SearchRequestBuilder srb = esClient.prepareSearch("mediaspider*");
BoolQueryBuilder bb = new BoolQueryBuilder(); // BoolQueryBuilder bb = new BoolQueryBuilder();
srb.setQuery(bb); // srb.setQuery(bb);
QueryBuilder matchQuery = QueryBuilders.matchPhraseQuery("type", "今日头条"); // QueryBuilder matchQuery = QueryBuilders.matchPhraseQuery("type", "今日头条");
bb.should(matchQuery); // bb.should(matchQuery);
srb.setSize(1); // srb.setSize(1);
srb.setPostFilter(QueryBuilders.rangeQuery("time").gte(getNeedTime(cal)).lte(getNeedTime(Calendar.getInstance()))); // srb.setPostFilter(QueryBuilders.rangeQuery("time").gte(getNeedTime(cal)).lte(getNeedTime(Calendar.getInstance())));
SearchResponse response = srb.execute().actionGet(); // SearchResponse response = srb.execute().actionGet();
SearchHits searchHits = response.getHits(); // SearchHits searchHits = response.getHits();
System.out.println(searchHits.getTotalHits()); // System.out.println(searchHits.getTotalHits());
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS Z");
for(Map<String,Object> map:getDatasMap("1.119.44.201", 9300, "Media-University", "mediaspider*", 20, "UrlListDetail74ec93ff-2275-4f22-bb62-bae580f2d43b", "网媒")) {
System.out.println(map.get("title"));
String date = map.get("time").toString().replace("Z", " UTC");
// System.out.println(map.get("time"));
System.out.println(sdf.parse(date));
System.out.println((long)map.get("savetime"));
}
}
/**
* 数据查询。获取数据
*
* @param start
* @param end
* @param pt
* @param type
* @param value
* @param spyderInfoId
* @return
*/
public static List<Map<String, Object>> getDatasMap(String host, int port, String dbNamel, String collection, int count,
String id,String pt) {
List<Map<String,Object>> list=new ArrayList<>();
try {
Client esClient = new ESClient(dbNamel, host, port).getClient();
// 搜索数据
SearchRequestBuilder srb = esClient.prepareSearch(collection);
BoolQueryBuilder bb = new BoolQueryBuilder();
srb.setQuery(bb);
srb.addSort("time", SortOrder.DESC);
QueryBuilder matchQuery = QueryBuilders.matchPhraseQuery("spyderInfoId",id);
bb.should(matchQuery);
srb.setSize(count);
SearchResponse response = srb.execute().actionGet();
SearchHits searchHits = response.getHits();
for(SearchHit result:searchHits) {
Map<String,Object> map=result.getSource();
list.add(map);
}
} catch (Exception e) {
log.error("es检索出错,错误信息【{}】", e);
}
return list;
} }
public static String getNeedTime(Calendar cal) { public static String getNeedTime(Calendar cal) {
......
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