DeviceInfoServiceImpl.java 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package com.bizmatics.mhfire.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  3. import com.bizmatics.common.mvc.base.AbstractCrudService;
  4. import com.bizmatics.mhfire.model.DeviceInfo;
  5. import com.bizmatics.mhfire.persistence.mapper.DeviceInfoMapper;
  6. import com.bizmatics.mhfire.service.DeviceInfoService;
  7. import org.springframework.stereotype.Service;
  8. import java.util.*;
  9. import java.util.stream.Collectors;
  10. /**
  11. * <p>
  12. * 设备心跳 服务实现类
  13. * </p>
  14. *
  15. * @author ya
  16. * @since 2021-11-25
  17. */
  18. @Service
  19. public class DeviceInfoServiceImpl extends AbstractCrudService<DeviceInfoMapper, DeviceInfo> implements DeviceInfoService {
  20. @Override
  21. public List<Map<String, Object>> elIco(String deviceCode, Date startTime, Date endTime) {
  22. QueryWrapper<DeviceInfo> queryWrapper = new QueryWrapper<>();
  23. queryWrapper.select("HOUR(lasj) createTime","sum(electric) as elCount")
  24. .between("create_time",startTime,endTime)
  25. .eq("device_code",deviceCode)
  26. .groupBy("createTime");
  27. List<Map<String, Object>> list = this.listMaps(queryWrapper);
  28. perfectDate(list,24,0);
  29. list = list.stream()
  30. .sorted(Comparator.comparing(map -> Integer.valueOf(map.get("createTime").toString())))
  31. .collect(Collectors.toList());
  32. return list;
  33. }
  34. public void perfectDate(List<Map<String,Object>> list,Integer times,Integer defaultTime){
  35. for (int i = defaultTime; i < times; i++) {
  36. int finalI = i;
  37. list.stream()
  38. .filter(parkDTO -> Integer.parseInt(parkDTO.get("createTime").toString()) == finalI)
  39. .findFirst()
  40. .orElseGet(() -> {
  41. Map<String,Object> map = new HashMap<>();
  42. map.put("elCount",0);
  43. map.put("createTime",finalI);
  44. list.add(map);
  45. return map;
  46. });
  47. }
  48. }
  49. }