HumitureManagerImpl.java
3.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package com.myproject.manager.impl;
import com.google.common.collect.TreeBasedTable;
import com.myproject.bean.search.PageList;
import com.myproject.bean.update.Humiture;
import com.myproject.dao.mongo.IHumitureDao;
import com.myproject.exception.ValidateException;
import com.myproject.manager.IHumitureManager;
import com.myproject.util.DateUtil;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.Set;
@Service
public class HumitureManagerImpl implements IHumitureManager {
@Autowired
protected IHumitureDao humitureDao;
protected final transient Logger log = LogManager.getLogger(getClass());
@Override
public Humiture get(String id) {
return humitureDao.findOneById(id);
}
@Override
public Humiture save(Humiture object) throws ValidateException {
return humitureDao.save(object);
}
@Override
public void delete(Humiture object) throws ValidateException {
humitureDao.removeOne(object);
}
@Override
public List<Humiture> findAll() {
return humitureDao.findAll();
}
@Override
public PageList findByQuery(Query query, PageList pageList) {
pageList.setList(humitureDao.findByQuery(query, pageList.getPageNumber(), pageList.getObjectsPerPage()));
pageList.setFullListSize(humitureDao.countByQuery(query));
return pageList;
}
@Override
public void validate(Humiture object, List errors) {
}
@Override
public List<Humiture> latest(String cid, int days) {
long time = System.currentTimeMillis() - days * 24 * 60 * 60 * 1000L;
Query query = Query.query(Criteria.where("cid").is(cid).and("createDate").gt(new Date(time)));
return humitureDao.findByQuery(query);
}
@Override
public TreeBasedTable<String, String, Humiture> getChartData(Date fromDate, Date toDate){
//Date addOneDayToTime = DateUtil.addOneDayNoTime(toDate);
Criteria c = new Criteria().andOperator(Criteria.where("createDate").gte(fromDate),
Criteria.where("createDate").lt(toDate));
Query query = Query.query(c);
List<Humiture> results = humitureDao.findByQuery(query);
TreeBasedTable<String, String, Humiture> resultTable = TreeBasedTable.create();
long intevalTime = 5 * 1000;
String timeMask = "yyyy-MM-dd HH:mm:ss";
for (Humiture humiture: results) {
String boxKey = humiture.getCid();
//分钟数取整,如08分变成05分,方便图形显示时分组
long createTime = humiture.getCreateDate().getTime() / intevalTime;
String timeStr = DateUtil.toDateString(createTime, timeMask);
resultTable.put(boxKey,timeStr,humiture);
}
Set<String> allBoxes = resultTable.rowKeySet();
for (long time = fromDate.getTime(); time<= toDate.getTime(); time= time + intevalTime){
String timeStr = DateUtil.toDateString(time,timeMask);
for (String cidBoxKey : allBoxes){
Humiture value = resultTable.get(cidBoxKey, timeStr);
if(value == null){
resultTable.put(cidBoxKey,timeStr,new Humiture());
}
}
}
return resultTable;
}
}