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

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
namespace Report.Net5.ConsoleTest
{
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)
{
Console.WriteLine("Hello World!");
zydjsontest();
Console.WriteLine("Hello World!");
}
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.Prepare();
}
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;
}
}
}