package com.yssh.service.impl; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.yssh.dao.DictRecordMapper; import com.yssh.dao.SuYuanMapper; import com.yssh.dao.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.vo.ForecastAnalyseVo; import com.yssh.service.ICommonService; import com.yssh.service.IForecastAnalyseService; import com.yssh.utils.DateUtils; import com.yssh.utils.StringUtils; @Service public class ForecastAnalyseServiceImpl implements IForecastAnalyseService{ protected final Log logger = LogFactory.getLog(this.getClass()); @Autowired private ICommonService commonService; @Autowired private SuYuanMapper suYuanMapper; @Autowired private DictRecordMapper dictRecordMapper; @Autowired private ThuAccuracyMapper thuAccuracyMapper; @Override public List getForecastAnalyse(String name, Date beginTime, Date endTime) { List result = new ArrayList(); MonitorPointPosition checkPoint = commonService.select3dCheckPointByName(name); if (StringUtils.isNull(checkPoint)) { return null; } List dictRecordList = dictRecordMapper.selectByTimeDictRecordList(Long.parseLong(DateUtils.parseDateToStr(DateUtils.YYYYMMDDHH, beginTime)), Long.parseLong(DateUtils.parseDateToStr(DateUtils.YYYYMMDDHH, endTime))); List tableNames = new ArrayList(); dictRecordList.forEach(r -> {tableNames.add(r.getTableName());}); if (StringUtils.isNotEmpty(tableNames)) { List monitorDatas = suYuanMapper.getMonitorData(tableNames, checkPoint.getId()); monitorDatas.forEach(m -> { result.add(new ForecastAnalyseVo(0.0, m.getValue(), new Long(m.getTime()))); }); Map param = new HashMap(); param.put("name", name); param.put("beginTime", beginTime); param.put("endTime", endTime); List 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; } }