using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IStation.Service { /// /// 仪器仪表 /// public partial class Meter { /// /// 获取所有仪器仪表 /// /// private List GetAll() { string cache_name = string.Format("AllInstrumentBase"); return Eventech.Lxj.Untity.MemoryCacheHelper.GetSet>(cache_name, () => { return GetInstrumentCore(); }, 350); } /// /// 根据 CorpID 获取流量计 /// /// /// public List GetByCorpID(long CorpID) { var list = GetAll(); return (from x in list where x.CorpID == CorpID select x).ToList(); } /// /// 根据 CorpID 获取流量计 /// /// /// public List GetFixFlowMeterByCorpID(long CorpID) { string cache_name = string.Format("AllFlowMeter.Corp{0}", CorpID); return Eventech.Lxj.Untity.MemoryCacheHelper.GetSet>(cache_name, () => { return GetFlowMeterCore(CorpID); }, 301); } /// /// 根据 CorpID 获取压力计 /// /// /// public List GetFixPressureMeterByCorpID(long CorpID) { string cache_name = string.Format("AllPressureMeter.Corp{0}", CorpID); return Eventech.Lxj.Untity.MemoryCacheHelper.GetSet>(cache_name, () => { return GetPressureMeterCore(CorpID); }, 302); } /// /// 根据 CorpID 获取水质仪 /// /// /// public List GetFixQualityMeterByCorpID(long CorpID) { string cache_name = string.Format("AllQualityMeterBase.Corp{0}", CorpID); return Eventech.Lxj.Untity.MemoryCacheHelper.GetSet>(cache_name, () => { return GetQualityMeterCore(CorpID); }, 303); } private List GetInstrumentCore() { var service_product = new Product(); var service_dma = new DmaArea(); var service_pipeSite = new DmaPipeSite(); var service_manufacturer = new Service.Manufacturer(); var service_mapinfo = new Service.MapInfoBase(); var service_mapinfoMapping = new Service.MapInfoMapping(); var catalogList =new ProductCatalog().GetChildsAndSelfByIdentifier(Model.ProductCatalog.仪器仪表)?.Select(x=>x.Identifier).Distinct().ToList(); IStation.Service.Product series_product = new Product(); var allProduct = series_product.GetAll(); var allMeter = from x in allProduct where catalogList.Contains(x.Catalog) select x; var allManufacotry = service_manufacturer.GetAll(); var allPipeSites =service_pipeSite.GetAll(); var allDmaSiteMapper = new DmaAreaMapping().GetAll(); var allMapInfo = service_mapinfo.GetAll(); var allMapMapperInfo = service_mapinfoMapping.GetAll(); var allDma = service_dma.GetAll(); var allPipeSiteInstrument = new DmaPipeSiteMapping().GetAll(); List all_Instrument_meters = new List(); foreach (var meter in allMeter) { var siteMapper = allPipeSiteInstrument.Find(x => x.InstrumentID == meter.ID); if (siteMapper == null ) continue; var pipeSite = allPipeSites.Find(x => x.ID == siteMapper.PipeSiteID); if (pipeSite == null || pipeSite.UseStatus == Model.eUseStatus.Disable) continue; var DmaSiteMapper = allDmaSiteMapper.Find(x => x.PipeSiteID == pipeSite.ID); if (DmaSiteMapper == null) continue; var dmaArea = allDma.Find(x => x.ID == DmaSiteMapper.AreaID); if (dmaArea == null) continue; /*var dmaMapInfoMapper = allMapMapperInfo.Find(x => x.ObjectID == dmaArea.ID && x.ObjectType == IStation.ObjectType.DmaArea_分区); if (dmaMapInfoMapper == null) continue;*/ var pipeSiteMapInfoMapper = allMapMapperInfo.Find(x => x.ObjectID == pipeSite.ID && x.ObjectType == IStation.ObjectType.PipeSite_管路点); if (pipeSiteMapInfoMapper == null) continue; /* var dmaMapInfo = allMapInfo.Find(x=>x.ID== dmaMapInfoMapper.MapInfoID);*/ var pipeSiteMapInfo = allMapInfo.Find(x => x.ID == pipeSiteMapInfoMapper.MapInfoID); IStation.Model.MeterBaseInfo model = new Model.MeterBaseInfo(meter, pipeSite, pipeSiteMapInfo); // model.DmaAreaName = dmaArea.Name; if (meter.ManufacturerID > 0) { var manufacotry = allManufacotry.Find(x => x.ID == meter.ManufacturerID); if (manufacotry != null) model.ManufacturerName = manufacotry.Name; } all_Instrument_meters.Add(model); } return (from x in all_Instrument_meters orderby x.SortCode select x).ToList(); } private List GetFlowMeterCore(long CorpID) { var service_product = new Product(); var service_dma = new DmaArea(); var service_pipeSite = new DmaPipeSite(); var service_manufacturer = new Service.Manufacturer(); var service_mapinfo = new Service.MapInfoBase(); var service_mapinfoMapping = new Service.MapInfoMapping(); var allProduct = service_product.GetAll(); var allMeter = from x in allProduct where x.Catalog==Model.ProductCatalog.流量计 select x; var allManufacotry = service_manufacturer.GetAll(); var allPipeSites = service_pipeSite.GetAll(); var allDmaSiteMapper = new DmaAreaMapping().GetAll(); var allMapInfo = service_mapinfo.GetAll(); var allDma = service_dma.GetAll(); var allPipeSiteInstrument = new DmaPipeSiteMapping().GetAll(); var allMapMapperInfo = service_mapinfoMapping.GetAll(); List all_flow_meters = new List(); foreach (var meter in allMeter) { var siteMapper = allPipeSiteInstrument.Find(x => x.InstrumentID == meter.ID); if (siteMapper == null ) continue; var pipeSite = allPipeSites.Find(x => x.ID == siteMapper.PipeSiteID); if (pipeSite == null || pipeSite.UseStatus == Model.eUseStatus.Disable) continue; /*var dmaArea = allDmaSiteMapper.Find(x => x.PipeSiteID == pipeSite.ID); if (dmaArea == null) continue;*/ /*var dmaMapInfoMapper = allMapMapperInfo.Find(x => x.ObjectID == dmaArea.ID && x.ObjectType == IStation.ObjectType.DmaArea_分区); if (dmaMapInfoMapper == null) continue;*/ var pipeSiteMapInfoMapper = allMapMapperInfo.Find(x => x.ObjectID == pipeSite.ID && x.ObjectType == IStation.ObjectType.PipeSite_管路点); if (pipeSiteMapInfoMapper == null) continue; /* var dmaMapInfo = allMapInfo.Find(x=>x.ID== dmaMapInfoMapper.MapInfoID);*/ var papInfo = allMapInfo.Find(x => x.ID == pipeSiteMapInfoMapper.MapInfoID); IStation.Model.FlowMeterBaseInfo model = new Model.FlowMeterBaseInfo(meter, pipeSite, papInfo); if (meter.ManufacturerID > 0) { var manufacotry = allManufacotry.Find(x => x.ID == meter.ManufacturerID); if (manufacotry != null) model.ManufacturerName = manufacotry.Name; } var flag_DmaSite = allDmaSiteMapper.FindAll(x => x.PipeSiteID == pipeSite.ID); if (flag_DmaSite != null) { var inFlag = flag_DmaSite.Find(x => x.Flag == Model.FlagHelper.进口); if (inFlag != null) { var inlet = allDma.Find(d => d.ID == inFlag.AreaID); if (inlet != null) { model.InletDmaID = inlet.ID; model.InletDmaSiteMapperID = inFlag.ID; model.InletDmaName = inlet.Name; } } var outFlag = flag_DmaSite.Find(x => x.Flag == Model.FlagHelper.出口); if (outFlag != null) { var outlet = allDma.Find(d => d.ID == outFlag.AreaID); if (outlet != null) { model.OutletDmaID = outlet.ID; model.OutletDmaSiteMapperID = outlet.ID; model.OutletDmaName = outlet.Name; } } } all_flow_meters.Add(model); } return (from x in all_flow_meters where x.CorpID == CorpID orderby x.SortCode select x).ToList(); } private List GetPressureMeterCore(long CorpID) { var service_product = new Product(); var service_dma = new DmaArea(); var service_pipeSite = new DmaPipeSite(); var service_manufacturer = new Service.Manufacturer(); var service_mapinfo = new Service.MapInfoBase(); var service_mapinfoMapping = new Service.MapInfoMapping(); var allProduct = service_product.GetAll(); var allMeter = from x in allProduct where x.Catalog == Model.ProductCatalog.压力计 select x; var allManufacotry = service_manufacturer.GetAll(); var allPipeSites = service_pipeSite.GetAll(); var allDmaSiteMapper = new DmaAreaMapping().GetAll(); var allMapInfo = service_mapinfo.GetAll(); var allDma = service_dma.GetAll(); var allPipeSiteInstrument = new DmaPipeSiteMapping().GetAll(); var allMapMapperInfo = service_mapinfoMapping.GetAll(); List all_Pressure_meters = new List(); foreach (var meter in allMeter) { var siteMapper = allPipeSiteInstrument.Find(x => x.InstrumentID == meter.ID); if (siteMapper == null ) continue; var pipeSite = allPipeSites.Find(x => x.ID == siteMapper.PipeSiteID); if (pipeSite == null || pipeSite.UseStatus == Model.eUseStatus.Disable) continue; var DmaSiteMapper = allDmaSiteMapper.Find(x => x.PipeSiteID == pipeSite.ID); if (DmaSiteMapper == null) continue; var dmaArea = allDma.Find(x => x.ID == DmaSiteMapper.AreaID); /* var dmaMapInfoMapper = allMapMapperInfo.Find(x => x.ObjectID == dmaArea.ID && x.ObjectType == IStation.ObjectType.DmaArea_分区); if (dmaMapInfoMapper == null) continue;*/ var pipeSiteMapInfoMapper = allMapMapperInfo.Find(x => x.ObjectID == pipeSite.ID && x.ObjectType == IStation.ObjectType.PipeSite_管路点); if (pipeSiteMapInfoMapper == null) continue; /*var dmaMapInfo = allMapInfo.Find(x => x.ID == dmaMapInfoMapper.MapInfoID);*/ var pipeSiteMapInfo = allMapInfo.Find(x => x.ID == pipeSiteMapInfoMapper.MapInfoID); IStation.Model.PressureMeterBaseInfo model = new Model.PressureMeterBaseInfo(meter, pipeSite, pipeSiteMapInfo); if (dmaArea != null) model.DmaAreaName = dmaArea.Name; if (meter.ManufacturerID > 0) { var manufacotry = allManufacotry.Find(x => x.ID == meter.ManufacturerID); if (manufacotry != null) model.ManufacturerName = manufacotry.Name; } all_Pressure_meters.Add(model); } return (from x in all_Pressure_meters where x.CorpID == CorpID orderby x.SortCode select x).ToList(); } private List GetQualityMeterCore(long CorpID) { var service_product = new Product(); var service_dma = new DmaArea(); var service_pipeSite = new DmaPipeSite(); var service_manufacturer = new Service.Manufacturer(); var service_mapinfo = new Service.MapInfoBase(); var service_mapinfoMapping = new Service.MapInfoMapping(); var allProduct = service_product.GetAll(); var allMeter = from x in allProduct where x.Catalog == Model.ProductCatalog.水质仪 select x; var allManufacotry = service_manufacturer.GetAll(); var allPipeSites = service_pipeSite.GetAll(); var allDmaSiteMapper = new DmaAreaMapping().GetAll(); var allMapInfo = service_mapinfo.GetAll(); var allDma = service_dma.GetAll(); var allPipeSiteInstrument = new DmaPipeSiteMapping().GetAll(); var allMapMapperInfo = service_mapinfoMapping.GetAll(); List all_waterMonitor_meters = new List(); foreach (var meter in allMeter) { var siteMapper = allPipeSiteInstrument.Find(x => x.InstrumentID == meter.ID); if (siteMapper == null ) continue; var pipeSite = allPipeSites.Find(x => x.ID == siteMapper.PipeSiteID); if (pipeSite == null || pipeSite.UseStatus == Model.eUseStatus.Disable) continue; var DmaSiteMapper = allDmaSiteMapper.Find(x => x.PipeSiteID == pipeSite.ID); if (DmaSiteMapper == null) continue; /* var dmaMapInfoMapper = allMapMapperInfo.Find(x => x.ObjectID == dmaArea.ID && x.ObjectType == IStation.ObjectType.DmaArea_分区); if (dmaMapInfoMapper == null) continue;*/ var pipeSiteMapInfoMapper = allMapMapperInfo.Find(x => x.ObjectID == pipeSite.ID && x.ObjectType == IStation.ObjectType.PipeSite_管路点); if (pipeSiteMapInfoMapper == null) continue; /*var dmaMapInfo = allMapInfo.Find(x => x.ID == dmaMapInfoMapper.MapInfoID);*/ var pipeSiteMapInfo = allMapInfo.Find(x => x.ID == pipeSiteMapInfoMapper.MapInfoID); IStation.Model.QualityMeterBaseInfo model = new Model.QualityMeterBaseInfo(meter, pipeSite, pipeSiteMapInfo); var dmaArea = allDma.Find(x => x.ID == DmaSiteMapper.AreaID); if (dmaArea != null) model.DmaAreaName = dmaArea.Name; if (meter.ManufacturerID > 0) { var manufacotry = allManufacotry.Find(x => x.ID == meter.ManufacturerID); if (manufacotry != null) model.ManufacturerName = manufacotry.Name; } all_waterMonitor_meters.Add(model); } return (from x in all_waterMonitor_meters where x.CorpID == CorpID orderby x.SortCode select x).ToList(); } } }