HealthController.java 5.28 KB
package com.iot.scheduler.controller;

import com.iot.scheduler.service.DevicePullService;
import com.iot.scheduler.service.DeviceSearchService;
import com.iot.scheduler.service.EnergyPullService;
import com.iot.scheduler.service.EnergySearchService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

@RestController
public class HealthController {

    @Resource
    private DevicePullService devicePullService;
    @Resource
    private DeviceSearchService deviceSearchService;
    @Resource
    private EnergySearchService energySearchService;
    @Resource
    private EnergyPullService energyPullService;

    @GetMapping("/health")
    public String health() throws Exception {
        devicePullService.pullDeviceAndPushToIot();
        return "IoT Scheduler is running...";
    }

    @GetMapping("/device/list")
    public Map<String, Object> deviceList(
            @RequestParam(required = false) String deviceName,
            @RequestParam(required = false) String lampState,
            @RequestParam(defaultValue = "1") Integer pageNo,
            @RequestParam(defaultValue = "10") Integer pageSize) {
        return deviceSearchService.queryDeviceList(deviceName, lampState, pageNo, pageSize);
    }

    @GetMapping("/device/stats")
    public Map<String, Object> deviceStats() {
        return deviceSearchService.queryDeviceStats();
    }

    @GetMapping("/device/lampData")
    public Map<String, Object> lampData(
            @RequestParam String dtuSn,
            @RequestParam String date) {
        return deviceSearchService.queryLampData(dtuSn, date);
    }

    @GetMapping("/device/syncDevUtil")
    public String syncDevUtil() {
        devicePullService.pullDevUtilAndSave();
        return "设备利用率数据同步完成";
    }

    @GetMapping("/device/syncOee")
    public String syncOee() {
        devicePullService.pullOeeAndSave();
        return "OEE时序数据同步完成";
    }

    @GetMapping("/device/oeeStats")
    public Map<String, Object> oeeStats(
            @RequestParam String dtuSn,
            @RequestParam(defaultValue = "day") String type,
            @RequestParam(required = false) String startDate,
            @RequestParam(required = false) String endDate) {
        return deviceSearchService.queryOeeStats(dtuSn, type, startDate, endDate);
    }

    /**
     * OEE时序图分页查询(含稼动率)
     * 查询所有设备在指定日期范围内的OEE时序数据,分页返回(每页最多20条)
     *
     * @param startDate 开始日期 yyyy-MM-dd
     * @param endDate   结束日期 yyyy-MM-dd
     * @param pageNo    页码,默认1
     * @param pageSize  每页条数,最大20,默认20
     */
    @GetMapping("/device/oeeTimeline")
    public Map<String, Object> oeeTimeline(
            @RequestParam String startDate,
            @RequestParam String endDate,
            @RequestParam(defaultValue = "1") Integer pageNo,
            @RequestParam(defaultValue = "20") Integer pageSize) {
        return deviceSearchService.queryOeeTimeline(startDate, endDate, pageNo, pageSize);
    }

    /**
     * 智能灯统计稼动率查询(仪表盘)
     * 支持日/周/月查询,返回总时长、稼动率、当前机台状态、异常排行榜、每设备状态时长
     *
     * @param startDate 开始日期 yyyy-MM-dd (day模式必填)
     * @param endDate   结束日期 yyyy-MM-dd (day模式必填)
     */
    @GetMapping("/device/lampStatistics")
    public Map<String, Object> lampStatistics(
            @RequestParam(required = false) String startDate,
            @RequestParam(required = false) String endDate) {
        return deviceSearchService.queryLampStatistics(startDate, endDate);
    }

    /**
     * 开机率查询(基于 dev_util 表)
     * 灭灯(state=0)=未开机,其他灯=开机,每台设备单独计算,不分页
     *
     * @param startDate 开始日期 yyyy-MM-dd
     * @param endDate   结束日期 yyyy-MM-dd
     */
    @GetMapping("/device/bootRate")
    public Map<String, Object> bootRate(
            @RequestParam String startDate,
            @RequestParam String endDate) {
        return deviceSearchService.queryBootRate(startDate, endDate);
    }

    @GetMapping("/energy/history")
    public void energyHistory() {
        energyPullService.pullEnergyHistoryAndSave();
    }

    /**
     * 分页查询能耗设备信息
     *
     * @param deviceName 设备名称(模糊匹配)
     * @param runStatus  状态(0:离线,1:停机,2:待机,3:运行)
     * @param pageNo     页码,默认1
     * @param pageSize   每页条数,默认10
     */
    @GetMapping("/energy/list")
    public Map<String, Object> energyList(
            @RequestParam(required = false) String deviceName,
            @RequestParam(required = false) String runStatus,
            @RequestParam(defaultValue = "1") Integer pageNo,
            @RequestParam(defaultValue = "10") Integer pageSize) {
        return energySearchService.queryEnergyList(deviceName, runStatus, pageNo, pageSize);
    }

    @GetMapping("/energy/stats")
    public Map<String, Object> energyStats() {
        return energySearchService.queryEnergyStats();
    }
}