public ActionResult WorkFlowList(int approveBodyId, string segmentedTab) { Models.ApplyCar.ApplyCarListModel vm = new Models.ApplyCar.ApplyCarListModel(); vm.SegmentedTab = segmentedTab; using (var db = new XkSystem.Models.DbContext()) { var firstNode = db.Table <Wechat.Entity.tbWeOAFlowNode>().Where(m => m.tbSysOAFlowType.Code == flowTypeCode && m.FlowStep == 1).FirstOrDefault(); var workFlowList = OAWeWorkFlow.GetWorkFlowList(db, flowTypeCode, approveBodyId); var workflowApproveList = OAWeWorkFlow.GetWorkFlowApproveList(flowTypeCode); vm.WorkFlowListDto = (from a in workFlowList join b in db.Table <Wechat.Entity.tbWeOAApplyCar>().Include(m => m.tbTeacherDept) on a.ApproveBodyId equals b.Id select new Dto.ApplyCar.ApplyCarListDto { CarTime = b.CarTime, Destination = b.Destination, tbTeacherDeptName = b.tbTeacherDept.TeacherDeptName, Reason = b.Reason, OtherUsers = b.OtherUsers, Remark = b.Remark, Id = b.Id, ApplyUser = workflowApproveList.Where(m => m.ApproveBodyId == b.Id).FirstOrDefault().tbSysUser.UserName, ApproveDate = a.ApproveDate, ApproveOpinion = a.ApproveOpinion, ApproveUserName = a.tbSysUser == null ? "" : a.tbSysUser.UserName, NodeApproveStatus = a.NodeApproveStatus, FlowApprovalNode = a.tbWeOAFlowPreviousNode != null ? a.tbWeOAFlowPreviousNode.FlowApprovalNode : firstNode.FlowApprovalNode, FlowStep = a.tbWeOAFlowPreviousNode != null ? a.tbWeOAFlowPreviousNode.FlowStep : firstNode.FlowStep, ConditionalFormula = a.tbWeOAFlowPreviousNode != null ? a.tbWeOAFlowPreviousNode.ConditionalFormula : firstNode.ConditionalFormula, }).ToList(); //下个节点审批人列表 var currFlow = vm.WorkFlowListDto.Where(m => string.IsNullOrEmpty(m.ApproveUserName)).FirstOrDefault(); if (currFlow != null) { var nextFlow = vm.WorkFlowListDto.Where(m => m.FlowStep == currFlow.FlowStep + 1).FirstOrDefault(); if (nextFlow != null) { var nextApproveUsers = db.Table <Wechat.Entity.tbWeOAFlowApprover>().Where(m => m.tbWeOAFlowNode.FlowStep == nextFlow.FlowStep && m.tbWeOAFlowNode.FlowApprovalNode == nextFlow.FlowApprovalNode && m.tbWeOAFlowNode.tbSysOAFlowType.Code == flowTypeCode).Include(m => m.tbSysUser).ToList(); var users = (from p in nextApproveUsers select new Code.MuiJsonDataBind { text = p.tbSysUser.UserName, value = p.tbSysUser.Id.ToString(), }).ToList(); vm.UserListJson = JsonConvert.SerializeObject(users); } } return(View(vm)); } }
public ActionResult WorkFlowList(int approveBodyId, string segmentedTab) { Models.ApplyLeave.ApplyLeaveListModel vm = new Models.ApplyLeave.ApplyLeaveListModel(); vm.SegmentedTab = segmentedTab; using (var db = new XkSystem.Models.DbContext()) { //查询当前审批角色对应的是哪个节点 var flowApprovalNodes = db.Table <Wechat.Entity.tbWeOAFlowApprover>().Where(m => m.tbWeOAFlowNode.tbSysOAFlowType.Code == flowTypeCode && m.tbWeOAFlowNode.FlowStep == 2).Include(m => m.tbSysUser).Include(m => m.tbWeOAFlowNode).ToList(); var firstNode = db.Table <Wechat.Entity.tbWeOAFlowNode>().Where(m => m.tbSysOAFlowType.Code == flowTypeCode && m.FlowStep == 1).FirstOrDefault(); var workFlowList = OAWeWorkFlow.GetWorkFlowList(db, flowTypeCode, approveBodyId); var workflowApproveList = OAWeWorkFlow.GetWorkFlowApproveList(flowTypeCode); vm.WorkFlowListDto = (from a in workFlowList join b in db.Table <Wechat.Entity.tbWeOAApplyLeave>().Include(m => m.tbTeacherDept).Include(m => m.tbWeOALeaveType) on a.ApproveBodyId equals b.Id select new Dto.ApplyLeave.ApplyLeaveListDto { CaseFileName = b.CaseFileName, LeaveDayCount = b.LeaveDayCount, LeaveFromTime = b.LeaveFromTime, LeaveToTime = b.LeaveToTime, tbTeacherDeptName = b.tbTeacherDept.TeacherDeptName, tbWeOALeaveTypeName = b.tbWeOALeaveType.LeaveTypeName, Reason = b.Reason, Id = b.Id, ApplyUser = workflowApproveList.Where(m => m.ApproveBodyId == b.Id).FirstOrDefault().tbSysUser.UserName, ApproveDate = a.ApproveDate, ApproveOpinion = a.ApproveOpinion, ApproveUserId = a.tbSysUser == null ? 0 : a.tbSysUser.Id, ApproveUserName = a.tbSysUser == null ? "" : a.tbSysUser.UserName, NodeApproveStatus = a.NodeApproveStatus, FlowComplete = a.tbWeOAFlowPreviousNode != null ? a.tbWeOAFlowPreviousNode.FlowComplete : firstNode.FlowComplete, FlowApprovalNode = a.tbWeOAFlowPreviousNode != null ? a.tbWeOAFlowPreviousNode.FlowApprovalNode : firstNode.FlowApprovalNode, FlowStep = a.tbWeOAFlowPreviousNode != null ? a.tbWeOAFlowPreviousNode.FlowStep : firstNode.FlowStep, ConditionalFormula = a.tbWeOAFlowPreviousNode != null ? a.tbWeOAFlowPreviousNode.ConditionalFormula : firstNode.ConditionalFormula, }).ToList(); //处理流程数据 if (segmentedTab == "wait") { vm.WorkFlowListDto = vm.WorkFlowListDto.FindAll(delegate(Dto.ApplyLeave.ApplyLeaveListDto item) { if (item.ConditionalFormula == "day=0.5" && item.LeaveDayCount <= 0.5) { return(true); } else if (item.ConditionalFormula == "day<=2&day>0.5" && item.LeaveDayCount <= 2 && item.LeaveDayCount > 0.5) { return(true); } else if (item.ConditionalFormula == "day>=3" && item.LeaveDayCount >= 3) { return(true); } else { if (item.ConditionalFormula == "") { return(true); } else { return(false); } } }); //过滤分支节点 var currApproveUser = db.Table <Entity.tbWeOAFlowApprover>().Where(m => m.tbWeOAFlowNode.tbSysOAFlowType.Code == flowTypeCode && m.tbWeOAFlowNode.FlowStep == 2 && m.tbSysUser.Id == XkSystem.Code.Common.UserId).Include(m => m.tbSysUser).FirstOrDefault(); if (currApproveUser != null) { vm.WorkFlowListDto = vm.WorkFlowListDto.Where(m => (m.FlowApprovalNode == currApproveUser.tbWeOAFlowNode.FlowApprovalNode && m.FlowStep == 2) || m.FlowStep != 2).ToList(); } //下个节点审批人列表 var currFlow = vm.WorkFlowListDto.Where(m => string.IsNullOrEmpty(m.ApproveUserName)).FirstOrDefault(); if (currFlow != null) { var nextFlow = vm.WorkFlowListDto.Where(m => m.FlowStep == currFlow.FlowStep + 1).FirstOrDefault(); if (nextFlow != null) { var nextApproveUsers = db.Table <Wechat.Entity.tbWeOAFlowApprover>().Where(m => m.tbWeOAFlowNode.FlowStep == nextFlow.FlowStep && m.tbWeOAFlowNode.FlowApprovalNode == nextFlow.FlowApprovalNode && m.tbWeOAFlowNode.tbSysOAFlowType.Code == flowTypeCode).Include(m => m.tbSysUser).ToList(); var users = (from p in nextApproveUsers select new Code.MuiJsonDataBind { text = p.tbSysUser.UserName, value = p.tbSysUser.Id.ToString(), }).ToList(); vm.UserListJson = JsonConvert.SerializeObject(users); } } } else { //修复分支情况部门负责人和年级负责人名称显示不正确的问题 vm.WorkFlowListDto.ForEach(m => { if (m.FlowStep == 2) { m.FlowApprovalNode = flowApprovalNodes.Where(n => m.ApproveUserId != 0 && n.tbSysUser.Id == m.ApproveUserId).Select(k => k.tbWeOAFlowNode.FlowApprovalNode).FirstOrDefault(); } }); } return(View(vm)); } }