ForecastController.cs 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. using Cksoft.Data;
  2. using Cksoft.Data.Repository;
  3. using DllEapDal.OFILM;
  4. using DllEapEntity.Dtos;
  5. using DllEapEntity.OFILM;
  6. using Microsoft.AspNetCore.Mvc;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Data;
  10. using System.Text;
  11. using System.Linq;
  12. using Cksoft.Unity;
  13. using DllEapDal;
  14. using DllEapCommon.NPOI;
  15. using System.IO;
  16. using Microsoft.AspNetCore.Authorization;
  17. namespace DllEapBll.OFILM
  18. {
  19. [Route("eap/api/[controller]/[action]")]
  20. [Authorize]
  21. public class ForecastController : ControllerBase
  22. {
  23. /// <summary>
  24. /// 设备需求预测
  25. /// </summary>
  26. /// <param name="filter"></param>
  27. /// <param name="pageIndex"></param>
  28. /// <param name="pageSize"></param>
  29. /// <param name="sortField"></param>
  30. /// <param name="sortOrder"></param>
  31. /// <returns></returns>
  32. [HttpGet]
  33. public EapResponse Get(string filter, int pageIndex = 1, int pageSize = 10, string sortField = "equipmentmodel", string sortOrder = "ascend")
  34. {
  35. if (sortOrder == "descend")
  36. {
  37. sortOrder = "desc";
  38. }
  39. else
  40. {
  41. sortOrder = "asc";
  42. }
  43. int start, end;
  44. start = (pageIndex - 1) * pageSize + 1;
  45. end = start + pageSize;
  46. var res = new EapResponse() { Code = 1, Msg = string.Empty };
  47. using (IDatabase db = DbFactory.Base("eapslave"))
  48. {
  49. db.BeginTrans();
  50. var dal = new ForecastDal(db);
  51. string errorinfo = string.Empty;
  52. var roles = dal.Get(start, pageSize, sortOrder, sortField, filter, errorinfo);
  53. var total = dal.GetCount(filter);
  54. AntdComplexTableDto data = new AntdComplexTableDto();
  55. var headers = new List<AntdColumn>();
  56. DataTable dt = new DataTable();
  57. dt = dal.Getfor(roles);
  58. if (dt != null && dt.Columns.Count > 0)
  59. {
  60. foreach (DataColumn item in dt.Columns)
  61. {
  62. if (item.ColumnName != "ParkRowSpan" && item.ColumnName != "ModelRowSpan")
  63. headers.Add(new AntdColumn { ColName = item.ColumnName });
  64. }
  65. }
  66. data.Columns = headers;
  67. data.Datas = dt;
  68. data.TotalData = dt;
  69. res.Data = data;
  70. res.Total = total;
  71. return res;
  72. }
  73. }
  74. /// <summary>
  75. /// 预测详情
  76. /// </summary>
  77. /// <param name="filter"></param>
  78. /// <param name="pageIndex"></param>
  79. /// <param name="pageSize"></param>
  80. /// <param name="sort"></param>
  81. /// <param name="order"></param>
  82. /// <returns></returns>
  83. public EapResponse GetMacMtbaList(string filter, int pageIndex = 1, int pageSize = 20, string sort = "equipmentmodel", string order = "descend")
  84. {
  85. if (string.IsNullOrEmpty(sort))
  86. {
  87. sort = "equipmentmodel";
  88. }
  89. if (string.IsNullOrEmpty(order))
  90. {
  91. order = "descend";
  92. }
  93. if (order == "descend")
  94. {
  95. order = "desc";
  96. }
  97. else
  98. {
  99. order = "asc";
  100. }
  101. int start, end;
  102. start = (pageIndex - 1) * pageSize + 1;
  103. end = start + pageSize;
  104. string errorinfo = string.Empty;
  105. int total = 0;
  106. var res = new EapResponse() { Code = 1, Msg = string.Empty };
  107. using (IDatabase db = DbFactory.Base("eapslave"))
  108. {
  109. var dal = new ForecastDal(db);
  110. total = dal.GetEmCount(filter);
  111. var en = new EquipmentnumberDal(db);
  112. var Equipmentmodels = en.getEquipmentmodel(start, pageSize, order, sort, filter);//获取机型,园区,楼层
  113. if(Equipmentmodels!=null && Equipmentmodels.Count() > 0)
  114. {
  115. filter += $" and tt.id in ( {string.Join(",", Equipmentmodels.Select(l => l.ID).ToArray())})";
  116. }
  117. var macList = dal.getDetail(filter).ToList();//获取当月预测数据
  118. AntdComplexTableDto data = new AntdComplexTableDto();
  119. DataTable dt = new DataTable();
  120. dt = dal.GetForDetail(macList, Equipmentmodels);
  121. DataTable dtTotal = new DataTable();
  122. var header = new List<AntdColumn>();
  123. if (dt != null && dt.Columns.Count > 0)
  124. {
  125. foreach (DataColumn item in dt.Columns)
  126. {
  127. if (item.ColumnName != "ParkRowSpan" && item.ColumnName != "ModelRowSpan")
  128. header.Add(new AntdColumn { ColName = item.ColumnName });
  129. }
  130. }
  131. data.Columns = header;
  132. data.Datas = dt;
  133. data.TotalData = dtTotal;
  134. res.Data = data;
  135. res.Total = total;
  136. return res;
  137. }
  138. }
  139. /// <summary>
  140. /// 获取园区多选
  141. /// </summary>
  142. /// <param name="filter"></param>
  143. /// <returns></returns>
  144. public IEnumerable<SelectDto<string>> GetMultipalMacSelects(string filter)
  145. {
  146. using (IDatabase db = DbFactory.Base("eapslave"))
  147. {
  148. var dal = new ForecastDal(db);
  149. return dal.GetMultipleSelects(filter).OrderBy(c => c.Label);
  150. }
  151. }
  152. /// <summary>
  153. /// 获取机种下拉框
  154. /// </summary>
  155. /// <param name="filter"></param>
  156. /// <returns></returns>
  157. public IEnumerable<SelectDto<string>> GetMultipalMacTypeSelects(string filter)
  158. {
  159. using (IDatabase db = DbFactory.Base("eapslave"))
  160. {
  161. var dal = new ForecastDal(db);
  162. return dal.GetMultipleMacTypeSelects(filter).OrderBy(c => c.Label);
  163. }
  164. }
  165. /// <summary>
  166. /// 获取机型多选
  167. /// </summary>
  168. /// <param name="filter"></param>
  169. /// <returns></returns>
  170. public IEnumerable<SelectDto<string>> GetMultipleSelectsFloor(string filter)
  171. {
  172. using (IDatabase db = DbFactory.Base("eapslave"))
  173. {
  174. var dal = new ForecastDal(db);
  175. return dal.GetMultipleSelectsFloor(filter).OrderBy(c => c.Label);
  176. }
  177. }
  178. /// <summary>
  179. /// 设备需求预测导出
  180. /// </summary>
  181. /// <param name="queryData"></param>
  182. /// <returns></returns>
  183. [HttpPost]
  184. public IActionResult Export([FromBody] dynamic queryData)
  185. {
  186. var filter = Convert.ToString(queryData.filter);
  187. string errorinfo = string.Empty;
  188. using (IDatabase db = DbFactory.Base("eapslave"))
  189. {
  190. var dal = new ForecastDal(db);
  191. var data = dal.GetComplexData(filter, 1, 1000000);
  192. if (data == null)
  193. {
  194. return null;
  195. }
  196. var buffer = DataExportHelper.ExportForecastToExcel(data, ref errorinfo);
  197. if (buffer == null)
  198. {
  199. return null;
  200. }
  201. MemoryStream ms = new MemoryStream();
  202. ms.Position = 0;
  203. ms.Write(buffer, 0, buffer.Length);
  204. ms.Dispose();
  205. ms.Close();
  206. return File(buffer, "application/octet-stream");
  207. }
  208. }
  209. /// <summary>
  210. /// 预测详情导出
  211. /// </summary>
  212. /// <param name="queryData"></param>
  213. /// <returns></returns>
  214. [HttpPost]
  215. public IActionResult ExportDetail([FromBody] dynamic queryData)
  216. {
  217. var filter = Convert.ToString(queryData.filter);
  218. string errorinfo = string.Empty;
  219. using (IDatabase db = DbFactory.Base("eapslave"))
  220. {
  221. var dal = new ForecastDal(db);
  222. var data = dal.GetComplexDataDetail(filter, 1, 1000000);
  223. if (data == null)
  224. {
  225. return null;
  226. }
  227. var buffer = DataExportHelper.ExportForecastToExcel(data, ref errorinfo);
  228. if (buffer == null)
  229. {
  230. return null;
  231. }
  232. MemoryStream ms = new MemoryStream();
  233. ms.Position = 0;
  234. ms.Write(buffer, 0, buffer.Length);
  235. ms.Dispose();
  236. ms.Close();
  237. return File(buffer, "application/octet-stream");
  238. }
  239. }
  240. }
  241. }