private void GetDATFile(bool isLeft) { openFileDialog1.Filter = @"Data Mover Data Files|*.dat;*.DAT"; var result = openFileDialog1.ShowDialog(); if (result == DialogResult.OK) { DMSFile dmsFile = null; try { dmsFile = DMSReader.Read(openFileDialog1.FileName); }catch (FormatException fe) { MessageBox.Show(this, fe.Message, "File Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } /* Set the file name */ dmsFile.FileName = new FileInfo(openFileDialog1.FileName).Name; if (isLeft) { leftFile = dmsFile; leftPath = openFileDialog1.FileName; } else { rightFile = dmsFile; rightPath = openFileDialog1.FileName; } } }
public int Remove(DMSFile dmsFile) { dmsFile.RecordStatus = RecordStatus.Deleted; dmsFile.LastModifyTime = DateTime.Now; dmsFile.LastModifyUserName = UserInfo.UserName; return(m_db.Update(m_defaultTableName, m_defaultPrimaryKey, dmsFile.GetTableObject())); }
private void openToolStripMenuItem_Click(object sender, EventArgs e) { openFileDialog1.Filter = "Data Mover Data Files|*.dat;*.DAT"; var result = openFileDialog1.ShowDialog(); if (result == DialogResult.OK) { currentDmsPath = openFileDialog1.FileName; Stopwatch sw = new Stopwatch(); sw.Start(); try { dmsFile = DMSReader.Read(currentDmsPath); } catch (FormatException fe) { MessageBox.Show(this, fe.Message, "File Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } toolStripStatusLabel1.Text = "File: " + currentDmsPath; /* Set the file name */ dmsFile.FileName = new FileInfo(currentDmsPath).Name; sw.Stop(); UpdateUI(); tableList.Items[0].Selected = true; } }
public DMSFile Update(DMSFile dmsFile) { dmsFile.LastModifyTime = DateTime.Now; dmsFile.LastModifyUserName = UserInfo.UserName; m_db.Update(m_defaultTableName, m_defaultPrimaryKey, dmsFile.GetTableObject()); return(dmsFile); }
public DMSFile Create(DMSFile dmsFile) { dmsFile.Guid = System.Guid.NewGuid().ToString(); dmsFile.RecordStatus = RecordStatus.Valid; dmsFile.Id = Insert(dmsFile.GetTableObject()); return(dmsFile); }
public ActionResult UploadFile(string shortCode, string fileSeriesGuid, string description) { return(ActionUtils.Json(() => { var dms = GetDMSAndCheckPermission(shortCode, PermissionType.Execute); var dmsFileSeries = m_dbAdapter.DMSFileSeries.GetByGuid(fileSeriesGuid); var dmsFolder = m_dbAdapter.DMSFolder.GetById(dmsFileSeries.DMSFolderId); CommUtils.AssertEquals(dms.Instance.Id, dmsFolder.DMSId, "文件[fileSeriesGuid={0}]不在DMS[DMSGuid={1}]中,请刷新后再试", fileSeriesGuid, dms.Instance.Guid); var files = Request.Files; CommUtils.Assert(files.Count > 0, "请选择上传文件"); CommUtils.AssertEquals(files.Count, 1, "只能上传一个文件"); var file = files[0]; var index = Math.Max(file.FileName.LastIndexOf('\\'), file.FileName.LastIndexOf('/')); var fileName = index < 0 ? file.FileName : file.FileName.Substring(index + 1); CommUtils.Assert(file.ContentLength > 0, "上传文件不能为空"); CommUtils.AssertHasContent(fileName, "文件名不能为空"); CommUtils.Assert(fileName.Length <= 100, "文件名不能超过100个字符数"); var memoryStream = new MemoryStream(new BinaryReader(file.InputStream).ReadBytes(file.ContentLength)); var repoFile = Platform.Repository.AddFile(fileName, memoryStream); var allFiles = m_dbAdapter.DMSFile.GetFilesByFileSeriesId(dmsFileSeries.Id); var currentVer = allFiles.Count == 0?0: allFiles.Max(x => x.Version); DMSFile newDMSFile = new DMSFile(); newDMSFile.DMSId = dms.Instance.Id; newDMSFile.DMSFileSeriesId = dmsFileSeries.Id; newDMSFile.RepoFileId = repoFile.Id; newDMSFile.Name = repoFile.Name; newDMSFile.Description = description ?? string.Empty; newDMSFile.Size = file.ContentLength; newDMSFile.Version = currentVer + 1; var now = DateTime.Now; newDMSFile.LastModifyUserName = CurrentUserName; newDMSFile.LastModifyTime = now; newDMSFile.CreateUserName = CurrentUserName; newDMSFile.CreateTime = now; newDMSFile = m_dbAdapter.DMSFile.Create(newDMSFile); var task = m_dbAdapter.Task.GetTask(shortCode); new TaskLogicModel(dms.ProjectLogicModel, task).Start(); var comment = "文件夹[" + dmsFolder.Name + "]中上传文件[" + dmsFileSeries.Name + "]的第" + newDMSFile.Version + "版本"; m_dbAdapter.Task.AddTaskLog(task, comment); return ActionUtils.Success(newDMSFile.Guid); })); }
private void CompareFiles(DMSTable[] selectedTables, DMSFile target) { /* this compares the rows for tables in Source to tables in Target */ foreach (var table in selectedTables) { table.CompareResult = DMSCompareResult.NEW; } }
public CompareWorker(DMSTable[] selected, DMSFile target) { tables = selected; file = target; WorkerReportsProgress = true; DoWork += OnDoWork; }
public void UpdateDMSInfo(DMSFile file, string path) { dmsFile = file; filePath = path; var fi = new FileInfo(filePath); textBox4.Text = fi.DirectoryName; }
public ActionResult GenerateDoc(string projectGuid, string paymentDay, string fileSeriesGuid, bool autoUpload = false) { return(ActionUtils.Json(() => { var project = Platform.GetProject(projectGuid); var dmsFileSeries = m_dbAdapter.DMSFileSeries.GetByGuid(fileSeriesGuid); var fileSeriesTemplate = m_dbAdapter.DMSFileSeriesTemplate.GetByFileSeriesId(dmsFileSeries.Id); CommUtils.Assert(fileSeriesTemplate != null && fileSeriesTemplate.TemplateType != DmsFileSeriesTemplateType.None, "请先配置模板"); CommUtils.Assert(DateUtils.IsDate(paymentDay), "解析兑付日失败:{0}", paymentDay); var paymentDate = DateUtils.Parse(paymentDay).Value; var templateType = fileSeriesTemplate.TemplateType; var docPatternType = CommUtils.ParseEnum <DocPatternType>(templateType.ToString()); var ms = new MemoryStream(); Platform.DocFactory.Generate(docPatternType, ms, project.Instance.ProjectId, paymentDate, paymentDate, dmsFileSeries.Name); var comment = "系统生成文件[" + dmsFileSeries.Name + "]"; m_dbAdapter.DMSProjectLog.AddDmsProjectLog(projectGuid, fileSeriesGuid, comment); ms.Seek(0, SeekOrigin.Begin); if (autoUpload) { var repoFile = Platform.Repository.AddFile(dmsFileSeries.Name, ms); var allFiles = m_dbAdapter.DMSFile.GetFilesByFileSeriesId(dmsFileSeries.Id); var currentVer = allFiles.Count == 0 ? 0 : allFiles.Max(x => x.Version); DMSFile newDMSFile = new DMSFile(); newDMSFile.DMSId = dmsFileSeries.DMSId; newDMSFile.DMSFileSeriesId = dmsFileSeries.Id; newDMSFile.RepoFileId = repoFile.Id; newDMSFile.Name = repoFile.Name; newDMSFile.Description = string.Empty; newDMSFile.Size = ms.Length; newDMSFile.Version = currentVer + 1; var now = DateTime.Now; newDMSFile.LastModifyUserName = CurrentUserName; newDMSFile.LastModifyTime = now; newDMSFile.CreateUserName = CurrentUserName; newDMSFile.CreateTime = now; newDMSFile = m_dbAdapter.DMSFile.Create(newDMSFile); var logComment = "系统上传文件[" + dmsFileSeries.Name + "]的第" + newDMSFile.Version + "版本"; m_dbAdapter.DMSProjectLog.AddDmsProjectLog(projectGuid, fileSeriesGuid, logComment); } var resource = ResourcePool.RegisterMemoryStream(CurrentUserName, dmsFileSeries.Name, ms); return ActionUtils.Success(resource.Guid.ToString()); })); }
private void SaveDATDiff(DMSFile file) { saveFileDialog1.Filter = @"Data Mover Data Files|*.dat;*.DAT"; var result = saveFileDialog1.ShowDialog(); if (result == DialogResult.OK) { DMSWriter.Write(saveFileDialog1.FileName, dmsFile, true); } }
public bool isExistDMSFile(string dmsFileGuid) { m_defaultHasRecordStatusField = false; var record = SelectSingle <ABSMgrConn.TableDMSFile>("dms_file_guid", dmsFileGuid); var dmsFile = new DMSFile(record); m_defaultHasRecordStatusField = true; return(dmsFile.RecordStatus == RecordStatus.Valid); }
public DBCompareDialog(OracleConnection dbConn, DMSFile file, List <DMSTable> tables) { InitializeComponent(); progressBar1.Maximum = 100; progressBar1.Minimum = 0; progressBar1.Value = 0; this.dbConn = dbConn; this.file = file; this.tables = tables; }
private void openToolStripMenuItem_Click(object sender, EventArgs e) { openFileDialog1.Filter = "Data Mover Data Files|*.dat;*.DAT"; var result = openFileDialog1.ShowDialog(); if (result == DialogResult.OK) { currentDmsPath = openFileDialog1.FileName; Stopwatch sw = new Stopwatch(); sw.Start(); dmsFile = DMSReader.Read(currentDmsPath); sw.Stop(); UpdateUI(); } }
public DATCompareDialog(string initialPath) { InitializeComponent(); if (initialPath?.Length > 0) { try { leftFile = DMSReader.Read(initialPath); }catch (FormatException fe) { MessageBox.Show(this, fe.Message, "File Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } leftFile.FileName = new FileInfo(initialPath).Name; leftPath = initialPath; } UpdateUI(true); }
private void openToolStripMenuItem_Click(object sender, EventArgs e) { openFileDialog1.Filter = "Data Mover Data Files|*.dat;*.DAT"; var result = openFileDialog1.ShowDialog(); if (result == DialogResult.OK) { currentDmsPath = openFileDialog1.FileName; Stopwatch sw = new Stopwatch(); sw.Start(); dmsFile = DMSReader.Read(currentDmsPath); toolStripStatusLabel1.Text = "File: " + currentDmsPath; /* Set the file name */ dmsFile.FileName = new FileInfo(currentDmsPath).Name; sw.Stop(); UpdateUI(); tableList.Items[0].Selected = true; } }
public FindAndReplace(DMSFile file) { InitializeComponent(); inFile = file; }
public SQLGeneratorOptions(DMSFile dmsFile) : this() { /*bool padColumns, bool extractLongs, bool ignoreEmptyTables */ this.dmsFile = dmsFile; }
public static void GenerateSQLFile(DMSFile dms, string outputFolder, bool padColumns, bool extractLongs, bool ignoreEmptyTables) { StreamWriter sw = new StreamWriter(outputFolder + Path.DirectorySeparatorChar + dms.FileName.Replace(".dat", "").Replace(".DAT", "") + ".sql"); /* Write the header */ sw.WriteLine("/* ****** DMS 2 SQL v1.0 ***********"); sw.WriteLine(String.Format(" * Database: {0}", dms.Database)); sw.WriteLine(String.Format(" * Date: {0}", dms.Started)); sw.WriteLine(String.Format(" * Table Count: {0}", dms.Tables.Count)); sw.WriteLine(String.Format(" * Total Rows: {0}", dms.Tables.Sum(t => t.Rows.Count))); sw.WriteLine("*/"); Console.WriteLine(" Beginning SQL generation."); Console.WriteLine(" Table Count: " + dms.Tables.Count); foreach (DMSTable table in dms.Tables) { Console.WriteLine(" Processing table: " + table.DBName); if (ignoreEmptyTables && table.Rows.Count == 0) { Console.WriteLine(" Skipping empty table"); continue; } /* Write table header */ sw.WriteLine(String.Format("/* Begin Table: {0}({1})", table.Name, table.DBName)); sw.WriteLine(String.Format(" * Where Clause: {0}", table.WhereClause.Replace("\r", "").Replace("\n", ""))); sw.WriteLine(String.Format(" * Row Count: {0}", table.Rows.Count)); if (table.Columns.Where(c => c.Type.Equals("LONG")).Count() > 0) { /* Disclaimer about long fields */ sw.WriteLine(" * LONG FIELD: Some rows may not insert properly due to having a LONG field on the table."); sw.WriteLine(" * If one fails, please look for the exported long data file associated with the row."); } sw.WriteLine("*/\r\n"); var columnText = new StringBuilder(); var columnNames = new StringBuilder(); var columnValues = new StringBuilder(); Console.WriteLine(" Writing " + table.Rows.Count + " rows."); foreach (DMSRow row in table.Rows) { columnNames.Clear(); columnValues.Clear(); sw.WriteLine(" /* Row " + table.Name + "." + (table.Rows.IndexOf(row) + 1) + " */"); for (var x = 0; x < row.Indexes.Length; x++) { var colType = table.Columns[x].Type; var colName = table.Columns[x].Name; var printValue = ""; switch (colType) { case "CHAR": printValue = SafeString(row.GetStringValue(x)); break; case "LONG": printValue = SafeString(row.GetStringValue(x)); if (extractLongs) { var longFilePath = outputFolder + Path.DirectorySeparatorChar + "Long Chars" + Path.DirectorySeparatorChar + table.DBName + Path.DirectorySeparatorChar + "row_" + (table.Rows.IndexOf(row) + 1) + ".txt"; Directory.CreateDirectory(outputFolder + Path.DirectorySeparatorChar + "Long Chars" + Path.DirectorySeparatorChar + table.DBName); File.WriteAllText(longFilePath, row.GetStringValue(x)); printValue = "NULL /* See LongChar File */"; } break; case "DATE": printValue = String.Format("TO_DATE('{0}','YYYY-MM-DD')", row.GetStringValue(x)); break; case "DATETIME": printValue = String.Format("TO_DATE('{0}','YYYY-MM-DD-HH24:MI:SS')", row.GetStringValue(x).Replace(".000000", "")); break; default: printValue = row.GetStringValue(x) == null ? "NULL" : row.GetStringValue(x).ToString(); break; } if (printValue.Equals("\0")) { printValue = null; } /* print them out with padding */ var valuePad = 0; var colPad = 0; if (padColumns) { if (colName.Length > printValue.Length) { valuePad = colName.Length - printValue.Length; colPad = 0; } else if (colName.Length < printValue.Length) { colPad = printValue.Length - colName.Length; valuePad = 0; } else { colPad = 0; valuePad = 0; } } columnNames.Append(colName).Append(new string(' ', colPad)).Append(", "); columnValues.Append(printValue).Append(new string(' ', valuePad)).Append(", "); } columnNames.Length -= 2; columnValues.Length -= 2; var sqlStatement = String.Format("INSERT INTO {0} \r\n({1}) \r\nVALUES \r\n({2});", table.DBName, columnNames.ToString(), columnValues.ToString()); sw.WriteLine(sqlStatement); sw.WriteLine(); } Console.WriteLine(" Finished table: " + table.DBName); Console.WriteLine(); sw.WriteLine(); } Console.WriteLine(" Generation complete."); sw.Flush(); sw.Close(); }
void UpdateUI(bool leftSide) { if (leftSide && leftFile == null) { return; } if (!leftSide && rightFile == null) { return; } ListView list = null; DMSFile file = null; Button btn = null; Label lbl = null; if (leftSide) { list = lstLeft; file = leftFile; btn = btnViewDataLeft; lbl = lblLeft; } else { list = lstRight; file = rightFile; btn = btnViewDataRight; lbl = lblRight; } if (file == null) { lbl.Text = @"Select a file..."; return; } else { lbl.Text = file.FileName; } var savedIndexes = list.SelectedIndices; list.Items.Clear(); foreach (var table in file.Tables) { /* ignore empty tables */ if (table.Rows.Count == 0) { continue; } var backgroundColor = Color.White; switch (table.CompareResult) { case DMSCompareResult.NEW: backgroundColor = Color.LawnGreen; break; case DMSCompareResult.UPDATE: backgroundColor = Color.Yellow; break; } list.Items.Add(new ListViewItem() { Tag = table, Text = table.Name, BackColor = backgroundColor }); } if (savedIndexes.Count > 0) { foreach (var x in savedIndexes.Cast <int>()) { list.Items[x].Selected = true; } } else { list.Items[0].Selected = true; } btn.Enabled = true; /* enable the compare buttons? */ if (leftFile != null && rightFile != null) { btnCompareRight.Enabled = true; btnCompareToLeft.Enabled = true; } }
public SQLGeneratorOptions(DMSFile dmsFile, string filePath, List <DMSTable> tables) : this(dmsFile, filePath) { selectedTables = tables; }
public ActionResult CreateFile(string shortCode, string folderGuid, List <string> fileSeriesNames, string description) { return(ActionUtils.Json(() => { var dms = GetDMSAndCheckPermission(shortCode, PermissionType.Execute); var folder = dms.FindFolder(folderGuid); CommUtils.AssertNotNull(folder, "找不到文件夹[FolderGuid={0} DMSGuid={1}],请刷新后再试", folderGuid, dms.Instance.Guid); ValidateUtils.Name(fileSeriesNames, "文档名称", 100).FileName(); var dict = new Dictionary <RepositoryFile, HttpPostedFileBase>(); var files = Request.Files; var fileGuids = new List <string>(); for (int i = 0; i < files.Count; i++) { var file = files[i]; var index = Math.Max(file.FileName.LastIndexOf('\\'), file.FileName.LastIndexOf('/')); var fileName = index < 0 ? file.FileName : file.FileName.Substring(index + 1); CommUtils.AssertHasContent(fileName, "文件名不能为空"); CommUtils.Assert(fileName.Length <= 100, "选择的文件名称[{0}]不能超过100个字符数", fileName); CommUtils.Assert(!folder.Files.Any(x => x.FileSeries.Name == fileSeriesNames[i]), "文件[{0}]已经存在", fileSeriesNames[i]); var memoryStream = new MemoryStream(new BinaryReader(file.InputStream).ReadBytes(file.ContentLength)); var newFile = Platform.Repository.AddFile(fileName, memoryStream); fileGuids.Add(newFile.Guid); dict[newFile] = file; } var result = new List <DMSFile>(); string operationType = "上传"; if (dict.Keys.Count == 0) { operationType = "创建"; fileSeriesNames.ForEach(x => { NewFileSeries(x, folder); }); } for (int i = 0; i < dict.Keys.Count; i++) { var repoFile = dict.Keys.ElementAt(i); var fileSeriesName = fileSeriesNames[i]; var dmsFileSeries = new DMSFileSeries(); dmsFileSeries = NewFileSeries(fileSeriesName, folder); var now = DateTime.Now; DMSFile dmsFile = new DMSFile(); dmsFile.DMSId = dms.Instance.Id; dmsFile.DMSFileSeriesId = dmsFileSeries.Id; dmsFile.RepoFileId = repoFile.Id; dmsFile.Name = repoFile.Name; dmsFile.Description = description ?? string.Empty; dmsFile.Size = dict[repoFile].ContentLength; dmsFile.Version = 1; dmsFile.LastModifyUserName = CurrentUserName; dmsFile.LastModifyTime = now; dmsFile.CreateUserName = CurrentUserName; dmsFile.CreateTime = now; result.Add(m_dbAdapter.DMSFile.Create(dmsFile)); } var task = new TaskLogicModel(dms.ProjectLogicModel, shortCode); task.Start(); var fileSeriesNamesArray = fileSeriesNames.ConvertAll(x => "[" + x + "]").ToArray(); m_dbAdapter.Task.AddTaskLog(task.Instance, "文件夹[" + folder.Instance.Name + "]中" + operationType + "文件" + string.Join(",", fileSeriesNamesArray)); return ActionUtils.Success(result.Select(x => x.Guid)); })); }
private static void RebuildFiles(List <string> files, string outputFolder, string scriptName) { Console.WriteLine(" Beginning rebuild of " + files.Count + " files."); Dictionary <string, List <string> > results = new Dictionary <string, List <string> >(); FileStream fs = new FileStream(outputFolder + Path.DirectorySeparatorChar + scriptName + "_EXP.dms", FileMode.Create, FileAccess.Write, FileShare.None); StreamWriter sw = new StreamWriter(fs); foreach (var file in files) { DMSFile dmsFile = null; try { dmsFile = DMSReader.Read(file); }catch (FormatException fe) { /* invalid DAT file found... skip */ continue; } Console.WriteLine(" Processing file: " + dmsFile.FileName); Console.WriteLine(" Table count: " + dmsFile.Tables.Count); Console.WriteLine(" Total rows: " + dmsFile.Tables.Sum(t => t.Rows.Count)); foreach (var table in dmsFile.Tables) { if (table.Rows.Count == 0) { continue; } if (results.ContainsKey(table.Name) == false) { results.Add(table.Name, new List <string>()); } if (results[table.Name].Contains(table.WhereClause) == false) { results[table.Name].Add(table.WhereClause); } } } Console.WriteLine(" All Files processed, generating unified scripts."); sw.WriteLine("-- Rebuilt with DMSUtils -- "); sw.WriteLine(); sw.WriteLine("SET OUTPUT " + scriptName + "_EXP.dat;"); sw.WriteLine("SET LOG " + scriptName + "_EXP.log;"); sw.WriteLine(""); foreach (var key in results.Keys) { var whereList = results[key]; whereList.Sort(); foreach (var where in whereList) { if (results[key].Contains("") && where.Equals("") == false) { sw.Write("-- EXPORT " + key); } else { sw.Write("EXPORT " + key); } if (where.Trim().Length != 0) { sw.WriteLine(" WHERE " + where + ";"); } else { sw.WriteLine(";"); } } sw.WriteLine(); } sw.Flush(); sw.Close(); sw = new StreamWriter(new FileStream(outputFolder + Path.DirectorySeparatorChar + scriptName + "_IMP.dms", FileMode.Create, FileAccess.Write, FileShare.None)); sw.WriteLine("-- Rebuilt with DMSUtils -- "); sw.WriteLine(); sw.WriteLine("SET INPUT " + scriptName + "_EXP.dat;"); sw.WriteLine("SET LOG " + scriptName + "_IMP.log;"); sw.WriteLine(); foreach (var key in results.Keys) { sw.WriteLine("IMPORT " + key + ";"); sw.WriteLine(); } sw.Flush(); sw.Close(); Console.WriteLine("Script generation complete."); }
public SQLGeneratorOptions(DMSFile dmsFile, string filePath) : this() { /*bool padColumns, bool extractLongs, bool ignoreEmptyTables */ UpdateDMSInfo(dmsFile, filePath); }
public ActionResult CreateFile(string projectGuid, string folderGuid, string fileSeriesNames, string description, string templateType) { return(ActionUtils.Json(() => { var dms = GetDMSAndCheckPermission(projectGuid, PermissionType.Execute); var folder = dms.FindFolder(folderGuid); CommUtils.AssertNotNull(folder, "找不到文件夹[FolderGuid={0} DMSGuid={1}],请刷新后再试", folderGuid, dms.Instance.Guid); folder.IgnoreNull = false; var dict = new Dictionary <RepositoryFile, HttpPostedFileBase>(); var fileSeriesNameList = CommUtils.Split(fileSeriesNames).ToList(); var files = Request.Files; // CommUtils.Assert(Request.Files.Count > 0, "请选择上传文件"); fileSeriesNameList.ForEach(x => { ValidateUtils.FileName(x, "文档名称"); CommUtils.Assert(x.Length <= 100, "文档名称[{0}]不能超过100个字符数", x); CommUtils.Assert(!folder.Files.Any(y => y.FileSeries.Name == x), "文件[{0}]已经存在", x); }); CommUtils.AssertHasContent(fileSeriesNames, "文档名称不能为空"); // CommUtils.AssertEquals(fileSeriesNames.Count, files.Count, "上传文件数和fileSeriesNames数不一致"); var fileGuids = new List <string>(); for (int i = 0; i < files.Count; i++) { var file = files[i]; var index = Math.Max(file.FileName.LastIndexOf('\\'), file.FileName.LastIndexOf('/')); var fileName = index < 0 ? file.FileName : file.FileName.Substring(index + 1); CommUtils.AssertHasContent(fileName, "文件名不能为空"); CommUtils.Assert(fileName.Length <= 100, "选择的文件名称[{0}]不能超过100个字符数", fileName); CommUtils.Assert(!folder.Files.Any(x => x.FileSeries.Name == fileSeriesNameList[i]), "文件[{0}]已经存在", fileSeriesNameList[i]); var memoryStream = new MemoryStream(new BinaryReader(file.InputStream).ReadBytes(file.ContentLength)); var newFile = Platform.Repository.AddFile(fileName, memoryStream); fileGuids.Add(newFile.Guid); dict[newFile] = file; } var result = new List <DMSFile>(); string operationType = "上传"; string fileSeriesGuid = ""; if (dict.Keys.Count == 0) { var isExistTemplateType = string.IsNullOrWhiteSpace(templateType); var dmsFileSeriesTemplateType = DmsFileSeriesTemplateType.None; if (!isExistTemplateType) { dmsFileSeriesTemplateType = CommUtils.ParseEnum <DmsFileSeriesTemplateType>(templateType); } operationType = "创建"; fileSeriesNameList.ForEach(x => { var newFileSeries = NewFileSeries(x, folder); fileSeriesGuid = newFileSeries.Guid; m_dbAdapter.DMSProjectLog.AddDmsProjectLog(projectGuid, fileSeriesGuid, "文件夹[" + folder.Instance.Name + "]中" + operationType + "文件系列" + x); if (!isExistTemplateType && dmsFileSeriesTemplateType != DmsFileSeriesTemplateType.None) { NewDMSFileSeriesTemplate(newFileSeries.Id, dmsFileSeriesTemplateType); } }); } for (int i = 0; i < dict.Keys.Count; i++) { var repoFile = dict.Keys.ElementAt(i); var fileSeriesName = fileSeriesNameList[i]; var dmsFileSeries = new DMSFileSeries(); dmsFileSeries = NewFileSeries(fileSeriesName, folder); fileSeriesGuid = dmsFileSeries.Guid; var now = DateTime.Now; DMSFile dmsFile = new DMSFile(); dmsFile.DMSId = dms.Instance.Id; dmsFile.DMSFileSeriesId = dmsFileSeries.Id; dmsFile.RepoFileId = repoFile.Id; dmsFile.Name = repoFile.Name; dmsFile.Description = description ?? string.Empty; dmsFile.Size = dict[repoFile].ContentLength; dmsFile.Version = 1; dmsFile.LastModifyUserName = CurrentUserName; dmsFile.LastModifyTime = now; dmsFile.CreateUserName = CurrentUserName; dmsFile.CreateTime = now; result.Add(m_dbAdapter.DMSFile.Create(dmsFile)); m_dbAdapter.DMSProjectLog.AddDmsProjectLog(projectGuid, dmsFileSeries.Guid, "文件夹[" + folder.Instance.Name + "]中" + operationType + "文件" + fileSeriesName); } return ActionUtils.Success(fileSeriesGuid); })); }