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); }
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); }
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); }