
package org.sky.scientific.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import jakarta.servlet.http.HttpServletResponse;
import org.sky.core.mp.base.BaseService;
import org.sky.scientific.pojo.dto.XmCostDetailsDTO;
import org.sky.scientific.pojo.entity.DeductionCostQt;
import org.sky.scientific.pojo.entity.XmCostDetailsEntity;
import org.sky.scientific.pojo.vo.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 研发费用支出明细账 服务类
 *
 * @author Kd
 * @since 2025-07-30
 */
public interface IXmCostDetailsService extends BaseService<XmCostDetailsEntity> {
	/**
	 * 自定义分页
	 *
	 * @param page 分页参数
	 * @param dto 查询参数
	 * @return IPage<XmCostDetailsEntity>
	 */
	IPage<XmCostDetailsEntity> selectXmCostDetailsPage(IPage<XmCostDetailsEntity> page, XmCostDetailsDTO dto);

	/**
	 * 新增或修改
	 * @param xmCostDetails
	 * @return
	 */
	boolean submit(XmCostDetailsEntity xmCostDetails);

	/**
	 * 删除
	 * @param longList
	 * @return
	 */
	boolean physicalDeleteByIds(List<Long> ids);

	/**
	 * 导入
	 * @param file
	 * @param yearAndMonth
	 * @return
	 */
	boolean importXmCostDetails(MultipartFile file, String yearAndMonth);

	/**
	 * 导出数据
	 * @param response
	 * @param dto
	 * @return
	 */
	void exportXmCostDetails(HttpServletResponse response, XmCostDetailsDTO dto);

	/**
	 * 会计口径-研发费用辅助明细账
	 * @param dto
	 * @return
	 */
	List<FinanceCostDetailVO> financeCostDetail(XmCostDetailsDTO dto);

	/**
	 * 会计口径-研发费用辅助账汇总表
	 * @param page
	 * @param dto
	 * @return
	 */
	IPage<FinanceCostSummary> financeCostSummary(IPage<FinanceCostSummary> page, XmCostDetailsDTO dto);

	/**
	 * 高新口径-研发费用辅助明细账
	 * @param dto
	 * @return
	 */
	List<HighTechCostDetailVO> highTechCostDetail(XmCostDetailsDTO dto);

	/**
	 * 高新口径-研发费用辅助账汇总表
	 * @param page
	 * @param dto
	 * @return
	 */
	IPage<HighTechCostSummary> highTechCostSummary(IPage<HighTechCostSummary> page, XmCostDetailsDTO dto);

	/**
	 * 加计扣除-研发支出辅助明细账
	 * @param dto
	 * @return
	 */
	List<DeductionCostDetailVO> deductionCostDetail(XmCostDetailsDTO dto);

	/**
	 * 加计扣除-研发支出辅助汇总表
 	 * @param dto
	 * @return
	 */
	DeductionCostSummary deductionCostSummary(XmCostDetailsDTO dto);

	/**
	 * 加计扣除-研发支出辅助汇总表 修改    其中：其他事项
	 * @param dto
	 * @return
	 */
	boolean updateDeductionQt(DeductionCostQt dto);
}
