using Cksoft.Data;
using Cksoft.Data.Repository;
using DllEapDal.OFILM;
using DllEapEntity.Dtos;
using DllEapEntity.OFILM;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using System.Linq;
using Cksoft.Unity;
using DllEapDal;
using DllEapCommon.NPOI;
using System.IO;
using Microsoft.AspNetCore.Authorization;
namespace DllEapBll.OFILM
{
[Route("eap/api/[controller]/[action]")]
[Authorize]
public class ForecastController : ControllerBase
{
///
/// 设备需求预测
///
///
///
///
///
///
///
[HttpGet]
public EapResponse Get(string filter, int pageIndex = 1, int pageSize = 10, string sortField = "equipmentmodel", string sortOrder = "ascend")
{
if (sortOrder == "descend")
{
sortOrder = "desc";
}
else
{
sortOrder = "asc";
}
int start, end;
start = (pageIndex - 1) * pageSize + 1;
end = start + pageSize;
var res = new EapResponse() { Code = 1, Msg = string.Empty };
using (IDatabase db = DbFactory.Base("eapslave"))
{
db.BeginTrans();
var dal = new ForecastDal(db);
string errorinfo = string.Empty;
var roles = dal.Get(start, pageSize, sortOrder, sortField, filter, errorinfo);
var total = dal.GetCount(filter);
AntdComplexTableDto data = new AntdComplexTableDto();
var headers = new List();
DataTable dt = new DataTable();
dt = dal.Getfor(roles);
if (dt != null && dt.Columns.Count > 0)
{
foreach (DataColumn item in dt.Columns)
{
if (item.ColumnName != "ParkRowSpan" && item.ColumnName != "ModelRowSpan")
headers.Add(new AntdColumn { ColName = item.ColumnName });
}
}
data.Columns = headers;
data.Datas = dt;
data.TotalData = dt;
res.Data = data;
res.Total = total;
return res;
}
}
///
/// 预测详情
///
///
///
///
///
///
///
public EapResponse GetMacMtbaList(string filter, int pageIndex = 1, int pageSize = 20, string sort = "equipmentmodel", string order = "descend")
{
if (string.IsNullOrEmpty(sort))
{
sort = "equipmentmodel";
}
if (string.IsNullOrEmpty(order))
{
order = "descend";
}
if (order == "descend")
{
order = "desc";
}
else
{
order = "asc";
}
int start, end;
start = (pageIndex - 1) * pageSize + 1;
end = start + pageSize;
string errorinfo = string.Empty;
int total = 0;
var res = new EapResponse() { Code = 1, Msg = string.Empty };
using (IDatabase db = DbFactory.Base("eapslave"))
{
var dal = new ForecastDal(db);
total = dal.GetEmCount(filter);
var en = new EquipmentnumberDal(db);
var Equipmentmodels = en.getEquipmentmodel(start, pageSize, order, sort, filter);//获取机型,园区,楼层
if(Equipmentmodels!=null && Equipmentmodels.Count() > 0)
{
filter += $" and tt.id in ( {string.Join(",", Equipmentmodels.Select(l => l.ID).ToArray())})";
}
var macList = dal.getDetail(filter).ToList();//获取当月预测数据
AntdComplexTableDto data = new AntdComplexTableDto();
DataTable dt = new DataTable();
dt = dal.GetForDetail(macList, Equipmentmodels);
DataTable dtTotal = new DataTable();
var header = new List();
if (dt != null && dt.Columns.Count > 0)
{
foreach (DataColumn item in dt.Columns)
{
if (item.ColumnName != "ParkRowSpan" && item.ColumnName != "ModelRowSpan")
header.Add(new AntdColumn { ColName = item.ColumnName });
}
}
data.Columns = header;
data.Datas = dt;
data.TotalData = dtTotal;
res.Data = data;
res.Total = total;
return res;
}
}
///
/// 获取园区多选
///
///
///
public IEnumerable> GetMultipalMacSelects(string filter)
{
using (IDatabase db = DbFactory.Base("eapslave"))
{
var dal = new ForecastDal(db);
return dal.GetMultipleSelects(filter).OrderBy(c => c.Label);
}
}
///
/// 获取机种下拉框
///
///
///
public IEnumerable> GetMultipalMacTypeSelects(string filter)
{
using (IDatabase db = DbFactory.Base("eapslave"))
{
var dal = new ForecastDal(db);
return dal.GetMultipleMacTypeSelects(filter).OrderBy(c => c.Label);
}
}
///
/// 获取机型多选
///
///
///
public IEnumerable> GetMultipleSelectsFloor(string filter)
{
using (IDatabase db = DbFactory.Base("eapslave"))
{
var dal = new ForecastDal(db);
return dal.GetMultipleSelectsFloor(filter).OrderBy(c => c.Label);
}
}
///
/// 设备需求预测导出
///
///
///
[HttpPost]
public IActionResult Export([FromBody] dynamic queryData)
{
var filter = Convert.ToString(queryData.filter);
string errorinfo = string.Empty;
using (IDatabase db = DbFactory.Base("eapslave"))
{
var dal = new ForecastDal(db);
var data = dal.GetComplexData(filter, 1, 1000000);
if (data == null)
{
return null;
}
var buffer = DataExportHelper.ExportForecastToExcel(data, ref errorinfo);
if (buffer == null)
{
return null;
}
MemoryStream ms = new MemoryStream();
ms.Position = 0;
ms.Write(buffer, 0, buffer.Length);
ms.Dispose();
ms.Close();
return File(buffer, "application/octet-stream");
}
}
///
/// 预测详情导出
///
///
///
[HttpPost]
public IActionResult ExportDetail([FromBody] dynamic queryData)
{
var filter = Convert.ToString(queryData.filter);
string errorinfo = string.Empty;
using (IDatabase db = DbFactory.Base("eapslave"))
{
var dal = new ForecastDal(db);
var data = dal.GetComplexDataDetail(filter, 1, 1000000);
if (data == null)
{
return null;
}
var buffer = DataExportHelper.ExportForecastToExcel(data, ref errorinfo);
if (buffer == null)
{
return null;
}
MemoryStream ms = new MemoryStream();
ms.Position = 0;
ms.Write(buffer, 0, buffer.Length);
ms.Dispose();
ms.Close();
return File(buffer, "application/octet-stream");
}
}
}
}