package com.yeejoin.amos.boot.module.jg.api.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.common.api.dto.DPFilterParamDto;
import com.yeejoin.amos.boot.module.jg.api.dto.CompanyEquipCountDto;
import com.yeejoin.amos.boot.module.jg.api.dto.EquipBizCountDto;
import com.yeejoin.amos.boot.module.jg.api.dto.JgScrapCancelDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgScrapCancel;
import com.yeejoin.amos.boot.module.jg.api.vo.SortVo;
import com.yeejoin.amos.boot.module.jg.api.vo.tableDataExportVo.ScrapCancelVo;
import com.yeejoin.amos.boot.module.ymt.api.dto.IdxBizJgProjectContraptionDto;
import org.apache.ibatis.annotations.Param;

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

/**
 * 设备报废注销 Mapper 接口
 *
 * @author system_generator
 * @date 2023-12-20
 */
public interface JgScrapCancelMapper extends BaseMapper<JgScrapCancel> {

    Page<JgScrapCancelDto> getListPage(@Param("page") Page<JgScrapCancelDto> page,
                                          @Param("sort") SortVo sortMap,
                                          @Param("dto") JgScrapCancelDto dto,
                                          @Param("roleIds") List<String> roleIds,
                                          @Param("companyCode") String companyCode,
                                          @Param("currentUserId") String currentUserId,
                                          @Param("orgCode") String orgCode
    );

    List<ScrapCancelVo> queryScrapCancelInIds(@Param("ids") List<String> ids);

    Map<String, Object> getDetail(@Param("id") String id);

    Map<String, Object> getInspectDetail(@Param("id") String id);

    Map<String, Object> getUseDetail(@Param("id") String id);

    Page<Map<String, Object>> getEquipListPage(@Param("page") Page<Map<String, Object>> page, @Param("factoryNum") String factoryNum, @Param("equList") String equList, @Param("equCategory") String equCategory);

    void updatePromoter(@Param("id") Long id);

    /**
     * 根据安装告知编号查询设备、设计、制造等信息
     *
     * @param sequenceNbr 安装告知编号
     */
    Map<String, Object> queryEquipInformation(@Param("sequenceNbr") long sequenceNbr);

    List<EquipBizCountDto> queryScrappedDeviceStaticListData(DPFilterParamDto dpFilterParamDto);

    List<Map<String, Object>> getScrappedDeviceCount(@Param("dpFilterParamDto") DPFilterParamDto dpFilterParamDto);

    List<CompanyEquipCountDto> queryForFlowingEquipList();

    IPage<Map<String, Object>> selectPipeLinePage(@Param("page") Page<Map<String, Object>> page, @Param("projectContraptionId") String projectContraptionId, @Param("filters") Map<String, Object> filters);

    IPage<IdxBizJgProjectContraptionDto> queryJgProjectContraptionPage(Page<IdxBizJgProjectContraptionDto> page, String useUnitCreditCode, Set<String> proIds, @Param("filters") Map<String, Object> filters);
}
