using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using Infragistics.Win.UltraWinGrid; using Core.Mes.ClientFrameWork; using Infragistics.Win; using Infragistics.Win.UltraWinGrid.ExcelExport; using System.Diagnostics; using System.IO; using System.Collections; using Core.Mes.Client.Common; using CoreFS.CA06; namespace Core.LgMes.Client.LgDeviceManager { public partial class FrmEquipStopLog : frmStyleBase { public FrmEquipStopLog() { InitializeComponent(); } public override void ToolBar_Click(object sender, string ToolbarKey) { switch (ToolbarKey) { case "Query": { proc_Query(); break; } case "Update": { if (ultraGrid1.ActiveRow == null) return; UltraGridRow ugr = this.ultraGrid1.ActiveRow; DateTime EndTime = DateTime.Parse(ugr.Cells["STARTTIME"].Text.Trim()); string optman = ugr.Cells["OPTMAN"].Text.Trim(); TimeSpan ts = DateTime.Now.Subtract(EndTime); if (ts.Days > 7) { MessageBox.Show("所选记录已过期,无法进行更改"); return; } if (finalUser.Contains(optman)) { MessageBox.Show("所选记录已被终判,不可再做修改"); return; } if (!finalUser.Contains(username) && !commonUser.Contains(username)) { MessageBox.Show("当前账户无修改权限"); return; } SaveData(ugr); proc_Query(); break; } case "Split": { if (ultraGrid1.ActiveRow == null) return; UltraGridRow ugr = this.ultraGrid1.ActiveRow; DateTime EndTime = DateTime.Parse(ugr.Cells["STARTTIME"].Text.Trim()); string optman = ugr.Cells["OPTMAN"].Text.Trim(); TimeSpan ts = DateTime.Now.Subtract(EndTime); if (ts.Days > 7) { MessageBox.Show("所选记录已过期,无法进行拆分"); return; } if (!finalUser.Contains(username)) { MessageBox.Show("当前账户无拆分权限"); return; } SplitData(ugr); proc_Query(); break; } case "Export": { if (ultraGrid1.Rows.Count <= 0) return; //bool bInstalled = (Type.GetTypeFromProgID("Excel.Application") != null); //if (!bInstalled) //{ // MessageBox.Show("系统没有安装EXCEL组件,无法导出数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); // return; //} ExportDataWithSaveDialog(ref ultraGrid1, this.Text); break; } case "Close": { this.Close(); break; } } } string username = ""; ArrayList commonUser, finalUser = new ArrayList(); private void FrmEquipStopLog_Load(object sender, EventArgs e) { ultraDateTimeEditor1.DateTime = DateTime.Today; ultraDateTimeEditor2.DateTime = DateTime.Today; ValueList vl = new ValueList(); vl.ValueListItems.Add("计划检修-日休", "计划检修-日休"); vl.ValueListItems.Add("计划检修-周休", "计划检修-周休"); vl.ValueListItems.Add("设备故障-机械", "设备故障-机械"); vl.ValueListItems.Add("设备故障-电气", "设备故障-电气"); vl.ValueListItems.Add("设备故障-液压", "设备故障-液压"); vl.ValueListItems.Add("设备故障-仪控", "设备故障-仪控"); vl.ValueListItems.Add("生产计划停机", "生产计划停机"); vl.ValueListItems.Add("计划检修-集中检修", "计划检修-集中检修"); vl.ValueListItems.Add("非计划检修", "非计划检修"); vl.ValueListItems.Add("待料/待机", "待料/待机"); vl.ValueListItems.Add("生产故障", "生产故障"); vl.ValueListItems.Add("外部影响", "外部影响"); vl.ValueListItems.Add("工艺调整-计划", "工艺调整-计划"); vl.ValueListItems.Add("工艺调整-非计划", "工艺调整-非计划"); vl.ValueListItems.Add("其他", "其他"); this.ultraGrid1.DisplayLayout.Bands[0].Columns["STOPTYPE"].ValueList = vl; cbbPos.Enabled = false; username = this.UserInfo.GetUserID(); string strSql = "SELECT REMARK COMMON_USER,STOP_MSG FINAL_USER FROM DEV_EQUIPSTOP_LOG T WHERE STATIONCODE = 'USER'"; try { CoreClientParam CCP_LgEts = new CoreClientParam(); DataTable dt = new DataTable(); CCP_LgEts.ServerName = "Core.LgMes.Server.Common.ComDBExecute"; CCP_LgEts.MethodName = "doSimpleQuery"; CCP_LgEts.ServerParams = new object[] { strSql }; CCP_LgEts.SourceDataTable = dt; this.ExecuteQueryToDataTable(CCP_LgEts, CoreInvokeType.Internal); string common = dt.Rows[0][0].ToString(); string final = dt.Rows[0][1].ToString(); if (!string.IsNullOrEmpty(common)) commonUser = ArrayList.Adapter(common.Split(',')); if (!string.IsNullOrEmpty(final)) finalUser = ArrayList.Adapter(final.Split(',')); } catch { } } public void proc_Query() { string strwhere = ""; string strFrom = ultraDateTimeEditor1.DateTime.ToString("yyyy-MM-dd"); string strTo = ultraDateTimeEditor2.DateTime.ToString("yyyy-MM-dd"); strwhere = " and STARTTIME between trunc(to_date('{0}','yyyy-mm-dd')) and trunc(to_date('{1}','yyyy-mm-dd') + 1)"; strwhere = string.Format(strwhere, strFrom, strTo); if (this.cbPos.Checked) { strwhere += " and STATIONCODE = '" + this.cbbPos.Text.ToString() + "'"; } string strSql = "SELECT STATIONCODE, SHIFTCLASS, SHIFTGROUP, STOPTYPE, STARTTIME, ENDTIME, REMARK, OPTMAN, OPTDATE, SYSGUID " + ", FLAG, STOP_MSG,ROUND((ENDTIME-STARTTIME)*24*60,2) DELAYTIME,SPLITMAN, SPLITTIME FROM DEV_EQUIPSTOP_LOG T WHERE 1=1 " + strwhere; strSql += " AND STATIONCODE <> 'USER' ORDER BY STARTTIME"; try { string strOut = ""; //调用服务端方法 CoreClientParam CCP_LgEts = new CoreClientParam(); DataTable dt = new DataTable(); CCP_LgEts.ServerName = "Core.LgMes.Server.Common.ComDBExecute"; CCP_LgEts.MethodName = "doSimpleQuery"; CCP_LgEts.ServerParams = new object[] { strSql }; CCP_LgEts.SourceDataTable = dt; this.ExecuteQueryToDataTable(CCP_LgEts, CoreInvokeType.Internal); if (dt != null && dt.Rows.Count > 0) { this.dataTable1.Rows.Clear(); DataRow dr; for (int iRow = 0; iRow < dt.Rows.Count; iRow++) { dr = this.dataTable1.NewRow(); for (int jCol = 0; jCol < dt.Columns.Count; jCol++) { if (this.dataTable1.Columns.Contains(dt.Columns[jCol].ColumnName)) { dr[dt.Columns[jCol].ColumnName] = dt.Rows[iRow][jCol]; } } this.dataTable1.Rows.Add(dr); } } ultraGrid1.UpdateData(); proc_SetUltraGridReadOnly(ultraGrid1); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } public void SaveData(UltraGridRow ugr) { try { string strErr = ""; string sysGuid = ugr.Cells["SYSGUID"].Text.Trim(); string stopType = ugr.Cells["STOPTYPE"].Text.Trim(); string remark = ugr.Cells["REMARK"].Text.Trim(); string strSql = "UPDATE DEV_EQUIPSTOP_LOG SET STOPTYPE = '{0}',REMARK = '{1}',OPTMAN = '{2}',OPTDATE = SYSDATE WHERE SYSGUID = '{3}'"; strSql = string.Format(strSql, stopType, remark, username, sysGuid); try { CommonClientToServer cctos = new CommonClientToServer(); cctos.ob = this.ob; // DataSet ds = cctos.ExecuteQueryFunctions("Core.LgMes.Server.Common.ComDBExecute", "ExcuteNoParameter", strSql, out strErr); if (string.IsNullOrEmpty(strErr)) MessageBox.Show("修改成功!"); else MessageBox.Show("修改失败:" + strErr); } catch (Exception e) { MessageBox.Show("修改失败:" + e.Message + "!"); } } catch { } } public void SplitData(UltraGridRow ugr) { string sysGuid = ugr.Cells["SYSGUID"].Text.Trim(); string endTime = ugr.Cells["ENDTIME"].Text.Trim(); string starttime = ugr.Cells["STARTTIME"].Text.Trim(); FrmSplitUtil frm = new FrmSplitUtil(); frm.sysguid = sysGuid; frm.username = username; frm.v_endtime = endTime; frm.v_starttime = starttime; frm.ob1 = this.ob; frm.Location = GetChildWindowLocation(frm.Size); frm.StartPosition = FormStartPosition.CenterParent; frm.ShowDialog(); } private void proc_SetUltraGridReadOnly(Infragistics.Win.UltraWinGrid.UltraGridBase ultGrid) { foreach (UltraGridRow row in ultGrid.Rows) { row.Cells["STOPTYPE"].Activation = Activation.AllowEdit; row.Cells["REMARK"].Activation = Activation.AllowEdit; row.Cells["STATIONCODE"].Activation = Activation.NoEdit; row.Cells["SHIFTCLASS"].Activation = Activation.NoEdit; row.Cells["SHIFTGROUP"].Activation = Activation.NoEdit; row.Cells["STARTTIME"].Activation = Activation.NoEdit; row.Cells["ENDTIME"].Activation = Activation.NoEdit; row.Cells["DELAYTIME"].Activation = Activation.NoEdit; row.Cells["OPTMAN"].Activation = Activation.NoEdit; row.Cells["OPTDATE"].Activation = Activation.NoEdit; } } public static void ExportDataWithSaveDialog(ref UltraGrid ultGrid, string strFileName) { try { UltraGridExcelExporter ultraGridExcelExporter1 = new UltraGridExcelExporter(); if (ultGrid.Rows.Count == 0) return; if (strFileName.Length == 0) strFileName = "未命名"; SaveFileDialog dlg = new SaveFileDialog(); dlg.Title = "保存"; dlg.OverwritePrompt = true; dlg.Filter = "Excel文件(*.xls)|*.xls"; dlg.AddExtension = true; dlg.FileName = strFileName; if (dlg.ShowDialog() == DialogResult.OK) { strFileName = dlg.FileName; ultraGridExcelExporter1.Export(ultGrid, strFileName); //2012-04-10何晓晴修改导出功能 if (MessageBox.Show("数据导出成功!\r\n需要打开所导出文件吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { ultraGridExcelExporter1.Export(ultGrid, strFileName); ProcessStartInfo p = new ProcessStartInfo(strFileName); p.WorkingDirectory = Path.GetDirectoryName(strFileName); Process.Start(p); } } } catch (Exception ex) { MessageBox.Show(ex.Message); } } //========================================================== // 获取子窗体弹出的位置坐标 //========================================================== public static Point GetChildWindowLocation(Size ChildWindowSize) { int width = Cursor.Position.X + ChildWindowSize.Width - Screen.PrimaryScreen.Bounds.Width; int height = Cursor.Position.Y + ChildWindowSize.Height - Screen.PrimaryScreen.Bounds.Height + 30; width = (width > 0) ? (Cursor.Position.X - width) : Cursor.Position.X; // X坐标 height = (height > 0) ? (Cursor.Position.Y - height + 10) : (Cursor.Position.Y + 10); // Y坐标 return new Point(width, height); } private void cbPos_CheckedChanged(object sender, EventArgs e) { if (cbPos.Checked) cbbPos.Enabled = true; else cbbPos.Enabled = false; } private void uCkEditorForFilter_CheckedChanged(object sender, EventArgs e) { SetGridRowFilter(ref this.ultraGrid1, uCkEditorForFilter.Checked); } public static void SetGridRowFilter(ref UltraGrid ultGrid, bool bAllowFilter) { try { if (bAllowFilter) { ultGrid.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.True; } else { ultGrid.DisplayLayout.Bands[0].ColumnFilters.ClearAllFilters(); ultGrid.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False; } } catch { } } } }