|
|
using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Text;using System.Threading.Tasks;using Newtonsoft.Json;namespace PeisStart.Tests{ class Program { public static T DeserializeObject<T>(string data) where T : class { var obj = JsonConvert.DeserializeObject<T>(data); return obj; } public static string SerializeObject(object data) { string str = JsonConvert.SerializeObject(data); return str; } static void Main(string[] args) { /* string strJson = @"{
'patientinfo':{ 'patientRegisterId': '3a0c7f6e-3ff1-fef6-c568-6f541aabe87a', 'patientRegisterNo': '202307190001', 'patientName': '李晓阳 7', 'sexName': '未知', 'age': 46, 'idNo': '', 'mobileTelephone': '13800138000', 'patientNo': '6', 'medicalTimes': 1, 'jobCardNo': '', 'medicalCardNo': '', 'customerOrgName': '个人体检', 'departmentName': '个人体检', 'customerOrgGroupName': '', 'medicalPackageName': '', 'personnelTypeName': '', 'medicalCenterAddress': '', 'medicalCenterTelphone': '', 'medicalCenterFax': '' }, 'asbitemlist': [ { 'guideName': '检验项目', 'displayOrder0': 1, 'asbitemName': '血常规', 'asbitemGuide': '1号楼2层采血窗口', 'displayOrder': 30 }, { 'guideName': '一般检查', 'displayOrder0': 2, 'asbitemName': '血压', 'asbitemGuide': '1号楼2-202', 'displayOrder': 6 }, { 'guideName': '一般检查', 'displayOrder0': 2, 'asbitemName': '身高体重', 'asbitemGuide': '1号楼2-201', 'displayOrder': 22 } ] }";
patientinfo patinfo = new patientinfo() { patientRegisterId = "3a0c7f6e-3ff1-fef6-c568-6f541aabe87a", patientRegisterNo = "202307190001", patientName = "李晓阳 7", sexName = "未知", age = 46, idNo = "", mobileTelephone = "13800138000", patientNo = "6", medicalTimes = 1, jobCardNo = "", medicalCardNo = "", customerOrgName = "个人体检", departmentName = "个人体检", customerOrgGroupName = null, medicalPackageName = null, personnelTypeName = null, medicalCenterAddress = "", medicalCenterTelphone = "", medicalCenterFax = "" };
List<asbitem> alist = new List<asbitem>(); asbitem a1 = new asbitem() { guideName = "检验项目", displayOrder0 = 1, asbitemName = "血常规", asbitemGuide = "1号楼2层采血窗口", displayOrder = 30 }; alist.Add(a1);
asbitem a2 = new asbitem() { guideName = "一般检查", displayOrder0 = 2, asbitemName = "血压", asbitemGuide = "1号楼2-202", displayOrder = 6 }; alist.Add(a2);
asbitem a3 = new asbitem() { guideName = "一般检查", displayOrder0 = 2, asbitemName = "身高体重", asbitemGuide = "1号楼2-201", displayOrder = 22 }; alist.Add(a3);
List<para> listp = new List<para>(); para p1 = new para() { Name = "hospName", Value = "XX第一人民医院" }; listp.Add(p1);
para p2 = new para() { Name = "printer", Value = "张打印人" }; listp.Add(p2);
JsonCls cls = new JsonCls() { patientinfo = patinfo, asbitemlist = alist };
JsonClsEx ex = new JsonClsEx() { ReportCode = "001", token = "1223423423", ReportTable = cls, Parameters=listp };
// JsonCls js = DeserializeObject<JsonCls>(strJson);
// string aa=js.patientinfo.ToString();
// string a1 = SerializeObject(js.patientinfo);
string a6 = SerializeObject(ex);
List<patientinfo> plist = new List<patientinfo>(); plist.Add(cls.patientinfo);
string a7 = SerializeObject(plist);
DataTable dt = DeserializeObject<DataTable>(a7); */ //zydjsontest();
dynamicType dType = new dynamicType(); 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}]}]}}"; dType.asApiUrl = "http://140.143.162.39:9529"; dType.asWebUrl = "http://140.143.162.39:8081/";
ReportMethods met = new ReportMethods();
dynamic msg = dType; met.PrintPre(msg); }
static void zydjsontest() { string str=@"{
'patientRegisterId': '3a0c7f6e-3ff1-fef6-c568-6f541aabe87a', 'patientRegisterNo': '202307190001', 'patientName': '李晓阳 7', 'sexName': '未知', 'age': 46, 'idNo': '', 'mobileTelephone': '13800138000', 'patientNo': '6', 'medicalTimes': 1, 'jobCardNo': '', 'medicalCardNo': '', 'customerOrgName': '个人体检', 'departmentName': '个人体检', 'customerOrgGroupName': null, 'medicalPackageName': null, 'personnelTypeName': null, 'medicalCenterAddress': '', 'medicalCenterTelphone': '', 'medicalCenterFax': '', 'detail': [ { 'guideName': '检验项目', 'displayOrder': 1, 'detail_Name': [ { 'asbitemName': '血常规', 'asbitemGuide': '1号楼2层采血窗口', 'displayOrder': 30 } ] }, { 'guideName': '一般检查', 'displayOrder': 2, 'detail_Name': [ { 'asbitemName': '血压', 'asbitemGuide': '1号楼2-202', 'displayOrder': 6 }, { 'asbitemName': '身高体重', 'asbitemGuide': '1号楼2-201', 'displayOrder': 22 } ] }, { 'guideName': '功能检查', 'displayOrder': 3, 'detail_Name': [ { 'asbitemName': '腰椎正位片', 'asbitemGuide': '1号楼3层放射科', 'displayOrder': 15 }, { 'asbitemName': '胸部正位片', 'asbitemGuide': '1号楼3层放射科', 'displayOrder': 17 } ] } ] }";
zyd dj = DeserializeObject<zyd>(str);
patientinfo pat = new patientinfo() { patientRegisterId = dj.patientRegisterId, patientRegisterNo = dj.patientRegisterNo, patientName = dj.patientName, sexName = dj.sexName, age = dj.age, idNo = dj.idNo, mobileTelephone = dj.mobileTelephone, patientNo = dj.patientNo, medicalTimes = dj.medicalTimes, jobCardNo = dj.jobCardNo, medicalCardNo = dj.medicalCardNo, customerOrgName = dj.customerOrgName, departmentName = dj.departmentName, customerOrgGroupName = dj.customerOrgGroupName, medicalPackageName = dj.medicalPackageName, personnelTypeName = dj.personnelTypeName, medicalCenterAddress = dj.medicalCenterAddress, medicalCenterTelphone = dj.medicalCenterTelphone, medicalCenterFax = dj.medicalCenterFax }; List<patientinfo> plist = new List<patientinfo>(); plist.Add(pat);
List<guide> glist = new List<guide>(); List<asbitem> alist = new List<asbitem>(); foreach(var item in dj.detail) { guide ig = new guide() { guideName = item.guideName, displayOrder = item.displayOrder }; foreach(var d1 in item.detail_Name) { asbitem asb = new asbitem() { guideName=ig.guideName, asbitemGuide = d1.asbitemGuide, asbitemName = d1.asbitemName, displayOrder = d1.displayOrder }; alist.Add(asb); } glist.Add(ig); }
List<dtBase> dlist = new List<dtBase>(); foreach (var item in plist) dlist.Add(item);
foreach (var item in glist) dlist.Add(item);
foreach (var item in alist) dlist.Add(item);
JsonClsEx ex = new JsonClsEx() { ReportCode = "001", token = "1223423423", ReportTable = dlist };
//string a6 = SerializeObject(ex);
//JsonClsEx ee = DeserializeObject<JsonClsEx>(a6);
//DataSet ds = ConvertToDataSet(ee.ReportTable);
//FastReport.Report report = new FastReport.Report();
//report.RegisterData(ds);
//report.Design();
}
//List转DataSet
public static DataSet ConvertToDataSet<T>(IList<T> list) { if (list == null || list.Count <= 0) { return null; } DataSet ds = new DataSet(); DataTable dt = new DataTable(typeof(T).Name); DataColumn column; DataRow row; System.Reflection.PropertyInfo[] myPropertyInfo = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance); foreach (T t in list) { if (t == null) { continue; } row = dt.NewRow(); for (int i = 0, j = myPropertyInfo.Length; i < j; i++) { System.Reflection.PropertyInfo pi = myPropertyInfo[i]; string name = pi.Name; if (dt.Columns[name] == null) { column = new DataColumn(name, pi.PropertyType); dt.Columns.Add(column); } row[name] = pi.GetValue(t, null); } dt.Rows.Add(row); } ds.Tables.Add(dt); return ds; }
//DataTable转List
public static List<T> GetList<T>(DataTable table) { List<T> list = new List<T>(); //T t = default(T);
//PropertyInfo[] propertypes = null;
//string tempName = string.Empty;
//foreach (DataRow row in table.Rows)
//{
// t = Activator.CreateInstance<T>();
// propertypes = t.GetType().GetProperties();
// foreach (PropertyInfo pro in propertypes)
// {
// tempName = pro.Name;
// if (table.Columns.Contains(tempName))
// {
// object value = row[tempName];
// if (!value.ToString().Equals(""))
// {
// pro.SetValue(t, value, null);
// }
// }
// }
// list.Add(t);
//}
return list.Count == 0 ? null : list; } }}
|