// 编译Excel文件或者后台Sql private bool CompileExcel(CommitCom c) { // 确定详细设计说明书文件 MacroType m; Detail d = Dls.FindByName(c); if (d == null) { log.WriteErrorLog("查找不到对应的详细设计说明书模块!"); return(false); } // 标定index bool Result = true; int index = Dls.IndexOf(d) + 1; // 先把存在的CError删除,以检测是否发生编译错误 if (File.Exists(Path.Combine(OutDir, "CError.txt"))) { File.Delete(Path.Combine(OutDir, "CError.txt")); } // 编译Excel 最耗时,对Excel检查是否需要编译,比较PC文件 bool bNew = false; DateTime t2 = File.GetLastWriteTime(c.sawfile.LocalPath); DateTime t1 = t2.AddSeconds(-1); if (c.ctype == ComType.SO) { foreach (string s in d.ProcFiles) { t1 = File.GetLastWriteTime(Path.Combine(OutDir, s)); if (DateTime.Compare(t1, t2) > 0) { bNew = true; break; } } } else if (c.ctype == ComType.Sql || c.ctype == ComType.FuncXml) { if (c.ctype == ComType.Sql) { t1 = File.GetLastWriteTime(Path.Combine(OutDir, d.SqlFile)); } else { t1 = File.GetLastWriteTime(Path.Combine(OutDir, d.XmlFile)); } if (DateTime.Compare(t1, t2) > 0) { bNew = true; } } if (bNew) { log.WriteLog("本地源代码时间晚于Excel文件时间,不需集成处理!" + c.cname + " " + c.ctype); return(true); } if (c.ctype == ComType.SO) { m = MacroType.ProC; } else if (c.ctype == ComType.Sql) { m = MacroType.SQL; } else if (c.ctype == ComType.FuncXml) { m = MacroType.FuncXml; } else { return(true); } Result = Exh.ScmRunExcelMacro(m, index, OutDir); if (!Result) { return(false); } else if (File.Exists(Path.Combine(OutDir, "CError.txt"))) { Result = false; log.WriteErrorLog("检测到编译错误文件 CError.txt,请确认!"); } return(Result); }
public override Detail GetDetail(CommitCom c) { return(Dls.FindByName(c)); }