|
@@ -13,6 +13,10 @@ import com.usky.backend.domain.request.HistoryQueryVo;
|
|
|
import com.usky.backend.domain.request.LastQueryVo;
|
|
|
import com.usky.backend.domain.response.HistoryResultVo;
|
|
|
import com.usky.backend.domain.response.LastResultVo;
|
|
|
+import com.usky.backend.domain.vo.DataAverageExportVO;
|
|
|
+import com.usky.backend.domain.vo.DataAverageRequestVO;
|
|
|
+import com.usky.backend.domain.vo.DataAverageResponseVO;
|
|
|
+import com.usky.backend.domain.vo.DataHistoryAvergerVO;
|
|
|
import com.usky.backend.mapper.DataRealTimeMapper;
|
|
|
import com.usky.backend.service.*;
|
|
|
import net.sf.ehcache.search.expression.IsNull;
|
|
@@ -286,4 +290,193 @@ public class DataQueryServiceImpl implements DataQueryService {
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public List<DataAverageResponseVO> deviceDataAverage(DataAverageRequestVO requestVO){
|
|
|
+ List<DataAverageResponseVO> list = new ArrayList<>();
|
|
|
+
|
|
|
+ //设备类型简称
|
|
|
+ String typeAbbrevia = dataRealTimeMapper.QueryDeviceTypeAbbrevia(requestVO.getDeviceType());
|
|
|
+ String tableName = "data_"+typeAbbrevia+"_history";
|
|
|
+
|
|
|
+ int leftLen = 0;
|
|
|
+ if(requestVO.getDataType().equals("Day")){
|
|
|
+ leftLen = 10;
|
|
|
+ }else if(requestVO.getDataType().equals("Month")){
|
|
|
+ leftLen = 7;
|
|
|
+ }else if(requestVO.getDataType().equals("Year")){
|
|
|
+ leftLen = 4;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<DataHistoryAvergerVO> list1 = new ArrayList<>();
|
|
|
+ if(requestVO.getGroupType().equals("Each")){
|
|
|
+ list1 = dataRealTimeMapper.QueryEachHistoryAvrgData(leftLen,tableName,requestVO.getStartTime(),requestVO.getEndTime(),requestVO.getProductCode(),requestVO.getDeviceIds(),requestVO.getAttributeNames());
|
|
|
+ }else if(requestVO.getGroupType().equals("Total")){
|
|
|
+ list1 = dataRealTimeMapper.QueryTotalHistoryAvrgData(leftLen,tableName,requestVO.getStartTime(),requestVO.getEndTime(),requestVO.getProductCode(),requestVO.getAttributeNames());
|
|
|
+ }
|
|
|
+ if(CollectionUtils.isNotEmpty(list1)){
|
|
|
+ List<String> dateList = new ArrayList<>();
|
|
|
+ List<String> deviceIdList = new ArrayList<>();
|
|
|
+ for(int i=0;i<list1.size();i++){
|
|
|
+ if(!dateList.contains(list1.get(i).getDataDate())){
|
|
|
+ dateList.add(list1.get(i).getDataDate());
|
|
|
+ }
|
|
|
+ if(!deviceIdList.contains(list1.get(i).getDeviceId())){
|
|
|
+ deviceIdList.add(list1.get(i).getDeviceId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(CollectionUtils.isNotEmpty(dateList) && CollectionUtils.isNotEmpty(deviceIdList)){
|
|
|
+ for(int i=0;i<dateList.size();i++){
|
|
|
+ for(int j=0;j<deviceIdList.size();j++){
|
|
|
+ DataAverageResponseVO responseVO = new DataAverageResponseVO();
|
|
|
+ responseVO.setDataDate(dateList.get(i));
|
|
|
+ responseVO.setDeviceId(deviceIdList.get(j));
|
|
|
+ for(int k=0;k<list1.size();k++){
|
|
|
+ if(dateList.get(i).equals(list1.get(k).getDataDate()) && deviceIdList.get(j).equals(list1.get(k).getDeviceId())){
|
|
|
+ if(list1.get(k).getAttributeName().equals("wd")){
|
|
|
+ responseVO.setWd(Double.toString(list1.get(k).getAvrg()));
|
|
|
+ }
|
|
|
+ if(list1.get(k).getAttributeName().equals("sd")){
|
|
|
+ responseVO.setSd(Double.toString(list1.get(k).getAvrg()));
|
|
|
+ }
|
|
|
+ if(list1.get(k).getAttributeName().equals("pm2_5")){
|
|
|
+ responseVO.setPm2_5(Double.toString(list1.get(k).getAvrg()));
|
|
|
+ }
|
|
|
+ if(list1.get(k).getAttributeName().equals("co2")){
|
|
|
+ responseVO.setCo2(Double.toString(list1.get(k).getAvrg()));
|
|
|
+ }
|
|
|
+ if(list1.get(k).getAttributeName().equals("voc")){ //voc平均值(优就是1,良是2,差是3)
|
|
|
+ String name = "";
|
|
|
+ double value = list1.get(k).getAvrg();
|
|
|
+ if(value>=1 && value<=1.5){
|
|
|
+ name = "优";
|
|
|
+ }else if(value>1.5 && value<=2.5){
|
|
|
+ name = "良";
|
|
|
+ }else if(value>2.5 && value<=3){
|
|
|
+ name = "差";
|
|
|
+ }
|
|
|
+ responseVO.setVoc(name);
|
|
|
+ }
|
|
|
+ if(list1.get(k).getAttributeName().equals("quality")){ //空气质量平均值(1、优质 2、良好 3、轻度污染 4、中度污染 5、重度污染 6、严重污染)
|
|
|
+ String name = "";
|
|
|
+ double value = list1.get(k).getAvrg();
|
|
|
+ if(value>=1 && value<=1.5){
|
|
|
+ name = "优质";
|
|
|
+ }else if(value>1.5 && value<=2.5){
|
|
|
+ name = "良好";
|
|
|
+ }else if(value>2.5 && value<=3.5){
|
|
|
+ name = "轻度污染";
|
|
|
+ }else if(value>3.5 && value<=4.5){
|
|
|
+ name = "中度污染";
|
|
|
+ }else if(value>4.5 && value<=5.5){
|
|
|
+ name = "重度污染";
|
|
|
+ }else if(value>5.5 && value<=6){
|
|
|
+ name = "严重污染";
|
|
|
+ }
|
|
|
+ responseVO.setQuality(name);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ list.add(responseVO);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<DataAverageExportVO> DataAverageExport(DataAverageRequestVO requestVO){
|
|
|
+ List<DataAverageExportVO> list = new ArrayList<>();
|
|
|
+ //设备类型简称
|
|
|
+ String typeAbbrevia = dataRealTimeMapper.QueryDeviceTypeAbbrevia(requestVO.getDeviceType());
|
|
|
+ String tableName = "data_"+typeAbbrevia+"_history";
|
|
|
+
|
|
|
+ int leftLen = 0;
|
|
|
+ if(requestVO.getDataType().equals("Day")){
|
|
|
+ leftLen = 10;
|
|
|
+ }else if(requestVO.getDataType().equals("Month")){
|
|
|
+ leftLen = 7;
|
|
|
+ }else if(requestVO.getDataType().equals("Year")){
|
|
|
+ leftLen = 4;
|
|
|
+ }
|
|
|
+
|
|
|
+ List<DataHistoryAvergerVO> list1 = new ArrayList<>();
|
|
|
+ if(requestVO.getGroupType().equals("Each")){
|
|
|
+ list1 = dataRealTimeMapper.QueryEachHistoryAvrgData(leftLen,tableName,requestVO.getStartTime(),requestVO.getEndTime(),requestVO.getProductCode(),requestVO.getDeviceIds(),requestVO.getAttributeNames());
|
|
|
+ }else if(requestVO.getGroupType().equals("Total")){
|
|
|
+ list1 = dataRealTimeMapper.QueryTotalHistoryAvrgData(leftLen,tableName,requestVO.getStartTime(),requestVO.getEndTime(),requestVO.getProductCode(),requestVO.getAttributeNames());
|
|
|
+ }
|
|
|
+ if(CollectionUtils.isNotEmpty(list1)){
|
|
|
+ List<String> dateList = new ArrayList<>();
|
|
|
+ List<String> deviceIdList = new ArrayList<>();
|
|
|
+ for(int i=0;i<list1.size();i++){
|
|
|
+ if(!dateList.contains(list1.get(i).getDataDate())){
|
|
|
+ dateList.add(list1.get(i).getDataDate());
|
|
|
+ }
|
|
|
+ if(!deviceIdList.contains(list1.get(i).getDeviceId())){
|
|
|
+ deviceIdList.add(list1.get(i).getDeviceId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(CollectionUtils.isNotEmpty(dateList) && CollectionUtils.isNotEmpty(deviceIdList)){
|
|
|
+ for(int i=0;i<dateList.size();i++){
|
|
|
+ for(int j=0;j<deviceIdList.size();j++){
|
|
|
+ DataAverageExportVO responseVO = new DataAverageExportVO();
|
|
|
+ responseVO.setDataDate(dateList.get(i));
|
|
|
+ responseVO.setDeviceId(deviceIdList.get(j));
|
|
|
+ for(int k=0;k<list1.size();k++){
|
|
|
+ if(dateList.get(i).equals(list1.get(k).getDataDate()) && deviceIdList.get(j).equals(list1.get(k).getDeviceId())){
|
|
|
+ if(list1.get(k).getAttributeName().equals("wd")){
|
|
|
+ responseVO.setWd(Double.toString(list1.get(k).getAvrg()));
|
|
|
+ }
|
|
|
+ if(list1.get(k).getAttributeName().equals("sd")){
|
|
|
+ responseVO.setSd(Double.toString(list1.get(k).getAvrg()));
|
|
|
+ }
|
|
|
+ if(list1.get(k).getAttributeName().equals("pm2_5")){
|
|
|
+ responseVO.setPm2_5(Double.toString(list1.get(k).getAvrg()));
|
|
|
+ }
|
|
|
+ if(list1.get(k).getAttributeName().equals("co2")){
|
|
|
+ responseVO.setCo2(Double.toString(list1.get(k).getAvrg()));
|
|
|
+ }
|
|
|
+ if(list1.get(k).getAttributeName().equals("voc")){ //voc平均值(优就是1,良是2,差是3)
|
|
|
+ String name = "";
|
|
|
+ double value = list1.get(k).getAvrg();
|
|
|
+ if(value>=1 && value<=1.5){
|
|
|
+ name = "优";
|
|
|
+ }else if(value>1.5 && value<=2.5){
|
|
|
+ name = "良";
|
|
|
+ }else if(value>2.5 && value<=3){
|
|
|
+ name = "差";
|
|
|
+ }
|
|
|
+ responseVO.setVoc(name);
|
|
|
+ }
|
|
|
+ if(list1.get(k).getAttributeName().equals("quality")){ //空气质量平均值(1、优质 2、良好 3、轻度污染 4、中度污染 5、重度污染 6、严重污染)
|
|
|
+ String name = "";
|
|
|
+ double value = list1.get(k).getAvrg();
|
|
|
+ if(value>=1 && value<=1.5){
|
|
|
+ name = "优质";
|
|
|
+ }else if(value>1.5 && value<=2.5){
|
|
|
+ name = "良好";
|
|
|
+ }else if(value>2.5 && value<=3.5){
|
|
|
+ name = "轻度污染";
|
|
|
+ }else if(value>3.5 && value<=4.5){
|
|
|
+ name = "中度污染";
|
|
|
+ }else if(value>4.5 && value<=5.5){
|
|
|
+ name = "重度污染";
|
|
|
+ }else if(value>5.5 && value<=6){
|
|
|
+ name = "严重污染";
|
|
|
+ }
|
|
|
+ responseVO.setQuality(name);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ list.add(responseVO);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
}
|