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); } }
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); } }
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); } }