123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374 |
- 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
- {
- /// <summary>
- /// 机台数据
- /// </summary>
- [Route("eap/api/[controller]/[action]")]
- [ApiController]
- [Authorize]
- public class DataCenterController :ControllerBase
- {
- ILogger<DataCenterDal> logger;
- private IMapper _mapper;
- public IConfiguration Configuration { get; set; }
- public DataCenterController(ILogger<DataCenterDal> 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;
- }
- }
- /// <summary>
- /// 设备查询
- /// </summary>
- /// <param name="pageIndex"></param>
- /// <param name="pageSize"></param>
- /// <param name="filter"></param>
- /// <param name="sort"></param>
- /// <param name="order"></param>
- /// <returns></returns>
- public LayuiModel<MacEntity> 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<MacEntity> 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<MacEntity>()
- {
- code = 0,
- count = total,
- data = list,
- msg = ""
- };
- return responseData;
- }
- }
- /// <summary>
- /// 设备查询导出
- /// </summary>
- /// <param name="filterInfo"></param>
- /// <returns></returns>
- [HttpPost]
- public async Task<IActionResult> ExportMacList(IDictionary<string, string> 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<IEnumerable<ExportMacEntity>>(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");
- }
- /// <summary>
- /// /设备维修费用详情
- /// </summary>
- /// <param name="pageIndex"></param>
- /// <param name="pageSize"></param>
- /// <param name="filter"></param>
- /// <param name="sort"></param>
- /// <param name="order"></param>
- /// <returns></returns>
- public LayuiModel<MacChargeEntity> 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<MacChargeEntity> listUseCharge = null;//领用费用
- IEnumerable<MacChargeEntity> 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<MacChargeEntity>()
- {
- 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<ChartEntity>
- {
- 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<ChartEntity>
- {
- 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<ChartEntity>
- {
- 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<ChartEntity>
- {
- 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<FactoryMacStatus>();
- var factoryGroups = list.GroupBy(c => new { c.FactoryId, c.Factory });
- var facList = new List<FactoryMacStatus>();
- 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<PlantMacStatus>();
- 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<FactoryMacStatusEntity>();
- 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<FactoryMacStatusEntity>
- // {
- // 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<FactoryMacStatusEntity>
- // {
- // 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<FactoryMacStatusEntity>
- // {
- // 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<string> legendDatas = new List<string>();
- List<ChartEntity> factoryList = new List<ChartEntity>();
- 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<decimal> dataList = new List<decimal>();
- 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<string> { "未来城园区", "二号园区", "三号园区" };
- //List<ChartEntity> factoryList = new List<ChartEntity>
- //{
- // new ChartEntity { Name = "未来城园区", Value =8 },
- // new ChartEntity { Name = "二号园区", Value =6 },
- // new ChartEntity { Name = "三号园区", Value =122 }
- //};
- //foreach (var factory in factoryList)
- //{
- // List<decimal> dataList = new List<decimal>();
- // 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<Series>();
- //chartDto.SeriesData.Add(new Series { Name = "未来城园区", Type = "line", Data = new List<decimal> { 60, 75, 87, 60, 75, 87, 90 } });
- //chartDto.SeriesData.Add(new Series { Name = "二号园区", Type = "line", Data = new List<decimal> { 75, 87, 99, 75, 87, 99, 88 } });
- //chartDto.SeriesData.Add(new Series { Name = "三号园区", Type = "line", Data = new List<decimal> { 78, 80, 90, 70, 80, 91, 81 } });
- return chartDto;
- }
- }
- /// <summary>
- /// 机台MTBA报表数据查询
- /// </summary>
- /// <param name="startTime"></param>
- /// <param name="endTime"></param>
- /// <param name="filter"></param>
- /// <param name="sub"></param>
- /// <param name="tablename"></param>
- /// <param name="pageIndex"></param>
- /// <param name="pageSize"></param>
- /// <param name="sort"></param>
- /// <param name="order"></param>
- /// <returns></returns>
- 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<MtbaDay> mtbaDays = new List<MtbaDay>();
- 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<AntdColumn>();
- 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<IActionResult> ExportMacMtbaList(IDictionary<string, string> 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<ChartEntity> orderList = new List<ChartEntity>();
- //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<string> { "消耗费用", "库存费用" };
- //chartDto.XData = orderList.Select(m => m.Name).ToList();
- chartDto.SeriesData = new List<Series>();
- 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<string>() { "设备一课", "设备二课", "设备三课", "设备四课", "设备五课", "中央仓库" };//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<ChartEntity>();
- 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<ChartEntity> orderList = new List<ChartEntity>();
- orderList = list.ToList();
- var chartDto = new ChartDto();
- chartDto.LegendData = new List<string> { "消耗费用", "库存费用" };
- //chartDto.XData = orderList.Select(m => m.Name).ToList();
- chartDto.SeriesData = new List<Series>();
- 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<ChartEntity>();
- 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;
- }
- }
- /// <summary>
- /// 领用费用
- /// </summary>
- /// <param name="starttime"></param>
- /// <param name="endtime"></param>
- /// <returns></returns>
- 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<ChartEntity>();
- 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<string> xdata = new List<string>();
- 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<string> ls = new List<string>() { "设备一课", "设备二课", "设备三课", "设备四课", "设备五课", "中央仓库" };
- 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;
- }
- }
- /// <summary>
- /// 库存费用推移图
- /// </summary>
- /// <param name="filter"></param>
- /// <param name="sublter"></param>
- /// <returns></returns>
- 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<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.GetMacChargeStockMonth(starttime, endtime);
- var orderList = new List<ChartEntity>();
- 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<string> xdata = new List<string>();
- 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<string> ls = new List<string>() { "设备一课", "设备二课", "设备三课", "设备四课", "设备五课", "中央仓库" };
- 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 设备良率
- /// <summary>
- /// 一次良率
- /// </summary>
- /// <returns></returns>
- [HttpGet]
- public ChartDto GetMacGoodRate()
- {
- var chartDto = new ChartDto();
- chartDto.LegendData = new List<string> { "未来城A1栋3楼EOL一次良率", "未来城A1栋1楼EOL一次良率" };
- chartDto.XData = new List<string>();
- List<string> dd = new List<string>();
- List<string> dts = new List<string>();
- 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<MacGoodRateDto> mgrt = dal.GetMacGoodRate(dt.AddDays(-8).ToString("yyyy-MM-dd"), dt.AddDays(-1).ToString("yyyy-MM-dd"));
- //IEnumerable<MacGoodRateDto> shoujian = dal.GetShouJian(dt.AddDays(-8).ToString("yyyy-MM-dd"), dt.AddDays(-1).ToString("yyyy-MM-dd"));
- //chartDto.XData = new List<string> { "未来城园区", "二号园区","三号园区" };
- chartDto.SeriesData = new List<Series>();
- #region
- /*var sjgroup = shoujian?.GroupBy(c => c.Factroy);
- if (sjgroup != null)
- {
- foreach (var item in sjgroup)
- {
-
- List<decimal> des = new List<decimal>();
- 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<decimal> des = new List<decimal>();
- 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<decimal> { 60, 75, 87, 60, 75, 87, 90 } });
- //chartDto.SeriesData.Add(new Series { Name = "二号园区COB首件通过率", Type = "column", Data = new List<decimal> { 75, 87, 99, 75, 87, 99, 88 } });
- //chartDto.SeriesData.Add(new Series { Name = "三号园区COB首件通过率", Type = "column", Data = new List<decimal> { 75, 87, 99, 75, 87, 99, 88 } });
- //chartDto.SeriesData.Add(new Series { Name = "未来城园区EOL一次良率", Type = "line", Data = new List<decimal> { 70, 37, 59, 65, 77, 89, 98 } });
- //chartDto.SeriesData.Add(new Series { Name = "二号园区EOL一次良率", Type = "line", Data = new List<decimal> { 78, 80, 90, 70, 80, 91, 81 } });
- //chartDto.SeriesData.Add(new Series { Name = "三号园区EOL一次良率", Type = "line", Data = new List<decimal> { 65, 57, 69, 75, 87, 99, 88 } });
- }
- return chartDto;
- }
- /// <summary>
- /// 首件合格率
- /// </summary>
- /// <returns></returns>
- [HttpGet]
- public ChartDto GetShouJianRate()
- {
- var chartDto = new ChartDto();
- chartDto.LegendData = new List<string> { "未来城园区A1-3FCOB首件通过率", "未来城园区A1-1/2FCOB首件通过率" };
- chartDto.XData = new List<string>();
- List<string> dd = new List<string>();
- List<string> dts = new List<string>();
- 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<MacGoodRateDto> shoujian = dal.GetShouJian(dt.AddDays(-8).ToString("yyyy-MM-dd"), dt.AddDays(-1).ToString("yyyy-MM-dd"));
- //chartDto.XData = new List<string> { "未来城园区", "二号园区","三号园区" };
- chartDto.SeriesData = new List<Series>();
- var sjgroup = shoujian?.GroupBy(c => c.Factroy);
- if (sjgroup != null)
- {
- foreach (var item in sjgroup)
- {
- List<decimal> des = new List<decimal>();
- 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;
- }
- /// <summary>
- /// 一次良率详情
- /// </summary>
- /// <param name="starttime"></param>
- /// <param name="endtime"></param>
- /// <param name="filter"></param>
- /// <param name="pageIndex"></param>
- /// <param name="pageSize"></param>
- /// <param name="sort"></param>
- /// <param name="order"></param>
- /// <returns></returns>
- 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<AntdColumn>();
- 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;
- }
- }
- /// <summary>
- /// 首件详情
- /// </summary>
- /// <param name="factory"></param>
- /// <param name="shift"></param>
- /// <param name="start"></param>
- /// <param name="endtime"></param>
- /// <returns></returns>
- public LayuiModel<MacGoodRateDto> 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<decimal> des = new List<decimal>();
- 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<MacGoodRateDto>()
- {
- code = 1,
- data = data,
- extraObject = dto
- };
- }
- }
- public IEnumerable<SelectDto<string>> GetFactory()
- {
- using (IDatabase db = DbFactory.Base("ccmrpt"))
- {
- var dal = new DataCenterDal(db);
- var data = dal.GetFactory();
- return data;
- }
- }
- /// <summary>
- /// 园区
- /// </summary>
- /// <param name="filter"></param>
- /// <returns></returns>
- public IEnumerable<SelectDto<string>> GetMultipalFactroySelects(string filter)
- {
- using (IDatabase db = DbFactory.Base("ees"))
- {
- var dal = new DataCenterDal(db, logger);
- return dal.GetMultipleFactorySelects(filter).OrderBy(c => c.Label);
- }
- }
- /// <summary>
- /// 厂房
- /// </summary>
- /// <param name="filter"></param>
- /// <returns></returns>
- public IEnumerable<SelectDto<string>> GetMultipalPlantSelects(string filter)
- {
- using (IDatabase db = DbFactory.Base("ees"))
- {
- var dal = new DataCenterDal(db, logger);
- return dal.GetMultiplePlantSelects(filter).OrderBy(c => c.Label);
- }
- }
- /// <summary>
- /// 楼层
- /// </summary>
- /// <param name="filter"></param>
- /// <returns></returns>
- [HttpGet]
- public IEnumerable<SelectDto<string>> GetMultipalFloorSelects(string filter)
- {
- using (IDatabase db = DbFactory.Base("ees"))
- {
- var dal = new DataCenterDal(db, logger);
- return dal.GetMultipleFloorSelects(filter).OrderBy(c => c.Label);
- }
- }
- /// <summary>
- /// 机种
- /// </summary>
- /// <param name="filter"></param>
- /// <returns></returns>
- [HttpGet]
- public IEnumerable<SelectDto<string>> GetMultiplePartNameSelects(string filter)
- {
- using (IDatabase db = DbFactory.Base("ees"))
- {
- var dal = new DataCenterDal(db, logger);
- return dal.GetMultiplePartNameSelects(filter).OrderBy(c => c.Label);
- }
- }
- /// <summary>
- /// 工序
- /// </summary>
- /// <param name="filter"></param>
- /// <returns></returns>
- [HttpGet]
- public IEnumerable<SelectDto<string>> 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<string> { "已保养", "全部", "达成率" };
- chartDto.XData = new List<string> { "未来城1楼COB", "未来城3楼COB", "未来城2楼EOL", "未来城3楼EOL", "二号园区1楼COB", "三号园区2楼COB" };
- chartDto.SeriesData = new List<Series>();
- chartDto.SeriesData.Add(new Series { Name = "已保养", Type = "column", Data = new List<decimal> { 50, 55, 42, 45, 68, 100 } });
- chartDto.SeriesData.Add(new Series { Name = "全部", Type = "column", Data = new List<decimal> { 67, 65, 56, 50, 90, 100 } });
- chartDto.SeriesData.Add(new Series { Name = "达成率", Type = "column", Data = new List<decimal> { 75, 85, 75, 90, 76, 100 } });
- return chartDto;
- }
- #endregion
- #region 查询车间
- [HttpGet]
- public IEnumerable<object> 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<object> 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
- /// <summary>
- /// ME出勤率
- /// </summary>
- /// <returns></returns>
- [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<string> { "系统人力", "出勤人力", "出勤率" };
- var data = dal.GetMEAttendance(time);
- List<decimal> y1 = new List<decimal>();
- List<decimal> y2 = new List<decimal>();
- List<decimal> y3 = new List<decimal>();
- 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<Series>();
- 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;
- }
-
- }
- /// <summary>
- /// ME出勤率详情
- /// </summary>
- /// <param name="deptname"></param>
- /// <param name="shift"></param>
- /// <param name="start"></param>
- /// <returns></returns>
- [HttpGet]
- public LayuiModel<MEAttendanceseDtail> 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<MEAttendanceseDtail>();
- var dao = new ChartDto();
- dao.LegendData = new List<string>() { "员工出勤率", "职工出勤率", "部门出勤率" };
- List<decimal> y1 = new List<decimal>();
- List<decimal> y2 = new List<decimal>();
- List<decimal> y3 = new List<decimal>();
- 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<Series>()
- {
- new Series { Name = "员工出勤率", Type = "column", Data = y1 },
- new Series { Name = "职工出勤率", Type = "column", Data = y2 },
- new Series { Name = "部门出勤率", Type = "column", Data = y3 },
- };
- return new LayuiModel<MEAttendanceseDtail>()
- {
- code = 1,
- data = data,
- extraObject = dao
- };
- }
-
- }
- }
- }
|