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.
304 lines
11 KiB
304 lines
11 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.IO;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using Report.Entity;
|
|
using System.Windows.Forms;
|
|
using System.Reflection;
|
|
using System.Threading;
|
|
using System.Net.Cache;
|
|
|
|
namespace ReportLibrary
|
|
{
|
|
public class ReportClient
|
|
{
|
|
|
|
private async Task<DataSet> getBusinessDataSet(RequestReportBase req,bool isSave=false)
|
|
{
|
|
|
|
DataSet ds = new DataSet();
|
|
/*
|
|
Dictionary<string,string> dict=new Dictionary<string,string>();
|
|
foreach(var item in req.Parameters)
|
|
{
|
|
dict.Add(item.Name,item.Value);
|
|
}
|
|
switch (req.ReportCode)
|
|
{
|
|
case "0001":
|
|
case "0008":
|
|
ds = await ConvertHelper.PatientGuideToDataSetAsync(req.DataJsonPath, dict, req.WebsiteUrl, req.ApiUrl, isSave);
|
|
break;
|
|
case "0002":
|
|
case "0003":
|
|
ds = await ConvertHelper.TestRequestToDataSetAsync(req.DataJsonPath, dict, req.WebsiteUrl, req.ApiUrl, isSave);
|
|
break;
|
|
case "0004":
|
|
ds = await ConvertHelper.ExamRequestToDataSetAsync(req.DataJsonPath, dict, req.WebsiteUrl, req.ApiUrl, isSave);
|
|
break;
|
|
case "0005":
|
|
ds = await ConvertHelper.ReportHealthToDataSetAsync(req.DataJsonPath, dict, req.WebsiteUrl, req.ApiUrl,req.ImageUrl, isSave);
|
|
break;
|
|
case "0006":
|
|
ds = await ConvertHelper.OccupationalDiseaseToDataSetAsync(req.DataJsonPath, dict, req.WebsiteUrl, req.ApiUrl,req.ImageUrl, isSave);
|
|
break;
|
|
case "0007":
|
|
ds = await ConvertHelper.PayBillToDataSetAsync(req.DataJsonPath, dict, req.WebsiteUrl, req.ApiUrl, isSave);
|
|
break;
|
|
case "0009":
|
|
ds = await ConvertHelper.OccuptionDiseaseFinalToDataSetAsync(req.DataJsonPath, dict, req.WebsiteUrl, req.ApiUrl, isSave);
|
|
break;
|
|
case "0010":
|
|
ds = await ConvertHelper.OccuptionDiseaseDetailToDataSetAsync(req.DataJsonPath, dict, req.WebsiteUrl, req.ApiUrl, isSave);
|
|
break;
|
|
}
|
|
*/
|
|
return ds;
|
|
}
|
|
public async Task<string> ReportExport(string reqStr)
|
|
{
|
|
string resStr = string.Empty;
|
|
string dataJson = string.Empty;
|
|
ResponseReport res = new ResponseReport();
|
|
try
|
|
{
|
|
ReportHelper report = new ReportHelper();
|
|
RequestExport req = ClientConfig.DeserializeObject<RequestExport>(reqStr);
|
|
|
|
if (string.IsNullOrEmpty(req.TemplatePath))
|
|
{
|
|
res.code = -103;
|
|
res.message = "未找到对应的报表模板文件,无法导出";
|
|
return await Task.Run(() =>
|
|
{
|
|
resStr = ClientConfig.SerializeObject(res);
|
|
|
|
return resStr;
|
|
});
|
|
}
|
|
Dictionary<string, string> dict = new Dictionary<string, string>();
|
|
foreach (var item in req.Parameters)
|
|
{
|
|
dict.Add(item.Name, item.Value);
|
|
}
|
|
var list = ReportHelper.ToPicTable(dict, req.WebsiteUrl);
|
|
DataTable dt=list.ToDataTable();
|
|
dt.TableName = "pic";
|
|
string json = FileHelper.ReadAllText(req.DataJsonPath);
|
|
DataSet ds = ClientConfig.ConvertJsonToDataSet(json, req.ImageUrl,req.ApiUrl);
|
|
ds.Tables.Add(dt);
|
|
await report.ReportExport(req, ds);
|
|
res.code = 1;
|
|
res.message = "Success";
|
|
}
|
|
catch (BusinessException bEx)
|
|
{
|
|
res.code = -101;
|
|
res.message = bEx.Message;
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
res.code = -100;
|
|
res.message = ex.Message;
|
|
}
|
|
resStr = ClientConfig.SerializeObject(res);
|
|
return resStr;
|
|
}
|
|
public async Task<string> ReportPrint(string reqStr)
|
|
{
|
|
ResponseReport res = new ResponseReport();
|
|
string resStr = string.Empty;
|
|
string dataJson = string.Empty;
|
|
try
|
|
{
|
|
ReportHelper report = new ReportHelper();
|
|
RequestPrint req = ClientConfig.DeserializeObject<RequestPrint>(reqStr);
|
|
|
|
if (string.IsNullOrEmpty(req.TemplatePath))
|
|
{
|
|
res.code = -103;
|
|
res.message = "未找到对应的报表模板文件,无法打印";
|
|
return await Task.Run(() =>
|
|
{
|
|
resStr = ClientConfig.SerializeObject(res);
|
|
|
|
return resStr;
|
|
});
|
|
}
|
|
|
|
Dictionary<string, string> dict = new Dictionary<string, string>();
|
|
foreach (var item in req.Parameters)
|
|
{
|
|
dict.Add(item.Name, item.Value);
|
|
}
|
|
var list = ReportHelper.ToPicTable(dict, req.WebsiteUrl);
|
|
DataTable dt = list.ToDataTable();
|
|
dt.TableName = "pic";
|
|
string json = FileHelper.ReadAllText(req.DataJsonPath);
|
|
DataSet ds = ClientConfig.ConvertJsonToDataSet(json, req.ImageUrl, req.ApiUrl);
|
|
ds.Tables.Add(dt);
|
|
string result= await report.ReportPrint(req, ds);
|
|
if (result.Equals("Success"))
|
|
{
|
|
res.code = 1;
|
|
res.message = "Success";
|
|
}
|
|
else {
|
|
res.code = -1;
|
|
res.message = result;
|
|
}
|
|
|
|
}
|
|
catch (BusinessException bEx)
|
|
{
|
|
res.code = -101;
|
|
res.message = bEx.Message;
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
res.code = -100;
|
|
res.message = ex.Message;
|
|
}
|
|
resStr = ClientConfig.SerializeObject(res);
|
|
return resStr;
|
|
}
|
|
|
|
public async Task<string> ReportPrintPre(string reqStr)
|
|
{
|
|
ResponseReport res = new ResponseReport();
|
|
string resStr = string.Empty;
|
|
string dataJson = string.Empty;
|
|
try
|
|
{
|
|
ReportHelper report = new ReportHelper();
|
|
RequestPrintPre req = ClientConfig.DeserializeObject<RequestPrintPre>(reqStr);
|
|
|
|
if (string.IsNullOrEmpty(req.TemplatePath))
|
|
{
|
|
res.code = -103;
|
|
res.message = "未找到对应的报表模板文件,无法预览";
|
|
return await Task.Run(() =>
|
|
{
|
|
resStr = ClientConfig.SerializeObject(res);
|
|
|
|
return resStr;
|
|
});
|
|
}
|
|
|
|
Dictionary<string, string> dict = new Dictionary<string, string>();
|
|
foreach (var item in req.Parameters)
|
|
{
|
|
dict.Add(item.Name, item.Value);
|
|
}
|
|
var list = ReportHelper.ToPicTable(dict, req.WebsiteUrl);
|
|
DataTable dt = list.ToDataTable();
|
|
dt.TableName = "pic";
|
|
string json = FileHelper.ReadAllText(req.DataJsonPath);
|
|
string paramJson = ClientConfig.SerializeObject(list);
|
|
string DataJsonPath = ClientConfig.UpdateJson(json, paramJson);
|
|
FileHelper.WriteAllText(req.DataJsonPath, DataJsonPath);
|
|
DataSet ds = ClientConfig.ConvertJsonToDataSet(json, req.ImageUrl, req.ApiUrl);
|
|
ds.Tables.Add(dt);
|
|
string fileName= await report.ReportPrintPre(req, ds);
|
|
res.code = 1;
|
|
res.data = fileName;
|
|
res.message = "Success";
|
|
}
|
|
catch (BusinessException bEx)
|
|
{
|
|
res.code = -101;
|
|
res.message = bEx.Message;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
res.code = -100;
|
|
res.message = ex.Message;
|
|
}
|
|
resStr = ClientConfig.SerializeObject(res);
|
|
return resStr;
|
|
}
|
|
public async Task<string> ReportDesign(string reqStr)
|
|
{
|
|
ResponseDesign res = new ResponseDesign();
|
|
string resStr = string.Empty;
|
|
try
|
|
{
|
|
RequestDesign req = ClientConfig.DeserializeObject<RequestDesign>(reqStr);
|
|
if (req.DataSetJson == null)
|
|
{
|
|
res.code = -102;
|
|
res.message = "需打印数据为空值,无法打开模板";
|
|
return await Task.Run(() =>
|
|
{
|
|
resStr = ClientConfig.SerializeObject(res);
|
|
|
|
return resStr;
|
|
});
|
|
}
|
|
if (string.IsNullOrEmpty(req.TemplatePath))
|
|
{
|
|
res.code = -103;
|
|
res.message = "未找到对应的报表模板文件,无法打开模板";
|
|
return await Task.Run(() =>
|
|
{
|
|
resStr = ClientConfig.SerializeObject(res);
|
|
|
|
return resStr;
|
|
});
|
|
}
|
|
ReportHelper.ReportDesign(req);
|
|
res.code = 1;
|
|
res.message = "Success";
|
|
|
|
}
|
|
catch (BusinessException bEx)
|
|
{
|
|
res.code = -101;
|
|
res.message = bEx.Message;
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
res.code = -100;
|
|
res.message = ex.Message;
|
|
}
|
|
return await Task.Run(() =>
|
|
{
|
|
resStr= ClientConfig.SerializeObject(res);
|
|
|
|
return resStr;
|
|
});
|
|
|
|
/*
|
|
Task<String> task = Task.Factory.StartNew<string>(() =>
|
|
{
|
|
Request req = ClientConfig.DeserializeObject<Request>(reqStr);
|
|
|
|
ResponseEle res = new ResponseEle();
|
|
try
|
|
{
|
|
ReportHelper.ReportDesign(req);
|
|
res.Code = 1;
|
|
res.Message = "Success";
|
|
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
res.Code = -1;
|
|
res.Message = ex.Message;
|
|
}
|
|
string resStr = ClientConfig.SerializeObject(res);
|
|
return resStr;
|
|
});
|
|
|
|
String taskResult = await task;
|
|
return taskResult;
|
|
*/
|
|
}
|
|
}
|
|
}
|