package org.springblade.modules.material.service;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.secure.BladeUser;
import org.springblade.modules.fitting.pojo.entity.OperationOrderMaterialEntity;
import org.springblade.modules.fitting.pojo.entity.PlatformFittingApplyEntity;
import org.springblade.modules.material.pojo.dto.MaterialDTO;
import org.springblade.modules.material.pojo.entity.MaterialEntity;
import org.springblade.modules.material.pojo.entity.MaterialOutboundEntity;
import org.springblade.modules.material.pojo.vo.MaterialOutboundVO;
import org.springblade.modules.material.excel.MaterialOutboundExcel;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;

/**
 * 出库明细 服务类
 *
 * @author cswang
 * @since 2024-08-25
 */
public interface IMaterialOutboundService extends BaseService<MaterialOutboundEntity> {
	/**
	 * 自定义分页
	 *
	 * @param page
	 * @param materialOutbound
	 * @return
	 */
	IPage<MaterialOutboundVO> selectMaterialOutboundPage(IPage<MaterialOutboundVO> page, MaterialOutboundVO materialOutbound);


	/**
	 * 导出数据
	 *
	 * @param queryWrapper
	 * @return
	 */
	List<MaterialOutboundExcel> exportMaterialOutbound(Wrapper<MaterialOutboundEntity> queryWrapper);

	void saveMateInkeep(MaterialEntity materialEntity, String out_direct, BladeUser user, String keepForm);

	boolean saveEmpMaterialInVsOut(OperationOrderMaterialEntity orderMaterialEntity, MaterialEntity materialEntity, String out_direct, BladeUser user, String keepForm,String orderId);

	boolean saveMaterialOutbound(PlatformFittingApplyEntity apply, MaterialEntity materialEntity, String out_direct, String companyId, BladeUser user, String keepType, String relateName, String keepForm);

	public void savekeep(MaterialDTO materialEntity, String out_direct, BladeUser user, String keepForm, String keepType,
						 String siteId, String empUseId, String relateName, Integer amount, String orderId, String remarks);
}
