From 2c8b914f70a8b2425d3ede5941bce1cabe9c2931 Mon Sep 17 00:00:00 2001 From: cjl <chenjl@deyt.cn> Date: Tue, 04 Jul 2023 20:50:32 +0800 Subject: [PATCH] 日期排序提交 --- screen-api/src/main/java/com/moral/api/service/HistoryDailyService.java | 3 +++ screen-api/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java | 9 +++++++++ screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java | 48 ++++++++++++++++++++++++++++++++++++++++-------- 3 files changed, 52 insertions(+), 8 deletions(-) diff --git a/screen-api/src/main/java/com/moral/api/service/HistoryDailyService.java b/screen-api/src/main/java/com/moral/api/service/HistoryDailyService.java index b56c8e2..ba4b096 100644 --- a/screen-api/src/main/java/com/moral/api/service/HistoryDailyService.java +++ b/screen-api/src/main/java/com/moral/api/service/HistoryDailyService.java @@ -4,6 +4,7 @@ import java.util.List; import java.util.Map; +import com.moral.api.entity.Device; import com.moral.api.entity.HistoryDaily; import com.baomidou.mybatisplus.extension.service.IService; @@ -47,6 +48,8 @@ */ List<HistoryDaily> getHistoryDailyByMacAndTimeSlot( String mac, Date startDate,Date endDate); + List<HistoryDaily> getHistoryDailyByMacAndTimeSlot(List<String> macs, Date startDate, Date endDate); + /** *@Description: ������������id��������������������������������������� *@Param: [map] diff --git a/screen-api/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java index b16ccb0..060cb1c 100644 --- a/screen-api/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java +++ b/screen-api/src/main/java/com/moral/api/service/impl/HistoryDailyServiceImpl.java @@ -109,6 +109,15 @@ } @Override + public List<HistoryDaily> getHistoryDailyByMacAndTimeSlot( List<String> macs, Date startDate, Date endDate) { + QueryWrapper<HistoryDaily> wrapper = new QueryWrapper<>(); + wrapper.in("mac", macs); + wrapper.between("time", startDate, endDate); + List<HistoryDaily> historyDailies = historyDailyMapper.selectList(wrapper); + return historyDailies; + } + + @Override public Map<String, Object> getThermodynamicDiagramDataByOrgIdSensorCodeTime(Map<String, Object> parameters) { Map<String, Object> resultMap = new HashMap<>(); int orgId = Integer.parseInt(parameters.get("organization_id").toString()); diff --git a/screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java index 47a37c9..d534583 100644 --- a/screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java +++ b/screen-api/src/main/java/com/moral/api/service/impl/MonitorPointServiceImpl.java @@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.google.common.reflect.TypeToken; +import com.google.gson.Gson; import com.moral.api.entity.*; import com.moral.api.mapper.DeviceMapper; import com.moral.api.mapper.HistoryMonthlyMapper; @@ -22,7 +24,10 @@ import com.moral.util.RegionCodeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; + +import java.lang.reflect.Type; import java.math.BigDecimal; +import java.text.DateFormat; import java.util.*; import java.util.stream.Collectors; @@ -242,14 +247,17 @@ } else if("day".equals(type)){ Date startDate = DateUtils.getDate(startTime,DateUtils.yyyy_MM_dd_HH_EN); Date endDate = DateUtils.getDate(endTime,DateUtils.yyyy_MM_dd_HH_EN); + List<HistoryDaily> historyDailyByMacAndTimeSlot = historyDailyService.getHistoryDailyByMacAndTimeSlot(macs, startDate, endDate); + Map<String,Map<String,Object>> map = resultMap(historyDailyByMacAndTimeSlot); for (Device device:devices) { - List<HistoryDaily> historyDailyByMacAndTimeSlot = historyDailyService.getHistoryDailyByMacAndTimeSlot(device.getMac(), startDate, endDate); + QueryWrapper<MonitorPoint> monitorPointQueryWrapper = new QueryWrapper<>(); + monitorPointQueryWrapper.eq("is_delete",Constants.NOT_DELETE); + monitorPointQueryWrapper.eq("id",device.getMonitorPointId()); + MonitorPoint monitorPoint = monitorPointMapper.selectOne(monitorPointQueryWrapper); for (String sensor:sensorsList) { + Date ks = DateUtils.getDate(startTime,"yyyy-MM-dd"); + Date js = DateUtils.getDateOfDay(DateUtils.getDate(endTime,"yyyy-MM-dd"),1); Map<String, Object> timeValueMap = new LinkedHashMap<>();//key���time���value������������json - QueryWrapper<MonitorPoint> monitorPointQueryWrapper = new QueryWrapper<>(); - monitorPointQueryWrapper.eq("is_delete",Constants.NOT_DELETE); - monitorPointQueryWrapper.eq("id",device.getMonitorPointId()); - MonitorPoint monitorPoint = monitorPointMapper.selectOne(monitorPointQueryWrapper); timeValueMap.put("������������",monitorPoint.getName()); timeValueMap.put("name",device.getName()); QueryWrapper<Sensor> sensorQueryWrapper = new QueryWrapper<>(); @@ -258,16 +266,28 @@ Sensor sensorEntity = sensorMapper.selectOne(sensorQueryWrapper); timeValueMap.put("sensor",sensorEntity.getName()); ArrayList<Double> doubleArrayList = new ArrayList<>(); - for (HistoryDaily historyDaily : historyDailyByMacAndTimeSlot) { + while (DateUtils.isTimeBefor(js,ks)){ + String c = DateUtils.dateToDateString(ks,"yyyy-MM-dd"); + String k = c+"_"+device.getMac(); + if(map.containsKey(k)){ + Object o = map.get(k).get(sensor); + timeValueMap.put(c,Objects.nonNull(o)?Double.valueOf(o.toString()):0); + }else { + timeValueMap.put(c,0); + } + ks = DateUtils.getDateOfDay(ks,1); + } + + /*for (HistoryDaily historyDaily : historyDailyByMacAndTimeSlot) { Date time = historyDaily.getTime(); String dateStr = DateUtils.dateToDateString(time, "yyyy-MM-dd"); String value = historyDaily.getValue(); JSONObject jsonObject = JSONObject.parseObject(value); - doubleArrayList.add(Double.parseDouble(jsonObject.get(sensor).toString())); + doubleArrayList.add(Objects.nonNull(jsonObject)&&Objects.nonNull(jsonObject.get(sensor))?Double.parseDouble(jsonObject.get(sensor).toString()):0); if (jsonObject.containsKey(sensor)){ timeValueMap.put(dateStr, jsonObject.get(sensor).toString()); } - } + }*/ Double ListAvg = doubleArrayList.stream().collect(Collectors.averagingDouble(Double::doubleValue)); double rsAvg = new BigDecimal(ListAvg).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue(); timeValueMap.put("���������",rsAvg); @@ -309,6 +329,18 @@ return resultList; } + + private Map<String,Map<String,Object>> resultMap(List<HistoryDaily> list ){ + Map<String,Map<String,Object>> map = new HashMap<>(); + for(HistoryDaily h : list){ + String dateStr = DateUtils.dateToDateString( h.getTime(), "yyyy-MM-dd")+"_"+h.getMac(); + Map<String,Object> jsonMap = new HashMap<>(); + JSONObject jsonObject = JSONObject.parseObject(h.getValue()); + jsonMap = jsonObject.getInnerMap(); + map.put(dateStr,jsonMap); + } + return map; + } } -- Gitblit v1.8.0