コード例 #1
0
 public IList <TTaskFlow> TaskGetTreeFlow(string loginKey, ref ErrorInfo err, int taskId)
 {
     using (DBEntities db = new DBEntities())
     {
         var allFlow = db.YL_TASK_FLOW.Where(x => x.TASK_ID == taskId).ToList();
         IList <TTaskFlow> reFlow = new List <TTaskFlow>();
         foreach (var t in allFlow.Where(x => x.PARENT_ID == null).OrderBy(x => x.ID).ToList())
         {
             TTaskFlow tmp = new TTaskFlow();
             tmp = Fun.ClassToCopy <YL_TASK_FLOW, TTaskFlow>(t);
             if (t.IS_HANDLE == 0)
             {
                 tmp.DealRole = "待处理";
             }
             else
             {
                 if (string.IsNullOrEmpty(t.ROLE_ID_STR))
                 {
                     tmp.DealRole = t.DEAL_STATUS;
                 }
                 else
                 {
                     List <int> role = tmp.ROLE_ID_STR.Split(',').Select(x => Convert.ToInt32(x)).ToList();
                     tmp.DealRole = string.Format("分发{0}", string.Join(",", db.YL_ROLE.Where(x => role.Contains(x.ID)).Select(x => x.NAME).ToList()));
                 }
                 var allChildre = db.YL_TASK_FLOW.Where(x => x.PARENT_ID == t.ID).ToList();
                 if (allChildre.Count() == 0)
                 {
                     if (t.YL_TASK_FLOW2 != null)
                     {
                         if (t.YL_TASK_FLOW2.YL_TASK_FLOW_HANDLE.Count() > 0)
                         {
                             var userId  = t.YL_TASK_FLOW2.HANDLE_USER_ID;
                             var userTmp = db.YL_USER.SingleOrDefault(x => x.ID == userId);
                             if (userTmp != null)
                             {
                                 tmp.NextDealUserName = userTmp.NAME;
                             }
                         }
                     }
                 }
                 else
                 {
                     var userIdArr = allChildre.Select(x => x.HANDLE_USER_ID).ToList();
                     tmp.NextDealUserName = string.Join(",", db.YL_USER.Where(x => userIdArr.Contains(x.ID)).Select(x => x.NAME).ToList());
                 }
                 tmp.children = TaskGetTreeFlowChildren(loginKey, ref err, t.ID, allFlow);
             }
             reFlow.Add(tmp);
         }
         return(reFlow);
     }
 }
コード例 #2
0
        public TTaskFlow TaskFlowSingle(int id)
        {
            using (DBEntities db = new DBEntities())
            {
                TTaskFlow reEnt = new TTaskFlow();
                var       ent   = db.YL_TASK_FLOW.SingleOrDefault(x => x.ID == id);
                if (ent == null)
                {
                    return(reEnt);
                }
                reEnt = Fun.ClassToCopy <YL_TASK_FLOW, TTaskFlow>(ent);


                return(reEnt);
            }
        }
コード例 #3
0
        public TTask TaskSingle(string loginKey, ref ErrorInfo err, int id)
        {
            GlobalUser gu = Global.GetUser(loginKey);

            if (gu == null)
            {
                err.IsError = true;
                err.Message = "登录超时";
                return(null);
            }

            using (DBEntities db = new DBEntities())
            {
                var allFlownodeId = db.YL_FLOW_FLOWNODE_FLOW.Where(x => x.YL_ROLE.Where(y => gu.RoleID.Contains(y.ID)).Count() > 0).Select(x => x.FROM_FLOWNODE_ID).ToList();

                var task = db.YL_TASK.SingleOrDefault(x => x.ID == id);

                var tmp        = Fun.ClassToCopy <YL_TASK, TTask>(task);
                var createUser = db.YL_USER.SingleOrDefault(x => x.ID == task.CREATE_USER);

                tmp.CreatePhone = createUser.LOGIN_NAME;


                IList <TTaskFlow> AllFlow = new List <TTaskFlow>();
                foreach (var flow in task.YL_TASK_FLOW.OrderBy(x => x.ID).ToList())
                {
                    TTaskFlow nowFlow = Fun.ClassToCopy <YL_TASK_FLOW, TTaskFlow>(flow);
                    nowFlow.FlowId = (flow.YL_TASK.FLOW_ID == null) ? 0 : flow.YL_TASK.FLOW_ID.Value;
                    if (!string.IsNullOrEmpty(flow.ROLE_ID_STR))
                    {
                        var allRoleId = flow.ROLE_ID_STR.Split(',').Select(x => Convert.ToInt32(x)).ToList();
                        nowFlow.RoleList = db.YL_ROLE.Where(x => allRoleId.Contains(x.ID)).ToList().Select(x => new KTV {
                            K = x.ID.ToString(), V = x.NAME, child = x.YL_USER.ToList().Select(y => new KTV {
                                K = y.ID.ToString(), V = y.NAME
                            }).ToList()
                        }).ToList();
                    }

                    nowFlow.TaskName   = flow.YL_TASK.TASK_NAME;
                    nowFlow.TaskRemark = flow.YL_TASK.REMARK;
                    if (flow.YL_TASK_FLOW2 != null && flow.YL_TASK_FLOW2.YL_TASK_FLOW_HANDLE.Count() > 0)
                    {
                        var handle = flow.YL_TASK_FLOW2.YL_TASK_FLOW_HANDLE.ToList()[0];
                        nowFlow.SendUserId   = handle.DEAL_USER_ID;
                        nowFlow.SendUserName = handle.DEAL_USER_NAME;
                    }

                    foreach (var handle in flow.YL_TASK_FLOW_HANDLE.ToList())
                    {
                        var tmpHandle = Fun.ClassToCopy <YL_TASK_FLOW_HANDLE, TTaskFlowHandle>(handle);
                        tmpHandle.AllFiles = Fun.ClassListToCopy <YL_FILES, FILES>(handle.YL_FILES.ToList());
                        nowFlow.AllHandle.Add(tmpHandle);
                        nowFlow.DealUserName = handle.DEAL_USER_NAME;
                    }

                    AllFlow.Add(nowFlow);
                }
                tmp.AllFlow = AllFlow;
                #region 计算所有按钮
                var nowTaskFlowList = task.YL_TASK_FLOW.Where(x => x.IS_HANDLE == 0 && (x.HANDLE_USER_ID == gu.UserId || (x.FLOWNODE_ID != null && allFlownodeId.Contains(x.FLOWNODE_ID.Value)))).ToList();
                if (nowTaskFlowList.Count() > 0)
                {
                    var nowTaskFlow = nowTaskFlowList[0];
                    tmp.NowFlowId = nowTaskFlow.ID;
                    var allBut = db.YL_FLOW_FLOWNODE_FLOW.Where(x => x.FROM_FLOWNODE_ID == nowTaskFlow.FLOWNODE_ID && x.FLOW_ID == task.FLOW_ID).ToList();
                    tmp.AllButton = allBut.Select(x => x.STATUS).ToList();

                    if (AllFlow.Count() > 3 && !nowTaskFlow.YL_TASK_FLOW2.DEAL_STATUS.Equals("驳回"))
                    {
                        tmp.AllButton.Insert(0, "驳回");
                    }
                }
                #endregion

                return(tmp);
            }
        }