/// <summary> /// 生成报告 /// </summary> /// <param name="modelPath">报告模板</param> /// <param name="tigerPath">生成地址</param> /// <param name="formId">问卷编号</param> /// <param name="entryId">被评估人编号</param> /// <param name="suffix">报告格式</param> /// <param name="maxLength">最多生成报告数,0为不限制</param> /// <returns></returns> public Result CreateReport(string modelPath, string tigerPath, long formId, long entryId, string suffix, int maxLength) { return(RunFun(logPath => { tigerPath = ToolFile.GetAbsolutelyPath(tigerPath); modelPath = base.ModelPath + modelPath; DataRow dr = GetFormInfo(formId); if (entryId > 0) { ReportParameterCollection col = new ReportParameterCollection { new ReportParameter("CompanyID", dr["CompanyID"] + ""), new ReportParameter("FormApplicationID", dr["FormApplicationID"] + ""), new ReportParameter("FormID", dr["FormID"] + ""), new ReportParameter("ObservedID", entryId + ""), new ReportParameter("EntryID", entryId + ""), new ReportParameter("MinValue", "1") }; col = ToolReport.BindPara(modelPath, col); ToolReport.GenerateLocalReport(modelPath, tigerPath, entryId + "." + suffix, col, false); } else { DataTable dt = DbContent.GetTable(string.Format(GetObservedList(), dr["CompanyID"] + "", dr["FormApplicationID"] + "")); int con = 0; foreach (DataRow item in dt.Rows) { if (maxLength > 0 && con >= maxLength) { break; } ReportParameterCollection col = new ReportParameterCollection { new ReportParameter("CompanyID", dr["CompanyID"] + ""), new ReportParameter("FormApplicationID", dr["FormApplicationID"] + ""), new ReportParameter("FormID", dr["FormID"] + ""), new ReportParameter("ObservedID", item["EntryID"] + ""), new ReportParameter("EntryID", item["EntryID"] + ""), new ReportParameter("MinValue", "1") }; col = ToolReport.BindPara(modelPath, col); con++; WriteLog(logPath, dt.Rows.IndexOf(item) + "\t" + item["FullName"] + "_" + item["EntryID"]); ToolReport.GenerateLocalReport(modelPath, tigerPath, item["FullName"] + "_" + item["EntryID"] + "." + suffix, col, false); } } return Res; })); }
/// <summary> /// 生成团队报告 /// </summary> /// <param name="modelPath">报告模板</param> /// <param name="tigerPath">生成地址</param> /// <param name="formId">问卷编号</param> /// <param name="suffix">报告格式</param> /// <returns></returns> public Result CreateTeamReport(string modelPath, string tigerPath, long formId, string suffix) { return(RunFun(logPath => { tigerPath = ToolFile.GetAbsolutelyPath(tigerPath); modelPath = base.ModelPath + modelPath; string sqlFilter = $"SELECT * FROM AskForm_FormFilter ff WHERE ff.FormID = {formId} AND ff.Name LIKE '%FieldFilter%' AND ff.IsDeleted = 0"; DataTable dtFilter = DbContent.GetTable(sqlFilter); // 循环过滤条件 foreach (DataRow filter in dtFilter.Rows) { ReportParameterCollection col = new ReportParameterCollection { new ReportParameter("CompanyID", filter["CompanyID"] + ""), new ReportParameter("FormApplicationID", filter["FormApplicationID"] + ""), new ReportParameter("FormID", filter["FormID"] + ""), new ReportParameter("FormFilterID", filter["FormFilterID"] + ""), new ReportParameter("MinValue", "1") }; col = ToolReport.BindPara(modelPath, col); // 获取过滤字段 string sqlField = $"SELECT f.FieldID,f.Title,fff.Content FROM AskForm_FormFilterField fff INNER JOIN AskForm_Field f ON f.FieldID = fff.FieldID WHERE FormFilterID = {filter["FormFilterID"]} AND fff.IsDeleted = 0"; DataTable dtField = DbContent.GetTable(sqlField); // 循环字段 foreach (DataRow field in dtField.Rows) { string sqlContent = $"SELECT distinct [Value] FROM AskForm_EntryText et WHERE et.FieldID = {field["FieldID"]} AND et.IsDeleted = 0"; DataTable dtContent = DbContent.GetTable(sqlContent); // 循环内容 foreach (DataRow content in dtContent.Rows) { // 修改内容 string sqlUpFilterField = $"UPDATE AskForm_FormFilterField SET Content='{content["Value"]}' WHERE FormFilterID = {filter["FormFilterID"]} AND FieldID ={field["FieldID"]} "; WriteLog(logPath, "修改【" + field["Title"] + "】为【" + content["Value"] + "】," + DbContent.ExecuteNonQuery(sqlUpFilterField)); ToolReport.GenerateLocalReport(modelPath, tigerPath, field["Title"] + "_" + content["Value"] + "." + suffix, col, false); } } } return Res; })); }
/// <summary> /// 生成部门报告 /// </summary> /// <param name="dsfd">dzhg</param> /// <returns></returns> public Result GeneratingReports() { //获取报告地址 string modelFileName = "满意度-药明.rdl"; string modelPath = Path.Combine(ModelPath, modelFileName); //开始生成报告 return(RunFun((logPath) => { WriteLog(logPath, "开始生成报告"); //绑定 CompanyID,FormApplicationID,FormID ReportParameterCollection col = ToolReport.BindPara(modelPath, Convert.ToInt32(FormID), false); //获取BUList string prefix = GetSqlParam(); DataTable buList = DbContent.GetTable(prefix + BUListSQL); //BU循环 foreach (DataRow buRow in buList.Rows) { string bu = buRow.ItemArray[0].ToString(); WriteLog(logPath, $"当前BU:{bu}"); long time = Watch(() => { string departmentListSQL = DepartmentListSQL.Replace("{BU}", $"'{bu}'"); DataTable departmentList = DbContent.GetTable(prefix + departmentListSQL); //Department循环 foreach (DataRow departmentRow in departmentList.Rows) { string department = departmentRow.ItemArray[0].ToString(); WriteLog(logPath, $"当前Department:{department}"); //绑定 BU,Department参数 col.Add(new ReportParameter("BU", bu)); col.Add(new ReportParameter("Department", department)); // 绑定默认参数 col = ToolReport.BindPara(modelPath, col); //生成部门报告 ToolReport.GenerateLocalReport(modelPath, Path.Combine(DataStarPath, bu) + "\\", $"Biologics-满意度-{department}.pdf", col, true); WriteLog(logPath, $"Biologics-满意度-{department}.pdf 报告生成完毕"); } }); } WriteLog(logPath, "报告生成完毕"); return Res; })); }