/// <summary> /// 转义 /// </summary> /// <param name="writer"></param> /// <param name="source"></param> protected string Transferred(Serialization.Json.ThunderWriter writer, string source) { writer.Clear(); foreach (var i in source) { Serialization.Json.MethodProviders.CharMethodProvider.Default.Write(writer, new Serialization.Json.JsonSerializeSetting(), i); } return(writer.ToString()); }
/// <summary> /// 转义 /// </summary> /// <param name="source"></param> protected string Transferred(string source) { var writer = new Serialization.Json.ThunderWriter(source.Length); return(this.Transferred(writer, source)); }
/// <summary> /// 创建一个任务 /// </summary> /// <param name="task"></param> /// <param name="nodes"></param> /// <returns></returns> public virtual int Save(TaskschedNode task, ExecutingNode[] nodes) { const string taskInsertText = "insert into {0}task(TaskId,UserSign,UserSignState,AttachState,CommandType,Status,StartTime,NextTime,FinishTime,StepCount,NextStep,ProcessPercent,PushMessage,CreateDate,EditDate,Version) values(@TaskId,@UserSign,@UserSignState,0,@CommandType,@Status,@StartTime,@NextTime,@FinishTime,@StepCount,@NextStep,@ProcessPercent,@PushMessage,@CreateDate,@EditDate,@Version);"; const string nodeInsertText = "insert into {0}task_node(RowId,TaskId,OrderNo,StepCount,StartTime,FinishTime,FailTimes,WaitTimes,StepType,StepCoordinationMode,ResultMessage,Removed,CreateDate,EditDate,Version) values(@RowId,@TaskId,@OrderNo,@StepCount,@StartTime,@FinishTime,@FailTimes,@WaitTimes,@StepType,@StepCoordinationMode,@ResultMessage,@Removed,@CreateDate,@EditDate,@Version);"; using (var sql = this.Open()) { var rowId = 0; var transaction = sql as SqlClient.ITransactionExecuter; if (transaction != null) { transaction.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted); try { rowId = (int)Convert.ChangeType(sql.Insert(string.Concat(string.Format(taskInsertText, this.TablePrefixName), this.SelectIdentity), new { @TaskId = task.TaskId, @UserSign = task.UserSign, @UserSignState = task.UserSignState, @CommandType = task.CommandType, @Status = (int)task.Status, @StartTime = task.StartTime, @NextTime = task.NextTime, @FinishTime = task.FinishTime, @StepCount = task.StepCount, @NextStep = task.NextStep, @ProcessPercent = task.ProcessPercent, @PushMessage = task.PushMessage, @CreateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), @EditDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), @Version = 1, }), TypeCode.Int32); foreach (var node in nodes) { sql.Insert(string.Format(nodeInsertText, this.TablePrefixName), new { @RowId = node.RowId, @TaskId = node.TaskId, @OrderNo = node.OrderNo, @StepCount = task.StepCount, @StartTime = node.StartTime, @FinishTime = node.FinishTime, @FailTimes = node.FailTimes, @WaitTimes = node.WaitTimes, @StepType = node.StepType, @StepCoordinationMode = node.StepCoordinationMode, @Removed = false, @ResultMessage = string.IsNullOrEmpty(node.ResultMessage) ? null : node.ResultMessage, @CreateDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), @EditDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), @Version = 1, }); } transaction.CommitTransaction(); return(rowId); } catch { transaction.RollBackTransaction(); throw; } } var tasksb = new StringBuilder(200); var writer = new Serialization.Json.ThunderWriter(task.PushMessage == null ? 0 : task.PushMessage.Length); tasksb.AppendFormat("insert into {0}task(TaskId,UserSign,UserSignState,AttachState,CommandType,Status,StartTime,NextTime,FinishTime,StepCount,NextStep,ProcessPercent,PushMessage,CreateDate,EditDate,Version) values('{1}','{2}','{3}',0,'{4}',0,'{5}',null,null,'{6}',1,0,'{7}','{8}','{9}',1);", this.TablePrefixName, task.TaskId.ToString(), task.UserSign, task.UserSignState, task.CommandType, task.StartTime.ToString("yyyy-MM-dd HH:mm:ss"), task.StepCount, this.Transferred(writer, task.PushMessage), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); foreach (var node in nodes) { if (node.FinishTime.HasValue) { tasksb.AppendFormat("insert into {0}task_node(RowId,TaskId,OrderNo,StepCount,StartTime,FinishTime,FailTimes,WaitTimes,StepType,StepCoordinationMode,ResultMessage,Removed,CreateDate,EditDate,Version)values('{1}','{2}','{3}','{4}','{5}','{6}',0,0,'{7}','{8}','{9}',0,'{10}','{11}',1);", this.TablePrefixName, node.RowId.ToString(), node.TaskId.ToString(), node.OrderNo, task.StepCount, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), node.FinishTime.Value.ToString("yyyy-MM-dd HH:mm:ss"), node.StepType, (byte)node.StepCoordinationMode, this.Transferred(writer, node.ResultMessage), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); } else { tasksb.AppendFormat("insert into {0}task_node(RowId,TaskId,OrderNo,StepCount,StartTime,FailTimes,WaitTimes,StepType,StepCoordinationMode,ResultMessage,Removed,CreateDate,EditDate,Version)values('{1}','{2}','{3}','{4}','{5}',0,0,'{6}','{7}','{8}',0,'{9}','{10}',1);", this.TablePrefixName, node.RowId.ToString(), node.TaskId.ToString(), node.OrderNo, task.StepCount, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), node.StepType, (byte)node.StepCoordinationMode, this.Transferred(writer, node.ResultMessage), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); } } tasksb.Append(this.SelectIdentity); rowId = (int)Convert.ChangeType(sql.Insert(tasksb.ToString(), null), TypeCode.Int32); return(rowId); } }