Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
        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));
            }
        }
Ejemplo n.º 3
0
        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));
            }
        }
Ejemplo n.º 4
0
 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;
 }
Ejemplo n.º 5
0
 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;
 }