|
@@ -10,6 +10,7 @@ import com.huaxu.entity.DayReportEntity;
|
|
|
import com.huaxu.model.LoginUser;
|
|
|
import com.huaxu.util.UserUtil;
|
|
|
import org.apache.ibatis.annotations.Param;
|
|
|
+import org.apache.xmlbeans.impl.xb.xsdschema.BlockSet;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.mongodb.core.aggregation.DateOperators;
|
|
|
import org.springframework.stereotype.Service;
|
|
@@ -38,6 +39,8 @@ public class DayReportService extends ServiceImpl<DayReportMapper, DayReportEnti
|
|
|
private SceneService sceneService;
|
|
|
@Autowired
|
|
|
private DeviceService deviceService;
|
|
|
+ @Autowired
|
|
|
+ private DeviceParmService deviceParmService;
|
|
|
|
|
|
|
|
|
/**
|
|
@@ -73,63 +76,88 @@ public class DayReportService extends ServiceImpl<DayReportMapper, DayReportEnti
|
|
|
DeviceDto deviceDto = new DeviceDto();
|
|
|
for (Long id : ids) {
|
|
|
deviceDto.setSceneIds(sceneService.findByParentIdsLike(id));
|
|
|
- devices.addAll(deviceService.selectList(deviceDto));
|
|
|
+ if (deviceDto.getSceneIds().size() > 0)
|
|
|
+ devices.addAll(deviceService.selectList(deviceDto));
|
|
|
}
|
|
|
- //根据设备ID查询报表测点信息
|
|
|
- DayReportEntity dayReportEntity = new DayReportEntity();
|
|
|
- dayReportEntity.setYear(year);
|
|
|
- dayReportEntity.setMonth(month);
|
|
|
- dayReportEntity.setDay(day);
|
|
|
- dayReportEntity.setTenantId(currentUser.getTenantId());
|
|
|
- dayReportEntity.setParentSceneIds(ids);
|
|
|
- dayReportEntity.setDeviceIds(devices);
|
|
|
- reportPage = dayReportMapper.findPage(page, dayReportEntity);
|
|
|
- //固定参数项
|
|
|
- ReportDto reportDto = new ReportDto();
|
|
|
- reportDto.setYear(year);
|
|
|
- reportDto.setMonth(month);
|
|
|
- reportDto.setDay(day);
|
|
|
- reportDto.setDeviceIds(devices);
|
|
|
- List<ReportDto> reportDtos = dayReportMapper.findReport(reportDto);
|
|
|
- //单个属性值
|
|
|
- for (ReportDto item : reportPage.getRecords()) {
|
|
|
- item.setCollectDate(item.getYear() + "-" + String.format("%02d", item.getMonth()) + "-" + String.format("%02d", item.getDay()) + " " + String.format("%02d", item.getHour()) + ":00");
|
|
|
- item.setDeviceIds(devices);
|
|
|
- //固定参数项
|
|
|
- int index = -1;
|
|
|
- for (int i = 0; i < reportDtos.size(); i++) {
|
|
|
- if (reportDtos.get(i).getHour().equals(item.getHour()))
|
|
|
- index = i;
|
|
|
+ if (devices.size() > 0) {
|
|
|
+ //根据设备ID查询报表测点信息
|
|
|
+ DayReportEntity dayReportEntity = new DayReportEntity();
|
|
|
+ dayReportEntity.setYear(year);
|
|
|
+ dayReportEntity.setMonth(month);
|
|
|
+ dayReportEntity.setDay(day);
|
|
|
+ dayReportEntity.setTenantId(currentUser.getTenantId());
|
|
|
+ dayReportEntity.setParentSceneIds(ids);
|
|
|
+ dayReportEntity.setDeviceIds(devices);
|
|
|
+ //查询到分页的行数
|
|
|
+ reportPage = dayReportMapper.findPage(page, dayReportEntity);
|
|
|
+ //查询标题
|
|
|
+ ReportDto reportDto = new ReportDto();
|
|
|
+ reportDto.setYear(year);
|
|
|
+ reportDto.setMonth(month);
|
|
|
+ reportDto.setDay(day);
|
|
|
+ reportDto.setDeviceIds(devices);
|
|
|
+ List<ReportAttributeDto> reportAttributeDtos2 = deviceParmService.findAttributeNameList(reportDto);
|
|
|
+ List<String> dataTitle = new ArrayList<>();
|
|
|
+ Map<String, Integer> mapsTitle = new LinkedHashMap<>();
|
|
|
+ int numCount = 0;
|
|
|
+ for (ReportAttributeDto title : reportAttributeDtos2) {
|
|
|
+ dataTitle.add(title.getAttributeName());
|
|
|
+ if (!mapsTitle.containsKey(title.getAttributeName()))
|
|
|
+ mapsTitle.put(title.getAttributeName(), numCount++);
|
|
|
}
|
|
|
- if (index != -1) {
|
|
|
- if ((index + 2) <= reportDtos.size()) {
|
|
|
- item.setYieldWaterUsage(reportDtos.get(index).getYieldWaterUsage() - reportDtos.get(index + 1).getYieldWaterUsage());
|
|
|
- item.setIntakeWaterUsage(reportDtos.get(index).getIntakeWaterUsage() - reportDtos.get(index + 1).getIntakeWaterUsage());
|
|
|
- item.setPowerUsage(reportDtos.get(index).getPowerUsage() - reportDtos.get(index + 1).getPowerUsage());
|
|
|
- item.setDrugUsage(reportDtos.get(index).getDrugUsage() - reportDtos.get(index + 1).getDrugUsage());
|
|
|
- } else {
|
|
|
- item.setYieldWaterUsage(0d);
|
|
|
- item.setIntakeWaterUsage(0d);
|
|
|
- item.setPowerUsage(0d);
|
|
|
- item.setDrugUsage(0d);
|
|
|
+ //固定参数项
|
|
|
+ List<ReportDto> reportDtos = dayReportMapper.findReport(reportDto);
|
|
|
+ //单个属性值
|
|
|
+ for (ReportDto item : reportPage.getRecords()) {
|
|
|
+ item.setCollectDate(item.getYear() + "-" + String.format("%02d", item.getMonth()) + "-" + String.format("%02d", item.getDay()) + " " + String.format("%02d", item.getHour()) + ":00");
|
|
|
+ item.setDeviceIds(devices);
|
|
|
+ item.setDataTitle(dataTitle);
|
|
|
+ //固定参数项
|
|
|
+ calcUsage(item, reportDtos);
|
|
|
+ //动态参数项
|
|
|
+ List<ReportAttributeDto> reportAttributeDtos = dayReportMapper.findAttributeList(item);
|
|
|
+ //item.setDataValues(reportAttributeDtos);
|
|
|
+ Map<String, ReportAttributeDto> mapData = new LinkedHashMap<>();
|
|
|
+ for (ReportAttributeDto itemData : reportAttributeDtos) {
|
|
|
+ if (!mapData.containsKey(itemData.getAttributeName()))
|
|
|
+ mapData.put(itemData.getAttributeName(), itemData);
|
|
|
}
|
|
|
+ List<Map<String, Object>> maps = new ArrayList<>();
|
|
|
+ for (String key : mapsTitle.keySet()) {
|
|
|
+ Map<String, Object> map = new LinkedHashMap<>();
|
|
|
+ map.put("attributeName", mapData.get(key) == null ? key : mapData.get(key).getAttributeName());
|
|
|
+ map.put("minValue" + mapsTitle.get(key), mapData.get(key) == null ? "-" : mapData.get(key).getMinValue());
|
|
|
+ map.put("maxValue" + mapsTitle.get(key), mapData.get(key) == null ? "-" : mapData.get(key).getMaxValue());
|
|
|
+ map.put("avgValue" + mapsTitle.get(key), mapData.get(key) == null ? "-" : mapData.get(key).getAvgValue());
|
|
|
+ map.put("sumValue" + mapsTitle.get(key), mapData.get(key) == null ? "-" : mapData.get(key).getSumValue());
|
|
|
+ map.put("latestValue" + mapsTitle.get(key), mapData.get(key) == null ? "-" : mapData.get(key).getLatestValue());
|
|
|
+ maps.add(map);
|
|
|
+ }
|
|
|
+ item.setDataMapValues(maps);
|
|
|
}
|
|
|
- //动态参数项
|
|
|
- List<ReportAttributeDto> reportAttributeDtos = dayReportMapper.findAttributeList(item);
|
|
|
- item.setDataValues(reportAttributeDtos);
|
|
|
- List<Map<String, Object>> maps = new ArrayList<>();
|
|
|
- for (int num = 0; num < reportAttributeDtos.size(); num++) {
|
|
|
- Map<String, Object> map = new HashMap<>();
|
|
|
- map.put("attributeName", reportAttributeDtos.get(num).getAttributeName());
|
|
|
- map.put("minValue" + num, reportAttributeDtos.get(num).getMinValue());
|
|
|
- map.put("maxValue" + num, reportAttributeDtos.get(num).getMaxValue());
|
|
|
- map.put("avgValue" + num, reportAttributeDtos.get(num).getAvgValue());
|
|
|
- map.put("sumValue" + num, reportAttributeDtos.get(num).getSumValue());
|
|
|
- map.put("latestValue" + num, reportAttributeDtos.get(num).getLatestValue());
|
|
|
- maps.add(map);
|
|
|
- }
|
|
|
- item.setDataMapValues(maps);
|
|
|
}
|
|
|
return reportPage;
|
|
|
}
|
|
|
+ //计算固定的参数项
|
|
|
+ private void calcUsage(ReportDto item, List<ReportDto> reportDtos) {
|
|
|
+ //固定参数项
|
|
|
+ int index = -1;
|
|
|
+ for (int i = 0; i < reportDtos.size(); i++) {
|
|
|
+ if (reportDtos.get(i).getHour().equals(item.getHour()))
|
|
|
+ index = i;
|
|
|
+ }
|
|
|
+ if (index != -1) {
|
|
|
+ if ((index + 2) <= reportDtos.size()) {
|
|
|
+ item.setYieldWaterUsage(reportDtos.get(index).getYieldWaterUsage() - reportDtos.get(index + 1).getYieldWaterUsage());
|
|
|
+ item.setIntakeWaterUsage(reportDtos.get(index).getIntakeWaterUsage() - reportDtos.get(index + 1).getIntakeWaterUsage());
|
|
|
+ item.setPowerUsage(reportDtos.get(index).getPowerUsage() - reportDtos.get(index + 1).getPowerUsage());
|
|
|
+ item.setDrugUsage(reportDtos.get(index).getDrugUsage() - reportDtos.get(index + 1).getDrugUsage());
|
|
|
+ } else {
|
|
|
+ item.setYieldWaterUsage(0d);
|
|
|
+ item.setIntakeWaterUsage(0d);
|
|
|
+ item.setPowerUsage(0d);
|
|
|
+ item.setDrugUsage(0d);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|