Esempio n. 1
0
        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
        }
Esempio n. 2
0
        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);
                }
            }
        }