void _archiveProduct(S_D_DBS dbs, S_E_Product product) { #region 增加成果至归档目录 //20190508 一个成果本版一个document记录,不用version表记录,为了多个版本独立档案记录 var productVersion = product.Version.HasValue ? product.Version.Value.ToString() : ""; var doc = dbs.S_D_Document.FirstOrDefault(d => d.RelateID == product.ID && d.Version == productVersion); if (doc == null) { doc = new S_D_Document(); doc.ID = FormulaHelper.CreateGuid(); doc.Name = product.Name; doc.Code = product.Code; doc.MajorValue = product.MajorValue; doc.Attr = JsonHelper.ToJson(product); doc.Catagory = product.MonomerInfo; doc.RelateID = product.ID; doc.RelateTable = "S_E_Product"; doc.CreateUser = product.CreateUser; doc.CreateUserID = product.CreateUserID; doc.State = "Normal"; doc.MainFiles = product.MainFile; doc.PDFFile = product.PdfFile; doc.PlotFile = product.PlotFile; doc.XrefFile = product.XrefFile; doc.DwfFile = product.DwfFile; doc.TiffFile = product.TiffFile; doc.SignPdfFile = product.SignPdfFile; doc.Version = productVersion; doc.ArchiveDate = null; dbs.AddDocument(doc); //doc.AddDocumentVersion(); } //else if (doc.Version != productVersion) //{ // doc.Name = product.Name; // doc.Code = product.Code; // doc.Attr = JsonHelper.ToJson(product); // doc.Catagory = product.MonomerInfo; // doc.MajorValue = product.MajorValue; // doc.MainFiles = product.MainFile; // doc.PDFFile = product.PdfFile; // doc.PlotFile = product.PlotFile; // doc.XrefFile = product.XrefFile; // doc.DwfFile = product.DwfFile; // doc.TiffFile = product.TiffFile; // doc.SignPdfFile = product.SignPdfFile; // doc.Version = product.Version.HasValue ? product.Version.Value.ToString() : ""; // doc.ArchiveDate = null; // doc.State = "Normal"; // doc.AddDocumentVersion(); //} else if (doc.State != "Archive") { doc.PDFFile = product.PdfFile; doc.PlotFile = product.PlotFile; doc.XrefFile = product.XrefFile; doc.DwfFile = product.DwfFile; doc.TiffFile = product.TiffFile; doc.SignPdfFile = product.SignPdfFile; var docVer = doc.S_D_DocumentVersion.FirstOrDefault(a => a.Version == doc.Version); if (docVer != null) { docVer.PDFFile = doc.PDFFile; docVer.PlotFile = doc.PlotFile; docVer.XrefFile = doc.XrefFile; docVer.DwfFile = doc.DwfFile; docVer.TiffFile = doc.TiffFile; docVer.SignPdfFile = doc.SignPdfFile; } } #endregion }
void _createProductMappingFolder(S_D_DBS parent, string parentDefineCode, List <Dictionary <string, object> > folderDefines, List <S_D_DBS> existFolderList, S_E_Product product, S_T_DBSDefine defineInfo) { var folderDefine = folderDefines.FirstOrDefault(d => d["ParentID"].ToString() == parentDefineCode); if (folderDefine == null) { return; } var value = product.GetPropertyString(folderDefine.GetValue("FieldName")); if (String.IsNullOrEmpty(value)) { _createProductMappingFolder(parent, folderDefine.GetValue("FieldName"), folderDefines, existFolderList, product, defineInfo); } else { if (!String.IsNullOrEmpty(folderDefine.GetValue("EnumKey"))) { var enumService = FormulaHelper.GetService <IEnumService>(); value = enumService.GetEnumText(folderDefine.GetValue("EnumKey"), value); } var folder = existFolderList.FirstOrDefault(d => d.Name == value && d.ParentID == parent.ID); if (folder == null) { folder = new S_D_DBS(); folder.ID = FormulaHelper.CreateGuid(); folder.Name = value; folder.DBSCode = folderDefine.GetValue("FieldName"); folder.DBSType = Project.Logic.DBSType.Mapping.ToString(); folder.MappingType = parent.MappingType; folder.ConfigDBSID = defineInfo.ID + "." + folderDefine.GetValue("FieldName"); folder.ArchiveFolder = folderDefine.GetValue("ArchiveFolder"); folder.ArchiveFolderName = folderDefine.GetValue("ArchiveFolderName"); parent.AddChild(folder); existFolderList.Add(folder); } bool addOnDocument = true;// Convert.ToBoolean(folderDefine.GetValue("AddProduct")); //根据归档结构决定是否添加成果 var ansestorFolders = existFolderList.Where(d => folder.FullID.StartsWith(d.FullID)).OrderBy(d => d.FullID).ToList(); var preFlag = true; for (int i = 0; i < folderDefines.Count; i++) { var fd = folderDefines[i]; var pdValue = product.GetPropertyString(fd.GetValue("FieldName"));//成果的结构所属字段对应值(阶段、子项、专业、工作包) if (!String.IsNullOrEmpty(fd.GetValue("EnumKey"))) { var enumService = FormulaHelper.GetService <IEnumService>(); pdValue = enumService.GetEnumText(fd.GetValue("EnumKey"), pdValue); } if (preFlag) { if (!string.IsNullOrEmpty(pdValue) && !ansestorFolders.Any(a => a.Name == pdValue)) //非空校验处理,成果只有阶段、专业属性情况 { addOnDocument = false; //成果不属于当前分支,继续创建分支 break; } } else { if (!string.IsNullOrEmpty(pdValue)) //专业下有成果、工作包下也有成果,只有成果的工作包属性是空时,才归档在专业下 { addOnDocument = false; break; } } if (fd == folderDefine) { preFlag = false; } } if (addOnDocument) { #region 增加成果至归档目录 _archiveProduct(folder, product); #endregion } else { _createProductMappingFolder(folder, folderDefine.GetValue("FieldName"), folderDefines, existFolderList, product, defineInfo); } } }