package com.iailab.module.device.controller; import com.iailab.common.annotation.LogOperation; import com.iailab.common.constant.BusinessConstant; import com.iailab.framework.common.constant.Constant; import com.iailab.common.dto.IndexQueryDTO; import com.iailab.common.dto.IndexStatisticDTO; import com.iailab.common.dto.echarts.BarLineDTO; import com.iailab.common.dto.echarts.SeriesItem; import com.iailab.framework.common.page.PageData; import com.iailab.common.utils.DateUtils; import com.iailab.framework.common.pojo.CommonResult; import com.iailab.framework.common.util.validation.ValidationUtils; import com.iailab.framework.common.validation.group.AddGroup; import com.iailab.framework.common.validation.group.DefaultGroup; import com.iailab.framework.common.validation.group.UpdateGroup; import com.iailab.module.data.dto.ApiDataDTO; import com.iailab.module.device.dto.DeviceAbnormalHistoryDTO; import com.iailab.module.device.service.DeviceAbnormalHistoryService; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; import javax.annotation.Resource; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import java.util.*; import java.util.stream.Collectors; /** * 异常设备历史表 * * @author lirm ${email} * @since 1.0.0 2024-05-22 */ @RestController @RequestMapping("device/device-abnormal-history") @Tag(name = "异常设备历史表") public class DeviceAbnormalHistoryController { @Resource private DeviceAbnormalHistoryService deviceAbnormalHistoryService; @GetMapping("page") @Operation(summary = "分页") @Parameters({ @Parameter(name = Constant.PAGE, description = "当前页码,从1开始", required = true), @Parameter(name = Constant.LIMIT, description = "每页显示记录数", required = true), @Parameter(name = Constant.ORDER_FIELD, description = "排序字段"), @Parameter(name = Constant.ORDER, description = "排序方式,可选值(asc、desc)") }) @PreAuthorize("@ss.hasPermission('device:deviceabnormalhistory:page')") public CommonResult> page(@RequestParam Map params) { PageData page = deviceAbnormalHistoryService.page(params); return new CommonResult>().setData(page); } @GetMapping("{id}") @Operation(summary = "信息") @PreAuthorize("@ss.hasPermission('device:deviceabnormalhistory:info')") public CommonResult get(@PathVariable("id") Long id) { DeviceAbnormalHistoryDTO data = deviceAbnormalHistoryService.get(id); return new CommonResult().setData(data); } @PostMapping @Operation(summary = "保存") @LogOperation("保存") @PreAuthorize("@ss.hasPermission('device:deviceabnormalhistory:save')") public CommonResult save(@RequestBody DeviceAbnormalHistoryDTO dto) { //效验数据 ValidationUtils.validate(dto, AddGroup.class, DefaultGroup.class); deviceAbnormalHistoryService.save(dto); return new CommonResult(); } @PutMapping @Operation(summary = "修改") @LogOperation("修改") @PreAuthorize("@ss.hasPermission('device:deviceabnormalhistory:update')") public CommonResult update(@RequestBody DeviceAbnormalHistoryDTO dto) { //效验数据 ValidationUtils.validate(dto, UpdateGroup.class, DefaultGroup.class); deviceAbnormalHistoryService.update(dto); return new CommonResult(); } @DeleteMapping @Operation(summary = "删除") @LogOperation("删除") @PreAuthorize("@ss.hasPermission('device:deviceabnormalhistory:delete')") public CommonResult delete(@RequestBody Long[] ids) { deviceAbnormalHistoryService.delete(ids); return new CommonResult(); } @PostMapping("chart") public CommonResult chart(@RequestBody IndexQueryDTO dto) { BarLineDTO data = new BarLineDTO(); List legend = new ArrayList<>(); List series = new ArrayList<>(); String endDateStr = dto.getEndDate() == null ? DateUtils.format(new Date(), "yyyy-MM-dd HH:mm:ss") : DateUtils.format(dto.getEndDate(), "yyyy-MM-dd HH:mm:ss"); Date endDate = DateUtils.parse(endDateStr, "yyyy-MM-dd HH:mm"); Date startDate = dto.getStartDate() == null ? DateUtils.getTime(DateUtils.addDateHours(endDate, -2)) : dto.getStartDate(); List categories = DateUtils.getDayTime(startDate, endDate, BusinessConstant.Granularity60); List historyList = null; List dataList = new ArrayList<>(); List indexList; legend.add("设备异常总数"); SeriesItem deviceItem = new SeriesItem(); deviceItem.setName("设备异常总数"); Map params = new HashMap<>(); params.put("startDate", startDate); params.put("endDate", endDate); historyList = deviceAbnormalHistoryService.getlist(params); if (!CollectionUtils.isEmpty(historyList)) { historyList.forEach(item -> { ApiDataDTO dataEntity = new ApiDataDTO(); dataEntity.setTimeStamp(item.getCreateDate()); dataEntity.setDataValue(item.getAbnormalCount()); dataList.add(dataEntity); }); } List deviceData = dataList.stream().map(item -> { Object[] valueArray = new Object[]{item.getTimeStamp(), item.getDataValue()}; return valueArray; }).collect(Collectors.toList()); deviceItem.setData(deviceData); series.add(deviceItem); data.setLegend(legend); data.setCategories(categories); data.setSeries(series); return new CommonResult().setData(data); } }