Esempio n. 1
0
        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));
            }
        }
Esempio n. 2
0
        public ActionResult ApplyCarIndex(Models.ApplyCar.ApplyCarListModel 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("ApplyCarApproveBody", 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));
            }
        }
Esempio 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));
            }
        }