using Cksoft.Data; using Cksoft.Data.Repository; using Cksoft.Unity; using DllEapBll.Services; using DllEapDal.OFILM; using DllEapEntity; using DllEapEntity.Dtos; using DllEapEntity.OFILM; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace DllEapBll.OFILM { /// /// 看板数据 /// [ApiController] [Route("eap/api/[controller]/[action]")] [Authorize] public class MacStatusTotalInfoController : ControllerBase { private MacStatusService macStatusService; /// /// /// /// public MacStatusTotalInfoController(MacStatusService macStatusService) { this.macStatusService = macStatusService; } /// /// 看板首页机台状态数据 /// /// /// /// [HttpGet] public EapResponse GetTotalInfo(string filter, string recipe) { var res = new EapResponse { Code = 1, Msg = string.Empty }; string errorinfo = string.Empty; //filter = " and a.regionId in (select id from factoryregion where parentid=22) "; // 未来城1号COB车间 using (IDatabase db = DbFactory.Base("eapslave")) { var dal = new MacStatusTotalDal(db); //db.BeginTrans(); var entity = dal.GetTotalInfo(filter, "", "", recipe, ref errorinfo); // db.Rollback(); if (entity == null) { res.Code = -1; res.Msg = errorinfo; return res; } res.Data = entity; return res; } } /// /// 获取机种详情头部信息 /// /// /// /// /// [HttpGet] public EapResponse GetTotalInfoDeatil(string maccode, string startTime, string endTime) { var res = new EapResponse { Code = 1, Msg = string.Empty }; string errorinfo = string.Empty; using (IDatabase db = DbFactory.Base("eapslave")) { var dal = new MacStatusTotalDal(db); MacStatusForDashboardDetailDto runTimes = dal.GetDetail(maccode, startTime, endTime); if (runTimes == null) { res.Code = -1; res.Msg = errorinfo; return res; } res.Data = runTimes; return res; } } /// /// 获取报警及运行状态持续时间 /// /// /// /// /// [HttpGet] public EapResponse GetTotalInfoDeatilForAnalysis(string maccode, string startTime, string endTime) { var res = new EapResponse { Code = 1, Msg = string.Empty }; string errorinfo = string.Empty; using (IDatabase db = DbFactory.Base("eapslave")) { var dal = new MacStatusTotalDal(db); // db.BeginTrans(); // IOrderedEnumerable runTimes = dal.GetDetailForAnalysis(maccode, startTime, endTime); IEnumerable alarms = dal.GetAlarmCountByShift(Convert.ToDateTime(startTime), maccode); IEnumerable runrate = dal.GetRunRatesDetail(maccode, startTime, endTime); MacStatusForDashboardDetailForAnalysisDto macStatusForDashboardDetailForAnalysisDto = new MacStatusForDashboardDetailForAnalysisDto(); macStatusForDashboardDetailForAnalysisDto.RunTimes = alarms;//报警分析 macStatusForDashboardDetailForAnalysisDto.Runrate = runrate;//稼动饼图 // db.Rollback(); if (alarms == null) { res.Code = -1; res.Msg = errorinfo; return res; } res.Data = macStatusForDashboardDetailForAnalysisDto; return res; } } /// /// 获取机种产量详情(昨天、今天) /// /// /// /// /// [HttpGet] public EapResponse GetTotalInfoDeatilForCount(string maccode, string time, string endTime) { var res = new EapResponse { Code = 1, Msg = string.Empty }; string errorinfo = string.Empty; using (IDatabase db = DbFactory.Base("eapslave")) { var dal = new MacStatusTotalDal(db); // db.BeginTrans(); IEnumerable runTimes = dal.GetDetailForCountDay(maccode, time); // db.Rollback(); if (runTimes == null) { res.Code = -1; res.Msg = errorinfo; return res; } res.Data = runTimes; return res; } } /// /// 获取机种产量详情(小时) /// /// /// /// /// [HttpGet] public EapResponse GetTotalInfoDeatilForCountHour(string maccode, string time, string endTime) { var res = new EapResponse { Code = 1, Msg = string.Empty }; string errorinfo = string.Empty; MacStatusForCountDto macStatusForCountDto = new MacStatusForCountDto(); using (IDatabase db = DbFactory.Base("eapslave")) { var dal = new MacStatusTotalDal(db); db.BeginTrans(); // IEnumerable runDay = dal.GetDetailForCountDay(maccode); IEnumerable runHour = dal.GetDetailForCountHour(maccode, time); // macStatusForCountDto.CountDay = runDay; macStatusForCountDto.CountHour = runHour; db.Rollback(); if (macStatusForCountDto == null) { res.Code = -1; res.Msg = errorinfo; return res; } res.Data = macStatusForCountDto; return res; } } /// /// 获取各制程稼动率图表数据 /// /// /// [HttpGet] public EapResponse GetProcessRunRate(string filter, string recipe, string date, string type) { return this.macStatusService.GetProcessRunRate(filter, recipe, date, type); } /// /// 获取机台运行历史 /// /// /// /// /// public EapResponse GetRunHistroy(string macCode, DateTime startTime, DateTime endTime) { var res = new EapResponse { Code = 1, Msg = string.Empty }; string errorinfo = string.Empty; using (IDatabase db = DbFactory.Base("eapslave")) { //db.BeginTrans(); var dal = new MacStatusTotalDal(db); var datas = dal.GetRunHistory(macCode, startTime, endTime, ref errorinfo); //db.Rollback(); if (datas == null || datas.Count() <= 0) { res.Code = -1; res.Msg = errorinfo; return res; } res.Data = datas; return res; } } /// /// 获取三级详情 /// /// /// /// /// /// /// /// /// [HttpGet] public LayuiModel GetAlarmDetail(string fcode, string startTime, string endTime, string alarmCode, string alarmName, string filter, int page = 1, int limit = 10, string sort = "ID", string order = "DESC") { if (!string.IsNullOrEmpty(fcode)) filter += $" and a.MacCode = '{fcode}'"; if (!string.IsNullOrEmpty(startTime)) filter += $" and a.STime >'{startTime}'"; if (!string.IsNullOrEmpty(endTime)) filter += $" and a.STime<='{endTime}'"; if (!string.IsNullOrEmpty(alarmCode)) filter += $" and a.AlarmCode like '%{alarmCode}%'"; if (!string.IsNullOrEmpty(alarmName)) filter += $" and a.alarmDescribe like '%{alarmName}%'"; IEnumerable models = null; filter = filter ?? " "; string errorinfo = ""; using (IDatabase db = DbFactory.Base("eapslave")) { var dal = new MacStatusTotalDal(db); models = dal.GetAlarmDetail((page - 1) * limit + 1, limit, filter, sort, order, out int total, ref errorinfo); Parallel.ForEach(models, item => { item.FlenD = Convert.ToDouble(item.FLen); if (item.FLen == 0 && item.ETime.ToString("yyyy-MM-dd HH:mm:ss") != "0001-01-01 00:00:00") { item.FlenD = 0.01d; } }); var count = total;//dal.GetCount(filter); var responseData = new LayuiModel() { code = 0, count = count, data = models, msg = "" }; return responseData; } } /// /// 获取当天及前一天的白班和夜班的报警数量 /// /// /// /// [HttpGet] public EapResponse GetAlarmCounyByShift(DateTime date, string macCode) { var res = new EapResponse { Code = 1, Msg = string.Empty }; string errorinfo = string.Empty; using (IDatabase db = DbFactory.Base("eapslave")) { var dal = new MacStatusTotalDal(db); //db.BeginTrans(); IEnumerable alarms = dal.GetAlarmCountByShift(date, macCode); if (alarms == null) { res.Code = -1; res.Msg = errorinfo; return res; } res.Data = alarms; return res; } } /// /// 大连线看板数据 /// /// /// /// [HttpGet] public EapResponse GetMacDetail(string maccode, string date) { var res = new EapResponse { Code = 1, Msg = string.Empty }; string errorinfo = string.Empty; using (IDatabase db = DbFactory.Base("eapslave")) { var dal = new MacStatusTotalDal(db); var maccodes = maccode.Split(',').ToList(); //'DA00001', 'WB00001', 'WB00002', 'WB00003', 'WB00004', 'WB00005', 'LHA0001', 'AA00001' //List maccodes = new List(); //maccodes.Add("DA00001"); //maccodes.Add("WB00001"); //maccodes.Add("WB00002"); //maccodes.Add("WB00003"); //maccodes.Add("WB00004"); //maccodes.Add("WB00005"); //maccodes.Add("LHA0001"); //maccodes.Add("AA00001"); if (maccodes.Count == 0) { res.Code = -1; res.Msg = "机台不可为空"; return res; } //db.BeginTrans(); MacDto alarms = dal.GetDetail(maccodes, date); if (alarms == null) { res.Code = -1; res.Msg = errorinfo; return res; } res.Data = alarms; return res; } } } }