using System; using System.Collections.Generic; using System.Linq; using System.Runtime; using System.Text; using System.Threading.Tasks; namespace IStation.BLL { /// /// 测点 /// public partial class MonitorPoint { private readonly IDAL.IMonitorPoint _dal = DAL.Factory.DataAccess.CreateDAL>(Settings.DataAccess.MonitorDLLName, Settings.DataAccess.DALNameSpace); #region Cache //根据 projectId 查询缓存 private List GetProjectCache(long projectId) { return MonitorPointCacheHelper.GetSet(projectId, () => { var entities = _dal.GetAll(projectId); var models = Entity2Models(entities); if (models == null) { models = new List(); } return models; }, ConfigHelper.CacheKeepTime, ConfigHelper.CacheRandomTime); } //根据 Id 更新缓存 private void UpdateProjectCache(long projectId, long Id) { var entity_ds = _dal.GetById(projectId, Id); var model_ds = Entity2Model(entity_ds); var all = GetProjectCache(projectId); var model = all.Find(x => x.Id == Id); if (model == null) { all.Add(model_ds); } else { model.Reset(model_ds); } } //根据 Ids 更新缓存 private void UpdateProjectCache(long projectId, IEnumerable Ids) { if (Ids == null || Ids.Count() < 1) return; var entities = _dal.GetByIds(projectId, Ids); var models = Entity2Models(entities); var all = GetProjectCache(projectId); all.RemoveAll(x => Ids.Contains(x.Id)); if (models != null && models.Count > 0) { all.AddRange(models); } } //根据 Id 移除缓存 private void RemoveProjectCache(long projectId, long Id) { var all = GetProjectCache(projectId); all.RemoveAll(x => x.Id == Id); } #endregion #region Get #region 测点 /// /// 查询全部 /// public List GetAll(long projectId) { var all = GetProjectCache(projectId); return all.OrderBy(x => x.SortCode).ToList(); } /// /// 根据 Id查询 /// public Model.MonitorPoint GetById(long projectId, long Id) { var all = GetAll(projectId); return all.Find(x => x.Id == Id); } /// /// 根据 Ids 查询 /// public List GetByIds(long projectId, IEnumerable Ids) { if (Ids == null || Ids.Count() < 1) return default; var all = GetAll(projectId); return all.Where(x => Ids.Contains(x.Id)).ToList(); } /// /// 根据 Ids 查询 /// public List GetByIds (long projectId, IEnumerable ids, Model.eMonitorType monitorType, Model.Monitor.eCronType cronType) { if (ids == null || ids.Count() < 1) return default; var all = GetProjectCache(projectId); all = all.Where(x => ids.Contains(x.Id) && x.MonitorType == monitorType && x.CronType == cronType).ToList(); return all?.OrderBy(x => x.SortCode).ToList(); } /// /// 根据 BelongType 和 BelongId 查询 /// public List GetByBelongTypeAndBelongId(long projectId, string belongType, long belongId) { var all = GetProjectCache(projectId); all = all.Where(x => x.BelongType == belongType && x.BelongId == belongId).ToList(); return all?.OrderBy(x => x.SortCode).ToList(); } /// /// 根据 BelongType 和 BelongId 查询 /// public List GetByBelongTypeAndBelongId (long projectId, string belongType, long belongId, Model.eMonitorType monitorType) { var all = GetProjectCache(projectId); all = all.Where(x => x.BelongType == belongType && x.BelongId == belongId && x.MonitorType == monitorType).ToList(); return all?.OrderBy(x => x.SortCode).ToList(); } /// /// 根据 BelongType 和 BelongId 查询 /// public List GetByBelongTypeAndBelongId (long projectId, string belongType, long belongId, Model.eMonitorType monitorType, Model.Monitor.eCronType cronType) { var all = GetProjectCache(projectId); all = all.Where(x => x.BelongType == belongType && x.BelongId == belongId && x.MonitorType == monitorType && x.CronType == cronType).ToList(); return all?.OrderBy(x => x.SortCode).ToList(); } /// /// 根据 BelongType 和 BelongId 查询 /// public List GetByBelongTypeAndBelongId (long projectId, string belongType, long belongId, Model.Monitor.eCronType cronType) { var all = GetProjectCache(projectId); all = all.Where(x => x.BelongType == belongType && x.BelongId == belongId && x.CronType == cronType).ToList(); return all?.OrderBy(x => x.SortCode).ToList(); } /// /// 根据 BelongType 和 BelongIds 查询 /// public List GetByBelongTypeAndBelongIds(long projectId, string belongType, IEnumerable belongIds) { if (belongIds == null || belongIds.Count() < 1) return default; var all = GetProjectCache(projectId); all = all.Where(x => x.BelongType == belongType && belongIds.Contains(x.BelongId)).ToList(); return all?.OrderBy(x => x.SortCode).ToList(); } /// /// 根据 groupId 查询 /// public List GetByGroupId(long projectId, long groupId) { var all = GetProjectCache(projectId); all = all.Where(x => x.GroupId == groupId).ToList(); return all?.OrderBy(x => x.SortCode).ToList(); } /// /// 根据 groupId 查询 /// public List GetByGroupId (long projectId, long groupId, Model.eMonitorType monitorType) { var all = GetProjectCache(projectId); all = all.Where(x => x.GroupId == groupId && x.MonitorType == monitorType).ToList(); return all?.OrderBy(x => x.SortCode).ToList(); } /// /// 根据 groupId 查询 /// public List GetByGroupId (long projectId, long groupId, Model.Monitor.eCronType cronType) { var all = GetProjectCache(projectId); all = all.Where(x => x.GroupId == groupId && x.CronType == cronType).ToList(); return all?.OrderBy(x => x.SortCode).ToList(); } /// /// 根据 groupId 查询 /// public List GetByGroupId (long projectId, long groupId, Model.eMonitorType monitorType, Model.Monitor.eCronType cronType) { var all = GetProjectCache(projectId); all = all.Where(x => x.GroupId == groupId && x.MonitorType == monitorType && x.CronType == cronType).ToList(); return all?.OrderBy(x => x.SortCode).ToList(); } /// /// 根据 groupIds 查询 /// public List GetByGroupIds(long projectId, IEnumerable groupIds) { if (groupIds == null || groupIds.Count() < 1) return default; var all = GetProjectCache(projectId); all = all.Where(x => groupIds.Contains(x.GroupId)).ToList(); return all?.OrderBy(x => x.SortCode).ToList(); } /// /// 根据 groupIds 查询 /// public List GetByGroupIds (long projectId, IEnumerable groupIds, Model.eMonitorType monitorType, Model.Monitor.eCronType cronType) { if (groupIds == null || groupIds.Count() < 1) return default; var all = GetProjectCache(projectId); all = all.Where(x => groupIds.Contains(x.GroupId) && x.MonitorType == monitorType && x.CronType == cronType).ToList(); return all?.OrderBy(x => x.SortCode).ToList(); } /// /// 根据 MonitorType 和 CronType 查询 /// public List GetByMonitorTypeAndCronType (long projectId, Model.eMonitorType monitorType, Model.Monitor.eCronType cronType) { var all = GetProjectCache(projectId); all = all.Where(x => x.MonitorType == monitorType && x.CronType == cronType).ToList(); return all?.OrderBy(x => x.SortCode).ToList(); } #endregion #region 测点+信号列表 /// /// 查询所有 /// public List GetExSignalList(long projectId) { var allMonitorList = GetAll(projectId); if (allMonitorList == null || allMonitorList.Count() < 1) return default; var allSignalList = new Signal().GetAll(projectId); if (allSignalList == null || allSignalList.Count() < 1) return default; var vmList = new List(); foreach (var monitor in allMonitorList) { var signalList = allSignalList.Where(x => x.MonitorPointId == monitor.Id).OrderBy(x => x.SortCode).ToList(); if (signalList.Count < 1) continue; var vm = new Model.MonitorPointExSignalList(monitor, signalList); vmList.Add(vm); } return vmList; } /// /// 根据 BelongType 和 BelongId 查询 /// public List GetExSignalListByBelongTypeAndBelongId(long projectId, string belongType, long belongId) { var allMonitorList = GetByBelongTypeAndBelongId(projectId, belongType, belongId); if (allMonitorList == null || allMonitorList.Count < 1) return default; var allSignalList = new Signal().GetByMonitorPointIds(projectId, allMonitorList.Select(x => x.Id)); if (allSignalList == null || allSignalList.Count < 1) return default; var vmList = new List(); foreach (var monitor in allMonitorList) { var signalList = allSignalList.Where(x => x.MonitorPointId == monitor.Id).OrderBy(x => x.SortCode).ToList(); if (signalList.Count < 1) continue; var vm = new Model.MonitorPointExSignalList(monitor, signalList); vmList.Add(vm); } return vmList; } /// /// 根据 BelongType 和 BelongId 查询 /// public List GetExSignalListByBelongTypeAndBelongId (long projectId, string belongType, long belongId, Model.eMonitorType monitorType) { var allMonitorList = GetByBelongTypeAndBelongId(projectId, belongType, belongId, monitorType); if (allMonitorList == null || allMonitorList.Count < 1) return default; var allSignalList = new Signal().GetByMonitorPointIds(projectId, allMonitorList.Select(x => x.Id)); if (allSignalList == null || allSignalList.Count < 1) return default; var vmList = new List(); foreach (var monitor in allMonitorList) { var signalList = allSignalList.Where(x => x.MonitorPointId == monitor.Id).OrderBy(x => x.SortCode).ToList(); if (signalList.Count < 1) continue; var vm = new Model.MonitorPointExSignalList(monitor, signalList); vmList.Add(vm); } return vmList; } /// /// 根据 BelongType 和 BelongId 查询 /// public List GetExSignalListByBelongTypeAndBelongId (long projectId, string belongType, long belongId, Model.eMonitorType monitorType, Model.Monitor.eCronType cronType) { var allMonitorList = GetByBelongTypeAndBelongId(projectId, belongType, belongId, monitorType, cronType); if (allMonitorList == null || allMonitorList.Count < 1) return default; var allSignalList = new Signal().GetByMonitorPointIds(projectId, allMonitorList.Select(x => x.Id)); if (allSignalList == null || allSignalList.Count < 1) return default; var vmList = new List(); foreach (var monitor in allMonitorList) { var signalList = allSignalList.Where(x => x.MonitorPointId == monitor.Id).OrderBy(x => x.SortCode).ToList(); if (signalList.Count < 1) continue; var vm = new Model.MonitorPointExSignalList(monitor, signalList); vmList.Add(vm); } return vmList; } /// /// 根据 BelongType 和 BelongIds 查询 /// public List GetExSignalListByBelongTypeAndBelongIds(long projectId, string belongType, IEnumerable belongIds) { if (belongIds == null || belongIds.Count() < 1) return default; var allMonitorList = GetByBelongTypeAndBelongIds(projectId, belongType, belongIds); if (allMonitorList == null || allMonitorList.Count < 1) return default; var allSignalList = new Signal().GetByMonitorPointIds(projectId, allMonitorList.Select(x => x.Id)); if (allSignalList == null || allSignalList.Count < 1) return default; var vmList = new List(); foreach (var monitor in allMonitorList) { var signalList = allSignalList.Where(x => x.MonitorPointId == monitor.Id).OrderBy(x => x.SortCode).ToList(); if (signalList.Count < 1) continue; var vm = new Model.MonitorPointExSignalList(monitor, signalList); vmList.Add(vm); } return vmList; } /// /// 根据 groupId 查询 /// public List GetExSignalListByGroupId(long projectId, long groupId) { var allMonitorList = GetByGroupId(projectId, groupId); if (allMonitorList == null || allMonitorList.Count < 1) return default; var allSignalList = new Signal().GetByMonitorPointIds(projectId, allMonitorList.Select(x => x.Id)); if (allSignalList == null || allSignalList.Count < 1) return default; var vmList = new List(); foreach (var monitor in allMonitorList) { var signalList = allSignalList.Where(x => x.MonitorPointId == monitor.Id).OrderBy(x => x.SortCode).ToList(); if (signalList.Count < 1) continue; var vm = new Model.MonitorPointExSignalList(monitor, signalList); vmList.Add(vm); } return vmList; } /// /// 根据 GroupIds 查询 /// public List GetExSignalListByGroupIds(long projectId, IEnumerable groupIds) { if (groupIds == null || groupIds.Count() < 1) return default; var allMonitorList = GetByGroupIds(projectId, groupIds); if (allMonitorList == null || allMonitorList.Count < 1) return default; var allSignalList = new Signal().GetByMonitorPointIds(projectId, allMonitorList.Select(x => x.Id)); if (allSignalList == null || allSignalList.Count < 1) return default; var vmList = new List(); foreach (var monitor in allMonitorList) { var signalList = allSignalList.Where(x => x.MonitorPointId == monitor.Id).OrderBy(x => x.SortCode).ToList(); if (signalList.Count < 1) continue; var vm = new Model.MonitorPointExSignalList(monitor, signalList); vmList.Add(vm); } return vmList; } /// /// 根据 id 查询 /// public Model.MonitorPointExSignalList GetExSignalListById(long projectId, long id) { var monitor = GetById(projectId, id); if (monitor == null) return default; var signalList = new Signal().GetByMonitorPointId(projectId, id); if (signalList == null || signalList.Count < 1) return default; return new Model.MonitorPointExSignalList(monitor, signalList); } /// /// 根据 ids 查询 /// public List GetExSignalListByIds(long projectId, IEnumerable ids) { if (ids == null || ids.Count() < 1) return default; var allMonitorList = GetByIds(projectId, ids); if (allMonitorList == null || allMonitorList.Count < 1) return default; var allSignalList = new Signal().GetByMonitorPointIds(projectId, allMonitorList.Select(x => x.Id)); if (allSignalList == null || allSignalList.Count < 1) return default; var vmList = new List(); foreach (var monitor in allMonitorList) { var signalList = allSignalList.Where(x => x.MonitorPointId == monitor.Id).OrderBy(x => x.SortCode).ToList(); if (signalList.Count < 1) continue; var vm = new Model.MonitorPointExSignalList(monitor, signalList); vmList.Add(vm); } return vmList; } #endregion #region 测点+信号+信号类型 /// /// 根据 Id 查询 /// public Model.MonitorPoint_Signal_SignalType GetExSignalWithSignalTypeById (long projectId, long id) { var monitor = GetById(projectId, id); if (monitor == null) return default; var signalList = new Signal().GetExSignalTypeByMonitorPointId(projectId, monitor.Id); if (signalList == null || signalList.Count() < 1) return default; var vm = new Model.MonitorPoint_Signal_SignalType(monitor, signalList); return vm; } /// /// 根据 Ids 查询 /// public List GetExSignalWithSignalTypeByIds (long projectId, IEnumerable ids) { if (ids == null || ids.Count() < 1) return default; var allMonitorList = GetByIds(projectId, ids); if (allMonitorList == null || allMonitorList.Count < 1) return default; var allSignalList = new Signal().GetExSignalTypeByMonitorPointIds(projectId, allMonitorList.Select(x => x.Id).Distinct()); if (allSignalList == null || allSignalList.Count < 1) return default; var vmList = new List(); foreach (var monitor in allMonitorList) { var signalList = allSignalList.Where(x => x.MonitorPointId == monitor.Id).OrderBy(x => x.SortCode).ToList(); if (signalList.Count < 1) continue; var vm = new Model.MonitorPoint_Signal_SignalType(monitor, signalList); vmList.Add(vm); } return vmList; } /// /// 根据 Ids 查询 /// public List GetExSignalWithSignalTypeByIds (long projectId, IEnumerable ids, Model.eMonitorType monitorType, Model.Monitor.eCronType cronType) { if (ids == null || ids.Count() < 1) return default; var allMonitorList = GetByIds(projectId, ids, monitorType, cronType); if (allMonitorList == null || allMonitorList.Count < 1) return default; var allSignalList = new Signal().GetExSignalTypeByMonitorPointIds(projectId, allMonitorList.Select(x => x.Id).Distinct()); if (allSignalList == null || allSignalList.Count < 1) return default; var vmList = new List(); foreach (var monitor in allMonitorList) { var signalList = allSignalList.Where(x => x.MonitorPointId == monitor.Id).OrderBy(x => x.SortCode).ToList(); if (signalList.Count < 1) continue; var vm = new Model.MonitorPoint_Signal_SignalType(monitor, signalList); vmList.Add(vm); } return vmList; } /// /// 根据 GroupId 查询 /// public List GetExSignalWithSignalTypeByGroupId (long projectId, long groupId) { var allMonitorList = GetByGroupId(projectId, groupId); if (allMonitorList == null || allMonitorList.Count < 1) return default; var allSignalList = new Signal().GetExSignalTypeByMonitorPointIds(projectId, allMonitorList.Select(x => x.Id).Distinct()); if (allSignalList == null || allSignalList.Count < 1) return default; var vmList = new List(); foreach (var monitor in allMonitorList) { var signalList = allSignalList.Where(x => x.MonitorPointId == monitor.Id).OrderBy(x => x.SortCode).ToList(); if (signalList.Count < 1) continue; var vm = new Model.MonitorPoint_Signal_SignalType(monitor, signalList); vmList.Add(vm); } return vmList; } /// /// 根据 GroupId 查询 /// public List GetExSignalWithSignalTypeByGroupId (long projectId, long groupId, Model.eMonitorType monitorType) { var allMonitorList = GetByGroupId(projectId, groupId, monitorType); if (allMonitorList == null || allMonitorList.Count < 1) return default; var allSignalList = new Signal().GetExSignalTypeByMonitorPointIds(projectId, allMonitorList.Select(x => x.Id).Distinct()); if (allSignalList == null || allSignalList.Count < 1) return default; var vmList = new List(); foreach (var monitor in allMonitorList) { var signalList = allSignalList.Where(x => x.MonitorPointId == monitor.Id).OrderBy(x => x.SortCode).ToList(); if (signalList.Count < 1) continue; var vm = new Model.MonitorPoint_Signal_SignalType(monitor, signalList); vmList.Add(vm); } return vmList; } /// /// 根据 GroupId 查询 /// public List GetExSignalWithSignalTypeByGroupId (long projectId, long groupId, Model.Monitor.eCronType cronType) { var allMonitorList = GetByGroupId(projectId, groupId, cronType); if (allMonitorList == null || allMonitorList.Count < 1) return default; var allSignalList = new Signal().GetExSignalTypeByMonitorPointIds(projectId, allMonitorList.Select(x => x.Id).Distinct()); if (allSignalList == null || allSignalList.Count < 1) return default; var vmList = new List(); foreach (var monitor in allMonitorList) { var signalList = allSignalList.Where(x => x.MonitorPointId == monitor.Id).OrderBy(x => x.SortCode).ToList(); if (signalList.Count < 1) continue; var vm = new Model.MonitorPoint_Signal_SignalType(monitor, signalList); vmList.Add(vm); } return vmList; } /// /// 根据 GroupId 查询 /// public List GetExSignalWithSignalTypeByGroupId (long projectId, long groupId, Model.eMonitorType monitorType, Model.Monitor.eCronType cronType) { var allMonitorList = GetByGroupId(projectId, groupId, monitorType, cronType); if (allMonitorList == null || allMonitorList.Count < 1) return default; var allSignalList = new Signal().GetExSignalTypeByMonitorPointIds(projectId, allMonitorList.Select(x => x.Id).Distinct()); if (allSignalList == null || allSignalList.Count < 1) return default; var vmList = new List(); foreach (var monitor in allMonitorList) { var signalList = allSignalList.Where(x => x.MonitorPointId == monitor.Id).OrderBy(x => x.SortCode).ToList(); if (signalList.Count < 1) continue; var vm = new Model.MonitorPoint_Signal_SignalType(monitor, signalList); vmList.Add(vm); } return vmList; } /// /// 根据 GroupIds 查询 /// public List GetExSignalWithSignalTypeByGroupIds (long projectId, IEnumerable groupIds) { if (groupIds == null || groupIds.Count() < 1) return default; var allMonitorList = GetByGroupIds(projectId, groupIds); if (allMonitorList == null || allMonitorList.Count < 1) return default; var allSignalList = new Signal().GetExSignalTypeByMonitorPointIds(projectId, allMonitorList.Select(x => x.Id).Distinct()); if (allSignalList == null || allSignalList.Count < 1) return default; var vmList = new List(); foreach (var monitor in allMonitorList) { var signalList = allSignalList.Where(x => x.MonitorPointId == monitor.Id).OrderBy(x => x.SortCode).ToList(); if (signalList.Count < 1) continue; var vm = new Model.MonitorPoint_Signal_SignalType(monitor, signalList); vmList.Add(vm); } return vmList; } /// /// 根据 GroupIds 查询 /// public List GetExSignalWithSignalTypeByGroupIds (long projectId, IEnumerable groupIds, Model.eMonitorType monitorType, Model.Monitor.eCronType cronType) { if (groupIds == null || groupIds.Count() < 1) return default; var allMonitorList = GetByGroupIds(projectId, groupIds, monitorType, cronType); if (allMonitorList == null || allMonitorList.Count < 1) return default; var allSignalList = new Signal().GetExSignalTypeByMonitorPointIds(projectId, allMonitorList.Select(x => x.Id).Distinct()); if (allSignalList == null || allSignalList.Count < 1) return default; var vmList = new List(); foreach (var monitor in allMonitorList) { var signalList = allSignalList.Where(x => x.MonitorPointId == monitor.Id).OrderBy(x => x.SortCode).ToList(); if (signalList.Count < 1) continue; var vm = new Model.MonitorPoint_Signal_SignalType(monitor, signalList); vmList.Add(vm); } return vmList; } /// /// 根据 BelongType 和 BelongId 查询 测点+信号+信号类型 /// public List GetExSignalWithSignalTypeByBelongTypeAndBelongId (long projectId, string belongType, long belongId) { var allMonitorList = GetByBelongTypeAndBelongId(projectId, belongType, belongId); if (allMonitorList == null || allMonitorList.Count < 1) return default; var allSignalList = new Signal().GetExSignalTypeByMonitorPointIds(projectId, allMonitorList.Select(x => x.Id).Distinct()); if (allSignalList == null || allSignalList.Count < 1) return default; var vmList = new List(); foreach (var monitor in allMonitorList) { var signalList = allSignalList.Where(x => x.MonitorPointId == monitor.Id).OrderBy(x => x.SortCode).ToList(); if (signalList.Count < 1) continue; var vm = new Model.MonitorPoint_Signal_SignalType(monitor, signalList); vmList.Add(vm); } return vmList; } /// /// 根据 BelongType 和 BelongId 查询 测点+信号+信号类型 /// public List GetExSignalWithSignalTypeByBelongTypeAndBelongId (long projectId, string belongType, long belongId, Model.eMonitorType monitorType) { var allMonitorList = GetByBelongTypeAndBelongId(projectId, belongType, belongId, monitorType); if (allMonitorList == null || allMonitorList.Count < 1) return default; var allSignalList = new Signal().GetExSignalTypeByMonitorPointIds(projectId, allMonitorList.Select(x => x.Id).Distinct()); if (allSignalList == null || allSignalList.Count < 1) return default; var vmList = new List(); foreach (var monitor in allMonitorList) { var signalList = allSignalList.Where(x => x.MonitorPointId == monitor.Id).OrderBy(x => x.SortCode).ToList(); if (signalList.Count < 1) continue; var vm = new Model.MonitorPoint_Signal_SignalType(monitor, signalList); vmList.Add(vm); } return vmList; } /// /// 根据 BelongType 和 BelongId 查询 测点+信号+信号类型 /// public List GetExSignalWithSignalTypeByBelongTypeAndBelongId (long projectId, string belongType, long belongId, Model.Monitor.eCronType cronType) { var allMonitorList = GetByBelongTypeAndBelongId(projectId, belongType, belongId, cronType); if (allMonitorList == null || allMonitorList.Count < 1) return default; var allSignalList = new Signal().GetExSignalTypeByMonitorPointIds(projectId, allMonitorList.Select(x => x.Id).Distinct()); if (allSignalList == null || allSignalList.Count < 1) return default; var vmList = new List(); foreach (var monitor in allMonitorList) { var signalList = allSignalList.Where(x => x.MonitorPointId == monitor.Id).OrderBy(x => x.SortCode).ToList(); if (signalList.Count < 1) continue; var vm = new Model.MonitorPoint_Signal_SignalType(monitor, signalList); vmList.Add(vm); } return vmList; } /// /// 根据 BelongType 和 BelongId 查询 测点+信号+信号类型 /// public List GetExSignalWithSignalTypeByBelongTypeAndBelongId (long projectId, string belongType, long belongId, Model.eMonitorType monitorType, Model.Monitor.eCronType cronType) { var allMonitorList = GetByBelongTypeAndBelongId(projectId, belongType, belongId, monitorType, cronType); if (allMonitorList == null || allMonitorList.Count < 1) return default; var allSignalList = new Signal().GetExSignalTypeByMonitorPointIds(projectId, allMonitorList.Select(x => x.Id).Distinct()); if (allSignalList == null || allSignalList.Count < 1) return default; var vmList = new List(); foreach (var monitor in allMonitorList) { var signalList = allSignalList.Where(x => x.MonitorPointId == monitor.Id).OrderBy(x => x.SortCode).ToList(); if (signalList.Count < 1) continue; var vm = new Model.MonitorPoint_Signal_SignalType(monitor, signalList); vmList.Add(vm); } return vmList; } #endregion #endregion #region Insert /// /// 插入 /// public long Insert(long projectId, Model.MonitorPoint model) { if (projectId < 1) return default; if (model == null) return default; var entities = Model2Entity(model); var Id = _dal.Insert(projectId, entities); if (Id > 0) { UpdateProjectCache(projectId, Id); } return Id; } /// /// 批量插入 /// public bool Inserts(long projectId, IEnumerable list) { if (projectId < 1) return default; if (list == null || list.Count() < 1) return default; var entities = Model2Entities(list.ToList()); var Ids = _dal.InsertsR(projectId, entities); if (Ids != null && Ids.Count > 0) { UpdateProjectCache(projectId, Ids); return true; } return false; } #endregion #region Update /// /// 更新 /// public bool Update(long projectId, Model.MonitorPoint model) { if (projectId < 1) return default; if (model == null) return default; if (model.Id < 1) return default; var entities = Model2Entity(model); var bol = _dal.Update(projectId, entities); if (bol) { UpdateProjectCache(projectId, model.Id); } return bol; } /// /// 批量更新 /// public bool Updates(long projectId, List list) { if (projectId < 1) return default; if (list == null || list.Count() < 1) return default; if (list.ToList().Exists(x => x.Id < 1)) return default; var entities = Model2Entities(list.ToList()); var bol = _dal.Updates(projectId, entities); if (bol) { UpdateProjectCache(projectId, list.Select(x => x.Id).ToList()); } return bol; } #endregion #region Exist /// /// 根据 Id 判断是否存在 /// public bool IsExistById(long projectId, long Id) { var all = GetAll(projectId); return all.Exists(x => x.Id == Id); } #endregion #region Delete /// /// 根据 Id 删除 /// public bool DeleteById(long projectId, long Id, out string msg) { msg = string.Empty; var bol = _dal.DeleteById(projectId, Id); if (bol) { RemoveProjectCache(projectId, Id); } return bol; } #endregion #region Cover /// /// 批量覆盖 /// public bool Covers(long projectId, IEnumerable list) { if (projectId < 1) return default; if (list == null || list.Count() < 1) return default; var entities = Model2Entities(list.ToList()); var bol = _dal.Covers(projectId, entities); if (bol) { MonitorPointCacheHelper.Remove(projectId); } return bol; } /// /// 批量覆盖并返回 /// public List CoversR(long projectId, IEnumerable list) { if (projectId < 1) return default; if (list == null || list.Count() < 1) return default; var entities = Model2Entities(list.ToList()); var models = _dal.CoversR(projectId, entities); if (models != null && models.Count > 0) { MonitorPointCacheHelper.Remove(projectId); } return models; } /// /// 覆盖 /// public bool CoverEx(long projectId, IEnumerable list) { if (list == null || list.Count() < 1) return default; if (list.ToList().Exists(x => x.SignalList == null || x.SignalList.Count < 1)) return default; var monitorPints = new List(); var signals = new List(); var dict = new Dictionary>(); foreach (var item in list) { monitorPints.Add(item); signals.AddRange(item.SignalList); } if (!(Covers(projectId, monitorPints) && new Signal().Covers(projectId, signals))) { return false; } MonitorPointCacheHelper.Remove(projectId); SignalCacheHelper.Remove(projectId); return true; } #endregion } }