Basf_TCC11/HJGL/FineUIPro.Web/WeldingProcess/WeldingManage/PreWeldReportAudit.aspx.cs

786 lines
36 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Linq;
using BLL;
using System.Data.SqlClient;
using System.Data;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace FineUIPro.Web.WeldingManage
{
public partial class PreWeldReportAudit :PageBase
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
InitTreeMenu();
txtWeldingDate.Text = DateTime.Now.Date.ToString();
}
}
#region --
/// <summary>
/// 加载树
/// </summary>
private void InitTreeMenu()
{
this.tvControlItem.Nodes.Clear();
var totalInstallation = from x in Funs.DB.Project_Installation select x;
var totalWorkArea = from x in Funs.DB.Project_WorkArea select x;
var totalUnit = from x in Funs.DB.Project_Unit select x;
////装置
var pInstallation = (from x in totalInstallation where x.ProjectId == this.CurrUser.LoginProjectId select x).ToList();
////区域
var pWorkArea = (from x in totalWorkArea where x.ProjectId == this.CurrUser.LoginProjectId select x).ToList();
////单位
var pUnits = (from x in totalUnit where x.ProjectId == this.CurrUser.LoginProjectId select x).ToList();
this.BindNodes(null, pInstallation, pWorkArea, pUnits);
}
#endregion
#region
/// <summary>
/// 绑定树节点
/// </summary>
/// <param name="node"></param>
private void BindNodes(TreeNode node, List<Model.Project_Installation> pInstallation, List<Model.Project_WorkArea> pWorkArea, List<Model.Project_Unit> pUnits)
{
if (node == null)
{
List<Model.Project_Installation> installations = pInstallation;
var pUnit = pUnits.FirstOrDefault(x => x.UnitId == this.CurrUser.UnitId);
if (pUnit != null && !pUnit.UnitType.Contains(Const.UnitType_2) && !pUnit.UnitType.Contains(Const.UnitType_1))
{
installations = (from x in pInstallation
join y in pWorkArea on x.InstallationId equals y.InstallationId
where y.UnitId == this.CurrUser.UnitId
orderby x.InstallationId
select x).Distinct().ToList();
}
foreach (var q in installations)
{
TreeNode newNode = new TreeNode();
newNode.NodeID = q.InstallationId;
newNode.Text = q.InstallationName;
newNode.ToolTip = Resources.Lan.InstallationName;
newNode.Expanded = true;
this.tvControlItem.Nodes.Add(newNode);
this.BindNodes(newNode, pInstallation, pWorkArea, pUnits);
}
}
else if (node.ToolTip == Resources.Lan.InstallationName)
{
List<Model.Project_Unit> units = null;
var pUnitDepth = pUnits.FirstOrDefault(x => x.UnitId == this.CurrUser.UnitId);
if (pUnitDepth == null || pUnitDepth.UnitType.Contains(Const.UnitType_2) || pUnitDepth.UnitType.Contains(Const.UnitType_1))
{
units = (from x in pUnits
join y in pWorkArea on x.UnitId equals y.UnitId
where y.InstallationId == node.NodeID && x.UnitType.Contains(Const.UnitType_5)
select x).ToList();
}
else
{
units = (from x in pUnits
join y in pWorkArea on x.UnitId equals y.UnitId
where y.InstallationId == node.NodeID && x.UnitType.Contains(Const.UnitType_5) && x.UnitId == this.CurrUser.UnitId
select x).ToList();
}
units = units.OrderBy(x => x.InTime).Distinct().ToList();
foreach (var q in units)
{
var unit = BLL.Base_UnitService.GetUnit(q.UnitId);
if (unit != null)
{
TreeNode newNode = new TreeNode();
newNode.Text = unit.UnitName;
newNode.NodeID = q.UnitId + "|" + node.NodeID;
newNode.ToolTip = Resources.Lan.CompanyName;
newNode.EnableClickEvent = true;
node.Nodes.Add(newNode);
this.BindNodes(newNode, pInstallation, pWorkArea, pUnits);
}
}
}
}
#endregion
#region TreeView
/// <summary>
/// 点击TreeView
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e)
{
this.BindGrid();
}
#endregion
#region
/// <summary>
/// 数据绑定
/// </summary>
private void BindGrid()
{
string strSql = @"SELECT preWeld.PreWeldingDailyId,
preWeld.ProjectId,
preWeld.WeldJointId,
preWeld.WeldingDate,
jot.WeldJointCode,
line.PipelineCode,
jot.JointArea,
preWeld.JointAttribute,
jot.Size,
jot.Dia,
jot.Thickness,
preWeld.AttachUrl,
cellWelder.WelderCode AS CellWelderCode,
backingWelder.WelderCode AS BackingWelderCode,
method.WeldingMethodCode AS WeldMethod,
preWeld.AuditDate,
users.UserName AS AuditManName
FROM dbo.Pipeline_PreWeldingDaily AS preWeld
LEFT JOIN dbo.Pipeline_WeldJoint AS jot ON jot.WeldJointId = preWeld.WeldJointId
LEFT JOIN dbo.Pipeline_Pipeline line ON line.PipelineId = jot.PipelineId
LEFT JOIN dbo.Welder_Welder AS cellWelder ON cellWelder.WelderId=preWeld.CoverWelderId
LEFT JOIN dbo.Welder_Welder AS backingWelder ON backingWelder.WelderId=preWeld.BackingWelderId
LEFT JOIN dbo.Base_WeldingMethod method ON method.WeldingMethodId=jot.WeldingMethodId
LEFT JOIN dbo.Sys_User AS users ON users.UserId = preWeld.AuditMan
WHERE preWeld.ProjectId=@ProjectId";
List<SqlParameter> listStr = new List<SqlParameter>();
listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
if (!string.IsNullOrEmpty(tvControlItem.SelectedNodeID))
{
strSql += " AND preWeld.UnitId =@UnitId";
listStr.Add(new SqlParameter("@UnitId", tvControlItem.SelectedNode.NodeID.Split('|')[0]));
}
if (!string.IsNullOrEmpty(txtWeldingDate.Text.Trim()))
{
strSql += " AND CONVERT(VARCHAR(100), preWeld.WeldingDate,23) =@WeldingDate";
listStr.Add(new SqlParameter("@WeldingDate", Convert.ToDateTime(txtWeldingDate.Text.Trim())));
}
if (IsAudit.SelectedValue == "0")
{
strSql += " AND preWeld.AuditDate IS NULL ";
}
else
{
strSql += " AND preWeld.AuditDate IS NOT NULL ";
}
SqlParameter[] parameter = listStr.ToArray();
DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
// 2.获取当前分页数据
Grid1.RecordCount = tb.Rows.Count;
//tb = GetFilteredTable(Grid1.FilteredData, tb);
var table = this.GetPagedDataTable(Grid1, tb);
Grid1.DataSource = table;
Grid1.DataBind();
for (int i = 0; i < this.Grid1.Rows.Count; i++)
{
string id = Grid1.DataKeys[i][0].ToString();
Model.Pipeline_PreWeldingDaily item = BLL.PreWeldReportService.GetPreWeldingDaily(id);
if (item != null)
{
if (item.AuditDate.HasValue) //未审核
{
this.Grid1.Rows[i].RowSelectable = false;
}
}
}
}
#endregion
protected void IsAudit_SelectedIndexChanged(object sender, EventArgs e)
{
BindGrid();
}
protected void WeldingDate_OnTextChanged(object sender, EventArgs e)
{
BindGrid();
}
#region
#region
/// <summary>
/// 页索引改变事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
Grid1.PageIndex = e.NewPageIndex;
BindGrid();
}
#endregion
#region
/// <summary>
/// 排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_Sort(object sender, GridSortEventArgs e)
{
Grid1.SortDirection = e.SortDirection;
Grid1.SortField = e.SortField;
BindGrid();
}
#endregion
#region
/// <summary>
/// 分页选择下拉改变事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
BindGrid();
}
#endregion
#endregion
protected void btnDelete_Click(object sender, EventArgs e)
{
if (CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, Const.HJGL_PreWeldReportMenuId, Const.BtnDelete))
{
if (Grid1.SelectedRowIndexArray.Length == 0)
{
Alert.ShowInTop(Resources.Lan.SelectLeastOneRecord, MessageBoxIcon.Warning);
return;
}
foreach (int rowIndex in Grid1.SelectedRowIndexArray)
{
string daily = Grid1.DataKeys[rowIndex][0].ToString();
BLL.PreWeldReportService.DeletePreWeldingDaily(daily);
BLL.Sys_LogService.AddLog(BLL.Const.System_3, this.CurrUser.LoginProjectId, this.CurrUser.UserId, Const.HJGL_PreWeldReportMenuId, Const.BtnDelete, daily);
ShowNotify(Resources.Lan.DeletedSuccessfully, MessageBoxIcon.Success);
}
this.BindGrid();
}
else
{
ShowNotify(Resources.Lan.NoPrivilegePrompt, MessageBoxIcon.Warning);
}
}
/// <summary>
/// 预提交日报审核并提交
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnAudit_Click(object sender, EventArgs e)
{
if (CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, Const.HJGL_PreWeldReportMenuId, Const.BtnDelete))
{
if (!string.IsNullOrEmpty(txtWeldingDate.Text))
{
if (Grid1.SelectedRowIndexArray.Length == 0)
{
ShowNotify("请勾选要审核的记录!", MessageBoxIcon.Warning);
return;
}
string perfix = string.Format("{0:yyyyMMdd}", Convert.ToDateTime(txtWeldingDate.Text)) + "-";
string weldingDailyCode = BLL.SQLHelper.RunProcNewId("SpGetThreeNumber", "dbo.Pipeline_WeldingDaily", "WeldingDailyCode", this.CurrUser.LoginProjectId, perfix);
Model.Pipeline_WeldingDaily newWeldingDaily = new Model.Pipeline_WeldingDaily();
newWeldingDaily.WeldingDailyCode = weldingDailyCode;
newWeldingDaily.ProjectId = CurrUser.LoginProjectId;
if (tvControlItem.SelectedNodeID != BLL.Const._Null)
{
newWeldingDaily.InstallationId = tvControlItem.SelectedNode.ParentNode.NodeID;
newWeldingDaily.UnitId = tvControlItem.SelectedNodeID.Split('|')[0];
}
DateTime? weldDate = Funs.GetNewDateTime(this.txtWeldingDate.Text);
if (weldDate.HasValue)
{
newWeldingDaily.WeldingDate = weldDate.Value;
}
else
{
newWeldingDaily.WeldingDate = Convert.ToDateTime(txtWeldingDate.Text);
}
newWeldingDaily.Tabler = this.CurrUser.UserId;
newWeldingDaily.TableDate = Funs.GetNewDateTime(this.txtWeldingDate.Text);
newWeldingDaily.Remark = "移动端提交";
string errlog = string.Empty;
string eventArg = string.Empty;
List<Model.Pipeline_WeldJoint> weldJointList = new List<Model.Pipeline_WeldJoint>();
int[] selections = Grid1.SelectedRowIndexArray;
foreach (int rowIndex in selections)
{
string weldJointId = Grid1.DataKeys[rowIndex][1].ToString();
string preWeldingDailyId = Grid1.DataKeys[rowIndex][0].ToString();
bool canSave = false;
var jot = BLL.Pipeline_WeldJointService.GetWeldJointByWeldJointId(weldJointId);
var joty = BLL.Base_WeldTypeService.GetWeldTypeByWeldTypeId(jot.WeldTypeId);
weldJointList.Add(jot);
var preWeldingDaily = Funs.DB.Pipeline_PreWeldingDaily.FirstOrDefault(x => x.PreWeldingDailyId == preWeldingDailyId);
string weldTypeGroup = joty.Flag;
string weldTypeCode = joty.WeldTypeCode;
string floorWelder = preWeldingDaily.BackingWelderId;
string cellWelder = preWeldingDaily.CoverWelderId;
decimal? dia = jot.Dia;
decimal? sch = jot.Thickness;
string wmeCode = string.Empty;
var wm = BLL.Base_WeldingMethodService.GetWeldingMethodByWeldingMethodId(jot.WeldingMethodId);
if (wm != null)
{
wmeCode = wm.WeldingMethodCode;
}
string[] wmeCodes = wmeCode.Split('+');
string location = "";
if (!string.IsNullOrEmpty(jot.WeldingLocationId))
{
var loc = Base_WeldingLocationServie.GetWeldingLocationById(jot.WeldingLocationId);
location = loc.WeldingLocationCode;
}
string ste = jot.Material1Id;
var projectWelder = BLL.Welder_ProjectWelderService.GetProjectWelderByProjectIdAndWelderId(this.CurrUser.LoginProjectId, floorWelder);
var projectUnit = BLL.Project_UnitService.GetProject_UnitByProjectIdUnitId(this.CurrUser.LoginProjectId, projectWelder.UnitId);
if (projectUnit != null && projectUnit.WelderQueIsUse == true)
{
List<Model.Welder_WelderQualify> floorWelderQualifys = (from x in Funs.DB.Welder_WelderQualify
where x.WelderId == floorWelder && x.WeldingMethodId != null
&& x.WeldingLocationId != null && x.MaterialType != null
&& x.WeldType != null
&& x.ThicknessMax != null && x.SizesMin != null
select x).ToList();
List<Model.Welder_WelderQualify> cellWelderQualifys = (from x in Funs.DB.Welder_WelderQualify
where x.WelderId == cellWelder && x.WeldingMethodId != null
&& x.WeldingLocationId != null && x.MaterialType != null
&& x.WeldType != null
&& x.ThicknessMax != null && x.SizesMin != null
select x).ToList();
// 打底和盖面同一焊工
if (floorWelder == cellWelder)
{
if (floorWelderQualifys != null && floorWelderQualifys.Count() > 0)
{
if (wmeCodes.Count() <= 1) // 一种焊接方法
{
canSave = IsOK(floorWelderQualifys, wmeCodes[0], location, weldTypeGroup, ste, dia, sch);
}
else // 大于一种焊接方法,如氩电联焊
{
canSave = TwoWmeIsOK(floorWelderQualifys, cellWelderQualifys, wmeCodes[0], wmeCodes[1], location, weldTypeGroup, ste, dia, sch);
}
}
}
// 打底和盖面焊工不同
else
{
bool isok1 = false;
bool isok2 = false;
if (wmeCodes.Count() <= 1) // 一种焊接方法
{
if (floorWelderQualifys != null && floorWelderQualifys.Count() > 0)
{
isok1 = IsOK(floorWelderQualifys, wmeCodes[0], location, weldTypeGroup, ste, dia, sch);
}
if (cellWelderQualifys != null && cellWelderQualifys.Count() > 0)
{
isok2 = IsOK(cellWelderQualifys, wmeCodes[0], location, weldTypeGroup, ste, dia, sch);
}
if (isok1 && isok2)
{
canSave = true;
}
}
else
{
canSave = TwoWmeIsOK(floorWelderQualifys, cellWelderQualifys, wmeCodes[0], wmeCodes[1], location, weldTypeGroup, ste, dia, sch);
}
}
}
else
{
canSave = true;
}
if (canSave == false)
{
eventArg = eventArg + jot.WeldJointCode + ",";
}
}
// 生成管线的随机数
var romPipe = (from x in weldJointList select x.PipelineId).Distinct();
if (romPipe.Count() > 0)
{
foreach (string pipeId in romPipe)
{
var pipe = Funs.DB.View_Pipeline_Random.FirstOrDefault(x => x.PipelineId == pipeId);
int rate = Convert.ToInt32(pipe.DetectionRateValue);
// RT 随机数
int rtTotalJotNum = Convert.ToInt32(pipe.RTTotalJointCount);
int rtWeldingJotNum = Convert.ToInt32(pipe.RTWeldingCount);
int rtPointNum = Convert.ToInt32(pipe.RtPointCount);
int rtMinValue = rtWeldingJotNum + 1;
int rtMaxValue = rtTotalJotNum;
int rtPointTotalNum = Convert.ToInt32(Math.Ceiling((double)(rtTotalJotNum * rate) / (double)100));
int rtnum = rtPointTotalNum - rtPointNum;
if (rtnum > 0)
{
int[] r = Funs.GetRandomNum(rtnum, rtMinValue, rtMaxValue);
var q = from x in r orderby x select x;
string random = string.Empty;
foreach (int i in q)
{
if (i <= rtMaxValue)
{
random = random + i.ToString() + ",";
}
}
if (random.Length > 0)
{
string randomNum = random.Substring(0, random.Length - 1);
Pipeline_PipelineService.UpdatePipelineRTRandom(pipeId, randomNum);
}
}
// PT 随机数
int ptTotalJotNum = Convert.ToInt32(pipe.PTTotalJointCount);
int ptWeldingJotNum = Convert.ToInt32(pipe.PTWeldingCount);
int ptPointNum = Convert.ToInt32(pipe.PtPointCount);
int ptMinValue = ptWeldingJotNum + 1;
int ptMaxValue = ptTotalJotNum;
int ptPointTotalNum = Convert.ToInt32(Math.Ceiling((double)(ptTotalJotNum * rate) / (double)100));
int ptnum = ptPointTotalNum - ptPointNum;
if (ptnum > 0)
{
int[] r = Funs.GetRandomNum(ptnum, ptMinValue, ptMaxValue);
var q = from x in r orderby x select x;
string random = string.Empty;
foreach (int i in q)
{
if (i <= ptMaxValue)
{
random = random + i.ToString() + ",";
}
}
if (random.Length > 0)
{
string randomNum = random.Substring(0, random.Length - 1);
Pipeline_PipelineService.UpdatePipelinePTRandom(pipeId, randomNum);
}
}
// 固定口(先按40%计算) 随机数
int gdTotalJotNum = Convert.ToInt32(pipe.GDTotalJointCount);
int gdWeldingJotNum = Convert.ToInt32(pipe.GDWeldingCount);
int gdPointNum = Convert.ToInt32(pipe.GDPointCount);
int gdMinValue = gdWeldingJotNum + 1;
int gdMaxValue = gdTotalJotNum;
int gdPointTotalNum = Convert.ToInt32(Math.Ceiling((double)(gdTotalJotNum * 40) / (double)100));
int gdnum = gdPointTotalNum - gdPointNum;
if (gdnum > 0)
{
int[] r = Funs.GetRandomNum(gdnum, gdMinValue, gdMaxValue);
var q = from x in r orderby x select x;
string random = string.Empty;
foreach (int i in q)
{
if (i <= gdMaxValue)
{
random = random + i.ToString() + ",";
}
}
if (random.Length > 0)
{
string randomNum = random.Substring(0, random.Length - 1);
Pipeline_PipelineService.UpdatePipelineGDRandom(pipeId, randomNum);
}
}
}
}
if (eventArg == string.Empty) //焊工焊接的所有焊口资质都符合要求)
{
// 增加日报主表
string weldingDailyId = SQLHelper.GetNewID(typeof(Model.Pipeline_WeldingDaily));
newWeldingDaily.WeldingDailyId = weldingDailyId;
BLL.Pipeline_WeldingDailyService.AddPipeline_WeldingDaily(newWeldingDaily);
foreach (int rowIndex in selections)
{
string weldJointId = Grid1.DataKeys[rowIndex][1].ToString();
string preWeldingDailyId = Grid1.DataKeys[rowIndex][0].ToString();
var updateJoint = BLL.Pipeline_WeldJointService.GetWeldJointByWeldJointId(weldJointId);
var joty = BLL.Base_WeldTypeService.GetWeldTypeByWeldTypeId(updateJoint.WeldTypeId);
var pipeline = BLL.Pipeline_PipelineService.GetPipelineByPipelineId(updateJoint.PipelineId);
var preWeldingDaily = Funs.DB.Pipeline_PreWeldingDaily.FirstOrDefault(x => x.PreWeldingDailyId == preWeldingDailyId);
string weldTypeCode = joty.WeldTypeCode;
updateJoint.WeldingDailyId = weldingDailyId;
updateJoint.WeldingDailyCode = weldingDailyCode;
updateJoint.CoverWelderId = preWeldingDaily.CoverWelderId;
updateJoint.BackingWelderId = preWeldingDaily.BackingWelderId;
updateJoint.DoneDin = updateJoint.Size;
updateJoint.WeldingDate = preWeldingDaily.WeldingDate;
// 更新焊口信息
BLL.Pipeline_WeldJointService.UpdateWeldJoint(updateJoint);
// 更新预提交信息
preWeldingDaily.AuditDate = DateTime.Now;
preWeldingDaily.AuditMan = CurrUser.UserId;
Funs.DB.SubmitChanges();
//更新焊口号 修改固定焊口号后 +G
//BLL.Pipeline_WeldJointService.UpdateWeldJointAddG(newWeldJoint.WeldJointId, newWeldJoint.JointAttribute, Const.BtnAdd);
//BLL.Batch_PointBatchItemService.InsertPointBatch(this.CurrUser.LoginProjectId, tvControlItem.SelectedNodeID.Split('|')[0], tvControlItem.SelectedNode.ParentNode.NodeID.Split('|')[0], preWeldingDaily.CoverWelderId, preWeldingDaily.WeldJointId, preWeldingDaily.WeldingDate);
}
ShowNotify("保存成功!", MessageBoxIcon.Success);
PageContext.RegisterStartupScript(ActiveWindow.GetHideRefreshReference());
}
else
{
Alert.ShowInTop("焊工无资质焊接的焊口:" + eventArg, "提交结果", MessageBoxIcon.Warning);
}
}
else
{
ShowNotify("请选择焊接日期!", MessageBoxIcon.Warning);
}
}
else
{
ShowNotify(Resources.Lan.NoPrivilegePrompt, MessageBoxIcon.Warning);
}
}
#region
private bool IsOK(List<Model.Welder_WelderQualify> welderQualifys, string wmeCode, string location, string weldTypeGroup, string ste, decimal? dia, decimal? sch)
{
bool isok = false;
foreach (var welderQualify in welderQualifys)
{
int okNum = 0;
if (!string.IsNullOrEmpty(wmeCode)) //焊接方法
{
if (wmeCode.Contains(welderQualify.WeldingMethodId))
{
okNum++;
}
}
else
{
okNum++;
}
if (welderQualify.WeldingLocationId == "ALL") //焊接位置
{
okNum++;
}
else
{
if (!string.IsNullOrEmpty(location))
{
if (welderQualify.WeldingLocationId.Contains(location))
{
okNum++;
}
}
else
{
okNum++;
}
}
if (!string.IsNullOrEmpty(weldTypeGroup))
{
if (welderQualify.WeldType.Contains(weldTypeGroup))
{
okNum++;
}
}
else
{
okNum++;
}
var steel = BLL.Base_MaterialService.GetMaterialByMaterialId(ste);
if (steel != null) //钢材类型
{
if (welderQualify.MaterialType.Contains(steel.MaterialType ?? ""))
{
okNum++;
}
}
else
{
okNum++;
}
if (weldTypeGroup != "2") // 承插焊
{
if (welderQualify.SizesMin == 0) // 0表示不限
{
okNum++;
}
else //最小寸径
{
if (dia != null)
{
if (dia >= welderQualify.SizesMin)
{
okNum++;
}
}
else
{
okNum++;
}
}
if (welderQualify.ThicknessMax == 0) // 0表示不限
{
okNum++;
}
else
{
if (sch != null) //最大壁厚
{
if (sch <= welderQualify.ThicknessMax)
{
okNum++;
}
}
else
{
okNum++;
}
}
}
else // 当为角焊缝时,管径和壁厚不限制
{
okNum++;
okNum++;
}
if (okNum == 6) //全部条件符合
{
isok = true;
break;
}
}
return isok;
}
/// <summary>
/// 两种焊接方法的资质判断
/// </summary>
/// <param name="floorWelderQualifys"></param>
/// <param name="cellWelderQualifys"></param>
/// <param name="wmeCode1"></param>
/// <param name="wmeCode2"></param>
/// <param name="location"></param>
/// <param name="ste"></param>
/// <param name="dia"></param>
/// <param name="sch"></param>
/// <returns></returns>
private bool TwoWmeIsOK(List<Model.Welder_WelderQualify> floorWelderQualifys, List<Model.Welder_WelderQualify> cellWelderQualifys, string wmeCode1, string wmeCode2, string location, string weldTypeGroup, string ste, decimal? dia, decimal? sch)
{
bool isok = false;
decimal? fThicknessMax = 0;
decimal? cThicknessMax = 0;
var steel = BLL.Base_MaterialService.GetMaterialByMaterialId(ste);
var floorQ = from x in floorWelderQualifys
where wmeCode1.Contains(x.WeldingMethodId)
&& (x.WeldingLocationId == "ALL" || (location == null || location == "" || x.WeldingLocationId.Contains(location)))
&& (steel == null || x.MaterialType.Contains(steel.MaterialType ?? ""))
&& (weldTypeGroup == null || x.WeldType.Contains(weldTypeGroup))
// && (dia == null || x.SizesMin<=dia)
select x;
var cellQ = from x in cellWelderQualifys
where wmeCode2.Contains(x.WeldingMethodId)
&& (x.WeldingLocationId == "ALL" || (location == null || location == "" || x.WeldingLocationId.Contains(location)))
&& (steel == null || x.MaterialType.Contains(steel.MaterialType ?? ""))
&& (weldTypeGroup == null || x.WeldType.Contains(weldTypeGroup))
// && (dia == null || x.SizesMin <= dia)
select x;
if (floorQ.Count() > 0 && cellQ.Count() > 0)
{
if (weldTypeGroup != "2") // 当为角焊缝时,管径和壁厚不限制
{
var floorDiaQ = floorQ.Where(x => x.SizesMin <= dia);
var cellDiaQ = cellQ.Where(x => x.SizesMin <= dia);
if (floorDiaQ.Count() > 0 && cellDiaQ.Count() > 0)
{
var fThick = floorDiaQ.Where(x => x.ThicknessMax == 0);
var cThick = cellDiaQ.Where(x => x.ThicknessMax == 0);
// 只要有一个不限为0就通过
if (fThick.Count() > 0 || cThick.Count() > 0)
{
isok = true;
}
else
{
fThicknessMax = floorQ.Max(x => x.ThicknessMax);
cThicknessMax = cellQ.Max(x => x.ThicknessMax);
if ((fThicknessMax + cThicknessMax) >= sch)
{
isok = true;
}
}
}
}
else
{
isok = true;
}
}
return isok;
}
#endregion
}
}