| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372 | using System;using System.Collections.Generic;using System.Data;using Aitex.Core.RT.DBCore;using Aitex.Core.RT.Event;using Aitex.Core.RT.Log;using Aitex.Core.RT.OperationCenter;using Aitex.Core.Util;using MECF.Framework.Common.DBCore;namespace MECF.Framework.Common.DataCenter{    public class ScheduleMaintenanceData    {        public ScheduleMaintenanceDataItem DataItem { get; private set; }        public ScheduleMaintenanceData(string item, string display, string unit, float startValue, float limitValue, string maintenanceProcessing, string path, string additionInformationName = "", string additionInformationDisplay = "")        {            ScheduleMaintenanceDataManager.Instance.Subscribe(item, display, unit, startValue, limitValue, maintenanceProcessing, path, additionInformationName, additionInformationDisplay);            DataItem = ScheduleMaintenanceDataManager.Instance.GetItem(item);        }        public float SetLimitValue(float value)        {            return ScheduleMaintenanceDataManager.Instance.SetLimitValue(DataItem.Item, value);        }        public string SetMaintenanceProcessing(string value)        {            return ScheduleMaintenanceDataManager.Instance.SetMaintenanceProcessing(DataItem.Item, value);        }        public void SetValue(float value)        {            ScheduleMaintenanceDataManager.Instance.SetValue(DataItem.Item, value);        }        public float GetValue()        {            return ScheduleMaintenanceDataManager.Instance.GetValue(DataItem.Item);        }        public float Increase(float additionValue = 1)        {            return ScheduleMaintenanceDataManager.Instance.Increase(DataItem.Item, additionValue);        }    }    public class ScheduleMaintenanceDataItem    {        public string Unit { get; set; }        public string Item { get; set; }        public float CurrentValue { get; set; }        public float StartValue { get; set; }        public float LimitValue { get; set; }        public string MaintenanceProcessing { get; set; }        public string Display { get; set; }        public string Path { get; set; }        public string AdditionInformationName { get; set; }        public string AdditionInformationDisplay { get; set; }    }    public class ScheduleMaintenanceDataManager : Singleton<ScheduleMaintenanceDataManager>    {        private Dictionary<string, ScheduleMaintenanceDataItem> _items = new Dictionary<string, ScheduleMaintenanceDataItem>();        public Dictionary<string, ScheduleMaintenanceDataItem> Item { get => _items; }        private object _locker = new object();        public ScheduleMaintenanceDataManager()        {        }        public void Initialize()        {            try            {                OP.Subscribe("System.ScheduleMaintenance.SetCurrentValue", (method, args) =>                {                    float.TryParse(args[1].ToString(), out float value);                    SetValue((string)args[0], value);                    return true;                });                OP.Subscribe("System.ScheduleMaintenance.SetMaintenanceName", (method, args) =>                {                    SetMaintenanceName((string)args[0], args[1].ToString());                    return true;                });                OP.Subscribe("System.ScheduleMaintenance.SetMaintenanceProcessing", (method, args) =>                {                    SetMaintenanceProcessing((string)args[0], args[1].ToString());                    return true;                });                OP.Subscribe("System.ScheduleMaintenance.SetLimitValue", (method, args) =>                {                    float.TryParse(args[1].ToString(), out float value);                    SetLimitValue((string)args[0], value);                    return true;                });                OP.Subscribe("System.ScheduleMaintenance.SetStartValue", (method, args) =>                {                    float.TryParse(args[1].ToString(), out float value);                    SetStartValue((string)args[0], value);                    return true;                });                OP.Subscribe("System.ScheduleMaintenance.SetAdditionInformationDisplayName", (method, args) =>                {                    SetMaintenanceName((string)args[0], args[1].ToString());                    return true;                });                DataTable dt = DataQuery.Query("select * from \"schedule_maintenance\"");                for (int i = 0; i < dt.Rows.Count; i++)                {                    ScheduleMaintenanceDataItem item = new ScheduleMaintenanceDataItem();                    item.Item = dt.Rows[i]["maintenance_item"].ToString();                    item.Display = dt.Rows[i]["maintenance_display"].ToString();                    item.Unit = dt.Rows[i]["unit"].ToString();                    item.MaintenanceProcessing = dt.Rows[i]["maintenance_processing"].ToString();                    item.Path = dt.Rows[i]["path"].ToString();                    item.AdditionInformationName = dt.Rows[i]["addition_information_name"].ToString();                    item.AdditionInformationDisplay = dt.Rows[i]["addition_information_display"].ToString();                    if (float.TryParse(dt.Rows[i]["current_value"].ToString(), out float value))                        item.CurrentValue = value;                    if (float.TryParse(dt.Rows[i]["scheduling_start_value"].ToString(), out value))                        item.StartValue = value;                    if (float.TryParse(dt.Rows[i]["maintenance_limit_value"].ToString(), out value))                        item.LimitValue = value;                    _items[item.Item] = item;                }            }            catch (Exception ex)            {                LOG.Error("init stats data manager failed", ex);            }        }        public string SetMaintenanceName(string name, string display)        {            lock (_locker)            {                if (!_items.ContainsKey(name))                {                    LOG.Error($"Can not set {name} maintenanceName value, not defined item");                    return "";                }                string preValue = _items[name].Display;                _items[name].Display = display;                string sql = string.Format(                    "UPDATE \"schedule_maintenance\" SET \"maintenance_processing\"='{0}'WHERE \"maintenance_item\"='{1}';", display,                    name);                DB.Insert(sql);                EV.PostInfoLog("System", $"{name} schedule maintenance maintenanceName value changed from {preValue} to {display}");                return display;            }        }        public string SetAdditionInformationDisplayName(string name, string display)        {            lock (_locker)            {                if (!_items.ContainsKey(name))                {                    LOG.Error($"Can not set {name} AdditionInformationDispla value, not defined item");                    return "";                }                string preValue = _items[name].AdditionInformationDisplay;                _items[name].AdditionInformationDisplay = display;                string sql = string.Format(                    "UPDATE \"schedule_maintenance\" SET \"addition_information_display\"='{0}'WHERE \"maintenance_item\"='{1}';", display,                    name);                DB.Insert(sql);                EV.PostInfoLog("System", $"{name} schedule maintenance AdditionInformationDisplay value changed from {preValue} to {display}");                return display;            }        }                public string SetMaintenanceProcessing(string name, string maintenanceProcessing)        {            lock (_locker)            {                if (!_items.ContainsKey(name))                {                    LOG.Error($"Can not set {name} maintenanceProcessing value, not defined item");                    return "";                }                string preValue = _items[name].MaintenanceProcessing;                _items[name].MaintenanceProcessing = maintenanceProcessing;                string sql = string.Format(                    "UPDATE \"schedule_maintenance\" SET \"maintenance_processing\"='{0}'WHERE \"maintenance_item\"='{1}';", maintenanceProcessing,                    name);                DB.Insert(sql);                EV.PostInfoLog("System", $"{name} schedule maintenance MaintenanceProcessing value changed from {preValue} to {maintenanceProcessing}");                return maintenanceProcessing;            }        }        public float SetLimitValue(string name, float value)        {            lock (_locker)            {                if (!_items.ContainsKey(name))                {                    LOG.Error($"Can not set {name} limit value, not defined item");                    return -1;                }                float preValue = _items[name].LimitValue;                _items[name].LimitValue = value;                string sql = string.Format(                    "UPDATE \"schedule_maintenance\" SET \"maintenance_limit_value\"='{0}'WHERE \"maintenance_item\"='{1}';", _items[name].LimitValue,                    name);                DB.Insert(sql);                EV.PostInfoLog("System", $"{name} schedule maintenance limit value changed from {preValue} to {value}");                return preValue;            }        }        public void Terminate()        {        }        public void Subscribe(string item, string display, string unit, float startValue, float limitValue, string maintenanceProcessing, string path, string additionInformationName, string additionInformationDisplay)        {            lock (_locker)            {                if (!_items.ContainsKey(item))                {                    _items[item] = new ScheduleMaintenanceDataItem()                    { Display = display, Item = item };                    string executeInsert = string.Format(                        @"Insert into ""schedule_maintenance""(""maintenance_item"",                                                    ""maintenance_display"",                                                    ""scheduling_start_value"",                                                    ""maintenance_limit_value"",                                                    ""maintenance_processing"",                                                    ""unit"",                                                    ""path"",                                                    ""addition_information_name"",                                                    ""addition_information_display""                                                    ) values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}')",                        item, display, startValue, limitValue, maintenanceProcessing, unit, path, additionInformationName, additionInformationDisplay);                    DB.Insert(executeInsert);                }            }        }        public void SetValue(string name, float value)        {            lock (_locker)            {                if (!_items.ContainsKey(name))                {                    LOG.Error($"Can not set {name} value, not defined item");                    return;                }                _items[name].CurrentValue = value;                string sql = string.Format(                    "UPDATE \"schedule_maintenance\" SET \"current_value\"='{0}' WHERE \"maintenance_item\"='{1}';",                    _items[name].CurrentValue,                    name);                DB.Insert(sql);            }        }        public void SetStartValue(string name, float value)        {            lock (_locker)            {                if (!_items.ContainsKey(name))                {                    LOG.Error($"Can not set {name} scheduling_start_value, not defined item");                    return;                }                _items[name].StartValue = value;                string sql = string.Format(                    "UPDATE \"schedule_maintenance\" SET \"scheduling_start_value\"='{0}' WHERE \"maintenance_item\"='{1}';",                    _items[name].StartValue,                    name);                DB.Insert(sql);            }        }        public float GetValue(string name)        {            lock (_locker)            {                if (_items.ContainsKey(name))                {                    return _items[name].CurrentValue;                }            }            LOG.Error($"Can not get {name} value, not defined item");            return 0;        }        public ScheduleMaintenanceDataItem GetItem(string name)        {            lock (_locker)            {                if (_items.ContainsKey(name))                {                    return _items[name];                }            }            LOG.Error($"Can not get {name} value, not defined item");            return null;        }        public bool CheckHasItem(string name)        {            if (_items.ContainsKey(name))                return true;            else                return false;        }        public float Increase(string name, float additionValue = 1)        {            lock (_locker)            {                if (!_items.ContainsKey(name))                {                    LOG.Error($"Can not increase {name} value, not defined item");                    return -1;                }                _items[name].CurrentValue += additionValue;                string sql = string.Format(                    "UPDATE \"schedule_maintenance\" SET \"current_value\"='{0}' WHERE \"maintenance_item\"='{1}';",                    _items[name].CurrentValue,                    name);                DB.Insert(sql);                return _items[name].CurrentValue;            }        }    }}
 |