using BPA.SAAS.Manage.Application.DataBase.Dtos.Goods;
using BPA.SAAS.Manage.Application.DataBase.Dtos.GoodsAttribute;
using BPA.SAAS.Manage.Core.Base;
using BPA.SAAS.Manage.Core.DataBase;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BPA.SAAS.Manage.Application.DataBase.Interface
{
    public interface IGoodsService
    {
        /// <summary>
        /// 分页查询
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<PageUtil> GetGoodsPage(GoodsQueryDto dto);
        /// <summary>
        /// 添加商品
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<bool> AddGoods(GoodsDto dto);
        /// <summary>
        /// 更新商品
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<bool> UpdateGoods(GoodsDto dto);
        /// <summary>
        /// 删除商品
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<bool> DeleteGoods(string id);
        /// <summary>
        /// 查询商品单位
        /// </summary>
        /// <returns></returns>
        Task<List<dynamic>> GetGoodsUintList();
        /// <summary>
        /// 查询商品单位(外部调用)
        /// </summary>
        /// <returns></returns>
        Task<List<dynamic>> GetGoodsUintList_alm();
        /// <summary>
        /// 添加商品单位
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
       Task<bool> AddGoodsUint(GoodsUintDto dto);
        /// <summary>
        /// 商品配方
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
       Task<PageUtil> GetGoodsBomPageAsync(GoodsBomQueryDto dto);
        /// <summary>
        /// 删除商品配方
        /// </summary>
        /// <param name="Ids"></param>
        /// <returns></returns>
        Task<bool> BatchDelGoodsBomAsync(string Ids);
        Task<bool> AddGoodsBomAttribute(GoodsBomAttributeDto dto);
        Task<bool> AddGoodsBom(GoodsBomDto dto);
        Task<List<BPA_GoodsInfo>> GetGoodsList();
        /// <summary>
        /// 根据id查询商品信息
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<GoodsInfoBaseView> GetGoods(string id);


        /// <summary>
        /// 更具id查询商品信息
        /// </summary>
        /// <param name="ids"></param>
        /// <returns></returns>
        Task<List<GoodsInfoBaseView>> GetGoodsListByIds(List<string> ids);


        ///// <summary>
        ///// 设备上传商品数据
        ///// </summary>
        ///// <param name="goodsDatadto"></param>
        ///// <returns></returns>
        //Task<bool> SendGoodsInfo(GoodsDatadto goodsDatadto);
        Task<bool> ExportGood(IFormFile file);

        /// <summary>
        /// 导出 设备工艺流程
        /// </summary>
        /// <returns></returns>
        Task<string> TechnologyTemplateExport(string deviceId);

        /// <summary>
        /// 设备 版本 工序模型导入
        /// </summary>
        /// <returns></returns>
        Task<bool> DeviceVersionTemplateImport(DeviceVersionTemplateImportInputDto inputDto);
    }
}
