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