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;
}
}
}
}