private static void MyListPage(Models.ApplyLeave.ApplyLeaveListModel vm, IEnumerable <Dto.ApplyLeave.ApplyLeaveListDto> my) { //1:审批中,2:已完成,3:已驳回,0:全部 if (vm.ApproveStatus == 1) { vm.MyApplyDto = my.Where(m => m.IsComplete == false && m.NodeApproveStatus != Code.EnumHelper.OAFlowNodeStatus.WithoutApproval).ToPageList(vm.myPage); } else if (vm.ApproveStatus == 2) { vm.MyApplyDto = my.Where(m => m.IsComplete == true && m.NodeApproveStatus != Code.EnumHelper.OAFlowNodeStatus.WithoutApproval).ToPageList(vm.myPage); } else if (vm.ApproveStatus == 3) { vm.MyApplyDto = my.Where(m => m.NodeApproveStatus == Code.EnumHelper.OAFlowNodeStatus.WithoutApproval).ToPageList(vm.myPage); } else { vm.MyApplyDto = my.ToPageList(vm.myPage); } vm.myPage.PageCount = (int)Math.Ceiling(vm.myPage.TotalCount * 1.0 / vm.myPage.PageSize); vm.myPage.PageCount = vm.myPage.PageCount == 0 ? 1 : vm.myPage.PageCount; }
public ActionResult ApplyLeaveIndex(Models.ApplyLeave.ApplyLeaveListModel vm) { using (var db = new XkSystem.Models.DbContext()) { var workflowApproveList = OAWeWorkFlow.GetWorkFlowApproveList(flowTypeCode); var allApproveList = OAWeWorkFlow.GetAllApprovedList(flowTypeCode); WaitApproveList(vm, workflowApproveList); ApprovedList(vm, workflowApproveList, allApproveList); MyApplyList(vm, workflowApproveList, allApproveList); if (Request.IsAjaxRequest()) { return(PartialView("ApplyLeaveApproveBody", vm)); } //发起流程权限 var approver = db.Table <Wechat.Entity.tbWeOAFlowApprover>().Where(m => m.tbWeOAFlowNode.tbSysOAFlowType.Code == flowTypeCode && m.tbSysUser.Id == XkSystem.Code.Common.UserId && m.tbWeOAFlowNode.FlowStep == 1).FirstOrDefault(); vm.StartFlowPermission = approver != null; 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)); } }
private static void WaitListPage(Models.ApplyLeave.ApplyLeaveListModel vm, IEnumerable <Dto.ApplyLeave.ApplyLeaveListDto> wait) { vm.WaitApproveDto = wait.ToPageList(vm.waitPage); vm.waitPage.PageCount = (int)Math.Ceiling(vm.waitPage.TotalCount * 1.0 / vm.waitPage.PageSize); vm.waitPage.PageCount = vm.waitPage.PageCount == 0 ? 1 : vm.waitPage.PageCount; }
private static void ApprovedListPage(Models.ApplyLeave.ApplyLeaveListModel vm, IEnumerable <Dto.ApplyLeave.ApplyLeaveListDto> approved) { vm.ApprovedDto = approved.ToPageList(vm.approvedPage); vm.approvedPage.PageCount = (int)Math.Ceiling(vm.approvedPage.TotalCount * 1.0 / vm.approvedPage.PageSize); vm.approvedPage.PageCount = vm.approvedPage.PageCount == 0 ? 1 : vm.approvedPage.PageCount; }