You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

207 lines
7.6 KiB

1 month ago
  1. using Newtonsoft.Json;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. namespace Report.Net5.ConsoleTest
  6. {
  7. class Program
  8. {
  9. public static T DeserializeObject<T>(string data) where T : class
  10. {
  11. var obj = JsonConvert.DeserializeObject<T>(data);
  12. return obj;
  13. }
  14. public static string SerializeObject(object data)
  15. {
  16. string str = JsonConvert.SerializeObject(data);
  17. return str;
  18. }
  19. static void Main(string[] args)
  20. {
  21. Console.WriteLine("Hello World!");
  22. zydjsontest();
  23. Console.WriteLine("Hello World!");
  24. }
  25. static void zydjsontest()
  26. {
  27. string str = @"{
  28. 'patientRegisterId': '3a0c7f6e-3ff1-fef6-c568-6f541aabe87a',
  29. 'patientRegisterNo': '202307190001',
  30. 'patientName': ' 7',
  31. 'sexName': '',
  32. 'age': 46,
  33. 'idNo': '',
  34. 'mobileTelephone': '13800138000',
  35. 'patientNo': '6',
  36. 'medicalTimes': 1,
  37. 'jobCardNo': '',
  38. 'medicalCardNo': '',
  39. 'customerOrgName': '',
  40. 'departmentName': '',
  41. 'customerOrgGroupName': null,
  42. 'medicalPackageName': null,
  43. 'personnelTypeName': null,
  44. 'medicalCenterAddress': '',
  45. 'medicalCenterTelphone': '',
  46. 'medicalCenterFax': '',
  47. 'detail': [
  48. {
  49. 'guideName': '',
  50. 'displayOrder': 1,
  51. 'detail_Name': [
  52. {
  53. 'asbitemName': '',
  54. 'asbitemGuide': '12',
  55. 'displayOrder': 30
  56. }
  57. ]
  58. },
  59. {
  60. 'guideName': '',
  61. 'displayOrder': 2,
  62. 'detail_Name': [
  63. {
  64. 'asbitemName': '',
  65. 'asbitemGuide': '12-202',
  66. 'displayOrder': 6
  67. },
  68. {
  69. 'asbitemName': '',
  70. 'asbitemGuide': '12-201',
  71. 'displayOrder': 22
  72. }
  73. ]
  74. },
  75. {
  76. 'guideName': '',
  77. 'displayOrder': 3,
  78. 'detail_Name': [
  79. {
  80. 'asbitemName': '',
  81. 'asbitemGuide': '13',
  82. 'displayOrder': 15
  83. },
  84. {
  85. 'asbitemName': '',
  86. 'asbitemGuide': '13',
  87. 'displayOrder': 17
  88. }
  89. ]
  90. }
  91. ]
  92. }";
  93. zyd dj = DeserializeObject<zyd>(str);
  94. patientinfo pat = new patientinfo()
  95. {
  96. patientRegisterId = dj.patientRegisterId,
  97. patientRegisterNo = dj.patientRegisterNo,
  98. patientName = dj.patientName,
  99. sexName = dj.sexName,
  100. age = dj.age,
  101. idNo = dj.idNo,
  102. mobileTelephone = dj.mobileTelephone,
  103. patientNo = dj.patientNo,
  104. medicalTimes = dj.medicalTimes,
  105. jobCardNo = dj.jobCardNo,
  106. medicalCardNo = dj.medicalCardNo,
  107. customerOrgName = dj.customerOrgName,
  108. departmentName = dj.departmentName,
  109. customerOrgGroupName = dj.customerOrgGroupName,
  110. medicalPackageName = dj.medicalPackageName,
  111. personnelTypeName = dj.personnelTypeName,
  112. medicalCenterAddress = dj.medicalCenterAddress,
  113. medicalCenterTelphone = dj.medicalCenterTelphone,
  114. medicalCenterFax = dj.medicalCenterFax
  115. };
  116. List<patientinfo> plist = new List<patientinfo>();
  117. plist.Add(pat);
  118. List<guide> glist = new List<guide>();
  119. List<asbitem> alist = new List<asbitem>();
  120. foreach (var item in dj.detail)
  121. {
  122. guide ig = new guide()
  123. {
  124. guideName = item.guideName,
  125. displayOrder = item.displayOrder
  126. };
  127. foreach (var d1 in item.detail_Name)
  128. {
  129. asbitem asb = new asbitem()
  130. {
  131. guideName = ig.guideName,
  132. asbitemGuide = d1.asbitemGuide,
  133. asbitemName = d1.asbitemName,
  134. displayOrder = d1.displayOrder
  135. };
  136. alist.Add(asb);
  137. }
  138. glist.Add(ig);
  139. }
  140. List<dtBase> dlist = new List<dtBase>();
  141. foreach (var item in plist)
  142. dlist.Add(item);
  143. foreach (var item in glist)
  144. dlist.Add(item);
  145. foreach (var item in alist)
  146. dlist.Add(item);
  147. JsonClsEx ex = new JsonClsEx()
  148. {
  149. ReportCode = "001",
  150. token = "1223423423",
  151. ReportTable = dlist
  152. };
  153. string a6 = SerializeObject(ex);
  154. JsonClsEx ee = DeserializeObject<JsonClsEx>(a6);
  155. DataSet ds = ConvertToDataSet(ee.ReportTable);
  156. FastReport.Report report = new FastReport.Report();
  157. report.RegisterData(ds);
  158. report.Prepare();
  159. }
  160. public static DataSet ConvertToDataSet<T>(IList<T> list)
  161. {
  162. if (list == null || list.Count <= 0)
  163. {
  164. return null;
  165. }
  166. DataSet ds = new DataSet();
  167. DataTable dt = new DataTable(typeof(T).Name);
  168. DataColumn column;
  169. DataRow row;
  170. System.Reflection.PropertyInfo[] myPropertyInfo = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
  171. foreach (T t in list)
  172. {
  173. if (t == null)
  174. {
  175. continue;
  176. }
  177. row = dt.NewRow();
  178. for (int i = 0, j = myPropertyInfo.Length; i < j; i++)
  179. {
  180. System.Reflection.PropertyInfo pi = myPropertyInfo[i];
  181. string name = pi.Name;
  182. if (dt.Columns[name] == null)
  183. {
  184. column = new DataColumn(name, pi.PropertyType);
  185. dt.Columns.Add(column);
  186. }
  187. row[name] = pi.GetValue(t, null);
  188. }
  189. dt.Rows.Add(row);
  190. }
  191. ds.Tables.Add(dt);
  192. return ds;
  193. }
  194. }
  195. }