package com.casic.missiles.controller.business;

import com.casic.missiles.dto.ReturnDTO;
import com.casic.missiles.dto.business.dispatch.ReadSampleDTO;
import com.casic.missiles.model.equipment.EquipmentFixedAssets;
import com.casic.missiles.service.business.IBusinessReadWriterService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Set;

/**
 * @Description: 读写器
 * @Author: wangpeng
 * @Date: 2023/3/18 11:50
 */

@Api(tags = "读写器业务相关接口")
@Slf4j
@RestController
@RequestMapping("/business/readWriter")
public class BusinessReadWriterController {
    @Autowired
    private IBusinessReadWriterService readWriterService;

    /**
     * 大读写器
     * 读取读写器获取标签信息、业务信息（新建委托书中使用，新建委托书中增加通过读写器获取样品按钮）
     */
//    @ApiOperation("获取读写器识别的样品列表")
//    @PostMapping("/sample/readList")
//    public ReturnDTO<List<ReadSampleDTO>> sampleReadList(@RequestBody Set<String> strSet) {
//        return readWriterService.sampleReadList(strSet);
//    }

    /**
     * 测量设备中标签识别按钮，实现接口调用有线扫码枪（二维码）和读写器设备结合的结果，识别的结果先展示为设备列表，点击某一个再查详情
     * 已实现有线扫码枪（二维码）和大读写器结合扫描，扫码枪扫描结果是设备编号，读写器扫描结果是设备标签绑定
     */
    @ApiOperation("测量设备标签识别按钮接口")
    @PostMapping("/equipment/label/readList")
    public ReturnDTO<List<EquipmentFixedAssets>> equipmentLabelReadList(@RequestBody Set<String> strSet) {
        return readWriterService.equipmentLabelReadList(strSet);
    }

    /**
     * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表，需要实现接口调用有线扫码枪（二维码）和读写器设备结合的结果，识别的结果先展示为样品列表，点击某一个再查详情
     * 已实现有线扫码枪（二维码）和大读写器结合扫描，扫码枪扫描结果是样品编号，读写器扫描结果是样品标签绑定
     */
    @ApiOperation("扫描收入、扫描检完、新建委托书、待收入等标签识别获取样品列表")
    @PostMapping("/sample/label/readList")
    public ReturnDTO<List<ReadSampleDTO>> sampleLabelReadList(@RequestBody Set<String> strSet) {
        return readWriterService.sampleLabelReadList(strSet);
    }

    /**
     * 原厂家
     * 大读写器
     * TCP连接，需配置和192.168.1.168一个段
     * 读取读写器获取标签TID列表，用于标签绑定，前端从结果中选取一个标签传入标签绑定接口
     */
//    @ApiOperation("原厂家获取大读写器识别的标签TID列表")
//    @GetMapping("/tId/readList")
//    public ReturnDTO<Set<String>> tIdReadList() {
//        return readWriterService.tIdReadList();
//    }

    /**
     * 新厂家
     * 大读写器
     * TCP连接，需配置和192.168.1.201一个段
     * 读取读写器获取标签TID列表，用于标签绑定，前端从结果中选取一个标签传入标签绑定接口
     */
//    @ApiOperation("新厂家获取大读写器识别的标签TID列表")
//    @GetMapping("/tId/readList")
//    public ReturnDTO<Set<String>> tIdNewReadList() throws InterruptedException {
//        return readWriterService.tIdNewReadList();
//    }

    /**
     * 小读写器
     * USB-HID连接（HID是一种USB通信协议，无需安装驱动就能进行交互）
     * 读取读写器获取TID列表，用于标签绑定，前端从结果中选取一个标签传入标签绑定接口
     */
//    @ApiOperation("获取小读写器识别的标签TID列表")
//    @GetMapping("/tId/mini/readList")
//    public ReturnDTO<Set<String>> tIdMiniReadList() {
//        return readWriterService.tIdMiniReadList();
//    }

    /**
     * 有线扫码枪（二维码）（徐州、西昌均使用）
     * USB串口连接（模拟COM口），USB模拟串行通讯模式，连接后在设备管理器-端口(COM和LPT)可查看连接设备
     * 目前设置：扫码一次读取一个，扫码结果无回车
     * 二维码由样品编号/设备编号生成
     * 扫描收入、扫描检完等，以及大读写器的补充（包括新建委托书和待收入中使用）
     */
//    @ApiOperation("获取有线扫码枪识别列表")
//    @GetMapping("/code/gun/readList")
//    public ReturnDTO<Set<String>> codeGunReadList() {
//        return readWriterService.codeGunReadList();
//    }

    /**
     * 标签绑定功能，实现大读写器和小读写器识别结合的结果TID列表
     */
//    @ApiOperation("大读写器和小读写器识别结合标签绑定功能")
//    @GetMapping("/all/tId/readList")
//    public ReturnDTO<Set<String>> allTidReadList() throws ExecutionException, InterruptedException {
//        return readWriterService.allTidReadList();
//    }
}
