Beispiel #1
0
        public ActionResult GetScoreModelVersionAndEchartsData(int engineeringId)
        {
            var engineering = new EngineeringService().Get(e => e.Id == engineeringId);

            if (engineering == null)
            {
                throw new ArgumentNullException(nameof(engineering));
            }

            if (!new PermissionService().CanUserVisitProject(CurrentCustomer, engineering.ProjectId))
            {
                return(NoAuthorityJson());
            }

            if (CurrentCustomer.Organization.OrganizationType != OrganizationType.Censorship)
            {
                return(NoAuthorityJson());
            }

            var lamda    = PrepareEchartsDataLamda(engineering);
            var comments = new CommentService().GetCommentByRoleAndEngineeringFileId(CurrentCustomer.GetCurrentRoles(0, engineering).OrderBy(e => (int)e).FirstOrDefault(), engineering.EngineeringFiles.FirstOrDefault(e => e.FileType == FileType.Model).FileVersions.OrderByDescending(e => e.UpLoadeTime).FirstOrDefault().Id).Where(lamda).ToList();

            var echartsData = PrepareEchartData(comments);

            var modelVersions = PrepareScoreModelVersionModel(engineering);

            return(Json(new { result = true, echartsData = echartsData, modelVersions = modelVersions }, JsonRequestBehavior.AllowGet));
        }
Beispiel #2
0
        protected DrawingListModel PrepareDrawingListModel(PagedList <FileVersion> list, int projectId)
        {
            DrawingListModel model = new DrawingListModel();

            var project = new ProjectService().Get(e => e.Id == projectId);

            if (project == null)
            {
                throw new ArgumentNullException(nameof(project));
            }

            model.ProjectIsFiled = project.IsProjectFiled();
            model.Roles          = CurrentCustomer.GetCurrentRoles(projectId);

            foreach (var node in list)
            {
                model.Drawings.Add(new DrawingListModel.DrawingModel()
                {
                    Description    = node.UploadDescription,
                    DrawingCatalog = DictionaryService.DrawingCatalogDictionary.Find(e => e.Id == node.DrawingCatalog).DisplayName,
                    DrawingId      = node.Id,
                    DrawingName    = node.FileName,
                    DrawingStatus  = node.Status,
                    FileSize       = node.FileSize,
                    DrawingVersion = node.VersionNo,
                    UpdateTime     = node.UpdateStateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                    Uri            = node.BIMFileId,
                });
            }

            return(model);
        }
Beispiel #3
0
        public ActionResult GetModelProfessionState(int modelVersionId, int professionId)
        {
            var modelVersion = new FileVersionService().Get(e => e.Id == modelVersionId);

            if (modelVersion == null)
            {
                throw new ArgumentNullException(nameof(modelVersion));
            }

            if (!new PermissionService().CanUserVisitProject(CurrentCustomer, modelVersion.EngineeringFile.Engineering.ProjectId))
            {
                return(NoAuthorityJson());
            }

            var modelProfession = new ModelProfessionService().Get(e => e.ModelVersionId == modelVersionId && e.ProfessionId == professionId);

            var customerRoles = CurrentCustomer.CustomerRoles.Where(e => e.ProjectId == modelVersion.EngineeringFile.Engineering.ProjectId && e.FinishTime == null);

            string roleDes = CurrentCustomer.GetCurrentRoleDes(professionId, modelVersion.EngineeringFile.Engineering);

            ModelProfessionOperateModel operateModel = null;

            if (professionId != 0 && modelProfession != null)
            {
                var roles = CurrentCustomer.GetCurrentRoles(professionId, modelProfession.EngineerFile.Engineering);
                operateModel = PrepareOperateModel(modelProfession, roles);
            }

            return(Json(new { result = true, roleDes = roleDes, htmlStr = base.RenderPartialViewToString("_ModelProfessionOperate", operateModel) }, JsonRequestBehavior.AllowGet));
        }
Beispiel #4
0
        protected ModelReviewedListModel PrepareModelReviewedListModel(PagedList <FileVersion> models, int projectId)
        {
            ModelReviewedListModel model = new ModelReviewedListModel();

            if (models.Count > 0)
            {
                var lastModelVersion = models.First().EngineeringFile.FileVersions.OrderByDescending(e => e.UpLoadeTime).First();
                var roles            = CurrentCustomer.GetCurrentRoles(0, lastModelVersion.EngineeringFile.Engineering);

                foreach (var node in models)
                {
                    var query = new CommentService().GetCommentByRoleAndEngineeringFileId(roles.OrderBy(e => (int)e).FirstOrDefault(), node.Id);

                    model.ModelReviewedList.Add(new ModelReviewedListModel.ModelReviewedModel()
                    {
                        UploadDescription = node.UploadDescription,
                        ModelVersionId    = node.Id,
                        ModelVersionNo    = node.VersionNo,
                        UpdateTime        = node.UpdateStateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        CommnetCount      = query.Count(),
                    });
                }
            }
            model.ProjectId        = projectId;
            model.OrganizationType = CurrentCustomer.Organization.OrganizationType;

            return(model);
        }
Beispiel #5
0
        protected DrawingSeriesListModel PrepareDrawingSeriesListModel(PagedList <EngineeringFile> drawings, int projectId, int engineeringId, int profeesionId = 0, string selectedStateId = "")
        {
            DrawingSeriesListModel model = new DrawingSeriesListModel();

            var project = new ProjectService().Get(e => e.Id == projectId);

            if (project == null)
            {
                throw new ArgumentNullException(nameof(project));
            }

            var engineering = new EngineeringService().Get(e => e.Id == engineeringId);

            if (engineering == null)
            {
                throw new ArgumentNullException(nameof(engineering));
            }

            model.Roles          = CurrentCustomer.GetCurrentRoles(profeesionId, engineering);
            model.ProjectIsFiled = project.IsProjectFiled();

            foreach (var drawing in drawings)
            {
                model.DrawingSeriesList.Add(new DrawingSeriesListModel.DrawingSeriesModel()
                {
                    Description         = drawing.FileVersions.Where(e => e.FileType == FileType.Drawing).OrderByDescending(e => e.UpLoadeTime).FirstOrDefault()?.UploadDescription,
                    DrawingVersion      = drawing.FileVersions.Where(e => e.FileType == FileType.Drawing).OrderByDescending(e => e.UpLoadeTime).FirstOrDefault()?.VersionNo,
                    FileSize            = drawing.FileVersions.Where(e => e.FileType == FileType.Drawing).OrderByDescending(e => e.UpLoadeTime).FirstOrDefault()?.FileSize,
                    DrawingCategoryId   = drawing.DrawingCatalogId.GetValueOrDefault(),
                    DrawingCategory     = DictionaryService.DrawingCatalogDictionary.FirstOrDefault(e => e.Id == drawing.DrawingCatalogId)?.DisplayName,
                    DrawingProfessionId = drawing.DrawingProfessionId.GetValueOrDefault(),
                    DrawingProfession   = DictionaryService.DrawingProfessionDictionary.FirstOrDefault(e => e.Id == drawing.DrawingProfessionId)?.DisplayName,
                    DrawingName         = drawing.FileName,
                    DrawingSeriesId     = drawing.Id,
                    DrawingStatus       = drawing.Status,
                    PicUri     = drawing.FileVersions.OrderByDescending(i => i.UpLoadeTime).FirstOrDefault()?.BIMFileId,
                    UpdateTime = drawing.UpLoadTime.ToString("yyyy-MM-dd HH:mm:ss"),
                });
            }

            //TODO 二期添加关于图纸审核的流程
            model.AvaliableStatus.Add(new SelectListItem()
            {
                Text = "已上传", Value = "", Selected = true
            });

            return(model);
        }
Beispiel #6
0
        protected PagedList <FileVersion> GetAllModelVersion(int pageIndex, int pageSize, Expression <Func <FileVersion, bool> > lamda, int engineeringId)
        {
            var model = new EngineeringFileService().Get(e => e.EngineeringId == engineeringId && e.FileType == FileType.Model);

            if (model == null)
            {
                return(new PagedList <FileVersion>());
            }

            var customerRoles = CurrentCustomer.GetCurrentRoles(0, model.Engineering);

            var query = new FileVersionService().GetListByRoleAndEngineeingId(customerRoles.OrderBy(e => (int)e).FirstOrDefault(), model.Id);

            query = query.Where(lamda).OrderByDescending(e => e.UpLoadeTime);

            return(new PagedList <FileVersion>(query, pageIndex, pageSize));
        }
Beispiel #7
0
        protected List <SelectListItem> PrepareScoreModelVersionModel(Engineering engineering)
        {
            var modelId = engineering.EngineeringFiles.FirstOrDefault(e => e.FileType == FileType.Model)?.Id;

            if (!modelId.HasValue)
            {
                return(new List <SelectListItem>());
            }

            return(new FileVersionService().GetListByRoleAndEngineeingId(CurrentCustomer.GetCurrentRoles(0, engineering).OrderBy(e => (int)e).FirstOrDefault(), modelId.Value).OrderByDescending(e => e.UpLoadeTime).ToList().Select(e =>
            {
                return new SelectListItem()
                {
                    Text = string.Format("{0}-{1}", e.FileName, e.VersionNo),
                    Value = e.Id.ToString(),
                };
            }).ToList());
        }
Beispiel #8
0
        public ActionResult CommentRecordModelPagaData(int pageIndex, int pageSize, int commentId)
        {
            var comment = new CommentService().Get(e => e.Id == commentId);

            if (comment == null)
            {
                throw new ArgumentNullException(nameof(comment));
            }

            if (!new PermissionService().CanUserVisitProject(CurrentCustomer, comment.EngineeringFile.Engineering.ProjectId))
            {
                return(NoAuthorityJson());
            }

            var roles = CurrentCustomer.GetCurrentRoles(comment);

            var query   = new CommentRecordService().GetCommentRecordByRoleAndCommentId(roles.OrderBy(e => (int)e).FirstOrDefault(), commentId).OrderBy(e => e.UpdateTime);
            var records = new PagedList <CommentRecord>(query, pageIndex, pageSize);

            var recordModels = PrepareCommentRecordModels(records);

            return(Json(new { result = true, listHtml = this.RenderPartialViewToString("_CommentRecord", recordModels), total = records.TotalCount }, JsonRequestBehavior.AllowGet));
        }
Beispiel #9
0
        protected CommentDetailModel PrepareCommentDetailModel(Comment comment)
        {
            CommentDetailModel model = new CommentDetailModel();

            var engineering   = comment.EngineeringFile.Engineering;
            var organizations = new OrganizationProjectMappingService().GetMany(e => e.ProjectId == engineering.ProjectId && e.FinishTime == null);
            var customerRoles = new CustomerRoleMappingService().GetMany(e => e.ProjectId == engineering.ProjectId && e.FinishTime == null && ((e.Role == Role.CensorshipManager || e.Role == Role.DesignCompanyManager || e.Role == Role.BuildingCompanyManager) || ((e.Role == Role.Checker || e.Role == Role.Reviewer) && e.EngineeringId == engineering.Id && e.ProfessionId == comment.ProfessionId)));

            model.BuildingCompany = organizations.FirstOrDefault(e => e.OrganizationType == OrganizationType.BuildingCompany)?.OrganizationName;
            model.Censorship      = organizations.FirstOrDefault(e => e.OrganizationType == OrganizationType.Censorship)?.OrganizationName;
            model.DesignCompany   = organizations.FirstOrDefault(e => e.OrganizationType == OrganizationType.DesignCompany)?.OrganizationName;

            model.BuildingCompanyManager = customerRoles.FirstOrDefault(e => e.Role == Role.BuildingCompanyManager)?.CustomerName;
            model.CensorshipManager      = customerRoles.FirstOrDefault(e => e.Role == Role.CensorshipManager)?.CustomerName;
            model.DesignCompanyManager   = customerRoles.FirstOrDefault(e => e.Role == Role.DesignCompanyManager)?.CustomerName;

            model.Checker  = customerRoles.FirstOrDefault(e => e.Role == Role.Checker)?.CustomerName;
            model.Reviewer = customerRoles.FirstOrDefault(e => e.Role == Role.Reviewer)?.CustomerName;

            var commentType = DictionaryService.IntegralityCommentTypeDictionary.FirstOrDefault(e => e.Id == comment.CommentTypeId);

            commentType = commentType ?? DictionaryService.DesignCommentTypeDictionary.FirstOrDefault(e => e.Id == comment.CommentTypeId);

            string typeDes;

            if (commentType == null)
            {
                typeDes = comment.CommentTypeId == 0 ? "专业不完整" : "专业完整";
            }
            else
            {
                typeDes = commentType.DisplayName;
            }

            model.CommentType = typeDes;

            var profession = DictionaryService.CommentProfessionDictionary.FirstOrDefault(e => e.Id == comment.ProfessionId);

            model.Profession = profession?.DisplayName;

            model.ProjectName     = engineering.Project.ProjectName;
            model.IsProjectFiled  = engineering.Project.IsProjectFiled();
            model.CommentId       = comment.Id;
            model.EngineeringName = engineering.Name;
            model.CreateTime      = comment.CreateTime.ToString("yyyy-MM-dd HH:mm:ss");
            model.CreateVersionId = comment.CreateVersionId.ToString();
            model.Description     = comment.Description;
            model.Status          = comment.Status;
            model.Floor           = comment.Floor;

            model.ReturnDes = comment.CommentRecords.OrderByDescending(e => e.UpdateTime).FirstOrDefault(e => e.Status == FlowCode.DesignCompany_Disagree_AuditCompany_Comment)?.Reason;

            model.Roles = CurrentCustomer.GetCurrentRoles(comment);

            var commentProfession = comment.EngineeringFile.ModelProfessions.OrderByDescending(e => e.ModelVersionId).FirstOrDefault(e => e.ProfessionId == comment.ProfessionId);

            if (commentProfession == null)
            {
                throw new ArgumentNullException(nameof(commentProfession));
            }

            model.ProfessionStatus      = commentProfession.Status;
            model.CurrentModelVersionId = commentProfession.ModelVersionId;

            model.commentButton = new CommentDetailModel.CommentButtom()
            {
                CommentId             = comment.Id,
                Status                = comment.Status,
                ProfessionId          = comment.ProfessionId,
                ProfessionStatus      = commentProfession.Status,
                Roles                 = model.Roles,
                CurrentModelVersionId = commentProfession.ModelVersionId,
                ModelStatus           = comment.EngineeringFile.Status,
                IsInCommentDetail     = true,
            };

            model.Annotations = comment.BIMElements.Where(e => e.IsDelete == false).Select(element =>
            {
                return(new CommentDetailModel.AnnotationModel()
                {
                    AnnotationId = element.BIMId,
                    HDBimThumbUrl = element.HDBimThumbUrl,
                    Uri = element.BimThumb,
                    Name = element.Name,
                    type = element.BIMElementType
                });
            }).ToList();

            //上一页,下一页
            var nearbyCommentsQuery = new CommentService().TableNoTracking.Where(e => e.EngineeringFileId == comment.EngineeringFileId);

            model.PreCommentId  = nearbyCommentsQuery.Where(e => e.Id < comment.Id).OrderByDescending(e => e.CreateTime).FirstOrDefault()?.Id ?? 0;
            model.NextCommentId = nearbyCommentsQuery.Where(e => e.Id > comment.Id).OrderBy(e => e.CreateTime).FirstOrDefault()?.Id ?? 0;

            return(model);
        }
Beispiel #10
0
        protected ModelListModel PrepareModelListModel(PagedList <FileVersion> models, int projectId, int engineeringId, string selectedState = "")
        {
            ModelListModel model = new ModelListModel();

            var project = new ProjectService().Get(e => e.Id == projectId);

            if (project == null)
            {
                throw new ArgumentNullException(nameof(project));
            }

            model.ProjectIsFiled = project.IsProjectFiled();
            model.ProjectId      = project.Id;
            model.Roles          = CurrentCustomer.GetCurrentRoles(projectId);

            //检查是否能上传模型
            var engineeringFile =
                new EngineeringFileService().Get(
                    ef => ef.EngineeringId == engineeringId && ef.FileType == FileType.Model);

            if (engineeringFile == null ||
                engineeringFile.Status == FlowCode.Pre_DesignCompany_AwaitUpload ||
                engineeringFile.Status == FlowCode.Pre_DesignCompany_DeletedCurrent ||
                engineeringFile.Status == FlowCode.Pre_BuildCompany_Reject_DesignCompany ||
                engineeringFile.Status == FlowCode.Pre_AuditCompany_Reject_DesignCompany ||
                engineeringFile.Status == FlowCode.DesignCompany_DeletedCurrent ||
                engineeringFile.Status == FlowCode.BuildCompany_Reject_DesignCompany ||
                engineeringFile.Status == FlowCode.AuditCompany_ProjectManager_Confrim_CurrentProcess_End)
            {
                model.CanUploadModel = true;
            }

            foreach (var node in models)
            {
                model.ModelList.Add(new ModelListModel.ModelModel()
                {
                    UploadDescription = node.UploadDescription,
                    RejectDescription = node.RejectDescription,
                    ModelVersionId    = node.Id,
                    ModelStatus       = node.Status,
                    ModelVersionNo    = node.VersionNo,
                    UpdateTime        = node.UpdateStateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                });
            }

            model.SelectedStatus = selectedState;
            model.AvaliableStatus.Add(new SelectListItem()
            {
                Text = "全部", Value = "", Selected = string.IsNullOrWhiteSpace(selectedState)
            });

            WorkFlow.GetAllModelStatus().ForEach(e =>
            {
                model.AvaliableStatus.Add(new SelectListItem()
                {
                    Text     = e,
                    Value    = e,
                    Selected = e == selectedState,
                });
            });

            return(model);
        }