package com.zd.netty.controller;

import com.zd.common.core.domain.R;
import com.zd.netty.constant.RfidConstants;
import com.zd.netty.service.IFridService;
import com.zd.system.api.laboratory.domain.RemoteLabHardware;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

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

/**
 * @author Administrator
 */
@Api(tags = {"FRID设备控制器"})
@RestController
@RequestMapping("/frid")
public class FridDeviceController {

    @Resource
    private IFridService service;

    /**
     * 启动FRID扫描监控
     *         Session.S0 高频循环返回在辐射区域的数据，距离越近频次越高
     *         Session.S1 次高频循环返回在辐射区域数据，距离越近频次越高
     *         Session.S2 在辐射范围内重复出现或停止不动的有且仅返回一次数据，当设备离开辐射区域后重置缓存记录，根据厂商提供的文档和本人结合业务应用实际测试，推荐使用此session
     *         Session.S3 这个暂时没搞懂，选择此session的时候在没有标签在辐射区域会报错，不知道是因为识别设备不够四个还是其他问题，待确定
     */
    @ApiOperation("信道启动FRID扫描监控")
    @PostMapping("/startMonitorChannels")
    public R<Boolean> startMonitorChannels(@RequestBody RemoteLabHardware hardware) {
        service.start(hardware);
        return R.ok();
    }

    /**
     * 断开设备连接
     */
    @ApiOperation("断开设备连接")
    @PostMapping("/disconnect")
    public R<Boolean> disconnect(@RequestBody RemoteLabHardware hardware) {
        service.stop(hardware);
        return R.ok();
    }

    /**
     * 开启设备警报
     */
    @ApiOperation("开启设备警报")
    @PostMapping("/alarm")
    public R<Boolean> alarm(@RequestBody RemoteLabHardware hardware) {
        return R.ok(service.alarm(hardware));
    }

    /**
     * 开启设备警报
     */
    @ApiOperation("获取RFID配置")
    @GetMapping("/config")
    public R<List<Map<Integer,String>>> config() {
        return R.ok( RfidConstants.getConfig());
    }
}
