using BLL; using FineUIPro.Web.DataShow; using FineUIPro.Web.ProjectData; using Microsoft.Office.Interop.Word; using Model; using Newtonsoft.Json.Linq; using NPOI.SS.Formula.Functions; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices.ComTypes; using System.Web; using System.Web.Services.Description; using System.Web.UI; using System.Web.UI.WebControls; namespace FineUIPro.Web.TestRun.ProduceTestRun { public partial class RunningLogManagementEdit : PageBase { /// /// 日志 /// public string MainId { get { return (string)ViewState["MainId"]; } set { ViewState["MainId"] = value; } } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.MainId = Request["MainId"]; PageBase(); } } /// /// 页面控件处理 /// public void PageBase() { //获取系统 var alllist = Funs.DB.PreRun_SysDevice.Where(x => x.ProjectId == this.CurrUser.LoginProjectId).ToList(); if (alllist.Count > 0) { var engineeringModel = alllist.FirstOrDefault(x => x.PreRunLevel == 1 && x.PreRunName.Trim() == "公用工程"); if (engineeringModel != null) { var engsyslist = alllist.Where(x => x.PreRunLevel == 3 && x.InstallationId == engineeringModel.PreRunId).ToList(); if (engsyslist.Count > 0) { int i = 0; ListItem[] list = new ListItem[engsyslist.Count]; foreach (var item in engsyslist) { list[i] = new ListItem(item.PreRunName, item.PreRunId); i++; } this.rdbEngineeringOperation.DataSource = list; this.rdbEngineeringOperation.DataBind(); } } var deviceModel = alllist.FirstOrDefault(x => x.PreRunLevel == 1 && x.PreRunName.Trim() == "工艺装置"); if (deviceModel != null) { var devicesyslist = alllist.Where(x => x.PreRunLevel == 3 && x.InstallationId == deviceModel.PreRunId).ToList(); if (devicesyslist.Count > 0) { int i = 0; ListItem[] list = new ListItem[devicesyslist.Count]; foreach (var item in devicesyslist) { list[i] = new ListItem(item.PreRunName, item.PreRunId); i++; } this.rdbDeviceOption.DataSource = list; this.rdbDeviceOption.DataBind(); } } } //获取人员 var userList = from user in Funs.DB.Sys_User join projectrole in Funs.DB.Project_ProjectUser on user.UserId equals projectrole.UserId where projectrole.ProjectId == this.CurrUser.LoginProjectId select user; var userids = new List() { Const.sysglyId, Const.hfnbdId, Const.sedinId }; var addUserList = Funs.DB.Sys_User.Where(x => userids.Contains(x.UserId)); var users = userList.ToList(); if (addUserList.Count() > 0) { users.AddRange(addUserList); } //轮班职工 ddlShiftUser.DataTextField = "UserName"; ddlShiftUser.DataValueField = "UserId"; ddlShiftUser.DataSource = users; ddlShiftUser.DataBind(); ddlShiftUser.SelectedValue = this.CurrUser.UserId; //继任职工 ddlSuccessionUser.DataTextField = "UserName"; ddlSuccessionUser.DataValueField = "UserId"; ddlSuccessionUser.DataSource = users; ddlSuccessionUser.DataBind(); ddlSuccessionUser.SelectedValue = this.CurrUser.UserId; var mainModel = Funs.DB.Running_LogMain.FirstOrDefault(x => x.MainId == this.MainId); if (mainModel != null) { var managements = Funs.DB.Running_LogManagement.Where(x => x.MainId == this.MainId).ToList(); var manaModel = managements.FirstOrDefault(); var options = managements.ConvertAll(x => x.SystemId); txtJobNo.Text = mainModel.JobNo; ddlShiftUser.SelectedValue = manaModel.ShiftUser; ddlSuccessionUser.SelectedValue = manaModel.SuccessionUser; txtStartData.Text = mainModel.StartData.Value.ToString("yyyy-MM-dd HH:mm:ss"); txtEndData.Text = mainModel.EndData.Value.ToString("yyyy-MM-dd HH:mm:ss"); txtHandoverCare.Text = manaModel.HandoverCare; rdbEngineeringOperation.SelectedValueArray = options.ToArray(); EngineeringDataBrid(); rdbDeviceOption.SelectedValueArray = options.ToArray(); DriveDataBrid(); gvOperationBrid(); gvMaintenanceBrid(); } else { txtJobNo.Text = SQLHelper.RunProcNewId("SpGetNewCode5", "dbo.Running_LogManagement", "JobNo", "13022-PS81-"); } } /// /// 公用工程选择项 /// protected void rdbEngineeringOperation_SelectedIndexChanged(object sender, EventArgs e) { var alllist = Funs.DB.PreRun_SysDevice.Where(x => x.ProjectId == this.CurrUser.LoginProjectId).ToList(); if (alllist.Count == 0) return; var engineeringModel = alllist.FirstOrDefault(x => x.PreRunLevel == 1 && x.PreRunName.Trim() == "公用工程"); if (engineeringModel == null) return; var engsyslist = alllist.Where(x => x.PreRunLevel == 3 && x.InstallationId == engineeringModel.PreRunId).ToList(); if (engsyslist.Count == 0) return; var rdbIdArr = rdbEngineeringOperation.SelectedItemArray; var list = gvEngineeringSystemOptionLs(); foreach (var item in rdbIdArr) { if (list.Count(x => x.SystemId == item.Value) > 0) continue; var itemsys = engsyslist.FirstOrDefault(x => x.PreRunId == item.Value); list.Add(new Running_LogManagementDto { RunningId = Guid.NewGuid().ToString(), ProjectId = this.CurrUser.LoginProjectId, InstallationId = itemsys.InstallationId, ProcessesId = itemsys.ProcessesId, SystemId = itemsys.SystemId, SystemName = itemsys.PreRunName, Situation = "", Remarks = "", AddUser = CurrUser.UserId, AddTime = DateTime.Now, }); } list.RemoveAll(r => !rdbEngineeringOperation.SelectedValueArray.Contains(r.SystemId)); EngineeringDataBrid(list); } /// /// 工艺装置选择项 /// protected void rdbDeviceOption_SelectedIndexChanged(object sender, EventArgs e) { var alllist = Funs.DB.PreRun_SysDevice.Where(x => x.ProjectId == this.CurrUser.LoginProjectId).ToList(); if (alllist.Count == 0) return; var deviceModel = alllist.FirstOrDefault(x => x.PreRunLevel == 1 && x.PreRunName.Trim() == "工艺装置"); if (deviceModel == null) return; var drivesyslist = alllist.Where(x => x.PreRunLevel == 3 && x.InstallationId == deviceModel.PreRunId).ToList(); if (drivesyslist.Count == 0) return; var rdbIdArr = rdbDeviceOption.SelectedItemArray; var list = gvDeviceSystemOptionLs(); foreach (var item in rdbIdArr) { if (list.Count(x => x.SystemId == item.Value) > 0) continue; var itemsys = drivesyslist.FirstOrDefault(x => x.PreRunId == item.Value); list.Add(new Running_LogManagementDto { RunningId = Guid.NewGuid().ToString(), ProjectId = this.CurrUser.LoginProjectId, InstallationId = itemsys.InstallationId, ProcessesId = itemsys.ProcessesId, SystemId = itemsys.SystemId, SystemName = itemsys.PreRunName, Situation = "", Remarks = "", AddUser = CurrUser.UserId, AddTime = DateTime.Now, }); } list.RemoveAll(r => !rdbDeviceOption.SelectedValueArray.Contains(r.SystemId)); DriveDataBrid(list); } /// /// 保存 /// protected void btnSave_Click(object sender, EventArgs e) { List list = new List(); if (string.IsNullOrWhiteSpace(ddlShiftUser.SelectedValue)) { ShowNotify("请选择轮班职工!", MessageBoxIcon.Warning); return; } if (string.IsNullOrWhiteSpace(ddlSuccessionUser.SelectedValue)) { ShowNotify("请选择继任职工!", MessageBoxIcon.Warning); return; } var englist = gvEngineeringSystemOptionLs(); if (englist.Count > 0) list.AddRange(englist); var devlist = gvDeviceSystemOptionLs(); if (devlist.Count > 0) list.AddRange(devlist); if (list.Count == 0) { ShowNotify("请选择公用工程或工艺装置的系统!", MessageBoxIcon.Warning); return; } var optionlist = gvOperationLs(); if (optionlist.Count == 0) { ShowNotify("请添加操作问题!", MessageBoxIcon.Warning); return; } var maintenancelist = gvMaintenanceLs(); if (maintenancelist.Count == 0) { ShowNotify("请添加维护问题!", MessageBoxIcon.Warning); return; } var main = Funs.DB.Running_LogMain.FirstOrDefault(x => x.MainId == this.MainId); var addlist = new List(); var addoptionlist = new List(); var addmaintenancelist = new List(); //删除系统日志记录 var deleteRunnings = Funs.DB.Running_LogManagement.Where(x => x.MainId == this.MainId); if (deleteRunnings.Count() > 0) { Funs.DB.Running_LogManagement.DeleteAllOnSubmit(deleteRunnings); Funs.DB.SubmitChanges(); } bool add = false; if (main == null) { add = true; main = new Running_LogMain(); main.MainId = Guid.NewGuid().ToString(); main.AddUser = this.CurrUser.UserId; main.AddTime = DateTime.Now; } main.ProjectId = this.CurrUser.LoginProjectId; main.JobNo = txtJobNo.Text; main.ShiftType = ddlShiftType.SelectedValue; main.StartData = DateTime.Parse(txtStartData.Text); main.EndData = DateTime.Parse(txtEndData.Text); if (add) Funs.DB.Running_LogMain.InsertOnSubmit(main); //子系统 foreach (var item in list) { var model = new Running_LogManagement(); model.RunningId = Guid.NewGuid().ToString(); model.ProjectId = this.CurrUser.LoginProjectId; model.MainId = main.MainId; model.InstallationId = item.InstallationId; model.ProcessesId = item.ProcessesId; model.SystemId = item.SystemId; model.JobNo = txtJobNo.Text; model.HandoverCare = txtHandoverCare.Text; model.ShiftType = ddlShiftType.SelectedValue; model.ShiftUser = ddlShiftUser.SelectedValue; model.SuccessionUser = ddlSuccessionUser.SelectedValue; model.StartData = DateTime.Parse(txtStartData.Text); model.EndData = DateTime.Parse(txtEndData.Text); model.Situation = item.Situation; model.Remarks = item.Remarks; model.AddUser = this.CurrUser.UserId; model.AddTime = DateTime.Now; model.Sort = item.Sort; addlist.Add(model); } //操作问题 foreach (var itemoption in optionlist) { addoptionlist.Add(new Running_Operation() { OperationId = Guid.NewGuid().ToString(), MainId = main.MainId, OperationReason = itemoption.OperationReason, OperationHandle = itemoption.OperationHandle, ProjectId = this.CurrUser.LoginProjectId, AddUser = this.CurrUser.UserId, AddTime = DateTime.Now, }); } //维护问题 foreach (var itemmain in maintenancelist) { addmaintenancelist.Add(new Running_Maintenance() { MaintenanceId = Guid.NewGuid().ToString(), MainId = main.MainId, MaintenanceReason = itemmain.MaintenanceReason, MaintenanceHandle = itemmain.MaintenanceHandle, ProjectId = this.CurrUser.LoginProjectId, AddUser = this.CurrUser.UserId, AddTime = DateTime.Now, }); } if (addlist.Count > 0) Funs.DB.Running_LogManagement.InsertAllOnSubmit(addlist); var deleteOperas = Funs.DB.Running_Operation.Where(x => x.MainId == this.MainId).ToList(); if (deleteOperas.Count > 0) { Funs.DB.Running_Operation.DeleteAllOnSubmit(deleteOperas); Funs.DB.SubmitChanges(); } var deleteMaints = Funs.DB.Running_Maintenance.Where(x => x.MainId == this.MainId).ToList(); if (deleteMaints.Count > 0) { Funs.DB.Running_Maintenance.DeleteAllOnSubmit(deleteMaints); Funs.DB.SubmitChanges(); } Funs.DB.Running_Operation.InsertAllOnSubmit(addoptionlist); Funs.DB.Running_Maintenance.InsertAllOnSubmit(addmaintenancelist); Funs.DB.SubmitChanges(); ShowNotify("操作成功!", MessageBoxIcon.Success); PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference()); } /// /// 公用工程日志管理绑定 /// public void EngineeringDataBrid(List list = null) { var engineeringModel = Funs.DB.PreRun_SysDevice.FirstOrDefault(x => x.ProjectId == this.CurrUser.LoginProjectId && x.PreRunLevel == 1 && x.PreRunName.Trim() == "公用工程"); if (engineeringModel == null) { list = new List(); gvEngineeringOption.DataSource = list; gvEngineeringOption.DataBind(); return; } if (list == null) { list = new List(); var query = from a in Funs.DB.Running_LogManagement join b in Funs.DB.PreRun_SysDevice on a.SystemId equals b.PreRunId where a.MainId == this.MainId && a.InstallationId == engineeringModel.PreRunId orderby a.Sort ascending select new Running_LogManagementDto { RunningId = a.RunningId, ProjectId = a.ProjectId, InstallationId = a.InstallationId, ProcessesId = a.ProcessesId, SystemId = a.SystemId, SystemName = b.PreRunName, JobNo = a.JobNo, ShiftType = a.ShiftType, ShiftUser = a.ShiftUser, SuccessionUser = a.SuccessionUser, StartData = a.StartData, EndData = a.EndData, Situation = a.Situation, Remarks = a.Remarks, HandoverCare = a.HandoverCare, AddUser = a.AddUser, AddTime = a.AddTime }; var data = query.ToList(); if (data.Count > 0) list.AddRange(data); } gvEngineeringOption.DataSource = list; gvEngineeringOption.DataBind(); } /// /// 获取公用工程绑定集合 /// private List gvEngineeringSystemOptionLs() { List massQuestionLs = new List(); JArray mergedData = gvEngineeringOption.GetMergedData(); foreach (JObject mergedRow in mergedData) { string status = mergedRow.Value("status"); JObject values = mergedRow.Value("values"); int i = mergedRow.Value("index"); massQuestionLs.Add(new Running_LogManagementDto { RunningId = this.gvEngineeringOption.Rows[i].DataKeys[0].ToString(), ProjectId = this.CurrUser.LoginProjectId, InstallationId = this.gvEngineeringOption.Rows[i].DataKeys[1].ToString(), ProcessesId = this.gvEngineeringOption.Rows[i].DataKeys[2].ToString(), SystemId = this.gvEngineeringOption.Rows[i].DataKeys[3].ToString(), SystemName = this.gvEngineeringOption.Rows[i].DataKeys[4].ToString(), Situation = values.Value("Situation"), Remarks = values.Value("Remarks"), AddUser = CurrUser.UserId, AddTime = DateTime.Now, Sort = i + 1 }); } return massQuestionLs; } /// /// 工艺装置日志管理绑定 /// public void DriveDataBrid(List list = null) { var deviceModel = Funs.DB.PreRun_SysDevice.FirstOrDefault(x => x.ProjectId == this.CurrUser.LoginProjectId && x.PreRunLevel == 1 && x.PreRunName.Trim() == "工艺装置"); if (deviceModel == null) { list = new List(); gvDeviceOption.DataSource = list; gvDeviceOption.DataBind(); return; } if (list == null) { list = new List(); var query = from a in Funs.DB.Running_LogManagement join b in Funs.DB.PreRun_SysDevice on a.SystemId equals b.PreRunId where a.MainId == this.MainId && a.InstallationId == deviceModel.PreRunId orderby a.Sort ascending select new Running_LogManagementDto { RunningId = a.RunningId, ProjectId = a.ProjectId, InstallationId = a.InstallationId, ProcessesId = a.ProcessesId, SystemId = a.SystemId, SystemName = b.PreRunName, JobNo = a.JobNo, ShiftType = a.ShiftType, ShiftUser = a.ShiftUser, SuccessionUser = a.SuccessionUser, StartData = a.StartData, EndData = a.EndData, Situation = a.Situation, Remarks = a.Remarks, HandoverCare = a.HandoverCare, AddUser = a.AddUser, AddTime = a.AddTime, Sort = a.Sort }; var data = query.ToList(); if (data.Count > 0) list.AddRange(data); } gvDeviceOption.DataSource = list; gvDeviceOption.DataBind(); } /// /// 获取工艺装置绑定集合 /// private List gvDeviceSystemOptionLs() { List massQuestionLs = new List(); JArray mergedData = gvDeviceOption.GetMergedData(); foreach (JObject mergedRow in mergedData) { string status = mergedRow.Value("status"); JObject values = mergedRow.Value("values"); int i = mergedRow.Value("index"); massQuestionLs.Add(new Running_LogManagementDto { RunningId = this.gvDeviceOption.Rows[i].DataKeys[0].ToString(), ProjectId = this.CurrUser.LoginProjectId, InstallationId = this.gvDeviceOption.Rows[i].DataKeys[1].ToString(), ProcessesId = this.gvDeviceOption.Rows[i].DataKeys[2].ToString(), SystemId = this.gvDeviceOption.Rows[i].DataKeys[3].ToString(), SystemName = this.gvDeviceOption.Rows[i].DataKeys[4].ToString(), Situation = values.Value("Situation"), Remarks = values.Value("Remarks"), AddUser = CurrUser.UserId, AddTime = DateTime.Now, Sort = i + 1 }); } return massQuestionLs; } public class Running_LogManagementDto : Running_LogManagement { public string SystemName { get; set; } } #region 操作问题 /// /// 操作问题绑定 /// public void gvOperationBrid() { var query = from a in Funs.DB.Running_Operation join b in Funs.DB.Running_LogMain on a.MainId equals b.MainId select a; var list = query.ToList(); gvOperation.DataSource = list; gvOperation.DataBind(); } /// /// 操作问题集合 /// private List gvOperationLs() { List massQuestionLs = new List(); JArray mergedData = gvOperation.GetMergedData(); foreach (JObject mergedRow in mergedData) { string status = mergedRow.Value("status"); JObject values = mergedRow.Value("values"); int i = mergedRow.Value("index"); massQuestionLs.Add(new Running_Operation { OperationId = IsStrVal(this.gvOperation.Rows[i].DataKeys[0]), MainId = IsStrVal(this.gvOperation.Rows[i].DataKeys[1]), ProjectId = this.CurrUser.LoginProjectId, OperationReason = values.Value("OperationReason"), OperationHandle = values.Value("OperationHandle"), AddUser = CurrUser.UserId, AddTime = DateTime.Now, Sort = i }); } return massQuestionLs; } /// /// 维护问题删除 /// /// /// protected void gvOperation_RowCommand(object sender, GridCommandEventArgs e) { if (e.CommandName == "Delete") { string rowID = e.RowID; var model = Funs.DB.Running_Operation.FirstOrDefault(p => p.OperationId == rowID); if (model != null) { Funs.DB.Running_Operation.DeleteOnSubmit(model); Funs.DB.SubmitChanges(); gvOperationBrid(); ShowNotify("删除成功!"); } else { var list = gvOperationLs(); list.RemoveAll(x => x.OperationId == rowID); gvOperation.DataSource = list; gvOperation.DataBind(); ShowNotify("删除成功!"); } } } /// /// 新增 /// protected void btnOperationAdd_Click(object sender, EventArgs e) { var list = gvOperationLs(); Running_Operation model = new Running_Operation { OperationId = Guid.NewGuid().ToString() }; list.Add(model); this.gvOperation.DataSource = list; this.gvOperation.DataBind(); } #endregion #region 维护问题 /// /// 维护问题绑定 /// public void gvMaintenanceBrid() { var query = from a in Funs.DB.Running_Maintenance join b in Funs.DB.Running_LogMain on a.MainId equals b.MainId select a; var list = query.ToList(); gvMaintenance.DataSource = list; gvMaintenance.DataBind(); } /// /// 维护问题集合 /// private List gvMaintenanceLs() { List massQuestionLs = new List(); JArray mergedData = gvMaintenance.GetMergedData(); foreach (JObject mergedRow in mergedData) { string status = mergedRow.Value("status"); JObject values = mergedRow.Value("values"); int i = mergedRow.Value("index"); massQuestionLs.Add(new Running_Maintenance { MaintenanceId = IsStrVal(this.gvMaintenance.Rows[i].DataKeys[0]), MainId = IsStrVal(this.gvMaintenance.Rows[i].DataKeys[1]), ProjectId = this.CurrUser.LoginProjectId, MaintenanceReason = values.Value("MaintenanceReason"), MaintenanceHandle = values.Value("MaintenanceHandle"), AddUser = CurrUser.UserId, AddTime = DateTime.Now, Sort = i }); } return massQuestionLs; } /// /// 维护问题删除 /// protected void gvMaintenance_RowCommand(object sender, GridCommandEventArgs e) { if (e.CommandName == "Delete") { string rowID = e.RowID; var model = Funs.DB.Running_Maintenance.FirstOrDefault(p => p.MaintenanceId == rowID); if (model != null) { Funs.DB.Running_Maintenance.DeleteOnSubmit(model); Funs.DB.SubmitChanges(); gvMaintenanceBrid(); ShowNotify("删除成功!"); } else { var list = gvMaintenanceLs(); list.RemoveAll(x => x.MaintenanceId == rowID); gvMaintenance.DataSource = list; gvMaintenance.DataBind(); ShowNotify("删除成功!"); } } } /// /// 新增 /// protected void btnMaintenanceAdd_Click(object sender, EventArgs e) { var list = gvMaintenanceLs(); Running_Maintenance model = new Running_Maintenance { MaintenanceId = Guid.NewGuid().ToString() }; list.Add(model); this.gvMaintenance.DataSource = list; this.gvMaintenance.DataBind(); } #endregion public string IsStrVal(object value) { var result = string.Empty; if (value != null) result = value.ToString(); return result; } } }