package com.artfess.rescue.patrol.controller;


import com.artfess.base.annotation.ApiGroup;
import com.artfess.base.constants.ApiGroupConsts;
import com.artfess.base.exception.RequiredException;
import com.artfess.base.model.CommonResult;
import com.artfess.base.query.QueryFilter;
import com.artfess.base.valid.AddGroup;
import com.artfess.poi.util.FileDownloadUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.core.io.ClassPathResource;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import com.artfess.base.controller.BaseController;
import com.artfess.rescue.patrol.model.BizVideoInspection;
import com.artfess.rescue.patrol.manager.BizVideoInspectionManager;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 视频巡检记录 前端控制器
 *
 * @author 系统管理员
 * @company 阿特菲斯信息技术有限公司
 * @since 2025-04-11
 */
@RestController
@RequestMapping("/bizVideoInspection/v1/")
@Api(tags = "视频巡检记录")
@ApiGroup(group = {ApiGroupConsts.GROUP_BIZ_RESCUE})
public class BizVideoInspectionController extends BaseController<BizVideoInspectionManager, BizVideoInspection> {

    @PostMapping("/batch/save")
    @ApiOperation("批量新增视频巡检记录")
    public CommonResult<String> batchSave(@ApiParam(name = "model", value = "实体信息") @Validated({AddGroup.class}) @RequestBody List<BizVideoInspection> videoInspections) {
        return baseService.batchSave(videoInspections);
    }


    @GetMapping("/downModel")
    @ApiOperation("下载导入模版")
    public void downTemplate(HttpServletResponse response) {
        try {
            ClassPathResource classPathResource = new ClassPathResource("model/videoInspection.xlsx");
            FileDownloadUtil.fileDownload(response, classPathResource.getInputStream(), "视频巡检记录导入模板.xlsx");
        } catch (Exception e) {
            response.setCharacterEncoding("utf-8");
            throw new RequiredException("你所下载的资源不存在");
        }
    }

    @PostMapping("/import")
    @ApiOperation("导入视频巡检记录")
    public CommonResult<List<BizVideoInspection>> importVideoInspection(@ApiParam(name = "file", value = "excel模板文件", required = true) @RequestParam MultipartFile file) {
        return baseService.importVideoInspection(file);
    }

    @PostMapping("/export")
    @ApiOperation("导出视频巡检记录")
    public void exportVideoInspection(@ApiParam(name = "queryFilter", value = "分页查询信息") @RequestBody QueryFilter<BizVideoInspection> queryFilter,HttpServletResponse response) {
         baseService.exportVideoInspection(queryFilter,response);
    }

}
