using Yw.Hydro;
using Yw.Model;
using Yw.Service;
namespace Yw.WinFrmUI
{
///
/// 构件属性辅助类
///
public class HydroPropStatusHelper
{
///
///
///
public HydroPropStatusHelper
(
Yw.Model.HydroModelInfo hydroInfo,
List allPropStatusDbList
)
{
_hydroInfo = hydroInfo;
_dict = _hydroInfo.ToPropStatusInfoDict(allPropStatusDbList);
}
private Yw.Model.HydroModelInfo _hydroInfo = null;//水力信息
private Dictionary> _dict = null;//字典
private Dictionary> _dictUpdate = null;//更新字典
///
/// 获取属性状态信息
///
public HydroParterPropStatusInfo GetPropStatusInfo(string code, string propNameInfo)
{
if (string.IsNullOrEmpty(code))
{
return default;
}
if (string.IsNullOrEmpty(propNameInfo))
{
return default;
}
if (_dict == null)
{
_dict = new Dictionary>();
}
if (!_dict.ContainsKey(code))
{
_dict.Add(code, new List());
}
if (_dict[code] == null)
{
_dict[code] = new List();
}
var list = _dict[code];
var propStatusInfo = list.Find(x => x.PropName == propNameInfo);
return propStatusInfo;
}
///
/// 获取属性状态Db列表
///
public List GetPropStatusDbList()
{
return _hydroInfo.ToPropStatusDbList(_dict);
}
///
/// 获取更新属性状态Db列表
///
///
public List GetUpdatePropStatusDbList()
{
return _hydroInfo.ToPropStatusDbList(_dictUpdate);
}
///
/// 重置
///
public void Reset()
{
_dictUpdate?.Clear();
}
///
/// 更新属性状态
///
public void UpdatePropStatus(Yw.Model.HydroParterInfo parter, string propNameInfo, ePropStatus propStatus, string statusInfo)
{
UpdatePropStatus(parter?.Code, propNameInfo, propStatus, statusInfo);
}
///
/// 更新属性状态
///
public void UpdatePropStatus(string code, string propNameInfo, ePropStatus propStatus, string statusInfo)
{
if (string.IsNullOrEmpty(code))
{
return;
}
if (string.IsNullOrEmpty(propNameInfo))
{
return;
}
if (_dict == null)
{
_dict = new Dictionary>();
}
if (!_dict.ContainsKey(code))
{
_dict.Add(code, new List());
}
if (_dict[code] == null)
{
_dict[code] = new List();
}
var list = _dict[code];
var propStatusInfo = list.Find(x => x.PropName == propNameInfo);
if (propStatusInfo == null)
{
propStatusInfo = new HydroParterPropStatusInfo()
{
Parter = code,
PropName = propNameInfo
};
list.Add(propStatusInfo);
}
propStatusInfo.PropStatus = propStatus;
propStatusInfo.StatusInfo = statusInfo;
AppendUpdatePropStatus(propStatusInfo);
}
//附加更新属性状态
private void AppendUpdatePropStatus(HydroParterPropStatusInfo propStatusInfo)
{
if (propStatusInfo == null)
{
return;
}
if (string.IsNullOrEmpty(propStatusInfo.Parter))
{
return;
}
if (string.IsNullOrEmpty(propStatusInfo.PropName))
{
return;
}
if (_dictUpdate == null)
{
_dictUpdate = new Dictionary>();
}
if (!_dictUpdate.ContainsKey(propStatusInfo.Parter))
{
_dictUpdate.Add(propStatusInfo.Parter, new List());
}
if (_dictUpdate[propStatusInfo.Parter] == null)
{
_dictUpdate[propStatusInfo.Parter] = new List();
}
var list = _dictUpdate[propStatusInfo.Parter];
list.RemoveAll(x => x.PropName == propStatusInfo.PropName);
list.Add(propStatusInfo);
}
}
}