Commit 187b5ec5 by shenjinzhu

更新,时更新

parent b496c9ce
package com.zhiwei.manage.dao; package com.zhiwei.manage.dao;
import java.lang.reflect.Field;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
...@@ -15,6 +16,7 @@ import org.bson.conversions.Bson; ...@@ -15,6 +16,7 @@ import org.bson.conversions.Bson;
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.mongodb.BasicDBObject; import com.mongodb.BasicDBObject;
...@@ -26,6 +28,7 @@ import com.mongodb.Mongo; ...@@ -26,6 +28,7 @@ import com.mongodb.Mongo;
import com.mongodb.MongoClient; import com.mongodb.MongoClient;
import com.mongodb.MongoCredential; import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress; import com.mongodb.ServerAddress;
import com.mongodb.WriteResult;
import com.mongodb.client.FindIterable; import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor; import com.mongodb.client.MongoCursor;
...@@ -77,7 +80,36 @@ public class DataDaoImpl implements DataDao { ...@@ -77,7 +80,36 @@ public class DataDaoImpl implements DataDao {
@Override @Override
public void insert(Data data) { public void insert(Data data) {
mongo.insert(data, "Data"); Data d = null;
if (data != null) {
d = mongo.findOne(Query.query(Criteria.where("time").is(data.getTime())
.andOperator(Criteria.where("tempName").is(data.getTempName()))), Data.class);
} else {
d = mongo.findOne(Query.query(
Criteria.where("time").is(data.getTime()).andOperator(Criteria.where("pt").is(data.getPt()))),
Data.class);
}
if (d == null) {
mongo.insert(data, "Data");
}else {
d.setCount(data.getCount() + d.getCount());
Update update = new Update();
Field[] fields = d.getClass().getDeclaredFields();
for (int j = 0; j < fields.length; j++) {
fields[j].setAccessible(true);
try {
if (fields[j].getName().equals("dataId")) {
continue;
}
if (fields[j].get(d) != null)
update.set(fields[j].getName(), fields[j].get(d));
} catch (Exception e) {
e.printStackTrace();
}
}
mongo.updateFirst(Query.query(Criteria.where("_id").is(d.getDataId())), update,
Data.class);
}
} }
@Override @Override
...@@ -180,7 +212,7 @@ public class DataDaoImpl implements DataDao { ...@@ -180,7 +212,7 @@ public class DataDaoImpl implements DataDao {
System.out.println(end); System.out.println(end);
} }
MongoClient mongoClient = null; MongoClient mongoClient = null;
if (ser.getDbUsername() != null&&ser.getDbUsername().length()>2) { if (ser.getDbUsername() != null && ser.getDbUsername().length() > 2) {
ServerAddress sa = new ServerAddress(ser.getDbHost(), ser.getDbPort()); ServerAddress sa = new ServerAddress(ser.getDbHost(), ser.getDbPort());
List<MongoCredential> mongoCredentialList = new ArrayList<MongoCredential>(); List<MongoCredential> mongoCredentialList = new ArrayList<MongoCredential>();
mongoCredentialList.add(MongoCredential.createMongoCRCredential(ser.getDbUsername(), mongoCredentialList.add(MongoCredential.createMongoCRCredential(ser.getDbUsername(),
......
...@@ -46,6 +46,7 @@ public class MainThread extends Thread { ...@@ -46,6 +46,7 @@ public class MainThread extends Thread {
/** /**
* 加入执行map * 加入执行map
*
* @param template * @param template
*/ */
public static boolean pushMap(String templateId) { public static boolean pushMap(String templateId) {
...@@ -147,77 +148,76 @@ public class MainThread extends Thread { ...@@ -147,77 +148,76 @@ public class MainThread extends Thread {
ServerServiceImpl serverService = BeanFactory.getBean(ServerServiceImpl.class); ServerServiceImpl serverService = BeanFactory.getBean(ServerServiceImpl.class);
MessageServiceImpl msgService = BeanFactory.getBean(MessageServiceImpl.class); MessageServiceImpl msgService = BeanFactory.getBean(MessageServiceImpl.class);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH");
while (true) { while (true) {
Calendar countTest = Calendar.getInstance(); String today = sdf.format(new Date());
Calendar start = Calendar.getInstance(); Calendar start = Calendar.getInstance();
Calendar end = Calendar.getInstance(); Calendar end = Calendar.getInstance();
// start.set(Calendar.HOUR_OF_DAY, 0); try {
// end.set(Calendar.HOUR_OF_DAY, 0); start.setTime(sdf2.parse(sdf2.format(start.getTime())));
if (start.get(Calendar.HOUR_OF_DAY) < 1) { if (start.get(Calendar.HOUR_OF_DAY) > 1) {
try { start.add(Calendar.HOUR_OF_DAY, -1);
countTest.setTime(sdf.parse(sdf.format(countTest.getTime()))); } else {
start.setTime(sdf.parse(sdf.format(countTest.getTime()))); start.setTime(sdf.parse(today));
end.setTime(sdf.parse(sdf.format(countTest.getTime())));
} catch (ParseException e1) {
e1.printStackTrace();
} }
start.add(Calendar.DATE, -1); end.setTime(sdf2.parse(sdf2.format(end.getTime())));
countTest.add(Calendar.DATE, -7); } catch (ParseException e2) {
try { e2.printStackTrace();
mainLock.lock(); }
int count = 0; try {
List<Channel> channel = serverService.findDisChannel(); mainLock.lock();
for (Channel chan : channel) { int count = 0;
List<Channel> channel = serverService.findDisChannel();
for (Channel chan : channel) {
try {
count = (int) dataService.finCountByDayData(start.getTime(), end.getTime(), chan.getPt());
Data data = new Data();
data.setCount(count);
data.setPt(chan.getPt());
data.setTime(start.getTime());
dataService.insert(data);
log.info(TimeUtil.yearToDay(start.getTime()) + "|" + chan.getPt() + "|入库");
} catch (Exception e) {
log.error(chan.getPt() + "入库出错,错误信息{}", e);
}
}
Set<String> keys = allTmp.keySet();
for (Iterator<String> it = keys.iterator(); it.hasNext();) {
String key = it.next();
Template tmp = allTmp.get(key);
if (tmp.getSpyderInfoId() != null) {
int cwCount = 0;
String pt = crawService.findPt(tmp.getSpyderInfoId());
cwCount = (int) dataService.finCountByDayData(start.getTime(), end.getTime(), tmp);
try { try {
count = (int) dataService.finCountByDayData(start.getTime(), end.getTime(), chan.getPt());
Data data = new Data(); Data data = new Data();
data.setCount(count); data.setCount(cwCount);
data.setPt(chan.getPt());
data.setTime(start.getTime()); data.setTime(start.getTime());
data.setTempName(tmp.getTempName());
dataService.insert(data); dataService.insert(data);
log.info(TimeUtil.yearToDay(start.getTime()) + "|" + chan.getPt() + "|入库"); log.info(TimeUtil.yearToDay(start.getTime()) + "|" + tmp.getTempName() + "|入库");
} catch (Exception e) { } catch (Exception e) {
log.error(chan.getPt()+"入库出错,错误信息{}",e); log.error(tmp.getTempName() + "入库出错,错误信息{}", e);
} }
} if (cwCount < tmp.getNewsNumber()) {
Set<String> keys = allTmp.keySet(); Message m = new Message();
for (Iterator<String> it = keys.iterator(); it.hasNext();) { m.setHandle(false);
String key = it.next(); m.setCreateDate(start.getTime());
Template tmp = allTmp.get(key); m.setTemplateLv(tmp.getTemplateLv());
if (tmp.getSpyderInfoId() != null) { m.setTempName(tmp.getTempName());
int cwCount = 0; m.setErrorType("count");
String pt = crawService.findPt(tmp.getSpyderInfoId()); m.setPt(pt);
cwCount = (int) dataService.finCountByDayData(start.getTime(), end.getTime(), tmp); m.setErrorMsg("数据量检测:" + tmp.getTempName() + "的数据为小于" + tmp.getNewsNumber());
try { msgService.insert(m);
Data data = new Data();
data.setCount(cwCount);
data.setTime(start.getTime());
data.setTempName(tmp.getTempName());
dataService.insert(data);
log.info(TimeUtil.yearToDay(start.getTime()) + "|" + tmp.getTempName() + "|入库");
} catch (Exception e) {
log.error(tmp.getTempName()+"入库出错,错误信息{}",e);
}
if (cwCount < tmp.getNewsNumber()) {
Message m = new Message();
m.setHandle(false);
m.setCreateDate(start.getTime());
m.setTemplateLv(tmp.getTemplateLv());
m.setTempName(tmp.getTempName());
m.setPt(pt);
m.setErrorMsg("数据量检测:" + tmp.getTempName() + "的数据为小于" + tmp.getNewsNumber());
msgService.insert(m);
}
} }
} }
} catch (Exception e) {
e.printStackTrace();
} finally {
mainLock.unlock();
} }
Tools.sleep(1000 * 60 * 60); } catch (Exception e) {
e.printStackTrace();
} finally {
mainLock.unlock();
} }
Tools.sleep(1000 * 30); Tools.sleep(1000 * 60 * 60);
} }
} }
......
...@@ -37,7 +37,7 @@ public class Task implements Runnable { ...@@ -37,7 +37,7 @@ public class Task implements Runnable {
public void run() { public void run() {
MessageService messageService = BeanFactory.getBean(MessageService.class); MessageService messageService = BeanFactory.getBean(MessageService.class);
NewsService newsService = BeanFactory.getBean(NewsService.class); NewsService newsService = BeanFactory.getBean(NewsService.class);
// 连通性测试 // 连通性测试
if (ping != null) { if (ping != null) {
if (MainThread.mainMap.get(ping.getTemplateId()) != null) { if (MainThread.mainMap.get(ping.getTemplateId()) != null) {
URL url; URL url;
...@@ -119,7 +119,7 @@ public class Task implements Runnable { ...@@ -119,7 +119,7 @@ public class Task implements Runnable {
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("field"); msg.setErrorType("count");
msg.setTempName(field.getTempName()); msg.setTempName(field.getTempName());
messageService.insert(msg); messageService.insert(msg);
} }
...@@ -166,7 +166,7 @@ public class Task implements Runnable { ...@@ -166,7 +166,7 @@ public class Task implements Runnable {
msg.setErrorMsg("延时检测发现库内的数据小于预设检测数量:" + delayed.getTestCount() + "条,实际数据量为" + list.size()); msg.setErrorMsg("延时检测发现库内的数据小于预设检测数量:" + delayed.getTestCount() + "条,实际数据量为" + list.size());
msg.setHandle(false); msg.setHandle(false);
msg.setPt(delayed.getPt()); msg.setPt(delayed.getPt());
msg.setErrorType("delayed"); msg.setErrorType("count");
msg.setTemplateCreator(tp.getCreator()); msg.setTemplateCreator(tp.getCreator());
msg.setTemplateLv(tp.getTemplateLv()); msg.setTemplateLv(tp.getTemplateLv());
msg.setTempName(delayed.getTempName()); msg.setTempName(delayed.getTempName());
......
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