HealthController.java 9.12 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.Collections;
import java.util.Map;

@RestController
public class HealthController {

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

    /**
     * corpCode为空时的统一空数据响应
     */
    private static Map<String, Object> emptyResult() {
        return Collections.emptyMap();
    }

    @GetMapping("/health")
    public String health(@RequestParam(required = false) String corpCode) throws Exception {
        if (!isValidCorpCode(corpCode)) return "corpCode不能为空";
        devicePullService.pullDeviceAndPushToIot(corpCode);
        return "IoT Scheduler is running...";
    }

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

    @GetMapping("/device/stats")
    public Map<String, Object> deviceStats(@RequestParam(required = false) String corpCode) {
        if (!isValidCorpCode(corpCode)) return emptyResult();
        return deviceSearchService.queryDeviceStats(corpCode);
    }

    @GetMapping("/device/lampData")
    public Map<String, Object> lampData(
            @RequestParam(required = false) String corpCode,
            @RequestParam String dtuSn,
            @RequestParam String date) {
        if (!isValidCorpCode(corpCode)) return emptyResult();
        return deviceSearchService.queryLampData(corpCode, dtuSn, date);
    }

    @GetMapping("/device/syncDevUtil")
    public String syncDevUtil(@RequestParam(required = false) String corpCode) {
        if (!isValidCorpCode(corpCode)) return "corpCode不能为空";
        devicePullService.pullDevUtilAndSave(corpCode);
        return "设备利用率数据同步完成";
    }

    @GetMapping("/device/syncOee")
    public String syncOee(@RequestParam(required = false) String corpCode) {
        if (!isValidCorpCode(corpCode)) return "corpCode不能为空";
        devicePullService.pullOeeAndSave(corpCode);
        return "OEE时序数据同步完成";
    }

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

    /**
     * OEE时序图分页查询(含稼动率)
     */
    @GetMapping("/device/oeeTimeline")
    public Map<String, Object> oeeTimeline(
            @RequestParam(required = false) String corpCode,
            @RequestParam String startDate,
            @RequestParam String endDate,
            @RequestParam(defaultValue = "1") Integer pageNo,
            @RequestParam(defaultValue = "20") Integer pageSize) {
        if (!isValidCorpCode(corpCode)) return emptyResult();
        return deviceSearchService.queryOeeTimeline(corpCode, startDate, endDate, pageNo, pageSize);
    }

    /**
     * 智能灯统计稼动率查询(仪表盘)
     */
    @GetMapping("/device/lampStatistics")
    public Map<String, Object> lampStatistics(
            @RequestParam(required = false) String corpCode,
            @RequestParam(required = false) String startDate,
            @RequestParam(required = false) String endDate) {
        if (!isValidCorpCode(corpCode)) return emptyResult();
        return deviceSearchService.queryLampStatistics(corpCode, startDate, endDate);
    }

    /**
     * 开机率查询(基于 dev_util 表)
     */
    @GetMapping("/device/bootRate")
    public Map<String, Object> bootRate(
            @RequestParam(required = false) String corpCode,
            @RequestParam String startDate,
            @RequestParam String endDate) {
        if (!isValidCorpCode(corpCode)) return emptyResult();
        return deviceSearchService.queryBootRate(corpCode, startDate, endDate);
    }

    @GetMapping("/energy/history")
    public void energyHistory(@RequestParam(required = false) String corpCode) {
        if (isValidCorpCode(corpCode)) energyPullService.pullEnergyHistoryAndSave(corpCode);
    }

    /**
     * 分页查询能耗设备信息
     */
    @GetMapping("/energy/list")
    public Map<String, Object> energyList(
            @RequestParam(required = false) String corpCode,
            @RequestParam(required = false) String deviceName,
            @RequestParam(required = false) String runStatus,
            @RequestParam(defaultValue = "1") Integer pageNo,
            @RequestParam(defaultValue = "10") Integer pageSize) {
        if (!isValidCorpCode(corpCode)) return emptyResult();
        return energySearchService.queryEnergyList(corpCode, deviceName, runStatus, pageNo, pageSize);
    }

    @GetMapping("/energy/stats")
    public Map<String, Object> energyStats(@RequestParam(required = false) String corpCode) {
        if (!isValidCorpCode(corpCode)) return emptyResult();
        return energySearchService.queryEnergyStats(corpCode);
    }

    /**
     * 根据dtuSn查询指定日期的设备时用电量和OEE时序
     */
    @GetMapping("/energy/detail")
    public Map<String, Object> energyDetail(
            @RequestParam(required = false) String corpCode,
            @RequestParam String dtuSn,
            @RequestParam String date) {
        if (!isValidCorpCode(corpCode)) return emptyResult();
        return energySearchService.queryEnergyDetailByDate(corpCode, dtuSn, date);
    }

    /**
     * 根据dtuSn查询指定设备的运行时长明细
     */
    @GetMapping("/energy/runtimeDetail")
    public Map<String, Object> energyRuntimeDetail(
            @RequestParam(required = false) String corpCode,
            @RequestParam String dtuSn,
            @RequestParam(defaultValue = "1") String type,
            @RequestParam(required = false) String startDate,
            @RequestParam(required = false) String endDate) {
        if (!isValidCorpCode(corpCode)) return emptyResult();
        return energySearchService.queryEnergyRuntimeDetail(corpCode, dtuSn, type, startDate, endDate);
    }

    /**
     * 查询能耗时序状态 - 分页查询
     */
    @GetMapping("/energy/timelineStatus")
    public Map<String, Object> energyTimelineStatus(
            @RequestParam(required = false) String corpCode,
            @RequestParam String date,
            @RequestParam(defaultValue = "1") Integer pageNo,
            @RequestParam(defaultValue = "12") Integer pageSize) {
        if (!isValidCorpCode(corpCode)) return emptyResult();
        return energySearchService.queryEnergyTimelineStatus(corpCode, date, pageNo, pageSize);
    }

    /**
     * eq_kwh综合统计查询
     */
    @GetMapping("/energy/eqKwhStatistics")
    public Map<String, Object> eqKwhStatistics(
            @RequestParam(required = false) String corpCode,
            @RequestParam String startDate,
            @RequestParam String endDate) {
        if (!isValidCorpCode(corpCode)) return emptyResult();
        return energySearchService.queryEqKwhStatistics(corpCode, startDate, endDate);
    }

    /**
     * 查询eq_kwh多设备能耗数据(按 时/日/月 聚合)
     */
    @GetMapping("/energy/eqKwhByType")
    public Map<String, Object> eqKwhByType(
            @RequestParam(required = false) String corpCode,
            @RequestParam(defaultValue = "1") String type,
            @RequestParam(required = false) String startDate,
            @RequestParam(required = false) String endDate) {
        if (!isValidCorpCode(corpCode)) return emptyResult();
        return energySearchService.queryEqKwhByType(corpCode, type, startDate, endDate);
    }

    /**
     * 调试:查看eq_kwh表中的数据概况
     */
    @GetMapping("/energy/debug/eqKwhInfo")
    public Map<String, Object> debugEqKwhInfo(@RequestParam(required = false) String corpCode) {
        if (!isValidCorpCode(corpCode)) return emptyResult();
        return energySearchService.debugEqKwhInfo(corpCode);
    }

    private boolean isValidCorpCode(String corpCode) {
        return corpCode != null && !corpCode.trim().isEmpty();
    }
}