From 2d0c0b8a45b969ef703edc5faa429413927f9cd1 Mon Sep 17 00:00:00 2001 From: lizijie <lzjiiie@163.com> Date: Thu, 10 Feb 2022 14:23:21 +0800 Subject: [PATCH] 服务范围列表修改数据结构 --- screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java | 69 +++++++++++++++++++++++++++++----- 1 files changed, 59 insertions(+), 10 deletions(-) diff --git a/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java b/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java index 3f0c77f..da4cbef 100644 --- a/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java +++ b/screen-api/src/main/java/com/moral/api/service/impl/HistoryFiveMinutelyServiceImpl.java @@ -2,9 +2,14 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.ISqlSegment; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.segments.MergeSegments; +import com.baomidou.mybatisplus.core.conditions.segments.NormalSegmentList; +import com.moral.api.config.mybatis.MybatisPlusConfig; import com.moral.api.entity.Device; import com.moral.api.entity.HistoryFiveMinutely; +import com.moral.api.entity.HistoryHourly; import com.moral.api.entity.MonitorPoint; import com.moral.api.mapper.HistoryFiveMinutelyMapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -15,7 +20,9 @@ import com.moral.api.service.HistoryFiveMinutelyService; import com.moral.api.service.MonitorPointService; import com.moral.constant.RedisConstants; +import com.moral.constant.SeparateTableType; import com.moral.util.DateUtils; +import com.moral.util.MybatisPLUSUtils; import io.lettuce.core.GeoCoordinates; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; @@ -64,14 +71,20 @@ //������������������ Map<String, Object> sensorValues = (Map<String, Object>) redisTemplate.opsForHash().get(RedisConstants.DATA_FIVE_MINUTES, mac); //������������������������������������ - HistoryFiveMinutely dbHistoryFiveMinutely = queryLastDataByMac(mac); - String dbDataStr = dbHistoryFiveMinutely.getValue(); + if (ObjectUtils.isEmpty(sensorValues)) { + HistoryFiveMinutely dbHistoryFiveMinutely = queryLastDataByMac(mac); + if (ObjectUtils.isEmpty(dbHistoryFiveMinutely)) + continue; + else + sensorValues = JSON.parseObject(dbHistoryFiveMinutely.getValue(),Map.class); + } + String dbDataStr = JSON.toJSONString(sensorValues); sensorValues = JSON.parseObject(dbDataStr, HashMap.class); - Map<String,Object> sensorValue = new HashMap<>(); - if (sensorValues!=null&&sensorValues.get(sensorCode) != null) - sensorValue.put(sensorCode,sensorValues.get(sensorCode)); + Map<String, Object> sensorValue = new HashMap<>(); + if (sensorValues != null && sensorValues.get(sensorCode) != null) + sensorValue.put(sensorCode, sensorValues.get(sensorCode)); else - sensorValue.put(sensorCode,null); + sensorValue.put(sensorCode, null); dto.setDevice(device); dto.setSensorValue(sensorValue); dtos.add(dto); @@ -82,13 +95,16 @@ @Override public HistoryFiveMinutely queryLastDataByMac(String mac) { QueryWrapper<HistoryFiveMinutely> queryWrapper = new QueryWrapper<>(); - queryWrapper.eq("mac",mac); + queryWrapper.eq("mac", mac); queryWrapper.orderByDesc("time"); queryWrapper.last("limit 0,1"); - List<HistoryFiveMinutely> historyFiveMinutelies = historyFiveMinutelyMapper.selectList(queryWrapper); - if(ObjectUtils.isEmpty(historyFiveMinutelies)) + //��������������������� + Date date = new Date(); + List<String> tableNames = MybatisPLUSUtils.getTableNamesByWrapper(date, date, SeparateTableType.MONTH); + List<HistoryFiveMinutely> datas = multiTableQuery(queryWrapper, tableNames); + if (ObjectUtils.isEmpty(datas)) return null; - return historyFiveMinutelies.get(0); + return datas.get(0); } @@ -285,7 +301,40 @@ return list; } + /** + * @Description: ���������������������������mac��������� + * @Param: [mac, startDate, endDate] + * @return: java.util.List<com.moral.api.entity.HistoryHourly> + * @Author: ��������� + * @Date: 2021/9/23 + */ + public List<HistoryFiveMinutely> getValueByMacAndTime(String mac, Date startDate, Date endDate) { + QueryWrapper<HistoryFiveMinutely> wrapper = new QueryWrapper<>(); + wrapper.eq("mac", mac); + wrapper.between("time", startDate, endDate); + List<String> tableNames = MybatisPLUSUtils.getTableNamesByWrapper(startDate, endDate, SeparateTableType.MONTH); + List<HistoryFiveMinutely> datas = multiTableQuery(wrapper, tableNames); + return datas; + } + /** + * @Description: ������������������������������������������������wrapper��������������� + * @Param: [wrapper, tableNames] + * @return: java.util.List<com.moral.api.entity.HistoryHourly> + * @Author: ��������� + * @Date: 2021/9/23 + */ + private List<HistoryFiveMinutely> multiTableQuery(QueryWrapper<HistoryFiveMinutely> wrapper, List<String> tableNames) { + List<HistoryFiveMinutely> result = new ArrayList<>(); + for (String tableName : tableNames) { + MybatisPlusConfig.tableName.set(tableName); + List<HistoryFiveMinutely> datas = historyFiveMinutelyMapper.selectList(wrapper); + result.addAll(datas); + } + MybatisPlusConfig.tableName.remove(); + return result; + } + } -- Gitblit v1.8.0