|
|
@ -6,7 +6,9 @@ import com.ruoyi.common.core.page.TableDataInfo; |
|
|
|
import com.ruoyi.common.enums.BusinessType; |
|
|
|
import com.ruoyi.common.utils.StringUtils; |
|
|
|
import com.ruoyi.common.utils.poi.ExcelUtil; |
|
|
|
import com.zc.business.domain.DcDevice; |
|
|
|
import com.zc.business.domain.Status; |
|
|
|
import com.zc.business.service.impl.DcDeviceServiceImpl; |
|
|
|
import com.zc.business.service.impl.StatusService; |
|
|
|
import io.swagger.annotations.Api; |
|
|
|
import io.swagger.annotations.ApiOperation; |
|
|
@ -22,7 +24,6 @@ import java.time.temporal.ChronoUnit; |
|
|
|
import java.util.*; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
import static com.ruoyi.common.utils.PageUtils.startPage; |
|
|
|
|
|
|
|
@Api(tags="设备状态") |
|
|
|
@RestController |
|
|
@ -31,6 +32,8 @@ public class StatusController extends BaseController { |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private StatusService statusService; |
|
|
|
@Autowired |
|
|
|
private DcDeviceServiceImpl dcDeviceService; |
|
|
|
|
|
|
|
//设备列表
|
|
|
|
@ApiOperation("设备状态列表按时间和类型") |
|
|
@ -94,11 +97,39 @@ public class StatusController extends BaseController { |
|
|
|
return AjaxResult.success(mapSort); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ApiOperation("根据设备Id查询折线图数据") |
|
|
|
@GetMapping("/deviceStatusList") |
|
|
|
public AjaxResult getDeviceStatusList(Long deviceId) { |
|
|
|
|
|
|
|
LocalDateTime thirtyDaysAgo = LocalDateTime.now().minusDays(30); |
|
|
|
LocalDateTime currentTime = LocalDateTime.now(); |
|
|
|
|
|
|
|
Status status = new Status(); |
|
|
|
status.setStartTime(thirtyDaysAgo); |
|
|
|
status.setTime(currentTime); |
|
|
|
status.setDeviceId(deviceId); |
|
|
|
|
|
|
|
List<Status> listStatus = statusService.list(status); |
|
|
|
|
|
|
|
// Group by day and calculate average successRate
|
|
|
|
Map<Integer, Double> averageSuccessRateByDay = listStatus.stream() |
|
|
|
.collect(Collectors.groupingBy(s -> s.getTime().getDayOfMonth(), |
|
|
|
Collectors.averagingDouble(s -> Double.parseDouble(s.getSuccessRate().replace("%",""))))); |
|
|
|
|
|
|
|
if (averageSuccessRateByDay.isEmpty()) { |
|
|
|
return AjaxResult.success("暂无数据"); |
|
|
|
} |
|
|
|
|
|
|
|
return AjaxResult.success(averageSuccessRateByDay); |
|
|
|
} |
|
|
|
|
|
|
|
//按类型划分设备
|
|
|
|
@ApiOperation("设备状态列表按类型") |
|
|
|
@GetMapping ("/type") |
|
|
|
public AjaxResult getTypeList() |
|
|
|
{ |
|
|
|
List<DcDevice> dcDeviceList = dcDeviceService.numberOfDevicesByType(); |
|
|
|
HashMap<String, String> itemTypeMap = new HashMap<>(); |
|
|
|
itemTypeMap.put("1-1", "高清网络枪型固定摄像机"); |
|
|
|
itemTypeMap.put("1-2", "高清网络球形摄像机"); |
|
|
@ -122,6 +153,7 @@ public class StatusController extends BaseController { |
|
|
|
Status status = new Status(); |
|
|
|
status.setStartTime(todayStart); |
|
|
|
status.setTime(currentTime); |
|
|
|
status.setUseState(1); |
|
|
|
List<Status> listStatus = statusService.list(status); |
|
|
|
//根据时间分组
|
|
|
|
Map<Integer, List<Status>> map = listStatus.stream() |
|
|
@ -151,8 +183,10 @@ public class StatusController extends BaseController { |
|
|
|
maps.put("sucessRate",String.format("%.2f", sucessRate)+"%"); |
|
|
|
//离线率
|
|
|
|
maps.put("failRate",failRate); |
|
|
|
//已使用数量
|
|
|
|
maps.put("sumUseState",String.valueOf(groupItems.size())); |
|
|
|
//总数
|
|
|
|
maps.put("sum",String.valueOf(groupItems.size())); |
|
|
|
maps.put("sum", String.valueOf(dcDeviceList.stream().filter(item -> Objects.equals(item.getDeviceType(), entrys.getKey())).map(DcDevice::getSumAll).collect(Collectors.toList()).get(0))); |
|
|
|
if(itemTypeMap.get(entrys.getKey())!=null) { |
|
|
|
subMap.put(itemTypeMap.get(entrys.getKey()), maps); |
|
|
|
} |
|
|
|