package com.zcloud.accident.api;

import com.zcloud.accident.dto.AccidentAddCmd;
import com.zcloud.accident.dto.AccidentCountQry;
import com.zcloud.accident.dto.AccidentPageQry;
import com.zcloud.accident.dto.AccidentUpdateCmd;
import com.zcloud.accident.dto.clientobject.AccidentCO;
import com.zcloud.accident.dto.clientobject.AccidentCorpCountStatCO;
import com.zcloud.accident.dto.clientobject.AccidentCountStatCO;

import com.alibaba.cola.dto.PageResponse;
import com.alibaba.cola.dto.SingleResponse;
import com.alibaba.cola.dto.MultiResponse;

import java.util.List;

/**
* web-client
* @Author fangjiakai
* @Date 2025-10-29 14:28:51
*/
public interface AccidentServiceI {

    AccidentCO queryById(Long id);

    PageResponse<AccidentCO> listPage(AccidentPageQry qry);

    /**
     * 获取所有符合条件的数据
     * @param qry 查询条件
     * @return 数据列表
     */
    List<AccidentCO> listAll(AccidentPageQry qry);

    SingleResponse<AccidentCO> add(AccidentAddCmd cmd);

    void edit(AccidentUpdateCmd cmd);

    void remove(Long id);

    void removeBatch(Long[] ids);

    /**
     * 按公司统计事件和事故数量
     * @param accidentCountQry 查询条件，包含公司ID列表
     * @return 统计结果列表
     */
    MultiResponse<AccidentCorpCountStatCO> countByCorpinfo(AccidentCountQry accidentCountQry);

    /**
     * 按照corpinfoId和incidentType统计个数（钻取）
     * @param accidentCountQry 查询条件，包含公司ID列表
     * @return 统计结果列表
     */
    MultiResponse<AccidentCountStatCO> countByCorpinfoIdAndIncidentType(AccidentCountQry accidentCountQry);

}

