Commit b6750ef7 authored by huangcb's avatar huangcb

增加设备类型实例统计接口

parent 9b182977
......@@ -162,4 +162,15 @@ public class DeviceTypeController {
return EResponse.ok();
}
/**
* @description 获取设备类型对应的实例数量统计
* @return com.esv.datacenter.iot.common.response.EResponse
* @author huangChaobin@esvtek.com
* @createTime 2020/08/12 16:11
**/
@PostMapping("/getDeviceTypeStatistics")
public EResponse getDeviceTypeStatistics() throws EException {
return EResponse.ok(deviceTypeService.getDeviceTypeStatistics());
}
}
......@@ -2,6 +2,7 @@ package com.esv.datacenter.iot.module.devicemodel.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.esv.datacenter.iot.module.devicemodel.dto.DeviceInstanceDto;
import com.esv.datacenter.iot.module.devicemodel.entity.DeviceInstanceEntity;
import com.esv.datacenter.iot.module.devicemodel.form.DeviceInstanceForm;
import org.apache.ibatis.annotations.Mapper;
......@@ -37,5 +38,13 @@ public interface DeviceInstanceDao extends BaseMapper<DeviceInstanceEntity> {
* @createTime 2020/08/10 17:28
**/
List<Map<String, Long>> selectInstanceCountByType(Map<String, Object> queryObj);
/**
* @description 查询设备列表
* @return java.util.List<com.esv.datacenter.iot.module.devicemodel.dto.DeviceInstanceDto>
* @author huangChaobin@esvtek.com
* @createTime 2020/08/12 15:33
**/
List<DeviceInstanceDto> select4List();
}
......@@ -2,6 +2,7 @@ package com.esv.datacenter.iot.module.devicemodel.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.esv.datacenter.iot.common.vo.PageResultVO;
import com.esv.datacenter.iot.module.devicemodel.dto.DeviceInstanceDto;
import com.esv.datacenter.iot.module.devicemodel.entity.DeviceInstanceEntity;
import com.esv.datacenter.iot.module.devicemodel.form.DeviceInstanceForm;
import com.esv.datacenter.iot.module.devicemodel.vo.DeviceInstanceVO;
......@@ -108,5 +109,13 @@ public interface DeviceInstanceService extends IService<DeviceInstanceEntity> {
**/
DeviceInstanceEntity getInstanceByCommunicationId(String communicationId);
/**
* @description 查询设备列表
* @return java.util.List<com.esv.datacenter.iot.module.devicemodel.dto.DeviceInstanceDto>
* @author huangChaobin@esvtek.com
* @createTime 2020/08/12 15:34
**/
List<DeviceInstanceDto> get4List();
}
......@@ -7,6 +7,7 @@ import com.esv.datacenter.iot.module.datamodel.vo.DataModelDetailVO;
import com.esv.datacenter.iot.module.devicemodel.entity.DeviceTypeEntity;
import com.esv.datacenter.iot.module.devicemodel.form.DeviceTypeForm;
import com.esv.datacenter.iot.module.devicemodel.vo.DeviceTypeBriefVO;
import com.esv.datacenter.iot.module.devicemodel.vo.DeviceTypeStatisticsVO;
import lombok.Data;
import java.util.List;
......@@ -91,5 +92,13 @@ public interface DeviceTypeService extends IService<DeviceTypeEntity> {
**/
List<DataModelDetailVO> getDataModelByDeviceTypeId(Long deviceTypeId);
/**
* @description 获取设备类型对应的实例数量统计
* @return java.util.List<com.esv.datacenter.iot.module.devicemodel.vo.DeviceTypeStatisticsVO>
* @author huangChaobin@esvtek.com
* @createTime 2020/08/12 15:06
**/
List<DeviceTypeStatisticsVO> getDeviceTypeStatistics();
}
......@@ -138,4 +138,9 @@ public class DeviceInstanceServiceImpl extends ServiceImpl<DeviceInstanceDao, De
return this.getBaseMapper().selectOne(new LambdaQueryWrapper<DeviceInstanceEntity>()
.eq(DeviceInstanceEntity::getCommunicationId, communicationId));
}
@Override
public List<DeviceInstanceDto> get4List() {
return this.getBaseMapper().select4List();
}
}
\ No newline at end of file
......@@ -13,22 +13,21 @@ import com.esv.datacenter.iot.module.datamodel.vo.DataModelBriefVO;
import com.esv.datacenter.iot.module.datamodel.vo.DataModelDetailVO;
import com.esv.datacenter.iot.module.datamodel.vo.DataModelPropertyVO;
import com.esv.datacenter.iot.module.devicemodel.dao.DeviceTypeDao;
import com.esv.datacenter.iot.module.devicemodel.dto.DeviceInstanceDto;
import com.esv.datacenter.iot.module.devicemodel.entity.DeviceTypeEntity;
import com.esv.datacenter.iot.module.devicemodel.form.DeviceTypeForm;
import com.esv.datacenter.iot.module.devicemodel.service.DeviceDataMapService;
import com.esv.datacenter.iot.module.devicemodel.service.DeviceInstanceService;
import com.esv.datacenter.iot.module.devicemodel.service.DeviceTypeService;
import com.esv.datacenter.iot.module.devicemodel.vo.DeviceTypeBriefVO;
import com.esv.datacenter.iot.module.devicemodel.vo.DeviceTypeStatisticsVO;
import com.esv.datacenter.iot.module.devicemodel.vo.DeviceTypeVO;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.*;
@Service("deviceTypeService")
......@@ -152,4 +151,54 @@ public class DeviceTypeServiceImpl extends ServiceImpl<DeviceTypeDao, DeviceType
return voList;
}
@Override
public List<DeviceTypeStatisticsVO> getDeviceTypeStatistics() {
// 获取所有设备列表
List<DeviceInstanceDto> dtoList = deviceInstanceService.get4List();
// TODO,获取所有在线设备通信ID
// 设置设备类型信息及设备实例数量信息
Long deviceTypeId;
Long instanceOnlineCount;
Long instanceOfflineCount;
Boolean isOnline = false;
Map<Long, DeviceTypeStatisticsVO> statisticsMap = new HashMap<>(32);
List<DeviceTypeStatisticsVO> voList = new ArrayList<>();
DeviceTypeStatisticsVO vo = null;
for (DeviceInstanceDto dto : dtoList) {
deviceTypeId = dto.getDeviceTypeId();
if (statisticsMap.containsKey(deviceTypeId)) {
vo = statisticsMap.get(deviceTypeId);
instanceOnlineCount = vo.getInstanceOnlineCount();
instanceOfflineCount = vo.getInstanceOfflineCount();
} else {
if (Objects.nonNull(vo)) {
voList.add(vo);
}
instanceOnlineCount = 0L;
instanceOfflineCount = 0L;
vo = new DeviceTypeStatisticsVO();
vo.setId(deviceTypeId);
vo.setName(dto.getDeviceTypeName());
}
// TODO,判断设备是否在线
if (isOnline) {
instanceOnlineCount += 1L;
} else {
instanceOfflineCount += 1L;
}
vo.setInstanceOnlineCount(instanceOnlineCount);
vo.setInstanceOfflineCount(instanceOfflineCount);
statisticsMap.put(deviceTypeId, vo);
}
if (Objects.nonNull(vo)) {
voList.add(vo);
}
return voList;
}
}
\ No newline at end of file
package com.esv.datacenter.iot.module.devicemodel.vo;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* @description:
* @author: huangchaobin@esvtek.com
* @createTime: 2020/08/07 9:39
* @version:1.0
*/
@Data
public class DeviceTypeStatisticsVO {
/**
*
*/
private Long id;
/**
* 名称
*/
private String name;
/**
* 设备实例数量-在线
*/
private Long instanceOnlineCount;
/**
* 设备实例数量-离线
*/
private Long instanceOfflineCount;
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
}
}
......@@ -26,7 +26,7 @@
resultType="com.esv.datacenter.iot.module.devicemodel.dto.DeviceInstanceDto">
select a.*, b.name as deviceTypeName
from device_instance a, device_type b
where a.device_type_id = b.id and a.deleted = false
where a.device_type_id = b.id and a.deleted = false and b.deleted = false
<if test="queryObj.deviceTypeId != null">
and a.device_type_id = #{queryObj.deviceTypeId}
</if>
......@@ -52,4 +52,12 @@
group by device_type_id
</select>
<select id="select4List" resultType="com.esv.datacenter.iot.module.devicemodel.dto.DeviceInstanceDto">
select a.id, a.device_type_id,a.communication_id,
b.name as deviceTypeName
from device_instance a, device_type b
where a.device_type_id = b.id and a.deleted = false and b.deleted = false
ORDER BY b.name ASC
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment