MacStatusTotalInfoController.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350
  1. using Cksoft.Data;
  2. using Cksoft.Data.Repository;
  3. using Cksoft.Unity;
  4. using DllEapBll.Services;
  5. using DllEapDal.OFILM;
  6. using DllEapEntity;
  7. using DllEapEntity.Dtos;
  8. using DllEapEntity.OFILM;
  9. using Microsoft.AspNetCore.Authorization;
  10. using Microsoft.AspNetCore.Mvc;
  11. using System;
  12. using System.Collections.Generic;
  13. using System.Linq;
  14. using System.Threading.Tasks;
  15. namespace DllEapBll.OFILM
  16. {
  17. /// <summary>
  18. /// 看板数据
  19. /// </summary>
  20. [ApiController]
  21. [Route("eap/api/[controller]/[action]")]
  22. [Authorize]
  23. public class MacStatusTotalInfoController : ControllerBase
  24. {
  25. private MacStatusService macStatusService;
  26. /// <summary>
  27. ///
  28. /// </summary>
  29. /// <param name="macStatusService"></param>
  30. public MacStatusTotalInfoController(MacStatusService macStatusService)
  31. {
  32. this.macStatusService = macStatusService;
  33. }
  34. /// <summary>
  35. /// 看板首页机台状态数据
  36. /// </summary>
  37. /// <param name="filter"></param>
  38. /// <param name="recipe"></param>
  39. /// <returns></returns>
  40. [HttpGet]
  41. public EapResponse GetTotalInfo(string filter, string recipe)
  42. {
  43. var res = new EapResponse { Code = 1, Msg = string.Empty };
  44. string errorinfo = string.Empty;
  45. //filter = " and a.regionId in (select id from factoryregion where parentid=22) "; // 未来城1号COB车间
  46. using (IDatabase db = DbFactory.Base("eapslave"))
  47. {
  48. var dal = new MacStatusTotalDal(db);
  49. //db.BeginTrans();
  50. var entity = dal.GetTotalInfo(filter, "", "", recipe, ref errorinfo);
  51. // db.Rollback();
  52. if (entity == null)
  53. {
  54. res.Code = -1;
  55. res.Msg = errorinfo;
  56. return res;
  57. }
  58. res.Data = entity;
  59. return res;
  60. }
  61. }
  62. /// <summary>
  63. /// 获取机种详情头部信息
  64. /// </summary>
  65. /// <param name="maccode"></param>
  66. /// <param name="startTime"></param>
  67. /// <param name="endTime"></param>
  68. /// <returns></returns>
  69. [HttpGet]
  70. public EapResponse GetTotalInfoDeatil(string maccode, string startTime, string endTime)
  71. {
  72. var res = new EapResponse { Code = 1, Msg = string.Empty };
  73. string errorinfo = string.Empty;
  74. using (IDatabase db = DbFactory.Base("eapslave"))
  75. {
  76. var dal = new MacStatusTotalDal(db);
  77. MacStatusForDashboardDetailDto runTimes = dal.GetDetail(maccode, startTime, endTime);
  78. if (runTimes == null)
  79. {
  80. res.Code = -1;
  81. res.Msg = errorinfo;
  82. return res;
  83. }
  84. res.Data = runTimes;
  85. return res;
  86. }
  87. }
  88. /// <summary>
  89. /// 获取报警及运行状态持续时间
  90. /// </summary>
  91. /// <param name="maccode"></param>
  92. /// <param name="startTime"></param>
  93. /// <param name="endTime"></param>
  94. /// <returns></returns>
  95. [HttpGet]
  96. public EapResponse GetTotalInfoDeatilForAnalysis(string maccode, string startTime, string endTime)
  97. {
  98. var res = new EapResponse { Code = 1, Msg = string.Empty };
  99. string errorinfo = string.Empty;
  100. using (IDatabase db = DbFactory.Base("eapslave"))
  101. {
  102. var dal = new MacStatusTotalDal(db);
  103. // db.BeginTrans();
  104. // IOrderedEnumerable<MacStatusForAnalysis> runTimes = dal.GetDetailForAnalysis(maccode, startTime, endTime);
  105. IEnumerable<DayCount> alarms = dal.GetAlarmCountByShift(Convert.ToDateTime(startTime), maccode);
  106. IEnumerable<RunRateDto> runrate = dal.GetRunRatesDetail(maccode, startTime, endTime);
  107. MacStatusForDashboardDetailForAnalysisDto macStatusForDashboardDetailForAnalysisDto = new MacStatusForDashboardDetailForAnalysisDto();
  108. macStatusForDashboardDetailForAnalysisDto.RunTimes = alarms;//报警分析
  109. macStatusForDashboardDetailForAnalysisDto.Runrate = runrate;//稼动饼图
  110. // db.Rollback();
  111. if (alarms == null)
  112. {
  113. res.Code = -1;
  114. res.Msg = errorinfo;
  115. return res;
  116. }
  117. res.Data = macStatusForDashboardDetailForAnalysisDto;
  118. return res;
  119. }
  120. }
  121. /// <summary>
  122. /// 获取机种产量详情(昨天、今天)
  123. /// </summary>
  124. /// <param name="maccode"></param>
  125. /// <param name="startTime"></param>
  126. /// <param name="endTime"></param>
  127. /// <returns></returns>
  128. [HttpGet]
  129. public EapResponse GetTotalInfoDeatilForCount(string maccode, string time, string endTime)
  130. {
  131. var res = new EapResponse { Code = 1, Msg = string.Empty };
  132. string errorinfo = string.Empty;
  133. using (IDatabase db = DbFactory.Base("eapslave"))
  134. {
  135. var dal = new MacStatusTotalDal(db);
  136. // db.BeginTrans();
  137. IEnumerable<DayCount> runTimes = dal.GetDetailForCountDay(maccode, time);
  138. // db.Rollback();
  139. if (runTimes == null)
  140. {
  141. res.Code = -1;
  142. res.Msg = errorinfo;
  143. return res;
  144. }
  145. res.Data = runTimes;
  146. return res;
  147. }
  148. }
  149. /// <summary>
  150. /// 获取机种产量详情(小时)
  151. /// </summary>
  152. /// <param name="maccode"></param>
  153. /// <param name="startTime"></param>
  154. /// <param name="endTime"></param>
  155. /// <returns></returns>
  156. [HttpGet]
  157. public EapResponse GetTotalInfoDeatilForCountHour(string maccode, string time, string endTime)
  158. {
  159. var res = new EapResponse { Code = 1, Msg = string.Empty };
  160. string errorinfo = string.Empty;
  161. MacStatusForCountDto macStatusForCountDto = new MacStatusForCountDto();
  162. using (IDatabase db = DbFactory.Base("eapslave"))
  163. {
  164. var dal = new MacStatusTotalDal(db);
  165. db.BeginTrans();
  166. // IEnumerable<DayCount> runDay = dal.GetDetailForCountDay(maccode);
  167. IEnumerable<HourCount> runHour = dal.GetDetailForCountHour(maccode, time);
  168. // macStatusForCountDto.CountDay = runDay;
  169. macStatusForCountDto.CountHour = runHour;
  170. db.Rollback();
  171. if (macStatusForCountDto == null)
  172. {
  173. res.Code = -1;
  174. res.Msg = errorinfo;
  175. return res;
  176. }
  177. res.Data = macStatusForCountDto;
  178. return res;
  179. }
  180. }
  181. /// <summary>
  182. /// 获取各制程稼动率图表数据
  183. /// </summary>
  184. /// <param name="filter"></param>
  185. /// <returns></returns>
  186. [HttpGet]
  187. public EapResponse GetProcessRunRate(string filter, string recipe, string date, string type)
  188. {
  189. return this.macStatusService.GetProcessRunRate(filter, recipe, date, type);
  190. }
  191. /// <summary>
  192. /// 获取机台运行历史
  193. /// </summary>
  194. /// <param name="macCode"></param>
  195. /// <param name="startTime"></param>
  196. /// <param name="endTime"></param>
  197. /// <returns></returns>
  198. public EapResponse GetRunHistroy(string macCode, DateTime startTime, DateTime endTime)
  199. {
  200. var res = new EapResponse { Code = 1, Msg = string.Empty };
  201. string errorinfo = string.Empty;
  202. using (IDatabase db = DbFactory.Base("eapslave"))
  203. {
  204. //db.BeginTrans();
  205. var dal = new MacStatusTotalDal(db);
  206. var datas = dal.GetRunHistory(macCode, startTime, endTime, ref errorinfo);
  207. //db.Rollback();
  208. if (datas == null || datas.Count() <= 0)
  209. {
  210. res.Code = -1;
  211. res.Msg = errorinfo;
  212. return res;
  213. }
  214. res.Data = datas;
  215. return res;
  216. }
  217. }
  218. /// <summary>
  219. /// 获取三级详情
  220. /// </summary>
  221. /// <param name="fcode"></param>
  222. /// <param name="time"></param>
  223. /// <param name="filter"></param>
  224. /// <param name="page"></param>
  225. /// <param name="limit"></param>
  226. /// <param name="sort"></param>
  227. /// <param name="order"></param>
  228. /// <returns></returns>
  229. [HttpGet]
  230. public LayuiModel<MacStatus> GetAlarmDetail(string fcode, string startTime, string endTime, string alarmCode, string alarmName, string filter, int page = 1, int limit = 10,
  231. string sort = "ID", string order = "DESC")
  232. {
  233. if (!string.IsNullOrEmpty(fcode))
  234. filter += $" and a.MacCode = '{fcode}'";
  235. if (!string.IsNullOrEmpty(startTime))
  236. filter += $" and a.STime >'{startTime}'";
  237. if (!string.IsNullOrEmpty(endTime))
  238. filter += $" and a.STime<='{endTime}'";
  239. if (!string.IsNullOrEmpty(alarmCode))
  240. filter += $" and a.AlarmCode like '%{alarmCode}%'";
  241. if (!string.IsNullOrEmpty(alarmName))
  242. filter += $" and a.alarmDescribe like '%{alarmName}%'";
  243. IEnumerable<MacStatus> models = null;
  244. filter = filter ?? " ";
  245. string errorinfo = "";
  246. using (IDatabase db = DbFactory.Base("eapslave"))
  247. {
  248. var dal = new MacStatusTotalDal(db);
  249. models = dal.GetAlarmDetail((page - 1) * limit + 1, limit, filter, sort, order, out int total, ref errorinfo);
  250. Parallel.ForEach(models, item =>
  251. {
  252. item.FlenD = Convert.ToDouble(item.FLen);
  253. if (item.FLen == 0 && item.ETime.ToString("yyyy-MM-dd HH:mm:ss") != "0001-01-01 00:00:00")
  254. {
  255. item.FlenD = 0.01d;
  256. }
  257. });
  258. var count = total;//dal.GetCount(filter);
  259. var responseData = new LayuiModel<MacStatus>()
  260. {
  261. code = 0,
  262. count = count,
  263. data = models,
  264. msg = ""
  265. };
  266. return responseData;
  267. }
  268. }
  269. /// <summary>
  270. /// 获取当天及前一天的白班和夜班的报警数量
  271. /// </summary>
  272. /// <param name="date"></param>
  273. /// <param name="macCode"></param>
  274. /// <returns></returns>
  275. [HttpGet]
  276. public EapResponse GetAlarmCounyByShift(DateTime date, string macCode)
  277. {
  278. var res = new EapResponse { Code = 1, Msg = string.Empty };
  279. string errorinfo = string.Empty;
  280. using (IDatabase db = DbFactory.Base("eapslave"))
  281. {
  282. var dal = new MacStatusTotalDal(db);
  283. //db.BeginTrans();
  284. IEnumerable<DayCount> alarms = dal.GetAlarmCountByShift(date, macCode);
  285. if (alarms == null)
  286. {
  287. res.Code = -1;
  288. res.Msg = errorinfo;
  289. return res;
  290. }
  291. res.Data = alarms;
  292. return res;
  293. }
  294. }
  295. /// <summary>
  296. /// 大连线看板数据
  297. /// </summary>
  298. /// <param name="maccode"></param>
  299. /// <param name="date"></param>
  300. /// <returns></returns>
  301. [HttpGet]
  302. public EapResponse GetMacDetail(string maccode, string date)
  303. {
  304. var res = new EapResponse { Code = 1, Msg = string.Empty };
  305. string errorinfo = string.Empty;
  306. using (IDatabase db = DbFactory.Base("eapslave"))
  307. {
  308. var dal = new MacStatusTotalDal(db);
  309. var maccodes = maccode.Split(',').ToList();
  310. //'DA00001', 'WB00001', 'WB00002', 'WB00003', 'WB00004', 'WB00005', 'LHA0001', 'AA00001'
  311. //List<string> maccodes = new List<string>();
  312. //maccodes.Add("DA00001");
  313. //maccodes.Add("WB00001");
  314. //maccodes.Add("WB00002");
  315. //maccodes.Add("WB00003");
  316. //maccodes.Add("WB00004");
  317. //maccodes.Add("WB00005");
  318. //maccodes.Add("LHA0001");
  319. //maccodes.Add("AA00001");
  320. if (maccodes.Count == 0)
  321. {
  322. res.Code = -1;
  323. res.Msg = "机台不可为空";
  324. return res;
  325. }
  326. //db.BeginTrans();
  327. MacDto alarms = dal.GetDetail(maccodes, date);
  328. if (alarms == null)
  329. {
  330. res.Code = -1;
  331. res.Msg = errorinfo;
  332. return res;
  333. }
  334. res.Data = alarms;
  335. return res;
  336. }
  337. }
  338. }
  339. }