public bool FindManifestAndBackup(out bool differentmanifest) { if (ManifestName == "") { differentmanifest = true; return(false); } differentmanifest = false; if (!Directory.Exists(FileSystemUtil.Directory.FullName)) { return(false); } var files = Directory.GetFiles(FileSystemUtil.Directory.FullName, ".MNFST=*", SearchOption.TopDirectoryOnly); string[] manifestProperties = ManifestName.Split(','); foreach (string ManifestFileName in files) { if (ManifestFileName.StartsWith(Path.Combine(FileSystemUtil.Directory.FullName, manifestProperties[0] + ","))) { if (File.Exists(Path.Combine(FileSystemUtil.Directory.FullName, ManifestName))) { BackupManifest(FileSystemUtil.Directory.FullName, ManifestName); return(true); } else { differentmanifest = true; } } } return(false); }
/// <summary> /// Checks whether existing manifests on disk can be merged with new manifests being created, by testing whether any build products they reference have a newer timestamp /// </summary> /// <param name="BuildId">The current build id read from the version file. Only manifests matching this ID will be considered.</param> /// <param name="ManifestFiles">List of new manifest files</param> /// <param name="RecycleFileToManifest">If successful, is populated with a map of filename to existing manifests that can be merged with the new manifests.</param> /// <returns>True if the manifests can be recycled (and fills RecycleFileToManifest)</returns> bool TryRecyclingManifests(string BuildId, IEnumerable <FileReference> ManifestFiles, Dictionary <FileReference, ModuleManifest> RecycleFileToManifest) { bool bCanRecycleManifests = true; foreach (FileReference ManifestFileName in ManifestFiles) { ModuleManifest Manifest; if (ManifestFileName.IsUnderDirectory(UnrealBuildTool.EngineDirectory) && TryReadManifest(ManifestFileName, out Manifest)) { if (Manifest.BuildId == BuildId) { if (IsOutOfDate(ManifestFileName, Manifest)) { bCanRecycleManifests = false; break; } RecycleFileToManifest.Add(ManifestFileName, Manifest); } } } return(bCanRecycleManifests); }
public void ExcelGenearte() { var temp = new FileInfo(TemplateFileDir + Path.DirectorySeparatorChar + TemplateFileName); var originManiName = ManifestFileDir + Path.DirectorySeparatorChar + ManifestFileName; FileInfo mani; if (ManifestFileName.EndsWith(".xls")) { var originMani = new FileInfo(originManiName); mani = new FileInfo(originMani + "x"); var IsConverted = converter.XlsToXlsx(originMani); if (!IsConverted) { Console.WriteLine("Convert fail."); return; } } else { mani = new FileInfo(originManiName); } using (ExcelPackage maniPackage = new ExcelPackage(mani)) { var maniWs = maniPackage.Workbook.Worksheets.FirstOrDefault(); if (!ColumnNameExist(maniWs, InventoryName)) { throw new InvalidOperationException($"列{InventoryName}未配置"); } if (!ColumnNameExist(maniWs, TotalAmountWithTax)) { throw new InvalidOperationException($"列{TotalAmountWithTax}未配置"); } if (!ColumnNameExist(maniWs, InventoryAmount)) { throw new InvalidOperationException($"列{InventoryAmount}未配置"); } if (!ColumnNameExist(maniWs, UnitWithTax)) { throw new InvalidOperationException($"列{UnitWithTax}未配置"); } //To Do clean up the Data using (ExcelPackage tempPackage = new ExcelPackage(temp)) { //增值税清单模板 var tempWs = tempPackage.Workbook.Worksheets.FirstOrDefault(); int currentIndex = 2; int count = 1; int preIndex = 2; double moneySum = 0; string outputDir = @"D:\清单结果"; string fileName = ManifestFileName.Split('.')[0] + "子表"; var lastIndex = GetColumnLastRow(maniWs, InventoryName); while (!(currentIndex > lastIndex)) { if (moneySum < 113000) { double money; var moneyExist = double.TryParse( maniWs.Cells[currentIndex, GetColumnByName(maniWs, TotalAmountWithTax)].Value?.ToString(), out money); if (!moneyExist) { money = 0; } else if (money < 0) { throw new InvalidOperationException($"列{TotalAmountWithTax}不能为负数"); } moneySum += money; var stockName = maniWs.Cells[currentIndex, GetColumnByName(maniWs, InventoryName)]; var nameLength = stockName.Value?.ToString().Length; if (nameLength > 30) { stockName.Value = stockName.Value.ToString().Substring(0, 29); } if (moneySum >= 113000 || currentIndex == lastIndex) { if (moneySum >= 113000) { moneySum -= money; currentIndex--; } //生成子表 var fi = new FileInfo(outputDir + Path.DirectorySeparatorChar + fileName + count.ToString() + ".xlsx"); using (ExcelPackage xlPackage = new ExcelPackage(fi)) { //sheet already exist var xlSheetsList = xlPackage.Workbook.Worksheets; var destWs = xlSheetsList.All(x => x.Name != "增值税清单") ? xlSheetsList.Add("增值税清单", tempWs) : xlSheetsList["增值税清单"]; var interval = currentIndex - preIndex + 2; string destColumnName = "货物或应税劳务、服务名称"; string srcColumnName = InventoryName; ExcelRange destRange = GetExcelRange(destWs, 2, interval, destColumnName, destColumnName); ExcelRange srcRange = GetExcelRange(maniWs, preIndex, currentIndex, srcColumnName, srcColumnName); CopyFrom(srcRange, destRange); if (ColumnNameExist(maniWs, InventoryCode)) { destColumnName = "规格型号"; srcColumnName = InventoryCode; destRange = GetExcelRange(destWs, 2, interval, destColumnName, destColumnName); srcRange = GetExcelRange(maniWs, preIndex, currentIndex, srcColumnName, srcColumnName); CopyFrom(srcRange, destRange); } destColumnName = "数量"; srcColumnName = InventoryAmount; destRange = GetExcelRange(destWs, 2, interval, destColumnName, destColumnName); srcRange = GetExcelRange(maniWs, preIndex, currentIndex, srcColumnName, srcColumnName); CopyFrom(srcRange, destRange); destColumnName = "金额"; srcColumnName = TotalAmountWithTax; destRange = GetExcelRange(destWs, 2, interval, destColumnName, destColumnName); srcRange = GetExcelRange(maniWs, preIndex, currentIndex, srcColumnName, srcColumnName); CopyFrom(srcRange, destRange); destColumnName = "单价"; srcColumnName = UnitWithTax; destRange = GetExcelRange(destWs, 2, interval, destColumnName, destColumnName); srcRange = GetExcelRange(maniWs, preIndex, currentIndex, srcColumnName, srcColumnName); CopyFrom(srcRange, destRange); //copy operation CopyValue("价格方式", interval, destWs); //CopyValue("税收分类编码版本号", interval, destWs); CopyValue("使用优惠政策标识", interval, destWs); CopyValue("中外合作油气田标识", interval, destWs); FillValue("税率", interval, destWs, 0.13); FillValue("税收分类编码", interval, destWs, "1060201070000000000"); FillValue("税收分类编码版本号", interval, destWs, "33.0"); FillValue("计量单位", interval, destWs, "张"); //set index column var st_lastRow = GetColumnLastRow(destWs, "金额"); var st_columnIndex = GetColumnByName(destWs, "序号"); for (int i = 2; i <= st_lastRow; i++) { destWs.Cells[i, st_columnIndex].Value = i - 1; } preIndex = currentIndex + 1; xlPackage.SaveAs(fi); converter.XlsxToXls(fi); } moneySum = 0; count++; } } currentIndex++; } } } if (File.Exists(mani.ToString())) { File.Delete(mani.ToString()); } }