package com.zcloud.accident.persistence.repository;

import com.zcloud.accident.persistence.dataobject.AccidentDO;
import com.zcloud.accident.domain.model.AccidentCorpCountStat;
import com.zcloud.accident.domain.model.AccidentCountStat;
import com.alibaba.cola.dto.PageResponse;
import com.jjb.saas.framework.repository.repo.BaseRepository;
import org.apache.ibatis.annotations.Param;

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

/**
* web-infrastructure
* @Author fangjiakai
* @Date 2025-10-29 14:28:45
*/
public interface AccidentRepository extends BaseRepository<AccidentDO> {
    PageResponse<AccidentDO> listPage(Map<String,Object> params,String menuPerms);

    /**
     * 获取所有符合条件的数据
     *
     * @param params    查询参数
     * @param menuPerms
     * @return 数据列表
     */
    List<AccidentDO> listAll(Map<String,Object> params,String menuPerms);

    /**
     * 按公司统计事件和事故数量
     *
     * @param corpinfoIds 公司ID列表
     * @return 统计结果列表，包含corpinfoId、corpinfoName、eventCount和accidentCount字段
     */
    List<AccidentCorpCountStat> countByCorpinfo(@Param("corpinfoIds") List<String> corpinfoIds);

    /**
     * 按照corpinfoId和incidentType统计个数
     *
     * @param corpinfoIds    公司ID列表
     * @param eqAccidentType
     * @return 统计结果列表，包含corpinfoId、incidentType和count字段
     */
    List<AccidentCountStat> countByCorpinfoIdAndIncidentType(@Param("corpinfoIds") List<String> corpinfoIds,@Param("eqAccidentType") Integer eqAccidentType);
}

