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"); } } } }