
package org.sky.scientific.service;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import jakarta.servlet.http.HttpServletResponse;
import org.sky.core.mp.base.BaseService;
import org.sky.scientific.excel.XmExcel;
import org.sky.scientific.pojo.dto.XmDTO;
import org.sky.scientific.pojo.dto.XmUpdateDto;
import org.sky.scientific.pojo.entity.XmEntity;
import org.sky.scientific.pojo.vo.XmSummary;
import org.sky.scientific.pojo.vo.XmVO;
import org.sky.scientific.pojo.vo.XmYszbVO;

import java.util.List;

/**
 * 科研项目 服务类
 *
 * @author Kd
 * @since 2025-06-29
 */
public interface IXmService extends BaseService<XmEntity> {

	/**
	 * 项目列表
	 * @param page
	 * @param xm
	 * @return
	 */
	IPage<XmEntity> selectXmList(IPage<XmEntity> page, XmDTO xm);

	/**
	 * 年度项目列表
	 * @param year
	 * @return
	 */
	List<XmEntity> selectXmListByYear(String year);

	/**
	 * 导出数据
	 *
	 * @param queryWrapper 查询条件
	 * @return List<XmExcel>
	 */
	List<XmExcel> exportXm(Wrapper<XmEntity> queryWrapper);

	/**
	 * 立项
	 * @param xm
	 * @return 项目id
	 */
    Long approval(XmDTO xm);

	boolean updateXm(XmUpdateDto dto);

	/**
	 * 项目汇总表
	 * @param page
	 * @param xm
	 * @return
	 */
	IPage<XmSummary> summaryPage(IPage<XmSummary> page, XmDTO xm);

	/**
	 * 项目汇总表-导出
	 * @param response
	 * @param dto
	 */
	void exportSummary(HttpServletResponse response, XmDTO dto);

	/**
	 * 项目预算总表
	 * @param xmId
	 * @return
	 */
	XmYszbVO selectYszb(Long xmId);

	/**
	 * 项目详情
	 * @param xm
	 * @return
	 */
	XmVO selectByXmId(Long xmId);

	/**
	 * 查询年度研发项目列表，项目周期包含yearAndMonth的研发项目
	 * @param page
	 * @param xm
	 * @return
	 */
	IPage<JSONObject> selectAssistList(IPage<JSONObject> page, XmDTO xm);


	/**
	 * 查询项目立项信息
	 * @param xmId
	 * @return
	 */
	XmVO selectApprovalInfo(Long xmId);
}
