package com.mosty.base.feign.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.mosty.base.model.dto.yszx.*;
import com.mosty.base.model.entity.lzother.ZhjmxfXfqwXfqyGzdw;
import com.mosty.base.model.entity.sjzx.TbJqCjdb;
import com.mosty.base.model.entity.yszx.TbYsDl;
import com.mosty.base.model.query.yszx.TbYsSxtPageOneQuery;
import com.mosty.base.model.vo.yszx.*;
import com.mosty.common.base.domain.ResponseResult;
import org.apache.ibatis.annotations.Param;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author dw
 * @since 2022/7/23
 * 要素中心对外调用接口 feign
 **/
@FeignClient(value = "mosty-yszx")
public interface MostyYszxFeignService {

    // 根据内容信息查询地理要素数据
    @GetMapping("/mosty-yszx/tbYsDl/selectGeography")
    ResponseResult queryAll(@RequestBody TbYsDlQuery dto);

    // 添加公安机关要素
    @PostMapping("/mosty-yszx/tbYsGajg/add")
    ResponseResult<Integer> add(@RequestBody TbYsGajgDto dto);

    // 编辑公安机关要素
    @PutMapping("/mosty-yszx/tbYsGajg/update")
    ResponseResult<Void> update(@RequestBody TbYsGajgDto dto);

    // 公安机关要素详情查询
    @GetMapping("/mosty-yszx/tbYsGajg/{id}")
    ResponseResult<TbYsGajgVo> getInfo(@PathVariable("id") String id);

    // 删除公安机关要素
    @DeleteMapping("/mosty-yszx/tbYsGajg/{id}")
    ResponseResult<Void> delEntity(@PathVariable("id") String id);

    // 根据必巡点id 和来源表名 删除公安机关要素
    @DeleteMapping("/mosty-yszx/tbYsGajg")
    ResponseResult<Void> delEntity(@RequestBody TbYsGajgDto dto);

    // 根据条件查询公安机关要素
    @PostMapping("/mosty-yszx/tbYsGajg/getList")
    ResponseResult getGajgAll(@RequestBody TbYsGajgQuery dto);

    // 查询摄像头要素详情
    @GetMapping("/mosty-yszx/tbYsSxt/{id}")
    ResponseResult<TbYsSxtDto> getSxtInfoVo(@PathVariable("id") String id);

    // 根据设备编号查询摄像头详情
    @GetMapping("/mosty-yszx/tbYsSxt/getInfoBySbbh/{sbbh}")
    ResponseResult<TbYsSxtDto> getInfoBySbbh(@PathVariable("sbbh") String sbbh);

    // 返回要素表中不存在的感知源
    @PostMapping("/mosty-yszx/tbYsSxt/getSxtBhList")
    ResponseResult<List<String>> getInfoBySbbh(@RequestBody List<String> ids);

    // 添加感知源信息
    @PostMapping("/mosty-yszx/tbYsSxt/add")
    ResponseResult<Integer> addSxt(@RequestBody TbYsSxtDto dto);

    // 根据点位判断所属派出所
    @PostMapping("/mosty-yszx/tbYsGajg/getGajgByJwd")
    ResponseResult<TbYsGajgVo> getGajgByJwd(@RequestBody TbYsGajgByJwdDto dto);

    // 获取公安机关要素列表
    @PostMapping("/mosty-yszx/tbYsGajg/getGajgList")
    ResponseResult<List<TbYsGajgGlbmVo>> getGajgList(@RequestBody TbYsGajgQuery dto);

    // 添加泸州感知源数据
    @PostMapping("/mosty-yszx/tbYsSxt/addLzGzy")
    ResponseResult<Void> addLzGzy(@RequestBody ZhjmxfXfqwXfqyGzdw dto);

    // 查询人员详情信息
    @GetMapping("/mosty-yszx/tbYsRy/getRyInfo")
    ResponseResult<TbYsRyVo> getRyInfo(@RequestParam("sfzh") String sfzh);

    // 添加人员要素
    @PostMapping("/mosty-yszx/tbYsRy/addRyYs")
    ResponseResult<Void> addRyYs(@RequestBody TbYsRyDto dto);

    // 修改人员要素
    @PostMapping("/mosty-yszx/tbYsRy/updateRyYs")
    ResponseResult<Void> updateRyYs(@RequestBody TbYsRyDto dto);

    // 修改人员标签要素
    @PostMapping("/mosty-yszx/tbYsRy/updateRyBqYs")
    ResponseResult<Void> updateRyBqYs(@RequestBody TbYsRyBqUpdateDto dto);

    // 修改人员标签要素
    @PostMapping("/mosty-yszx/tbYsRy/updateRyDhys")
    ResponseResult<Void> updateRyDhys(@RequestBody TbYsRyDhUpdateDto dto);

    // 查询摄像头信息
    @PostMapping("/mosty-yszx/tbYsSxt/selectGzy")
    ResponseResult<TbYsSxtDto> selectGzy(@RequestBody TbYsSxtPageOneQuery dto);

    // 添加地理要素信息
    @PostMapping("/mosty-yszx/tbYsDl")
    ResponseResult<Integer> addDlYs(@RequestBody TbYsDlDto dto);

    //根据名称查询地理要素
    @GetMapping("/mosty-yszx/tbYsDl/selectDlys")
    ResponseResult<TbYsDl> selectDlys(@RequestParam String ysmc);
}
