package com.zksy.WaterSupply.WaterPipeInfo.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zksy.WaterSupply.WaterPipeInfo.domain.WaterPipeInfo;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 管网信息 服务层接口
 */
public interface IWaterPipeInfoService extends IService<WaterPipeInfo> {

    /**
     * 分页条件查询
     */
    IPage<WaterPipeInfo> queryPage(Page<WaterPipeInfo> page,
                                   String pipeCode,
                                   String pipeName,
                                   String pipeMaterial,
                                   String status,
                                   LocalDateTime startTime,
                                   LocalDateTime endTime);

    /**
     * 按状态统计管网
     */
    List<Map<String, Object>> statPipeByStatus();

    /**
     * 按材质统计管网
     */
    List<Map<String, Object>> statPipeByMaterial();

    /**
     * 获取最新管网
     */
    WaterPipeInfo getLatestPipe();

    /**
     * 整体统计
     */
    Map<String, Object> getPipeOverallStatistics();

    /**
     * 分页查询回收站数据
     */
    IPage<WaterPipeInfo> queryDeletedPage(Page<WaterPipeInfo> page,
                                          String pipeCode,
                                          String pipeName,
                                          String pipeMaterial,
                                          LocalDateTime startTime,
                                          LocalDateTime endTime);

    /**
     * 批量恢复已删除数据
     */
    boolean restoreByIds(List<Long> ids, String updateBy);

    /**
     * 批量彻底物理删除数据
     */
    boolean deleteByIdsPhysically(List<Long> ids);
}