package com.usky.fire.service;

import com.usky.common.core.bean.CommonPage;
import com.usky.common.mybatis.core.CrudService;
import com.usky.fire.domain.BaseCompany;
import com.usky.fire.service.vo.BaseCompanyExportVO;
import com.usky.fire.service.vo.CompanyAddVO;
import com.usky.fire.service.vo.CompanyDataVo;
import com.usky.fire.service.vo.CompanyExportVO;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 联网单位信息表 服务类
 * </p>
 *
 * @author JCB
 * @since 2022-08-23
 */
public interface BaseCompanyService extends CrudService<BaseCompany> {

    /**
     * 根据登录的用户查询所关联的单位下拉框
     *
     * @return
     */
    List<BaseCompany> userCompanySelect();

    /**
     * 根据单位ID查询单位下拉框
     *
     * @param companyIdList 单位ID
     * @return
     */
    List<BaseCompany> companySelect(List<String> companyIdList);

    /**
     * 所有单位ID的查询
     *
     * @return
     */
    List<BaseCompany> companyIdList(List<String> streetTownList);

    /**
     * 单位管理-单位列表查询
     *
     * @param companyName  单位名称
     * @param organization 组织机构编码
     * @param streetTownName 街镇名称
     * @param companyType 单位类型
     * @param pageNum      当前页
     * @param pageSize     每页条数
     * @return
     */
    CommonPage<Object> companyList(String companyName, String organization,String streetTownName,
                                   String companyType, Integer pageNum,
                                   Integer pageSize);

    /**
     * 单位管理-单位列表查询-导出
     * @param companyName  单位名称
     * @param organization 组织机构编码
     */
    List<CompanyExportVO> companyListExport(String companyName, String organization);

    /**
     * 单位管理-修改
     *
     * @param companyDataVo
     */
    void updateCompany(CompanyDataVo companyDataVo);

    /**
     * 单位管理-删除
     *
     * @param id 主键ID
     */
    void delCompany(Integer id);

    List<Map<String, Object>> lawTrendScatterer(String streetTown, String sattererType);

    List<Map<String, Object>> reportComplaint();

    List<String> inspectDeclare();

    List<String> lawStatistics();

    List<Map<String, Object>> companyData(String streetTown, List<String> companyCodeList);

    /**
     * 闵行大屏
     *
     * @param streetTown  街镇
     * @param companyType 单位类型（1：重点单位、2：一般单位、3：九小场所、9：其他单位）
     * @return
     */
    List<Object> companyScatterer(String streetTown, String companyType);

    /**
     * 更新坐标和街道
     *
     * @param id1        主表主键ID
     * @param id2        附表主键ID
     * @param longitude  经度
     * @param latitude   纬度
     * @param streetTown 街道
     */
    void updateCompany1(Integer id1, Integer id2, String longitude, String latitude, String streetTown);

    /**
     * 单位数量查询
     * @return
     */
    int companyCount();

    List<String> companyIdList(String StreetTown);

    CommonPage<Map<String, Object>> fireInspectionData(String companyName, String organization, Integer id, Integer pageNum, Integer pageSize);

    List<BaseCompanyExportVO> fireInspectionDataExport(String companyName, String organization);

    /**
     * 单位信息采集-新增
     *
     * @param companyAddVO 采集单位数据
     */
    void addBaseCompany(CompanyAddVO companyAddVO);

    /**
     * 单位信息采集-名称模糊查询
     *
     * @param companyName 单位名称
     */
    List<CompanyDataVo> companyByNameSelect(String companyName);

    /**
     * 所有单位ID的查询
     *
     * @return
     */
    List<BaseCompany> companyIdByTypeList(String companyType);
}
