using AutoMapper;
using Cksoft.Data;
using Cksoft.Data.Repository;
using Cksoft.Unity;
using DllEapDal;
using DllEapDal.OFILM;
using DllEapEntity.Dtos;
using DllEapEntity.OFILM;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using System;
using System.IO;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ChartDto = DllEapEntity.OFILM.ChartDto;
using Series = DllEapEntity.OFILM.Series;
using DllEapCommon.NPOI;
namespace DllEapBll.OFILM
{
///
/// 机台数据
///
[Route("eap/api/[controller]/[action]")]
[ApiController]
[Authorize]
public class DataCenterController :ControllerBase
{
ILogger logger;
private IMapper _mapper;
public IConfiguration Configuration { get; set; }
public DataCenterController(ILogger logg, IConfiguration configuration, IMapper mapper)
{
Configuration = configuration;
this.logger = logg;
_mapper = mapper;
}
#region 设备及费用
[HttpGet]
public MacAndChargeDto GetMacCount()
{
using (IDatabase db = DbFactory.Base("ccmrpt"))
{
var dal = new DataCenterDal(db, logger);
var list = dal.GetMacCount();
//list.ToList().ForEach(item => { item.Name = item.Name.Replace("2", "二").Replace("3", "三"); });
//var response = new MacAndChargeDto { Data = list.ToList().OrderBy(item => item.Name).ToList() };
var response = new MacAndChargeDto();
response.Data.Add(new ChartEntity { Name = "未来城园区A1栋", Value = list.Where(item => item.Name.Contains("未来城")).FirstOrDefault().Value });
response.Data.Add(new ChartEntity { Name = "二号园区A栋", Value = list.Where(item => item.Name.Contains("2号")).FirstOrDefault().Value });
response.Data.Add(new ChartEntity { Name = "二号园区B栋", Value = list.Where(item => item.Name.Contains("3号")).FirstOrDefault().Value });
return response;
}
}
[HttpGet]
public MacAndChargeDto GetMacCharge()
{
using (IDatabase db = DbFactory.Base("ccmrpt"))
{
var dal = new DataCenterDal(db, logger);
var list = dal.GetMacChargeFirst();
//list.ToList().ForEach(item => { item.Name = item.Name.Replace("2", "二").Replace("3", "三"); });
list.ToList().ForEach(item => item.Value = Math.Abs(item.Value));
//var response = new MacAndChargeDto { Data = list.ToList() };
var response = new MacAndChargeDto();
response.Data.Add(new ChartEntity { Name = "未来城园区A1栋", Value = list.Where(item => item.Name.Contains("未来城")).FirstOrDefault() == null ? 0 : list.Where(item => item.Name.Contains("未来城")).FirstOrDefault().Value });
response.Data.Add(new ChartEntity { Name = "二号园区A栋", Value = list.Where(item => item.Name.Contains("2号")).FirstOrDefault() == null ? 0 : list.Where(item => item.Name.Contains("2号")).FirstOrDefault().Value });
response.Data.Add(new ChartEntity { Name = "二号园区B栋", Value = list.Where(item => item.Name.Contains("3号")).FirstOrDefault() == null ? 0 : list.Where(item => item.Name.Contains("3号")).FirstOrDefault().Value });
return response;
}
}
///
/// 设备查询
///
///
///
///
///
///
///
public LayuiModel GetMacList(int pageIndex = 1, int pageSize = 10, string filter = "", string sort = "FACTORY", string order = "ASC")
{
if (string.IsNullOrEmpty(sort) || sort.ToString().ToLower() == "null")
sort = "FACTORY";
if (order == "descend")
order = "desc";
else
{
order = "asc";
}
IEnumerable list = null;
filter = filter ?? " ";
using (IDatabase db = DbFactory.Base("ccmrpt"))
{
var dal = new DataCenterDal(db, logger);
int start = (pageIndex - 1) * pageSize + 1;
int end = start + pageSize;
string errorinfo = string.Empty;
int total = 0;
list = dal.GetMacList(start, end, filter, sort, order, out total, ref errorinfo);
var responseData = new LayuiModel()
{
code = 0,
count = total,
data = list,
msg = ""
};
return responseData;
}
}
///
/// 设备查询导出
///
///
///
[HttpPost]
public async Task ExportMacList(IDictionary filterInfo)
{
int pageIndex = 1; int pageSize = 100000; string filter =string.Empty, sort = string.Empty; string order = string.Empty;
if (filterInfo.ContainsKey("pageIndex"))
{
pageIndex = Convert.ToInt32(filterInfo["pageIndex"]);
}
if (filterInfo.ContainsKey("pageSize"))
{
pageSize = Convert.ToInt32(filterInfo["pageSize"]);
}
if (filterInfo.ContainsKey("filter"))
{
filter = filterInfo["filter"];
}
if (filterInfo.ContainsKey("sort"))
{
sort = filterInfo["sort"];
}
if (filterInfo.ContainsKey("order"))
{
order = filterInfo["order"];
}
var roles = GetMacList(pageIndex, pageSize, filter, null, null).data;
var list = _mapper.Map>(roles).ToList();
var book = DataExportHelper.EntityToExcel(list);
MemoryStream ms = new MemoryStream();
ms.Position = 0;
book.Write(ms);
ms.Dispose();
ms.Close();
await Task.CompletedTask;
return File(ms.ToArray(), "application/octet-stream");
}
///
/// /设备维修费用详情
///
///
///
///
///
///
///
public LayuiModel GetMacChargeList(int pageIndex = 1, int pageSize = 10, string filter = "", string sort = "FACTORY", string order = "ASC")
{
if (string.IsNullOrEmpty(sort) || sort.ToString().ToLower() == "null")
sort = "FACTORY";
if (order == "descend")
order = "desc";
else
{
order = "asc";
}
IEnumerable listUseCharge = null;//领用费用
IEnumerable listStockCharge = null;//库存费用
filter = filter ?? " ";
using (IDatabase db = DbFactory.Base("ccmrpt"))
{
var dal = new DataCenterDal(db, logger);
pageSize = 100;
int start = (pageIndex - 1) * pageSize + 1;
int end = start + pageSize;
string errorinfo = string.Empty;
int total = 0;
//listUseCharge = dal.GetMacChargeList(start, end, filter, sort, order, out total, 1, ref errorinfo);
//listStockCharge = dal.GetMacChargeList(start, end, filter, sort, order, out total, 2, ref errorinfo);
//foreach (var item in listStockCharge)
//{
// var macChargeEntity = listUseCharge.Where(c => c.Factory == item.Factory && c.Floor == item.Floor).FirstOrDefault();
// item.UseCharge = macChargeEntity != null ? macChargeEntity.StockCharge : 0;
// item.UseCharge = Math.Abs(item.UseCharge);
// item.TotalCharge = item.StockCharge + item.UseCharge;
//}
//listUseCharge = dal.GetMacChargeList(start, end, filter, sort, order, out total, 1, ref errorinfo);
listStockCharge = dal.GetMacChargeUserList(start, end, filter, sort, order, out total, 2, ref errorinfo);
var responseData = new LayuiModel()
{
code = 0,
count = total,
data = listStockCharge,
msg = ""
};
return responseData;
}
}
#endregion
#region 设备状态
public MacStatusDto GetMacStatusCount()
{
using (IDatabase db = DbFactory.Base("eapslave"))
{
var dal = new DataCenterDal(db, logger);
var list = dal.GetMacStatusList();
var response = new MacStatusDto();
response.RunData = new List
{
new ChartEntity{ Name="稼动",Value=list.Where(m => m.StatusID == 4).Count()},
new ChartEntity{ Name="其它",Value=list.Where(m => m.StatusID != 4).Count()},
};
response.WaitData = new List
{
new ChartEntity{ Name="待机",Value=list.Where(m => m.StatusID == 3).Count()},
new ChartEntity{ Name="其它",Value=list.Where(m => m.StatusID != 3).Count()},
};
response.AlarmData = new List
{
new ChartEntity{ Name="报警",Value=list.Where(m => m.StatusID == 6).Count()},
new ChartEntity{ Name="其它",Value=list.Where(m => m.StatusID != 6).Count()},
};
response.DisConnData = new List
{
new ChartEntity{ Name="离线",Value=list.Where(m => m.StatusID == 1).Count()},
new ChartEntity{ Name="其它",Value=list.Where(m => m.StatusID != 1).Count()},
};
// response.FactoryMacStatusData = new List();
var factoryGroups = list.GroupBy(c => new { c.FactoryId, c.Factory });
var facList = new List();
if (factoryGroups != null && factoryGroups.Count() > 0)
{
foreach (var fac in factoryGroups)
{
var facTemp = new FactoryMacStatus
{
Factory = fac.Key.Factory,
FactoryId = fac.Key.FactoryId,
Total = fac.Count()
};
var plantStatuses = new List();
var plantGroups = fac.GroupBy(c => new { c.PlantId, c.Plant });
if (plantGroups != null && plantGroups.Count() > 0)
{
foreach (var plant in plantGroups)
{
var temp = new PlantMacStatus
{
PlantId = plant.Key.PlantId,
Plant = plant.Key.Plant,
Total = plant.Count()
};
var statusList = new List();
var statusGroups = plant.GroupBy(c => new { c.StatusID, c.StatusName });
if (statusGroups != null && statusGroups.Count() > 0)
{
statusList = statusGroups.Select(c => new FactoryMacStatusEntity
{
StatusId = c.Key.StatusID,
StatusName = c.Key.StatusName,
Color = c.First().Color,
Count = c.Count(),
Rate = ((decimal)c.Count() / plant.Count() * 100).ToString("f2"),
}).OrderByDescending(c => c.Count).ToList();
}
temp.Data = statusList;
plantStatuses.Add(temp);
}
}
facTemp.PlantMacStatuses = plantStatuses;
facList.Add(facTemp);
}
}
response.FactoryMacStatusData = facList;
//var factoryList = list.Where(m => m.FactoryId == 8);
//var runList = factoryList.Where(m => m.StatusID == 4);
//var waitList = factoryList.Where(m => m.StatusID == 3);
//var alarmList = factoryList.Where(m => m.StatusID == 6);
//var disConnList = factoryList.Where(m => m.StatusID == 1);
//int otherCount = factoryList.Count() - runList.Count() - waitList.Count() - alarmList.Count() - disConnList.Count();
// var floorRunList = runList?.GroupBy(m => m.Floor).OrderByDescending(m => m.Count()).FirstOrDefault();
//response.FactoryMacStatusData.Add(new FactoryMacStatus
//{
// Factory = "未来城园区",
// FactoryId = 8,
// Total = factoryList.Count(),
// Data = new List
// {
// new FactoryMacStatusEntity{ StatusName="设备总数",Count=factoryList.Count() },
// new FactoryMacStatusEntity{ StatusName="稼动",Count=runList.Count(), Rate=(Convert.ToDouble(runList.Count()*100)/factoryList.Count()).ToString("f2")+"%" },
// new FactoryMacStatusEntity{ StatusName="待机",Count=waitList.Count() ,Rate=(Convert.ToDouble(waitList.Count()*100)/factoryList.Count()).ToString("f2")+"%"},
// new FactoryMacStatusEntity{ StatusName="报警",Count=alarmList.Count(), Rate=(Convert.ToDouble(alarmList.Count()*100)/factoryList.Count()).ToString("f2")+"%"},
// new FactoryMacStatusEntity{ StatusName="离线",Count=disConnList.Count(),Rate=(Convert.ToDouble(disConnList.Count()*100)/factoryList.Count()).ToString("f2")+"%" },
// new FactoryMacStatusEntity{ StatusName="其它",Count=otherCount,Rate=(Convert.ToDouble(otherCount*100)/factoryList.Count()).ToString("f2")+"%" }
// },
// WorkShopData = new WorkShop { Name = floorRunList?.Key, Count = floorRunList?.Count(), Rate = (Convert.ToDouble(floorRunList?.Count() * 100) / runList?.Count())?.ToString("f2") + "%" }
//});
//factoryList = list.Where(m => m.FactoryId == 6);
//runList = factoryList.Where(m => m.StatusID == 4);
//waitList = factoryList.Where(m => m.StatusID == 3);
//alarmList = factoryList.Where(m => m.StatusID == 6);
//disConnList = factoryList.Where(m => m.StatusID == 1);
//otherCount = factoryList.Count() - runList.Count() - waitList.Count() - alarmList.Count() - disConnList.Count();
//// floorRunList = runList?.GroupBy(m => m.Floor).OrderByDescending(m => m.Count()).FirstOrDefault();
//response.FactoryMacStatusData.Add(new FactoryMacStatus
//{
// Factory = "二号园区",
// FactoryId = 6,
// Total = factoryList.Count(),
// Data = new List
// {
// new FactoryMacStatusEntity{ StatusName="设备总数",Count=factoryList.Count() },
// new FactoryMacStatusEntity{ StatusName="稼动",Count=runList.Count(), Rate=(Convert.ToDouble(runList.Count()*100)/factoryList.Count()).ToString("f2")+"%" },
// new FactoryMacStatusEntity{ StatusName="待机",Count=waitList.Count() ,Rate=(Convert.ToDouble(waitList.Count()*100)/factoryList.Count()).ToString("f2")+"%"},
// new FactoryMacStatusEntity{ StatusName="报警",Count=alarmList.Count(), Rate=(Convert.ToDouble(alarmList.Count()*100)/factoryList.Count()).ToString("f2")+"%"},
// new FactoryMacStatusEntity{ StatusName="离线",Count=disConnList.Count(),Rate=(Convert.ToDouble(disConnList.Count()*100)/factoryList.Count()).ToString("f2")+"%" },
// new FactoryMacStatusEntity{ StatusName="其它",Count=otherCount,Rate=(Convert.ToDouble(otherCount*100)/factoryList.Count()).ToString("f2")+"%" }
// },
// WorkShopData = new WorkShop { Name = floorRunList?.Key, Count = floorRunList?.Count(), Rate = (Convert.ToDouble((floorRunList?.Count() ?? 0) * 100) / runList?.Count()).Value.ToString("f2") + "%" }
//});
//factoryList = list.Where(m => m.FactoryId == 122);
//runList = factoryList.Where(m => m.StatusID == 4);
//waitList = factoryList.Where(m => m.StatusID == 3);
//alarmList = factoryList.Where(m => m.StatusID == 6);
//disConnList = factoryList.Where(m => m.StatusID == 1);
//otherCount = factoryList.Count() - runList.Count() - waitList.Count() - alarmList.Count() - disConnList.Count();
//// floorRunList = runList?.GroupBy(m => m.Floor).OrderByDescending(m => m.Count())?.FirstOrDefault();
//double workShopRunRate = 0;
//if (runList != null && runList.Count() > 0)
//{
// workShopRunRate = Convert.ToDouble(((floorRunList == null ? 0 : floorRunList.Count()) * 100) / runList.Count());
//}
//response.FactoryMacStatusData.Add(new FactoryMacStatus
//{
// Factory = "三号园区",
// FactoryId = 122,
// Total = factoryList?.Count() == null ? 0 : factoryList.Count(),
// Data = new List
// {
// new FactoryMacStatusEntity{ StatusName="设备总数",Count=factoryList.Count() },
// new FactoryMacStatusEntity{ StatusName="稼动",Count=runList?.Count()==null?0:runList.Count(), Rate=(Convert.ToDouble((runList==null?0:runList.Count())*100)/factoryList.Count()).ToString("f2") + "%" },
// new FactoryMacStatusEntity { StatusName = "待机", Count = waitList.Count(), Rate = (Convert.ToDouble(waitList?.Count() * 100) / factoryList.Count()).ToString("f2") + "%" },
// new FactoryMacStatusEntity { StatusName = "报警", Count = alarmList.Count(), Rate = (Convert.ToDouble(alarmList?.Count() * 100) / factoryList.Count()).ToString("f2") + "%" },
// new FactoryMacStatusEntity { StatusName = "离线", Count = disConnList.Count(), Rate = (Convert.ToDouble(disConnList?.Count() * 100) / factoryList.Count()).ToString("f2") + "%" },
// new FactoryMacStatusEntity { StatusName = "其它", Count = otherCount, Rate = (Convert.ToDouble(otherCount * 100) / factoryList.Count()).ToString("f2") + "%" }
// },
// WorkShopData = new WorkShop { Name = floorRunList?.Key == null ? "暂无" : floorRunList.Key, Count = floorRunList?.Count() == null ? 0 : floorRunList.Count(), Rate = workShopRunRate.ToString("f2") + "%" }
//});
return response;
}
}
#endregion
#region 设备MTBA
public ChartDto GetMacMtbaCount()
{
using (IDatabase db = DbFactory.Base("eapslave"))
{
MacAndChargeDto resp = new MacAndChargeDto();
var dal = new DataCenterDal(db, logger);
var list = dal.GetMacMTBA().ToList();
var chartDto = new ChartDto();
List legendDatas = new List();
List factoryList = new List();
var groupfactory = list.GroupBy(c => new { c.FactoryId, c.Factory });
if (groupfactory != null && groupfactory.Count() > 0)
{
foreach (var item in groupfactory)
{
var groupplant = item.GroupBy(c => new { c.PlantId, c.Plant });
if (groupplant != null && groupplant.Count() > 0)
{
foreach (var plant in groupplant)
{
legendDatas.Add(plant.Key.Plant);
factoryList.Add(new ChartEntity { Name = item.Key.Factory + plant.Key.Plant, Value = plant.Key.PlantId });
}
}
}
}
foreach (var factory in factoryList)
{
List dataList = new List();
for (int i = 6; i >= 0; i--)
{
var dateFactoryList = list.Where(m => m.PlantId == factory.Value && m.StartTime == DateTime.Today.AddDays(-i)).ToList();
var run = dateFactoryList.Where(m => m.EventCode == "C00012").FirstOrDefault();
var alarm = dateFactoryList.Where(m => m.EventCode == "C00007").FirstOrDefault();
dataList.Add(Math.Round((run != null ? run.TimeSpan : 0) / (alarm != null ? alarm.Count : 1) / 60, 2));
}
chartDto.SeriesData.Add(new Series { Name = factory.Name, Type = "line", Data = dataList });
}
for (int i = 6; i >= 0; i--)
{
chartDto.XData.Add(DateTime.Today.AddDays(-i).ToString("MM-dd"));
}
//***********************************
//chartDto.LegendData = new List { "未来城园区", "二号园区", "三号园区" };
//List factoryList = new List
//{
// new ChartEntity { Name = "未来城园区", Value =8 },
// new ChartEntity { Name = "二号园区", Value =6 },
// new ChartEntity { Name = "三号园区", Value =122 }
//};
//foreach (var factory in factoryList)
//{
// List dataList = new List();
// for (int i = 6; i >= 0; i--)
// {
// var dateFactoryList = list.Where(m => m.FactoryId == factory.Value && m.StartTime == DateTime.Today.AddDays(-i)).ToList();
// var run = dateFactoryList.Where(m => m.EventCode == "C00012").FirstOrDefault();
// var alarm = dateFactoryList.Where(m => m.EventCode == "C00007").FirstOrDefault();
// dataList.Add(Math.Round((run != null ? run.TimeSpan : 0) / (alarm != null ? alarm.Count : 1) / 60, 2));
// }
// chartDto.SeriesData.Add(new Series { Name = factory.Name, Type = "line", Data = dataList });
//}
//for (int i = 6; i >= 0; i--)
//{
// chartDto.XData.Add(DateTime.Today.AddDays(-i).ToString("MM-dd"));
//}
//**************************************
//chartDto.SeriesData = new List();
//chartDto.SeriesData.Add(new Series { Name = "未来城园区", Type = "line", Data = new List { 60, 75, 87, 60, 75, 87, 90 } });
//chartDto.SeriesData.Add(new Series { Name = "二号园区", Type = "line", Data = new List { 75, 87, 99, 75, 87, 99, 88 } });
//chartDto.SeriesData.Add(new Series { Name = "三号园区", Type = "line", Data = new List { 78, 80, 90, 70, 80, 91, 81 } });
return chartDto;
}
}
///
/// 机台MTBA报表数据查询
///
///
///
///
///
///
///
///
///
///
///
public EapResponse GetMacMtbaList(DateTime startTime, DateTime endTime, string filter, string sub = "", string tablename = "", int pageIndex = 1, int pageSize = 20, string sort = "FactoryName", string order = "descend")
{
try
{
if (string.IsNullOrEmpty(sort))
{
sort = "FactoryName";
}
if (string.IsNullOrEmpty(order))
{
order = "descend";
}
if (order == "descend")
{
order = "desc";
}
else
{
order = "asc";
}
int start, end;
start = (pageIndex - 1) * pageSize;
end = start + pageSize;
string errorinfo = string.Empty;
int total = 0;
var res = new EapResponse() { Code = 1, Msg = string.Empty };
using (IDatabase db = DbFactory.Base("eapslave"))
{
int days = endTime.Subtract(startTime).Days;
var dal = new DataCenterDal(db, logger);
string subfilter = string.Empty;
var machineDal = new MachineDal(db);
//var macFilter = filter?.Replace("c.", "a.");
total = machineDal.GetCount(filter);
List mtbaDays = new List();
if (string.IsNullOrEmpty(tablename))
{
string mtbatemp = Configuration["mtbatemp"];
tablename = dal.CheckTable(startTime, endTime, filter, subfilter, sub, ref mtbaDays, mtbatemp);
logger.LogError(mtbaDays.ToJson());
}
else
{
mtbaDays = dal.GetMtbaDays(startTime, endTime);
}
//var macList = machineDal.Get(start, pageSize, order, sort, filter, errorinfo).ToList();
var macList = dal.Get(startTime, endTime, start, pageSize, order, sort, filter, sub, tablename, errorinfo).ToList();
var maccodes = macList.Select(c => c.FCode).ToList();
StringBuilder sb = new StringBuilder();
if (maccodes != null && maccodes.Count > 0)
{
sb.Append(" ( ");
for (int i = 0; i < maccodes.Count; i++)
{
//主要判断是否是最后一个条件
if (maccodes.Count - 1 == i)
{
sb.Append(" '" + maccodes[i] + "' ");
}
else
{
sb.Append(" '" + maccodes[i] + "'" + " ,");
}
}
sb.Append(" )");
subfilter = $" and MacCode in {sb.ToString()}";
}
var mtbaList = dal.GetMacMTBADetail(tablename).ToList();
subfilter = "";
//var mtbaListTotal = dal.GetMacMTBADetailTotal(startTime, endTime, filter, subfilter, sub).ToList();
var mtbaListTotal = dal.GetMacMTBADetailTotal(tablename, subfilter).ToList();
AntdComplexTableDto data = new AntdComplexTableDto();
DataTable dt = new DataTable();
dt.Columns.Add("园区");
dt.Columns.Add("厂房");
dt.Columns.Add("楼层");
dt.Columns.Add("设备类型");
dt.Columns.Add("设备名称");
dt.Columns.Add("设备编号");
dt.Columns.Add("机台编号");
//dt.Columns.Add("排名");
dt.Columns.Add("故障");
dt.Columns.Add("非故障");
dt.Columns.Add("汇总");
foreach (var item in mtbaDays)
{
var date = item.DayTime.ToString("yyyy-MM-dd");// startTime.AddDays(i).ToString("yyyy-MM-dd");
dt.Columns.Add(date);
dt.Columns[date].DataType = typeof(decimal);
}
foreach (var mac in macList)
{
DataRow row = dt.NewRow();
row["园区"] = mac.FactoryName;
row["厂房"] = mac.PlantName;
row["楼层"] = mac.FloorName;
row["设备类型"] = mac.MModeCode;
row["设备名称"] = mac.FName;
row["设备编号"] = mac.FCode;
row["机台编号"] = mac.macnumber;
//row["排名"] = "";
var macMtbaList = mtbaList?.Where(m => m.MacCode == mac.FCode).ToList();
var runList = macMtbaList.Any() ? macMtbaList.Where(m => m.EventCode == "C00012").ToList() : null;
var alarmList = macMtbaList.Any() ? macMtbaList.Where(m => m.EventCode == "C00007").ToList() : null;
var runTimeSpan = runList != null && runList.Any() ? runList.Sum(m => m.TimeSpan) : 0;
var alarmCount = alarmList != null && alarmList.Any() ? alarmList.Sum(m => m.Count) : 1;
var alarmCountOne = alarmList != null && alarmList.Any() ? alarmList.Sum(m => m.CountOne) : 1;
var alarmCountTwo = alarmList != null && alarmList.Any() ? alarmList.Sum(m => m.CountTwo) : 1;
alarmCount = alarmCount == 0 ? 1 : alarmCount;
alarmCountOne = alarmCountOne == 0 ? 1 : alarmCountOne;
alarmCountTwo = alarmCountTwo == 0 ? 1 : alarmCountTwo;
row["汇总"] = (runTimeSpan / alarmCount / 60).ToString("f2");
if (string.IsNullOrEmpty(sub) || sub.Contains("1"))
{
row["故障"] = alarmCountOne == 0 ? (runTimeSpan / 60).ToString("f2") : (runTimeSpan / alarmCountOne / 60).ToString("f2");
}
else
{
row["故障"] = "0.00";
}
if (string.IsNullOrEmpty(sub) || sub.Contains("2"))
{
row["非故障"] = alarmCountTwo == 0 ? (runTimeSpan / 60).ToString("f2") : (runTimeSpan / alarmCountTwo / 60).ToString("f2");
}
else
{
row["非故障"] = "0.00";
}
//for (int i = 0; i <= mtbaDays.Count(); i++)
//{
foreach (var item in mtbaDays)
{
var date = item.DayTime.ToString("yyyy-MM-dd");//startTime.AddDays(i).ToString("yyyy-MM-dd");
var dayRunList = runList != null ? runList.Where(m => m.StartTime == Convert.ToDateTime(date)).ToList() : null;
var dayAlarmList = alarmList != null ? alarmList.Where(m => m.StartTime == Convert.ToDateTime(date)).ToList() : null;
var dayRunTimeSpan = dayRunList != null && dayRunList.Any() ? dayRunList.Sum(m => m.TimeSpan) : 0;
var dayAlarmCount = dayAlarmList != null && dayAlarmList.Any() ? dayAlarmList.Sum(m => m.Count) : 1;
row[date] = (dayRunTimeSpan / dayAlarmCount / 60).ToString("f2");
}
dt.Rows.Add(row);
}
DataTable dtNew = dt.Clone();
dtNew.Columns["汇总"].DataType = typeof(decimal);//指定Age为Int类型
dtNew.Columns["故障"].DataType = typeof(decimal);
dtNew.Columns["非故障"].DataType = typeof(decimal);
foreach (DataRow s in dt.Rows)
{
dtNew.ImportRow(s);//导入旧数据
}
dtNew.DefaultView.Sort = "汇总 desc";
dtNew = dtNew.DefaultView.ToTable();
DataTable dtTotal = new DataTable();
var header = new List();
if (dt != null && dt.Columns.Count > 0)
{
foreach (DataColumn item in dt.Columns)
{
header.Add(new AntdColumn { ColName = item.ColumnName });
}
#region 排序
//dt.DefaultView.Sort = " 汇总 desc";
//dt = dt.DefaultView.ToTable();
#endregion
#region 汇总数据
dtTotal.Columns.Add("汇总");
dtTotal.Columns["汇总"].DataType = typeof(decimal);
//for (int i = 0; i <= days; i++)
//{
// var date = startTime.AddDays(i).ToString("yyyy-MM-dd");
// dtTotal.Columns.Add(date);
//}
foreach (var item in mtbaDays)
{
var date = item.DayTime.ToString("yyyy-MM-dd");// startTime.AddDays(i).ToString("yyyy-MM-dd");
dtTotal.Columns.Add(date);
dtTotal.Columns[date].DataType = typeof(decimal);
}
var runList = mtbaListTotal.Any() ? mtbaListTotal.Where(m => m.EventCode == "C00012").ToList() : null;
var alarmList = mtbaListTotal.Any() ? mtbaListTotal.Where(m => m.EventCode == "C00007").ToList() : null;
var runTimeSpan = runList != null && runList.Any() ? runList.Sum(m => m.TimeSpan) : 0;
var alarmCount = alarmList != null && alarmList.Any() ? alarmList.Sum(m => m.Count) : 1;
alarmCount = alarmCount == 0 ? 1 : alarmCount;
DataRow row = dtTotal.NewRow();
row["汇总"] = (runTimeSpan / alarmCount / 60).ToString("f2");
//for (int i = 0; i <= days; i++)
//{
foreach (var item in mtbaDays)
{
var date = item.DayTime.ToString("yyyy-MM-dd");
var dayRunList = runList != null ? runList.Where(m => m.StartTime == Convert.ToDateTime(date)).ToList() : null;
var dayAlarmList = alarmList != null ? alarmList.Where(m => m.StartTime == Convert.ToDateTime(date)).ToList() : null;
var dayRunTimeSpan = dayRunList != null && dayRunList.Any() ? dayRunList.Sum(m => m.TimeSpan) : 0;
var dayAlarmCount = dayAlarmList != null && dayAlarmList.Any() ? dayAlarmList.Sum(m => m.Count) : 1;
row[date] = (dayRunTimeSpan / dayAlarmCount / 60).ToString("f2");
}
dtTotal.Rows.Add(row);
#endregion
}
data.Columns = header;
data.Datas = dtNew;
data.TotalData = dtTotal;
res.Data = data;
res.Total = total;
res.Msg = tablename;
return res;
}
}
catch (Exception ex)
{
return null;
}
}
[HttpPost]
public async Task ExportMacMtbaList(IDictionary filterInfo)
{
DateTime startTime=Convert.ToDateTime(DateTime.Now.AddDays(-6).ToString("yyyy-MM-dd 00:00:00")), endTime=DateTime.Now;
string filter=string.Empty, sub = "", tablename = "",sort = "FactoryName", order = "descend";
int pageIndex = 1, pageSize = 100000;
if (filterInfo.ContainsKey("filter"))
{
filter = filterInfo["filter"];
}
if (filterInfo.ContainsKey("sub"))
{
sub = filterInfo["sub"];
}
if (filterInfo.ContainsKey("tablename"))
{
tablename = filterInfo["tablename"];
}
if (filterInfo.ContainsKey("sort"))
{
sort = filterInfo["sort"];
}
if (filterInfo.ContainsKey("order"))
{
order = filterInfo["order"];
}
if (filterInfo.ContainsKey("startTime"))
{
startTime =Convert.ToDateTime( filterInfo["startTime"]);
}
if (filterInfo.ContainsKey("endTime"))
{
endTime =Convert.ToDateTime( filterInfo["endTime"]);
}
if (filterInfo.ContainsKey("pageIndex"))
{
pageIndex = Convert.ToInt32(filterInfo["pageIndex"]);
}
if (filterInfo.ContainsKey("pageSize"))
{
pageSize = Convert.ToInt32(filterInfo["pageSize"]);
}
var data= GetMacMtbaList(startTime, endTime, filter, sub, tablename, pageIndex, pageSize, sort, order);
AntdComplexTableDto roles = (AntdComplexTableDto)data.Data;
int plens = data.Total;
var book = DataExportHelper.MtbaToExcel(roles, plens);
MemoryStream ms = new MemoryStream();
ms.Position = 0;
book.Write(ms);
ms.Dispose();
ms.Close();
await Task.CompletedTask;
return File(ms.ToArray(), "application/octet-stream");
}
#endregion
#region 设备报警
public MacAndChargeDto GetMacAlarmCount()
{
using (IDatabase db = DbFactory.Base("eapslave"))
{
MacAndChargeDto resp = new MacAndChargeDto();
var dal = new DataCenterDal(db, logger);
resp.Data = dal.GetMacAlarm().ToList();
return resp;
}
}
#endregion
#region 设备月别总费用 首页
public ChartDto GetMacTotalCharge()
{
string filter = "";
DateTime dt = DateTime.Now.AddDays(1 - DateTime.Now.Day).Date;//当月第一天0时0分0秒:
string end = dt.ToString("yyyy-MM-dd 00:00:00");
string start = dt.AddMonths(-1).ToString("yyyy-MM-dd 00:00:00");
filter = filter + $"AND CREATED between to_date('{start}','yyyy-mm-dd hh24:mi:ss') and to_date('{end}','yyyy-mm-dd hh24:mi:ss')";
using (IDatabase db = DbFactory.Base("ccmrpt"))
{
var dal = new DataCenterDal(db, logger);
var list = dal.GetMacChargeNew(filter).Where(l => l.Name != null).OrderBy(l => l.Name);
list.ToList().ForEach(item => { item.Value = Math.Abs(item.Value); });
List orderList = new List();
//orderList = list.ToList();
orderList.Add(new ChartEntity { Name = "设备一课", Value = list.Where(item => item.Name.Contains("设备一课")).FirstOrDefault() == null ? 0 : list.Where(item => item.Name.Contains("设备一课")).FirstOrDefault().Value });
orderList.Add(new ChartEntity { Name = "设备二课", Value = list.Where(item => item.Name.Contains("设备二课")).FirstOrDefault() == null ? 0 : list.Where(item => item.Name.Contains("设备二课")).FirstOrDefault().Value });
orderList.Add(new ChartEntity { Name = "设备三课", Value = list.Where(item => item.Name.Contains("设备三课")).FirstOrDefault() == null ? 0 : list.Where(item => item.Name.Contains("设备三课")).FirstOrDefault().Value });
orderList.Add(new ChartEntity { Name = "设备四课", Value = list.Where(item => item.Name.Contains("设备四课")).FirstOrDefault() == null ? 0 : list.Where(item => item.Name.Contains("设备四课")).FirstOrDefault().Value });
orderList.Add(new ChartEntity { Name = "设备五课", Value = list.Where(item => item.Name.Contains("设备五课")).FirstOrDefault() == null ? 0 : list.Where(item => item.Name.Contains("设备五课")).FirstOrDefault().Value });
orderList.Add(new ChartEntity { Name = "中央仓库", Value = (list.Where(item => item.Name.Contains("中央仓库"))?.FirstOrDefault() == null ? 0 : list.Where(item => item.Name.Contains("中央仓库")).FirstOrDefault().Value) });
var chartDto = new ChartDto();
chartDto.LegendData = new List { "消耗费用", "库存费用" };
//chartDto.XData = orderList.Select(m => m.Name).ToList();
chartDto.SeriesData = new List();
chartDto.SeriesData.Add(new Series { Name = "消耗费用", Visible = false, Type = "column", Data = orderList.Select(m => Math.Round(m.Value / 10000, 2)).ToList() });
filter = "";
filter = filter + $" AND a.CREATED < to_date('{end}','yyyy-mm-dd hh24:mi:ss')";
var chargeList = dal.GetMacChargeStock(filter).Where(l => l.Name != null).OrderBy(l => l.Name);
chartDto.XData = new List() { "设备一课", "设备二课", "设备三课", "设备四课", "设备五课", "中央仓库" };//orderList.Select(m => m.Name).ToList().Union(chargeList.Select(m => m.Name).ToList()).ToList();
//chartDto.XData.Sort();
// chartDto.XData.Sort((x, y) => x.CompareTo(y));
orderList = new List();
orderList.Add(new ChartEntity { Name = "设备一课", Value = chargeList.Where(item => item.Name.Contains("设备一课")).FirstOrDefault() == null ? 0 : chargeList.Where(item => item.Name.Contains("设备一课")).FirstOrDefault().Value });
orderList.Add(new ChartEntity { Name = "设备二课", Value = chargeList.Where(item => item.Name.Contains("设备二课")).FirstOrDefault() == null ? 0 : chargeList.Where(item => item.Name.Contains("设备二课")).FirstOrDefault().Value });
orderList.Add(new ChartEntity { Name = "设备三课", Value = chargeList.Where(item => item.Name.Contains("设备三课")).FirstOrDefault() == null ? 0 : chargeList.Where(item => item.Name.Contains("设备三课")).FirstOrDefault().Value });
orderList.Add(new ChartEntity { Name = "设备四课", Value = chargeList.Where(item => item.Name.Contains("设备四课")).FirstOrDefault() == null ? 0 : chargeList.Where(item => item.Name.Contains("设备四课")).FirstOrDefault().Value });
orderList.Add(new ChartEntity { Name = "设备五课", Value = chargeList.Where(item => item.Name.Contains("设备五课")).FirstOrDefault() == null ? 0 : chargeList.Where(item => item.Name.Contains("设备五课")).FirstOrDefault().Value });
orderList.Add(new ChartEntity { Name = "中央仓库", Value = (chargeList.Where(item => item.Name.Contains("中央仓库"))?.FirstOrDefault() == null ? 0 : chargeList.Where(item => item.Name.Contains("中央仓库")).FirstOrDefault().Value) });
chartDto.SeriesData.Add(new Series { Name = "库存费用", YAxis = 1, Type = "column", Data = orderList.Select(m => Math.Round(m.Value / 10000, 2)).ToList() });
return chartDto;
}
}
public ChartDto GetMacTotalChargeList(string filter, string sublter)
{
using (IDatabase db = DbFactory.Base("ccmrpt"))
{
var dal = new DataCenterDal(db, logger);
var list = dal.GetMacChargeNew(filter);
list.ToList().ForEach(item => item.Value = Math.Abs(item.Value));
List orderList = new List();
orderList = list.ToList();
var chartDto = new ChartDto();
chartDto.LegendData = new List { "消耗费用", "库存费用" };
//chartDto.XData = orderList.Select(m => m.Name).ToList();
chartDto.SeriesData = new List();
chartDto.SeriesData.Add(new Series { Name = "消耗费用", Type = "column", Data = orderList.Select(m => Math.Round(m.Value / 10000, 2)).ToList() });
var chargeList = dal.GetMacChargeStock(sublter);
orderList = new List();
orderList = chargeList.Where(l => l.Name != null).ToList();
chartDto.XData = orderList.Select(m => m.Name).ToList().Union(chargeList.Select(m => m.Name).ToList()).ToList();
chartDto.SeriesData.Add(new Series { Name = "库存费用", Type = "column", Data = orderList.Select(m => Math.Round(m.Value / 10000, 2)).ToList() });
return chartDto;
}
}
///
/// 领用费用
///
///
///
///
public ChartDto GetMacTotalChargeListUser(string starttime, string endtime)
{
string filter = "";
starttime = Convert.ToDateTime(starttime).ToString("yyyy-MM") + " 01";//当月第一天0时0分0秒:
endtime = Convert.ToDateTime(endtime).AddDays(1 - DateTime.Now.Day).Date.ToString("yyyy-MM-dd");//当月第一天0时0分0秒:
filter = $@" AND t.CREATED >= to_date( '{starttime}', 'yyyy-mm-dd' ) AND t.CREATED < to_date( '{endtime}', 'yyyy-mm-dd hh24:mi:ss' ) ";
using (IDatabase db = DbFactory.Base("ccmrpt"))
{
var dal = new DataCenterDal(db, logger);
var chartDto = new ChartDto();
var chargeList = dal.GetMacChargeUser(filter);
var orderList = new List();
orderList = chargeList.Where(l => l.Name != null).ToList();
chartDto.XData = orderList.Where((x, i) => orderList.FindIndex(n => (n.Mon == x.Mon)) == i).Select(m => m.Mon).ToList();
List xdata = new List();
chartDto.XData.ForEach((item) =>
{
xdata.Add(Convert.ToDateTime(item).ToString("yyyy-MM"));
});
chartDto.XData = xdata;
chartDto.XData.Sort();
var list = orderList.Where((x, i) => orderList.FindIndex(n => (n.Name == x.Name)) == i).ToList();
//chartDto.SeriesData.Add(new Series { Name = "库存费用", Type = "line", Data = orderList.Select(m => Math.Round(m.Value / 10000, 2)).ToList() });
List ls = new List() { "设备一课", "设备二课", "设备三课", "设备四课", "设备五课", "中央仓库" };
foreach (var item in ls)
{
chartDto.SeriesData.Add(new Series { Name = item, Data = orderList.Where(l => l.Name == item).Select(m => Math.Round(m.Value / 10000, 2)).ToList() });
}
//foreach (var item in list)8
// chartDto.SeriesData.Add(new Series { Name = item.Name, Data = orderList.Where(l => l.Name == item.Name).Select(m => Math.Round(m.Value / 10000, 2)).ToList() });
//}
return chartDto;
}
}
///
/// 库存费用推移图
///
///
///
///
public ChartDto GetMacTotalChargeListTwo(string starttime, string endtime)
{
string filter = "";
starttime = Convert.ToDateTime(starttime).ToString("yyyy-MM") + " 01";//当月第一天0时0分0秒:
endtime = Convert.ToDateTime(endtime).AddDays(1 - DateTime.Now.Day).Date.ToString("yyyy-MM-dd");//当月第一天0时0分0秒:
filter = $@" and mon>=to_date('{starttime}' , 'yyyy-mm-dd hh24:mi:ss')
and mon();
orderList = chargeList.Where(l => l.Name != null).OrderBy(c => c.Mon).ToList();
chartDto.XData = orderList.Where((x, i) => orderList.FindIndex(n => (n.Mon == x.Mon)) == i).OrderBy(l => l.Mon).Select(m => m.Mon).ToList();
List xdata = new List();
chartDto.XData.ForEach((item) =>
{
xdata.Add(Convert.ToDateTime(item).ToString("yyyy-MM"));
});
chartDto.XData = xdata;
chartDto.XData.Sort();
var list = orderList.Where((x, i) => orderList.FindIndex(n => (n.Name == x.Name)) == i).ToList();
//chartDto.SeriesData.Add(new Series { Name = "库存费用", Type = "line", Data = orderList.Select(m => Math.Round(m.Value / 10000, 2)).ToList() });
List ls = new List() { "设备一课", "设备二课", "设备三课", "设备四课", "设备五课", "中央仓库" };
foreach (var item in ls)
{
chartDto.SeriesData.Add(new Series { Name = item, Data = orderList.Where(l => l.Name == item).OrderBy(l => l.Mon).Select(m => Math.Round(m.Value / 10000, 2)).ToList() });
}
//foreach (var item in list)
//{
// chartDto.SeriesData.Add(new Series { Name = item.Name, Data = orderList.Where(l => l.Name == item.Name).Select(m => Math.Round(m.Value / 10000, 2)).ToList() });
//}
return chartDto;
}
}
#endregion
#region 设备良率
///
/// 一次良率
///
///
[HttpGet]
public ChartDto GetMacGoodRate()
{
var chartDto = new ChartDto();
chartDto.LegendData = new List { "未来城A1栋3楼EOL一次良率", "未来城A1栋1楼EOL一次良率" };
chartDto.XData = new List();
List dd = new List();
List dts = new List();
for (int i = 7; i >= 1; i--)
{
chartDto.XData.Add(DateTime.Today.AddDays(-i).ToString("MM-dd"));
dts.Add(DateTime.Today.AddDays(-i).ToString("yyyy-MM-dd"));
}
using (IDatabase db = DbFactory.Base("ees"))
{
DateTime dt = DateTime.Now;
var dal = new DataCenterDal(db, logger);
IEnumerable mgrt = dal.GetMacGoodRate(dt.AddDays(-8).ToString("yyyy-MM-dd"), dt.AddDays(-1).ToString("yyyy-MM-dd"));
//IEnumerable shoujian = dal.GetShouJian(dt.AddDays(-8).ToString("yyyy-MM-dd"), dt.AddDays(-1).ToString("yyyy-MM-dd"));
//chartDto.XData = new List { "未来城园区", "二号园区","三号园区" };
chartDto.SeriesData = new List();
#region
/*var sjgroup = shoujian?.GroupBy(c => c.Factroy);
if (sjgroup != null)
{
foreach (var item in sjgroup)
{
List des = new List();
foreach (var it in dts)
{
decimal rate = shoujian.Where(c => c.Factroy == item.Key && c.PDate == it).Select(l => Convert.ToDecimal(l.Rate)).FirstOrDefault();
des.Add(rate);
}
chartDto.SeriesData.Add(new Series { Name = item.Key + "COB首件通过率", Type = "column", Data = des });
//shoujian.Where(c => c.Factroy == item.Key).Select(l => Convert.ToDecimal(l.Rate)).ToList() });
}
}*/
#endregion
var group = mgrt?.GroupBy(c => c.Floor);
if (group != null)
{
foreach (var item in group)
{
if (item.Key == "1楼EOL")
continue;
List des = new List();
foreach (var it in dts)
{
decimal rate = mgrt.Where(c => c.Floor == item.Key && c.PDate == it).Select(l => Convert.ToDecimal(l.Rate)).FirstOrDefault();
des.Add(rate);
}
chartDto.SeriesData.Add(new Series { Name = "未来城园区A1栋" + item.Key + "一次良率", YAxis = 0, Type = "line", Data = des });
//mgrt.Where(c=>c.Factroy==item.Key).Select(l=>Convert.ToDecimal( l.Rate)).ToList()
}
}
//chartDto.SeriesData.Add(new Series { Name = "未来城园区COB首件通过率", Type = "column", Data = new List { 60, 75, 87, 60, 75, 87, 90 } });
//chartDto.SeriesData.Add(new Series { Name = "二号园区COB首件通过率", Type = "column", Data = new List { 75, 87, 99, 75, 87, 99, 88 } });
//chartDto.SeriesData.Add(new Series { Name = "三号园区COB首件通过率", Type = "column", Data = new List { 75, 87, 99, 75, 87, 99, 88 } });
//chartDto.SeriesData.Add(new Series { Name = "未来城园区EOL一次良率", Type = "line", Data = new List { 70, 37, 59, 65, 77, 89, 98 } });
//chartDto.SeriesData.Add(new Series { Name = "二号园区EOL一次良率", Type = "line", Data = new List { 78, 80, 90, 70, 80, 91, 81 } });
//chartDto.SeriesData.Add(new Series { Name = "三号园区EOL一次良率", Type = "line", Data = new List { 65, 57, 69, 75, 87, 99, 88 } });
}
return chartDto;
}
///
/// 首件合格率
///
///
[HttpGet]
public ChartDto GetShouJianRate()
{
var chartDto = new ChartDto();
chartDto.LegendData = new List { "未来城园区A1-3FCOB首件通过率", "未来城园区A1-1/2FCOB首件通过率" };
chartDto.XData = new List();
List dd = new List();
List dts = new List();
for (int i = 7; i >= 1; i--)
{
chartDto.XData.Add(DateTime.Today.AddDays(-i).ToString("MM-dd"));
dts.Add(DateTime.Today.AddDays(-i).ToString("yyyy-MM-dd"));
}
using (IDatabase db = DbFactory.Base("ccmrpt"))
{
DateTime dt = DateTime.Now;
var dal = new DataCenterDal(db, logger);
IEnumerable shoujian = dal.GetShouJian(dt.AddDays(-8).ToString("yyyy-MM-dd"), dt.AddDays(-1).ToString("yyyy-MM-dd"));
//chartDto.XData = new List { "未来城园区", "二号园区","三号园区" };
chartDto.SeriesData = new List();
var sjgroup = shoujian?.GroupBy(c => c.Factroy);
if (sjgroup != null)
{
foreach (var item in sjgroup)
{
List des = new List();
foreach (var it in dts)
{
decimal rate = shoujian.Where(c => c.Factroy == item.Key && c.PDate == it).Select(l => Convert.ToDecimal(l.Rate)).FirstOrDefault();
des.Add(rate);
}
chartDto.SeriesData.Add(new Series { Name = item.Key + "COB首件通过率", Type = "line", Data = des });
//shoujian.Where(c => c.Factroy == item.Key).Select(l => Convert.ToDecimal(l.Rate)).ToList() });
}
}
}
return chartDto;
}
///
/// 一次良率详情
///
///
///
///
///
///
///
///
///
public EapResponse GetMacGoodRateDetail(string starttime, string endtime, string filter, int pageIndex = 1, int pageSize = 20, string sort = "Factroy", string order = "descend")
{
if (string.IsNullOrEmpty(sort))
{
sort = "Factroy";
}
if (string.IsNullOrEmpty(order))
{
order = "descend";
}
if (order == "descend")
{
order = "desc";
}
else
{
order = "asc";
}
int start, end;
start = (pageIndex - 1) * pageSize + 1;
end = start + pageSize;
string errorinfo = string.Empty;
int total = 0;
var res = new EapResponse() { Code = 1, Msg = string.Empty };
using (IDatabase db = DbFactory.Base("ees"))
{
var dal = new DataCenterDal(db, logger);
total = dal.GetMacGoodDetailCount(filter, starttime, endtime);
var Equipmentmodels = dal.GetMacGoodDetail(starttime, endtime, start, end, order, sort, filter);//获取机型,园区,楼层
AntdComplexTableDto data = new AntdComplexTableDto();
DataTable dt = new DataTable();
dt = Equipmentmodels;
DataTable dtTotal = new DataTable();
var header = new List();
if (dt != null && dt.Columns.Count > 0)
{
foreach (DataColumn item in dt.Columns)
{
if (item.ColumnName != "ROWNO" && item.ColumnName != "FactoryRowSpan" && item.ColumnName != "PartNameRowSpan" && item.ColumnName != "PlantRowSpan" && item.ColumnName != "FloorRowSpan")
header.Add(new AntdColumn { ColName = item.ColumnName });
}
}
data.Columns = header;
data.Datas = dt;
data.TotalData = dtTotal;
res.Data = data;
res.Total = total;
return res;
}
}
///
/// 首件详情
///
///
///
///
///
///
public LayuiModel GetShouJianRateDatil(string factory, string shift, DateTime? start, DateTime? end)
{
using (IDatabase db = DbFactory.Base("ccmrpt"))
{
ChartDto dto = new ChartDto();
if (!start.HasValue)
start = DateTime.Now.AddDays(-1);
if (!end.HasValue)
end = DateTime.Now.AddDays(-1);
for (var i = start.Value; i <= end.Value; i = i.AddDays(1))
{
dto.XData.Add(i.ToString("yyyy-MM-dd"));
}
var dal = new DataCenterDal(db);
var d = start.Value.AddDays(1) < end.Value ? start.Value.AddDays(1).ToString("yyyy-MM-dd") : end.Value.ToString("yyyy-MM-dd");
var data = dal.GetShouJianDatil(factory, shift, start, end);
//var data2 = dal.GetShouJianCharDto(factory, shift, start, endtime);
var sjgroup = data?.GroupBy(c => c.Factroy);
if (sjgroup != null)
{
foreach (var item in sjgroup)
{
if (item.Key != "total")
{
List des = new List();
foreach (var it in dto.XData)
{
decimal rate = data.Where(c => c.Factroy == item.Key && c.PDate == it).Select(l => Convert.ToDecimal(l.Rate)).FirstOrDefault();
des.Add(rate);
}
dto.SeriesData.Add(new Series { Name = item.Key + "COB首件通过率", Type = "line", Data = des });
}
//shoujian.Where(c => c.Factroy == item.Key).Select(l => Convert.ToDecimal(l.Rate)).ToList() });
}
}
return new LayuiModel()
{
code = 1,
data = data,
extraObject = dto
};
}
}
public IEnumerable> GetFactory()
{
using (IDatabase db = DbFactory.Base("ccmrpt"))
{
var dal = new DataCenterDal(db);
var data = dal.GetFactory();
return data;
}
}
///
/// 园区
///
///
///
public IEnumerable> GetMultipalFactroySelects(string filter)
{
using (IDatabase db = DbFactory.Base("ees"))
{
var dal = new DataCenterDal(db, logger);
return dal.GetMultipleFactorySelects(filter).OrderBy(c => c.Label);
}
}
///
/// 厂房
///
///
///
public IEnumerable> GetMultipalPlantSelects(string filter)
{
using (IDatabase db = DbFactory.Base("ees"))
{
var dal = new DataCenterDal(db, logger);
return dal.GetMultiplePlantSelects(filter).OrderBy(c => c.Label);
}
}
///
/// 楼层
///
///
///
[HttpGet]
public IEnumerable> GetMultipalFloorSelects(string filter)
{
using (IDatabase db = DbFactory.Base("ees"))
{
var dal = new DataCenterDal(db, logger);
return dal.GetMultipleFloorSelects(filter).OrderBy(c => c.Label);
}
}
///
/// 机种
///
///
///
[HttpGet]
public IEnumerable> GetMultiplePartNameSelects(string filter)
{
using (IDatabase db = DbFactory.Base("ees"))
{
var dal = new DataCenterDal(db, logger);
return dal.GetMultiplePartNameSelects(filter).OrderBy(c => c.Label);
}
}
///
/// 工序
///
///
///
[HttpGet]
public IEnumerable> GetMultipleStepNameSelects(string filter)
{
using (IDatabase db = DbFactory.Base("ees"))
{
var dal = new DataCenterDal(db, logger);
return dal.GetMultipleStepNameSelects(filter).OrderBy(c => c.Label);
}
}
#endregion
#region 保养计划达成率
[HttpGet]
public ChartDto GetMacTakecareRate()
{
var chartDto = new ChartDto();
chartDto.LegendData = new List { "已保养", "全部", "达成率" };
chartDto.XData = new List { "未来城1楼COB", "未来城3楼COB", "未来城2楼EOL", "未来城3楼EOL", "二号园区1楼COB", "三号园区2楼COB" };
chartDto.SeriesData = new List();
chartDto.SeriesData.Add(new Series { Name = "已保养", Type = "column", Data = new List { 50, 55, 42, 45, 68, 100 } });
chartDto.SeriesData.Add(new Series { Name = "全部", Type = "column", Data = new List { 67, 65, 56, 50, 90, 100 } });
chartDto.SeriesData.Add(new Series { Name = "达成率", Type = "column", Data = new List { 75, 85, 75, 90, 76, 100 } });
return chartDto;
}
#endregion
#region 查询车间
[HttpGet]
public IEnumerable