package com.yfd.platform.modules.auxcontrol.controller;

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yfd.platform.annotation.Log;
import com.yfd.platform.config.ResponseResult;
import com.yfd.platform.modules.auxcontrol.domain.DeviceAlarmParameter;
import com.yfd.platform.modules.auxcontrol.service.IDeviceAlarmParameterService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;

/**
 * <p>
 * 变电站-辅控设备-告警参数设置 前端控制器
 * </p>
 *
 * @author zhengsl
 * @since 2025-04-23
 */
@RestController
@RequestMapping("/auxcontrol/device-alarm-parameter")
@Api(value = "DeviceAlarmParameterController", tags = "变电站辅控设备告警参数设置")
public class DeviceAlarmParameterController {

    @Resource
    private IDeviceAlarmParameterService deviceAlarmParameterService;


    /**********************************
     * 用途说明: 分页查询变电站辅控设备告警参数设置
     * 参数说明
     * alarmType    告警类型
     * alarmLevel   告警等级
     * deviceId      设备ID
     * signalId      信号id
     * pageNum 当前页
     * 返回值说明: com.yfd.platform.config.ResponseResult 返回分页查询结果
     ***********************************/
    @GetMapping("/page")
    @ApiOperation("分页查询变电站辅控设备告警参数设置")
    public ResponseResult getDeviceAlarmParameterPage(String meterDeviceId, String signalId, String alarmType, String alarmLevel, Page<DeviceAlarmParameter> page) {
        //参数校验  设备id 信号id不能为空
        if (StrUtil.isBlank(meterDeviceId) || StrUtil.isBlank(signalId)) {
            return ResponseResult.error("参数为空");
        }
        //分页查询
        Page<DeviceAlarmParameter> deviceAlarmParameterPage = deviceAlarmParameterService.getDeviceAlarmParameterPage(meterDeviceId, signalId, alarmType, alarmLevel, page);
        return ResponseResult.successData(deviceAlarmParameterPage);
    }

    /***********************************
     * 用途说明：新增变电站辅控设备信息
     * 参数说明
     * device     变电站辅控设备
     * 返回值说明:  com.yfd.platform.config.ResponseResult 返回新增成功或者失败
     ***********************************/
    @Log(module = "综合辅控系统", value = "新增辅控设备告警参数！", type = "1")
    @PostMapping("/addDeviceAlarmParameter")
    @ApiOperation("新增辅控设备告警参数")
    @ResponseBody
    public ResponseResult addDeviceAlarmParameter(@RequestBody DeviceAlarmParameter deviceAlarmParameter) {
        //对象不能为空
        if (ObjectUtil.isEmpty(deviceAlarmParameter)) {
            return ResponseResult.error("参数为空");
        }
        boolean isOK = deviceAlarmParameterService.addDeviceAlarmParameter(deviceAlarmParameter);
        if (isOK) {
            return ResponseResult.success();
        } else {
            return ResponseResult.error();
        }
    }

    /***********************************
     * 用途说明：新增变电站辅控设备信息
     * 参数说明
     * device     变电站辅控设备
     * 返回值说明:  com.yfd.platform.config.ResponseResult 返回新增成功或者失败
     ***********************************/
    @Log(module = "综合辅控系统", value = "修改辅控设备告警参数！", type = "1")
    @PostMapping("/updateDeviceAlarmParameter")
    @ApiOperation("修改辅控设备告警参数")
    @ResponseBody
    public ResponseResult updateDeviceAlarmParameter(@RequestBody DeviceAlarmParameter deviceAlarmParameter) {
        if (ObjectUtil.isEmpty(deviceAlarmParameter)) {
            return ResponseResult.error("参数为空");
        }
        boolean isOK = deviceAlarmParameterService.updateDeviceAlarmParameter(deviceAlarmParameter);
        if (isOK) {
            return ResponseResult.success();
        } else {
            return ResponseResult.error();
        }
    }

    /**********************************
     * 用途说明: 根据ID删除变电站辅控设备告警参数设置
     * 参数说明  id 变电站辅控设备告警参数设置ID
     * 返回值说明: com.yfd.platform.config.ResponseResult 返回删除成功或者失败
     ***********************************/
    @Log(module = "数据变电站辅控设备告警参数设置", value = "根据ID删除变电站辅控设备告警参数设置", type = "1")
    @PostMapping("/deleteDeviceAlarmParameterById")
    @ApiOperation("根据ID删除变电站辅控设备告警参数设置")
    public ResponseResult deleteDeviceAlarmParameterById(@RequestParam String id) {
        if (StrUtil.isBlank(id)) {
            return ResponseResult.error("参数为空");
        }
        boolean isOK = deviceAlarmParameterService.removeById(id);
        if (isOK) {
            return ResponseResult.success();
        } else {
            return ResponseResult.error();
        }
    }

    /**********************************
     * 用途说明: 批量删除变电站辅控设备告警参数设置
     * 参数说明  ids 变电站辅控设备告警参数设置id数组
     * 返回值说明: com.yfd.platform.config.ResponseResult 返回批量删除成功或失败
     ***********************************/
    @Log(module = "数据变电站辅控设备告警参数设置", value = "批量删除变电站辅控设备告警参数设置", type = "1")
    @PostMapping("/deleteDeviceAlarmParameterByIds")
    @ApiOperation("批量删除变电站辅控设备告警参数设置")
    public ResponseResult deleteDeviceAlarmParameterByIds(@RequestParam String ids) {
        if (StrUtil.isBlank(ids)) {
            return ResponseResult.error("参数为空");
        }
        List<String> idList = StrUtil.split(ids, "");
        boolean isOK = deviceAlarmParameterService.removeByIds(idList);
        if (isOK) {
            return ResponseResult.success();
        } else {
            return ResponseResult.error();
        }
    }

}
