package com.zcloud.accident.persistence.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jjb.saas.framework.datascope.annotation.DataScope;
import com.jjb.saas.framework.datascope.annotation.DataScopes;
import com.zcloud.accident.domain.model.AccidentCorpCountStat;
import com.zcloud.accident.domain.model.AccidentCountStat;
import com.zcloud.accident.persistence.dataobject.AccidentDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

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

/**
 * web-infrastructure
 *
 * @Author fangjiakai
 * @Date 2025-10-29 14:28:43
 */
@Mapper
@DataScopes({
        @DataScope(method = "listPage", menuPerms = ""),
        @DataScope(method = "list", menuPerms = "")})
public interface AccidentMapper extends BaseMapper<AccidentDO> {

    /**
     * 按公司统计事件和事故数量
     *
     * @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);

    IPage<AccidentDO> listPage(IPage<AccidentDO> iPage, @Param("params") Map<String, Object> params,String menuPerms);

    List<AccidentDO> list(@Param("params") Map<String, Object> params, String menuPerms);
}

