Beispiel #1
0
        /// <summary>
        ///    同步设备状态
        /// </summary>
        /// <param name="CommunityID">社区</param>
        /// <param name="UserCode">用户代码</param>
        /// <param name="SysLogID">系统登录号</param>
        /// <param name="T133LeafID">设备叶子</param>
        /// <param name="T216LeafID">工序叶子</param>
        /// <param name="T102LeafID">产品叶子</param>
        /// <param name="ParamXML">设备状态值</param>
        /// <returns></returns>
        public string GetOPCStatus(string ExCode, int CommunityID, string UserCode
                                   , Int64 SysLogID, int T133LeafID, int T216LeafID, int T102LeafID
                                   , string ParamXML)
        {
            try
            {
                //解析设备状态值
                dynamic dn = ParamXML.GetSimpleObjectFromJson();
                Int64   Equipment_Running_Mode = (Boolean.Parse(dn.Equipment_Running_Mode.ToString()) == true)?1:0; // 设备运行模式
                Int64   Equipment_Power_On     = (Boolean.Parse(dn.Equipment_Power_On.ToString()) == true) ? 1 : 0; // 设备是否加电
                Int64   Equipment_Fail         = (Boolean.Parse(dn.Equipment_Fail.ToString()) == true) ? 1 : 0;     // 设备是否失效
                Int64   Tool_Fail            = (Boolean.Parse(dn.Tool_Fail.ToString()) == true) ? 1 : 0;            // 工装是否失效
                Int64   Cycle_Started        = (Boolean.Parse(dn.Cycle_Started.ToString()) == true) ? 1 : 0;        // 工序循环是否开始
                Int64   Equipment_Starvation = (Boolean.Parse(dn.Equipment_Starvation.ToString()) == true) ? 1 : 0; // 设备饥饿状态

                //Int64 Status = Equipment_Running_Mode * Int64.Parse(Math.Pow(2, 7).ToString())
                //              + Equipment_Power_On * Int64.Parse(Math.Pow(2, 9).ToString())
                //              + Equipment_Fail * 1L
                //              + Tool_Fail * Int64.Parse(Math.Pow(2, 10).ToString())
                //              + Cycle_Started * Int64.Parse(Math.Pow(2, 11).ToString())
                //              + Equipment_Starvation * Int64.Parse(Math.Pow(2, 1).ToString());
                Int64 Status = Equipment_Running_Mode * 128L
                               + Equipment_Power_On * 512L
                               + Equipment_Fail * 1L
                               + Tool_Fail * 1024L
                               + Cycle_Started * 2048L
                               + Equipment_Starvation * 2L;
                if (CommunityID == 0)
                {
                    CommunityID = 57280;
                }
                long PartitioningKey = CommunityID * 10000L + 133L;

                ReadConfig.Read();
                string conStr = ReadConfig.Parameters["ConnectionString"].ToString();

                #region 写入MongoDB日志
                SaveFactMongodbLog(ExCode, CommunityID, T133LeafID, SysLogID, T216LeafID, T102LeafID
                                   , 0, "", "", "", ParamXML);
                #endregion

                IDbContext IRAPMDMContext = DBContextFactory.Instance.CreateContext("IRAPMDMContext");      //使用IRAPMDM数据库
                var        _stb058        = IRAPMDMContext.Set <ETreeBizLeaf>()
                                            .Where(c => c.PartitioningKey == PartitioningKey && c.LeafID == T133LeafID)
                                            .FirstOrDefault();
                int    T133EntityID = _stb058.EntityID;
                string T133Code     = _stb058.Code;
                if (T133EntityID.ToString() == null)
                {
                    APIBag.ErrCode = 99999;
                    APIBag.ErrText = "无效的设备叶标识:" + T133EntityID + ",事件:GetOPCStatus加载完成";
                    return(JsonConvert.SerializeObject(APIBag));
                }
                var _stb060 = IRAPMDMContext.Set <ETreeBiz060>()
                              .Where(c => c.PartitioningKey == PartitioningKey && c.EntityID == T133EntityID)
                              .FirstOrDefault();
                if (_stb060 == null)
                {
                    APIBag.ErrCode = 99998;
                    APIBag.ErrText = "设备:" + T133Code + "基础信息不完整,事件:GetOPCStatus加载完成";
                    return(JsonConvert.SerializeObject(APIBag));
                }
                _stb060.EntityStatus = Status;
                IRAPMDMContext.SaveChanges();

                APIBag.ErrCode = 0;
                APIBag.ErrText = "设备:" + T133Code + "状态属性属性已经更新,事件:GetOPCStatus加载完成";
                return(JsonConvert.SerializeObject(APIBag));

                /****
                 *调用脚本的方式
                 * int resultData = 0;
                 * //string updateSql = "update IRAPMDM..stb060 SET EntityStatus= "+ Status +
                 * //    "  WHERE PartitioningKey=" + PartitioningKey + " AND EntityID=" + T133EntityID;
                 * //using (var con = new SqlConnection(conStr))
                 * //{
                 * //    try
                 * //    {
                 * //        resultData = con.Execute(updateSql, null);
                 * //    }
                 * //    catch (Exception ex)
                 * //    {
                 * //        throw ex;
                 * //    }
                 * //}
                 #region 写入MongoDB日志
                 * SaveFactMongodbLog(ExCode,CommunityID, T133LeafID, SysLogID, T216LeafID, T102LeafID
                 *              , 0, "", "", "", ParamXML);
                 #endregion
                 * if (resultData > 0)
                 * {
                 *  APIBag.ErrCode = 0;
                 *  APIBag.ErrText = "设备:" + T133Code + "状态属性属性已经更新,事件:GetOPCStatus加载完成";
                 *  return JsonConvert.SerializeObject(APIBag);
                 * }
                 * else
                 * {
                 *  APIBag.ErrCode = 9999;
                 *  APIBag.ErrText = "设备:" + T133Code + "状态属性属性更新0行,事件:GetOPCStatus加载完成";
                 *  return JsonConvert.SerializeObject(APIBag);
                 * }
                 ***/
            }
            catch (Exception err) //异常捕获
            {
                APIBag.ErrCode = 9999;
                APIBag.ErrText = "发生异常:" + err.Message;
                return(JsonConvert.SerializeObject(APIBag));
            }
        }
Beispiel #2
0
        public async Task RunAsync()
        {
            ReadConfig.Read();
            var  varrepo = new VariableRepository(ReadConfig.Config.ConnectionString);
            bool result;

#if DEBUG
            result = varrepo.Read(3, out Variable prefix);             //get testPrefix if in designmode
#else
            result = varrepo.Read(2, out Variable prefix);             //otherwise get default prefix
#endif
            DiscordConfiguration config = new DiscordConfiguration
            {
                Token         = ReadConfig.Config.Token,
                TokenType     = TokenType.Bot,
                AutoReconnect = true,
#if DEBUG
                MinimumLogLevel = Microsoft.Extensions.Logging.LogLevel.Debug,
#endif
                Intents = DiscordIntents.All
            };

            Client = new DiscordClient(config);

            //Register client events
            Client.Ready += Events.OnClientReady;
            Client.GuildDownloadCompleted      += Events.Client_GuildDownloadCompleted;
            Client.MessageCreated              += Events.MessageCreated;
            Client.MessageUpdated              += Events.MessageUpdated;
            Client.MessageDeleted              += Events.MessageDeleted;
            Client.GuildMemberAdded            += Events.MemberAdded;
            Client.MessageReactionAdded        += Events.ReactionAdded;
            Client.MessageReactionRemoved      += Events.ReactionRemoved;
            Client.VoiceStateUpdated           += Events.VoiceStateUpdated;
            Client.ClientErrored               += Events.ClientErrored;
            Client.ComponentInteractionCreated += Events.ComponentTriggered;

            //Register client events for logging
            Client.GuildBanAdded       += Logger.BanAdded;
            Client.GuildBanRemoved     += Logger.BanRemoved;
            Client.GuildMemberUpdated  += Logger.MemberUpdated;
            Client.ChannelUpdated      += Logger.ChannelUpdated;
            Client.GuildRoleUpdated    += Logger.RoleUpdated;
            Client.MessageUpdated      += Logger.MessageEdited;
            Client.MessageDeleted      += Logger.MessageDeleted;
            Client.MessagesBulkDeleted += Logger.BulkMessagesDeleted;
            //Client.GuildEmojisUpdated += Logger.EmojiUpdated;
            Client.VoiceStateUpdated += Logger.VoiceUpdate;


            //Register timer events
            SystemService.Instance.WarnTimer.Elapsed += Events.TimerTick;

            //Register Logger events
            SystemService.Instance.Logger.RaiseLogEvent += Events.OnLog;

            Client.UseInteractivity(new InteractivityConfiguration
            {
                Timeout              = TimeSpan.FromMinutes(5),
                PollBehaviour        = PollBehaviour.KeepEmojis,
                AckPaginationButtons = true
            });

            CommandsNextConfiguration commandsConfig = new CommandsNextConfiguration
            {
                StringPrefixes      = new string[] { prefix.Value },
                EnableMentionPrefix = true
            };
            Commands = Client.UseCommandsNext(commandsConfig);

            //Register commands
            Commands.RegisterCommands <AuditCommands>();
            Commands.RegisterCommands <EmbedCommands>();
            Commands.RegisterCommands <InfoCommands>();
            Commands.RegisterCommands <LavalinkCommands>();
            Commands.RegisterCommands <ReactionCommands>();
            Commands.RegisterCommands <RuleCommands>();
            Commands.RegisterCommands <TechnicalCommands>();
            Commands.RegisterCommands <WarnCommands>();
            Commands.RegisterCommands <EventCommands>();

            //Register command events
            Commands.CommandErrored += Events.CommandErrored;

            SlashCommands = Client.UseSlashCommands();

            //Register interactions
            SlashCommands.RegisterCommands <WarnInteractions>(699555747591094344);

            //Register interaction events
            SlashCommands.ContextMenuErrored += Events.ContextMenuErrored;

            await Client.ConnectAsync();

            LavalinkNodeConnection lavaNode = null;
            lavaNode = await ConnectLavaNodeAsync();

            if (lavaNode != null)
            {
                //Register lava commands
                lavaNode.PlaybackFinished += Events.PlaybackFinished;
            }

            await Task.Delay(-1);
        }
Beispiel #3
0
        /// <summary>
        ///    保存日志到MongoDB
        /// </summary>
        /// <param name="CommunityID"></param>
        /// <param name="T133LeafID"></param>
        /// <param name="SysLogID"></param>
        /// <param name="T216LeafID"></param>
        /// <param name="T102LeafID"></param>
        /// <param name="T107LeafID"></param>
        /// <param name="WIP_Code"></param>
        /// <param name="WIP_ID_Type_Code"></param>
        /// <param name="WIP_ID_Code"></param>
        /// <param name="Params"></param>
        /// <returns></returns>

        public string SaveFactMongodbLog(string ExCode, int CommunityID, int T133LeafID, Int64 SysLogID
                                         , int T216LeafID, int T102LeafID, int T107LeafID
                                         , string WIP_Code, string WIP_ID_Type_Code, string WIP_ID_Code
                                         , string Params)
        {
            string sqlconnString = string.Empty;

            dynamic res = new System.Dynamic.ExpandoObject();

            try
            {
                string UserCode = "";
                if (SysLogID.ToString() == null)
                {
                    SysLogID = 1;
                }
                if (T216LeafID.ToString() == null)
                {
                    SysLogID = 0;
                }
                if (T107LeafID.ToString() == null)
                {
                    SysLogID = 0;
                }
                if (WIP_Code == null)
                {
                    WIP_Code = "";
                }
                if (WIP_ID_Type_Code == null)
                {
                    WIP_ID_Type_Code = "";
                }
                if (WIP_ID_Code == null)
                {
                    WIP_ID_Code = "";
                }
                if (Params == null)
                {
                    Params = "";
                }
                string StoreTime     = DateTime.Now.ToString();
                string strconn       = "mongodb://192.168.57.12:27017";
                string SeqServerAddr = "192.168.57.13";
                ReadConfig.Read();
                if (ReadConfig.Parameters.ContainsKey("MongodbConnectStr"))
                {
                    strconn = ReadConfig.Parameters["MongodbConnectStr"].ToString();
                }
                /*  sqlconnString = ReadConfig.Parameters["ConnectionString"].ToString()*/;
                if (ReadConfig.Parameters.ContainsKey("SeqServerAddr"))
                {
                    SeqServerAddr = ReadConfig.Parameters["SeqServerAddr"].ToString();
                }
                //创建数据库链接
                MongoClient client = new MongoClient(strconn);
                //获得数据库cnblogs
                IMongoDatabase db = client.GetDatabase(MongoDBName);
                IMongoCollection <GraphEntity> logTBL
                    = db.GetCollection <GraphEntity>("IRAPDCSLog");
                GraphEntity row = new GraphEntity();
                row.LogID            = IRAPUtil.IRAPSocketClient.GetSequenceNo(SeqServerAddr, "NextSysLogID", 1);
                row.ExCode           = ExCode;
                row.CommunityID      = CommunityID;
                row.UserCode         = UserCode;
                row.SysLogID         = SysLogID;
                row.T133LeafID       = T133LeafID;
                row.T216LeafID       = T216LeafID;
                row.T102LeafID       = T102LeafID;
                row.T107LeafID       = T107LeafID;
                row.WIP_Code         = WIP_Code;
                row.WIP_ID_Type_Code = WIP_ID_Type_Code;
                row.WIP_ID_Code      = WIP_ID_Code;
                row.Params           = Params;
                row.StoreTime        = StoreTime;
                logTBL.InsertOne(row);
                res.ErrCode = 0;
                res.ErrText = "保存成功!";
                return(JsonConvert.SerializeObject(res));
            }
            catch (Exception err)
            {
                res.ErrCode = 9999;
                res.ErrText = "保存数据发生异常:" + err.Message;
                return(JsonConvert.SerializeObject(res));
            }
        }