Пример #1
0
        public ProjectTodoNewDto GetProjectStatic()
        {
            //获取当前用户orgid

            var org          = _organizeRepository.GetDeptByUserID(AbpSession.UserId.Value);
            var underuserids = new List <long>();
            //判断是否部门主管,如果是这显示下级人员所有项目
            var isleader = org != null && string.IsNullOrWhiteSpace(org.ChargeLeader) == false && org.ChargeLeader.Contains("u_" + AbpSession.UserId.Value);

            if (isleader)
            {
                if (org != null)
                {
                    int cout = 0;
                    underuserids = _organizeRepository.GetAllUsersById(org.Id).Select(ite => ite.Id).ToList();
                }
            }
            //var userguids = _roadFlowUserRepository.GetAll().Where(ite => underuserids.Contains(ite.AbpUserId)).Select(ite => ite.Id).ToList();
            underuserids.Add(AbpSession.UserId.Value);

            var model      = new ProjectTodoNewDto();
            var projectids = new List <Guid>();
            //查询分派人表中的项目id
            var p1 = _projectAuditMemberRepository.GetAll().Where(ite1 => underuserids.Contains(ite1.UserId)).Select(ite => ite.ProjectBaseId).Distinct().ToList();

            projectids.AddRange(p1);
            //查询项目干系人表中的项目id
            var p2 = _projectRealationUserRepository.GetAll().Where(ite2 => underuserids.Contains(ite2.UserID)).Select(ite => ite.InstanceID).ToList();

            projectids.AddRange(p2);
            var project = from a in _singleProjectInfoRepository.GetAll()
                          join b in _projectBaseRepository.GetAll() on a.ProjectId equals b.Id
                          //join b in _constructionOrganizationRepository.GetAll() on a.SendUnit equals b.Id
                          where underuserids.Contains(a.CreatorUserId.Value) ||
                          projectids.Contains(b.Id)
                          select a;

            project = project.Distinct();

            model.DoingCount = project.Where(ite3 => ite3.ProjectStatus.HasValue && (int)ite3.ProjectStatus.Value > 0 && ite3.Status != -1).Count();
            model.DoingSum   = project.Where(ite4 => ite4.ProjectStatus.HasValue && (int)ite4.ProjectStatus.Value > 0 && ite4.Status != -1).Sum(ite => ite.SingleProjectbudget);
            model.DoingSum   = Math.Round(model.DoingSum / 10000, 0);
            model.DoneCount  = project.Where(ite5 => ite5.Status == -1).Count();
            model.DoneSum    = project.Where(ite6 => ite6.Status == -1).Sum(ite => ite.AuditAmount) ?? 0;
            model.DoneSum    = Math.Round(model.DoneSum / 10000, 0);
            model.TodoCount  = project.Where(ite7 => ite7.ProjectStatus.HasValue == false || ite7.ProjectStatus.Value == ProjectStatus.待审).Count();
            var oatask = _oataskRepository.GetAll().Where(ite8 => underuserids.Contains(ite8.CreatorUserId.Value));

            model.DoingCount += oatask.Where(ite9 => ite9.Status == 2).Count();
            model.DoneCount  += oatask.Where(ite10 => ite10.Status == -1).Count();
            model.TodoCount  += oatask.Where(ite11 => ite11.Status == 0).Count();
            var count = Convert.ToDecimal(model.TodoCount + model.DoingCount + model.DoneCount);

            model.HandleRate = count != 0?
                               Math.Round(
                Convert.ToDecimal(model.DoneCount) /
                count, 2):0;
            return(model);
        }
Пример #2
0
        public ProjectTodoNewDto GetProjectStaticForMy()
        {
            //var orgid = _organizeRepository.GetAll().FirstOrDefault(ite => ite.Leader.Contains(userguid)).Id;
            //int cout = 0;
            //var underuserids = _projectBaseRepository.GetUsersWithCurrentAndUnderOrg(orgid, 100, 1, out cout).Select(ite => ite.Id).ToList();
            //underuserids.Add(AbpSession.UserId.Value);
            //var userguids = _roadFlowUserRepository.GetAll().Where(ite => underuserids.Contains(ite.AbpUserId)).Select(ite => ite.Id).ToList();

            var model = new ProjectTodoNewDto();

            var tasks = _workFlowTaskRepository.GetAll().Where(ite => ite.ReceiveID == AbpSession.UserId.Value && ite.TodoType.Value > 0 && ite.Type != 6);

            model.DoingCount = tasks.Where(ite => ite.Status == 1).Count();
            model.DoneCount  = tasks.Where(ite => ite.Status >= 2).Count();
            model.TodoCount  = tasks.Where(ite => ite.Status == 0).Count();
            return(model);
        }