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