package com.artfess.rescue.open.controller;

import com.artfess.base.annotation.ApiGroup;
import com.artfess.base.constants.ApiGroupConsts;
import com.artfess.base.model.CommonResult;
import com.artfess.base.query.PageList;
import com.artfess.rescue.open.dto.BaseQueryDTO;
import com.artfess.rescue.open.dto.CameraInfoDTO;
import com.artfess.rescue.open.dto.OpenBaseQueryDTO;
import com.artfess.rescue.open.manager.OpenCountManager;
import com.artfess.rescue.open.vo.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.List;

/**
 * @Author: wsf
 * @Description: 巡查救援-驾驶舱相关服务
 * @DateTime: 2024/10/29 10:54
 **/
@RestController
@RequestMapping("/open/v1/")
@ApiGroup(group = {ApiGroupConsts.GROUP_BIZ_RESCUE})
@Api(tags = "巡查救援-驾驶舱相关服务")
public class OpenCountController {

    @Resource
    private OpenCountManager openCountManager;

    @PostMapping("/patrol/info")
    @ApiOperation(value = "基本概览", notes = "基本概览-巡查、救援基本概览")
    public CommonResult<PatrolInfoVO> patrolInfo(@ApiParam(name = "OpenBaseQueryDTO", value = "驾驶舱查询条件DTO") @RequestBody OpenBaseQueryDTO dto) {
        return openCountManager.getPatrolInfo(dto);
    }

    @PostMapping("/patrol/count")
    @ApiOperation(value = "巡查统计", notes = "巡查统计-当日巡查情况,异常情况任务处理列表")
    public CommonResult<PatrolCountVO> patrolCount(@ApiParam(name = "OpenBaseQueryDTO", value = "驾驶舱查询条件DTO") @RequestBody OpenBaseQueryDTO dto) {
        return openCountManager.getPatrolCount(dto);
    }

    @PostMapping("/task/count")
    @ApiOperation(value = "任务统计", notes = "任务统计-当日事件、救援情况")
    public CommonResult<TaskCountVO> taskCount(@ApiParam(name = "OpenBaseQueryDTO", value = "驾驶舱查询条件DTO") @RequestBody OpenBaseQueryDTO dto) {
        return openCountManager.getTaskCount(dto);
    }

    @PostMapping("/task/type")
    @ApiOperation(value = "事件类型", notes = "事件类型")
    public CommonResult<List<EventTypeVO>> taskTypeCount(@ApiParam(name = "OpenBaseQueryDTO", value = "驾驶舱查询条件DTO") @RequestBody OpenBaseQueryDTO dto) {
        return openCountManager.getTaskTypeCount(dto);
    }

    @PostMapping("/task/querySurroundingCameraInfo")
    @ApiOperation(value = "事件周边摄像头查询", notes = "事件周边摄像头查询")
    public CommonResult<List<CameraInfoDTO>> taskTypeCount(@ApiParam(name = "SurroundingCameraInfoQueryVO", value = "驾驶舱查询条件DTO") @Valid @RequestBody SurroundingCameraInfoQueryVO vo) {
        List<CameraInfoDTO> cameraInfoDTOS = openCountManager.querySurroundingCameraInfo(vo);
        return new CommonResult<>(true, "数据获取成功！", cameraInfoDTOS);
    }

    @PostMapping("/common/info")
    @ApiOperation(value = "运行监测大屏-明细查询", notes = "运行监测大屏-明细查询")
    public PageList roadTaskInfo(@ApiParam(name = "OpenBaseQueryDTO", value = "驾驶舱查询条件DTO") @RequestBody BaseQueryDTO dto) {
        return openCountManager.getCommonInfo(dto);
    }

}
