MacStatusController.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
  1. using Cksoft.Data;
  2. using Cksoft.Data.Repository;
  3. using Cksoft.Unity;
  4. using DllEapBll.SignalR;
  5. using DllEapDal;
  6. using DllEapEntity;
  7. using DllEapEntity.Onsemi;
  8. using Microsoft.AspNetCore.Mvc;
  9. using Microsoft.AspNetCore.SignalR;
  10. using Microsoft.Extensions.Logging;
  11. using Newtonsoft.Json;
  12. using System;
  13. using System.Collections.Generic;
  14. using System.Linq;
  15. using Cksoft.Unity.Log4NetConfig;
  16. using DllStatusShowDal;
  17. using Microsoft.AspNetCore.Authorization;
  18. using DllEapDal.OFILM;
  19. using System.Threading.Tasks;
  20. namespace DllEapBll.Controllers
  21. {
  22. /// <summary>
  23. /// 机台状态
  24. /// </summary>
  25. [Authorize]
  26. [ApiController]
  27. [Route("eap/api/[controller]/[action]")]
  28. public class MacStatusController : ControllerBase
  29. {
  30. private ILogger<MacStatusController> myloger = null;
  31. private readonly IHubContext<MacStatusHub> macStatusHub;
  32. /// <summary>
  33. ///
  34. /// </summary>
  35. /// <param name="macStatusHub"></param>
  36. /// <param name="ploger"></param>
  37. public MacStatusController(IHubContext<MacStatusHub> macStatusHub, ILogger<MacStatusController> ploger)
  38. {
  39. this.macStatusHub = macStatusHub;
  40. myloger = ploger;
  41. }
  42. /// <summary>
  43. /// 获取机台状态
  44. /// </summary>
  45. /// <param name="filter"></param>
  46. /// <returns></returns>
  47. [HttpGet]
  48. public EapResponse GetMacStatuses(string filter)
  49. {
  50. var errorinfo = string.Empty;
  51. var res = new EapResponse { Code = 1, Msg = string.Empty };
  52. using (IDatabase db = DbFactory.Base("eapslave"))
  53. {
  54. var dal = new MacStatusAnalysisDal(db);
  55. var tree = dal.GetStatusTree(filter, ref errorinfo);
  56. if (tree == null)
  57. {
  58. res.Code = -1;
  59. res.Msg = errorinfo;
  60. res.Data = null;
  61. return res;
  62. }
  63. res.Data = tree;
  64. return res;
  65. }
  66. }
  67. /// <summary>
  68. /// 添加设备状态
  69. /// </summary>
  70. /// <param name="macStatus"></param>
  71. /// <returns></returns>
  72. [HttpPost]
  73. public async Task<EapResponse> InsMacStatus([FromBody] MacStatus macStatus)
  74. {
  75. var userCode = Request.Headers["usercode"];
  76. var errorinfo = string.Empty;
  77. var res = new EapResponse { Code = 1, Msg = string.Empty };
  78. using (IDatabase db = DbFactory.Base("eap"))
  79. {
  80. db.BeginTrans();
  81. var dal = new MacStatusDal(db);
  82. MacStatus mst = new MacStatus();
  83. //添加状态程序名称
  84. string condition = $" and a.fcode='{macStatus.MacCode}'";
  85. List<Machine> mac = db.FindListForCondition<Machine>(condition, ref errorinfo).ToList();
  86. if (mac.Count <= 0)
  87. {
  88. errorinfo = $"未找到机台【{macStatus.MacCode}】。";
  89. return null;
  90. }
  91. Ad830PlusProgramDal tempdal = new Ad830PlusProgramDal(db);
  92. string programname = tempdal.GetProgramName(mac[0], ref errorinfo);
  93. macStatus.Remark = programname;
  94. macStatus.ProgramName = string.IsNullOrEmpty(macStatus.ProgramName) ? "待机程序" : macStatus.ProgramName;
  95. macStatus.STime = DateTime.Now;
  96. if (macStatus.StatusID == 204905)
  97. {
  98. MachineChangeDal MChange = new MachineChangeDal(db);
  99. MChange.ChangeStart(macStatus,macStatus.Remark);
  100. }
  101. if (macStatus.StatusID == 3)
  102. {
  103. MachineChangeDal MChange = new MachineChangeDal(db);
  104. MChange.ChangeEnd(macStatus, macStatus.Remark);
  105. }
  106. var result = dal.PushStatusToMQ(mac[0].ID, macStatus, ref errorinfo);
  107. var micd = new MachineInfoChangeLogDal();
  108. await micd.InsertLog(macStatus.MacCode, userCode, "修改机台状态", $"修改机台状态为:【{macStatus.StatusID}】");
  109. if (result < 0)
  110. {
  111. res.Code = -1;
  112. res.Msg = errorinfo;
  113. res.Data = null;
  114. return res;
  115. }
  116. res.Code = 1;
  117. res.Data = macStatus;
  118. db.Commit();
  119. LogHelper<MacStatus>.LogFatal("新增MacStatus-->" + Json.ToJson(macStatus), "用户操作", macStatus.RecCode);
  120. return res;
  121. }
  122. }
  123. /// <summary>
  124. /// 批量修改机台状态
  125. /// </summary>
  126. /// <param name="macStatuses"></param>
  127. /// <returns></returns>
  128. [HttpPost]
  129. public EapResponse InsMacStatusBat([FromBody] List<MacStatus> macStatuses)
  130. {
  131. var errorinfo = string.Empty;
  132. var res = new EapResponse { Code = 1, Msg = string.Empty };
  133. using (IDatabase db = DbFactory.Base("eap"))
  134. {
  135. db.BeginTrans();
  136. var dal = new DllStatusShowDal.MacStatusDal(db);
  137. foreach (var item in macStatuses)
  138. {
  139. var macStatus = item;
  140. MacStatus mst = new MacStatus();
  141. //添加状态程序名称
  142. string condition = $" and a.fcode='{macStatus.MacCode}'";
  143. List<Machine> mac = db.FindListForCondition<Machine>(condition, ref errorinfo).ToList();
  144. if (mac.Count <= 0)
  145. {
  146. errorinfo = $"未找到机台【{macStatus.MacCode}】。";
  147. return null;
  148. }
  149. Ad830PlusProgramDal tempdal = new Ad830PlusProgramDal(db);
  150. string programname = tempdal.GetProgramName(mac[0], ref errorinfo);
  151. macStatus.Remark = programname;
  152. macStatus.ProgramName = string.IsNullOrEmpty(macStatus.ProgramName) ? "待机程序" : macStatus.ProgramName;
  153. macStatus.STime = DateTime.Now;
  154. var result = dal.PushStatusToMQ(mac[0].ID, macStatus, ref errorinfo);
  155. if (result < 0)
  156. {
  157. res.Code = -1;
  158. res.Msg = errorinfo;
  159. res.Data = null;
  160. return res;
  161. }
  162. }
  163. res.Code = 1;
  164. db.Commit();
  165. return res;
  166. }
  167. }
  168. /// <summary>
  169. /// 修改设备结束时间
  170. /// </summary>
  171. /// <param name="macStatus"></param>
  172. /// <returns></returns>
  173. [HttpPost]
  174. public EapResponse UdpMacStatus([FromBody] MacStatus macStatus)
  175. {
  176. var errorinfo = string.Empty;
  177. var res = new EapResponse { Code = 1, Msg = string.Empty };
  178. using (IDatabase db = DbFactory.Base("eap"))
  179. {
  180. db.BeginTrans();
  181. var dal = new MacStatusDal(db);
  182. macStatus.STime = DateTime.Now;
  183. macStatus.ETime = DateTime.Now;
  184. int result = dal.UpdatePreStatus(macStatus, string.Empty, ref errorinfo);
  185. if (result == -1)
  186. {
  187. res.Code = -1;
  188. res.Msg = errorinfo;
  189. res.Data = null;
  190. return res;
  191. }
  192. macStatus.StatusID = 3;
  193. if (this.InsMacStatus(macStatus).Result.Code < 0)
  194. {
  195. res.Code = -1;
  196. res.Msg = "新增闲置状态失败";
  197. db.Rollback();
  198. return res;
  199. }
  200. res.Data = result;
  201. db.Commit();
  202. LogHelper<MacStatus>.LogFatal("修改MacStatus-->" + Json.ToJson(macStatus), "用户操作", macStatus.RecCode);
  203. return res;
  204. }
  205. }
  206. /// <summary>
  207. /// lot 调程
  208. /// </summary>
  209. /// <param name="lotid"></param>
  210. /// <param name="macCode"></param>
  211. /// <returns></returns>
  212. [HttpPost]
  213. public EapResponse AdjustmentLot([FromForm] string proName, [FromForm] string macCode)
  214. {
  215. /*string errorinfo = string.Empty;
  216. var res = new EapResponse { Code = 1, Msg = string.Empty };
  217. #region 根据设备id和lot号,获取程序名称、程序版本
  218. string ip = AppConfigurtaionServices.Configuration["mesurl" + ":url"];
  219. string mesurl = ip + "ofilm/eap/findEquipmentProgramInfo";
  220. Dictionary<string, string> dic = new Dictionary<string, string>();
  221. dic.Add("equipmentID", macCode);
  222. dic.Add("lotId", lotid);
  223. myloger.LogError($"调程访问mesApiUrl:{mesurl}?equipmentID = {macCode}&lotId={lotid}");
  224. OfilmMesApiResponse mesResult = HttpRequestHelper<OfilmMesApiResponse>.Get(mesurl, dic, ref errorinfo);
  225. myloger.LogError($"调程访问返回结果,{ JsonConvert.SerializeObject(mesResult)}");
  226. #endregion
  227. if (mesResult.Success == true)
  228. {
  229. using (IDatabase db = DbFactory.Base("eap"))
  230. {
  231. db.BeginTrans();
  232. var dal = new ProgramDal(db);
  233. string recipe = mesResult.Result.RecipeName;
  234. int version = Convert.ToInt32(mesResult.Result.Version);
  235. myloger.LogError($"开始调程,机台编号={macCode},程序名称={recipe},版本={version}");
  236. var resultcount = dal.DownloadProgramForLot(macCode, recipe, version, ref errorinfo);
  237. if (resultcount <= 0)
  238. {
  239. myloger.LogError($"调程发生错误:{errorinfo}");
  240. }
  241. else
  242. {
  243. myloger.LogInformation($"调程成功......");
  244. }
  245. res.Code = resultcount;
  246. db.Commit();
  247. }
  248. }
  249. else
  250. {
  251. res.Code = -1;
  252. res.Msg = mesResult.Message;
  253. }
  254. return res;*/
  255. var res = new EapResponse { Code = 1, Msg = string.Empty };
  256. IDatabase db = null;
  257. try
  258. {
  259. db = DbFactory.Base("eap");
  260. db.BeginTrans();
  261. var dal = new ProgramDal(db);
  262. string errorinfo = string.Empty;
  263. myloger.LogError($"机台={macCode},程序名称={proName} 开始下载");
  264. //macCode = "DIBD0034";
  265. //proName = "18-038";
  266. //proName = "DMP3099L-7-CU-AD0806AL796CXX-BN";
  267. var r = dal.DownloadProgram(macCode, proName, ref errorinfo);
  268. if (r < 0)
  269. {
  270. myloger.LogError(errorinfo);
  271. db.Rollback();
  272. res.Code = -1;
  273. res.Msg = errorinfo;
  274. return res;
  275. }
  276. db.Commit();
  277. return res;
  278. }
  279. catch (Exception e)
  280. {
  281. res.Code = -1;
  282. res.Msg = e.Message;
  283. return res;
  284. }
  285. finally
  286. {
  287. if (db != null)
  288. db.Close();
  289. }
  290. }
  291. /// <summary>
  292. /// Check
  293. /// </summary>
  294. /// <param name="macCode"></param>
  295. /// <returns></returns>
  296. [HttpGet]
  297. public OfilmMesApiResponse GetActiveCheck(string macCode)
  298. {
  299. var errorinfo = string.Empty;
  300. var res = new EapResponse { Code = 1, Msg = string.Empty };
  301. string ip = AppConfigurtaionServices.Configuration["mesurl" + ":url"];
  302. string mesurl = ip + "ofilm/eap/activeCheck";
  303. Dictionary<string, string> dic = new Dictionary<string, string>();
  304. dic.Add("equipmentID", macCode);
  305. OfilmMesApiResponse mesResult = HttpRequestHelper<OfilmMesApiResponse>.Get(mesurl, dic, ref errorinfo);
  306. //if (mesResult.Success == false)
  307. //{
  308. // res.Code = -1;
  309. // res.Msg = mesResult.Message + errorinfo;
  310. // res.Data = null;
  311. // return res;
  312. //}
  313. //res.Data = mesResult.Result;
  314. return mesResult;
  315. }
  316. /// <summary>
  317. /// 获取机台最新状态
  318. /// </summary>
  319. /// <param name="macCode"></param>
  320. /// <returns></returns>
  321. [HttpGet]
  322. public EapResponse GetMacStatuses01(string macCode)
  323. {
  324. var errorinfo = string.Empty;
  325. var res = new EapResponse { Code = 1, Msg = string.Empty };
  326. using (IDatabase db = DbFactory.Base("eapslave"))
  327. {
  328. var dal = new MacStatusDal(db);
  329. var model = dal.GetMacStatus01ByMacode(macCode);
  330. if (model == null)
  331. {
  332. res.Code = -1;
  333. res.Msg = errorinfo;
  334. res.Data = null;
  335. return res;
  336. }
  337. res.Data = model;
  338. return res;
  339. }
  340. }
  341. }
  342. }