示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        public bool DeleteTaskStage(TaskStage element)
        {
            string sql = "delete from TaskStage where ID=" + element.ID;
            int    r   = sqlHelper.ExecuteSql(sql);

            return(r > 0);
        }
示例#4
0
 public TextureTask(string Name, TaskType Type, TaskStage Stage, TaskUsage Usage)
 {
     TaskName  = Name;
     TaskType  = Type;
     TaskStage = Stage;
     TaskUsage = Usage;
 }
示例#5
0
 private void RemoveNode(TaskStage selected)
 {
     if (nodes.Remove(selected))
     {
         RefreshLayout();
     }
 }
示例#6
0
        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;
                    }
                }
            }
        }
示例#7
0
        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);
        }
示例#8
0
        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);
        }
示例#9
0
        private void UpdateNode(int id, TaskStage node)
        {
            int index = nodes.FindIndex(a => a.ID == id);

            if (index > -1)
            {
                nodes[index] = node;
                RefreshLayout();
            }
        }
示例#10
0
        /// <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);
        }
示例#11
0
        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;
            }
        }
示例#12
0
        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);
            }
        }
示例#13
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;
 }
示例#15
0
        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);
        }
示例#16
0
        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;
 }
示例#18
0
 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("请先选择一个流程模板!");
     }
 }
示例#19
0
        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);
            }
        }
示例#20
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);
        }
示例#21
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);
        }
示例#22
0
 private void AddNode(TaskStage node)
 {
     nodes.Add(node);
     RefreshLayout();
 }
示例#23
0
        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);
        }
示例#24
0
 private void NextRandomTask()
 {
     ++Task;
     SubTask = Rnd.Next() % 5;
     Stage   = TaskStage.TS_DESCRIPTION;
 }