using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace IStation.Service
|
{
|
/// <summary>
|
/// 仪器仪表
|
/// </summary>
|
public partial class Meter
|
{
|
|
|
/// <summary>
|
/// 获取所有仪器仪表
|
/// </summary>
|
/// <returns></returns>
|
private List<Model.MeterBaseInfo> GetAll()
|
{
|
string cache_name = string.Format("AllInstrumentBase");
|
return Eventech.Lxj.Untity.MemoryCacheHelper.GetSet<List<IStation.Model.MeterBaseInfo>>(cache_name, () =>
|
{
|
return GetInstrumentCore();
|
}, 350);
|
}
|
|
/// <summary>
|
/// 根据 CorpID 获取流量计
|
/// </summary>
|
/// <param name="CorpID"></param>
|
/// <returns></returns>
|
public List<Model.MeterBaseInfo> GetByCorpID(long CorpID)
|
{
|
var list = GetAll();
|
|
return (from x in list where x.CorpID == CorpID select x).ToList();
|
}
|
|
/// <summary>
|
/// 根据 CorpID 获取流量计
|
/// </summary>
|
/// <param name="CorpID"></param>
|
/// <returns></returns>
|
public List<Model.FlowMeterBaseInfo> GetFixFlowMeterByCorpID(long CorpID)
|
{
|
string cache_name = string.Format("AllFlowMeter.Corp{0}", CorpID);
|
return Eventech.Lxj.Untity.MemoryCacheHelper.GetSet<List<IStation.Model.FlowMeterBaseInfo>>(cache_name, () =>
|
{
|
return GetFlowMeterCore(CorpID);
|
}, 301);
|
}
|
|
/// <summary>
|
/// 根据 CorpID 获取压力计
|
/// </summary>
|
/// <param name="CorpID"></param>
|
/// <returns></returns>
|
public List<Model.PressureMeterBaseInfo> GetFixPressureMeterByCorpID(long CorpID)
|
{
|
string cache_name = string.Format("AllPressureMeter.Corp{0}", CorpID);
|
return Eventech.Lxj.Untity.MemoryCacheHelper.GetSet<List<IStation.Model.PressureMeterBaseInfo>>(cache_name, () =>
|
{
|
return GetPressureMeterCore(CorpID);
|
}, 302);
|
}
|
|
|
/// <summary>
|
/// 根据 CorpID 获取水质仪
|
/// </summary>
|
/// <param name="CorpID"></param>
|
/// <returns></returns>
|
public List<Model.QualityMeterBaseInfo> GetFixQualityMeterByCorpID(long CorpID)
|
{
|
string cache_name = string.Format("AllQualityMeterBase.Corp{0}", CorpID);
|
return Eventech.Lxj.Untity.MemoryCacheHelper.GetSet<List<IStation.Model.QualityMeterBaseInfo>>(cache_name, () =>
|
{
|
return GetQualityMeterCore(CorpID);
|
}, 303);
|
|
}
|
|
|
|
private List<IStation.Model.MeterBaseInfo> 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<IStation.Model.MeterBaseInfo> all_Instrument_meters = new List<Model.MeterBaseInfo>();
|
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<IStation.Model.FlowMeterBaseInfo> 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<IStation.Model.FlowMeterBaseInfo> all_flow_meters = new List<Model.FlowMeterBaseInfo>();
|
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<IStation.Model.PressureMeterBaseInfo> 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<IStation.Model.PressureMeterBaseInfo> all_Pressure_meters = new List<Model.PressureMeterBaseInfo>();
|
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<IStation.Model.QualityMeterBaseInfo> 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<IStation.Model.QualityMeterBaseInfo> all_waterMonitor_meters = new List<Model.QualityMeterBaseInfo>();
|
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();
|
}
|
|
}
|
}
|