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

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