public TaskStage GetTaskStage(int id) { string sql = "select * from TaskStage where ID=" + id; DataTable dt = sqlHelper.Query(sql); if (dt != null && dt.Rows.Count > 0) { TaskStageTemplate template = TaskStageTemplateLogic.GetInstance().GetTaskStageTemplate(Convert.ToInt32(dt.Rows[0]["TemplateID"])); string ActualAppr = ""; if (dt.Rows[0]["ActualAppr"] != null && dt.Rows[0]["ActualAppr"] != DBNull.Value) { ActualAppr = dt.Rows[0]["ActualAppr"].ToString(); } string ActualExec = ""; if (dt.Rows[0]["ActualExec"] != null && dt.Rows[0]["ActualExec"] != DBNull.Value) { ActualExec = dt.Rows[0]["ActualExec"].ToString(); } DateTime ApprTime = DateTime.MinValue; if (dt.Rows[0]["ApprTime"] != null && dt.Rows[0]["ApprTime"] != DBNull.Value) { ApprTime = Convert.ToDateTime(dt.Rows[0]["ApprTime"]); } DateTime ExecTime = DateTime.MinValue; if (dt.Rows[0]["ExecTime"] != null && dt.Rows[0]["ExecTime"] != DBNull.Value) { ExecTime = Convert.ToDateTime(dt.Rows[0]["ExecTime"]); } TaskStage element = new TaskStage(Convert.ToInt32(dt.Rows[0]["ID"]), dt.Rows[0]["Name"].ToString(), template, TaskStage.GetTaskStatus(Convert.ToInt32(dt.Rows[0]["TaskStatus"])), ActualExec, ActualAppr, ExecTime, ApprTime, dt.Rows[0]["Remark"].ToString()); return(element); } return(null); }
public List <Flow> GetAllFlows() { List <Flow> elements = new List <Flow>(); string sql = "select * from Flow order by ID desc"; DataTable dt = sqlHelper.Query(sql); if (dt != null && dt.Rows.Count > 0) { TaskStageLogic tsl = TaskStageLogic.GetInstance(); for (int i = 0; i < dt.Rows.Count; i++) { FlowTemplate template = FlowTemplateLogic.GetInstance().GetFlowTemplate(Convert.ToInt32(dt.Rows[i]["TemplateID"])); List <TaskStage> stages = new List <TaskStage>(); string stagesIds = dt.Rows[i]["Stages"].ToString(); string[] stageIdList = stagesIds.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); foreach (string stageId in stageIdList) { TaskStage stage = TaskStageLogic.GetInstance().GetTaskStage(Convert.ToInt32(stageId)); if (stage != null) { stages.Add(stage); } } Flow element = new Flow(Convert.ToInt32(dt.Rows[i]["ID"]), dt.Rows[i]["Name"].ToString(), template, Convert.ToInt32(dt.Rows[i]["CurrentIndex"]), dt.Rows[i]["Remark"].ToString(), stages); elements.Add(element); } } return(elements); }
public bool DeleteTaskStage(TaskStage element) { string sql = "delete from TaskStage where ID=" + element.ID; int r = sqlHelper.ExecuteSql(sql); return(r > 0); }
public TextureTask(string Name, TaskType Type, TaskStage Stage, TaskUsage Usage) { TaskName = Name; TaskType = Type; TaskStage = Stage; TaskUsage = Usage; }
private void RemoveNode(TaskStage selected) { if (nodes.Remove(selected)) { RefreshLayout(); } }
void nc_Selected(object sender, NodeArgs e) { NodeControl nc = sender as NodeControl; TaskStage tmp = nc.Tag as TaskStage; bool canceled = false; if (tmp == selected) { canceled = true; selected = null; } else { selected = tmp; } foreach (Control c in panel2.Controls) { if (c is NodeControl) { NodeControl ncc = c as NodeControl; TaskStage node = nc.Tag as TaskStage; if (!canceled && node == selected) { ncc.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; } else { ncc.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; } } } }
public Flow GetFlow(int id) { string sql = "select * from Flow where ID=" + id; DataTable dt = sqlHelper.Query(sql); if (dt != null && dt.Rows.Count > 0) { int templateId = Convert.ToInt32(dt.Rows[0]["TemplateID"]); FlowTemplate template = FlowTemplateLogic.GetInstance().GetFlowTemplate(templateId); List <TaskStage> stages = new List <TaskStage>(); string stagesIds = dt.Rows[0]["Stages"].ToString(); string[] stageIdList = stagesIds.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); foreach (string stageId in stageIdList) { TaskStage stage = TaskStageLogic.GetInstance().GetTaskStage(Convert.ToInt32(stageId)); if (stage != null) { stages.Add(stage); } } Flow element = new Flow(Convert.ToInt32(dt.Rows[0]["ID"]), dt.Rows[0]["Name"].ToString(), template, Convert.ToInt32(dt.Rows[0]["CurrentIndex"]), dt.Rows[0]["Remark"].ToString(), stages); return(element); } return(null); }
public bool UpdateTaskStage(TaskStage element) { string sql = "update TaskStage set Name='" + element.Name + "', TaskStatus=" + (int)element.Status + ", TemplateID=" + element.Template.ID + ", Remark='" + element.Remark + "' where ID=" + element.ID; int r = sqlHelper.ExecuteSql(sql); return(r > 0); }
private void UpdateNode(int id, TaskStage node) { int index = nodes.FindIndex(a => a.ID == id); if (index > -1) { nodes[index] = node; RefreshLayout(); } }
/// <summary> /// 获取指定的流程 /// </summary> /// <param name="name"></param> /// <param name="status">1为未完成,2为已完成,其他为所有</param> /// <returns></returns> public List <Flow> GetFlows(string name, int status) { List <Flow> elements = new List <Flow>(); string where = "where (1=1)"; if (!string.IsNullOrEmpty(name)) { where += " and Name like '%" + name + "%'"; } string sql = "select * from Flow " + where + " order by ID desc"; DataTable dt = sqlHelper.Query(sql); if (dt != null && dt.Rows.Count > 0) { TaskStageLogic tsl = TaskStageLogic.GetInstance(); for (int i = 0; i < dt.Rows.Count; i++) { FlowTemplate template = FlowTemplateLogic.GetInstance().GetFlowTemplate(Convert.ToInt32(dt.Rows[i]["TemplateID"])); List <TaskStage> stages = new List <TaskStage>(); string stagesIds = dt.Rows[i]["Stages"].ToString(); string[] stageIdList = stagesIds.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); foreach (string stageId in stageIdList) { TaskStage stage = TaskStageLogic.GetInstance().GetTaskStage(Convert.ToInt32(stageId)); if (stage != null) { stages.Add(stage); } } int currentIndex = Convert.ToInt32(dt.Rows[i]["CurrentIndex"]); Flow element = new Flow(Convert.ToInt32(dt.Rows[i]["ID"]), dt.Rows[i]["Name"].ToString(), template, currentIndex, dt.Rows[i]["Remark"].ToString(), stages); if (status == 1) { if ((currentIndex < stages.Count - 1) || (currentIndex == stages.Count - 1 && stages[stages.Count - 1].Status != TaskStatus.Finished)) { elements.Add(element); } } else if (status == 2) { if (currentIndex == stages.Count - 1 && stages[stages.Count - 1].Status == TaskStatus.Finished) { elements.Add(element); } } else { elements.Add(element); } } } return(elements); }
public void SetupTransition(int code) { if (Task == 100) { Task = -1; Result = 0; EraseTransition(); if (Transition == null) { Transition = new Bitmap[Steps + 1]; } for (int i = 0; i <= Steps; ++i) { Transition[i] = new Bitmap(Width, Height); ImageOps.SetOpacity(LogoScreen, LogoScreen, ref Transition[i], 0, Width, Height); } return; } if (Task == 4 && Stage == TaskStage.TS_ANSWER) { Bitmap startingBitmap = new Bitmap(Transition.Last()); ImageOps.SetupTransition(startingBitmap, Results[Result], ref Transition, Steps, Width, Height); Task = 100; startingBitmap.Dispose(); return; } if (Task == -1 || Stage == TaskStage.TS_ANSWER) { NextRandomTask(); Bitmap startingBitmap = new Bitmap(Transition.Last()); ImageOps.SetupTransition(startingBitmap, TasksStorage.AllTasks[Task][SubTask].TaskImage, ref Transition, Steps, Width, Height); Stage = TaskStage.TS_DESCRIPTION; startingBitmap.Dispose(); return; } if (Stage == TaskStage.TS_DESCRIPTION) { if (TasksStorage.AllTasks[Task][SubTask].RightAnswer == code) { ++Result; } Stage = TaskStage.TS_ANSWER; TasksStorage.AllTasks[Task][SubTask].GetTransition(code - 1, ref Transition); return; } }
public int AddTaskStage(TaskStage element) { string sql = "insert into TaskStage (Name, TaskStatus, TemplateID, Remark) values ('" + element.Name + "', " + (int)element.Status + ", " + element.Template.ID + ", '" + element.Remark + "'); select SCOPE_IDENTITY()"; object obj = sqlHelper.ExecuteSqlReturn(sql); int R; if (obj != null && obj != DBNull.Value && int.TryParse(obj.ToString(), out R)) { return(R); } else { return(0); } }
private void RefreshLayout() { panel2.SuspendLayout(); panel2.Controls.Clear(); int x = left; int y = top; int offset = 0; int nextPos = left; int nextPosY = 0; for (int i = 0; i < nodes.Count; i++) { TaskStage node = nodes[i]; LinkControl lc = new LinkControl(); lc.Index = i; NodeControl nc = new NodeControl(); nc.Index = i; nc.NodeName = node.Name; nc.SetStatus(node.Status); nc.Selected += new EventHandler <NodeArgs>(nc_Selected); offset = nc.Width + lc.Width + interval; int cols = nextPos % this.Width; int rows = (nextPos + offset) / this.Width; if (rows > 0) { nextPosY++; x = left; } else { x = cols; if (cols < offset) { x = left; } } nextPos = x + offset; int maxHeight = Math.Max(nc.Height, lc.Height); y = top + (maxHeight + interval) * nextPosY; lc.Location = new Point(x, y); nc.Location = new Point(x + lc.Width, y); nc.Tag = node; panel2.Controls.Add(lc); panel2.Controls.Add(nc); } panel2.ResumeLayout(true); }
public UpdateTaskAction( string hash, Address target, string header, string description, TaskStage stage, bool autoDump = false, Address assignee = null, HashSet <Address> tasks = null) : base(hash, target) { this.Header = header; this.Description = description; this.AutoDump = autoDump; this.Assignee = assignee; this.Stage = stage; }
private void ReportProgress(IProgress <float> progress, TaskStage stage, int step = 1, int maxStep = 1) { float baseCompletion; float stageDuration; switch (stage) { case TaskStage.ExportFiles: baseCompletion = 0.00f; stageDuration = 0.15f; break; case TaskStage.OpenProgram: baseCompletion = 0.15f; stageDuration = 0.25f; break; case TaskStage.UploadSequences: baseCompletion = 0.4f; stageDuration = 0.6f; break; case TaskStage.Completed: baseCompletion = 1.0f; stageDuration = 0.0f; break; default: throw new NotImplementedException("unknown stage: " + stage); } progress.Report(baseCompletion + stageDuration * step / maxStep); }
public List <TaskStage> GetAllTaskStages() { List <TaskStage> elements = new List <TaskStage>(); string sql = "select * from TaskStage"; DataTable dt = sqlHelper.Query(sql); if (dt != null && dt.Rows.Count > 0) { TaskStageTemplateLogic tstl = TaskStageTemplateLogic.GetInstance(); for (int i = 0; i < dt.Rows.Count; i++) { TaskStageTemplate template = tstl.GetTaskStageTemplate(Convert.ToInt32(dt.Rows[i]["TemplateID"])); string ActualAppr = ""; if (dt.Rows[i]["ActualAppr"] != null && dt.Rows[i]["ActualAppr"] != DBNull.Value) { ActualAppr = dt.Rows[0]["ActualAppr"].ToString(); } string ActualExec = ""; if (dt.Rows[i]["ActualExec"] != null && dt.Rows[i]["ActualExec"] != DBNull.Value) { ActualExec = dt.Rows[0]["ActualExec"].ToString(); } DateTime ApprTime = DateTime.MinValue; if (dt.Rows[i]["ApprTime"] != null && dt.Rows[i]["ApprTime"] != DBNull.Value) { ApprTime = Convert.ToDateTime(dt.Rows[i]["ApprTime"]); } DateTime ExecTime = DateTime.MinValue; if (dt.Rows[i]["ExecTime"] != null && dt.Rows[i]["ExecTime"] != DBNull.Value) { ExecTime = Convert.ToDateTime(dt.Rows[i]["ExecTime"]); } TaskStage element = new TaskStage(Convert.ToInt32(dt.Rows[i]["ID"]), dt.Rows[i]["Name"].ToString(), template, TaskStage.GetTaskStatus(Convert.ToInt32(dt.Rows[i]["TaskStatus"])), ActualExec, ActualAppr, ExecTime, ApprTime, dt.Rows[i]["Remark"].ToString()); elements.Add(element); } } return(elements); }
public ChangeStageAction(string hash, Address target, TaskStage stage) : base(hash, target) { this.Stage = stage; }
private void Next() { if (listBox1.SelectedIndex > -1) { FlowTemplate temp = listBox1.SelectedItem as FlowTemplate; if (temp != null) { List <TaskStage> stages = new List <TaskStage>(); foreach (TaskStageTemplate stage in temp.Stages) { TaskStage s = new TaskStage(0, stage.Name, stage, TaskStatus.Initiative, "", "", DateTime.MinValue, DateTime.MinValue, ""); int i = TaskStageLogic.GetInstance().AddTaskStage(s); if (i > 0) { s.ID = i; stages.Add(s); } } string docName = doc.Name; Flow flow = new Flow(0, docName + "(" + temp.Name + ")", temp, -1, "", stages); int r = FlowLogic.GetInstance().AddFlow(flow); if (r > 0) { flow.ID = r; if (FlowLogic.GetInstance().StartFlow(r)) { flow.StartFlow(); TaskInfo task = new TaskInfo(0, doc.ID, flow, this.User.Username, "创建时间:" + DateTime.Now.ToString()); if (TaskInfoLogic.GetInstance().AddTaskInfo(task) > 0) { MessageBox.Show("建立流程任务成功!"); this.DialogResult = System.Windows.Forms.DialogResult.OK; } else { MessageBox.Show("建立流程任务失败!"); this.DialogResult = System.Windows.Forms.DialogResult.Ignore; } } else { MessageBox.Show("启动流程失败!"); this.DialogResult = System.Windows.Forms.DialogResult.Ignore; } } else { MessageBox.Show("建立流程到数据库失败!"); this.DialogResult = System.Windows.Forms.DialogResult.Ignore; } //this.Close(); } else { MessageBox.Show("您选择的流程模板为空!"); } } else { MessageBox.Show("请先选择一个流程模板!"); } }
public int AddTaskStageTemplate(TaskStageTemplate element) { string sql = "insert into TaskStageTemplate (Name, Executors, Approvers) values ('" + element.Name + "', '" + TaskStage.GetUserIds(element.Executors) + "', '" + TaskStage.GetUserIds(element.Approvers) + "'); select SCOPE_IDENTITY()"; object obj = sqlHelper.ExecuteSqlReturn(sql); int R; if (obj != null && obj != DBNull.Value && int.TryParse(obj.ToString(), out R)) { return(R); } else { return(0); } }
/// <summary> /// 批量更新 /// </summary> /// <param name="list"></param> /// <returns></returns> public bool UpgradeList(List <TaskStageTemplate> list) { int errCount = 0; foreach (TaskStageTemplate element in list) { string sqlStr = "if exists (select 1 from TaskStageTemplate where ID=" + element.ID + ") update TaskStageTemplate set Name='" + element.Name + "', Executors='" + element.Executors + "', Approvers='" + element.Approvers + "' where ID=" + element.ID + " else insert into TaskStageTemplate (Name, Executors, Approvers) values ('" + element.Name + "', '" + TaskStage.GetUserIds(element.Executors) + "', '" + TaskStage.GetUserIds(element.Approvers) + "')"; try { sqlHelper.ExecuteSql(sqlStr); } catch (Exception) { errCount++; } } return(errCount == 0); }
public TaskStageTemplate GetTaskStageTemplate(int id) { string sql = "select * from TaskStageTemplate where ID=" + id; DataTable dt = sqlHelper.Query(sql); if (dt != null && dt.Rows.Count > 0) { TaskStageTemplate element = new TaskStageTemplate(Convert.ToInt32(dt.Rows[0]["ID"]), dt.Rows[0]["Name"].ToString(), TaskStage.GetUsers(dt.Rows[0]["Executors"].ToString()), TaskStage.GetUsers(dt.Rows[0]["Approvers"].ToString())); return(element); } return(null); }
private void AddNode(TaskStage node) { nodes.Add(node); RefreshLayout(); }
public List <TaskStageTemplate> GetTaskStageTemplatesByApprover(User user) { List <TaskStageTemplate> elements = new List <TaskStageTemplate>(); string sql = "select * from TaskStageTemplate where ','+Approvers+',' like '%," + user.ID + ",%'"; DataTable dt = sqlHelper.Query(sql); if (dt != null && dt.Rows.Count > 0) { for (int i = 0; i < dt.Rows.Count; i++) { TaskStageTemplate element = new TaskStageTemplate(Convert.ToInt32(dt.Rows[i]["ID"]), dt.Rows[i]["Name"].ToString(), TaskStage.GetUsers(dt.Rows[i]["Executors"].ToString()), TaskStage.GetUsers(dt.Rows[i]["Approvers"].ToString())); elements.Add(element); } } return(elements); }
private void NextRandomTask() { ++Task; SubTask = Rnd.Next() % 5; Stage = TaskStage.TS_DESCRIPTION; }