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
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;
|
|
}
|
|
}
|
|
}
|