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 格式化字符串
}
}