|
|
@ -19,9 +19,7 @@ import com.dongjian.dashboard.back.dao.ex.DeviceRawdataRealtimeMapperExt; |
|
|
import com.dongjian.dashboard.back.dao.ex.FavoritedDeviceMapperExt; |
|
|
import com.dongjian.dashboard.back.dao.ex.FavoritedDeviceMapperExt; |
|
|
import com.dongjian.dashboard.back.dto.data.AccumulateDataSearchParam; |
|
|
import com.dongjian.dashboard.back.dto.data.AccumulateDataSearchParam; |
|
|
import com.dongjian.dashboard.back.dto.device.LineDataSearchParams; |
|
|
import com.dongjian.dashboard.back.dto.device.LineDataSearchParams; |
|
|
import com.dongjian.dashboard.back.model.DeviceInfo; |
|
|
|
|
|
import com.dongjian.dashboard.back.model.DeviceRawdataRealtime; |
|
|
import com.dongjian.dashboard.back.model.DeviceRawdataRealtime; |
|
|
import com.dongjian.dashboard.back.model.DeviceRawdataRealtimeExample; |
|
|
|
|
|
import com.dongjian.dashboard.back.service.DeviceDataAccumulateService; |
|
|
import com.dongjian.dashboard.back.service.DeviceDataAccumulateService; |
|
|
import com.dongjian.dashboard.back.service.common.CommonOpt; |
|
|
import com.dongjian.dashboard.back.service.common.CommonOpt; |
|
|
import com.dongjian.dashboard.back.util.CommonUtil; |
|
|
import com.dongjian.dashboard.back.util.CommonUtil; |
|
|
@ -29,7 +27,6 @@ import com.dongjian.dashboard.back.util.DateUtil; |
|
|
import com.dongjian.dashboard.back.vo.data.DeviceAccumulateData; |
|
|
import com.dongjian.dashboard.back.vo.data.DeviceAccumulateData; |
|
|
import com.dongjian.dashboard.back.vo.device.DeviceIncrement; |
|
|
import com.dongjian.dashboard.back.vo.device.DeviceIncrement; |
|
|
import com.dongjian.dashboard.back.vo.device.LineData; |
|
|
import com.dongjian.dashboard.back.vo.device.LineData; |
|
|
import com.fasterxml.jackson.databind.JsonNode; |
|
|
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper; |
|
|
import com.fasterxml.jackson.databind.ObjectMapper; |
|
|
import com.github.pagehelper.PageHelper; |
|
|
import com.github.pagehelper.PageHelper; |
|
|
import org.apache.commons.collections.CollectionUtils; |
|
|
import org.apache.commons.collections.CollectionUtils; |
|
|
@ -113,6 +110,31 @@ public class DeviceDataAccumulateServiceImpl implements DeviceDataAccumulateServ |
|
|
Map<String, DeviceRawdataRealtime> realtime111Map = commonOpt.queryRealtimeMap(deviceIdList_111); |
|
|
Map<String, DeviceRawdataRealtime> realtime111Map = commonOpt.queryRealtimeMap(deviceIdList_111); |
|
|
// Map<String, DeviceInfo> deviceInfo111Map = commonOpt.queryDeviceInfoMap(deviceIdList_111);
|
|
|
// Map<String, DeviceInfo> deviceInfo111Map = commonOpt.queryDeviceInfoMap(deviceIdList_111);
|
|
|
|
|
|
|
|
|
|
|
|
// 查询S备用设备的数据,因为先看备用S设备,有S的话优先用这个
|
|
|
|
|
|
Map<String, String> deviceId85ToSMap = commonOpt.buildDeviceId85ToSMap(deviceIds); |
|
|
|
|
|
List<String> deviceIdList_S = deviceId85ToSMap.values() |
|
|
|
|
|
.stream() |
|
|
|
|
|
.toList(); |
|
|
|
|
|
Map<String, DeviceRawdataRealtime> realtimeSMap = commonOpt.queryRealtimeMap(deviceIdList_S); |
|
|
|
|
|
|
|
|
|
|
|
// 筛选出S后缀里数据更新的设备,用于查今天的积算值
|
|
|
|
|
|
List<String> todayDeviceIds = new ArrayList<>(deviceIds); |
|
|
|
|
|
for (DeviceAccumulateData data : resultList) { |
|
|
|
|
|
String rawDeviceId = data.getDeviceId(); |
|
|
|
|
|
String sDeviceId = deviceId85ToSMap.get(rawDeviceId.toLowerCase()); |
|
|
|
|
|
|
|
|
|
|
|
DeviceRawdataRealtime sRealtime = realtimeSMap.get(sDeviceId); |
|
|
|
|
|
if (sRealtime == null || sRealtime.getReceiveTs() == null) { |
|
|
|
|
|
continue; |
|
|
|
|
|
} |
|
|
|
|
|
//sRealtime存在且有receive_ts时
|
|
|
|
|
|
Long uploadTs = data.getUploadTimestamp(); |
|
|
|
|
|
if (uploadTs == null || sRealtime.getReceiveTs() > uploadTs) { |
|
|
|
|
|
todayDeviceIds.remove(rawDeviceId); |
|
|
|
|
|
todayDeviceIds.add(sDeviceId); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
LocalDateTime now = LocalDateTime.now(ZoneId.of("Asia/Tokyo")); |
|
|
LocalDateTime now = LocalDateTime.now(ZoneId.of("Asia/Tokyo")); |
|
|
LocalDate today = now.toLocalDate(); |
|
|
LocalDate today = now.toLocalDate(); |
|
|
LocalDate yesterday = today.minusDays(1); |
|
|
LocalDate yesterday = today.minusDays(1); |
|
|
@ -121,7 +143,7 @@ public class DeviceDataAccumulateServiceImpl implements DeviceDataAccumulateServ |
|
|
int targetSeconds = now.toLocalTime().toSecondOfDay(); |
|
|
int targetSeconds = now.toLocalTime().toSecondOfDay(); |
|
|
|
|
|
|
|
|
// 批量查询增量数据并构建 Map
|
|
|
// 批量查询增量数据并构建 Map
|
|
|
Map<String, DeviceIncrement> todayMap = dashboardRecordAccumulateMapperExt.selectTodayIncrement(deviceIds, today.getYear(), today.getMonthValue(), today.getDayOfMonth()) |
|
|
Map<String, DeviceIncrement> todayMap = dashboardRecordAccumulateMapperExt.selectTodayIncrement(todayDeviceIds, today.getYear(), today.getMonthValue(), today.getDayOfMonth()) |
|
|
.stream().collect(Collectors.toMap(di -> di.getDeviceId().toLowerCase(), Function.identity())); |
|
|
.stream().collect(Collectors.toMap(di -> di.getDeviceId().toLowerCase(), Function.identity())); |
|
|
Map<String, DeviceIncrement> yesterdayMap = dashboardRecordAccumulateMapperExt.selectYesterdayIncrement(deviceIds, yesterday.getYear(), yesterday.getMonthValue(), yesterday.getDayOfMonth(), targetSeconds) |
|
|
Map<String, DeviceIncrement> yesterdayMap = dashboardRecordAccumulateMapperExt.selectYesterdayIncrement(deviceIds, yesterday.getYear(), yesterday.getMonthValue(), yesterday.getDayOfMonth(), targetSeconds) |
|
|
.stream().collect(Collectors.toMap(di -> di.getDeviceId().toLowerCase(), Function.identity())); |
|
|
.stream().collect(Collectors.toMap(di -> di.getDeviceId().toLowerCase(), Function.identity())); |
|
|
@ -130,9 +152,14 @@ public class DeviceDataAccumulateServiceImpl implements DeviceDataAccumulateServ |
|
|
|
|
|
|
|
|
resultList.forEach(data -> { |
|
|
resultList.forEach(data -> { |
|
|
String deviceId = data.getDeviceId().toLowerCase(); |
|
|
String deviceId = data.getDeviceId().toLowerCase(); |
|
|
|
|
|
String sDeviceId = deviceId85ToSMap.get(deviceId); |
|
|
// 填充今天/昨天/去年值
|
|
|
|
|
|
data.setCumulativeValue(CommonUtil.formatDecimal(getIncrement(todayMap.get(deviceId), DeviceIncrement::getTodayIncrement), data.getDashboardDecimalPlaces())); |
|
|
//*** 填充今天/昨天/去年值 **//
|
|
|
|
|
|
// 今天值,要先看备用S设备,有S的话优先用这个
|
|
|
|
|
|
data.setCumulativeValue(CommonUtil.formatDecimal( |
|
|
|
|
|
getIncrement(todayDeviceIds.contains(sDeviceId) ? todayMap.get(sDeviceId) : todayMap.get(deviceId), DeviceIncrement::getTodayIncrement), |
|
|
|
|
|
data.getDashboardDecimalPlaces()) |
|
|
|
|
|
); |
|
|
data.setYesterdayValue(CommonUtil.formatDecimal(getIncrement(yesterdayMap.get(deviceId), DeviceIncrement::getYesterdayIncrement), data.getDashboardDecimalPlaces())); |
|
|
data.setYesterdayValue(CommonUtil.formatDecimal(getIncrement(yesterdayMap.get(deviceId), DeviceIncrement::getYesterdayIncrement), data.getDashboardDecimalPlaces())); |
|
|
data.setLastYearValue(CommonUtil.formatDecimal(getIncrement(lastYearMap.get(deviceId), DeviceIncrement::getLastYearIncrement), data.getDashboardDecimalPlaces())); |
|
|
data.setLastYearValue(CommonUtil.formatDecimal(getIncrement(lastYearMap.get(deviceId), DeviceIncrement::getLastYearIncrement), data.getDashboardDecimalPlaces())); |
|
|
|
|
|
|
|
|
|