using IStation.Untity;
|
using System.Collections.Generic;
|
using System.Linq;
|
|
namespace IStation.BLL
|
{
|
/// <summary>
|
/// É豸
|
/// </summary>
|
public partial class Equipment
|
{
|
private readonly DAL.Equipment _dal = new DAL.Equipment();
|
|
#region Cache
|
|
// »ñÈ¡»º´æ
|
private List<Model.Equipment> GetCache()
|
{
|
return CacheHelper<Model.Equipment>.GetSet(SettingsD.Project.ID, () =>
|
{
|
var entities = _dal.GetAll();
|
var models = Entity2Models(entities);
|
if (models == null)
|
{
|
models = new List<Model.Equipment>();
|
}
|
return models;
|
}, ConfigHelper.CacheKeepTime, ConfigHelper.CacheRandomTime);
|
}
|
|
// ¸üлº´æ
|
private void UpdateCache(long id)
|
{
|
if (id < 1)
|
return;
|
var entities = _dal.GetByID(id);
|
var models = Entity2Model(entities);
|
var all = GetCache();
|
var model = all.Find(x => x.ID == id);
|
if (model == null)
|
{
|
all.Add(models);
|
}
|
else
|
{
|
model.Reset(models);
|
}
|
}
|
|
// ¸üлº´æ
|
private void UpdateCache(List<long> ids)
|
{
|
if (ids == null || ids.Count() < 1)
|
return;
|
var entities = _dal.GetByIds(ids);
|
var models = Entity2Models(entities);
|
var all = GetCache();
|
all.RemoveAll(x => ids.Contains(x.ID));
|
if (models != null && models.Count > 0)
|
{
|
all.AddRange(models);
|
}
|
}
|
|
// ÒÆ³ý»º´æ
|
private void RemoveCache(long id)
|
{
|
if (id < 1)
|
return;
|
var all = GetCache();
|
all.RemoveAll(x => x.ID == id);
|
}
|
|
// ÒÆ³ý»º´æ
|
private void RemoveCache(List<long> ids)
|
{
|
if (ids == null || ids.Count() < 1)
|
return;
|
var all = GetCache();
|
all.RemoveAll(x => ids.Contains(x.ID));
|
}
|
|
#endregion
|
|
#region Get
|
|
/// <summary>
|
/// ²éѯȫ²¿
|
/// </summary>
|
public List<Model.Equipment> GetAll()
|
{
|
var all = GetCache();
|
return all.OrderBy(x => x.SortCode).ToList();
|
}
|
|
/// <summary>
|
/// ²éѯȫ²¿±Ã
|
/// </summary>
|
public List<Model.Equipment<Model.Pump>> GetAllPump()
|
{
|
var all = GetAll();
|
var pumps = all?.Where(x => x.Catalog == IStation.Equipment.Pump).ToList();
|
if (pumps == null || !pumps.Any())
|
return default;
|
var list = pumps.Select(x => new Model.Equipment<Model.Pump>(x)).ToList();
|
return list;
|
}
|
|
/// <summary>
|
/// ¸ù¾Ý ID²éѯ
|
/// </summary>
|
public Model.Equipment GetByID(long id)
|
{
|
var all = GetAll();
|
return all.Find(x => x.ID == id);
|
}
|
|
/// <summary>
|
/// ¸ù¾Ý Ids ²éѯ
|
/// </summary>
|
public List<Model.Equipment> GetByIds(IEnumerable<long> ids)
|
{
|
if (ids == null || ids.Count() < 1)
|
return default;
|
var all = GetAll();
|
return all.Where(x => ids.Contains(x.ID)).ToList();
|
}
|
|
/// <summary>
|
/// ¸ù¾Ý Catalog ²éѯ
|
/// </summary>
|
public List<Model.Equipment> GetByCatalog(string catalog)
|
{
|
var all = GetAll();
|
return all.Where(x => x.Catalog == catalog).OrderBy(x => x.ParentIds.Count).ThenBy(x => x.SortCode).ToList();
|
}
|
|
/// <summary>
|
/// ¸ù¾Ý BelongType ºÍ BelongID ²éѯ
|
/// </summary>
|
public List<Model.Equipment> GetByBelongTypeAndBelongID(string belongType, long belongId)
|
{
|
var all = GetAll();
|
return all.Where(x => x.BelongType == belongType && x.BelongID == belongId).OrderBy(x => x.ParentIds.Count).ThenBy(x => x.SortCode).ToList();
|
}
|
|
/// <summary>
|
/// ¸ù¾Ý BelongType ºÍ BelongIds ²éѯ
|
/// </summary>
|
public List<Model.Equipment> GetByBelongTypeAndBelongIds(string belongType, List<long> belongIds)
|
{
|
if (belongIds == null || belongIds.Count() < 1)
|
return default;
|
var all = GetAll();
|
return all.Where(x => x.BelongType == belongType && belongIds.Contains(x.BelongID)).OrderBy(x => x.ParentIds.Count).ThenBy(x => x.SortCode).ToList();
|
}
|
|
/// <summary>
|
/// ¸ù¾Ý BelongType ºÍ BelongID ºÍ GroupID ²éѯ
|
/// </summary>
|
public List<Model.Equipment> GetByBelongTypeAndBelongIDAndGroupID(string belongType, long belongId, long groupId)
|
{
|
var all = GetAll();
|
return all.Where(x => x.BelongType == belongType && x.BelongID == belongId && x.GroupID == groupId).OrderBy(x => x.ParentIds.Count).ThenBy(x => x.SortCode).ToList();
|
}
|
|
|
/// <summary>
|
/// ¸ù¾Ý ID ²éѯËùÓÐ×ÓÏî
|
/// </summary>
|
public List<Model.Equipment> GetChildrenByID(long id)
|
{
|
var all = GetAll();
|
return all.Where(x => x.ParentIds.Contains(id)).OrderBy(x => x.ParentIds.Count).ThenBy(x => x.SortCode).ToList();
|
}
|
|
/// <summary>
|
/// ¸ù¾Ý ID»ñÈ¡×ÓÏîºÍ×ÔÉí
|
/// </summary>
|
public List<Model.Equipment> GetChildAndSelfByID(long id)
|
{
|
var all = GetAll();
|
return all.Where(x => (x.ID == id) || x.ParentIds.Contains(id)).OrderBy(x => x.ParentIds.Count).ThenBy(x => x.SortCode).ToList();
|
}
|
|
/// <summary>
|
/// ¸ù¾Ý »ú±Ã»ñÈ¡×Ó±Ã
|
/// </summary>
|
public Model.Equipment<Model.Pump> GetChildPumpByEnginePumpID(long enginePumpId)
|
{
|
var all = GetAll();
|
var self = all.Find(x => x.ID == enginePumpId);
|
if (self == null)
|
return default;
|
if (self.Catalog != IStation.Equipment.EnginePump)
|
return default;
|
var children = all.Where(x => x.ParentIds.Contains(self.ID)).OrderBy(x => x.ParentIds.Count).ThenBy(x => x.SortCode).ToList();
|
var pump = children.Find(x => x.Catalog == IStation.Equipment.Pump);
|
if (pump == null)
|
return default;
|
return new Model.Equipment<Model.Pump>(pump);
|
}
|
|
/// <summary>
|
/// ¸ù¾Ý »ú±Ã»ñÈ¡×Óµç»ú
|
/// </summary>
|
public Model.Equipment<Model.Motor> GetChildMotorByEnginePumpID(long enginePumpId)
|
{
|
var all = GetAll();
|
var self = all.Find(x => x.ID == enginePumpId);
|
if (self == null)
|
return default;
|
if (self.Catalog != IStation.Equipment.EnginePump)
|
return default;
|
var children = all.Where(x => x.ParentIds.Contains(self.ID)).OrderBy(x => x.ParentIds.Count).ThenBy(x => x.SortCode).ToList();
|
var motor = children.Find(x => x.Catalog == IStation.Equipment.Motor);
|
if (motor == null)
|
return default;
|
return new Model.Equipment<Model.Motor>(motor);
|
}
|
|
/// <summary>
|
/// ¸ù¾Ý BelongType ºÍ BelongID ²éѯ»ú±ÃÁбí
|
/// </summary>
|
public List<Model.Equipment<Model.EnginePump>> GetEnginePumpListByBelongTypeAndBelongID(string belongType, long belongId)
|
{
|
var all = GetByBelongTypeAndBelongID(belongType, belongId);
|
var engine_pump_list = all?.Where(x => x.Catalog == IStation.Equipment.EnginePump).OrderBy(x => x.SortCode).ToList();
|
if (engine_pump_list == null || engine_pump_list.Count < 1)
|
return default;
|
return engine_pump_list.Select(x => new Model.Equipment<Model.EnginePump>(x)).ToList();
|
}
|
|
/// <summary>
|
/// ²éѯ»ú±Ã
|
/// </summary>
|
public Model.Equipment<Model.EnginePump> GetEnginePumpByID(long id)
|
{
|
var all = GetAll();
|
var engine_pump = all?.Find(x => x.Catalog == IStation.Equipment.EnginePump && x.ID == id);
|
if (engine_pump == null)
|
return default;
|
return new Model.Equipment<Model.EnginePump>(engine_pump);
|
}
|
|
/// <summary>
|
/// ¸ù¾Ý BelongType ºÍ BelongID ²éѯ±ÃÁбí
|
/// </summary>
|
public List<Model.Equipment<Model.Pump>> GetPumpListByBelongTypeAndBelongID(string belongType, long belongId)
|
{
|
var all = GetByBelongTypeAndBelongID(belongType, belongId);
|
var engine_pump_list = all?.Where(x => x.Catalog == IStation.Equipment.Pump).OrderBy(x => x.SortCode).ToList();
|
if (engine_pump_list == null || engine_pump_list.Count < 1)
|
return default;
|
return engine_pump_list.Select(x => new Model.Equipment<Model.Pump>(x)).ToList();
|
}
|
|
/// <summary>
|
/// ¸ù¾Ý BelongType ºÍ BelongID ²éѯ±ÃÁбí
|
/// </summary>
|
public List<Model.Equipment<Model.PumpModel>> GetPumpModelListByBelongTypeAndBelongID(string belongType, long belongId)
|
{
|
var all = GetByBelongTypeAndBelongID(belongType, belongId);
|
var engine_pump_list = all?.Where(x => x.Catalog == IStation.Equipment.Pump).OrderBy(x => x.SortCode).ToList();
|
if (engine_pump_list == null || engine_pump_list.Count < 1)
|
return default;
|
return engine_pump_list.Select(x => new Model.Equipment<Model.PumpModel>(x)).ToList();
|
}
|
#endregion
|
|
#region Insert
|
|
/// <summary>
|
/// ²åÈë
|
/// </summary>
|
public long Insert(Model.Equipment model)
|
{
|
if (model == null)
|
return default;
|
var entity = Model2Entity(model);
|
var ID = _dal.Insert(entity);
|
if (ID > 0)
|
{
|
UpdateCache(ID);
|
}
|
return ID;
|
}
|
|
/// <summary>
|
/// ÅúÁ¿²åÈë
|
/// </summary>
|
public bool Inserts(List<Model.Equipment> models)
|
{
|
if (models == null || models.Count() < 1)
|
return default;
|
var entities = Model2Entities(models.ToList());
|
var ids = _dal.InsertsR(entities);
|
if (ids != null && ids.Count > 0)
|
{
|
UpdateCache(ids);
|
return true;
|
}
|
return false;
|
}
|
|
#endregion
|
|
#region Update
|
|
/// <summary>
|
/// ¸üÐÂ
|
/// </summary>
|
public bool Update(Model.Equipment model)
|
{
|
if (model == null)
|
return default;
|
if (model.ID < 1)
|
return default;
|
var entity = Model2Entity(model);
|
var bol = _dal.Update(entity);
|
if (bol)
|
{
|
UpdateCache(model.ID);
|
}
|
return bol;
|
}
|
|
/// <summary>
|
/// ÅúÁ¿¸üÐÂ
|
/// </summary>
|
public bool Updates(List<Model.Equipment> models)
|
{
|
if (models == null || models.Count() < 1)
|
return default;
|
if (models.ToList().Exists(x => x.ID < 1))
|
return default;
|
var entities = Model2Entities(models.ToList());
|
var bol = _dal.Updates(entities);
|
if (bol)
|
{
|
UpdateCache(models.Select(x => x.ID).ToList());
|
}
|
return bol;
|
}
|
|
/// <summary>
|
/// ¸üÐÂÅÅÐòÂë
|
/// </summary>
|
public bool UpdateSortCode(long id, int sortCode)
|
{
|
if (id < 1)
|
return false;
|
var bol = _dal.UpdateSortCode(id, sortCode);
|
if (bol)
|
{
|
UpdateCache(id);
|
}
|
return bol;
|
}
|
|
/// <summary>
|
/// ¸üÐÂÅÅÐò
|
/// </summary>
|
public virtual bool UpdateSorter(List<Model.Sorter> sorters)
|
{
|
if (sorters == null || sorters.Count() < 1)
|
return default;
|
if (sorters.Exists(x => x.ID < 1))
|
return default;
|
var entities = sorters.Model2Entities();
|
var bol = _dal.UpdateSorter(entities);
|
if (bol)
|
{
|
var ids = entities.Select(x => x.ID).ToList();
|
UpdateCache(ids);
|
}
|
return bol;
|
}
|
|
/// <summary>
|
/// ¸üРFlags
|
/// </summary>
|
public virtual bool UpdateFlags(long id, List<string> flags)
|
{
|
if (id < 1)
|
return false;
|
var bol = _dal.UpdateFlags(id, FlagsHelper.ToString(flags));
|
if (bol)
|
{
|
UpdateCache(id);
|
}
|
return bol;
|
}
|
|
/// <summary>
|
/// ¸üРTagName
|
/// </summary>
|
public bool UpdateTagName(long id, string tagName)
|
{
|
if (id < 1)
|
return false;
|
var bol = _dal.UpdateTagName(id, tagName);
|
if (bol)
|
{
|
UpdateCache(id);
|
}
|
return bol;
|
}
|
|
/// <summary>
|
/// ¸üРUseStatus
|
/// </summary>
|
public virtual bool UpdateUseStatus(long id, int useStatus)
|
{
|
if (id < 1)
|
return false;
|
var bol = _dal.UpdateUseStatus(id, useStatus);
|
if (bol)
|
{
|
UpdateCache(id);
|
}
|
return bol;
|
}
|
|
#endregion
|
|
#region Exist
|
|
/// <summary>
|
/// ¸ù¾Ý ID ÅжÏÊÇ·ñ´æÔÚ
|
/// </summary>
|
public bool IsExistByID(long id)
|
{
|
var all = GetAll();
|
return all.Exists(x => x.ID == id);
|
}
|
|
/// <summary>
|
/// ÅжÏTagNameÊÇ·ñ´æÔÚ
|
/// </summary>
|
public bool IsExistTagName(string tagName)
|
{
|
if (string.IsNullOrEmpty(tagName))
|
return default;
|
var all = GetAll();
|
if (all == null || all.Count < 1)
|
return default;
|
return all.Exists(x => !string.IsNullOrEmpty(x.TagName) && x.TagName.ToUpper() == tagName.ToUpper());
|
}
|
|
/// <summary>
|
/// ÅжÏTagNameÊÇ·ñ´æÔÚ ExceptID
|
/// </summary>
|
public bool IsExistTagNameExceptID(string tagName, long exceptID)
|
{
|
if (string.IsNullOrEmpty(tagName))
|
return default;
|
var all = GetAll();
|
if (all == null || all.Count < 1)
|
return default;
|
return all.Exists(x => !string.IsNullOrEmpty(x.TagName) && x.TagName.ToUpper() == tagName.ToUpper() && x.ID != exceptID);
|
}
|
|
#endregion
|
|
#region Delete
|
|
/// <summary>
|
/// ͨ¹ýIDɾ³ý
|
/// </summary>
|
public bool DeleteByID(long id, out string msg)
|
{
|
msg = string.Empty;
|
var ids = new List<long>() { id };
|
var children = GetChildrenByID(id);
|
if (children != null && children.Any())
|
{
|
children.ForEach(x => ids.Add(x.ID));
|
}
|
var bol = _dal.DeleteByIds(ids);
|
if (bol)
|
{
|
RemoveCache(ids);
|
}
|
return bol;
|
}
|
|
#endregion
|
|
#region Cover
|
|
/// <summary>
|
/// ÅúÁ¿¸²¸Ç
|
/// </summary>
|
public bool Covers(List<Model.Equipment> models)
|
{
|
if (models == null || models.Count() < 1)
|
return default;
|
var entities = Model2Entities(models);
|
var bol = _dal.Covers(entities);
|
if (bol)
|
{
|
CacheHelper<Model.Equipment>.Remove(SettingsD.Project.ID);
|
}
|
return bol;
|
}
|
|
#endregion
|
|
#region Copy
|
|
/// <summary>
|
/// ÅúÁ¿¸²¸Ç
|
/// </summary>
|
public long Copy(long ID)
|
{
|
var model = GetByID(ID);
|
if (model == null)
|
return default;
|
var children = GetChildrenByID(ID);
|
return Copy(model.ParentIds, model, children);
|
}
|
|
/// <summary>
|
/// ¸´ÖÆ
|
/// </summary>
|
private long Copy(List<long> parentIds, Model.Equipment op, List<Model.Equipment> list)
|
{
|
var np = new Model.Equipment(op);
|
np.ID = 0;
|
np.ParentIds = parentIds;
|
np.Name = op.Name + "(¸´ÖÆ)";
|
np.SortCode += 1;
|
np.ID = Insert(np);
|
if (list != null && list.Count() > 0)
|
{
|
var flag = string.Format(",{0},", op.ID);
|
var allChilds = list.Where(x => x.ParentIds != null && x.ParentIds.LastOrDefault() == op.ID).ToList();
|
if (allChilds != null && allChilds.Count > 0)
|
{
|
var pids = TreeParentIdsHelper.GetChildParentIds(np.ID, np.ParentIds);
|
allChilds.ForEach(x => Copy(pids, x, list));
|
}
|
}
|
return np.ID;
|
}
|
|
#endregion
|
}
|
}
|