StatisticsreportController.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. using Microsoft.AspNetCore.Mvc;
  2. using Newtonsoft.Json;
  3. using System.Data;
  4. using System.Web;
  5. using WMS.BZModels.Dto.PT.ReportDtos;
  6. using WMS.BZServices.PT;
  7. using WMS.Info;
  8. using WMS.Util;
  9. namespace WMS.BZWeb.Areas.PTManager.Controllers
  10. {
  11. /// <summary>
  12. /// 统计报表
  13. /// </summary>
  14. [Area("PTManager")]
  15. public class StatisticsreportController : MvcControllerBase
  16. {
  17. private readonly StatisticsreportService _statistics;
  18. public StatisticsreportController(StatisticsreportService statistics)
  19. {
  20. _statistics = statistics;
  21. }
  22. public IActionResult Index()
  23. {
  24. return View();
  25. }
  26. public IActionResult HourTaskIndex()
  27. {
  28. return View();
  29. }
  30. public IActionResult InOutReport()
  31. {
  32. ViewBag.beginhour = DateTime.Now.Date.ToString("yyyy-MM-dd") + " 00:00:00";
  33. ViewBag.endhour = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  34. ViewBag.beginday = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd") + " 00:00:00";
  35. ViewBag.endday = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  36. return View();
  37. }
  38. public ActionResult GetPageList(string pagination, string queryJson)
  39. {
  40. Pagination paginationobj = InitPagination(pagination);
  41. var query = new StatisticsQueryDto();
  42. if (!string.IsNullOrEmpty(queryJson))
  43. {
  44. query = JsonConvert.DeserializeObject<StatisticsQueryDto>(queryJson);
  45. }
  46. var lists = _statistics.GetPageList(paginationobj, query ?? new StatisticsQueryDto());
  47. var jsonData = new
  48. {
  49. rows = lists.Result,
  50. total = lists.TotalPage,
  51. page = lists.PageIndex,
  52. records = lists.TotalNum
  53. };
  54. return Success(jsonData);
  55. }
  56. [HttpPost]
  57. public IActionResult ExportExcel(string fileName, string queryJson, string exportField)
  58. {
  59. var query = new StatisticsQueryDto();
  60. try
  61. {
  62. if (!string.IsNullOrEmpty(queryJson))
  63. {
  64. query = JsonConvert.DeserializeObject<StatisticsQueryDto>(queryJson);
  65. }
  66. }
  67. catch (Exception ex)
  68. {
  69. }
  70. //设置导出格式
  71. ExcelConfig excelconfig = new ExcelConfig();
  72. excelconfig.Title = HttpUtility.UrlDecode(fileName);
  73. excelconfig.TitleFont = "微软雅黑";
  74. excelconfig.TitlePoint = 15;
  75. excelconfig.FileName = HttpUtility.UrlDecode(fileName) + ".xls";
  76. excelconfig.IsAllSizeColumn = true;
  77. excelconfig.ColumnEntity = new List<ColumnModel>();
  78. List<jfGridModel> columnList = exportField.ToList<jfGridModel>();
  79. if (columnList.Count == 0)
  80. {
  81. throw new Exception("未找到表头");
  82. }
  83. //行数据
  84. var lists = _statistics.GetList(query ?? new StatisticsQueryDto());
  85. var dataJson = JsonConvert.SerializeObject(lists);
  86. DataTable rowData = dataJson.ToTable();
  87. //写入Excel表头
  88. Dictionary<string, string> exportFieldMap = new Dictionary<string, string>();
  89. if (!string.IsNullOrEmpty(exportField))
  90. {
  91. string[] exportFields = exportField.Split(',');
  92. foreach (var field in exportFields)
  93. {
  94. if (!exportFieldMap.ContainsKey(field))
  95. {
  96. exportFieldMap.Add(field, "1");
  97. }
  98. }
  99. }
  100. foreach (var columnModel in columnList)
  101. {
  102. excelconfig.ColumnEntity.Add(new ColumnModel()
  103. {
  104. // Column =string.IsNullOrEmpty(columnModel.sortname)? columnModel.name: columnModel.sortname,
  105. Column = columnModel.name,
  106. ExcelColumn = columnModel.label,
  107. Alignment = columnModel.align,
  108. Width = columnModel.name.Length
  109. });
  110. }
  111. return File(ExcelHelper.NewExportMemoryStream(rowData, excelconfig), "application/ms-excel", excelconfig.FileName);
  112. }
  113. public ActionResult GetHourTaskPageList(string pagination, string queryJson)
  114. {
  115. Pagination paginationobj = InitPagination(pagination);
  116. var query = new HourTaskQueryDto();
  117. if (!string.IsNullOrEmpty(queryJson))
  118. {
  119. query = JsonConvert.DeserializeObject<HourTaskQueryDto>(queryJson);
  120. }
  121. var lists = _statistics.GetHourTask(paginationobj, query ?? new HourTaskQueryDto());
  122. var jsonData = new
  123. {
  124. rows = lists.Result,
  125. total = lists.TotalPage,
  126. page = lists.PageIndex,
  127. records = lists.TotalNum
  128. };
  129. return Success(jsonData);
  130. }
  131. [HttpPost]
  132. public IActionResult ExportHourTaskExcel(string fileName, string queryJson, string exportField)
  133. {
  134. var query = new HourTaskQueryDto();
  135. try
  136. {
  137. if (!string.IsNullOrEmpty(queryJson))
  138. {
  139. query = JsonConvert.DeserializeObject<HourTaskQueryDto>(queryJson);
  140. }
  141. }
  142. catch (Exception ex)
  143. {
  144. }
  145. //设置导出格式
  146. ExcelConfig excelconfig = new ExcelConfig();
  147. excelconfig.Title = HttpUtility.UrlDecode(fileName);
  148. excelconfig.TitleFont = "微软雅黑";
  149. excelconfig.TitlePoint = 15;
  150. excelconfig.FileName = HttpUtility.UrlDecode(fileName) + ".xls";
  151. excelconfig.IsAllSizeColumn = true;
  152. excelconfig.ColumnEntity = new List<ColumnModel>();
  153. List<jfGridModel> columnList = exportField.ToList<jfGridModel>();
  154. if (columnList.Count == 0)
  155. {
  156. throw new Exception("未找到表头");
  157. }
  158. //行数据
  159. Pagination paginationobj = InitPagination("");
  160. paginationobj.rows = 1000000;
  161. var lists = _statistics.GetHourTask(paginationobj, query ?? new HourTaskQueryDto());
  162. var dataJson = JsonConvert.SerializeObject(lists);
  163. DataTable rowData = dataJson.ToTable();
  164. //写入Excel表头
  165. Dictionary<string, string> exportFieldMap = new Dictionary<string, string>();
  166. if (!string.IsNullOrEmpty(exportField))
  167. {
  168. string[] exportFields = exportField.Split(',');
  169. foreach (var field in exportFields)
  170. {
  171. if (!exportFieldMap.ContainsKey(field))
  172. {
  173. exportFieldMap.Add(field, "1");
  174. }
  175. }
  176. }
  177. foreach (var columnModel in columnList)
  178. {
  179. excelconfig.ColumnEntity.Add(new ColumnModel()
  180. {
  181. // Column =string.IsNullOrEmpty(columnModel.sortname)? columnModel.name: columnModel.sortname,
  182. Column = columnModel.name,
  183. ExcelColumn = columnModel.label,
  184. Alignment = columnModel.align,
  185. Width = columnModel.name.Length
  186. });
  187. }
  188. return File(ExcelHelper.NewExportMemoryStream(rowData, excelconfig), "application/ms-excel", excelconfig.FileName);
  189. }
  190. public ActionResult GetInOutReportList(string pagination, string queryJson)
  191. {
  192. Pagination paginationobj = InitPagination(pagination);
  193. var query = new InOutReportQueryDto();
  194. if (!string.IsNullOrEmpty(queryJson))
  195. {
  196. query = JsonConvert.DeserializeObject<InOutReportQueryDto>(queryJson);
  197. }
  198. var lists = _statistics.GetInOutReport(paginationobj, query ?? new InOutReportQueryDto());
  199. var jsonData = new
  200. {
  201. rows = lists.Result,
  202. total = lists.TotalPage,
  203. page = lists.PageIndex,
  204. records = lists.TotalNum
  205. };
  206. return Success(jsonData);
  207. }
  208. [HttpPost]
  209. public IActionResult ExportInOutReportExcel(string fileName, string queryJson, string exportField)
  210. {
  211. var query = new InOutReportQueryDto();
  212. try
  213. {
  214. if (!string.IsNullOrEmpty(queryJson))
  215. {
  216. query = JsonConvert.DeserializeObject<InOutReportQueryDto>(queryJson);
  217. }
  218. }
  219. catch (Exception ex)
  220. {
  221. }
  222. //设置导出格式
  223. ExcelConfig excelconfig = new ExcelConfig();
  224. excelconfig.Title = HttpUtility.UrlDecode(fileName);
  225. excelconfig.TitleFont = "微软雅黑";
  226. excelconfig.TitlePoint = 15;
  227. excelconfig.FileName = HttpUtility.UrlDecode(fileName) + ".xls";
  228. excelconfig.IsAllSizeColumn = true;
  229. excelconfig.ColumnEntity = new List<ColumnModel>();
  230. List<jfGridModel> columnList = exportField.ToList<jfGridModel>();
  231. if (columnList.Count == 0)
  232. {
  233. throw new Exception("未找到表头");
  234. }
  235. //行数据
  236. Pagination paginationobj = InitPagination("");
  237. paginationobj.rows = 1000000;
  238. var lists = _statistics.GetInOutReport(paginationobj, query ?? new InOutReportQueryDto());
  239. var dataJson = JsonConvert.SerializeObject(lists.Result);
  240. DataTable rowData = dataJson.ToTable();
  241. //写入Excel表头
  242. Dictionary<string, string> exportFieldMap = new Dictionary<string, string>();
  243. if (!string.IsNullOrEmpty(exportField))
  244. {
  245. string[] exportFields = exportField.Split(',');
  246. foreach (var field in exportFields)
  247. {
  248. if (!exportFieldMap.ContainsKey(field))
  249. {
  250. exportFieldMap.Add(field, "1");
  251. }
  252. }
  253. }
  254. foreach (var columnModel in columnList)
  255. {
  256. excelconfig.ColumnEntity.Add(new ColumnModel()
  257. {
  258. // Column =string.IsNullOrEmpty(columnModel.sortname)? columnModel.name: columnModel.sortname,
  259. Column = columnModel.name,
  260. ExcelColumn = columnModel.label,
  261. Alignment = columnModel.align,
  262. Width = columnModel.name.Length
  263. });
  264. }
  265. return File(ExcelHelper.NewExportMemoryStream(rowData, excelconfig), "application/ms-excel", excelconfig.FileName);
  266. }
  267. }
  268. }