Beispiel #1
0
 /// <summary>
 /// 从数据库 步骤表 与 工作流角色表
 /// </summary>
 /// <param name="row">步骤表</param>
 /// <param name="role">角色表</param>
 public WorkFlowDefSetpDetail(Db_WorkFlowDefStep row, Db_WorkFlowRole role) : base(row)
 {
     if (role != null)
     {
         this.WorkFlowRoleInfo = new WorkFlowRole(role);
         this.DescriptString   = string.Format("{0},审批角色:[{1}]", this.IsCountersign ? "会签" : "非会签", this.WorkFlowRoleInfo.RoleName);
     }
 }
Beispiel #2
0
 /// <summary>
 /// 从数据库构造
 /// </summary>
 /// <param name="row"></param>
 public WorkFlowDefStep(Db_WorkFlowDefStep row) : base(row)
 {
     this.Id             = row.Id;
     this.type           = (WorkFlowStepType)row.Type;
     this.typeString     = this.type.ToString();
     this.typeZHString   = typeShowStrings[this.typeString];
     this.DefinitionId   = row.Db_WorkFlowDefinitionId;
     this.WorkFlowRoleId = row.WorkFlowRoleId;
     if (row.IsCountersign.HasValue)
     {
         this.IsCountersign = row.IsCountersign.Value;
     }
 }
Beispiel #3
0
 /// <summary>
 /// 从数据库构造
 /// </summary>
 /// <param name="row">工单</param>
 /// <param name="def">执行的流程</param>
 /// <param name="users">当前待审的用户</param>
 /// <param name="step">当前等待执行步骤</param>
 public BaseWorkOrderListDetail(Db_BaseWorkOrder row, Db_WorkFlowDefinition def, List <Db_BaseWorkOrderTaskUser> users, Db_WorkFlowDefStep step) : base(row)
 {
     if (this.OrderStatus != WorkOrderStatus.待提交)
     {
         //修改执行状态文本
         this.OrderStatusString = string.Format("{0}[{1}]", this.OrderStatus.ToString(), def.Caption);
     }
     if (this.OrderStatus == WorkOrderStatus.执行中)
     {
         if (users.Count > 0)
         {
             var showUsers = users.Skip(0).Take(5);
             this.TaskUserNames = string.Join(",", showUsers.Select(p => p.userName));
             if (users.Count > 5)
             {
                 this.TaskUserNames += string.Format(",等{0}个用户", users.Count);
             }
         }
         if (step != null)
         {
             this.NowTaskSetpId   = step.Id;
             this.NowTaskStepName = step.Name;
         }
     }
 }
Beispiel #4
0
 /// <summary>
 /// 构造方法 从步骤获取数据后进行构造
 /// </summary>
 /// <param name="row">数据库中的线信息</param>
 /// <param name="from">来自(出发节点)</param>
 /// <param name="to">目标(数据库)</param>
 public WorkFlowDefLineDetail(Db_WorkFlowDefLine row, WorkFlowDefStep from, Db_WorkFlowDefStep to) : base(row)
 {
     this.FromStep = from;
     this.ToStep   = new WorkFlowDefStep(to);
 }
Beispiel #5
0
        /// <summary>
        /// 编辑流程图结构
        /// </summary>
        /// <param name="condtion"></param>
        /// <returns></returns>
        public WorkFlowDefinition EditDefUnit(WorkFlowDefEditRequest condtion)
        {
            if (condtion.lines == null)
            {
                condtion.lines = new List <WorkFlowDefLine>();
            }
            if (condtion.areas == null)
            {
                condtion.areas = new List <WorkFlowDefArea>();
            }
            if (condtion.nodes == null)
            {
                condtion.nodes = new List <WorkFlowDefStep>();
            }

            using (var db = new DefaultContainer()) {
                //三从表 创建新增/编辑已有/删除多余

                //节点
                Dictionary <string, string> nodesComb = new Dictionary <string, string>();//ID转换
                #region -- 节点
                foreach (var item in condtion.nodes)
                {
                    var row = db.Db_WorkFlowDefBaseUnitSet.OfType <Db_WorkFlowDefStep>().SingleOrDefault(p => p.Id == item.Id);
                    if (row == null)
                    {
                        var newId = SysHelps.GetNewId();
                        nodesComb.Add(item.Id, newId);
                        var newRow = new Db_WorkFlowDefStep()
                        {
                            Id = newId,
                            Db_WorkFlowDefinitionId = this.Id,
                            Name   = item.name,
                            Type   = (int)item.type,
                            Height = item.height,
                            Width  = item.width,
                            Left   = item.left,
                            Top    = item.top
                        };
                        db.Db_WorkFlowDefBaseUnitSet.Add(newRow);
                    }
                    else
                    {
                        nodesComb.Add(item.Id, item.Id);
                        row.Name   = item.name;
                        row.Type   = (int)item.type;
                        row.Height = item.height;
                        row.Width  = item.width;
                        row.Left   = item.left;
                        row.Top    = item.top;
                    }
                }
                var delSetpRows = (from c in db.Db_WorkFlowDefBaseUnitSet.OfType <Db_WorkFlowDefStep>().AsEnumerable() where !condtion.nodes.Select(p => p.Id).Contains(c.Id) && c.Db_WorkFlowDefinitionId == this.Id select c);
                if (delSetpRows.Count() > 0)
                {
                    db.Db_WorkFlowDefBaseUnitSet.RemoveRange(delSetpRows);
                }
                #endregion

                //连线

                #region -- 连线
                foreach (var item in condtion.lines)
                {
                    var row = db.Db_WorkFlowDefLineSet.SingleOrDefault(p => p.Id == item.Id);
                    if (row == null)
                    {
                        var newRow = new Db_WorkFlowDefLine()
                        {
                            Id   = SysHelps.GetNewId(),
                            From = nodesComb[item.from],
                            To   = nodesComb[item.to],
                            M    = item.M,
                            Name = item.name,
                            Type = item.type,
                            Db_WorkFlowDefinitionId = this.Id
                        };
                        db.Db_WorkFlowDefLineSet.Add(newRow);
                    }
                    else
                    {
                        row.From = nodesComb[item.from];
                        row.To   = nodesComb[item.to];
                        row.M    = item.M;
                        row.Name = item.name;
                        row.Type = item.type;
                    }
                }
                var delLineRows = (from c in db.Db_WorkFlowDefLineSet.AsEnumerable() where !condtion.lines.Select(p => p.Id).Contains(c.Id) && c.Db_WorkFlowDefinitionId == this.Id select c);
                if (delLineRows.Count() > 0)
                {
                    db.Db_WorkFlowDefLineSet.RemoveRange(delLineRows);
                }
                #endregion

                //区域

                #region -- 区域
                foreach (var item in condtion.areas)
                {
                    var row = db.Db_WorkFlowDefBaseUnitSet.OfType <Db_WorkFlowDefArea>().SingleOrDefault(p => p.Id == item.Id);
                    if (row == null)
                    {
                        var newRow = new Db_WorkFlowDefArea()
                        {
                            Id = SysHelps.GetNewId(),
                            Db_WorkFlowDefinitionId = this.Id,
                            Name   = item.name,
                            Color  = item.color,
                            Height = item.height,
                            Width  = item.width,
                            Left   = item.left,
                            Top    = item.top
                        };
                        db.Db_WorkFlowDefBaseUnitSet.Add(newRow);
                    }
                    else
                    {
                        row.Name   = item.name;
                        row.Color  = item.color;
                        row.Height = item.height;
                        row.Width  = item.width;
                        row.Left   = item.left;
                        row.Top    = item.top;
                    }
                }
                var delAreaRows = (from c in db.Db_WorkFlowDefBaseUnitSet.OfType <Db_WorkFlowDefArea>().AsEnumerable() where !condtion.areas.Select(p => p.Id).Contains(c.Id) && c.Db_WorkFlowDefinitionId == this.Id select c);
                if (delAreaRows.Count() > 0)
                {
                    db.Db_WorkFlowDefBaseUnitSet.RemoveRange(delAreaRows);
                }

                #endregion

                db.SaveChanges();
            }

            var info = WorkFlowDefinition.GetInstance(this.Id);
            info.SetUnits();
            return(info);
        }