using BLL; using FineUIPro.Web.DataShow; using FineUIPro.Web.ProjectData; 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 RunningId { get { return (string)ViewState["RunningId"]; } set { ViewState["RunningId"] = value; } } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.RunningId = Request["RunningId"]; PageBase(); } } /// /// 页面控件处理 /// public void PageBase() { //获取系统 var syslist = Funs.DB.PreRun_SysDevice.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.PreRunLevel == 3).ToList(); if (syslist.Count > 0) { int i = 0; ListItem[] list = new ListItem[syslist.Count]; foreach (var item in syslist) { list[i] = new ListItem(item.PreRunName, item.PreRunId); i++; } this.rdbOperation.DataSource = list; this.rdbOperation.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; List options = new List(); var model = Funs.DB.Running_LogManagement.FirstOrDefault(x => x.RunningId == this.RunningId); if (model != null) { options.Add(model.SystemId); txtJobNo.Text = model.JobNo; ddlShiftUser.SelectedValue = model.ShiftUser; ddlSuccessionUser.SelectedValue = model.SuccessionUser; txtStartData.Text = model.StartData.Value.ToString("yyyy-MM-dd HH:mm:ss"); txtEndData.Text = model.EndData.Value.ToString("yyyy-MM-dd HH:mm:ss"); rdbOperation.SelectedValueArray = options.ToArray(); txtHandoverCare.Text = model.HandoverCare; DataBrid(); gvOperationBrid(); gvMaintenanceBrid(); } else { txtJobNo.Text = SQLHelper.RunProcNewId("SpGetNewCode5", "dbo.Running_LogManagement", "JobNo", "13022-PS81-"); } } /// /// 选择项 /// protected void rdbOperation_SelectedIndexChanged(object sender, EventArgs e) { var syslist = Funs.DB.PreRun_SysDevice.Where(x => x.ProjectId == this.CurrUser.LoginProjectId && x.PreRunLevel == 3).ToList(); var rdbIdArr = rdbOperation.SelectedItemArray; var list = gvSystemOptionLs(); foreach (var item in rdbIdArr) { if (list.Count(x => x.SystemId == item.Value) > 0) continue; var itemsys = syslist.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 => !rdbOperation.SelectedValueArray.Contains(r.SystemId)); DataBrid(list); } /// /// 保存 /// protected void btnSave_Click(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(ddlShiftUser.SelectedValue)) { ShowNotify("请选择轮班职工!", MessageBoxIcon.Warning); return; } if (string.IsNullOrWhiteSpace(ddlSuccessionUser.SelectedValue)) { ShowNotify("请选择继任职工!", MessageBoxIcon.Warning); return; } var list = gvSystemOptionLs(); 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 addlist = new List(); var addoptionlist = new List(); var addmaintenancelist = new List(); var ids = list.ConvertAll(x => x.RunningId); var existlist = Funs.DB.Running_LogManagement.Where(x => ids.Contains(x.RunningId)).ToList(); foreach (var item in list) { bool add = false; var model = existlist.FirstOrDefault(x => x.RunningId == this.RunningId); if (model == null) { add = true; model = new Running_LogManagement(); model.RunningId = Guid.NewGuid().ToString(); model.ProjectId = this.CurrUser.LoginProjectId; model.AddUser = this.CurrUser.UserId; model.AddTime = DateTime.Now; } 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; foreach (var itemoption in optionlist) { addoptionlist.Add(new Running_Operation() { OperationId = Guid.NewGuid().ToString(), RunningId = model.RunningId, InstallationId = item.InstallationId, ProcessesId = item.ProcessesId, SystemId = item.SystemId, 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(), RunningId = model.RunningId, InstallationId = item.InstallationId, ProcessesId = item.ProcessesId, SystemId = item.SystemId, MaintenanceReason = itemmain.MaintenanceReason, MaintenanceHandle = itemmain.MaintenanceHandle, ProjectId = this.CurrUser.LoginProjectId, AddUser = this.CurrUser.UserId, AddTime = DateTime.Now, }); } if (add) { Funs.DB.SubmitChanges(); addlist.Add(model); } else { Funs.DB.SubmitChanges(); } } if (addlist.Count > 0) Funs.DB.Running_LogManagement.InsertAllOnSubmit(addlist); var runIds = list.ConvertAll(x => x.RunningId); var deleteOperas = Funs.DB.Running_Operation.Where(x => runIds.Contains(x.RunningId)).ToList(); if (deleteOperas.Count > 0) { Funs.DB.Running_Operation.DeleteAllOnSubmit(deleteOperas); Funs.DB.SubmitChanges(); } var deleteMaints = Funs.DB.Running_Maintenance.Where(x => runIds.Contains(x.RunningId)).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 DataBrid(List list = null) { 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.RunningId == this.RunningId 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); gvSystemOption.DataSource = list; gvSystemOption.DataBind(); } /// /// 获取绑定集合 /// private List gvSystemOptionLs() { List massQuestionLs = new List(); JArray mergedData = gvSystemOption.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.gvSystemOption.Rows[i].DataKeys[0].ToString(), ProjectId = this.CurrUser.LoginProjectId, InstallationId = this.gvSystemOption.Rows[i].DataKeys[1].ToString(), ProcessesId = this.gvSystemOption.Rows[i].DataKeys[2].ToString(), SystemId = this.gvSystemOption.Rows[i].DataKeys[3].ToString(), SystemName = this.gvSystemOption.Rows[i].DataKeys[4].ToString(), Situation = values.Value("Situation"), Remarks = values.Value("Remarks"), AddUser = CurrUser.UserId, AddTime = DateTime.Now, }); } return massQuestionLs; } public class Running_LogManagementDto : Running_LogManagement { public string SystemName { get; set; } } #region 操作问题 /// /// 操作问题绑定 /// public void gvOperationBrid() { var list = Funs.DB.Running_Operation.Where(x => x.RunningId == this.RunningId).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]), RunningId = IsStrVal(this.gvOperation.Rows[i].DataKeys[1]), ProjectId = this.CurrUser.LoginProjectId, InstallationId = IsStrVal(this.gvOperation.Rows[i].DataKeys[2]), ProcessesId = IsStrVal(this.gvOperation.Rows[i].DataKeys[3]), SystemId = IsStrVal(this.gvOperation.Rows[i].DataKeys[4]), 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 list = Funs.DB.Running_Maintenance.Where(x => x.RunningId == this.RunningId).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]), RunningId = IsStrVal(this.gvMaintenance.Rows[i].DataKeys[1]), ProjectId = this.CurrUser.LoginProjectId, InstallationId = IsStrVal(this.gvMaintenance.Rows[i].DataKeys[2]), ProcessesId = IsStrVal(this.gvMaintenance.Rows[i].DataKeys[3]), SystemId = IsStrVal(this.gvMaintenance.Rows[i].DataKeys[4]), 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; } } }