Esempio n. 1
0
 public override bool SendCollectVal(string content, Ice.Current current)
 {
     try
     {
         List <ApiVar> apiVal = JsonHelper.Deserialize <List <ApiVar> >(content);
         if (apiVal == null)
         {
             return(false);
         }
         foreach (ApiVar val in apiVal)
         {
             try
             {
                 //DataProcess.YdProcess.Helper.SaveCollectCache(val.tagName, val.value, val.time, 0);
             }
             catch (Exception ex)
             {
                 FileLog.Error("保存采集缓存错误(SendCollectVal):" + ex.Message + ex.StackTrace);
             }
         }
         return(true);
     }
     catch (Exception ex)
     {
         FileLog.Error("获取采集缓存错误(SendCollectVal):" + ex.Message + ex.StackTrace);
     }
     return(false);
 }
Esempio n. 2
0
 private void AlarmWx(long log_id, int co_id, string coName, DateTime lastTime, decimal rdVal)
 {
     try
     {
         DataTable dtCrm = bll.GetOpenidList(co_id, log_id, HdType.AL_Wx.ToString());
         foreach (DataRow drCrm in dtCrm.Rows)
         {
             string openid  = CommFunc.ConvertDBNullToString(drCrm["OpenID"]);
             string crmName = CommFunc.ConvertDBNullToString(drCrm["CrmName"]);
             int    aid     = CommFunc.ConvertDBNullToInt32(drCrm["Aid"]);
             int    errCode = CommFunc.ConvertDBNullToInt32(drCrm["ErrCode"]);
             string errTxt  = "";
             if (errCode != 1)
             {
                 bool rst = this.SendWx(openid, crmName, coName, lastTime, rdVal, out errTxt);
                 errCode = rst == true ? 1 : -1;
             }
             bll.AddAV2_alarm_log_hand(log_id, aid, HdType.AL_Wx.ToString(), openid, "", errCode, errTxt);
         }
     }
     catch (Exception ex)
     {
         FileLog.Error("获取微信信息错误:" + ex.Message + ex.StackTrace);
     }
 }
Esempio n. 3
0
        private void AlarmEmail(long log_id, int co_id, string coName, DateTime lastTime, decimal rdVal)
        {
            List <string> listReceipts = new List <string>();
            List <string> mphone = new List <string>();
            string        crmName = "";
            int           aid = 0, errCode = 0;
            string        errTxt = "";

            try
            {
                DataTable dtSource = bll.GetAlarm_log_hand(log_id, HdType.AL_Email.ToString());
                if (dtSource.Rows.Count > 0)
                {
                    aid     = CommFunc.ConvertDBNullToInt32(dtSource.Rows[0]["Aid"]);
                    errCode = CommFunc.ConvertDBNullToInt32(dtSource.Rows[0]["ErrCode"]);
                }
                if (errCode == 1)
                {
                    return;
                }
                DataTable dtCrm = bll.GetCrmOfCo(co_id);
                foreach (DataRow drCrm in dtCrm.Rows)
                {
                    if (!string.IsNullOrEmpty(CommFunc.ConvertDBNullToString(drCrm["MPhone"])))
                    {
                        mphone.Add(CommFunc.ConvertDBNullToString(drCrm["MPhone"]));
                    }
                    if (!string.IsNullOrEmpty(CommFunc.ConvertDBNullToString(drCrm["Email"])))
                    {
                        listReceipts.Add(CommFunc.ConvertDBNullToString(drCrm["Email"]));
                    }
                    crmName = CommFunc.ConvertDBNullToString(drCrm["CrmName"]);
                }
            }
            catch (Exception ex)
            {
                FileLog.Error("获取告警数据错误:" + ex.Message + ex.StackTrace);
                errCode = -1;
                errTxt  = "获取告警用户邮件手机号码错误";
            }
            string msg = "";
            bool   sue = false;

            if (listReceipts.Count != 0)
            {
                sue = this.SendEmail(listReceipts, crmName, coName, lastTime, rdVal, out msg);
            }
            else
            {
                msg = "无邮件地址";
            }
            errTxt  = msg;
            errCode = (sue == true ? 1 : -1);
            bll.AddAV2_alarm_log_hand(log_id, aid, HdType.AL_Email.ToString(), "", "", errCode, errTxt);
        }
Esempio n. 4
0
 private void SetToolStripMenuItem_Click(object sender, EventArgs e)
 {
     try
     {
         this.SelectedIndices("SginSet");
     }
     catch (Exception ex)
     {
         FileLog.Error("下发指令错误:" + ex.Message + ex.StackTrace);
     }
 }
Esempio n. 5
0
 private void Ssr1ToolStripMenuItem_Click(object sender, EventArgs e)
 {
     try
     {
         this.SelectedIndices(V0Fun.Ssr.ToString(), "1");
     }
     catch (Exception ex)
     {
         FileLog.Error("下发指令错误:" + ex.Message + ex.StackTrace);
     }
 }
Esempio n. 6
0
        private delegate void ShowUI(CmdResult command); /*显示结果集*/


        private void MainFrm_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (MessageBox.Show("真的要退出吗?", "系统提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.No)
            {
                e.Cancel = true;
                return;
            }
            else
            {
                CheckPwd form1 = new CheckPwd();
                if (form1.ShowDialog() == DialogResult.OK)
                {
                    this.btnEnd_Click(sender, e);
                    /*清理缓存*/
                    try
                    {
                        //bool bIsNext = true;
                        //var enumer = NCSys.Result.GetEnumerator();
                        //while (bIsNext == true)
                        //{
                        //    bIsNext = enumer.MoveNext();
                        //    if (bIsNext == false) break;
                        //    var s0 = enumer.Current;
                        //    CollectVModel s1 = s0.Value;
                        //    if (s1 == null) continue;

                        //    SysPro pro;
                        //    NCSys.Pro.TryGetValue(s1.Ledger, out pro);
                        //    if (pro == null) continue;
                        //    int cc = 0;
                        //    while (++cc <= 2)
                        //    {
                        //        if (MemcachedMgr.RemoveKey(pro.ProjectKey + s1.CachedKey) == true)
                        //        {
                        //            //FileLog.WriteLog("key:" + pro.ProjectKey + s1.CachedKey + "移除成功");
                        //            break;
                        //        }
                        //        Thread.Sleep(5);
                        //    }
                        //}
                    }
                    catch (Exception ex)
                    {
                        FileLog.Error("退出清理缓存错误" + ex.Message + ex.StackTrace);
                    }
                }
                else
                {
                    e.Cancel = true;
                    return;
                }
            }
        }
Esempio n. 7
0
 private void AddCmd(CommandVModel cmd)
 {
     if (string.IsNullOrEmpty(cmd.HandledBY))
     {
         FileLog.Error("队列键值为空" + JsonHelper.Serialize(cmd));
         return;
     }
     DataProcess.YdDrive.Collection.CollectionHelper.Instance(cmd);
     //if (cmd.Protocol.Trim().ToLower().Equals("modbus".ToLower()))
     //    DataProcess.YdDrive.Collection.CollectionHelper.Instance(cmd);
     //else if (Config.Project.Trim().ToLower().Equals("YdDrive".ToLower()))
     //    DataProcess.YdDrive.Collection.CollectionHelper.Instance(cmd);
     //else
     //    DataProcess.YdDrive.Collection.CollectionHelper.Instance(cmd);
     //FileLog.Info("抄表类型错误");
 }
Esempio n. 8
0
        public void Run()
        {
            DateTime dtAlarm = DateTime.Now.AddDays(-9999);

            while (true)
            {
                Thread.Sleep(1000);
                try
                {
                    int scan = CommFunc.ConvertDBNullToInt32(IniHepler.GetConfig(Config.lpFileName, "Alarm", "Scan"));
                    scan = scan == 0 ? (60 * 24) : scan;
                    //
                    //if (SmsTime == null || SmsTime.Value.AddMinutes(15) > DateTime.Now) SmsFun.StopSerice();/*停止端口,让出端口给其他应用使用*/
                    //
                    if (DateTime.Now.Minute != 0 && DateTime.Now.Minute % 15 != 0 && DateTime.Now.Minute % 30 != 0)
                    {
                        continue;
                    }
                    if (dtAlarm.AddMinutes(scan) > DateTime.Now)
                    {
                        continue;
                    }

                    int hour    = DateTime.Now.Hour;
                    int hh      = CommFunc.ConvertDBNullToInt32(IniHepler.GetConfig(Config.lpFileName, "Alarm", "Hour"));
                    int isAlarm = CommFunc.ConvertDBNullToInt32(IniHepler.GetConfig(Config.lpFileName, "Alarm", "IsAlarm"));

                    if (isAlarm == 0)
                    {
                        continue;              /*总开关*/
                    }
                    if (hour < hh)
                    {
                        continue;
                    }
                    foreach (var s1 in NCSys.Pro)
                    {
                        //new ZpAlarm(s1.Key, s1.Value).GetAlarm();
                    }
                    dtAlarm = DateTime.Now;
                }
                catch (Exception ex)
                {
                    FileLog.Error("告警处理模块错误:" + ex.Message + ex.StackTrace);
                }
            }
        }
Esempio n. 9
0
 public override string GetCollectVal(string strKey, Ice.Current current)
 {
     try
     {
         CollectVModel collect = null;
         if (NCSys.Result.TryGetValue(strKey, out collect) == false)
         {
             return("");
         }
         if (collect == null)
         {
             return("");
         }
         return(JsonHelper.Serialize(collect.RstVar));
     }
     catch (Exception ex)
     {
         FileLog.Error("获取采集缓存错误(GetCollectVal):" + ex.Message + ex.StackTrace);
     }
     return("");
 }
Esempio n. 10
0
        private void CtorlSsr1(int module_id)
        {/*先下发命令*/
         //YDS6000.BLL.CmdService.ProcessBLL gwBll = new YDS6000.BLL.CmdService.ProcessBLL(Config.Ledger, Config.Uid);
         //int fun_id = gwBll.GetYdToFun_id(module_id, V0Fun.Ssr);
         //long log_id = gwBll.YdToGwOfAddCmd(module_id, fun_id, V0Fun.Ssr.ToString(), "1");
         //CommandVModel cmd = gwBll.GetYdToGwOfSendCmd(log_id);
            CommandVModel cmd = bll.GetSsr1(module_id);  //ModelHandler<CommandVModel>.FillModel(dtSsr.Rows[0]);

            if (cmd == null)
            {
                FileLog.Error("CtorlSsr1没有数据");
                return;
            }
            cmd.DataValue = "1";
            cmd.IsNDb     = true;
            cmd.Create_by = Config.Uid;
            cmd.IsRn      = 1;
            if (cmd.TransferType == 4)
            {/*IOService通信*/
                string fs = cmd.FunType + cmd.DataValue;
                string tagName = "", dataValue = "";
                tagName = bll.GetSSrIOService(module_id, fs, out dataValue);
                if (!string.IsNullOrEmpty(tagName) && !string.IsNullOrEmpty(dataValue))
                {
                    cmd.LpszDbVarName = tagName;
                    cmd.DataValue     = dataValue;
                }
                DataProcess.IOService.Collection.CollectionHelper.WriteVar(cmd);
                //DataProcess.IOService.Collection.CollectionHelper.WriteVar(cmd.Ledger, cmd.HandledBY, cmd.LpszDbVarName, cmd.DataValue);
            }
            else
            {
                DataProcess.YdDrive.Collection.CollectionHelper.Instance(cmd);
            }
            //DataProcess.YdDrive.Collection.CollectionHelper.Instance(cmd);
        }
Esempio n. 11
0
        private void AlarmSms(long log_id, int co_id, string coName, string moduleName, DateTime lastTime, decimal rdVal, decimal rdAmt)
        {
            List <string> listReceipts = new List <string>();
            string        crmName = "", content = "";
            int           aid = 0, errCode = 0;
            string        errTxt = "";
            string        msg    = "";

            try
            {
                DataTable dtSource = bll.GetAlarm_log_hand(log_id, HdType.AL_Sms.ToString());
                if (dtSource.Rows.Count > 0)
                {
                    aid     = CommFunc.ConvertDBNullToInt32(dtSource.Rows[0]["Aid"]);
                    errCode = CommFunc.ConvertDBNullToInt32(dtSource.Rows[0]["ErrCode"]);
                }
                if (errCode == 1)
                {
                    return;
                }

                DataTable dtCrm = bll.GetCrmOfCo(co_id);
                foreach (DataRow drCrm in dtCrm.Rows)
                {
                    if (!string.IsNullOrEmpty(CommFunc.ConvertDBNullToString(drCrm["MPhone"])))
                    {
                        listReceipts.Add(CommFunc.ConvertDBNullToString(drCrm["MPhone"]));
                    }
                    //if (!string.IsNullOrEmpty(CommFunc.ConvertDBNullToString(drCrm["MPhone"])))
                    //    mphone.Add(CommFunc.ConvertDBNullToString(drCrm["MPhone"]));
                    //if (!string.IsNullOrEmpty(CommFunc.ConvertDBNullToString(drCrm["Email"])))
                    //    listReceipts.Add(CommFunc.ConvertDBNullToString(drCrm["Email"]));
                    crmName = CommFunc.ConvertDBNullToString(drCrm["CrmName"]);
                }
                //object obj = new
                //{
                //    CrmName = crmName,
                //    DateTime = lastTime.ToString("yyyy-MM-dd"),
                //    CoName = coName,
                //    SyAmt = rdAmt.ToString("f2"),
                //    SyVal = rdVal.ToString("f2") + "kWh"
                //};
                object obj = new
                {
                    moduleName = moduleName,
                    rdAmt      = rdAmt.ToString("f2") + "元",
                };
                content = JsonHelper.Serialize(obj);
            }
            catch (Exception ex)
            {
                FileLog.Error("获取告警数据错误:" + ex.Message + ex.StackTrace);
                errTxt = "获取告警用户邮件手机号码错误";
            }
            ////////////////
            bool sue = false;

            if (listReceipts.Count != 0)
            {
                //【电费通知】尊敬的【房间名】用户,您好,您已欠费【具体金额】,请及时缴费。
                if (!string.IsNullOrEmpty(pro.Sms.ComSmsConfig.ComSms))
                {
                    if (rdAmt < 0)
                    {
                        content = "【电费通知】尊敬的【" + coName + "】用户,您好,您已欠费【" + Math.Abs(rdAmt).ToString("f2") + "元】,请及时缴费。";
                    }
                    else
                    {
                        content = "【电费通知】尊敬的【" + coName + "】用户,您好,您已剩余【" + Math.Abs(rdAmt).ToString("f2") + "元】,请及时缴费。";
                    }
                    //content = "你好当前设备:" + moduleName + "余额:" + rdAmt.ToString("f2");
                }
                sue = this.SendSms(listReceipts, content, out msg);
            }
            else
            {
                msg = "无手机号码";
            }
            errTxt  = msg;
            errCode = (sue == true ? 1 : -1);
            bll.AddAV2_alarm_log_hand(log_id, aid, HdType.AL_Sms.ToString(), "", "", errCode, errTxt);
        }
Esempio n. 12
0
        internal bool GetAlarm()
        {
            DataTable dtSource      = null;
            DataTable dtAlarmConfig = null;

            try
            {
                dtAlarmConfig = bll.GetAlarmConfig();
                int     cnt       = dtAlarmConfig.Rows.Count;
                decimal alarmVal1 = cnt == 0 ? 0 : CommFunc.ConvertDBNullToDecimal(dtAlarmConfig.Rows[0]["CfValue"]);
                string  unit      = cnt == 0 ? "" : CommFunc.ConvertDBNullToString(dtAlarmConfig.Rows[0]["Unit"]);
                dtSource = bll.GetAlarmData(alarmVal1, unit);
            }
            catch (Exception ex)
            {
                FileLog.WriteLog("获取告警数据错误:" + ex.Message + ex.StackTrace);
            }
            //
            if (dtSource == null)
            {
                return(false);
            }
            Thread.Sleep(100);
            int co_idPrev = -9999;

            foreach (DataRow dr in dtSource.Rows)
            {
                int      co_id = CommFunc.ConvertDBNullToInt32(dr["Co_id"]);
                string   coName = CommFunc.ConvertDBNullToString(dr["CoName"]);
                int      chrgType = CommFunc.ConvertDBNullToInt32(dr["ChrgType"]); /*<=1 房间 >1电表*/
                int      isAlarm = CommFunc.ConvertDBNullToInt32(dr["IsAlarm"]);   /*<=1 房间 >1电表*/
                DateTime lastTime = CommFunc.ConvertDBNullToDateTime(dr["LastTime"]);
                int      transferType = CommFunc.ConvertDBNullToInt32(dr["TransferType"]);
                decimal  rdVal = CommFunc.ConvertDBNullToDecimal(dr["RdVal"]);
                decimal  price = CommFunc.ConvertDBNullToDecimal(dr["Price"]);
                decimal  rdAmt = CommFunc.ConvertDBNullToDecimal(dr["RdAmt"]);
                int      module_id = CommFunc.ConvertDBNullToInt32(dr["Module_id"]);
                string   moduleAddr = CommFunc.ConvertDBNullToString(dr["ModuleAddr"]);
                string   moduleName = CommFunc.ConvertDBNullToString(dr["ModuleName"]);
                string   cfKey = "", cfUnit = "";
                decimal  cfValue = 0;
                decimal  cfRule  = 1;
                bool     isRun   = true;
                if (chrgType <= 1 && co_idPrev == co_id)
                {
                    isRun = false;
                }
                co_idPrev = co_id;
                if (isRun == false)
                {
                    continue;
                }
                int ccc = dtAlarmConfig.Rows.Count;
                int crn = 0;
                foreach (DataRow drC in dtAlarmConfig.Rows)
                {/*从大到小排列*/
                    cfKey   = CommFunc.ConvertDBNullToString(drC["CfKey"]);
                    cfValue = CommFunc.ConvertDBNullToDecimal(drC["CfValue"]);
                    cfRule  = CommFunc.ConvertDBNullToDecimal(drC["Rule"]);
                    cfUnit  = CommFunc.ConvertDBNullToString(drC["Unit"]).ToLower();
                    if (pro.Project.Equals("YdXip") && cfKey.Equals("AlarmValOd"))
                    {/*西安培华的拉闸电量*/
                        cfValue = CommFunc.ConvertDBNullToDecimal(dr["OdValue"]);
                    }
                    //if (!cfKey.ToLower().Equals("AlarmValOd".ToLower()))
                    //    cfRule = cfRule == 0 ? 1 : cfRule;
                    decimal comVal  = string.IsNullOrEmpty(cfUnit) || cfUnit.Equals("kWh".ToLower()) ? rdVal : rdAmt;
                    decimal toValue = cfValue;
                    if (crn < ccc - 1)
                    {
                        toValue = CommFunc.ConvertDBNullToDecimal(dtAlarmConfig.Rows[crn + 1]["CfValue"]);
                    }
                    if (cfValue >= comVal && comVal > toValue)
                    {
                        break;
                    }
                    crn = crn + 1;
                }
                //FileLog.WriteLog("电表ID:" + module_id + "地址:" + moduleAddr + "房间:" + coName + "剩余电量:" + rdVal + "告警类型:" + cfKey + "规则:" + cfRule + "告警值:" + cfValue);
                bool sendAlarm = true;
                if (cfKey.ToLower().Equals("AlarmValOd".ToLower()) && isAlarm == 1)
                {     /*拉合闸*/
                    if (CommFunc.ConvertDBNullToInt32(cfRule) == 1)
                    { /*发送拉合闸命令*/
                        sendAlarm = false;
                        try
                        {
                            string key    = pro.ProjectKey + CommFunc.ConvertDBNullToString(dr["LpszSsr"]);
                            RstVar rstVar = MemcachedMgr.GetVal <RstVar>(key);
                            bool   isPass = false;
                            if (rstVar != null && CommFunc.ConvertDBNullToDecimal(rstVar.lpszVal) == 0)
                            {
                                isPass = true;
                            }

                            if (isPass == true)
                            {
                                this.CtorlSsr1(module_id);
                            }
                        }
                        catch (Exception ex)
                        {
                            FileLog.Error("透支电量发送拉合闸命令错误:" + ex.Message + ex.StackTrace);
                        }
                    }
                }
                if (sendAlarm == true)
                {/*发送告警*/
                    cfRule = cfRule == 0 ? 1 : cfRule;
                    v2_alarm_logVModel alarmInfo = this.AlarmInfo(dr, cfValue, cfRule);
                    if (isAlarm == 1)
                    {
                        if (!string.IsNullOrEmpty(EmailUtilities.EmConfig.MailFrom) && !string.IsNullOrEmpty(EmailUtilities.EmConfig.MailSmtpHost) &&
                            !string.IsNullOrEmpty(EmailUtilities.EmConfig.MailSmtpUser) && !string.IsNullOrEmpty(EmailUtilities.EmConfig.MailSmtpPassword)
                            )
                        {/*邮件告警*/
                            this.AlarmEmail(alarmInfo.Log_id, co_id, coName, lastTime, rdVal);
                        }
                        if (!string.IsNullOrEmpty(pro.Sms.ComSmsConfig.ComSms) ||
                            (!string.IsNullOrEmpty(SmsFun.AliSmsConfig.AliAppKey) && !string.IsNullOrEmpty(SmsFun.AliSmsConfig.AliAppSecret) && !string.IsNullOrEmpty(SmsFun.AliSmsConfig.AliSignName))
                            )
                        {/*短信告警*/
                            this.AlarmSms(alarmInfo.Log_id, co_id, moduleName, coName, lastTime, rdVal, rdAmt);
                        }
                        if (!string.IsNullOrEmpty(pro.Wx.WxConfig.WxAPPID))
                        {/*微信告警*/
                         //this.AlarmWx(alarmInfo.Log_id, co_id, coName, lastTime, rdVal);
                        }
                    }
                }
            }
            return(true);
        }
Esempio n. 13
0
        private void AutoARM()//DataTable dtSource
        {
            DateTime? dtStart    = null;
            DateTime? dtIsWrDate = null;
            DataTable dtSource   = null;

            while (true)
            {
                Thread.Sleep(1000);
                ////////////
                if (NCSys.IsRun == false)
                {
                    break;                                                                                      /*网关未启动*/
                }
                bool running = (dtStart == null || DateTime.Now > dtStart.Value.AddMinutes(60)) ? true : false; /*15分钟没有运行过立刻再运行一次*/

                if (NCSys.BackgroundCount > 0 && running == false)
                {
                    continue;                                                /*没有后台命令时才循环再发 /*防止过多的命令,导致内存不足*/
                }
                if (NCSys.UIResult.Count >= 15000)
                {                                 /*没有后台命令时才循环再发 /*防止过多的命令,导致内存不足*/
                    Thread.Sleep(1000 * 60 * 10); /*等10分钟*/
                }
                if (NCSys.UIResult.Count >= 5000)
                {/*没有后台命令时才循环再发 /*防止过多的命令,导致内存不足*/
                    continue;
                }
                try
                {
                    int frMd = 0;
                    if (dtSource != null)
                    {
                        foreach (DataRow dr in dtSource.Rows)
                        {
                            frMd = CommFunc.ConvertDBNullToInt32(dr["FrMd"]);
                            CommandVModel cmd = ModelHandler <CommandVModel> .FillModel(dr);

                            this.AddCmd(cmd);
                        }
                    }
                    frMd = frMd == 0 ? 15 : frMd;

                    #region 获取读写的数据
                    int  r1    = dtIsWrDate == null ? 0 : CommFunc.ConvertDBNullToInt32(dtIsWrDate.Value.ToString("yyyyMMdd", System.Globalization.DateTimeFormatInfo.InvariantInfo));
                    int  r2    = CommFunc.ConvertDBNullToInt32(DateTime.Now.ToString("yyyyMMdd", System.Globalization.DateTimeFormatInfo.InvariantInfo));
                    bool isRun = (dtIsWrDate == null) ? true : false;
                    if (isRun == false)
                    {
                        if (DateTime.Now.Hour <= 4)
                        {
                            isRun = (r1 != r2) ? true : false;
                        }
                    }
                    //if (isRun == true && DateTime.Now.Hour <= 4)
                    if (isRun == true && 1 == 2)
                    {
                        DataTable dtWr = bll.GetWrData();
                        foreach (DataRow dr in dtWr.Rows)
                        {
                            CommandVModel cmd = ModelHandler <CommandVModel> .FillModel(dr);

                            this.AddCmd(cmd);
                        }
                        dtIsWrDate = DateTime.Now;
                    }
                    #endregion
                    #region 更新抄表数据
                    if (DateTime.Now >= dtUpARM.AddMinutes(frMd))
                    {
                        dtSource = bll.GetArmData();
                        dtUpARM  = DateTime.Now;
                    }
                    #endregion
                    dtStart = DateTime.Now;
                }
                catch (Exception ex)
                {
                    FileLog.Error("自动抄表命令错误" + ex.Message + ex.StackTrace);
                }
                Thread.Sleep(1000 * 15);
            }
        }
Esempio n. 14
0
        public void Run()
        {
            DateTime? dtRun = null, dtTab = null;
            DataTable dtSi = null;

            while (true)
            {
                Thread.Sleep(1000);/*每一秒*/
                if (NCSys.IsRun == false)
                {
                    dtSi = null; dtTab = null;
                    continue;
                }
                DateTime Now = DateTime.Now;
                if (dtRun != null)
                { /*以分钟为一个单位执行*/
                    if (dtRun.Value.Minute == Now.Minute)
                    {
                        continue;
                    }
                }
                dtRun = DateTime.Now;
                //
                try
                {
                    if (NCSys.ResetSiTime == false || dtSi == null || dtTab == null || dtTab.Value.AddHours(1) < DateTime.Now)
                    {
                        dtSi              = bll.GetV1_si_ssr();
                        dtTab             = DateTime.Now;
                        NCSys.ResetSiTime = true;
                    }
                    foreach (DataRow dr in dtSi.Rows)
                    {
                        int    ledger     = CommFunc.ConvertDBNullToInt32(dr["Ledger"]);
                        int    si_id      = CommFunc.ConvertDBNullToInt32(dr["Si_id"]);
                        int    co_id      = CommFunc.ConvertDBNullToInt32(dr["Co_id"]);
                        int    module_id  = CommFunc.ConvertDBNullToInt32(dr["Module_id"]);
                        string moduleAddr = CommFunc.ConvertDBNullToString(dr["ModuleAddr"]);
                        string moduleType = CommFunc.ConvertDBNullToString(dr["ModuleType"]);
                        //
                        int    meter_id  = CommFunc.ConvertDBNullToInt32(dr["Meter_id"]);
                        string meterAddr = CommFunc.ConvertDBNullToString(dr["MeterAddr"]);
                        int    ssr       = IsRunSi(Now, dr);
                        //
                        if (ssr == 0)
                        {
                            continue;
                        }
                        bool isQf = false;

                        //if (moduleType.Equals("YD-ZB20-4PL2-SB"))
                        //{/*这款用于河北工业大学的SB设备,特殊定制化*/
                        //    isQf = bll.GetMeterQianFei(ledger,co_id, meter_id, meterAddr);/*是否欠费*/
                        //}
                        //else
                        //{
                        isQf = bll.GetModuleQianFei(ledger, co_id, module_id, moduleAddr);   /*是否欠费*/
                        //}


                        V0Fun  fun      = V0Fun.Ssr;
                        int    fun_id   = CommFunc.ConvertDBNullToInt32(dr["Fun_id"]);
                        string funName  = "定时合闸";
                        int    nowSsr   = 0;
                        string descr    = "定时合闸";
                        string dataVale = "0";
                        if (ssr == 3355)
                        {
                            fun      = V0Fun.Ssr;
                            fun_id   = 0;
                            funName  = "定时拉闸";
                            nowSsr   = 1;
                            dataVale = "1";
                            descr    = "定时拉闸";
                        }
                        //////////////
                        SysPro pro;
                        NCSys.Pro.TryGetValue(ledger, out pro);
                        if (pro == null)
                        {
                            continue;
                        }
                        string key    = pro.ProjectKey + CommFunc.ConvertDBNullToString(dr["LpszDbVarName"]);
                        RstVar rstVar = MemcachedMgr.GetVal <RstVar>(key);
                        int    curSsr = -1;
                        if (rstVar != null)
                        {
                            curSsr = CommFunc.ConvertDBNullToInt32(rstVar.lpszVal);
                        }
                        //if (nowSsr == curSsr) continue;
                        ///////////////////////////////////////////////////////////////////////////////////////////
                        if (ssr == 9966)
                        {/*合闸*/
                            if (isQf == true)
                            {
                                continue;              /*欠费不合闸*/
                            }
                        }
                        if (nowSsr != curSsr)
                        {/*不一致执行命令*/
                            //CommandVModel cmd = bll.GetSsrInfo(ledger, module_id, dataVale);
                            CommandVModel cmd          = null;
                            int           transferType = bll.GetTransferType(ledger, module_id);
                            if (transferType == 4)
                            {
                                cmd = bll.GetSsrInfo(ledger, module_id, V0Fun.Ssr.ToString() + dataVale, dataVale);
                            }
                            else
                            {
                                cmd = bll.GetSsrInfo(ledger, module_id, V0Fun.Ssr.ToString(), dataVale);
                            }
                            if (cmd == null)
                            {
                                FileLog.Error("定时操作没有数据");
                                continue;
                            }
                            cmd.Fun_id    = fun_id;
                            cmd.FunType   = fun.ToString();
                            cmd.FunName   = funName;
                            cmd.DataValue = dataVale;
                            cmd.Descr     = descr;
                            cmd.IsUI      = true;
                            cmd.IsNDb     = true;
                            cmd.Create_by = Config.Uid;
                            if (cmd.TransferType == 4)
                            {
                                //string fs = cmd.FunType + cmd.DataValue;
                                //string tagName = "", dataValue = "";
                                //tagName = bll.GetSSrIOService(ledger, module_id, fs, out dataValue);
                                //if (!string.IsNullOrEmpty(tagName) && !string.IsNullOrEmpty(dataVale))
                                //{
                                //    cmd.LpszDbVarName = tagName;
                                //    cmd.DataValue = dataVale;
                                //}
                                DataProcess.IOService.Collection.CollectionHelper.WriteVar(cmd);
                            }
                            else
                            {
                                DataProcess.YdDrive.Collection.CollectionHelper.Instance(cmd);
                            }
                            FileLog.Debug("电表ID:" + cmd.Module_id + "地址:" + cmd.ModuleAddr + "动作:" + cmd.Descr);
                        }
                    }
                }
                catch (Exception ex)
                {
                    FileLog.Error("拉合闸策略错误:" + ex.Message + ex.StackTrace);
                }
            }
        }