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.

395 lines
16 KiB

1 month ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using Newtonsoft.Json;
  8. namespace PeisStart.Tests
  9. {
  10. class Program
  11. {
  12. public static T DeserializeObject<T>(string data) where T : class
  13. {
  14. var obj = JsonConvert.DeserializeObject<T>(data);
  15. return obj;
  16. }
  17. public static string SerializeObject(object data)
  18. {
  19. string str = JsonConvert.SerializeObject(data);
  20. return str;
  21. }
  22. static void Main(string[] args)
  23. {
  24. /*
  25. string strJson = @"{
  26. 'patientinfo':{
  27. 'patientRegisterId': '3a0c7f6e-3ff1-fef6-c568-6f541aabe87a',
  28. 'patientRegisterNo': '202307190001',
  29. 'patientName': ' 7',
  30. 'sexName': '',
  31. 'age': 46,
  32. 'idNo': '',
  33. 'mobileTelephone': '13800138000',
  34. 'patientNo': '6',
  35. 'medicalTimes': 1,
  36. 'jobCardNo': '',
  37. 'medicalCardNo': '',
  38. 'customerOrgName': '',
  39. 'departmentName': '',
  40. 'customerOrgGroupName': '',
  41. 'medicalPackageName': '',
  42. 'personnelTypeName': '',
  43. 'medicalCenterAddress': '',
  44. 'medicalCenterTelphone': '',
  45. 'medicalCenterFax': ''
  46. },
  47. 'asbitemlist': [
  48. {
  49. 'guideName': '',
  50. 'displayOrder0': 1,
  51. 'asbitemName': '',
  52. 'asbitemGuide': '12',
  53. 'displayOrder': 30
  54. },
  55. {
  56. 'guideName': '',
  57. 'displayOrder0': 2,
  58. 'asbitemName': '',
  59. 'asbitemGuide': '12-202',
  60. 'displayOrder': 6
  61. },
  62. {
  63. 'guideName': '',
  64. 'displayOrder0': 2,
  65. 'asbitemName': '',
  66. 'asbitemGuide': '12-201',
  67. 'displayOrder': 22
  68. }
  69. ]
  70. }";
  71. patientinfo patinfo = new patientinfo()
  72. {
  73. patientRegisterId = "3a0c7f6e-3ff1-fef6-c568-6f541aabe87a",
  74. patientRegisterNo = "202307190001",
  75. patientName = "李晓阳 7",
  76. sexName = "未知",
  77. age = 46,
  78. idNo = "",
  79. mobileTelephone = "13800138000",
  80. patientNo = "6",
  81. medicalTimes = 1,
  82. jobCardNo = "",
  83. medicalCardNo = "",
  84. customerOrgName = "个人体检",
  85. departmentName = "个人体检",
  86. customerOrgGroupName = null,
  87. medicalPackageName = null,
  88. personnelTypeName = null,
  89. medicalCenterAddress = "",
  90. medicalCenterTelphone = "",
  91. medicalCenterFax = ""
  92. };
  93. List<asbitem> alist = new List<asbitem>();
  94. asbitem a1 = new asbitem()
  95. {
  96. guideName = "检验项目",
  97. displayOrder0 = 1,
  98. asbitemName = "血常规",
  99. asbitemGuide = "1号楼2层采血窗口",
  100. displayOrder = 30
  101. };
  102. alist.Add(a1);
  103. asbitem a2 = new asbitem()
  104. {
  105. guideName = "一般检查",
  106. displayOrder0 = 2,
  107. asbitemName = "血压",
  108. asbitemGuide = "1号楼2-202",
  109. displayOrder = 6
  110. };
  111. alist.Add(a2);
  112. asbitem a3 = new asbitem()
  113. {
  114. guideName = "一般检查",
  115. displayOrder0 = 2,
  116. asbitemName = "身高体重",
  117. asbitemGuide = "1号楼2-201",
  118. displayOrder = 22
  119. };
  120. alist.Add(a3);
  121. List<para> listp = new List<para>();
  122. para p1 = new para()
  123. {
  124. Name = "hospName",
  125. Value = "XX第一人民医院"
  126. };
  127. listp.Add(p1);
  128. para p2 = new para()
  129. {
  130. Name = "printer",
  131. Value = "张打印人"
  132. };
  133. listp.Add(p2);
  134. JsonCls cls = new JsonCls()
  135. {
  136. patientinfo = patinfo,
  137. asbitemlist = alist
  138. };
  139. JsonClsEx ex = new JsonClsEx()
  140. {
  141. ReportCode = "001",
  142. token = "1223423423",
  143. ReportTable = cls,
  144. Parameters=listp
  145. };
  146. // JsonCls js = DeserializeObject<JsonCls>(strJson);
  147. // string aa=js.patientinfo.ToString();
  148. // string a1 = SerializeObject(js.patientinfo);
  149. string a6 = SerializeObject(ex);
  150. List<patientinfo> plist = new List<patientinfo>();
  151. plist.Add(cls.patientinfo);
  152. string a7 = SerializeObject(plist);
  153. DataTable dt = DeserializeObject<DataTable>(a7);
  154. */
  155. //zydjsontest();
  156. dynamicType dType = new dynamicType();
  157. dType.asMessage = @"{'ReportCode':'0001','token':'eyJhbGciOiJSUzI1NiIsImtpZCI6IkJDQUMwNkNFQjJFMDIwMDQwRTZGQzI5N0FDNUM4RUZBQzU1NTMzN0YiLCJ4NXQiOiJ2S3dHenJMZ0lBUU9iOEtYckZ5Ty1zVlZNMzgiLCJ0eXAiOiJhdCtqd3QifQ.eyJzdWIiOiIzYTBjNDE4MC0xMDdjLTBjODktYjI1Yi0wYmQzNDY2NmRjZWMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJhZG1pbiIsImVtYWlsIjoiYWRtaW5AYWJwLmlvIiwicm9sZSI6ImFkbWluIiwiZ2l2ZW5fbmFtZSI6ImFkbWluIiwicGhvbmVfbnVtYmVyX3ZlcmlmaWVkIjoiRmFsc2UiLCJlbWFpbF92ZXJpZmllZCI6IkZhbHNlIiwidW5pcXVlX25hbWUiOiJhZG1pbiIsIm9pX3Byc3QiOiJQZWlzX0FwcCIsIm9pX2F1X2lkIjoiM2EwZDI3Y2EtNjYzOC1lMmMzLTllMDItMDc4MjRkMjgyMTg0IiwiY2xpZW50X2lkIjoiUGVpc19BcHAiLCJvaV90a25faWQiOiIzYTBkMjdjYS02NjNjLTY5YTYtYjI2ZS00ZmUyM2FhNGZjNWEiLCJhdWQiOiJQZWlzIiwic2NvcGUiOiJQZWlzIG9mZmxpbmVfYWNjZXNzIiwiZXhwIjoxNjkyNTg2OTYxLCJpc3MiOiJodHRwOi8vMTQwLjE0My4xNjIuMzk6OTUyOS8iLCJpYXQiOjE2OTI1Nzk3NjF9.OP7WKVGBn0WlFZcgRoTe6lVDfRFTp3P35dEDlGsMLBqiCnxaBckWtKmWUOboyINbac14YdPgqtSC_cETUy_kYhLTvc6h7WnFGgD70Wql7NtXVIFWBicn4SjIKCKyzO-0QYz08XODqMcw5mgPNPakUcFiUQtFdGkd8VoYkmFWkAVBUAyjIWC0IVnQM8KNPnZnzwLv4O8HwVnWkiiNkYtioDzdo8SN00TM8oJHcArJjPQnNsnRu-xBSAldhTWKQhekLT6-g206dl1Ufq1Ms4pts6fWKFvECVEgrq1hgUi8NPZJLqKq2h6EWEHSU2Z5bv_WoTtF0uIfQTqJIz6xEdNbMA','Parameters':[{'Name':'printer','Value':'admin'},{'Name':'hisLog','Value':'UpLoad/3a0c7f6e-3ff1-fef6-c568-6f541aabe87a.png'}],'ReportTable':{'patientRegisterId':'3a0c7f6e-3ff1-fef6-c568-6f541aabe87a','patientRegisterNo':'202307190001','customerOrgShortName':'XXXXdanwei','patientName':'李晓阳 7','photo':'http://140.143.162.39:9529/UpLoad/3a0c7f6e-3ff1-fef6-c568-6f541aabe87a.png','sexName':'未知','age':46,'medicalStartDate':'2023-07-25','idNo':'','mobileTelephone':'13800138000','patientNo':'6','medicalTimes':1,'jobCardNo':'','medicalCardNo':'','customerOrgName':'个人体检','departmentName':'个人体检','customerOrgGroupName':null,'medicalPackageName':null,'personnelTypeName':null,'medicalCenterAddress':'','medicalCenterTelphone':'','medicalCenterFax':'','detail':[{'guideName':'检验项目','asbitemCount':1,'displayOrder':1,'detail_Name':[{'asbitemName':'血常规','asbitemGuide':'1号楼2层采血窗口','displayOrder':30}]},{'guideName':'一般检查','asbitemCount':2,'displayOrder':2,'detail_Name':[{'asbitemName':'血压','asbitemGuide':'1号楼2-202','displayOrder':6},{'asbitemName':'身高体重','asbitemGuide':'1号楼2-201','displayOrder':22}]},{'guideName':'功能检查','asbitemCount':2,'displayOrder':3,'detail_Name':[{'asbitemName':'腰椎正位片','asbitemGuide':'1号楼3层放射科','displayOrder':15},{'asbitemName':'胸部正位片','asbitemGuide':'1号楼3层放射科','displayOrder':17}]}]}}";
  158. dType.asApiUrl = "http://140.143.162.39:9529";
  159. dType.asWebUrl = "http://140.143.162.39:8081/";
  160. ReportMethods met = new ReportMethods();
  161. dynamic msg = dType;
  162. met.PrintPre(msg);
  163. }
  164. static void zydjsontest()
  165. {
  166. string str=@"{
  167. 'patientRegisterId': '3a0c7f6e-3ff1-fef6-c568-6f541aabe87a',
  168. 'patientRegisterNo': '202307190001',
  169. 'patientName': ' 7',
  170. 'sexName': '',
  171. 'age': 46,
  172. 'idNo': '',
  173. 'mobileTelephone': '13800138000',
  174. 'patientNo': '6',
  175. 'medicalTimes': 1,
  176. 'jobCardNo': '',
  177. 'medicalCardNo': '',
  178. 'customerOrgName': '',
  179. 'departmentName': '',
  180. 'customerOrgGroupName': null,
  181. 'medicalPackageName': null,
  182. 'personnelTypeName': null,
  183. 'medicalCenterAddress': '',
  184. 'medicalCenterTelphone': '',
  185. 'medicalCenterFax': '',
  186. 'detail': [
  187. {
  188. 'guideName': '',
  189. 'displayOrder': 1,
  190. 'detail_Name': [
  191. {
  192. 'asbitemName': '',
  193. 'asbitemGuide': '12',
  194. 'displayOrder': 30
  195. }
  196. ]
  197. },
  198. {
  199. 'guideName': '',
  200. 'displayOrder': 2,
  201. 'detail_Name': [
  202. {
  203. 'asbitemName': '',
  204. 'asbitemGuide': '12-202',
  205. 'displayOrder': 6
  206. },
  207. {
  208. 'asbitemName': '',
  209. 'asbitemGuide': '12-201',
  210. 'displayOrder': 22
  211. }
  212. ]
  213. },
  214. {
  215. 'guideName': '',
  216. 'displayOrder': 3,
  217. 'detail_Name': [
  218. {
  219. 'asbitemName': '',
  220. 'asbitemGuide': '13',
  221. 'displayOrder': 15
  222. },
  223. {
  224. 'asbitemName': '',
  225. 'asbitemGuide': '13',
  226. 'displayOrder': 17
  227. }
  228. ]
  229. }
  230. ]
  231. }";
  232. zyd dj = DeserializeObject<zyd>(str);
  233. patientinfo pat = new patientinfo()
  234. {
  235. patientRegisterId = dj.patientRegisterId,
  236. patientRegisterNo = dj.patientRegisterNo,
  237. patientName = dj.patientName,
  238. sexName = dj.sexName,
  239. age = dj.age,
  240. idNo = dj.idNo,
  241. mobileTelephone = dj.mobileTelephone,
  242. patientNo = dj.patientNo,
  243. medicalTimes = dj.medicalTimes,
  244. jobCardNo = dj.jobCardNo,
  245. medicalCardNo = dj.medicalCardNo,
  246. customerOrgName = dj.customerOrgName,
  247. departmentName = dj.departmentName,
  248. customerOrgGroupName = dj.customerOrgGroupName,
  249. medicalPackageName = dj.medicalPackageName,
  250. personnelTypeName = dj.personnelTypeName,
  251. medicalCenterAddress = dj.medicalCenterAddress,
  252. medicalCenterTelphone = dj.medicalCenterTelphone,
  253. medicalCenterFax = dj.medicalCenterFax
  254. };
  255. List<patientinfo> plist = new List<patientinfo>();
  256. plist.Add(pat);
  257. List<guide> glist = new List<guide>();
  258. List<asbitem> alist = new List<asbitem>();
  259. foreach(var item in dj.detail)
  260. {
  261. guide ig = new guide()
  262. {
  263. guideName = item.guideName,
  264. displayOrder = item.displayOrder
  265. };
  266. foreach(var d1 in item.detail_Name)
  267. {
  268. asbitem asb = new asbitem()
  269. {
  270. guideName=ig.guideName,
  271. asbitemGuide = d1.asbitemGuide,
  272. asbitemName = d1.asbitemName,
  273. displayOrder = d1.displayOrder
  274. };
  275. alist.Add(asb);
  276. }
  277. glist.Add(ig);
  278. }
  279. List<dtBase> dlist = new List<dtBase>();
  280. foreach (var item in plist)
  281. dlist.Add(item);
  282. foreach (var item in glist)
  283. dlist.Add(item);
  284. foreach (var item in alist)
  285. dlist.Add(item);
  286. JsonClsEx ex = new JsonClsEx()
  287. {
  288. ReportCode = "001",
  289. token = "1223423423",
  290. ReportTable = dlist
  291. };
  292. //string a6 = SerializeObject(ex);
  293. //JsonClsEx ee = DeserializeObject<JsonClsEx>(a6);
  294. //DataSet ds = ConvertToDataSet(ee.ReportTable);
  295. //FastReport.Report report = new FastReport.Report();
  296. //report.RegisterData(ds);
  297. //report.Design();
  298. }
  299. //List转DataSet
  300. public static DataSet ConvertToDataSet<T>(IList<T> list)
  301. {
  302. if (list == null || list.Count <= 0)
  303. {
  304. return null;
  305. }
  306. DataSet ds = new DataSet();
  307. DataTable dt = new DataTable(typeof(T).Name);
  308. DataColumn column;
  309. DataRow row;
  310. System.Reflection.PropertyInfo[] myPropertyInfo = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
  311. foreach (T t in list)
  312. {
  313. if (t == null)
  314. {
  315. continue;
  316. }
  317. row = dt.NewRow();
  318. for (int i = 0, j = myPropertyInfo.Length; i < j; i++)
  319. {
  320. System.Reflection.PropertyInfo pi = myPropertyInfo[i];
  321. string name = pi.Name;
  322. if (dt.Columns[name] == null)
  323. {
  324. column = new DataColumn(name, pi.PropertyType);
  325. dt.Columns.Add(column);
  326. }
  327. row[name] = pi.GetValue(t, null);
  328. }
  329. dt.Rows.Add(row);
  330. }
  331. ds.Tables.Add(dt);
  332. return ds;
  333. }
  334. //DataTable转List
  335. public static List<T> GetList<T>(DataTable table)
  336. {
  337. List<T> list = new List<T>();
  338. //T t = default(T);
  339. //PropertyInfo[] propertypes = null;
  340. //string tempName = string.Empty;
  341. //foreach (DataRow row in table.Rows)
  342. //{
  343. // t = Activator.CreateInstance<T>();
  344. // propertypes = t.GetType().GetProperties();
  345. // foreach (PropertyInfo pro in propertypes)
  346. // {
  347. // tempName = pro.Name;
  348. // if (table.Columns.Contains(tempName))
  349. // {
  350. // object value = row[tempName];
  351. // if (!value.ToString().Equals(""))
  352. // {
  353. // pro.SetValue(t, value, null);
  354. // }
  355. // }
  356. // }
  357. // list.Add(t);
  358. //}
  359. return list.Count == 0 ? null : list;
  360. }
  361. }
  362. }