MaterialRejectController.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361
  1. using AutoMapper;
  2. using Cksoft.Data;
  3. using Cksoft.Data.Repository;
  4. using DllEapCommon.NPOI;
  5. using DllEapDal.OFILM;
  6. using DllEapEntity.Dtos;
  7. using DllEapEntity.OFILM;
  8. using Microsoft.AspNetCore.Authorization;
  9. using Microsoft.AspNetCore.Mvc;
  10. using System;
  11. using System.Collections.Generic;
  12. using System.IO;
  13. using System.Linq;
  14. using System.Text;
  15. using System.Threading.Tasks;
  16. namespace DllEapBll.OFILM
  17. {
  18. [Route("eap/api/[controller]/[action]")]
  19. [ApiController]
  20. public class MaterialRejectController : ControllerBase
  21. {
  22. private IMapper _mapper;
  23. public MaterialRejectController(IMapper mapper)
  24. {
  25. _mapper = mapper;
  26. }
  27. [HttpGet]
  28. public LayuiModel<MaterialRejectDto> Get(string filter, string subFilter, int pageIndex = 1, int pageSize = 10, string sortField = "fkey", string sortOrder = "ascend")
  29. {
  30. string userCode = Request.Headers["usercode"];
  31. if (sortOrder == "descend")
  32. {
  33. sortOrder = "desc";
  34. }
  35. else
  36. {
  37. sortOrder = "asc";
  38. }
  39. if (sortField == "null")
  40. {
  41. sortField = "fkey";
  42. }
  43. int start, end;
  44. start = (pageIndex - 1) * pageSize + 1;
  45. end = start + pageSize;
  46. using (IDatabase db = DbFactory.Base("eapslave"))
  47. {
  48. db.BeginTrans();
  49. var dal = new MachineMaterialDetailDal(db);
  50. var total = 0;
  51. string errorinfo = string.Empty;
  52. var roles = dal.Get(filter, subFilter, start, pageSize, sortField, sortOrder, out total);
  53. var extra = dal.GetTotalInfo(filter, subFilter);
  54. return new LayuiModel<MaterialRejectDto>
  55. {
  56. code = 1,
  57. count = total,
  58. data = roles,
  59. msg = "",
  60. extraObject = extra
  61. };
  62. }
  63. }
  64. /// <summary>
  65. /// AA抛料率分析报表查询
  66. /// </summary>
  67. /// <param name="filter"></param>
  68. /// <param name="subFilter"></param>
  69. /// <param name="pageIndex"></param>
  70. /// <param name="pageSize"></param>
  71. /// <param name="sortField"></param>
  72. /// <param name="sortOrder"></param>
  73. /// <returns></returns>
  74. [HttpGet]
  75. public LayuiModel<MaterialRejectDto> GetByRecipe(string filter, string subFilter, int pageIndex = 1, int pageSize = 10, string sortField = "fkey", string sortOrder = "ascend")
  76. {
  77. string userCode = Request.Headers["usercode"];
  78. if (sortOrder == "descend")
  79. {
  80. sortOrder = "desc";
  81. }
  82. else
  83. {
  84. sortOrder = "asc";
  85. }
  86. if (sortField == "null")
  87. {
  88. sortField = "fkey";
  89. }
  90. int start, end;
  91. start = (pageIndex - 1) * pageSize + 1;
  92. end = start + pageSize;
  93. using (IDatabase db = DbFactory.Base("eapslave"))
  94. {
  95. db.BeginTrans();
  96. var dal = new MachineMaterialDetailDal(db);
  97. var total = 0;
  98. string errorinfo = string.Empty;
  99. var roles = dal.GetByRecipe(filter, subFilter, start, pageSize, sortField, sortOrder, out total);
  100. var extra = dal.GetTotalInfo(filter, subFilter);
  101. return new LayuiModel<MaterialRejectDto>
  102. {
  103. code = 1,
  104. count = total,
  105. data = roles,
  106. msg = "",
  107. extraObject = extra
  108. };
  109. }
  110. }
  111. /// <summary>
  112. /// AA抛料率分析导出
  113. /// </summary>
  114. /// <param name="filterInfo"></param>
  115. /// <returns></returns>
  116. [HttpPost]
  117. public async Task<IActionResult> ExportByRecipe(IDictionary<string, string> filterInfo)
  118. {
  119. string filter=string.Empty, subFilter=string.Empty,sortField = "fkey",sortOrder = "ascend";
  120. int pageIndex = 1, pageSize = 100000;
  121. if (filterInfo.ContainsKey("filter"))
  122. {
  123. filter = filterInfo["filter"];
  124. }
  125. if (filterInfo.ContainsKey("subFilter"))
  126. {
  127. subFilter = filterInfo["subFilter"];
  128. }
  129. if (filterInfo.ContainsKey("sortField"))
  130. {
  131. sortField = filterInfo["sortField"];
  132. }
  133. if (filterInfo.ContainsKey("sortOrder"))
  134. {
  135. sortOrder = filterInfo["sortOrder"];
  136. }
  137. if (filterInfo.ContainsKey("pageIndex"))
  138. {
  139. pageIndex = Convert.ToInt32(filterInfo["pageIndex"]);
  140. }
  141. if (filterInfo.ContainsKey("pageSize"))
  142. {
  143. pageSize = Convert.ToInt32(filterInfo["pageSize"]);
  144. }
  145. using (IDatabase db = DbFactory.Base("eapslave"))
  146. {
  147. var roles = GetByRecipe(filter, subFilter, pageIndex, pageSize, sortField, sortOrder).data;
  148. var dal = new MachineMaterialDetailDal(db);
  149. var dao = dal.GetTotalInfo(filter, subFilter);
  150. roles.ToList().Add(dao);
  151. List<string> str = new List<string>() { "机种", "OutPut", "Lens", "", "", "Sensor", "", "", };
  152. List<int> index = new List<int>() { 2, 4, 5, 7 };
  153. foreach (var item in roles)
  154. {
  155. item.LenRejectPercent = (Convert.ToDouble(item.LenRejectPercent) * 100).ToString()+"%";
  156. item.SensorRejectPercent = (Convert.ToDouble(item.SensorRejectPercent) * 100).ToString()+"%";
  157. }
  158. var list = _mapper.Map<IEnumerable<ExportMaterialRejectDto>>(roles).ToList();
  159. var book = DataExportHelper.EntityToExcel(list, str, index);
  160. MemoryStream ms = new MemoryStream();
  161. ms.Position = 0;
  162. book.Write(ms);
  163. ms.Dispose();
  164. ms.Close();
  165. await Task.CompletedTask;
  166. return File(ms.ToArray(), "application/octet-stream");
  167. }
  168. }
  169. [HttpGet]
  170. public LayuiModel<MachineMaterialDetail> GetMaterialDetails(string filter, string subFilter)
  171. {
  172. using (IDatabase db = DbFactory.Base("eapslave"))
  173. {
  174. var dal = new MachineMaterialDetailDal(db);
  175. var details = dal.GetMaterialDetails(filter, subFilter);
  176. return new LayuiModel<MachineMaterialDetail>
  177. {
  178. code = 1,
  179. count = details.Count(),
  180. data = details,
  181. msg = "",
  182. };
  183. }
  184. }
  185. [HttpGet]
  186. public LayuiModel<MaterialErrorMessage> GetMaterialErrorMessages(string filter, string subFilter)
  187. {
  188. using (IDatabase db = DbFactory.Base("eapslave"))
  189. {
  190. var dal = new MaterialErrorMessageDal(db);
  191. var details = dal.GetMaterialErrorMessages(filter, subFilter);
  192. return new LayuiModel<MaterialErrorMessage>
  193. {
  194. code = 1,
  195. count = details.Count(),
  196. data = details,
  197. msg = "",
  198. };
  199. }
  200. }
  201. /// <summary>
  202. /// AA报警分析报表查询
  203. /// </summary>
  204. /// <param name="filter"></param>
  205. /// <param name="subFilter"></param>
  206. /// <param name="pageIndex"></param>
  207. /// <param name="pageSize"></param>
  208. /// <param name="sortField"></param>
  209. /// <param name="sortOrder"></param>
  210. /// <returns></returns>
  211. [HttpGet]
  212. public LayuiModel<ErrorMessageDto> GetErrorMessagesByRecipe(string filter, string subFilter, int pageIndex = 1, int pageSize = 10, string sortField = "fkey", string sortOrder = "ascend")
  213. {
  214. string userCode = Request.Headers["usercode"];
  215. if (sortOrder == "descend")
  216. {
  217. sortOrder = "desc";
  218. }
  219. else
  220. {
  221. sortOrder = "asc";
  222. }
  223. if (sortField == "null")
  224. {
  225. sortField = "fkey";
  226. }
  227. int start, end;
  228. start = (pageIndex - 1) * pageSize + 1;
  229. end = start + pageSize;
  230. using (IDatabase db = DbFactory.Base("eapslave"))
  231. {
  232. db.BeginTrans();
  233. var dal = new MaterialErrorMessageDal(db);
  234. var total = 0;
  235. string errorinfo = string.Empty;
  236. var roles = dal.GetByRecipe(filter, subFilter, start, pageSize, sortField, sortOrder, out total);
  237. var extra = dal.GetTotalInfo(filter, subFilter);
  238. return new LayuiModel<ErrorMessageDto>
  239. {
  240. code = 1,
  241. count = total,
  242. data = roles,
  243. msg = "",
  244. extraObject = extra
  245. };
  246. }
  247. }
  248. /// <summary>
  249. /// AA报警分析导出
  250. /// </summary>
  251. /// <param name="filterInfo"></param>
  252. /// <returns></returns>
  253. [HttpPost]
  254. public async Task<IActionResult> ExportErrorMessagesByRecipe(IDictionary<string, string> filterInfo)
  255. {
  256. string filter = string.Empty, subFilter = string.Empty, sortField = "fkey", sortOrder = "ascend";
  257. int pageIndex = 1, pageSize = 100000;
  258. if (filterInfo.ContainsKey("filter"))
  259. {
  260. filter = filterInfo["filter"];
  261. }
  262. if (filterInfo.ContainsKey("subFilter"))
  263. {
  264. subFilter = filterInfo["subFilter"];
  265. }
  266. if (filterInfo.ContainsKey("sortField"))
  267. {
  268. sortField = filterInfo["sortField"];
  269. }
  270. if (filterInfo.ContainsKey("sortOrder"))
  271. {
  272. sortOrder = filterInfo["sortOrder"];
  273. }
  274. if (filterInfo.ContainsKey("pageIndex"))
  275. {
  276. pageIndex = Convert.ToInt32(filterInfo["pageIndex"]);
  277. }
  278. if (filterInfo.ContainsKey("pageSize"))
  279. {
  280. pageSize = Convert.ToInt32(filterInfo["pageSize"]);
  281. }
  282. using (IDatabase db = DbFactory.Base("eapslave"))
  283. {
  284. var roles = GetErrorMessagesByRecipe(filter, subFilter, pageIndex, pageSize, sortField, sortOrder).data;
  285. var dal = new MaterialErrorMessageDal(db);
  286. var dao = dal.GetTotalInfo(filter, subFilter);
  287. roles.ToList().Add(dao);
  288. List<string> str = new List<string>() { "机种", "LensInput", "Lens真空报警", "", "LensPR报警", "", "SensorInput", "Sensor真空报警","", "SensorPR报警","" };
  289. List<int> index = new List<int>() { 2, 3, 4, 5,7,8,9,10 };
  290. foreach (var item in roles)
  291. {
  292. item.LensPrAlarmRate = (Convert.ToDouble(item.LensPrAlarmRate) * 100).ToString() + "%";
  293. item.LensVacuoAlarmRate = (Convert.ToDouble(item.LensVacuoAlarmRate) * 100).ToString() + "%";
  294. item.SensorPrAlarmRate = (Convert.ToDouble(item.SensorPrAlarmRate) * 100).ToString() + "%";
  295. item.SensorVacuoAlarmRate = (Convert.ToDouble(item.SensorVacuoAlarmRate) * 100).ToString() + "%";
  296. }
  297. var list = _mapper.Map<IEnumerable<ExportErrorMessageDto>>(roles).ToList();
  298. var book = DataExportHelper.EntityToExcel(list, str, index);
  299. MemoryStream ms = new MemoryStream();
  300. ms.Position = 0;
  301. book.Write(ms);
  302. ms.Dispose();
  303. ms.Close();
  304. await Task.CompletedTask;
  305. return File(ms.ToArray(), "application/octet-stream");
  306. }
  307. }
  308. [HttpGet]
  309. public LayuiModel<ErrorMessageDto> GetErrorMessagesByMachine(string filter, string subFilter, int pageIndex = 1, int pageSize = 10, string sortField = "fkey", string sortOrder = "ascend")
  310. {
  311. string userCode = Request.Headers["usercode"];
  312. if (sortOrder == "descend")
  313. {
  314. sortOrder = "desc";
  315. }
  316. else
  317. {
  318. sortOrder = "asc";
  319. }
  320. if (sortField == "null")
  321. {
  322. sortField = "fkey";
  323. }
  324. int start, end;
  325. start = (pageIndex - 1) * pageSize + 1;
  326. end = start + pageSize;
  327. using (IDatabase db = DbFactory.Base("eapslave"))
  328. {
  329. db.BeginTrans();
  330. var dal = new MaterialErrorMessageDal(db);
  331. var total = 0;
  332. string errorinfo = string.Empty;
  333. var roles = dal.GetByMachine(filter, subFilter, start, pageSize, sortField, sortOrder, out total);
  334. var extra = dal.GetTotalInfo(filter, subFilter);
  335. return new LayuiModel<ErrorMessageDto>
  336. {
  337. code = 1,
  338. count = total,
  339. data = roles,
  340. msg = "",
  341. extraObject = extra
  342. };
  343. }
  344. }
  345. }
  346. }