package com.artfess.rescue.event.manager;

import cn.hutool.db.Page;
import com.alibaba.fastjson.JSONObject;
import com.artfess.base.model.CommonResult;
import com.artfess.base.query.PageList;
import com.artfess.base.query.QueryFilter;
import com.artfess.rescue.event.model.BizCompensationInfo;
import com.artfess.base.manager.BaseManager;
import com.artfess.rescue.event.vo.CountCompensationNumVO;
import com.artfess.rescue.event.vo.CountCompensationTypeVO;
import com.artfess.rescue.report.dto.FilterDto;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 路损赔偿信息 服务类
 *
 * @author 系统管理员
 * @company 阿特菲斯信息技术有限公司
 * @since 2024-08-05
 */
public interface BizCompensationInfoManager extends BaseManager<BizCompensationInfo> {

    /**
     * 新增
     *
     * @param entity
     * @return
     */
    boolean saveInfo(BizCompensationInfo entity);

    /**
     * 修改
     *
     * @param entity
     * @return
     */
    boolean updateInfo(BizCompensationInfo entity);

    /**
     * excel导出
     *
     * @param response
     * @param request
     * @param queryFilter
     */
    void export(HttpServletResponse response, HttpServletRequest request, QueryFilter<BizCompensationInfo> queryFilter);

    /**
     * 根据id查询详情
     *
     * @param id
     * @return
     */
    BizCompensationInfo getById(String id);

    /**
     * 路产单数量统计
     *
     * @param dto 路损赔偿分页条件
     * @return List<CountCompensationNumVO>
     */
    CommonResult<JSONObject> countFrequency(FilterDto dto);

    /**
     * 路产损失项目统计
     *
     * @param queryFilter 路损赔偿分页条件
     * @return List<CountCompensationTypeVO>
     */
    CommonResult<List<CountCompensationTypeVO>> countType(QueryFilter<BizCompensationInfo> queryFilter);

    PageList<BizCompensationInfo> queryByPage(QueryFilter<BizCompensationInfo> queryFilter);

    /**
     * 批量删除
     * @param ids
     * @return
     */
    boolean deleteBath(List<String> ids);

    /**
     * 根据id删除
     * @param id
     * @return
     */
    boolean deleteById(String id);
}
