package com.yssh.service;
|
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import com.yssh.utils.DateUtils;
|
import com.yssh.utils.StringUtils;
|
import org.springframework.stereotype.Service;
|
|
import com.yssh.mapper.DictRecordMapper;
|
import com.yssh.mapper.SuYuanMapper;
|
import com.yssh.mapper.ThuAccuracyMapper;
|
import com.yssh.entity.DictRecord;
|
import com.yssh.entity.MonitorPointPosition;
|
import com.yssh.entity.SuYuanMonitorData;
|
import com.yssh.entity.ThuAccuracy;
|
import com.yssh.entity.ForecastAnalyseVo;
|
|
import javax.annotation.Resource;
|
|
@Service
|
public class ForecastAnalyseService {
|
@Resource
|
private CommonService commonService;
|
|
@Resource
|
private SuYuanMapper suYuanMapper;
|
|
@Resource
|
private DictRecordMapper dictRecordMapper;
|
|
@Resource
|
private ThuAccuracyMapper thuAccuracyMapper;
|
|
public List<ForecastAnalyseVo> getForecastAnalyse(String name, Date beginTime, Date endTime) {
|
List<ForecastAnalyseVo> result = new ArrayList<ForecastAnalyseVo>();
|
MonitorPointPosition checkPoint = commonService.select3dCheckPointByName(name);
|
if (StringUtils.isNull(checkPoint)) {
|
return null;
|
}
|
List<DictRecord> dictRecordList = dictRecordMapper.selectByTimeDictRecordList(Long.parseLong(DateUtils.parseDateToStr(DateUtils.YYYYMMDDHH, beginTime)), Long.parseLong(DateUtils.parseDateToStr(DateUtils.YYYYMMDDHH, endTime)));
|
List<String> tableNames = new ArrayList<String>();
|
dictRecordList.forEach(r -> {
|
tableNames.add(r.getTableName());
|
});
|
if (StringUtils.isNotEmpty(tableNames)) {
|
List<SuYuanMonitorData> monitorDatas = suYuanMapper.getMonitorData(tableNames, checkPoint.getId());
|
monitorDatas.forEach(m -> {
|
result.add(new ForecastAnalyseVo(0.0, m.getValue(), new Long(m.getTime())));
|
});
|
Map<String, Object> param = new HashMap<String, Object>();
|
param.put("name", name);
|
param.put("beginTime", beginTime);
|
param.put("endTime", endTime);
|
List<ThuAccuracy> data = thuAccuracyMapper.getForecastData(param);
|
data.forEach(s -> {
|
result.forEach(r -> {
|
if (Long.valueOf(s.getTime()).longValue() == r.getTime().longValue()) {
|
r.setForecastValue(Double.valueOf(s.getValue()));
|
}
|
});
|
});
|
}
|
return result;
|
}
|
}
|