using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; namespace BLL { public static class TestPackagePrintService { #region Fields /// /// 类别Map /// public static Dictionary TypeIntMap = new Dictionary() { //{ 0, "File\\Fastreport\\JGZL\\管道试压包文件资料.frx" }, //{ 1, "File\\Fastreport\\JGZL\\管道压力试验技术要求.frx" }, //{ 2, "File\\Fastreport\\JGZL\\管道压力包文件资料目录.frx" }, //{ 3, "File\\Fastreport\\JGZL\\管道系统压力试验条件确认记录.frx" }, //{ 4, "File\\Fastreport\\JGZL\\管道试压包尾项清单.frx" }, //{ 5, "File\\Fastreport\\JGZL\\管道系统压力试验记录.frx" }, //{ 6, "File\\Fastreport\\JGZL\\管道材料材质标识检查记录.frx" }, //{ 7, "File\\Fastreport\\JGZL\\管道焊接工作记录.frx" }, //{ 8, "File\\Fastreport\\JGZL\\管道无损检测数量统计表.frx" }, //{ 9, "File\\Fastreport\\JGZL\\无损检测结果汇总表.frx" } { 0, "管道试压包文件资料" }, { 1, "管道压力试验技术要求" }, { 2, "管道压力包文件资料目录" }, { 3, "管道系统压力试验条件确认记录" }, { 4, "管道试压包尾项清单" }, { 5, "管道系统压力试验记录" }, { 6, "管道材料材质标识检查记录" }, { 7, "管道焊接工作记录" }, { 8, "管道无损检测数量统计表" }, { 9, "无损检测结果汇总表" } }; #endregion Fields #region Methods public static void Add(Model.PTP_TestPackagePrint newtable) { Model.PTP_TestPackagePrint table = new Model.PTP_TestPackagePrint { Id = newtable.Id, PTP_ID = newtable.PTP_ID, TypeInt = newtable.TypeInt, PrintCount = newtable.PrintCount, }; Funs.DB.PTP_TestPackagePrint.InsertOnSubmit(table); Funs.DB.SubmitChanges(); } /// /// 根据试压包ID,打印所有类别,打印次数+1 /// /// public static void AddPrintCountByPTP_ID(string PTP_ID) { var list = Funs.DB.PTP_TestPackagePrint.Where(x => x.PTP_ID == PTP_ID).ToList(); //检查是否所有类型都存在,如果不存在则添加,PrintCount 初始化为 0 foreach (var typeInt in TypeIntMap.Keys) { if (!list.Any(x => x.TypeInt == typeInt)) { var newEntry = new Model.PTP_TestPackagePrint { Id = Guid.NewGuid().ToString(), PTP_ID = PTP_ID, TypeInt = typeInt, PrintCount = 1 }; Funs.DB.PTP_TestPackagePrint.InsertOnSubmit(newEntry); } } // 循环所有类型,PrintCount +1 foreach (var table in list) { table.PrintCount = table.PrintCount + 1; } Funs.DB.SubmitChanges(); } /// /// 根据试压包ID和类别,打印次数+1 /// /// /// public static void AddPrintCountByTypeInt(string PTP_ID, int typeInt) { Model.PTP_TestPackagePrint table = Funs.DB.PTP_TestPackagePrint.FirstOrDefault(x => x.PTP_ID == PTP_ID && x.TypeInt == typeInt); if (table != null) { table.PrintCount = table.PrintCount + 1; } else { table = new Model.PTP_TestPackagePrint { Id = Guid.NewGuid().ToString(), PTP_ID = PTP_ID, TypeInt = typeInt, PrintCount = 1 }; Funs.DB.PTP_TestPackagePrint.InsertOnSubmit(table); } Funs.DB.SubmitChanges(); } public static void DeleteById(string Id) { Model.PTP_TestPackagePrint table = Funs.DB.PTP_TestPackagePrint.FirstOrDefault(x => x.Id == Id); if (table != null) { Funs.DB.PTP_TestPackagePrint.DeleteOnSubmit(table); Funs.DB.SubmitChanges(); } } /// /// 获取无损检测结果统计 /// /// /// /// public static (int djJoint, int djFilm, int jhJoint, int jhFilm, int zgJoint, int zgFilm) GetDetectionStats(string pipelineId, string detectionType) { var baseQuery = from x in Funs.DB.HJGL_Batch_NDEItem join t in Funs.DB.HJGL_Batch_BatchTrustItem on x.TrustBatchItemId equals t.TrustBatchItemId join z in Funs.DB.HJGL_WeldJoint on t.WeldJointId equals z.WeldJointId join w in Funs.DB.Base_WeldType on z.WeldTypeId equals w.WeldTypeId join d in Funs.DB.View_HJGL_WeldJointDetectionType on t.WeldJointId equals d.WeldJointId where d.JointDetectionTypeStr == detectionType && z.PipelineId == pipelineId select new { x, w.WeldTypeCode }; return ( djJoint: baseQuery.Where(q => q.WeldTypeCode == "BW").Count(), djFilm: baseQuery.Where(q => q.WeldTypeCode == "BW").Sum(q => q.x.TotalFilm) ?? 0, jhJoint: baseQuery.Where(q => q.WeldTypeCode == "C" || q.WeldTypeCode == "E" || q.WeldTypeCode == "SW").Count(), jhFilm: baseQuery.Where(q => q.WeldTypeCode == "C" || q.WeldTypeCode == "E" || q.WeldTypeCode == "SW").Sum(q => q.x.TotalFilm) ?? 0, zgJoint: baseQuery.Where(q => q.WeldTypeCode == "D" || q.WeldTypeCode == "OLET" || q.WeldTypeCode == "FW").Count(), zgFilm: baseQuery.Where(q => q.WeldTypeCode == "D" || q.WeldTypeCode == "OLET" || q.WeldTypeCode == "FW").Sum(q => q.x.TotalFilm) ?? 0 ); } /// /// 获取打印明细 /// /// /// /// /// /// public static Model.FastReportItem GetFastReportItem(Model.PTP_TestPackage updateTestPackage, string printType, string ptp_id, string projectid) { string initTemplatePath = ""; Model.FastReportItem fastReportItem = new Model.FastReportItem(); switch (printType) { case "0"://管道试压包文件资料 { Dictionary keyValuePairs = new Dictionary(); var projectName = BLL.ProjectService.GetProjectNameByProjectId(projectid); var InstallationName = BLL.UnitWorkService.getUnitWorkByUnitWorkId(updateTestPackage.UnitWorkId).UnitWorkName; keyValuePairs.Add("ProjectName", projectName); keyValuePairs.Add("InstallationName", projectName + InstallationName); keyValuePairs.Add("TestPackageNo", updateTestPackage.TestPackageNo); BLL.FastReportService.AddFastreportParameter(keyValuePairs); initTemplatePath = "File\\Fastreport\\JGZL\\管道试压包文件资料.frx"; fastReportItem.ReportPath = initTemplatePath; fastReportItem.ParameterValues = keyValuePairs; } break; case "1"://管道压力试验技术要求 { Dictionary keyValuePairs = new Dictionary(); BLL.FastReportService.AddFastreportParameter(keyValuePairs); keyValuePairs.Add("Pressure", updateTestPackage.AdjustTestPressure); BLL.FastReportService.AddFastreportParameter(keyValuePairs); initTemplatePath = "File\\Fastreport\\JGZL\\管道压力试验技术要求.frx"; fastReportItem.ReportPath = initTemplatePath; fastReportItem.ParameterValues = keyValuePairs; } break; case "2"://管道压力包文件资料目录 { Dictionary keyValuePairs = new Dictionary(); BLL.FastReportService.AddFastreportParameter(keyValuePairs); initTemplatePath = "File\\Fastreport\\JGZL\\管道压力包文件资料目录.frx"; fastReportItem.ReportPath = initTemplatePath; fastReportItem.ParameterValues = keyValuePairs; } break; case "3"://管道系统压力试验条件确认记录 { Dictionary keyValuePairs = new Dictionary(); var projectName = BLL.ProjectService.GetProjectNameByProjectId(projectid); var InstallationName = BLL.UnitWorkService.getUnitWorkByUnitWorkId(updateTestPackage.UnitWorkId).UnitWorkName; keyValuePairs.Add("ProjectName", projectName); keyValuePairs.Add("InstallationName", InstallationName); keyValuePairs.Add("TestPackageNo", updateTestPackage.TestPackageNo); keyValuePairs.Add("TestPackageName", updateTestPackage.TestPackageName); BLL.FastReportService.AddFastreportParameter(keyValuePairs); initTemplatePath = "File\\Fastreport\\JGZL\\管道系统压力试验条件确认记录.frx"; fastReportItem.ReportPath = initTemplatePath; fastReportItem.ParameterValues = keyValuePairs; } break; case "4"://管道试压包尾项清单 { string sql = @"select ItemCheckId,PTP_ID,PTP_ItemEndCheck.PipelineId,Content,ItemType,Result,HJGL_Pipeline.PipelineCode from PTP_ItemEndCheck left join PTP_ItemEndCheckList on PTP_ItemEndCheckList.ItemEndCheckListId = PTP_ItemEndCheck.ItemEndCheckListId left join HJGL_Pipeline on HJGL_Pipeline.PipelineId = PTP_ItemEndCheck.PipelineId where PTP_ItemEndCheckList.PTP_ID=@ptp_id"; List listStr = new List { new SqlParameter("@ptp_id", ptp_id), }; SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(sql, parameter); DataTable dt = new DataTable(); dt.TableName = "Data"; dt.Columns.Add("SortNumber"); dt.Columns.Add("PipelineCode"); dt.Columns.Add("Content"); dt.Columns.Add("ItemType"); for (int i = 0; i < tb.Rows.Count; i++) { var newRows = dt.NewRow(); newRows["SortNumber"] = (i + 1).ToString(); newRows["PipelineCode"] = tb.Rows[i]["PipelineCode"].ToString(); newRows["Content"] = tb.Rows[i]["Content"].ToString(); newRows["ItemType"] = tb.Rows[i]["ItemType"].ToString(); dt.Rows.Add(newRows); } BLL.FastReportService.AddFastreportTable(dt); Dictionary keyValuePairs = new Dictionary(); keyValuePairs.Add("TestPackageNo", updateTestPackage.TestPackageNo); BLL.FastReportService.AddFastreportParameter(keyValuePairs); initTemplatePath = "File\\Fastreport\\JGZL\\管道试压包尾项清单.frx"; List dataTables = new List(); dataTables.Add(dt); fastReportItem.ReportPath = initTemplatePath; fastReportItem.ParameterValues = keyValuePairs; fastReportItem.DataTables = dataTables; } break; case "5"://管道系统压力试验记录 { string sql = @"SELECT ptpPipe.PT_PipeId, ptpPipe.PTP_ID, ptpPipe.PipelineId, IsoInfo.DesignPress, --设计压力 IsoInfo.DesignTemperature, --设计温度 IsoInfo.TestPressure, --试验压力 IsoInfo.PipelineCode,--管道编号/单线号 testMedium.MediumName,--试验介质 testPackage.AmbientTemperature,--试验环境温度 testPackage.TestMediumTemperature--试验介质温度 FROM dbo.PTP_PipelineList AS ptpPipe LEFT JOIN dbo.HJGL_Pipeline AS IsoInfo ON ptpPipe.PipelineId = IsoInfo.PipelineId LEFT JOIN dbo.Base_TestMedium AS testMedium ON testMedium.TestMediumId = IsoInfo.TestMedium left join PTP_TestPackage as testPackage on testPackage.PTP_ID = ptpPipe.PTP_ID where ptpPipe.PTP_ID=@ptp_id"; List listStr = new List { new SqlParameter("@ptp_id", ptp_id), }; SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(sql, parameter); DataTable dt = new DataTable(); dt.TableName = "Data"; dt.Columns.Add("PipelineCode"); dt.Columns.Add("DesignPress"); dt.Columns.Add("DesignTemperature"); dt.Columns.Add("MediumName"); dt.Columns.Add("TestPressure"); dt.Columns.Add("AmbientTemperature"); dt.Columns.Add("TestMediumTemperature"); for (int i = 0; i < tb.Rows.Count; i++) { var newRows = dt.NewRow(); newRows["PipelineCode"] = tb.Rows[i]["PipelineCode"].ToString(); newRows["DesignPress"] = tb.Rows[i]["DesignPress"].ToString(); newRows["DesignTemperature"] = tb.Rows[i]["DesignTemperature"].ToString(); newRows["MediumName"] = tb.Rows[i]["MediumName"].ToString(); newRows["TestPressure"] = tb.Rows[i]["TestPressure"].ToString(); newRows["AmbientTemperature"] = tb.Rows[i]["AmbientTemperature"].ToString(); var temp = tb.Rows[i]["TestMediumTemperature"].ToString(); newRows["TestMediumTemperature"] = tb.Rows[i]["TestMediumTemperature"].ToString(); dt.Rows.Add(newRows); } BLL.FastReportService.AddFastreportTable(dt); var projectName = BLL.ProjectService.GetProjectNameByProjectId(projectid); var InstallationName = BLL.UnitWorkService.getUnitWorkByUnitWorkId(updateTestPackage.UnitWorkId).UnitWorkName; Dictionary keyValuePairs = new Dictionary(); keyValuePairs.Add("ProjectName", projectName); keyValuePairs.Add("InstallationName", InstallationName); keyValuePairs.Add("TestPackageNo", updateTestPackage.TestPackageNo); keyValuePairs.Add("TestPackageName", updateTestPackage.TestPackageName); BLL.FastReportService.AddFastreportParameter(keyValuePairs); initTemplatePath = "File\\Fastreport\\JGZL\\管道系统压力试验记录.frx"; List dataTables = new List(); dataTables.Add(dt); fastReportItem.ReportPath = initTemplatePath; fastReportItem.ParameterValues = keyValuePairs; fastReportItem.DataTables = dataTables; } break; case "6"://管道材料材质标识检查记录 { string sql = @"select PT_PipeId, PTP_ID,pipelineList.PipelineId,pipeline.PipelineCode from PTP_PipelineList as pipelineList left join HJGL_Pipeline as pipeline on pipeline.PipelineId = pipelineList.PipelineId where PTP_ID=@ptp_id"; List listStr = new List { new SqlParameter("@ptp_id", ptp_id), }; SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(sql, parameter); DataTable dt = new DataTable(); dt.TableName = "Data"; dt.Columns.Add("PipelineCode"); dt.Columns.Add("ManterialCode"); dt.Columns.Add("Specification"); dt.Columns.Add("MaterialColor"); for (int i = 0; i < tb.Rows.Count; i++) { var newRows = dt.NewRow(); newRows["PipelineCode"] = tb.Rows[i]["PipelineCode"].ToString(); newRows["ManterialCode"] = getMaterialCodeByPipelineId(tb.Rows[i]["PipelineId"].ToString(),out string MaterialColor); newRows["Specification"] = getSpecificationByPipelineId(tb.Rows[i]["PipelineId"].ToString()); newRows["MaterialColor"] = MaterialColor; dt.Rows.Add(newRows); } BLL.FastReportService.AddFastreportTable(dt); var projectName = BLL.ProjectService.GetProjectNameByProjectId(projectid); var InstallationName = BLL.UnitWorkService.getUnitWorkByUnitWorkId(updateTestPackage.UnitWorkId).UnitWorkName; Dictionary keyValuePairs = new Dictionary(); keyValuePairs.Add("ProjectName", projectName); keyValuePairs.Add("InstallationName", InstallationName); BLL.FastReportService.AddFastreportParameter(keyValuePairs); initTemplatePath = "File\\Fastreport\\JGZL\\管道材料材质标识检查记录.frx"; List dataTables = new List(); dataTables.Add(dt); fastReportItem.ReportPath = initTemplatePath; fastReportItem.ParameterValues = keyValuePairs; fastReportItem.DataTables = dataTables; } break; case "7"://管道焊接工作记录 { var iosList = BLL.TestPackageEditService.GetPipeLineListByPTP_ID(ptp_id); if (iosList.Count > 0) { var q = iosList[0]; var isoIds = string.Join("','", iosList.Select(x => x.PipelineId).ToArray()); string sql = @"select weldJoint.WeldJointId, weldJoint.PipelineId, weldJoint.ProjectId, weldJoint.PipelineCode,--管线号 weldJoint.WeldJointCode,--焊口号 (case when person.WelderCode is not null then case when person2.WelderCode is not null and person.WelderCode<>person2.WelderCode then person.WelderCode+'/'+person2.WelderCode else person2.WelderCode end else person.WelderCode end) as WelderCode,--焊工代号 weldJoint.Specification, --规格 (case when material1.MaterialCode is not null then case when material2.MaterialCode is not null and material1.MaterialCode<>material2.MaterialCode then material1.MaterialCode+'/'+material2.MaterialCode else material2.MaterialCode end else material1.MaterialCode end) as MaterialCode, --材质 weldJoint.WeldingLocationId,--焊接位置 weldingMethod.WeldingMethodCode,--焊接方法 (case when consumables1.ConsumablesName is not null then case when consumables2.ConsumablesName is not null and consumables1.ConsumablesName <> consumables2.ConsumablesName then consumables1.ConsumablesName + '+' + consumables2.ConsumablesName else consumables1.ConsumablesName end else consumables2.ConsumablesName end) as WeldingMaterial,--焊材牌号 convert(varchar(10),weldingDaily.WeldingDate,111) as WeldingDate --焊接日期 from HJGL_WeldJoint as weldJoint left join HJGL_Pipeline as pipeline on pipeline.PipelineId = weldJoint.PipelineId left join SitePerson_Person as person on person.PersonId = weldJoint.CoverWelderId left join SitePerson_Person as person2 on person2.PersonId = weldJoint.BackingWelderId left join Base_Material as material1 on material1.MaterialId = weldJoint.Material1Id left join Base_Material as material2 on material2.MaterialId = weldJoint.Material2Id left join HJGL_WeldingDaily as weldingDaily on weldingDaily.WeldingDailyId = weldJoint.WeldingDailyId left join Base_WeldingMethod as weldingMethod on weldingMethod.WeldingMethodId = weldJoint.WeldingMethodId left join Base_Consumables as consumables1 on consumables1.ConsumablesId = weldJoint.WeldingWire left join Base_Consumables as consumables2 on consumables2.ConsumablesId = weldJoint.WeldingRod where weldJoint.WeldingDailyId is not null and weldJoint.PipelineId in ('" + isoIds + "')"; List listStr = new List { //new SqlParameter("@ptp_id", this.PTP_ID), }; SqlParameter[] parameter = listStr.ToArray(); DataTable tb = SQLHelper.GetDataTableRunText(sql, parameter); DataTable dt = new DataTable(); dt.TableName = "Data"; dt.Columns.Add("PipelineCode"); dt.Columns.Add("WeldJointCode"); dt.Columns.Add("WelderCode"); dt.Columns.Add("Specification"); dt.Columns.Add("MaterialCode"); dt.Columns.Add("WeldingLocationId"); dt.Columns.Add("WeldingMethodCode"); dt.Columns.Add("WeldingMaterial"); dt.Columns.Add("WeldingDate"); for (int i = 0; i < tb.Rows.Count; i++) { var newRows = dt.NewRow(); newRows["PipelineCode"] = tb.Rows[i]["PipelineCode"].ToString(); newRows["WeldJointCode"] = tb.Rows[i]["WeldJointCode"].ToString(); newRows["WelderCode"] = tb.Rows[i]["WelderCode"].ToString(); newRows["Specification"] = tb.Rows[i]["Specification"].ToString(); newRows["MaterialCode"] = tb.Rows[i]["MaterialCode"].ToString(); newRows["WeldingLocationId"] = tb.Rows[i]["WeldingLocationId"].ToString(); newRows["WeldingMethodCode"] = tb.Rows[i]["WeldingMethodCode"].ToString(); newRows["WeldingMaterial"] = tb.Rows[i]["WeldingMaterial"].ToString(); newRows["WeldingDate"] = tb.Rows[i]["WeldingDate"].ToString(); dt.Rows.Add(newRows); } BLL.FastReportService.AddFastreportTable(dt); var projectName = BLL.ProjectService.GetProjectNameByProjectId(projectid); var InstallationName = BLL.UnitWorkService.getUnitWorkByUnitWorkId(updateTestPackage.UnitWorkId).UnitWorkName; Dictionary keyValuePairs = new Dictionary(); keyValuePairs.Add("ProjectName", projectName); keyValuePairs.Add("InstallationName", InstallationName); BLL.FastReportService.AddFastreportParameter(keyValuePairs); initTemplatePath = "File\\Fastreport\\JGZL\\管道焊接工作记录.frx"; List dataTables = new List(); dataTables.Add(dt); fastReportItem.ReportPath = initTemplatePath; fastReportItem.ParameterValues = keyValuePairs; fastReportItem.DataTables = dataTables; } } break; case "8"://管道无损检测数量统计表 { var iosList = BLL.TestPackageEditService.GetPipeLineListByPTP_ID(ptp_id); if (iosList.Count > 0) { var q = iosList[0]; var isoIds = string.Join("','", iosList.Select(x => x.PipelineId).ToArray()); Dictionary keyValuePairs = new Dictionary(); var projectName = BLL.ProjectService.GetProjectNameByProjectId(projectid); var UnitWorkName = BLL.UnitWorkService.getUnitWorkByUnitWorkId(updateTestPackage.UnitWorkId).UnitWorkName; var UnitWorkCode = BLL.UnitWorkService.getUnitWorkByUnitWorkId(updateTestPackage.UnitWorkId).UnitWorkCode; keyValuePairs.Add("projectName", projectName); keyValuePairs.Add("UnitWorkName", UnitWorkName); keyValuePairs.Add("UnitWorkCode", UnitWorkCode); BLL.FastReportService.AddFastreportParameter(keyValuePairs); string sql3 = @"SELECT isoList.PT_PipeId, isoList.PTP_ID, isoList.PipelineId, testPackage.ProjectId, isoInfo.PipelineCode, isoInfo.SingleNumber, (convert(nvarchar(10),dr.DetectionRateValue)+'%') as DetectionRateValue, '' as totalJotCountBW, '' as RTtotalJotCountBW, '' as UTtotalJotCountBW, '' as MTtotalJotCountBW, '' as PTtotalJotCountBW, '' as totalJotCountFW, '' as MTtotalJotCountFW, '' as PTtotalJotCountFW, '' as totalJotCountDW, '' as RTtotalJotCountDW, '' as UTtotalJotCountDW, '' as MTtotalJotCountDW, '' as PTtotalJotCountDW FROM PTP_PipelineList AS isoList LEFT JOIN PTP_TestPackage AS testPackage ON testPackage.PTP_ID = isoList.PTP_ID LEFT JOIN HJGL_Pipeline AS isoInfo ON isoInfo.PipelineId = isoList.PipelineId left join Base_DetectionRate as dr on dr.DetectionRateId = isoInfo.DetectionRateId where isoList.PipelineId in ('" + isoIds + "')"; DataTable dt = SQLHelper.GetDataTableRunText(sql3, null); if (dt != null) { dt.TableName = "Data"; // 一次性获取所有管道的数据 var pipelineIds = dt.AsEnumerable().Select(row => row["PipelineId"].ToString()).ToList(); // 获取所有合格数据 var allQualifiedData = (from x in Funs.DB.HJGL_Batch_NDEItem join t in Funs.DB.HJGL_Batch_BatchTrustItem on x.TrustBatchItemId equals t.TrustBatchItemId join y in Funs.DB.HJGL_WeldJoint on t.WeldJointId equals y.WeldJointId join z in Funs.DB.Base_WeldType on y.WeldTypeId equals z.WeldTypeId join w in Funs.DB.View_HJGL_WeldJointDetectionType on t.WeldJointId equals w.WeldJointId where pipelineIds.Contains(y.PipelineId) && x.CheckResult == "1" select new { PipelineId = y.PipelineId, WeldTypeCode = z.WeldTypeCode, DetectionType = w.JointDetectionTypeStr }).ToList(); // 处理数据 foreach (DataRow row in dt.Rows) { string pipelineId = row["PipelineId"].ToString(); var pipelineData = allQualifiedData.Where(d => d.PipelineId == pipelineId); // 对接焊接头 var bwData = pipelineData.Where(d => d.WeldTypeCode == "BW"); row["totalJotCountBW"] = bwData.Count().ToString(); row["RTtotalJotCountBW"] = bwData.Count(d => d.DetectionType == "RT").ToString(); row["UTtotalJotCountBW"] = bwData.Count(d => d.DetectionType == "UT").ToString(); row["MTtotalJotCountBW"] = bwData.Count(d => d.DetectionType == "MT").ToString(); row["PTtotalJotCountBW"] = bwData.Count(d => d.DetectionType == "PT").ToString(); // 角焊接头 var fwData = pipelineData.Where(d => d.WeldTypeCode == "C" || d.WeldTypeCode == "E" || d.WeldTypeCode == "SW"); row["totalJotCountFW"] = fwData.Count().ToString(); row["MTtotalJotCountFW"] = fwData.Count(d => d.DetectionType == "MT").ToString(); row["PTtotalJotCountFW"] = fwData.Count(d => d.DetectionType == "PT").ToString(); // 支管连接接头 var dwData = pipelineData.Where(d => d.WeldTypeCode == "D" || d.WeldTypeCode == "OLET" || d.WeldTypeCode == "FW"); row["totalJotCountDW"] = dwData.Count().ToString(); row["RTtotalJotCountDW"] = dwData.Count(d => d.DetectionType == "RT").ToString(); row["UTtotalJotCountDW"] = dwData.Count(d => d.DetectionType == "UT").ToString(); row["MTtotalJotCountDW"] = dwData.Count(d => d.DetectionType == "MT").ToString(); row["PTtotalJotCountDW"] = dwData.Count(d => d.DetectionType == "PT").ToString(); } } BLL.FastReportService.AddFastreportTable(dt); initTemplatePath = "File\\Fastreport\\JGZL\\管道无损检测数量统计表.frx"; List dataTables = new List(); dataTables.Add(dt); fastReportItem.ReportPath = initTemplatePath; fastReportItem.ParameterValues = keyValuePairs; fastReportItem.DataTables = dataTables; } } break; case "9"://无损检测结果汇总表 { var iosList = BLL.TestPackageEditService.GetPipeLineListByPTP_ID(ptp_id); if (iosList.Count > 0) { var q = iosList[0]; var isoNos = string.Join(",", iosList.Select(x => x.PipelineCode).ToArray()); var isoIds = string.Join("','", iosList.Select(x => x.PipelineId).ToArray()); Dictionary keyValuePairs = new Dictionary(); var projectName = BLL.ProjectService.GetProjectNameByProjectId(projectid); var UnitWorkName = BLL.UnitWorkService.getUnitWorkByUnitWorkId(updateTestPackage.UnitWorkId).UnitWorkName; var UnitWorkCode = BLL.UnitWorkService.getUnitWorkByUnitWorkId(updateTestPackage.UnitWorkId).UnitWorkCode; var unitNames = BLL.UnitService.GetUnitNameByUnitId(updateTestPackage.UnitId); keyValuePairs.Add("ProjectName", projectName); keyValuePairs.Add("UnitWorkName", UnitWorkName); keyValuePairs.Add("UnitWorkCode", UnitWorkCode); keyValuePairs.Add("UnitName2", unitNames);//施工单位 if (!string.IsNullOrEmpty(q.PipingClassId)) { var PipingClass = BLL.Base_PipingClassService.GetPipingClassByPipingClassId(q.PipingClassId); if (PipingClass != null) { keyValuePairs.Add("ISOLevel", PipingClass.PipingClassName); } } keyValuePairs.Add("isoCode", isoNos); //监理单位 var Unit1 = BLL.UnitService.GetUnitByProjectIdUnitTypeList(projectid, BLL.Const.ProjectUnitType_3); if (Unit1 != null) { var unitNames1 = string.Join(",", Unit1.Select(x => x.UnitName).ToArray()); keyValuePairs.Add("UnitName1", unitNames1); } #region 定义变量 int rtdjJoint = 0;//RT对接焊口数 int? rtdjFilm = 0;//RT对接片数 int rtjhJoint = 0;//RT角焊焊口数 int? rtjhFilm = 0;//RT角焊片数 int rtzgJoint = 0;//RT支管连接焊口数 int? rtzgFilm = 0;//RT支管连接片数 int utdjJoint = 0;//UT对接焊口数 //int? utdjFilm = 0;//UT对接片数 int utjhJoint = 0;//UT角焊焊口数 //int? utjhFilm = 0;//UT角焊片数 int utzgJoint = 0;//UT支管连接焊口数 //int? utzgFilm = 0;//UT支管连接片数 int mtdjJoint = 0;//MT对接焊口数 //int? mtdjFilm = 0;//MT对接片数 int mtjhJoint = 0;//MT角焊焊口数 //int? mtjhFilm = 0;//MT角焊片数 int mtzgJoint = 0;//MT支管连接焊口数 //int? mtzgFilm = 0;//MT支管连接片数 int ptdjJoint = 0;//PT对接焊口数 //int? ptdjFilm = 0;//PT对接片数 int ptjhJoint = 0;//PT角焊焊口数 //int? ptjhFilm = 0;//PT角焊片数 int ptzgJoint = 0;//PT支管连接焊口数 //int? ptzgFilm = 0;//PT支管连接片数 int rtdjNoPassJoint = 0; int? rtdjNoPassFilm = 0; int rtjhNoPassJoint = 0; int? rtjhNoPassFilm = 0; int rtzgNoPassJoint = 0; int? rtzgNoPassFilm = 0; int utdjNoPassJoint = 0; decimal? utdjNoPassFilm = 0; int utjhNoPassJoint = 0; decimal? utjhNoPassFilm = 0; int utzgNoPassJoint = 0; decimal? utzgNoPassFilm = 0; int mtdjNoPassJoint = 0; decimal? mtdjNoPassFilm = 0; int mtjhNoPassJoint = 0; decimal? mtjhNoPassFilm = 0; int mtzgNoPassJoint = 0; decimal? mtzgNoPassFilm = 0; int ptdjNoPassJoint = 0; decimal? ptdjNoPassFilm = 0; int ptjhNoPassJoint = 0; decimal? ptjhNoPassFilm = 0; int ptzgNoPassJoint = 0; decimal? ptzgNoPassFilm = 0; #endregion 定义变量 foreach (var iso in iosList) { #region 检测数量统计 // RT统计 var rtStats = GetDetectionStats(iso.PipelineId, "RT"); rtdjJoint += rtStats.djJoint; rtdjFilm += rtStats.djFilm; rtjhJoint += rtStats.jhJoint; rtjhFilm += rtStats.jhFilm; rtzgJoint += rtStats.zgJoint; rtzgFilm += rtStats.zgFilm; // UT统计 var utStats = GetDetectionStats(iso.PipelineId, "UT"); utdjJoint += utStats.djJoint; utjhJoint += utStats.jhJoint; utzgJoint += utStats.zgJoint; // MT统计 var mtStats = GetDetectionStats(iso.PipelineId, "MT"); mtdjJoint += mtStats.djJoint; mtjhJoint += mtStats.jhJoint; mtzgJoint += mtStats.zgJoint; // PT统计 var ptStats = GetDetectionStats(iso.PipelineId, "PT"); ptdjJoint += ptStats.djJoint; ptjhJoint += ptStats.jhJoint; ptzgJoint += ptStats.zgJoint; #endregion 检测数量统计 #region 不合格情况统计 // RT不合格统计 var rtNoPassStats = GetNoPassDetectionStats(iso.PipelineId, "RT"); rtdjNoPassJoint += rtNoPassStats.djJoint; rtdjNoPassFilm += rtNoPassStats.djFilm; rtjhNoPassJoint += rtNoPassStats.jhJoint; rtjhNoPassFilm += rtNoPassStats.jhFilm; rtzgNoPassJoint += rtNoPassStats.zgJoint; rtzgNoPassFilm += rtNoPassStats.zgFilm; // 其他不合格统计类似... var utNoPassStats = GetNoPassDetectionStats(iso.PipelineId, "UT"); utdjNoPassJoint += utNoPassStats.djJoint; utdjNoPassFilm += utNoPassStats.djFilm; utjhNoPassJoint += utNoPassStats.jhJoint; utjhNoPassFilm += utNoPassStats.jhFilm; utzgNoPassJoint += utNoPassStats.zgJoint; utzgNoPassFilm += utNoPassStats.zgFilm; var mtNoPassStats = GetNoPassDetectionStats(iso.PipelineId, "MT"); mtdjNoPassJoint += mtNoPassStats.djJoint; mtdjNoPassFilm += mtNoPassStats.djFilm; mtjhNoPassJoint += mtNoPassStats.jhJoint; mtjhNoPassFilm += mtNoPassStats.jhFilm; mtzgNoPassJoint += mtNoPassStats.zgJoint; mtzgNoPassFilm += mtNoPassStats.zgFilm; var ptNoPassStats = GetNoPassDetectionStats(iso.PipelineId, "PT"); ptdjNoPassJoint += ptNoPassStats.djJoint; ptdjNoPassFilm += ptNoPassStats.djFilm; ptjhNoPassJoint += ptNoPassStats.jhJoint; ptjhNoPassFilm += ptNoPassStats.jhFilm; ptzgNoPassJoint += ptNoPassStats.zgJoint; ptzgNoPassFilm += ptNoPassStats.zgFilm; #endregion 不合格情况统计 } keyValuePairs.Add("RTBW", (rtdjJoint > 0 ? rtdjJoint.ToString() + "道" : "") + "/" + (rtdjFilm > 0 ? rtdjFilm.ToString() + "张" : "")); keyValuePairs.Add("RTFW", (rtjhJoint > 0 ? rtjhJoint.ToString() + "道" : "") + "/" + (rtjhFilm > 0 ? rtjhFilm.ToString() + "张" : "")); keyValuePairs.Add("RTDW", (rtzgJoint > 0 ? rtzgJoint.ToString() + "道" : "") + "/" + (rtzgFilm > 0 ? rtzgFilm.ToString() + "张" : "")); keyValuePairs.Add("UTBW", (utdjJoint > 0 ? utdjJoint.ToString() + "道" : "") + "/" + (utdjJoint > 0 ? utdjJoint.ToString() + "米" : "")); keyValuePairs.Add("UTFW", (utjhJoint > 0 ? utjhJoint.ToString() + "道" : "") + "/" + (utjhJoint > 0 ? utjhJoint.ToString() + "米" : "")); keyValuePairs.Add("UTDW", (utzgJoint > 0 ? utzgJoint.ToString() + "道" : "") + "/" + (utzgJoint > 0 ? utzgJoint.ToString() + "米" : "")); keyValuePairs.Add("MTBW", (mtdjJoint > 0 ? mtdjJoint.ToString() + "道" : "") + "/" + (mtdjJoint > 0 ? mtdjJoint.ToString() + "米" : "")); keyValuePairs.Add("MTFW", (mtjhJoint > 0 ? mtjhJoint.ToString() + "道" : "") + "/" + (mtjhJoint > 0 ? mtjhJoint.ToString() + "米" : "")); keyValuePairs.Add("MTDW", (mtzgJoint > 0 ? mtzgJoint.ToString() + "道" : "") + "/" + (mtzgJoint > 0 ? mtzgJoint.ToString() + "米" : "")); keyValuePairs.Add("PTBW", (ptdjJoint > 0 ? ptdjJoint.ToString() + "道" : "") + "/" + (ptdjJoint > 0 ? ptdjJoint.ToString() + "米" : "")); keyValuePairs.Add("PTFW", (ptjhJoint > 0 ? ptjhJoint.ToString() + "道" : "") + "/" + (ptjhJoint > 0 ? ptjhJoint.ToString() + "米" : "")); keyValuePairs.Add("PTDW", (ptzgJoint > 0 ? ptzgJoint.ToString() + "道" : "") + "/" + (ptzgJoint > 0 ? ptzgJoint.ToString() + "米" : "")); keyValuePairs.Add("RTNoPassBW", (rtdjNoPassJoint > 0 ? rtdjNoPassJoint.ToString() + "道" : "") + "/" + (rtdjNoPassFilm > 0 ? rtdjNoPassFilm.ToString() + "张" : "")); keyValuePairs.Add("RTNoPassFW", (rtjhNoPassJoint > 0 ? rtjhNoPassJoint.ToString() + "道" : "") + "/" + (rtjhNoPassFilm > 0 ? rtjhNoPassFilm.ToString() + "张" : "")); keyValuePairs.Add("RTNoPassDW", (rtzgNoPassJoint > 0 ? rtzgNoPassJoint.ToString() + "道" : "") + "/" + (rtzgNoPassFilm > 0 ? rtzgNoPassFilm.ToString() + "张" : "")); keyValuePairs.Add("UTNoPassBW", (utdjNoPassJoint > 0 ? utdjNoPassJoint.ToString() + "道" : "") + "/" + (utdjNoPassFilm > 0 ? utdjNoPassFilm.ToString() + "处" : "")); keyValuePairs.Add("UTNoPassFW", (utjhNoPassJoint > 0 ? utjhNoPassJoint.ToString() + "道" : "") + "/" + (utjhNoPassFilm > 0 ? utjhNoPassFilm.ToString() + "处" : "")); keyValuePairs.Add("UTNoPassDW", (utzgNoPassJoint > 0 ? utzgNoPassJoint.ToString() + "道" : "") + "/" + (utzgNoPassFilm > 0 ? utzgNoPassFilm.ToString() + "处" : "")); keyValuePairs.Add("MTNoPassBW", (mtdjNoPassJoint > 0 ? mtdjNoPassJoint.ToString() + "道" : "") + "/" + (mtdjNoPassFilm > 0 ? mtdjNoPassFilm.ToString() + "处" : "")); keyValuePairs.Add("MTNoPassFW", (mtjhNoPassJoint > 0 ? mtjhNoPassJoint.ToString() + "道" : "") + "/" + (mtjhNoPassFilm > 0 ? mtjhNoPassFilm.ToString() + "处" : "")); keyValuePairs.Add("MTNoPassDW", (mtzgNoPassJoint > 0 ? mtzgNoPassJoint.ToString() + "道" : "") + "/" + (mtzgNoPassFilm > 0 ? mtzgNoPassFilm.ToString() + "处" : "")); keyValuePairs.Add("PTNoPassBW", (ptdjNoPassJoint > 0 ? ptdjNoPassJoint.ToString() + "道" : "") + "/" + (ptdjNoPassFilm > 0 ? ptdjNoPassFilm.ToString() + "处" : "")); keyValuePairs.Add("PTNoPassFW", (ptjhNoPassJoint > 0 ? ptjhNoPassJoint.ToString() + "道" : "") + "/" + (ptjhNoPassFilm > 0 ? ptjhNoPassFilm.ToString() + "处" : "")); keyValuePairs.Add("PTNoPassDW", (ptzgNoPassJoint > 0 ? ptzgNoPassJoint.ToString() + "道" : "") + "/" + (ptzgNoPassFilm > 0 ? ptzgNoPassFilm.ToString() + "处" : "")); keyValuePairs.Add("isoIds", isoIds); BLL.FastReportService.AddFastreportParameter(keyValuePairs); string sql3 = @"select nDEItem.NDEItemID, i.SingleName, i.PipelineCode, j.WeldJointCode, (case when j.CoverWelderId is not null then ( case when j.BackingWelderId is not null and j.CoverWelderId<>j.BackingWelderId then cWelder.WelderCode+'/'+fWelder.WelderCode else cWelder.WelderCode end) else fWelder.WelderCode end) as WelderCode, (case when d.JointDetectionTypeStr='RT' or d.JointDetectionTypeStr='UT' then (case nDEItem.CheckResult when '1' then '合格' when '2' then '不合格' else '/' end) else '/' end) as RTUTResult, (case when d.JointDetectionTypeStr='RT' or d.JointDetectionTypeStr='UT' then nDEItem.NDEReportNo else '/' end) as RTUTCheckNo, (case when d.JointDetectionTypeStr='MT' or d.JointDetectionTypeStr='PT' then (case nDEItem.CheckResult when '1' then '合格' when '2' then '不合格' else '/' end) else '/' end) as MTPTResult, (case when d.JointDetectionTypeStr='MT' or d.JointDetectionTypeStr='PT' then nDEItem.NDEReportNo else '/' end) as MTPTCheckNo, nDEItem.Remark as CHT_Remark,pointBatch.PointBatchCode from HJGL_Batch_NDEItem as nDEItem left join HJGL_Batch_NDE as c on c.NDEID = nDEItem.NDEID left join HJGL_Batch_BatchTrustItem as t on t.TrustBatchItemId = nDEItem.TrustBatchItemId left join HJGL_WeldJoint as j on j.WeldJointId = t.WeldJointId left join HJGL_Pipeline as i on i.PipelineId =j.PipelineId left join SitePerson_Person as cWelder on cWelder.PersonId = j.CoverWelderId left join SitePerson_Person as fWelder on fWelder.PersonId = j.BackingWelderId left join View_HJGL_WeldJointDetectionType as d on d.WeldJointId = t.WeldJointId left join HJGL_Batch_PointBatchItem as pointBatchItem on pointBatchItem.PointBatchItemId = t.PointBatchItemId left join HJGL_Batch_PointBatch as pointBatch on pointBatch.PointBatchId = pointBatchItem.PointBatchId where j.PipelineId in ('" + isoIds + "')"; List listStr = new List(); SqlParameter[] parameter = listStr.ToArray(); DataTable dt0 = SQLHelper.GetDataTableRunText(sql3, parameter); sql3 += " order by PipelineCode,WeldJointCode"; DataTable dt = new DataTable(); dt.TableName = "Data"; dt.Columns.Add("SingleName"); dt.Columns.Add("WeldJointCode"); dt.Columns.Add("WelderCode"); dt.Columns.Add("PointBatchCode"); dt.Columns.Add("RTUTResult"); dt.Columns.Add("RTUTCheckNo"); dt.Columns.Add("MTPTResult"); dt.Columns.Add("MTPTCheckNo"); dt.Columns.Add("CHT_Remark"); dt0.DefaultView.Sort = "PipelineCode,WeldJointCode asc"; DataRow[] rows = dt0.DefaultView.ToTable().Select(); foreach (var row in rows) { var newRow = dt.NewRow(); newRow["SingleName"] = row["SingleName"].ToString(); newRow["WeldJointCode"] = row["WeldJointCode"].ToString(); newRow["WelderCode"] = row["WelderCode"].ToString(); newRow["PointBatchCode"] = row["PointBatchCode"].ToString(); newRow["RTUTResult"] = row["RTUTResult"].ToString(); newRow["RTUTCheckNo"] = row["RTUTCheckNo"].ToString(); newRow["MTPTResult"] = row["MTPTResult"].ToString(); newRow["MTPTCheckNo"] = row["MTPTCheckNo"].ToString(); newRow["CHT_Remark"] = row["CHT_Remark"].ToString(); dt.Rows.Add(newRow); } BLL.FastReportService.AddFastreportTable(dt); initTemplatePath = "File\\Fastreport\\JGZL\\管道无损检测结果汇总表.frx"; List dataTables = new List(); dataTables.Add(dt); fastReportItem.ReportPath = initTemplatePath; fastReportItem.ParameterValues = keyValuePairs; fastReportItem.DataTables = dataTables; } } break; } return fastReportItem; } public static List GetListByPTP_ID(string PTP_ID) { return Funs.DB.PTP_TestPackagePrint.Where(x => x.PTP_ID == PTP_ID).OrderBy(x => x.TypeInt).ToList(); } /// /// 不合格检测统计方法 /// /// /// /// public static (int djJoint, int djFilm, int jhJoint, int jhFilm, int zgJoint, int zgFilm) GetNoPassDetectionStats(string pipelineId, string detectionType) { var baseQuery = from x in Funs.DB.HJGL_Batch_NDEItem join t in Funs.DB.HJGL_Batch_BatchTrustItem on x.TrustBatchItemId equals t.TrustBatchItemId join z in Funs.DB.HJGL_WeldJoint on t.WeldJointId equals z.WeldJointId join w in Funs.DB.Base_WeldType on z.WeldTypeId equals w.WeldTypeId join d in Funs.DB.View_HJGL_WeldJointDetectionType on t.WeldJointId equals d.WeldJointId where d.JointDetectionTypeStr == detectionType && z.PipelineId == pipelineId && x.CheckResult == "2" select new { x, w.WeldTypeCode }; return ( djJoint: baseQuery.Where(q => q.WeldTypeCode == "BW").Count(), djFilm: baseQuery.Where(q => q.WeldTypeCode == "BW").Sum(q => (q.x.TotalFilm - q.x.PassFilm)) ?? 0, jhJoint: baseQuery.Where(q => q.WeldTypeCode == "C" || q.WeldTypeCode == "E").Count(), jhFilm: baseQuery.Where(q => q.WeldTypeCode == "C" || q.WeldTypeCode == "E").Sum(q => (q.x.TotalFilm - q.x.PassFilm)) ?? 0, zgJoint: baseQuery.Where(q => q.WeldTypeCode == "D").Count(), zgFilm: baseQuery.Where(q => q.WeldTypeCode == "D").Sum(q => (q.x.TotalFilm - q.x.PassFilm)) ?? 0 ); } public static void Update(Model.PTP_TestPackagePrint newtable) { Model.PTP_TestPackagePrint table = Funs.DB.PTP_TestPackagePrint.FirstOrDefault(x => x.Id == newtable.Id); if (table != null) { table.Id = newtable.Id; table.PTP_ID = newtable.PTP_ID; table.TypeInt = newtable.TypeInt; table.PrintCount = newtable.PrintCount; Funs.DB.SubmitChanges(); } } #endregion Methods #region 格式化字符串 public static string getMaterialCodeByPipelineId(string pipelineId, out string materialColor) { string materialCode = string.Empty; materialColor = string.Empty; if (!string.IsNullOrEmpty(pipelineId)) { var weldjoint = (from x in Funs.DB.HJGL_WeldJoint join y in Funs.DB.Base_Material on x.Material1Id equals y.MaterialId join z in Funs.DB.Base_Material on x.Material2Id equals z.MaterialId where x.PipelineId == pipelineId select new { MaterialId1 = y.MaterialId, MaterialCode1 = y.MaterialCode, MaterialId2 = z.MaterialId, MaterialCode2 = z.MaterialCode, x.ProjectId, }).FirstOrDefault(); if (weldjoint != null) { if (!string.IsNullOrEmpty(weldjoint.MaterialId1)) { var projectSet = Project_SysSetService.GetSysSetBySetId("11", weldjoint.ProjectId); Model.BaseMaterialcolorOutput queryModel = new Model.BaseMaterialcolorOutput(); queryModel.ProjectId = weldjoint.ProjectId; queryModel.MaterialId = weldjoint.MaterialId1; var material1 = BLL.BaseMaterialcolorService.GetListByQueryModle(queryModel).FirstOrDefault(); if (material1 != null) { if (projectSet != null && projectSet.SetValue == "1") { materialColor = material1.ColorName; } else { materialColor= material1.ColorCardNo; } } } if (!string.IsNullOrEmpty(weldjoint.MaterialCode1) && !string.IsNullOrEmpty(weldjoint.MaterialCode2)) { materialCode = weldjoint.MaterialCode1 + "/" + weldjoint.MaterialCode2; } else { if (!string.IsNullOrEmpty(weldjoint.MaterialCode1)) { materialCode = weldjoint.MaterialCode1; } else { materialCode = weldjoint.MaterialCode2; } } } } return materialCode; } public static string getSpecificationByPipelineId(string pipelineId) { string spcificaation = string.Empty; if (!string.IsNullOrEmpty(pipelineId)) { var weldjoint = (from x in Funs.DB.HJGL_WeldJoint where x.PipelineId == pipelineId select x).FirstOrDefault(); if (weldjoint != null) { spcificaation = weldjoint.Specification; } } return spcificaation; } #endregion 格式化字符串 } }