refactor(hjgl): 整理历史资源并完善焊接查询
归档数据库版本脚本并清理历史地图资源,补充焊口查询和焊接任务相关逻辑,降低项目资源维护成本并完善焊接业务查询。
@@ -186,7 +186,13 @@ namespace BLL
|
||||
var pipeLineMats = db.HJGL_PipeLineMat
|
||||
.Where(e => idList.Contains(e.PipeLineMatId) && e.MaterialCode != null && e.MaterialCode != "")
|
||||
.ToList();
|
||||
foreach (var item in pipeLineMats)
|
||||
var weldJointIds = pipeLineMats.Select(x => x.WeldJointId).Distinct().ToList();
|
||||
var taskWeldJointIds = db.HJGL_WeldTask
|
||||
.Where(x => weldJointIds.Contains(x.WeldJointId))
|
||||
.Select(x => x.WeldJointId)
|
||||
.Distinct()
|
||||
.ToList();
|
||||
foreach (var item in pipeLineMats.Where(x => !taskWeldJointIds.Contains(x.WeldJointId)))
|
||||
{
|
||||
item.MaterialCode = null;
|
||||
count++;
|
||||
|
||||
@@ -6,6 +6,9 @@ namespace BLL
|
||||
{
|
||||
public static class WeldTaskService
|
||||
{
|
||||
private const string CoverMaterialClassFe1 = "Fe-1";
|
||||
private const string CoverMaterialClassFe3 = "Fe-3";
|
||||
|
||||
/// <summary>
|
||||
///获取焊接任务单信息
|
||||
/// </summary>
|
||||
@@ -25,6 +28,65 @@ namespace BLL
|
||||
return db.HJGL_WeldTask.FirstOrDefault(e => e.WeldJointId == weldJointId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据母材类别计算任务单可替代的焊条和焊丝。
|
||||
/// </summary>
|
||||
public static void PopulateAlternativeConsumables(
|
||||
Model.HJGL_WeldTask task,
|
||||
Model.HJGL_WeldJoint weldJoint,
|
||||
IEnumerable<Model.Base_Consumables> weldingRods,
|
||||
IEnumerable<Model.Base_Consumables> weldingWires)
|
||||
{
|
||||
// 获取可替代焊材时沿用原有母材类别和焊材钢号判断规则。
|
||||
var material = Base_MaterialService.GetMaterialByMaterialId(weldJoint.Material1Id);
|
||||
string materialClass = material.MaterialClass;
|
||||
var selectedRod = weldingRods.FirstOrDefault(x => x.ConsumablesId == weldJoint.WeldingRod);
|
||||
var selectedWire = weldingWires.FirstOrDefault(x => x.ConsumablesId == weldJoint.WeldingWire);
|
||||
|
||||
task.CanWeldingRodName = GetAlternativeConsumableNames(materialClass, selectedRod, weldingRods);
|
||||
task.CanWeldingWireName = GetAlternativeConsumableNames(materialClass, selectedWire, weldingWires);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 返回与当前焊材钢号兼容的候选名称,保持原有逗号分隔格式。
|
||||
/// </summary>
|
||||
private static string GetAlternativeConsumableNames(
|
||||
string materialClass,
|
||||
Model.Base_Consumables selectedConsumable,
|
||||
IEnumerable<Model.Base_Consumables> candidateConsumables)
|
||||
{
|
||||
if (selectedConsumable == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
bool useCoverClass = materialClass == CoverMaterialClassFe1 || materialClass == CoverMaterialClassFe3;
|
||||
var names = candidateConsumables
|
||||
.Where(item => useCoverClass
|
||||
? IsCoverClass(selectedConsumable.SteelType, item.SteelType)
|
||||
: selectedConsumable.SteelType == item.SteelType)
|
||||
.Select(item => item.ConsumablesName)
|
||||
.ToList();
|
||||
return names.Any() ? string.Join(",", names) : null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 判断焊材钢号类别是否能覆盖母材类别。
|
||||
/// </summary>
|
||||
private static bool IsCoverClass(string wpsClass, string matClass)
|
||||
{
|
||||
if (wpsClass.Length <= 2 || matClass.Length <= 2)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
string wpsPre = wpsClass.Substring(0, wpsClass.Length - 2);
|
||||
string matPre = matClass.Substring(0, matClass.Length - 2);
|
||||
int wpsSn = Funs.GetNewInt(wpsClass.Substring(wpsClass.Length - 1, 1)) ?? 0;
|
||||
int matSn = Funs.GetNewInt(matClass.Substring(matClass.Length - 1, 1)) ?? 0;
|
||||
return wpsPre == matPre && matSn >= wpsSn;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///获取焊接任务单编号
|
||||
/// </summary>
|
||||
|
||||
@@ -1357,174 +1357,87 @@ namespace BLL
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取焊接日志导出数据;传日报ID时导出单份日报,否则按单位工程和月份导出。
|
||||
/// 将焊口信息转换为俄文焊口总览模板所需的数据。
|
||||
/// </summary>
|
||||
/// <param name="projectId">项目ID</param>
|
||||
/// <param name="unitWorkId">单位工程ID</param>
|
||||
/// <param name="weldingDailyId">焊接日报ID</param>
|
||||
/// <param name="month">月份,格式为yyyy-MM</param>
|
||||
/// <returns>仅包含俄文表头和业务数据的焊接日志</returns>
|
||||
public static DataTable GetWeldingLogExportData(string projectId, string unitWorkId,
|
||||
string weldingDailyId, string month)
|
||||
public static DataTable GetRussianWeldJointExportData(IEnumerable<Model.View_HJGL_WeldJoint> weldJoints)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(projectId)
|
||||
|| (string.IsNullOrWhiteSpace(unitWorkId) && string.IsNullOrWhiteSpace(weldingDailyId)))
|
||||
{
|
||||
return new DataTable();
|
||||
}
|
||||
var joints = weldJoints.ToList();
|
||||
var unitWorkIds = joints.Select(x => x.UnitWorkId).Where(x => x != null && x != string.Empty).Distinct().ToList();
|
||||
var unitWorkCodes = (from x in Funs.DB.WBS_UnitWork
|
||||
where unitWorkIds.Contains(x.UnitWorkId)
|
||||
select new { x.UnitWorkId, x.UnitWorkCode })
|
||||
.ToDictionary(x => x.UnitWorkId, x => x.UnitWorkCode);
|
||||
|
||||
DateTime monthStart = DateTime.MinValue;
|
||||
if (string.IsNullOrWhiteSpace(weldingDailyId)
|
||||
&& !DateTime.TryParse(month + "-01", out monthStart))
|
||||
var rows = joints.Select(x =>
|
||||
{
|
||||
return new DataTable();
|
||||
}
|
||||
string unitWorkCode;
|
||||
unitWorkCodes.TryGetValue(x.UnitWorkId ?? string.Empty, out unitWorkCode);
|
||||
string[] methods = (x.WeldingMethodCode ?? string.Empty)
|
||||
.Split(new[] { '+' }, StringSplitOptions.RemoveEmptyEntries);
|
||||
string rootMethod = methods.Length == 0 ? string.Empty : methods[0].Trim();
|
||||
string fillMethod = methods.Length == 0 ? string.Empty : methods[methods.Length - 1].Trim();
|
||||
string detectionType = (x.DetectionTypeCode ?? string.Empty).ToUpperInvariant();
|
||||
string componentName = string.Join("/", new[] { x.ComponentsCode1, x.ComponentsCode2 }
|
||||
.Where(value => value != null && value != string.Empty));
|
||||
string teamName = string.Join("/", new[] { x.BackingWelderTeamGroupName, x.CoverWelderTeamGroupName }
|
||||
.Where(value => value != null && value != string.Empty).Distinct());
|
||||
|
||||
string condition;
|
||||
var parameters = new List<SqlParameter>
|
||||
{
|
||||
new SqlParameter("@ProjectId", projectId)
|
||||
};
|
||||
if (!string.IsNullOrWhiteSpace(weldingDailyId))
|
||||
{
|
||||
condition = "jot.WeldingDailyId = @WeldingDailyId";
|
||||
parameters.Add(new SqlParameter("@WeldingDailyId", weldingDailyId));
|
||||
}
|
||||
else
|
||||
{
|
||||
condition = @"jot.UnitWorkId = @UnitWorkId
|
||||
AND jot.WeldingDateD >= @MonthStart
|
||||
AND jot.WeldingDateD < @NextMonth";
|
||||
parameters.Add(new SqlParameter("@UnitWorkId", unitWorkId));
|
||||
parameters.Add(new SqlParameter("@MonthStart", monthStart.Date));
|
||||
parameters.Add(new SqlParameter("@NextMonth", monthStart.Date.AddMonths(1)));
|
||||
}
|
||||
return new
|
||||
{
|
||||
MediumCode = x.MediumCode,
|
||||
SheetNo = string.Empty,
|
||||
AreaNo = unitWorkCode,
|
||||
DrawingNo = x.SingleNumber,
|
||||
PIDNo = string.Empty,
|
||||
LineRevision = string.Empty,
|
||||
PipelineCode = x.PipelineCode,
|
||||
PipingClassCode = x.PipingClassCode,
|
||||
FluidGroup = x.PressurePipingClassCode,
|
||||
SpoolNo = x.FlowingSection,
|
||||
WeldJointCode = x.WeldJointCode,
|
||||
JointSymbol = x.JointAttribute == "预制口" ? "S" : x.JointAttribute == "安装口" ? "F" : x.JointAttribute,
|
||||
RTRate = detectionType.Contains("RT") || detectionType.Contains("UT") ? x.DetectionRateCode : string.Empty,
|
||||
PTRate = detectionType.Contains("PT") ? x.DetectionRateCode : string.Empty,
|
||||
VTRate = detectionType.Contains("VT") ? x.DetectionRateCode : string.Empty,
|
||||
Material1 = x.Material1Code,
|
||||
Material2 = x.Material2Code,
|
||||
Size = x.Size,
|
||||
PipeSchedule = string.Empty,
|
||||
Dia = x.Dia,
|
||||
Thickness = x.Thickness,
|
||||
Specification = x.Specification,
|
||||
WeldType = x.WeldTypeCode,
|
||||
WPSCode = x.WPQCode,
|
||||
RootMethod = rootMethod,
|
||||
FillMethod = fillMethod,
|
||||
WeldingDate = x.WeldingDateD.HasValue ? x.WeldingDateD.Value.ToString("yyyy-MM-dd") : x.WeldingDate,
|
||||
AmbientTemperature = string.Empty,
|
||||
ComponentName = componentName,
|
||||
RootWelderCode = x.BackingWelderCode,
|
||||
RootWelderName = x.BackingWelderName,
|
||||
FillWelderCode = x.CoverWelderCode,
|
||||
FillWelderName = x.CoverWelderName,
|
||||
VTTrustCode = detectionType.Contains("VT") ? x.TrustBatchCode : string.Empty,
|
||||
RTUTTrustCode = detectionType.Contains("RT") || detectionType.Contains("UT") ? x.TrustBatchCode : string.Empty,
|
||||
PTTrustCode = detectionType.Contains("PT") ? x.TrustBatchCode : string.Empty,
|
||||
PMITrustCode = detectionType.Contains("PMI") ? x.TrustBatchCode : string.Empty,
|
||||
PWHT = x.IsHotProess.HasValue ? (x.IsHotProess.Value ? "Yes" : "No") : string.Empty,
|
||||
PWHTTrustCode = string.Empty,
|
||||
WeldingMaterial1 = x.WeldingWireCode,
|
||||
WeldingMaterial2 = x.WeldingRodCode,
|
||||
ComponentCode1 = x.ComponentsCode1,
|
||||
HeatNo1 = x.HeartNo1,
|
||||
ComponentCode2 = x.ComponentsCode2,
|
||||
HeatNo2 = x.HeartNo2,
|
||||
TeamName = teamName,
|
||||
WeldCheckCode = x.PointBatchCode,
|
||||
DesignTemperature = x.DesignTemperature,
|
||||
InsulationType = string.Empty,
|
||||
Remark = x.Remark
|
||||
};
|
||||
}).ToList();
|
||||
|
||||
// 俄文日志列横跨焊口、日报、外观、热处理、硬度和无损检测,统一在服务层完成映射,页面仅负责下载。
|
||||
string sql = @"
|
||||
SELECT ROW_NUMBER() OVER (ORDER BY jot.WeldingDateD, jot.PipelineCode, jot.WeldJointCode) AS C01,
|
||||
CONCAT(jot.PipelineCode, '/', jot.WeldJointCode,
|
||||
CASE WHEN ISNULL(jot.WeldTypeCode, '') = '' THEN '' ELSE ', ' + jot.WeldTypeCode END) AS C02,
|
||||
CASE WHEN welder.BackingDisplay = welder.CoverDisplay THEN welder.BackingDisplay
|
||||
WHEN welder.BackingDisplay = '' THEN welder.CoverDisplay
|
||||
WHEN welder.CoverDisplay = '' THEN welder.BackingDisplay
|
||||
ELSE welder.BackingDisplay + CHAR(10) + welder.CoverDisplay END AS C03,
|
||||
REPLACE(ISNULL(jot.MaterialCode, ''), '/', ' / ') AS C04,
|
||||
REPLACE(REPLACE(
|
||||
COALESCE(NULLIF(jot.Specification, ''),
|
||||
CONCAT(CONVERT(varchar(30), jot.Dia), N'×', CONVERT(varchar(30), jot.Thickness))),
|
||||
N'Φ', ''), '*', N'×') AS C05,
|
||||
CONVERT(varchar(10), jot.WeldingDateD, 104) AS C06,
|
||||
ISNULL(jot.WeldingMethodCode, '') AS C07,
|
||||
CONCAT(
|
||||
CASE WHEN ISNULL(jot.WeldingWireCode, '') = '' THEN ''
|
||||
ELSE jot.WeldingWireCode + CASE WHEN ISNULL(wire.Standard, '') = '' THEN '' ELSE ' (' + wire.Standard + ')' END END,
|
||||
CASE WHEN ISNULL(jot.WeldingWireCode, '') = '' OR ISNULL(jot.WeldingRodCode, '') = '' THEN '' ELSE CHAR(10) END,
|
||||
CASE WHEN ISNULL(jot.WeldingRodCode, '') = '' THEN ''
|
||||
ELSE jot.WeldingRodCode + CASE WHEN ISNULL(rod.Standard, '') = '' THEN '' ELSE ' (' + rod.Standard + ')' END END) AS C08,
|
||||
CASE WHEN appearance.PreheatTemperature IS NULL AND appearance.InterpassTemperature IS NULL
|
||||
THEN CASE WHEN ISNULL(jot.PreTemperature, '') = '' THEN '' ELSE jot.PreTemperature + N' °C' END
|
||||
WHEN appearance.InterpassTemperature IS NULL
|
||||
THEN CONCAT(CONVERT(varchar(30), appearance.PreheatTemperature), N' °C')
|
||||
WHEN appearance.PreheatTemperature IS NULL
|
||||
THEN CONCAT(CONVERT(varchar(30), appearance.InterpassTemperature), N' °C')
|
||||
ELSE CONCAT(CONVERT(varchar(30), appearance.PreheatTemperature), ' / ',
|
||||
CONVERT(varchar(30), appearance.InterpassTemperature), N' °C') END AS C09,
|
||||
N'' AS C10,
|
||||
N'' AS C11,
|
||||
N'' AS C12,
|
||||
ISNULL(hotProcess.RecordChartNo, '') AS C13,
|
||||
CONCAT(
|
||||
CASE WHEN hardness.HardNessValue1 IS NULL THEN '' ELSE CONVERT(varchar(20), hardness.HardNessValue1) END,
|
||||
CASE WHEN hardness.HardNessValue2 IS NULL THEN '' ELSE '/' + CONVERT(varchar(20), hardness.HardNessValue2) END,
|
||||
CASE WHEN hardness.HardNessValue3 IS NULL THEN '' ELSE '/' + CONVERT(varchar(20), hardness.HardNessValue3) END,
|
||||
CASE WHEN ISNULL(hardness.HardReportNo, '') = '' THEN '' ELSE ', ' + RTRIM(hardness.HardReportNo) END,
|
||||
CASE WHEN hardness.ReportDate IS NULL THEN '' ELSE ', ' + CONVERT(varchar(10), hardness.ReportDate, 104) END) AS C14,
|
||||
CASE WHEN appearance.IsQualified = 1 THEN N'Годен'
|
||||
WHEN appearance.IsQualified = 0 THEN N'Не годен'
|
||||
ELSE N'' END AS C15,
|
||||
ISNULL(ndt.ResultText, '') AS C16,
|
||||
N'' AS C17
|
||||
FROM dbo.View_HJGL_WeldJoint AS jot
|
||||
LEFT JOIN dbo.Base_Consumables AS wire ON wire.ConsumablesId = jot.WeldingWire
|
||||
LEFT JOIN dbo.Base_Consumables AS rod ON rod.ConsumablesId = jot.WeldingRod
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT CONCAT(ISNULL(jot.BackingWelderName, ''),
|
||||
CASE WHEN ISNULL(jot.BackingWelderCode, '') = '' THEN '' ELSE ' (' + jot.BackingWelderCode + ')' END) AS BackingDisplay,
|
||||
CONCAT(ISNULL(jot.CoverWelderName, ''),
|
||||
CASE WHEN ISNULL(jot.CoverWelderCode, '') = '' THEN '' ELSE ' (' + jot.CoverWelderCode + ')' END) AS CoverDisplay
|
||||
) AS welder
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT TOP 1 checkItem.IsQualified, checkItem.PreheatTemperature, checkItem.InterpassTemperature
|
||||
FROM dbo.HJGL_WeldAppearanceCheck AS checkItem
|
||||
WHERE checkItem.WeldJointId = jot.WeldJointId
|
||||
ORDER BY checkItem.CheckTime DESC, checkItem.CreateTime DESC, checkItem.AppearanceCheckId DESC
|
||||
) AS appearance
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT TOP 1 report.RecordChartNo
|
||||
FROM dbo.HJGL_HotProess_TrustItem AS trustItem
|
||||
LEFT JOIN dbo.HJGL_HotProess_Report AS report
|
||||
ON report.HotProessTrustItemId = trustItem.HotProessTrustItemId
|
||||
WHERE trustItem.WeldJointId = jot.WeldJointId
|
||||
ORDER BY report.ProessDate DESC, report.HotProessReportId DESC
|
||||
) AS hotProcess
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT TOP 1 report.HardReportNo, report.HardNessValue1, report.HardNessValue2,
|
||||
report.HardNessValue3, hardTrust.ReportDate
|
||||
FROM dbo.HJGL_Hard_TrustItem AS hardItem
|
||||
LEFT JOIN dbo.HJGL_Hard_Report AS report ON report.HardTrustItemID = hardItem.HardTrustItemID
|
||||
LEFT JOIN dbo.HJGL_Hard_Trust AS hardTrust ON hardTrust.HardTrustID = hardItem.HardTrustID
|
||||
WHERE hardItem.WeldJointId = jot.WeldJointId
|
||||
ORDER BY hardTrust.ReportDate DESC, report.SortIndex, report.HardReportId DESC
|
||||
) AS hardness
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT STUFF((
|
||||
SELECT CHAR(10) + CONCAT(ISNULL(detectionType.DetectionTypeCode, ''),
|
||||
CASE ndeItem.CheckResult WHEN '1' THEN N': Годен' WHEN '2' THEN N': Не годен' ELSE '' END,
|
||||
CASE WHEN ISNULL(ndeItem.NDEReportNo, nde.NDECode) IS NULL THEN ''
|
||||
ELSE ', ' + ISNULL(ndeItem.NDEReportNo, nde.NDECode) END,
|
||||
CASE WHEN ndeItem.ReportDate IS NULL THEN '' ELSE ', ' + CONVERT(varchar(10), ndeItem.ReportDate, 104) END)
|
||||
FROM dbo.HJGL_Batch_BatchTrustItem AS trustItem
|
||||
INNER JOIN dbo.HJGL_Batch_NDEItem AS ndeItem ON ndeItem.TrustBatchItemId = trustItem.TrustBatchItemId
|
||||
LEFT JOIN dbo.HJGL_Batch_NDE AS nde ON nde.NDEID = ndeItem.NDEID
|
||||
LEFT JOIN dbo.Base_DetectionType AS detectionType ON detectionType.DetectionTypeId = ndeItem.DetectionTypeId
|
||||
WHERE trustItem.WeldJointId = jot.WeldJointId
|
||||
ORDER BY ndeItem.ReportDate, ndeItem.NDEItemID
|
||||
FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 1, '') AS ResultText
|
||||
) AS ndt
|
||||
WHERE jot.ProjectId = @ProjectId AND " + condition;
|
||||
|
||||
DataTable table = SQLHelper.GetDataTableRunText(sql, parameters.ToArray());
|
||||
string[] headers =
|
||||
{
|
||||
"№\r\nп/п",
|
||||
"Обозначение сварного соединения по исполнительному чертежу, тип сварного соединения ГОСТ 16037",
|
||||
"Ф.И.О.\r\nсварщика,\r\nличное\r\nклеймо",
|
||||
"Марка стали (композиция марок\r\nсталей), НД, №№ сертификатов",
|
||||
"Наружный диаметр элемента трубопровода и толщина стенки Dн×S, мм",
|
||||
"Дата сварки, температурные условия в рабочей зоне,°С",
|
||||
"Способ\r\nсварки",
|
||||
"Сварочные материалы (марка электрода, сварочной проволоки, защитный газ, флюс), НД, №№ сертификатов",
|
||||
"Режим\r\nпредварительного и\r\nсопутствующего\r\nподогрева",
|
||||
"Отметка о контроле\r\nкорня\r\nшва",
|
||||
"Стилоскопирование металла шва,\r\n№ заключения, дата",
|
||||
"Ф.И.О. оператора- термиста, личное клеймо",
|
||||
"№ диаграммы по журналу термообработки сварных соединений",
|
||||
"Твердость металла шва, № заключения, дата",
|
||||
"Отметка о годности сварного соединения по внешнему осмотру и измерениям",
|
||||
"Способ и результаты неразрушающего контроля сварного соединения, № заключения, дата",
|
||||
"Результаты измерения ферритной фазы в металле шва, № заключения, дата"
|
||||
};
|
||||
for (int i = 0; i < headers.Length; i++)
|
||||
{
|
||||
table.Columns[i].ColumnName = headers[i];
|
||||
}
|
||||
return table;
|
||||
return Funs.LINQToDataTable(rows);
|
||||
}
|
||||
|
||||
public static Dictionary<string, object> GetFileOutValueById(string WeldingDailyId)
|
||||
|
||||
@@ -170,12 +170,12 @@ ORDER BY MenuId;
|
||||
|
||||
SELECT N'待删除表' AS ItemType, d.TableName, d.CleanupGroup,
|
||||
ObjectType = o.type_desc,
|
||||
RowCount = ISNULL(p.RowCount, 0)
|
||||
TableRows = ISNULL(p.TableRows, 0)
|
||||
FROM @DropTables AS d
|
||||
LEFT JOIN sys.objects AS o ON o.object_id = OBJECT_ID(N'dbo.' + d.TableName)
|
||||
OUTER APPLY
|
||||
(
|
||||
SELECT SUM(sp.rows) AS RowCount
|
||||
SELECT SUM(sp.rows) AS TableRows
|
||||
FROM sys.partitions AS sp
|
||||
WHERE sp.object_id = o.object_id
|
||||
AND sp.index_id IN (0, 1)
|
||||
|
||||
|
Before Width: | Height: | Size: 105 KiB |
|
Before Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 105 KiB |
|
Before Width: | Height: | Size: 105 KiB |
|
Before Width: | Height: | Size: 193 KiB |
|
Before Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 193 KiB |
|
Before Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 136 KiB |
|
Before Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 141 KiB |
|
Before Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 183 KiB |
|
Before Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 194 KiB |
|
Before Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 129 KiB |
|
Before Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 136 KiB |
|
Before Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 187 KiB |
|
Before Width: | Height: | Size: 194 KiB |
|
Before Width: | Height: | Size: 106 KiB |
|
Before Width: | Height: | Size: 192 KiB |
|
Before Width: | Height: | Size: 191 KiB |
|
Before Width: | Height: | Size: 94 KiB |
|
Before Width: | Height: | Size: 195 KiB |
|
Before Width: | Height: | Size: 190 KiB |
|
Before Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 189 KiB |
|
Before Width: | Height: | Size: 181 KiB |
|
Before Width: | Height: | Size: 93 KiB |
|
Before Width: | Height: | Size: 185 KiB |
|
Before Width: | Height: | Size: 197 KiB |
|
Before Width: | Height: | Size: 85 KiB |
|
Before Width: | Height: | Size: 188 KiB |
|
Before Width: | Height: | Size: 197 KiB |
|
Before Width: | Height: | Size: 100 KiB |
|
Before Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 80 KiB |
|
Before Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 85 KiB |
|
Before Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 181 KiB |
|
Before Width: | Height: | Size: 168 KiB |
|
Before Width: | Height: | Size: 104 KiB |
|
Before Width: | Height: | Size: 194 KiB |
|
Before Width: | Height: | Size: 194 KiB |
|
Before Width: | Height: | Size: 102 KiB |
|
Before Width: | Height: | Size: 180 KiB |
|
Before Width: | Height: | Size: 176 KiB |
|
Before Width: | Height: | Size: 93 KiB |
|
Before Width: | Height: | Size: 191 KiB |
|
Before Width: | Height: | Size: 190 KiB |
|
Before Width: | Height: | Size: 91 KiB |
|
Before Width: | Height: | Size: 168 KiB |
|
Before Width: | Height: | Size: 170 KiB |
|
Before Width: | Height: | Size: 106 KiB |
|
Before Width: | Height: | Size: 195 KiB |
|
Before Width: | Height: | Size: 183 KiB |
|
Before Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 79 KiB |
|
Before Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 85 KiB |
|
Before Width: | Height: | Size: 80 KiB |
|
Before Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 181 KiB |
|
Before Width: | Height: | Size: 183 KiB |
|
Before Width: | Height: | Size: 185 KiB |
|
Before Width: | Height: | Size: 196 KiB |
|
Before Width: | Height: | Size: 188 KiB |
|
Before Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 188 KiB |
|
Before Width: | Height: | Size: 190 KiB |
|
Before Width: | Height: | Size: 194 KiB |
|
Before Width: | Height: | Size: 182 KiB |
|
Before Width: | Height: | Size: 169 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 184 KiB |
|
Before Width: | Height: | Size: 187 KiB |
|
Before Width: | Height: | Size: 188 KiB |
|
Before Width: | Height: | Size: 194 KiB |
|
Before Width: | Height: | Size: 168 KiB |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 185 KiB |
|
Before Width: | Height: | Size: 182 KiB |
|
Before Width: | Height: | Size: 192 KiB |
|
Before Width: | Height: | Size: 185 KiB |
|
Before Width: | Height: | Size: 158 KiB |
|
Before Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 194 KiB |
|
Before Width: | Height: | Size: 194 KiB |
|
Before Width: | Height: | Size: 188 KiB |