/// <summary> /// 按案卷上报 /// </summary> /// <returns></returns> private bool?ConfirmSplitForfrmArchive() { if (txtLoc.Text == "") { TXMessageBoxExtensions.Info("请选择导出文件的存储路径!"); txtLoc.Focus(); return(null); } string destFilename = Globals.Projectname; destFolder = txtLoc.Text; string dest_temp = Path.GetDirectoryName(txtLoc.Text); if (!Directory.Exists(dest_temp)) { TXMessageBoxExtensions.Info("存储的路径不存在!"); return(null); } double projectSize = Convert.ToDouble(DirectoryInfoCommon.GetDirectorySpace(Application.StartupPath + "\\Project\\" + Globals.ProjectNO) / Convert.ToDouble(1024 * 1024 * 1024)); ReadWriteAppConfig config = new ReadWriteAppConfig(); if (config.Read("Upload_ProjectSize") == "") { config.Write("Upload_ProjectSize", "4"); } string upload_size = config.Read("Upload_ProjectSize"); if (projectSize > Convert.ToDouble(upload_size)) { DialogResult dresult = TXMessageBoxExtensions.Question("上报工程大于" + upload_size + "G,当前工程大小为:" + System.Math.Round(projectSize, 2) + "G \r\n\n 【温馨提示:工程太大,生成移交文件需要比较长得时间】 \r\n\n 是否继续生成移交?"); if (dresult != DialogResult.OK) { return(null); } } else if (MyCommon.CheckDisk(destFolder) < projectSize) { //硬盘空间不足 TXMessageBoxExtensions.Info("上报工程大小为:" + System.Math.Round(projectSize, 2) + "G 保存目录硬盘空间不足,无法生成! \r\n 【温馨提示:请选择比较空闲的盘符】"); txtLoc.Focus(); return(null); } tempFullName = dest_temp + "\\" + Guid.NewGuid().ToString(); if (System.IO.Directory.Exists(tempFullName)) { MyCommon.DeleteAndCreateEmptyDirectory(tempFullName, false); } MyCommon.DeleteAndCreateEmptyDirectory(tempFullName); MyCommon.DeleteAndCreateEmptyDirectory(destFolder, false); MyCommon.DeleteAndCreateEmptyDirectory(destFolder, true); panelBottom.Visible = true; panelTop.Visible = false; Application.DoEvents(); butClose.Enabled = false; ERM.CBLL.CreateSip projectFactory = new ERM.CBLL.CreateSip(Globals.ProjectNO); //DataSet dsFinalArchive = projectFactory.GetListArchive(Globals.ProjectNO, ""); DataSet dsFinalArchive = new Archive().pb_setXmlInfo(); if (dsFinalArchive.Tables.Count < 1 || dsFinalArchive.Tables[0].Rows.Count < 1) { TXMessageBoxExtensions.Info("没有任何案卷可以移交!"); return(false); } int count_FinalArchive = dsFinalArchive.Tables[0].Rows.Count; bool checkfile_flag = true; for (int i = 0; i < count_FinalArchive; i++) { BLL.T_FileList_BLL fileBLL = new ERM.BLL.T_FileList_BLL(); IList <MDL.T_FileList> fileList = fileBLL.FindByArchiveID2(dsFinalArchive.Tables[0].Rows[i]["案卷ID"].ToString(), Globals.ProjectNO); foreach (MDL.T_FileList obj in fileList) { if (obj.selected == 1 || obj.filepath == null || obj.filepath == "") { ConvertAllEFileToPDF(obj.FileID); } else { string tFilePath = obj.filepath.Replace("MPDF\\", ""); string sourMfile = Globals.ProjectPath + obj.filepath; if (!System.IO.File.Exists(sourMfile)) { ConvertAllEFileToPDF(obj.FileID); } } IList <MDL.T_CellAndEFile> cellList = (new ERM.BLL.T_CellAndEFile_BLL()).FindByGdFileID(obj.FileID, Globals.ProjectNO); ERM.MDL.T_FileList file_model = (new ERM.BLL.T_FileList_BLL()).Find(obj.FileID, Globals.ProjectNO); if ((file_model.filepath == null || file_model.filepath == "") && cellList.Count > 0) { TXMessageBoxExtensions.Info("提示:文件【" + obj.gdwj + "】电子文件信息有误!无法移交,请审查"); checkfile_flag = false; break; } } if (!checkfile_flag) { break; } } if (!checkfile_flag) { return(false); } progressBar2.Maximum = count_FinalArchive; progressBar2.Minimum = 0; progressBar2.MarqueeAnimationSpeed = 1000; progressBar2.Step = 1; lblMsg.Text = "正在输出元数据信息..."; Application.DoEvents(); GetListArchiveXML(projectFactory, tempFullName); try { for (int i = 0; i < count_FinalArchive; i++) { if (!Directory.Exists(tempFullName)) { MyCommon.DeleteAndCreateEmptyDirectory(tempFullName, true); } //20120530 屏蔽XML文件 GetProjectXML(projectFactory, tempFullName); if (Convert.ToBoolean(Properties.Settings.Default.SipIncludeDoc)) { //20120530 屏蔽XML文件 GetListArchiveXMLEx(dsFinalArchive.Tables[0].Rows[i]["案卷ID"].ToString(), tempFullName); GetDocumentXMLEx(dsFinalArchive.Tables[0].Rows[i]["案卷ID"].ToString(), tempFullName); BLL.T_FileList_BLL fileBLL = new ERM.BLL.T_FileList_BLL(); IList <MDL.T_FileList> fileList = fileBLL.FindByArchiveID2(dsFinalArchive.Tables[0].Rows[i]["案卷ID"].ToString(), Globals.ProjectNO); foreach (MDL.T_FileList obj in fileList) { //20120530 屏蔽XML文件 //getDocModel(obj); getDocModel_NEW(obj, tempFullName); } } lblMsg.Text = "正在对数据包进行封装..."; Application.DoEvents(); if (System.IO.File.Exists(tempFullName + "\\index.dat"))//Application.StartupPath + "\\temp\\index.dat" { System.IO.File.Move(tempFullName + "\\index.dat", destFolder + "\\index.dat"); string gcInfo = System.IO.File.ReadAllText(tempFullName + "\\a#sgwj_gc.xml", Encoding.GetEncoding("gb2312")); string docList = System.IO.File.ReadAllText(destFolder + "\\index.dat"); gcInfo = gcInfo.Replace("</项目工程信息>", "<ArchiveFileList>" + docList + "</ArchiveFileList></项目工程信息>"); System.IO.File.WriteAllText(destFolder + "\\index.dat", gcInfo, Encoding.GetEncoding("gb2312")); } SevenZip.SevenZipCompressor.SetLibraryPath(Application.StartupPath + "\\7z.dll"); SevenZip.SevenZipCompressor tmp = new SevenZip.SevenZipCompressor(); { tmp.ArchiveFormat = SevenZip.OutArchiveFormat.Zip; tmp.CompressDirectory(tempFullName, destFolder + "\\" + dsFinalArchive.Tables[0].Rows[i]["案卷ID"].ToString() + ".sip"); } MyCommon.DeleteAndCreateEmptyDirectory(tempFullName, false); progressBar2.Value = progressBar2.Value + 1; } } catch (Exception ex) { MyCommon.DeleteAndCreateEmptyDirectory(tempFullName, false); TXMessageBoxExtensions.Info("封装数据时发生意外错误!错误002"); MyCommon.WriteLog("生成移交文件时失败!错误信息:" + ex.Message); return(false); } butClose.Text = "关闭"; butClose.Enabled = true; TXMessageBoxExtensions.Info("已经成功生成上报文件!"); return(true); }