package com.ruoyi.gysl.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.core.domain.entity.SysDictType;
import com.ruoyi.gysl.entity.BasicInformation;
import com.ruoyi.gysl.entity.request.AuditRequest;
import com.ruoyi.gysl.entity.request.BasicInformationPageReq;
import com.ruoyi.gysl.entity.response.BasicInformationResponse;
import com.ruoyi.gysl.entity.response.ProjectExcelInfo;

import java.io.OutputStream;
import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 基本信息(BasicInformation)表服务接口
 *
 * @author makejava
 * @since 2025-02-24 09:25:55
 */
public interface BasicInformationService extends IService<BasicInformation> {

    /**
     * 分页查询所有数据
     *
     * @param page             分页对象
     * @param req 查询实体
     * @return 所有数据
     */
    Page<BasicInformation> page(Page<BasicInformation> page, BasicInformationPageReq req);


    /**
     * 导出项目数据
     */
    List<ProjectExcelInfo> selectList();

//    /**
//     * 填充数据
//     */
//    void approvalMethodfillInData(XSSFSheet sheet, XSSFCellStyle contentStyle, int rowNum, List<ProjectExcelInfo> info,List<String> sc,List<String> ec,int a) ;
//
//    /**
//     * 填充数据-项目基础信息获取
//     */
//    String getExcelData(ProjectExcelInfo item,String str);
//
//    /**
//     * 填充数据-项目建筑信息获取
//     */
//    String getBuildingData(ProjectBuildingExcel item,String str);

    /**
     * 有经纬度的项目列表
     */
    Page<BasicInformation> projectList(Page<BasicInformation> page);

    /**
     * 查看当前用户是否有权限查看或者修改新增
     */
    BasicInformation testXmId(Serializable xmId);

    /**
     * 企业端和政务端信息修改
     */
    Long audit(AuditRequest req,int status,int oldStatus);
    /**
     * 通过主键查询单条项目所有数据(政务端)
     *
     * @param id 主键
     * @return 单条数据
     */
    BasicInformationResponse selectOne(Long id);


    /**
     * 删除项目id对应的所有数据
     */
    void removeByXmIds(List<Long> idList);

    /**
     * 企业端暂存
     */
    Long staging(AuditRequest req);

    /**
     * 通过主键查询单条项目所有数据(企业端)
     *
     * @param id 主键
     * @return 单条数据
     */
    BasicInformationResponse stagingInfo(Long id);


    /**
     * 根据材料返回输chu流
     */
    void generateDocument(Map<String, Object> map, String docx, OutputStream sr) throws Exception;

    /**
     * 根据dict_type和dict_value返回
     */
    String getDictLabel(String dictType, String dictValue, List<SysDictData> sysDictData);
}

