ReportController.cs 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555
  1. using Microsoft.AspNetCore.Mvc;
  2. using Newtonsoft.Json;
  3. using System.Data;
  4. using System.Web;
  5. using WMS.BZModels.Dto.KLHC.BillInvDtos;
  6. using WMS.BZModels.Dto.KLHC.ReportDtos;
  7. using WMS.BZModels.Dto.KLHC.SysConDtos;
  8. using WMS.BZServices.KLHC;
  9. using WMS.Info;
  10. using WMS.Util;
  11. namespace WMS.BZWeb.Areas.KLHCManager.Controllers
  12. {
  13. [Area("KLHCManager")]
  14. public class ReportController : MvcControllerBase
  15. {
  16. private readonly ReportService _report;
  17. private readonly SysConService _syscon;
  18. public ReportController(ReportService report, SysConService syscon)
  19. {
  20. _report = report;
  21. _syscon = syscon;
  22. }
  23. #region 页面
  24. public IActionResult Index()
  25. {
  26. return View();
  27. }
  28. public IActionResult cellreportIndex()
  29. {
  30. return View();
  31. }
  32. public IActionResult StockKeepReportIndex()
  33. {
  34. return View();
  35. }
  36. public IActionResult MantuoBarCodeRateIndex()
  37. {
  38. return View();
  39. }
  40. public IActionResult MatNameNetWeightReport()
  41. {
  42. return View();
  43. }
  44. #endregion 页面
  45. public ActionResult GetPageList(string pagination, string queryJson)
  46. {
  47. Pagination paginationobj = InitPagination(pagination);
  48. var query = new ReportQueryDto();
  49. if (!string.IsNullOrEmpty(queryJson))
  50. {
  51. query = JsonConvert.DeserializeObject<ReportQueryDto>(queryJson);
  52. }
  53. var lists = _report.GetPageList(paginationobj, query ?? new ReportQueryDto());
  54. var jsonData = new
  55. {
  56. rows = lists.Result,
  57. total = lists.TotalPage,
  58. page = lists.PageIndex,
  59. records = lists.TotalNum
  60. };
  61. return Success(jsonData);
  62. }
  63. public ActionResult GetLocationUsageReportList()
  64. {
  65. var lists = _report.GetLocationUsageReportList();
  66. Pagination paginationobj = InitPagination("");
  67. var tunnellists = _syscon.GetTunnelList(paginationobj, new TunnelQueryDto());
  68. if (tunnellists != null && tunnellists.Result.Any())
  69. {
  70. //更新巷道状态
  71. lists.ForEach(s =>
  72. {
  73. var conf = tunnellists.Result.Where(m => m.Tunnel == s.Tunnel).ToList();
  74. if (conf != null)
  75. {
  76. if (conf.Where(o => o.Name.Contains("入库")).Any())
  77. {
  78. s.InStates = conf.Where(o => o.Name.Contains("入库")).First().StatuName;
  79. }
  80. if (conf.Where(o => o.Name.Contains("出库")).Any())
  81. {
  82. s.OutStates = conf.Where(o => o.Name.Contains("出库")).First().StatuName;
  83. }
  84. }
  85. });
  86. }
  87. //var totallists= new List<dynamic>(){ new { UnitName="总货位",qty= lists.Sum(s=>s.AllLocationTotal)},
  88. // new { UnitName="有效货位",qty= lists.Sum(s=>s.CanUseLocation)},
  89. // new { UnitName="空余货位",qty= lists.Sum(s=>s.SpareLocation)},
  90. // new { UnitName="锁定货位",qty= lists.Sum(s=>s.LockLocation)},
  91. // new { UnitName="停用货位",qty= lists.Sum(s=>s.StopLocation)},
  92. // new { UnitName="有料货位",qty= lists.Sum(s=>s.MaterilLocation)}};
  93. lists.Add(new LocationUsageReportViewDto()
  94. {
  95. Tunnel = "",
  96. WarehouseName = "合计:",
  97. AllLocationTotal = lists.Sum(s => s.AllLocationTotal),
  98. CanUseLocation = lists.Sum(s => s.CanUseLocation),
  99. SpareLocation = lists.Sum(s => s.SpareLocation),
  100. LockLocation = lists.Sum(s => s.LockLocation),
  101. StopLocation = lists.Sum(s => s.StopLocation),
  102. MaterilLocation = lists.Sum(s => s.MaterilLocation),
  103. });
  104. return Success(lists);
  105. }
  106. public IActionResult GetStockKeepReportList(string pagination, string queryJson)
  107. {
  108. Pagination paginationobj = InitPagination(pagination);
  109. var query = new BillInvNowQueryDto();
  110. if (!string.IsNullOrEmpty(queryJson))
  111. {
  112. query = JsonConvert.DeserializeObject<BillInvNowQueryDto>(queryJson);
  113. }
  114. var lists = _report.GetStockKeepReportList(paginationobj, query ?? new BillInvNowQueryDto());
  115. var jsonData = new
  116. {
  117. rows = lists.Result,
  118. total = lists.TotalPage,
  119. page = lists.PageIndex,
  120. records = lists.TotalNum
  121. };
  122. return Success(jsonData);
  123. }
  124. /// <summary>
  125. /// 获取货位使用率
  126. /// </summary>
  127. /// <param name="pagination"></param>
  128. /// <param name="queryJson"></param>
  129. /// <returns></returns>
  130. public ActionResult GetCellList(string pagination, string queryJson)
  131. {
  132. Pagination paginationobj = InitPagination(pagination);
  133. var query = new ReportQueryDto();
  134. if (!string.IsNullOrEmpty(queryJson))
  135. {
  136. query = JsonConvert.DeserializeObject<ReportQueryDto>(queryJson);
  137. }
  138. var lists = _report.GetPageList(paginationobj, query ?? new ReportQueryDto());
  139. var jsonData = new
  140. {
  141. rows = lists.Result,
  142. total = lists.TotalPage,
  143. page = lists.PageIndex,
  144. records = lists.TotalNum
  145. };
  146. return Success(jsonData);
  147. }
  148. public ActionResult GetMantuoBarCodeRate(string pagination, string queryJson)
  149. {
  150. Pagination paginationobj = InitPagination(pagination);
  151. var query = new MantuoBarCodeRateQueryDto();
  152. if (!string.IsNullOrEmpty(queryJson))
  153. {
  154. query = JsonConvert.DeserializeObject<MantuoBarCodeRateQueryDto>(queryJson);
  155. }
  156. var lists = _report.GetMantuoBarCodeRate(paginationobj, query ?? new MantuoBarCodeRateQueryDto());
  157. var jsonData = new
  158. {
  159. rows = lists.Result,
  160. total = lists.TotalPage,
  161. page = lists.PageIndex,
  162. records = lists.TotalNum
  163. };
  164. return Success(jsonData);
  165. }
  166. public ActionResult GetMatNameNetWeightCategory(string pagination, string queryJson)
  167. {
  168. Pagination paginationobj = InitPagination(pagination);
  169. var query = new BillInvNowQueryDto();
  170. if (!string.IsNullOrEmpty(queryJson))
  171. {
  172. query = JsonConvert.DeserializeObject<BillInvNowQueryDto>(queryJson);
  173. }
  174. var lists = _report.GetMatNameNetWeightCategory(paginationobj, query ?? new BillInvNowQueryDto());
  175. var jsonData = new
  176. {
  177. rows = lists.Result,
  178. total = lists.TotalPage,
  179. page = lists.PageIndex,
  180. records = lists.TotalNum
  181. };
  182. return Success(jsonData);
  183. }
  184. [HttpPost]
  185. public IActionResult ExportExcel(string fileName, string queryJson, string exportField)
  186. {
  187. var query = new ReportQueryDto();
  188. try
  189. {
  190. if (!string.IsNullOrEmpty(queryJson))
  191. {
  192. query = JsonConvert.DeserializeObject<ReportQueryDto>(queryJson);
  193. }
  194. }
  195. catch (Exception ex)
  196. {
  197. }
  198. //设置导出格式
  199. ExcelConfig excelconfig = new ExcelConfig();
  200. excelconfig.Title = HttpUtility.UrlDecode(fileName);
  201. excelconfig.TitleFont = "微软雅黑";
  202. excelconfig.TitlePoint = 15;
  203. excelconfig.FileName = HttpUtility.UrlDecode(fileName) + ".xls";
  204. excelconfig.IsAllSizeColumn = true;
  205. excelconfig.ColumnEntity = new List<ColumnModel>();
  206. List<jfGridModel> columnList = exportField.ToList<jfGridModel>();
  207. if (columnList.Count == 0)
  208. {
  209. throw new Exception("未找到表头");
  210. }
  211. //行数据
  212. var lists = _report.GetList(query ?? new ReportQueryDto());
  213. var dataJson = JsonConvert.SerializeObject(lists);
  214. DataTable rowData = dataJson.ToTable();
  215. //写入Excel表头
  216. Dictionary<string, string> exportFieldMap = new Dictionary<string, string>();
  217. if (!string.IsNullOrEmpty(exportField))
  218. {
  219. string[] exportFields = exportField.Split(',');
  220. foreach (var field in exportFields)
  221. {
  222. if (!exportFieldMap.ContainsKey(field))
  223. {
  224. exportFieldMap.Add(field, "1");
  225. }
  226. }
  227. }
  228. foreach (var columnModel in columnList)
  229. {
  230. excelconfig.ColumnEntity.Add(new ColumnModel()
  231. {
  232. // Column =string.IsNullOrEmpty(columnModel.sortname)? columnModel.name: columnModel.sortname,
  233. Column = columnModel.name,
  234. ExcelColumn = columnModel.label,
  235. Alignment = columnModel.align,
  236. Width = columnModel.name.Length
  237. });
  238. }
  239. return File(ExcelHelper.NewExportMemoryStream(rowData, excelconfig), "application/ms-excel", excelconfig.FileName);
  240. }
  241. [HttpPost]
  242. public IActionResult ExportLocationUsageReportExcel(string fileName, string queryJson, string exportField)
  243. {
  244. //设置导出格式
  245. ExcelConfig excelconfig = new ExcelConfig();
  246. excelconfig.Title = HttpUtility.UrlDecode(fileName);
  247. excelconfig.TitleFont = "微软雅黑";
  248. excelconfig.TitlePoint = 15;
  249. excelconfig.FileName = HttpUtility.UrlDecode(fileName) + ".xls";
  250. excelconfig.IsAllSizeColumn = true;
  251. excelconfig.ColumnEntity = new List<ColumnModel>();
  252. List<jfGridModel> columnList = exportField.ToList<jfGridModel>();
  253. if (columnList.Count == 0)
  254. {
  255. throw new Exception("未找到表头");
  256. }
  257. //行数据
  258. var lists = _report.GetLocationUsageReportList();
  259. var dataJson = JsonConvert.SerializeObject(lists);
  260. DataTable rowData = dataJson.ToTable();
  261. //写入Excel表头
  262. Dictionary<string, string> exportFieldMap = new Dictionary<string, string>();
  263. if (!string.IsNullOrEmpty(exportField))
  264. {
  265. string[] exportFields = exportField.Split(',');
  266. foreach (var field in exportFields)
  267. {
  268. if (!exportFieldMap.ContainsKey(field))
  269. {
  270. exportFieldMap.Add(field, "1");
  271. }
  272. }
  273. }
  274. foreach (var columnModel in columnList)
  275. {
  276. excelconfig.ColumnEntity.Add(new ColumnModel()
  277. {
  278. // Column =string.IsNullOrEmpty(columnModel.sortname)? columnModel.name: columnModel.sortname,
  279. Column = columnModel.name,
  280. ExcelColumn = columnModel.label,
  281. Alignment = columnModel.align,
  282. Width = columnModel.name.Length
  283. });
  284. }
  285. return File(ExcelHelper.NewExportMemoryStream(rowData, excelconfig), "application/ms-excel", excelconfig.FileName);
  286. }
  287. [HttpPost]
  288. public IActionResult ExportStockKeepReportExcel(string fileName, string queryJson, string exportField)
  289. {
  290. var query = new BillInvNowQueryDto();
  291. try
  292. {
  293. if (!string.IsNullOrEmpty(queryJson))
  294. {
  295. query = JsonConvert.DeserializeObject<BillInvNowQueryDto>(queryJson);
  296. }
  297. }
  298. catch (Exception ex)
  299. {
  300. }
  301. //设置导出格式
  302. ExcelConfig excelconfig = new ExcelConfig();
  303. excelconfig.Title = HttpUtility.UrlDecode(fileName);
  304. excelconfig.TitleFont = "微软雅黑";
  305. excelconfig.TitlePoint = 15;
  306. excelconfig.FileName = HttpUtility.UrlDecode(fileName) + ".xls";
  307. excelconfig.IsAllSizeColumn = true;
  308. excelconfig.ColumnEntity = new List<ColumnModel>();
  309. List<jfGridModel> columnList = exportField.ToList<jfGridModel>();
  310. if (columnList.Count == 0)
  311. {
  312. throw new Exception("未找到表头");
  313. }
  314. //行数据
  315. var lists = _report.GetStockKeepReports(query ?? new BillInvNowQueryDto());
  316. var dataJson = JsonConvert.SerializeObject(lists);
  317. DataTable rowData = dataJson.ToTable();
  318. //写入Excel表头
  319. Dictionary<string, string> exportFieldMap = new Dictionary<string, string>();
  320. if (!string.IsNullOrEmpty(exportField))
  321. {
  322. string[] exportFields = exportField.Split(',');
  323. foreach (var field in exportFields)
  324. {
  325. if (!exportFieldMap.ContainsKey(field))
  326. {
  327. exportFieldMap.Add(field, "1");
  328. }
  329. }
  330. }
  331. foreach (var columnModel in columnList)
  332. {
  333. excelconfig.ColumnEntity.Add(new ColumnModel()
  334. {
  335. // Column =string.IsNullOrEmpty(columnModel.sortname)? columnModel.name: columnModel.sortname,
  336. Column = columnModel.name,
  337. ExcelColumn = columnModel.label,
  338. Alignment = columnModel.align,
  339. Width = columnModel.name.Length
  340. });
  341. }
  342. return File(ExcelHelper.NewExportMemoryStream(rowData, excelconfig), "application/ms-excel", excelconfig.FileName);
  343. }
  344. [HttpPost]
  345. public IActionResult ExportCellListReportExcel(string fileName, string queryJson, string exportField)
  346. {
  347. var query = new ReportQueryDto();
  348. try
  349. {
  350. if (!string.IsNullOrEmpty(queryJson))
  351. {
  352. query = JsonConvert.DeserializeObject<ReportQueryDto>(queryJson);
  353. }
  354. }
  355. catch (Exception ex)
  356. {
  357. }
  358. //设置导出格式
  359. ExcelConfig excelconfig = new ExcelConfig();
  360. excelconfig.Title = HttpUtility.UrlDecode(fileName);
  361. excelconfig.TitleFont = "微软雅黑";
  362. excelconfig.TitlePoint = 15;
  363. excelconfig.FileName = HttpUtility.UrlDecode(fileName) + ".xls";
  364. excelconfig.IsAllSizeColumn = true;
  365. excelconfig.ColumnEntity = new List<ColumnModel>();
  366. List<jfGridModel> columnList = exportField.ToList<jfGridModel>();
  367. if (columnList.Count == 0)
  368. {
  369. throw new Exception("未找到表头");
  370. }
  371. //行数据
  372. var lists = _report.GetList(query ?? new ReportQueryDto());
  373. var dataJson = JsonConvert.SerializeObject(lists);
  374. DataTable rowData = dataJson.ToTable();
  375. //写入Excel表头
  376. Dictionary<string, string> exportFieldMap = new Dictionary<string, string>();
  377. if (!string.IsNullOrEmpty(exportField))
  378. {
  379. string[] exportFields = exportField.Split(',');
  380. foreach (var field in exportFields)
  381. {
  382. if (!exportFieldMap.ContainsKey(field))
  383. {
  384. exportFieldMap.Add(field, "1");
  385. }
  386. }
  387. }
  388. foreach (var columnModel in columnList)
  389. {
  390. excelconfig.ColumnEntity.Add(new ColumnModel()
  391. {
  392. // Column =string.IsNullOrEmpty(columnModel.sortname)? columnModel.name: columnModel.sortname,
  393. Column = columnModel.name,
  394. ExcelColumn = columnModel.label,
  395. Alignment = columnModel.align,
  396. Width = columnModel.name.Length
  397. });
  398. }
  399. return File(ExcelHelper.NewExportMemoryStream(rowData, excelconfig), "application/ms-excel", excelconfig.FileName);
  400. }
  401. [HttpPost]
  402. public IActionResult ExportMatNameNetWeightCategoryExcel(string fileName, string queryJson, string exportField)
  403. {
  404. var query = new BillInvNowQueryDto();
  405. try
  406. {
  407. if (!string.IsNullOrEmpty(queryJson))
  408. {
  409. query = JsonConvert.DeserializeObject<BillInvNowQueryDto>(queryJson);
  410. }
  411. }
  412. catch (Exception ex)
  413. {
  414. }
  415. //设置导出格式
  416. ExcelConfig excelconfig = new ExcelConfig();
  417. excelconfig.Title = HttpUtility.UrlDecode(fileName);
  418. excelconfig.TitleFont = "微软雅黑";
  419. excelconfig.TitlePoint = 15;
  420. excelconfig.FileName = HttpUtility.UrlDecode(fileName) + ".xls";
  421. excelconfig.IsAllSizeColumn = true;
  422. excelconfig.ColumnEntity = new List<ColumnModel>();
  423. List<jfGridModel> columnList = exportField.ToList<jfGridModel>();
  424. if (columnList.Count == 0)
  425. {
  426. throw new Exception("未找到表头");
  427. }
  428. //行数据
  429. var lists = _report.GetMatNameNetWeightCategorys(query ?? new BillInvNowQueryDto());
  430. var dataJson = JsonConvert.SerializeObject(lists);
  431. DataTable rowData = dataJson.ToTable();
  432. //写入Excel表头
  433. Dictionary<string, string> exportFieldMap = new Dictionary<string, string>();
  434. if (!string.IsNullOrEmpty(exportField))
  435. {
  436. string[] exportFields = exportField.Split(',');
  437. foreach (var field in exportFields)
  438. {
  439. if (!exportFieldMap.ContainsKey(field))
  440. {
  441. exportFieldMap.Add(field, "1");
  442. }
  443. }
  444. }
  445. foreach (var columnModel in columnList)
  446. {
  447. excelconfig.ColumnEntity.Add(new ColumnModel()
  448. {
  449. // Column =string.IsNullOrEmpty(columnModel.sortname)? columnModel.name: columnModel.sortname,
  450. Column = columnModel.name,
  451. ExcelColumn = columnModel.label,
  452. Alignment = columnModel.align,
  453. Width = columnModel.name.Length
  454. });
  455. }
  456. return File(ExcelHelper.NewExportMemoryStream(rowData, excelconfig), "application/ms-excel", excelconfig.FileName);
  457. }
  458. [HttpPost]
  459. public IActionResult ExportMantuoBarCodeRateExcel(string fileName, string queryJson, string exportField)
  460. {
  461. var query = new MantuoBarCodeRateQueryDto();
  462. try
  463. {
  464. if (!string.IsNullOrEmpty(queryJson))
  465. {
  466. query = JsonConvert.DeserializeObject<MantuoBarCodeRateQueryDto>(queryJson);
  467. }
  468. }
  469. catch (Exception ex)
  470. {
  471. }
  472. //设置导出格式
  473. ExcelConfig excelconfig = new ExcelConfig();
  474. excelconfig.Title = HttpUtility.UrlDecode(fileName);
  475. excelconfig.TitleFont = "微软雅黑";
  476. excelconfig.TitlePoint = 15;
  477. excelconfig.FileName = HttpUtility.UrlDecode(fileName) + ".xls";
  478. excelconfig.IsAllSizeColumn = true;
  479. excelconfig.ColumnEntity = new List<ColumnModel>();
  480. List<jfGridModel> columnList = exportField.ToList<jfGridModel>();
  481. if (columnList.Count == 0)
  482. {
  483. throw new Exception("未找到表头");
  484. }
  485. //行数据
  486. var lists = _report.GetMantuoBarCodeRates(query ?? new MantuoBarCodeRateQueryDto());
  487. var dataJson = JsonConvert.SerializeObject(lists);
  488. DataTable rowData = dataJson.ToTable();
  489. //写入Excel表头
  490. Dictionary<string, string> exportFieldMap = new Dictionary<string, string>();
  491. if (!string.IsNullOrEmpty(exportField))
  492. {
  493. string[] exportFields = exportField.Split(',');
  494. foreach (var field in exportFields)
  495. {
  496. if (!exportFieldMap.ContainsKey(field))
  497. {
  498. exportFieldMap.Add(field, "1");
  499. }
  500. }
  501. }
  502. foreach (var columnModel in columnList)
  503. {
  504. excelconfig.ColumnEntity.Add(new ColumnModel()
  505. {
  506. // Column =string.IsNullOrEmpty(columnModel.sortname)? columnModel.name: columnModel.sortname,
  507. Column = columnModel.name,
  508. ExcelColumn = columnModel.label,
  509. Alignment = columnModel.align,
  510. Width = columnModel.name.Length
  511. });
  512. }
  513. return File(ExcelHelper.NewExportMemoryStream(rowData, excelconfig), "application/ms-excel", excelconfig.FileName);
  514. }
  515. }
  516. }