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