StorageManagerImpl.java
6.7 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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
package com.myproject.manager.impl;
import com.myproject.bean.json.ChartItem;
import com.myproject.bean.json.DateBean;
import com.myproject.bean.search.PageList;
import com.myproject.bean.update.Storage;
import com.myproject.dao.mongo.IAlarmInfoDao;
import com.myproject.dao.mongo.IDataLogDao;
import com.myproject.dao.mongo.IStorageDao;
import com.myproject.exception.ValidateException;
import com.myproject.manager.IStorageManager;
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.Query;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.*;
@Service
public class StorageManagerImpl implements IStorageManager {
@Autowired
IStorageDao storageDao;
@Autowired
IDataLogDao dataLogDao;
@Autowired
IAlarmInfoDao alarmInfoDao;
protected final transient Logger log = LogManager.getLogger(getClass());
@Override
public Storage get(String id) {
return storageDao.findOneById(id);
}
@Override
public Storage findOneByCid(String cid) {
return storageDao.findOneByCondition(new String[]{"cid"}, new String[]{cid});
}
@Override
public ChartItem countUsedPos(){
return storageDao.countUsedPos();
}
@Override
public Storage findEmptyStorage() {
Storage storage = null;
List<Storage> storageList = storageDao.findListByCondition(new String[]{"emptySlots"}, new String[]{});
if (storageList != null && storageList.size() > 0) {
for (Storage s : storageList) {
if (s.isAvailable()) {
storage = s;
}
}
}
return storage;
}
/**
* 获取某个时间段的统计信息ChartItem 的 value 为入库量,value2为出库量,value3为报警次数,value4为报警持续时间
*/
@Override
public Collection<ChartItem> getRunStatusData(Date fromDate, Date toDate,String partNumber){
if(fromDate == null || toDate == null){
return new ArrayList<>();
}
LinkedHashMap<String,ChartItem> inOutDataMap = new LinkedHashMap<>();
Date startDay = DateUtil.getMinDate(fromDate, toDate);
Date endDay = DateUtil.getMaxDate(fromDate,toDate);
/**
* 结束时间+1天,包含结束那一天
*/
long endTime = endDay.getTime();
Calendar c = Calendar.getInstance();
c.setTime(startDay);
do{
int dayOfYear = c.get(Calendar.DAY_OF_YEAR);
int year = c.get(Calendar.YEAR);
String dayStr = DateUtil.toDateString(c.getTime());
ChartItem item = new ChartItem();
item.setLabel(dayStr);
String yearAndDay = year + "-" + dayOfYear;
inOutDataMap.put(yearAndDay, item);
c.add(Calendar.DAY_OF_YEAR,1);
}while (c.getTimeInMillis() <= endTime);
List<ChartItem> putInData = dataLogDao.putInChart(startDay, endDay,partNumber);
for (ChartItem putInItem : putInData){
DateBean dateBean = putInItem.getDateBean();
ChartItem item = inOutDataMap.get(dateBean.getYear() + "-" + dateBean.getDayOfYear());
if(item != null){
item.setValue(putInItem.getValue());
}
}
List<ChartItem> checkOutData = dataLogDao.checkOutChart(startDay, endDay,partNumber);
for (ChartItem checkOutItem : checkOutData){
DateBean dateBean = checkOutItem.getDateBean();
ChartItem item = inOutDataMap.get(dateBean.getYear() + "-" + dateBean.getDayOfYear());
if(item != null){
item.setValue2(checkOutItem.getValue());
}
}
// List<ChartItem> alarmData = alarmInfoDao.alarmChart(startDay, endDay);
// for (ChartItem alarmItem : alarmData){
// DateBean dateBean = alarmItem.getDateBean();
// ChartItem item = inOutDataMap.get(dateBean.getYear() + "-" + dateBean.getDayOfYear());
// if(item != null){
// item.setValue3(alarmItem.getValue());
// item.setValue4(alarmItem.getValue2());
// }
// }
//alarmInfoDao.alarmChartByType(startDay,endDay);
//alarmInfoDao.alarmChartByBox(startDay,endDay);
return inOutDataMap.values();
}
@Override
public Storage save(Storage storage) throws ValidateException {
if (!StringUtils.isEmpty(storage.getId())) {
Storage oldStorage = storageDao.findOneById(storage.getId());
if (oldStorage == null) {
log.error("Storage id: " + storage.getId() + " is not exist");
throw new ValidateException("storage.error.notExist");
}
log.debug("Create new storage");
}
Storage s = storageDao.findOneByCondition(new String[]{"name"}, new String[]{storage.getName()});
if (s != null && s.getName().equals(storage.getName()) && !s.getId().equals(storage.getId())) {
log.error("Storage name " + s.getName() + " is not unique");
throw new ValidateException("storage.error.unique");
}
Storage s1 = findOneByCid(storage.getCid());
if (s1 != null && s1.getCid() != null && storage.getCid() != null) {
if (s1.getCid().equals(storage.getCid()) && !s1.getId().equals(storage.getId())) {
log.error("Storage cid " + s1.getCid() + " is not unique");
throw new ValidateException("storage.error.cidUnique");
}
}
storage = storageDao.save(storage);
log.debug("Save storage with id " + storage.getId());
return storage;
}
@Override
public List<Storage> findByArea(String areaId){
return storageDao.findListByCondition(new String[]{"areaId"}, new String[]{areaId});
}
@Override
public void delete(Storage storage) throws ValidateException {
//@TODO validation
log.debug("Delete storage with id " + storage.getId());
storageDao.removeOne(storage);
}
@Override
public List<Storage> findAll() {
return storageDao.findAll();
}
@Override
public PageList findByQuery(Query query, PageList pageList) {
pageList.setList(storageDao.findByQuery(query, pageList.getPageNumber(), pageList.getObjectsPerPage()));
pageList.setFullListSize(storageDao.countByQuery(query));
return pageList;
}
@Override
public void validate(Storage object, List errors) {
}
public void setStorageDao(IStorageDao storageDao) {
this.storageDao = storageDao;
}
}