智慧大脑
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 
 

145 řádky
4.7 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. namespace 代码生成器
  4. {
  5. public class 列对象
  6. {
  7. public string 英文列名 { get; set; }
  8. public string 中文列名 { get; set; }
  9. public string 列类型 { get; set; }
  10. public string 列长度 { get; set; }
  11. public string 是否可空 { get; set; }
  12. }
  13. public class 表对象
  14. {
  15. public string 英文表名 { get; set; }
  16. public string 中文表名 { get; set; }
  17. public List<列对象> 列对象集合 { get; set; } = new List<列对象>();
  18. }
  19. class Program
  20. {
  21. static void Main(string[] args)
  22. {
  23. string 中职学校概况基础数据表 = @"中职巡课排课数据表 ods_zzxkpksj
  24. 数据项名 中文简称 类型 长度 约束 值空间
  25. gzzyqksjid 主键数据唯一性标识 C 32 O 32 位全局唯一编码字符串
  26. xxjgdm 学校机构代码 C 36 O 统一社会信用代码
  27. xxjgmc 学校机构名称 C 80 O
  28. ssxqbh 所属校区编号 C 80 M
  29. nj 年级 C 32 O 学校自定义
  30. bj 班级 C 60 O 学校自定义
  31. xn 学年 C 23 O 如:2021-2022 学年
  32. xq 学期 C 23 O 如:第二学期
  33. zc 周次 C 2 O 数字标识:1
  34. xqj 星期几 C 4 O 例如:星期一
  35. skjc 上课节次 C 32 O 数字标识:2
  36. skrq 上课日期 C 32 M 上课当天日期:yyyy-MM-dd
  37. kcmc 课程名称 C 2 M
  38. kcdm 课程代码 C 2 M
  39. jgh 教工号 C 2 O
  40. jxbrs 教学班人数 N 12 M 数字标识
  41. skkssj 上课开始时间 C 32 M 上开开始时间例如:9:00
  42. skjssj 上课结束时间 C 32 M 上课结束时间例如:22:00
  43. sdxsrs 实到学生人数 C 12 M
  44. jsdkqk 教师到课情况 C 2 M 1-正常 0-异常
  45. xkr 巡课人 C 32 O
  46. sjcjsj 数据采集时间 C 60 M yyyy-MM-dd hh:mm:ss
  47. ";
  48. string _temp = 中职学校概况基础数据表;
  49. //获取表明与描述
  50. 表对象 _表对象 = new 表对象()
  51. {
  52. 英文表名 = _temp.Split('\n')[0].Split(' ')[2],
  53. 中文表名 = _temp.Split('\n')[0].Split(' ')[0]
  54. };
  55. foreach (var item in _temp.Split('\n'))
  56. {
  57. var itemLst = item.Split(' ');
  58. if (itemLst.Length <= 5 || item.Contains("数据项名") || itemLst[0] == "" || item.Contains(_表对象.中文表名)) { continue; }
  59. 列对象 _列对象 = new 列对象();
  60. _列对象.英文列名 = itemLst[0];
  61. _列对象.中文列名 = itemLst[1];
  62. _列对象.列类型 = itemLst[2];
  63. _列对象.列长度 = itemLst[3];
  64. _列对象.是否可空 = itemLst[4];
  65. _表对象.列对象集合.Add(_列对象);
  66. }
  67. string input = $@"
  68. using DataSendApi.Program.CustomizeAttribute;
  69. namespace DataSendApi.Program.Model
  70. {{
  71. /// <summary>
  72. /// {_表对象.中文表名}
  73. /// </summary>
  74. [CustomizeTable(ChineseTableName = ""{_表对象.中文表名}"", DatabaseTableName = ""{_表对象.英文表名.ToUpper()}"")]
  75. public class {_表对象.英文表名.ToUpper()}Entity : BaseEntity
  76. {{
  77. ";
  78. int i = 0;
  79. foreach (var item in _表对象.列对象集合)
  80. {
  81. i++;
  82. var 列类型 = item.列类型 == "C" ? "string" : "decimal";
  83. input += $@"
  84. /// <summary>
  85. /// {item.中文列名}
  86. /// </summary>
  87. [CustomizeField(
  88. ChineseColumnName = ""{item.中文列名}"",
  89. ColumnLength = {item.列长度},
  90. ColumnType = ""{列类型}"",
  91. DatabaseColumnName = ""{item.英文列名.ToUpper()}"",
  92. IsDatabase = true,
  93. IsApi = true,
  94. IsExcelVerify = false,
  95. IsPrimaryKey = {(i == 1 ? "true" : "false")},
  96. IsJson = false,
  97. JsonName = """",
  98. ColumnFormat ="""",
  99. IsExcel = true,
  100. IsNull = {(item.是否可空 == "M" ? "false" : "true")}
  101. )]
  102. public {列类型} {item.英文列名.ToUpper()} {{ get; set; }}
  103. ";
  104. }
  105. input += $@"
  106. /// <summary>
  107. /// 是否推送(0:否 1:推送)
  108. /// </summary>
  109. [CustomizeField(
  110. ChineseColumnName = ""是否推送"",
  111. ColumnLength = 2,
  112. ColumnType = ""string"",
  113. DatabaseColumnName = ""IsPush"",
  114. IsDatabase = true,
  115. IsApi = false,
  116. IsExcelVerify = false,
  117. IsPrimaryKey = false,
  118. IsJson = false,
  119. JsonName = """",
  120. ColumnFormat = """",
  121. IsExcel = false,
  122. IsNull = false
  123. )]
  124. public string IsPush {{ get; set; }}
  125. }}
  126. }}
  127. ";
  128. Console.WriteLine(input);
  129. Console.Read();
  130. }
  131. }
  132. }