using Aspose.Cells;
using OASystem.Domain.Entities.Business;
using OASystem.Domain.Entities.Groups;
using OASystem.Domain.ViewModels.Business;
using OASystem.Infrastructure.Repositories.Business;
using System.Web;
namespace OASystem.API.OAMethodLib.ExcelOutput
{
public class Excel_BusConfItemList
{
private CommonBusRepository _busRep;
private string url;
private string path;
public Excel_BusConfItemList()
{
_busRep = AutofacIocManager.Instance.GetService<CommonBusRepository>();
url = AppSettingsHelper.Get("ExcelBaseUrl");
path = AppSettingsHelper.Get("ExcelBasePath");
if (!System.IO.Directory.Exists(path))
{
System.IO.Directory.CreateDirectory(path);//不存在就创建文件夹
}
}
public string Excel(Bus_ConfItemListInfo _entity)
{
if (!string.IsNullOrEmpty(_entity.ExcelPath))
{
if (System.IO.File.Exists(_entity.ExcelPath))
{
//存在
string fileUrl = url + path + _entity.ExcelPath;
return fileUrl;
}
else
{
//不存在
return CreateExcel(_entity);
}
}
else
{
return CreateExcel(_entity);
}
return "";
}
private string CreateExcel(Bus_ConfItemListInfo _entity)
{
string sql = string.Format(@" Select * From(
Select ROW_NUMBER() Over(order By Id desc) as RowNumber,riv.FullName as VendorName,rid.ItemName
,rit.TypeName as ItemTypeName,bci.[Count],bci.CurrCost as Price,bci.OpRemark as ItemRemark
From Bus_ConfItemList as bcil With(Nolock)
Inner Join Bus_ConfItem as bci With(Nolock) On bcil.Id=bci.ConfListId
Inner Join Res_ItemDetail as rid With(Nolock) On bci.ItemId=rid.Id
Inner Join Res_ItemType as rit With(Nolock) On rid.ItemTypeId=rit.Id
Inner Join Res_ItemVendor as riv With(nolock) On rid.VendorId=riv.Id
Where bcil.Id={0}
) as tb ", _entity.Id);
List<Bus_ConfItemExportView> _confItemList = _busRep._sqlSugar.SqlQueryable<Bus_ConfItemExportView>(sql).ToList();
Grp_DelegationInfo _DelegationInfo = _busRep.Query<Grp_DelegationInfo>(s => s.Id == _entity.Diid).First();
string diName = _DelegationInfo != null ? _DelegationInfo.TeamName : "未知团组" + _entity.Diid;
WorkbookDesigner designer = new WorkbookDesigner();
designer.Workbook = new Workbook(AppSettingsHelper.Get("ExcelBasePath") + "Template/会务物料清单模板.xlsx");
designer.SetDataSource("Export", _confItemList);
designer.SetDataSource("ExportDiName", diName);
designer.SetDataSource("ExportOutputDt", DateTime.Now.ToString("yyyy-MM-dd"));
designer.SetDataSource("ExportListRemark", _entity.Remark);
designer.Process();
string fileName = "ConfItemList/" + HttpUtility.UrlEncode("会务物料清单") + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
designer.Workbook.Save(path + fileName);
designer = null;
_entity.ExcelPath = AppSettingsHelper.Get("ExcelFtpPath") + fileName;
_busRep._sqlSugar.Updateable<Bus_ConfItemListInfo>()
.Where(s => s.Id == _entity.Id)
.UpdateColumns(s => s.ExcelPath)
.ExecuteCommand();
string fileUrl = url + _entity.ExcelPath;
return fileUrl;
}
}
}