786 lines
36 KiB
C#
786 lines
36 KiB
C#
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
|
||
}
|
||
} |