using Cksoft.Data; using Cksoft.Data.Repository; using Cksoft.Unity; using DllEapBll.SignalR; using DllEapDal; using DllEapEntity; using DllEapEntity.Onsemi; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.SignalR; using Microsoft.Extensions.Logging; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using Cksoft.Unity.Log4NetConfig; using DllStatusShowDal; using Microsoft.AspNetCore.Authorization; using DllEapDal.OFILM; using System.Threading.Tasks; namespace DllEapBll.Controllers { /// /// 机台状态 /// [Authorize] [ApiController] [Route("eap/api/[controller]/[action]")] public class MacStatusController : ControllerBase { private ILogger myloger = null; private readonly IHubContext macStatusHub; /// /// /// /// /// public MacStatusController(IHubContext macStatusHub, ILogger ploger) { this.macStatusHub = macStatusHub; myloger = ploger; } /// /// 获取机台状态 /// /// /// [HttpGet] public EapResponse GetMacStatuses(string filter) { var errorinfo = string.Empty; var res = new EapResponse { Code = 1, Msg = string.Empty }; using (IDatabase db = DbFactory.Base("eapslave")) { var dal = new MacStatusAnalysisDal(db); var tree = dal.GetStatusTree(filter, ref errorinfo); if (tree == null) { res.Code = -1; res.Msg = errorinfo; res.Data = null; return res; } res.Data = tree; return res; } } /// /// 添加设备状态 /// /// /// [HttpPost] public async Task InsMacStatus([FromBody] MacStatus macStatus) { var userCode = Request.Headers["usercode"]; var errorinfo = string.Empty; var res = new EapResponse { Code = 1, Msg = string.Empty }; using (IDatabase db = DbFactory.Base("eap")) { db.BeginTrans(); var dal = new MacStatusDal(db); MacStatus mst = new MacStatus(); //添加状态程序名称 string condition = $" and a.fcode='{macStatus.MacCode}'"; List mac = db.FindListForCondition(condition, ref errorinfo).ToList(); if (mac.Count <= 0) { errorinfo = $"未找到机台【{macStatus.MacCode}】。"; return null; } Ad830PlusProgramDal tempdal = new Ad830PlusProgramDal(db); string programname = tempdal.GetProgramName(mac[0], ref errorinfo); macStatus.Remark = programname; macStatus.ProgramName = string.IsNullOrEmpty(macStatus.ProgramName) ? "待机程序" : macStatus.ProgramName; macStatus.STime = DateTime.Now; if (macStatus.StatusID == 204905) { MachineChangeDal MChange = new MachineChangeDal(db); MChange.ChangeStart(macStatus,macStatus.Remark); } if (macStatus.StatusID == 3) { MachineChangeDal MChange = new MachineChangeDal(db); MChange.ChangeEnd(macStatus, macStatus.Remark); } var result = dal.PushStatusToMQ(mac[0].ID, macStatus, ref errorinfo); var micd = new MachineInfoChangeLogDal(); await micd.InsertLog(macStatus.MacCode, userCode, "修改机台状态", $"修改机台状态为:【{macStatus.StatusID}】"); if (result < 0) { res.Code = -1; res.Msg = errorinfo; res.Data = null; return res; } res.Code = 1; res.Data = macStatus; db.Commit(); LogHelper.LogFatal("新增MacStatus-->" + Json.ToJson(macStatus), "用户操作", macStatus.RecCode); return res; } } /// /// 批量修改机台状态 /// /// /// [HttpPost] public EapResponse InsMacStatusBat([FromBody] List macStatuses) { var errorinfo = string.Empty; var res = new EapResponse { Code = 1, Msg = string.Empty }; using (IDatabase db = DbFactory.Base("eap")) { db.BeginTrans(); var dal = new DllStatusShowDal.MacStatusDal(db); foreach (var item in macStatuses) { var macStatus = item; MacStatus mst = new MacStatus(); //添加状态程序名称 string condition = $" and a.fcode='{macStatus.MacCode}'"; List mac = db.FindListForCondition(condition, ref errorinfo).ToList(); if (mac.Count <= 0) { errorinfo = $"未找到机台【{macStatus.MacCode}】。"; return null; } Ad830PlusProgramDal tempdal = new Ad830PlusProgramDal(db); string programname = tempdal.GetProgramName(mac[0], ref errorinfo); macStatus.Remark = programname; macStatus.ProgramName = string.IsNullOrEmpty(macStatus.ProgramName) ? "待机程序" : macStatus.ProgramName; macStatus.STime = DateTime.Now; var result = dal.PushStatusToMQ(mac[0].ID, macStatus, ref errorinfo); if (result < 0) { res.Code = -1; res.Msg = errorinfo; res.Data = null; return res; } } res.Code = 1; db.Commit(); return res; } } /// /// 修改设备结束时间 /// /// /// [HttpPost] public EapResponse UdpMacStatus([FromBody] MacStatus macStatus) { var errorinfo = string.Empty; var res = new EapResponse { Code = 1, Msg = string.Empty }; using (IDatabase db = DbFactory.Base("eap")) { db.BeginTrans(); var dal = new MacStatusDal(db); macStatus.STime = DateTime.Now; macStatus.ETime = DateTime.Now; int result = dal.UpdatePreStatus(macStatus, string.Empty, ref errorinfo); if (result == -1) { res.Code = -1; res.Msg = errorinfo; res.Data = null; return res; } macStatus.StatusID = 3; if (this.InsMacStatus(macStatus).Result.Code < 0) { res.Code = -1; res.Msg = "新增闲置状态失败"; db.Rollback(); return res; } res.Data = result; db.Commit(); LogHelper.LogFatal("修改MacStatus-->" + Json.ToJson(macStatus), "用户操作", macStatus.RecCode); return res; } } /// /// lot 调程 /// /// /// /// [HttpPost] public EapResponse AdjustmentLot([FromForm] string proName, [FromForm] string macCode) { /*string errorinfo = string.Empty; var res = new EapResponse { Code = 1, Msg = string.Empty }; #region 根据设备id和lot号,获取程序名称、程序版本 string ip = AppConfigurtaionServices.Configuration["mesurl" + ":url"]; string mesurl = ip + "ofilm/eap/findEquipmentProgramInfo"; Dictionary dic = new Dictionary(); dic.Add("equipmentID", macCode); dic.Add("lotId", lotid); myloger.LogError($"调程访问mesApiUrl:{mesurl}?equipmentID = {macCode}&lotId={lotid}"); OfilmMesApiResponse mesResult = HttpRequestHelper.Get(mesurl, dic, ref errorinfo); myloger.LogError($"调程访问返回结果,{ JsonConvert.SerializeObject(mesResult)}"); #endregion if (mesResult.Success == true) { using (IDatabase db = DbFactory.Base("eap")) { db.BeginTrans(); var dal = new ProgramDal(db); string recipe = mesResult.Result.RecipeName; int version = Convert.ToInt32(mesResult.Result.Version); myloger.LogError($"开始调程,机台编号={macCode},程序名称={recipe},版本={version}"); var resultcount = dal.DownloadProgramForLot(macCode, recipe, version, ref errorinfo); if (resultcount <= 0) { myloger.LogError($"调程发生错误:{errorinfo}"); } else { myloger.LogInformation($"调程成功......"); } res.Code = resultcount; db.Commit(); } } else { res.Code = -1; res.Msg = mesResult.Message; } return res;*/ var res = new EapResponse { Code = 1, Msg = string.Empty }; IDatabase db = null; try { db = DbFactory.Base("eap"); db.BeginTrans(); var dal = new ProgramDal(db); string errorinfo = string.Empty; myloger.LogError($"机台={macCode},程序名称={proName} 开始下载"); //macCode = "DIBD0034"; //proName = "18-038"; //proName = "DMP3099L-7-CU-AD0806AL796CXX-BN"; var r = dal.DownloadProgram(macCode, proName, ref errorinfo); if (r < 0) { myloger.LogError(errorinfo); db.Rollback(); res.Code = -1; res.Msg = errorinfo; return res; } db.Commit(); return res; } catch (Exception e) { res.Code = -1; res.Msg = e.Message; return res; } finally { if (db != null) db.Close(); } } /// /// Check /// /// /// [HttpGet] public OfilmMesApiResponse GetActiveCheck(string macCode) { var errorinfo = string.Empty; var res = new EapResponse { Code = 1, Msg = string.Empty }; string ip = AppConfigurtaionServices.Configuration["mesurl" + ":url"]; string mesurl = ip + "ofilm/eap/activeCheck"; Dictionary dic = new Dictionary(); dic.Add("equipmentID", macCode); OfilmMesApiResponse mesResult = HttpRequestHelper.Get(mesurl, dic, ref errorinfo); //if (mesResult.Success == false) //{ // res.Code = -1; // res.Msg = mesResult.Message + errorinfo; // res.Data = null; // return res; //} //res.Data = mesResult.Result; return mesResult; } /// /// 获取机台最新状态 /// /// /// [HttpGet] public EapResponse GetMacStatuses01(string macCode) { var errorinfo = string.Empty; var res = new EapResponse { Code = 1, Msg = string.Empty }; using (IDatabase db = DbFactory.Base("eapslave")) { var dal = new MacStatusDal(db); var model = dal.GetMacStatus01ByMacode(macCode); if (model == null) { res.Code = -1; res.Msg = errorinfo; res.Data = null; return res; } res.Data = model; return res; } } } }