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 GetLocationSelect(string factory) { using (IDatabase db = DbFactory.Base("ccmrpt")) { var dal = new DataCenterDal(db, logger); return dal.GetLocationSelect(factory).Select(c => new { Label = c.Value, Value = c.Value }); } } [HttpGet] public IEnumerable GetWarehouseSelect(string factory) { using (IDatabase db = DbFactory.Base("ccmrpt")) { var dal = new DataCenterDal(db, logger); return dal.GetWarehouseSelect(factory).Select(c => new { Label = c.Value, Value = c.Value }); } } #endregion /// /// ME出勤率 /// /// [HttpGet] public ChartDto GetMEAttendance() { using(IDatabase db = DbFactory.Base("ofilmEmp")) { ChartDto dto = new ChartDto(); var dal = new DataCenterDal(db); var time = DateTime.Now.AddDays(-1); dto.LegendData = new List { "系统人力", "出勤人力", "出勤率" }; var data = dal.GetMEAttendance(time); List y1 = new List(); List y2 = new List(); List y3 = new List(); foreach (var item in data) { dto.XData.Add(item.DeptName); y1.Add(Convert.ToDecimal(item.OnWorkNum)); y2.Add(Convert.ToDecimal(item.OnJobNum)); y3.Add(Convert.ToDecimal(item.Rate)); } dto.SeriesData = new List(); dto.SeriesData.Add(new Series { Name = "系统人力", Type = "column", Data = y1 }); dto.SeriesData.Add(new Series { Name = "出勤人力", Type = "column", Data = y2 }); dto.SeriesData.Add(new Series { Name = "出勤率", Type = "line", Data = y3 }); return dto; } } /// /// ME出勤率详情 /// /// /// /// /// [HttpGet] public LayuiModel GetMEAttendanceDatil(string deptname, string shift, DateTime? start) { using (IDatabase db = DbFactory.Base("ofilmEmp")) { var dal = new DataCenterDal(db); if (!start.HasValue) start = DateTime.Now.AddDays(-1); var data1 = dal.GetMEAttendanceDatil(deptname, shift, "员工", start); var data2 = dal.GetMEAttendanceDatil(deptname, shift, "职员", start); var data3 = dal.GetMEAttendanceDatil(deptname, shift, "", start); var data = new List(); var dao = new ChartDto(); dao.LegendData = new List() { "员工出勤率", "职工出勤率", "部门出勤率" }; List y1 = new List(); List y2 = new List(); List y3 = new List(); if (data3 != null && data3.Count > 1) { foreach (var i in data3) { var m = new MEAttendanceseDtail() { DeptOnJobNum = "0", OnJobNum = "0", EmpOnJobNum = "0", DeptOnWorkNum = "0", OnWorkNum = "0", EmpOnWorkNum = "0", DeptRate = "0", Rate = "0", EmpRate = "0" }; m.DeptName = i.DeptName; m.Time = i.Time; m.DeptOnJobNum = i.OnJobNum; m.DeptOnWorkNum = i.OnWorkNum; m.DeptRate = i.Rate; if (data1 != null && data1.Count > 1) { foreach (var j in data1) { if (j.DeptName == m.DeptName) { m.OnJobNum = j.OnJobNum; m.OnWorkNum = j.OnWorkNum; m.Rate = j.Rate; } } } if (data2 != null && data2.Count > 1) { foreach (var k in data2) { if (k.DeptName == m.DeptName) { m.EmpOnJobNum = k.OnJobNum; m.EmpOnWorkNum = k.OnWorkNum; m.EmpRate = k.Rate; } } } if (m.DeptName != "小计") { dao.XData.Add(m.DeptName); y1.Add(Convert.ToDecimal(m.Rate)); y2.Add(Convert.ToDecimal(m.EmpRate)); y3.Add(Convert.ToDecimal(m.DeptRate)); } data.Add(m); } } dao.SeriesData = new List() { new Series { Name = "员工出勤率", Type = "column", Data = y1 }, new Series { Name = "职工出勤率", Type = "column", Data = y2 }, new Series { Name = "部门出勤率", Type = "column", Data = y3 }, }; return new LayuiModel() { code = 1, data = data, extraObject = dao }; } } } }