コード例 #1
0
        public string TurnOff(IoT_Meter meter, string reason, string oper)
        {
            //
            string taskID;
            string result = "";

            //1、在通讯层注册关阀任务,成功返回空,输出参数为本次注册的任务ID
            result = M_ValveControlSevice.TurnOff(meter, out taskID);
            //2、在数据库中登记关阀操作
            IoT_ValveControl valve = new IoT_ValveControl();

            valve.CompanyID    = meter.CompanyID;
            valve.MeterID      = meter.ID;
            valve.MeterNo      = meter.MeterNo;
            valve.RegisterDate = DateTime.Now;
            valve.State        = '0';
            valve.TaskID       = taskID;
            valve.UserID       = meter.UserID;
            valve.Reason       = reason;
            valve.Oper         = oper;
            valve.ControlType  = Convert.ToChar(((byte)ValveControlType.关阀).ToString());
            result             = Insert(valve);

            return(result);
        }
コード例 #2
0
        public string ValveControlFinished(string taskID, string taskType, TaskState state)
        {
            string result = "";

            //1、向通讯层更新任务执行状态。
            result = M_ValveControlSevice.ValveControlFinished(taskID, state);
            if (result != "")
            {
                return(result);
            }

            //2、在数据库登记
            string configName = System.Configuration.ConfigurationManager.AppSettings["defaultDatabase"];
            //Linq to SQL 上下文对象
            DataContext dd = new DataContext(System.Configuration.ConfigurationManager.ConnectionStrings[configName].ConnectionString);

            try
            {
                IoT_ValveControl dbinfo = dd.GetTable <IoT_ValveControl>().Where(p =>
                                                                                 p.TaskID == taskID).SingleOrDefault();
                if (dbinfo == null)
                {
                    return("阀门控制任务不存在。");
                }
                dbinfo.State        = '2';//任务完成
                dbinfo.FinishedDate = DateTime.Now;
                dbinfo.Context      = "";

                //修改阀门状态
                IoT_Meter meterInfo = dd.GetTable <IoT_Meter>().Where(p => p.MeterNo == dbinfo.MeterNo).SingleOrDefault();
                meterInfo.ValveState = taskType == "KF"?'0':'1';
                dd.SubmitChanges();
            }
            catch (Exception e)
            {
                return(e.Message);
            }
            return(result);
        }
コード例 #3
0
        public string Undo(string taskID, string context)
        {
            string result = "";

            //TODO:在做撤销操作前,应先通知通讯调度中心,撤销当前任务,如任务已执行,则本次撤销操作失败。

            //1、向通讯层提交任务撤销请求,返回空表示撤销任务成功。
            result = M_ValveControlSevice.Undo(taskID);
            if (result != "")
            {
                return(result);
            }

            //2、在数据库登记撤销
            string configName = System.Configuration.ConfigurationManager.AppSettings["defaultDatabase"];
            //Linq to SQL 上下文对象
            DataContext dd = new DataContext(System.Configuration.ConfigurationManager.ConnectionStrings[configName].ConnectionString);

            try
            {
                IoT_ValveControl dbinfo = dd.GetTable <IoT_ValveControl>().Where(p =>
                                                                                 p.TaskID == taskID).SingleOrDefault();
                if (dbinfo == null)
                {
                    return("阀门控制任务不存在。");
                }
                dbinfo.State        = '1';     //任务撤销
                dbinfo.FinishedDate = DateTime.Now;
                dbinfo.Context      = context; //撤销原因
                dd.SubmitChanges();
            }
            catch (Exception e)
            {
                return(e.Message);
            }
            return(result);
        }