CfgMgr.ts 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. export class CfgMgr {
  2. public static CfgData: Map<string, any> = new Map(); //any为{key:{}}
  3. public static CfgDataList: Map<string, any> = new Map();//any为[];
  4. /**
  5. * 添加配置数据
  6. * @param name
  7. * @param cfgs
  8. */
  9. public static addCfgData(name: string, cfgs: any) {
  10. if (name == null || !this.CfgDataList.has(name)) {
  11. console.log("Error: 不存在配置表" + name);
  12. return;
  13. }
  14. let datas = this.CfgData.get(name);
  15. let dataList = this.CfgDataList.get(name);
  16. cfgs.forEach((item) => {
  17. if (item.hasOwnProperty('Id')) {
  18. let key = item.Id;
  19. datas[key] = item;
  20. dataList.push(item);
  21. }
  22. else {
  23. console.log('配置表Id字段错误:', name);
  24. }
  25. });
  26. }
  27. /**
  28. * 设置配置数据
  29. * @param name
  30. * @param cfgs
  31. */
  32. public static setCfgData(name: string, cfgs: any) {
  33. let datas = {};
  34. let dataList = [];
  35. cfgs.forEach((item) => {
  36. if (item.hasOwnProperty('Id')) {
  37. let key = item.Id;
  38. datas[key] = item;
  39. dataList.push(item);
  40. }
  41. else {
  42. console.log('配置表Id字段错误:', name);
  43. }
  44. });
  45. this.CfgData.set(name, datas);
  46. this.CfgDataList.set(name, dataList);
  47. }
  48. /**
  49. * 返回数据对象map
  50. * cfgMgr.getCfgData<class>(class);
  51. * @param {any} cfgCls 数据对象
  52. * @returns T 数据对象
  53. */
  54. public static getCfgData<T>(cls: any): { [key: string]: T } {
  55. let name = cls.ClassName;
  56. if (!this.CfgData.has(name)) {
  57. console.log("Error: 不存在配置表" + name);
  58. return null;
  59. }
  60. return this.CfgData.get(name);
  61. };
  62. public static hasCfg(key: string) {
  63. if (this.CfgData.has(key)) {
  64. return true;
  65. }
  66. return false;
  67. }
  68. /**
  69. * 返回数据对象数组
  70. * cfgMgr.getCfgDataArray<class>(class);
  71. * @param {any} cfgCls 数据对象
  72. * @returns Array 数据对象数组
  73. */
  74. public static getCfgDataArray<T>(cls: any): Array<T> {
  75. let name = cls.ClassName;
  76. if (name == null || !this.CfgDataList.has(name)) {
  77. console.log("Error: 不存在配置表" + name);
  78. return null;
  79. }
  80. return this.CfgDataList.get(name);
  81. };
  82. /**
  83. * 根据ID获得配置
  84. * @param {any} cfgCls
  85. * @param {string|number} Id
  86. * @returns T
  87. */
  88. public static getDataById<T>(cls: any, Id: string | number): T {
  89. let name = cls.ClassName;
  90. let res: T = null;
  91. if (!this.CfgData.has(name)) {
  92. console.log(name + "配置不存在。" + Id);
  93. }
  94. else {
  95. let data = this.CfgData.get(name);
  96. if (!data[Id]) {
  97. console.log(name + ":不存在ID " + Id);
  98. }
  99. else {
  100. res = data[Id];
  101. }
  102. }
  103. return res;
  104. }
  105. public static clearByKey(key: string) {
  106. this.CfgData.delete(key);
  107. this.CfgDataList.delete(key);
  108. }
  109. }