예제 #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));
            }
        }
예제 #2
0
 private static void MyListPage(Models.ApplyCar.ApplyCarListModel vm, IEnumerable <Dto.ApplyCar.ApplyCarListDto> 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;
 }
예제 #3
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));
            }
        }
예제 #4
0
 private static void WaitListPage(Models.ApplyCar.ApplyCarListModel vm, IEnumerable <Dto.ApplyCar.ApplyCarListDto> 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;
 }
예제 #5
0
 private static void ApprovedListPage(Models.ApplyCar.ApplyCarListModel vm, IEnumerable <Dto.ApplyCar.ApplyCarListDto> 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;
 }