306 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			306 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			C#
		
	
	
	
using BLL;
 | 
						|
using Model;
 | 
						|
using System;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Linq;
 | 
						|
using System.Web;
 | 
						|
using System.Web.UI;
 | 
						|
using System.Web.UI.WebControls;
 | 
						|
 | 
						|
namespace FineUIPro.Web.TestRun.BeforeTestRun
 | 
						|
{
 | 
						|
    public partial class DeviceRunEdit : PageBase
 | 
						|
    {
 | 
						|
        /// <summary>
 | 
						|
        /// 上级主键
 | 
						|
        /// </summary>
 | 
						|
        public string ParentId
 | 
						|
        {
 | 
						|
            get { return (string)ViewState["ParentId"]; }
 | 
						|
            set { ViewState["ParentId"] = value; }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 主键
 | 
						|
        /// </summary>
 | 
						|
        public string RunId
 | 
						|
        {
 | 
						|
            get { return (string)ViewState["RunId"]; }
 | 
						|
            set { ViewState["RunId"] = value; }
 | 
						|
        }
 | 
						|
 | 
						|
        protected void Page_Load(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            if (!IsPostBack)
 | 
						|
            {
 | 
						|
                this.RunId = Request.Params["RunId"];
 | 
						|
                this.ParentId = Request.Params["ParentId"];
 | 
						|
                //绑定数据
 | 
						|
                PageIn();
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 绑定数据
 | 
						|
        /// </summary>
 | 
						|
        /// <param name="runId">主键</param>
 | 
						|
        /// <param name="parentId">上级主键</param>
 | 
						|
        public void PageIn()
 | 
						|
        {
 | 
						|
            var num = 0;
 | 
						|
            if (!string.IsNullOrWhiteSpace(this.ParentId))
 | 
						|
            {
 | 
						|
                var parenLs = GetAllDevices(this.ParentId);
 | 
						|
                if (parenLs.Count > 0)
 | 
						|
                {
 | 
						|
                    var itemModel = parenLs.FirstOrDefault(p => p.PreRunId == this.ParentId);
 | 
						|
                    if (itemModel != null)
 | 
						|
                    {
 | 
						|
                        if (itemModel.PreRunLevel == 1)
 | 
						|
                        {
 | 
						|
                            zz.Hidden = false;
 | 
						|
                            var oneModel = parenLs.FirstOrDefault(p => p.PreRunLevel == 1);
 | 
						|
                            if (oneModel != null)
 | 
						|
                            {
 | 
						|
                                lblzzmc.Text = oneModel.PreRunName;
 | 
						|
                                lblzzbm.Text = oneModel.PreRunCode;
 | 
						|
                                if (string.IsNullOrWhiteSpace(this.RunId))
 | 
						|
                                {
 | 
						|
                                    num = Funs.DB.PreRun_SysDevice.Count(p => p.ProjectId == this.CurrUser.LoginProjectId && p.PreRunLevel == 2) + 1;
 | 
						|
                                    txtRunCode.Text = string.Format("PA{0}", string.Format("{0:d2}", num));
 | 
						|
                                    txtSort.Text = num.ToString();
 | 
						|
                                }
 | 
						|
                                txtRunName.Label = "工序名称";
 | 
						|
                                txtRunCode.Label = "工序编码";
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                        else if (itemModel.PreRunLevel == 2)
 | 
						|
                        {
 | 
						|
                            zz.Hidden = false;
 | 
						|
                            gx.Hidden = false;
 | 
						|
                            var oneModel = parenLs.FirstOrDefault(p => p.PreRunLevel == 1);
 | 
						|
                            if (oneModel != null)
 | 
						|
                            {
 | 
						|
                                lblzzmc.Text = oneModel.PreRunName;
 | 
						|
                                lblzzbm.Text = oneModel.PreRunCode;
 | 
						|
                            }
 | 
						|
                            var twoModel = parenLs.FirstOrDefault(p => p.PreRunLevel == 2);
 | 
						|
                            if (twoModel != null)
 | 
						|
                            {
 | 
						|
                                lblgxmc.Text = twoModel.PreRunName;
 | 
						|
                                lblgxbm.Text = twoModel.PreRunCode;
 | 
						|
                            }
 | 
						|
                            if (string.IsNullOrWhiteSpace(this.RunId))
 | 
						|
                            {
 | 
						|
                                num = Funs.DB.PreRun_SysDevice.Count(p => p.ProjectId == this.CurrUser.LoginProjectId && p.PreRunLevel == 3) + 1;
 | 
						|
                                txtRunCode.Text = string.Format("S{0}", string.Format("{0:d2}", num));
 | 
						|
                                txtSort.Text = num.ToString();
 | 
						|
                            }
 | 
						|
                            txtRunName.Label = "S系统名称";
 | 
						|
                            txtRunCode.Label = "S系统编码";
 | 
						|
                        }
 | 
						|
                        else if (itemModel.PreRunLevel == 3)
 | 
						|
                        {
 | 
						|
                            zz.Hidden = false;
 | 
						|
                            gx.Hidden = false;
 | 
						|
                            sxt.Hidden = false;
 | 
						|
                            var oneModel = parenLs.FirstOrDefault(p => p.PreRunLevel == 1);
 | 
						|
                            if (oneModel != null)
 | 
						|
                            {
 | 
						|
                                lblzzmc.Text = oneModel.PreRunName;
 | 
						|
                                lblzzbm.Text = oneModel.PreRunCode;
 | 
						|
                            }
 | 
						|
                            var twoModel = parenLs.FirstOrDefault(p => p.PreRunLevel == 2);
 | 
						|
                            if (twoModel != null)
 | 
						|
                            {
 | 
						|
                                lblgxmc.Text = twoModel.PreRunName;
 | 
						|
                                lblgxbm.Text = twoModel.PreRunCode;
 | 
						|
                            }
 | 
						|
                            var threeModel = parenLs.FirstOrDefault(p => p.PreRunLevel == 3);
 | 
						|
                            if (threeModel != null)
 | 
						|
                            {
 | 
						|
                                lblsxtmc.Text = threeModel.PreRunName;
 | 
						|
                                lblsxtbm.Text = threeModel.PreRunCode;
 | 
						|
                            }
 | 
						|
                            if (string.IsNullOrWhiteSpace(this.RunId))
 | 
						|
                            {
 | 
						|
                                num = Funs.DB.PreRun_SysDevice.Count(p => p.ProjectId == this.CurrUser.LoginProjectId && p.PreRunLevel == 4) + 1;
 | 
						|
                                txtRunCode.Text = string.Format("SS{0}", string.Format("{0:d2}", num));
 | 
						|
                                txtSort.Text = num.ToString();
 | 
						|
                            }
 | 
						|
                            txtRunName.Label = "SS子系统名称";
 | 
						|
                            txtRunCode.Label = "SS子系统编码";
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                if (string.IsNullOrWhiteSpace(this.RunId))
 | 
						|
                {
 | 
						|
                    txtRunName.Label = "装置名称";
 | 
						|
                    txtRunCode.Label = "装置编码";
 | 
						|
                    num = Funs.DB.PreRun_SysDevice.Count(p => p.ProjectId == this.CurrUser.LoginProjectId && p.PreRunLevel == 1) + 1;
 | 
						|
                    txtRunCode.Text = string.Format("P{0}", string.Format("{0:d2}", num));
 | 
						|
                    txtSort.Text = num.ToString();
 | 
						|
                }
 | 
						|
            }
 | 
						|
            if (!string.IsNullOrWhiteSpace(this.RunId))
 | 
						|
            {
 | 
						|
                var deviceModel = Funs.DB.PreRun_SysDevice.FirstOrDefault(p => p.PreRunId == this.RunId);
 | 
						|
                if (deviceModel != null)
 | 
						|
                {
 | 
						|
                    txtRunCode.Text = deviceModel.PreRunCode;
 | 
						|
                    txtRunName.Text = deviceModel.PreRunName;
 | 
						|
                    txtRemark.Text = deviceModel.Remark;
 | 
						|
                    txtSort.Text = deviceModel.Sort.ToString();
 | 
						|
 | 
						|
                    if (deviceModel.PreRunLevel == 1)
 | 
						|
                    {
 | 
						|
                        txtRunName.Label = "装置名称";
 | 
						|
                        txtRunCode.Label = "装置编码";
 | 
						|
                    }
 | 
						|
                    else if (deviceModel.PreRunLevel == 2)
 | 
						|
                    {
 | 
						|
                        txtRunName.Label = "工序名称";
 | 
						|
                        txtRunCode.Label = "工序编码";
 | 
						|
                    }
 | 
						|
                    else if (deviceModel.PreRunLevel == 3)
 | 
						|
                    {
 | 
						|
                        txtRunName.Label = "S系统名称";
 | 
						|
                        txtRunCode.Label = "S系统编码";
 | 
						|
                    }
 | 
						|
                    else if (deviceModel.PreRunLevel == 4)
 | 
						|
                    {
 | 
						|
                        txtRunName.Label = "SS子系统名称";
 | 
						|
                        txtRunCode.Label = "SS子系统编码";
 | 
						|
                    }
 | 
						|
                    else
 | 
						|
                    {
 | 
						|
                        txtRunName.Label = "装置名称";
 | 
						|
                        txtRunCode.Label = "装置编码";
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 保存
 | 
						|
        /// </summary>
 | 
						|
        protected void btnSave_Click(object sender, EventArgs e)
 | 
						|
        {
 | 
						|
            var model = new PreRun_SysDevice();
 | 
						|
            model.PreRunId = Guid.NewGuid().ToString();
 | 
						|
            var deviceId = string.Empty;
 | 
						|
            var processesId = string.Empty;
 | 
						|
            var systemIdId = string.Empty;
 | 
						|
            if (!string.IsNullOrWhiteSpace(this.RunId))
 | 
						|
            {
 | 
						|
                model = Funs.DB.PreRun_SysDevice.FirstOrDefault(p => p.PreRunId == this.RunId);
 | 
						|
            }
 | 
						|
            if (model == null)
 | 
						|
            {
 | 
						|
                ShowNotify("传递参数错误!", MessageBoxIcon.Error);
 | 
						|
                return;
 | 
						|
            }
 | 
						|
            model.ProjectId = CurrUser.LoginProjectId;
 | 
						|
            if (!string.IsNullOrWhiteSpace(this.ParentId))
 | 
						|
            {
 | 
						|
                var parenLs = GetAllDevices(this.ParentId);
 | 
						|
                if (parenLs.Count > 0)
 | 
						|
                {
 | 
						|
                    var oneModel = parenLs.FirstOrDefault(p => p.PreRunLevel == 1);
 | 
						|
                    if (oneModel != null)
 | 
						|
                    {
 | 
						|
                        model.InstallationId = oneModel.PreRunId;
 | 
						|
                        model.ParentId = oneModel.PreRunId;
 | 
						|
                        model.ProcessesId = model.PreRunId;
 | 
						|
                        model.PreRunLevel = 2;
 | 
						|
                    }
 | 
						|
                    var twoModel = parenLs.FirstOrDefault(p => p.PreRunLevel == 2);
 | 
						|
                    if (twoModel != null)
 | 
						|
                    {
 | 
						|
                        model.ProcessesId = twoModel.PreRunId;
 | 
						|
                        model.ParentId = twoModel.PreRunId;
 | 
						|
                        model.SystemId = model.PreRunId;
 | 
						|
                        model.PreRunLevel = 3;
 | 
						|
                    }
 | 
						|
                    var threeModel = parenLs.FirstOrDefault(p => p.PreRunLevel == 3);
 | 
						|
                    if (threeModel != null)
 | 
						|
                    {
 | 
						|
                        model.SystemId = threeModel.PreRunId;
 | 
						|
                        model.ParentId = threeModel.PreRunId;
 | 
						|
                        model.SubsystemId = model.PreRunId;
 | 
						|
                        model.PreRunLevel = 4;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                model.PreRunLevel = 1;
 | 
						|
            }
 | 
						|
            model.AddUser = CurrUser.Account;
 | 
						|
            model.OperateTime = DateTime.Now;
 | 
						|
            model.Sort = !string.IsNullOrEmpty(txtSort.Text) ? int.Parse(txtSort.Text) : Funs.DB.PreRun_SysDevice.Count(p => p.ProjectId == CurrUser.LoginProjectId && p.PreRunLevel == model.PreRunLevel) + 1;
 | 
						|
            model.PreRunCode = txtRunCode.Text;
 | 
						|
            model.PreRunName = txtRunName.Text;
 | 
						|
            model.Remark = txtRemark.Text;
 | 
						|
 | 
						|
            if (string.IsNullOrWhiteSpace(this.RunId))
 | 
						|
            {
 | 
						|
                if (Funs.DB.PreRun_SysDevice.Count(p => p.PreRunCode == txtRunCode.Text.Trim() && p.ProjectId == this.CurrUser.LoginProjectId) > 0)
 | 
						|
                {
 | 
						|
                    ShowNotify($"编码{txtRunCode.Text.Trim()}已存在!", MessageBoxIcon.Error);
 | 
						|
                    return;
 | 
						|
                }
 | 
						|
                Funs.DB.PreRun_SysDevice.InsertOnSubmit(model);
 | 
						|
            }
 | 
						|
            else
 | 
						|
            {
 | 
						|
                if (Funs.DB.PreRun_SysDevice.Count(p => p.PreRunCode == txtRunCode.Text.Trim() && p.PreRunId != model.PreRunId && p.ProjectId == this.CurrUser.LoginProjectId) > 0)
 | 
						|
                {
 | 
						|
                    ShowNotify($"编码{txtRunCode.Text.Trim()}已存在!", MessageBoxIcon.Error);
 | 
						|
                    return;
 | 
						|
                }
 | 
						|
            }
 | 
						|
            Funs.DB.SubmitChanges();
 | 
						|
            ShowNotify("保存成功!", MessageBoxIcon.Success);
 | 
						|
            PageContext.RegisterStartupScript(ActiveWindow.GetHideRefreshReference());
 | 
						|
        }
 | 
						|
 | 
						|
        #region 私有方法
 | 
						|
 | 
						|
        /// <summary>
 | 
						|
        /// 根据主键获取所有节点
 | 
						|
        /// </summary>
 | 
						|
        /// <returns></returns>
 | 
						|
        public List<PreRun_SysDevice> GetAllDevices(string parentId)
 | 
						|
        {
 | 
						|
            var result = new List<PreRun_SysDevice>();
 | 
						|
 | 
						|
            var ids = new List<string>();
 | 
						|
            var itemDevice = Funs.DB.PreRun_SysDevice.FirstOrDefault(p => p.PreRunId == parentId);
 | 
						|
            if (itemDevice != null)
 | 
						|
            {
 | 
						|
                ids.Add(itemDevice.PreRunId);
 | 
						|
                if (!string.IsNullOrWhiteSpace(itemDevice.InstallationId))
 | 
						|
                {
 | 
						|
                    ids.Add(itemDevice.InstallationId);
 | 
						|
                }
 | 
						|
                if (!string.IsNullOrWhiteSpace(itemDevice.ProcessesId))
 | 
						|
                {
 | 
						|
                    ids.Add(itemDevice.ProcessesId);
 | 
						|
                }
 | 
						|
                if (!string.IsNullOrWhiteSpace(itemDevice.SystemId))
 | 
						|
                {
 | 
						|
                    ids.Add(itemDevice.SystemId);
 | 
						|
                }
 | 
						|
                result = Funs.DB.PreRun_SysDevice.Where(p => ids.Contains(p.PreRunId)).ToList();
 | 
						|
            }
 | 
						|
            return result;
 | 
						|
        }
 | 
						|
 | 
						|
        #endregion
 | 
						|
 | 
						|
    }
 | 
						|
} |