using BLL; using Model; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web.UI.WebControls; namespace FineUIPro.Web.HJGL.WeldingManage { public partial class SelectTaskWeldJoint : PageBase { #region 定义项 /// /// 单位主键 /// //public string UnitId //{ // get // { // return (string)ViewState["UnitId"]; // } // set // { // ViewState["UnitId"] = value; // } //} /// /// 单位工程主键 /// public string UnitWorkId { get { return (string)ViewState["UnitWorkId"]; } set { ViewState["UnitWorkId"] = value; } } public string SerialNumber { get { return (string)ViewState["SerialNumber"]; } set { ViewState["SerialNumber"] = value; } } // 任务日期 public string TaskDate { get { return (string)ViewState["TaskDate"]; } set { ViewState["TaskDate"] = value; } } /// /// 日报主键 /// public string WeldingDailyId { get { return (string)ViewState["WeldingDailyId"]; } set { ViewState["WeldingDailyId"] = value; } } /// /// 被选择项列表 /// public List SelectedList { get { return (List)ViewState["SelectedList"]; } set { ViewState["SelectedList"] = value; } } public List Tree_hJGL_Pipelines; public int pageSize = PipelineService.pageSize; #endregion #region 加载页面 /// /// 加载页面 /// /// /// protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { HJGL_MaterialService.materialStockItems_FIELD = new List(); HJGL_MaterialService.materialStockItems_SHOP = new List(); Tree_hJGL_Pipelines = new List(); this.txtTaskDate.Text = string.Format("{0:yyyy-MM-dd}", DateTime.Now.AddDays(1)); BLL.Base_WeldingLocationServie.InitWeldingLocationDropDownList(drpWeldingLocation, true); ///焊接属性 this.drpJointAttribute.DataTextField = "Text"; this.drpJointAttribute.DataValueField = "Value"; this.drpJointAttribute.DataSource = BLL.DropListService.HJGL_JointAttribute(); this.drpJointAttribute.DataBind(); ///机动化程度 this.drpWeldingMode.DataTextField = "Text"; this.drpWeldingMode.DataValueField = "Value"; this.drpWeldingMode.DataSource = BLL.DropListService.HJGL_WeldingMode(); this.drpWeldingMode.DataBind(); //this.SelectedList = new List(); //this.NoSelectedList = new List(); string strList = Request.Params["strList"]; List list = Funs.GetStrListByStr(strList, '|'); if (list.Count() == 4) { this.UnitWorkId = list[0]; string unitId = list[1]; TaskDate = list[2]; SerialNumber = list[3]; InitDropList(); Model.WBS_UnitWork UnitWork = BLL.UnitWorkService.getUnitWorkByUnitWorkId(this.UnitWorkId); BLL.UnitService.InitUnitDropDownListByUnitIds(this.drpUnit, UnitWork.UnitId, false);//单位 this.drpUnit.SelectedValue = unitId; this.txtTaskCode.Text = BLL.WeldTaskService.GetTaskCodeByDate(this.CurrUser.LoginProjectId, this.txtTaskDate.Text, list[0], drpUnit.SelectedValue); if (!string.IsNullOrEmpty(TaskDate)) { txtTaskDate.Text = TaskDate; txtTaskDate.Enabled = false; var task = (from x in Funs.DB.HJGL_WeldTask where x.UnitWorkId == UnitWorkId && x.UnitId == unitId && x.TaskDate.Value.Date.ToString() == Convert.ToDateTime(txtTaskDate.Text.Trim()).ToString("yyyy-MM-dd") && x.SerialNumber == SerialNumber select x).FirstOrDefault(); if (task != null) { txtTaskCode.Text = task.TaskCode; //drpUnit.SelectedValue = task.UnitId; } txtTaskCode.Enabled = false; } string projectId = string.Empty; if (UnitWorkId != null) { projectId = UnitWork.ProjectId; this.txtUnitWorkName.Text = UnitWork.UnitWorkName; } } else { this.UnitWorkId = list[0]; TaskDate = list[1]; InitDropList(); Model.WBS_UnitWork UnitWork = BLL.UnitWorkService.getUnitWorkByUnitWorkId(this.UnitWorkId); BLL.UnitService.InitUnitDropDownListByUnitIds(this.drpUnit, UnitWork.UnitId, false);//单位 this.txtTaskCode.Text = BLL.WeldTaskService.GetTaskCodeByDate(this.CurrUser.LoginProjectId, this.txtTaskDate.Text, list[0], drpUnit.SelectedValue); SerialNumber = BLL.WeldTaskService.GetSerialNumberByDate(this.CurrUser.LoginProjectId, this.txtTaskDate.Text, list[0], drpUnit.SelectedValue); if (!string.IsNullOrEmpty(TaskDate)) { txtTaskDate.Text = TaskDate; txtTaskDate.Enabled = false; var task = (from x in Funs.DB.HJGL_WeldTask where x.UnitWorkId == UnitWorkId && x.TaskDate.Value.Date.ToString() == Convert.ToDateTime(txtTaskDate.Text.Trim()).ToString("yyyy-MM-dd") && x.SerialNumber == SerialNumber select x).FirstOrDefault(); if (task != null) { txtTaskCode.Text = task.TaskCode; //drpUnit.SelectedValue = task.UnitId; } txtTaskCode.Enabled = false; } string projectId = string.Empty; if (UnitWorkId != null) { projectId = UnitWork.ProjectId; this.txtUnitWorkName.Text = UnitWork.UnitWorkName; } } this.InitTreeMenu();//加载树 } } #endregion #region 加载树 /// /// 加载树 /// private void InitTreeMenu() { this.tvControlItem.Nodes.Clear(); int a = (from x in Funs.DB.HJGL_Pipeline where x.ProjectId == this.CurrUser.LoginProjectId && x.UnitWorkId == this.UnitWorkId && x.PipeArea == PipelineService.PipeArea_SHOP && x.PipelineCode.Contains(this.txtPipelineCode.Text.Trim()) select x).Count(); int b = (from x in Funs.DB.HJGL_Pipeline where x.ProjectId == this.CurrUser.LoginProjectId && x.UnitWorkId == this.UnitWorkId && x.PipeArea == PipelineService.PipeArea_FIELD && x.PipelineCode.Contains(this.txtPipelineCode.Text.Trim()) select x).Count(); TreeNode rootNode1 = new TreeNode(); rootNode1.NodeID = BLL.PipelineService.PipeArea_SHOP; rootNode1.Text = "工厂预制"; rootNode1.CommandName = 1 + "|" + Funs.GetEndPageNumber(a, pageSize); //页码|总页 rootNode1.EnableClickEvent = true; rootNode1.EnableExpandEvent = true; this.tvControlItem.Nodes.Add(rootNode1); if (a > 0) { TreeNode newNode = new TreeNode(); newNode.Text = "加载管线..."; newNode.NodeID = "加载管线..."; rootNode1.Nodes.Add(newNode); } TreeNode rootNode2 = new TreeNode(); rootNode2.NodeID = BLL.PipelineService.PipeArea_FIELD; rootNode2.Text = "现场施工"; rootNode2.CommandName = 1 + "|" + Funs.GetEndPageNumber(b, pageSize); rootNode2.EnableClickEvent = true; rootNode2.EnableExpandEvent = true; this.tvControlItem.Nodes.Add(rootNode2); if (b > 0) { TreeNode newNode = new TreeNode(); newNode.Text = "加载管线..."; newNode.NodeID = "加载管线..."; rootNode2.Nodes.Add(newNode); } } void AddTreeNode(string PipeArea, TreeNode node) { var pipeline = (from x in Funs.DB.HJGL_Pipeline where x.ProjectId == this.CurrUser.LoginProjectId && x.UnitWorkId == this.UnitWorkId && x.PipeArea == PipeArea && x.PipelineCode.Contains(this.txtPipelineCode.Text.Trim()) orderby x.PipelineCode select x).ToList(); if (!string.IsNullOrEmpty(drpFlowingSection.SelectedValue) && drpFlowingSection.SelectedValue != Const._Null) { pipeline = pipeline.Where(x => x.FlowingSection == drpFlowingSection.SelectedValue).ToList(); } var joints = (from x in Funs.DB.HJGL_WeldJoint where x.ProjectId == this.CurrUser.LoginProjectId select x).ToList(); int pageindex = int.Parse(node.CommandName.Split('|')[0]); int pageCount = int.Parse(node.CommandName.Split('|')[1]); if (pageindex <= pageCount) { pipeline = pipeline.Skip(pageSize * (pageindex - 1)).Take(pageSize).ToList(); ; foreach (var item in pipeline) { TreeNode newNode = new TreeNode(); int totalJointNum = joints.Count(x => x.PipelineId == item.PipelineId); int weldJointNum = joints.Count(x => x.PipelineId == item.PipelineId && x.WeldingDailyId != null); //bool istrue = BLL.HJGL_MaterialService.isInStockByPipeline(item.PipelineId, this.CurrUser.LoginProjectId); //if (istrue) //{ // newNode.CssClass = "tn-color-green"; //} newNode.Text = item.PipelineCode + "(" + (totalJointNum - weldJointNum).ToString() + ")"; newNode.NodeID = item.PipelineId; newNode.ToolTip = item.PipelineCode; newNode.EnableClickEvent = true; node.Nodes.Add(newNode); } if (pageindex < pageCount) { TreeNode newNode = new TreeNode(); newNode.Text = "加载"; newNode.NodeID = SQLHelper.GetNewID(); newNode.Icon = Icon.ArrowDown; newNode.CommandName = PipeArea; newNode.EnableClickEvent = true; node.Nodes.Add(newNode); } } } protected void tvControlItem_TreeNodeExpanded(object sender, TreeNodeEventArgs e) { if (e.Node.Nodes[0].NodeID == "加载管线...") { e.Node.Nodes.Clear(); if (e.Node.Text == "工厂预制") { AddTreeNode(BLL.PipelineService.PipeArea_SHOP, e.Node); } else if (e.Node.Text == "现场施工") { AddTreeNode(BLL.PipelineService.PipeArea_FIELD, e.Node); } } } #endregion #region 点击TreeView /// /// 点击TreeView /// /// /// protected void tvControlItem_NodeCommand(object sender, TreeCommandEventArgs e) { if (e.Node.Text == "加载") { string CommandName = e.Node.ParentNode.CommandName; e.Node.ParentNode.CommandName = (int.Parse(CommandName.Split('|')[0]) + 1) + "|" + int.Parse(CommandName.Split('|')[1]); TreeNode treeNode = e.Node.ParentNode; treeNode.Nodes.Remove(e.Node); if (e.Node.CommandName == "1") { AddTreeNode(BLL.PipelineService.PipeArea_SHOP, e.Node.ParentNode); } else if (e.Node.CommandName == "2") { AddTreeNode(BLL.PipelineService.PipeArea_FIELD, e.Node.ParentNode); } } else { this.BindGrid(); } } #endregion #region 数据绑定 /// /// 数据绑定 /// private void BindGrid() { string pipelineId = this.tvControlItem.SelectedNodeID; var toDoMatterList = (from x in Funs.DB.View_HJGL_NoWeldJointFind where x.PipelineId == pipelineId && x.WeldingDailyId == null && x.JointAttribute == drpJointAttribute.SelectedValue && (string.IsNullOrEmpty(drpWeldTypeCode.SelectedValue) || x.WeldTypeCode.Contains(drpWeldTypeCode.SelectedValue)) && x.WeldTaskId == null select x).ToList(); //去除任务表已存在的焊口 //if (!string.IsNullOrEmpty(TaskDate)) //{ // var task = from x in Funs.DB.HJGL_WeldTask where x.UnitWorkId == UnitWorkId && x.TaskDate.Value.Date.ToString() == Convert.ToDateTime(txtTaskDate.Text.Trim()).ToString("yyyy-MM-dd") select x; // if (task.Count() > 0) // { // foreach (var item in task) // { // Model.View_HJGL_NoWeldJointFind jot = toDoMatterList.FirstOrDefault(e => e.WeldJointId == item.WeldJointId); // if (jot != null) // { // toDoMatterList.Remove(jot); // } // } // } //} DataTable tb = this.LINQToDataTable(toDoMatterList); // 2.获取当前分页数据 Grid1.RecordCount = tb.Rows.Count; tb = GetFilteredTable(Grid1.FilteredData, tb); var table = this.GetPagedDataTable(Grid1, tb); Grid1.DataSource = table; Grid1.DataBind(); //string[] arr = new string[this.Grid1.Rows.Count]; //int a = 0; //for (int i = 0; i < this.Grid1.Rows.Count; i++) //{ // string rowId = this.Grid1.Rows[i].DataKeys[0].ToString(); // if (weldJointIds.Contains(rowId)) // { // arr[a] = rowId; // } // a++; //} //Grid1.SelectedRowIDArray = arr; } private void InitDropList() { var pipeline = (from x in Funs.DB.HJGL_Pipeline where x.ProjectId == this.CurrUser.LoginProjectId && x.UnitWorkId == this.UnitWorkId select x.FlowingSection).Distinct().ToList(); this.drpFlowingSection.DataTextField = "Value"; this.drpFlowingSection.DataValueField = "Value"; this.drpFlowingSection.DataSource = pipeline; this.drpFlowingSection.DataBind(); Funs.FineUIPleaseSelect(drpFlowingSection); } #endregion #region 管线查询 /// /// 查询 /// /// /// protected void btnQuery_Click(object sender, EventArgs e) { this.InitTreeMenu(); this.BindGrid(); } #endregion #region 排序 /// /// 排序 /// /// /// protected void Grid1_Sort(object sender, GridSortEventArgs e) { this.BindGrid(); } #endregion #region 提交按钮 /// /// 提交按钮 /// /// /// protected void btnAccept_Click(object sender, EventArgs e) { PageContext.RegisterStartupScript(ActiveWindow.GetWriteBackValueReference(txtTaskDate.Text) + ActiveWindow.GetHidePostBackReference()); //if (string.IsNullOrEmpty(this.txtTaskCode.Text.Trim())) //{ // ShowNotify("请输入焊接任务单编号", MessageBoxIcon.Warning); // return; //} //if (!string.IsNullOrEmpty(txtTaskDate.Text)) //{ // if (!string.IsNullOrEmpty(TaskDate)) // { // SaveTask(true); // } // else // { // var task = from x in Funs.DB.HJGL_WeldTask // where x.UnitWorkId == UnitWorkId // && x.TaskDate.Value.Date.ToString() == Convert.ToDateTime(txtTaskDate.Text.Trim()).ToString("yyyy-MM-dd") // select x; // if (task.Count() > 0) // { // ShowNotify("所选预计焊接日期已存在,请重新选择!", MessageBoxIcon.Warning); // return; // } // else // { // SaveTask(true); // } // } //} //else //{ // ShowNotify("请选择预计焊接日期", MessageBoxIcon.Warning); // return; //} } protected void btnSave_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(this.txtTaskCode.Text.Trim())) { ShowNotify("请输入焊接任务单编号", MessageBoxIcon.Warning); return; } if (!string.IsNullOrEmpty(txtTaskDate.Text)) { if (!string.IsNullOrEmpty(TaskDate)) { SaveTask(false); BindGrid(); } else { var task = from x in Funs.DB.HJGL_WeldTask where x.UnitWorkId == UnitWorkId && x.UnitId == this.drpUnit.SelectedValue && x.TaskDate.Value.Date.ToString() == Convert.ToDateTime(txtTaskDate.Text.Trim()).ToString("yyyy-MM-dd") select x; if (task.Count() > 0) { ShowNotify("所选预计焊接日期已存在,请重新选择!", MessageBoxIcon.Warning); return; } else { SaveTask(false); TaskDate = txtTaskDate.Text; BindGrid(); } } } else { ShowNotify("请选择预计焊接日期", MessageBoxIcon.Warning); return; } } private void SaveTask(bool IsCloseForm) { var weldingRods = from x in Funs.DB.Base_Consumables where x.ConsumablesType == "2" select x; var weldingWires = from x in Funs.DB.Base_Consumables where x.ConsumablesType == "1" select x; string[] selectRowId = Grid1.SelectedRowIDArray; for (int i = 0; i < selectRowId.Count(); i++) { string canWeldingRodName = string.Empty; string canWeldingWireName = string.Empty; Model.HJGL_WeldTask NewTask = new Model.HJGL_WeldTask(); NewTask.ProjectId = this.CurrUser.LoginProjectId; NewTask.UnitWorkId = this.UnitWorkId; NewTask.UnitId = drpUnit.SelectedValue; NewTask.TaskCode = this.txtTaskCode.Text.Trim(); NewTask.SerialNumber = SerialNumber; NewTask.WeldTaskId = SQLHelper.GetNewID(); NewTask.WeldJointId = selectRowId[i]; var oldWeldTask = BLL.WeldTaskService.GetWeldTaskByWeldJointId(NewTask.WeldJointId); if (oldWeldTask != null) { ShowNotify("所选焊口已存在任务单,无法保存!", MessageBoxIcon.Warning); return; } Model.HJGL_WeldJoint weldJoint = BLL.WeldJointService.GetWeldJointByWeldJointId(NewTask.WeldJointId); if (weldJoint != null) { NewTask.WeldingRod = weldJoint.WeldingRod; NewTask.WeldingWire = weldJoint.WeldingWire; //获取可替代焊丝焊条 var mat = BLL.Base_MaterialService.GetMaterialByMaterialId(weldJoint.Material1Id); string matClass = mat.MaterialClass; var matRod = weldingRods.FirstOrDefault(x => x.ConsumablesId == weldJoint.WeldingRod); if (matRod != null) { foreach (var item in weldingRods) { if (matClass == "Fe-1" || matClass == "Fe-3") { if (IsCoverClass(matRod.SteelType, item.SteelType)) { canWeldingRodName = canWeldingRodName + item.ConsumablesName + ","; } } else { if (matRod.SteelType == item.SteelType) { canWeldingRodName = canWeldingRodName + item.ConsumablesName + ","; } } } if (!string.IsNullOrEmpty(canWeldingRodName)) { NewTask.CanWeldingRodName = canWeldingRodName.Substring(0, canWeldingRodName.Length - 1); } } var matWire = weldingWires.FirstOrDefault(x => x.ConsumablesId == weldJoint.WeldingWire); if (matWire != null) { foreach (var item in weldingWires) { if (matClass == "Fe-1" || matClass == "Fe-3") { if (IsCoverClass(matWire.SteelType, item.SteelType)) { canWeldingWireName = canWeldingWireName + item.ConsumablesName + ","; } } else { if (matWire.SteelType == item.SteelType) { canWeldingWireName = canWeldingWireName + item.ConsumablesName + ","; } } } if (!string.IsNullOrEmpty(canWeldingWireName)) { NewTask.CanWeldingWireName = canWeldingWireName.Substring(0, canWeldingWireName.Length - 1); } } } //NewTask.JointAttribute = drpJointAttribute.SelectedValue; NewTask.JointAttribute = weldJoint.JointAttribute; NewTask.WeldingMode = drpWeldingMode.SelectedValue; NewTask.TaskDate = Convert.ToDateTime(txtTaskDate.Text); NewTask.Tabler = this.CurrUser.PersonId; NewTask.TableDate = DateTime.Now; weldJoint.WeldingMode = drpWeldingMode.SelectedValue; BLL.WeldJointService.UpdateWeldJoint(weldJoint); BLL.WeldTaskService.AddWeldTask(NewTask); } //string pipelineId = this.tvControlItem.SelectedNodeID; //var model = BLL.PipelineService.GetPipelineByPipelineId(pipelineId); //model.State = 1; //PipelineService.UpdatePipeline(model); ShowNotify("保存成功!", MessageBoxIcon.Success); if (IsCloseForm) { PageContext.RegisterStartupScript(ActiveWindow.GetWriteBackValueReference(txtTaskDate.Text) + ActiveWindow.GetHidePostBackReference()); } //PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference()); } /// /// 判断耗材强度是否大于WPS耗材强度,如是为true,否则为false /// /// /// /// private bool IsCoverClass(string wpsClass, string matClass) { bool isCover = false; int wpsSn = 0; int matSn = 0; if (wpsClass.Length > 2 && matClass.Length > 2) { string wpsPre = wpsClass.Substring(0, wpsClass.Length - 2); string matPre = matClass.Substring(0, matClass.Length - 2); string wps = wpsClass.Substring(wpsClass.Length - 1, 1); wpsSn = Funs.GetNewInt(wps).HasValue ? Funs.GetNewInt(wps).Value : 0; string mat = matClass.Substring(matClass.Length - 1, 1); matSn = Funs.GetNewInt(mat).HasValue ? Funs.GetNewInt(mat).Value : 0; if (wpsPre == matPre && matSn >= wpsSn) { return true; } } return isCover; } #endregion protected void txtTaskDate_TextChanged(object sender, EventArgs e) { this.txtTaskCode.Text = BLL.WeldTaskService.GetTaskCodeByDate(this.CurrUser.LoginProjectId, this.txtTaskDate.Text, UnitWorkId, drpUnit.SelectedValue); } protected void drpUnit_SelectedIndexChanged(object sender, EventArgs e) { this.txtTaskCode.Text = BLL.WeldTaskService.GetTaskCodeByDate(this.CurrUser.LoginProjectId, this.txtTaskDate.Text, UnitWorkId, drpUnit.SelectedValue); } protected void drpJointAttribute_SelectedIndexChanged(object sender, EventArgs e) { BindGrid(); } /// /// 行绑定事件(没有焊接方法无法选择) /// /// /// protected void Grid1_RowDataBound(object sender, GridRowEventArgs e) { DataRowView row = e.DataItem as DataRowView; if (string.IsNullOrEmpty(row["WeldingMethodCode"].ToString())) { e.RowSelectable = false; } ; } protected void Grid1_RowCommand(object sender, GridCommandEventArgs e) { if (e.CommandName == "ResetWpq") { var weldJointId = e.RowID; var model = WeldJointService.GetWeldJointByWeldJointId(weldJointId); if (model != null) { model.WPQId = null; WeldJointService.UpdateWeldJoint(model); List wpqList = BLL.WPQListServiceService.GetMatchWPQ(model, this.CurrUser.LoginProjectId, drpUnit.SelectedValue); if (wpqList != null) { Model.HJGL_WeldJoint newJot = new Model.HJGL_WeldJoint(); Model.WPQ_WPQList wps = BLL.WPQListServiceService.GetWPQById(wpqList.First().WPQId); newJot.WPQId = wps.WPQId; newJot.WeldJointId = model.WeldJointId; newJot.WeldingRod = wps.WeldingRod; newJot.WeldingWire = wps.WeldingWire; newJot.WeldingMethodId = wps.WeldingMethodId; newJot.GrooveTypeId = wps.GrooveType; newJot.PreTemperature = wps.PreTemperature; newJot.IsHotProess = wps.IsHotProess; newJot.MatchableWPQ = string.Join(",", wpqList.Select(x => x.WPQCode)); BLL.WeldJointService.UpdateConWeldJoint(newJot); } BindGrid(); ShowNotify("焊评已重置!", MessageBoxIcon.Success); } } } } }