public CodeGeneratorInfo GetCodeGenerator(string Prefix) { DataTable tb = getCodeGenerator(Prefix); if (tb != null && tb.Rows.Count > 0) { CodeGeneratorInfo info = new CodeGeneratorInfo(); info.Prefix = tb.Rows[0][0].ToString(); info.SerialNo = int.Parse(tb.Rows[0][1].ToString()); return(info); } else { return(null); } }
public string GetNextAlarmRuleDID(string craftNo) { string str; switch (CommonHelper.GetCraftShortNO(craftNo)) { case "RFP": str = "0X0A"; break; case "TAP": str = "0X0B"; break; case "PAK": str = "0X0C"; break; case "IN1": str = "0X0D"; break; case "MLA": str = "0X0E"; break; case "MIB": str = "0X0F"; break; case "INJ": str = "0X0G"; break; case "BAK": str = "0X0H"; break; case "PIE": str = "0X0I"; break; case "DGA": str = "0X0J"; break; case "FEF": str = "0X0K"; break; case "IN2": str = "0X0L"; break; case "OC1": str = "0X0M"; break; case "OCB": str = "0X0N"; break; case "XRA": str = "0X0O"; break; case "FQI": str = "0X0P"; break; case "AVI": str = "0X0Q"; break; default: throw new Exception("CraftNo无效"); } CodeGeneratorInfo entity = this.DataContext.CodeGeneratorInfos.Find(str); if (entity == null) { entity = new CodeGeneratorInfo(); entity.Prefix = str; entity.SerialNo = 1; this.DataContext.CodeGeneratorInfos.Add(entity); } int serialNo = entity.SerialNo; entity.SerialNo = serialNo + 1; this.DataContext.SaveChanges(); return(str + serialNo.ToString().PadLeft(4, '0')); }
private static bool ParseOptions( string[] cliArgs, OptTable optTable, EmcCommandLineArguments arguments, DiagnosticsEngine diags) { var catalog = new AggregateCatalog(); catalog.Catalogs.Add(new AssemblyCatalog(Assembly.GetExecutingAssembly())); catalog.Catalogs.Add(new AssemblyCatalog(typeof(ICodeGeneratorProvider).Assembly)); IArgumentList args = optTable.ParseArgs(cliArgs, out var missing); var extensions = args.GetAllArgValues(Opt.ext_eq); if (extensions.Count != 0) { foreach (var path in extensions) { if (!File.Exists(path)) { diags.Report(DiagnosticSeverity.Warning, "Ignoring extension assembly '{0}' because it does not exist.", path); continue; } catalog.Catalogs.Add(new AssemblyCatalog(path)); } } arguments.GeneratorOpts = new Dictionary <string, OptTable>(); var codeGenerator = args.GetLastArgValue(Opt.generator_eq, arguments.CompilationOptions.CodeGenOptions.CodeGenerator); var container = new CompositionContainer(catalog); container.ComposeParts(diags); var codeGeneratorProviders = container.GetExportedValues <ICodeGeneratorProvider>().ToList(); var claimedArgs = new HashSet <int>(); object customCodeGenOpts = null; foreach (var provider in codeGeneratorProviders) { var info = new CodeGeneratorInfo(provider.Name, provider); if (info.OptTable != null) { arguments.GeneratorOpts[provider.Name] = info.OptTable; } if (codeGenerator == provider.Name) { customCodeGenOpts = info.ParseOptions(cliArgs, claimedArgs, diags); } } bool success = true; if (missing.ArgCount != 0) { diags.ReportError( "Missing {1} argument{2} after: {0}", cliArgs[missing.ArgIndex], missing.ArgCount, missing.ArgCount == 1 ? string.Empty : "s"); success = false; } // Report errors on unknown arguments. foreach (var arg in args.Matching(Opt.Unknown)) { if (claimedArgs.Contains(arg.Index) || IsExtensionArgument(arg)) { continue; } diags.ReportError("Unknown argument: {0}", arg.GetAsString()); success = false; } arguments.ShowHelp = args.HasArg(Opt.help) || args.HasArg(Opt.QuestionMark); arguments.ShowVersion = args.HasArg(Opt.version); arguments.DumpMessageTable = args.GetLastArgValue(Opt.dump_msg); arguments.DumpEventTemplate = args.GetLastArgValue(Opt.dump_wevt); arguments.OutputManifest = args.GetLastArgValue(Opt.gen_manifest); arguments.Verify = args.GetFlag(Opt.verify); var opts = arguments.CompilationOptions; opts.Inputs = args.GetAllArgValues(Opt.Input).ToList(); opts.ResourceGenOnlyInputs = args.GetAllArgValues(Opt.resgen_manifest_eq).ToList(); opts.OutputBaseName = args.GetLastArgValue(Opt.out_eq); opts.GenerateResources = args.GetFlag(Opt.res, Opt.no_res, true); opts.MessageTableFile = args.GetLastArgValue(Opt.msg_file_eq); opts.EventTemplateFile = args.GetLastArgValue(Opt.wevt_file_eq); opts.ResourceFile = args.GetLastArgValue(Opt.rc_file_eq); opts.CodeGenOptions.GenerateCode = args.GetFlag(Opt.code, Opt.no_code, true); opts.CodeGenOptions.CodeHeaderFile = args.GetLastArgValue(Opt.header_file_eq); opts.CodeGenOptions.CodeGenerator = codeGenerator; if (opts.Inputs.Count == 1) { arguments.DecompilationOptions.InputModule = opts.Inputs[0]; } else if (opts.Inputs.Count == 2) { arguments.DecompilationOptions.InputEventTemplate = opts.Inputs[0]; arguments.DecompilationOptions.InputMessageTable = opts.Inputs[1]; } arguments.DecompilationOptions.OutputManifest = arguments.OutputManifest; var compatLevelString = args.GetLastArgValue(Opt.compat_eq, "10.0.16299"); if (Version.TryParse(compatLevelString, out Version compatibilityLevel)) { opts.CompatibilityLevel = compatibilityLevel; } else { diags.ReportError("Invalid compatibility level: {0}", compatLevelString); success = false; } opts.InferUnspecifiedOutputFiles(); if (arguments.Verify) { opts.CodeGenOptions.GenerateCode = false; opts.GenerateResources = false; } if (opts.CodeGenOptions.CodeGenerator != null) { var selectedCodeGen = codeGeneratorProviders.FirstOrDefault(x => x.Name == opts.CodeGenOptions.CodeGenerator); if (selectedCodeGen == null) { diags.ReportError("No code generator found with name '{0}'.", opts.CodeGenOptions.CodeGenerator); diags.Report( DiagnosticSeverity.Note, "Available generators: {0}", string.Join(", ", codeGeneratorProviders.Select(x => x.Name))); success = false; } else { opts.CodeGenOptions.CodeGeneratorFactory = () => selectedCodeGen.CreateGenerator(customCodeGenOpts); } } return(success); }
/// <summary> /// 新增、生成 rule_did /// </summary> /// <param name="craftNo"></param> /// <returns></returns> public string GetNextAlarmRuleDID(string craftNo) { string str; Database equipDB = dataProvider.EQUIPDataBase; switch (CommonHelper.GetCraftShortNO(craftNo)) { case "RFP": str = "0X0A"; break; case "TAP": str = "0X0B"; break; case "PAK": str = "0X0C"; break; case "IN1": str = "0X0D"; break; case "MLA": str = "0X0E"; break; case "MIB": str = "0X0F"; break; case "INJ": str = "0X0G"; break; case "BAK": str = "0X0H"; break; case "PIE": str = "0X0I"; break; case "DGA": str = "0X0J"; break; case "FEF": str = "0X0K"; break; case "IN2": str = "0X0L"; break; case "OC1": str = "0X0M"; break; case "OCB": str = "0X0N"; break; case "XRA": str = "0X0O"; break; case "FQI": str = "0X0P"; break; case "AVI": str = "0X0Q"; break; default: throw new Exception("CraftNo无效"); } CodeGeneratorInfo entity = GetCodeGenerator(str); if (entity == null) { entity = new CodeGeneratorInfo(); entity.Prefix = str; entity.SerialNo = 0; string sql = string.Format("insert code_generators (Prefix, SerialNo) values ('{0}', {1});" , entity.Prefix, entity.SerialNo); equipDB.ExecuteNonQuery(CommandType.Text, sql); } int serialNo = entity.SerialNo; entity.SerialNo = serialNo + 1; string sql2 = string.Format("update code_generators set SerialNo = {1} where Prefix = '{0}';" , entity.Prefix, entity.SerialNo); equipDB.ExecuteNonQuery(CommandType.Text, sql2); return(str + entity.SerialNo.ToString().PadLeft(4, '0')); }