using System; using System.Data; using System.Drawing; using System.Windows.Forms; using DevComponents.DotNetBar; using GeoScene.Data; namespace Cyberpipe { public partial class FrmPatrolerManager : Office2007Form { private GeoScene.Globe.GSOGlobeControl globeControl1; int maxPageIndex = 20; int rows = 0; string combo_stateText = ""; public static bool IS_OPEN = false; public FrmPatrolerManager(GeoScene.Globe.GSOGlobeControl globeControl1) { InitializeComponent(); this.globeControl1 = globeControl1; winGridViewPager1.OnPageChanged += new EventHandler(winGridViewPager1_OnPageChanged); this.winGridViewPager1.OnStartExport += new EventHandler(pager1_OnStartExport); this.winGridViewPager1.OnEndExport += new EventHandler(pager1_OnEndExport); winGridViewPager1.dataGridView1.MultiSelect = false; } /// <summary> /// 初始化分页表格 /// </summary> private void initlizeDatagrid() { //控制表格显示的列,以及每一列要显示的列名 this.winGridViewPager1.Dock = DockStyle.Fill; this.winGridViewPager1.dataGridView1.Dock = DockStyle.Fill; this.winGridViewPager1.AddColumnAlias("姓名", "姓名"); this.winGridViewPager1.AddColumnAlias("编号", "编号"); this.winGridViewPager1.AddColumnAlias("性别", "性别"); this.winGridViewPager1.AddColumnAlias("年龄", "年龄"); this.winGridViewPager1.AddColumnAlias("电话", "电话"); this.winGridViewPager1.AddColumnAlias("状态", "状态"); this.winGridViewPager1.DisplayColumns = "姓名,性别,年龄,电话,状态"; winGridViewPager1.BackColor = Color.LightCyan;//间隔颜色 //右键菜单宽度 winGridViewPager1.dataGridView1.ContextMenuStrip.AutoSize = false; winGridViewPager1.dataGridView1.ContextMenuStrip.Width = 150; //数据铺满表格 this.winGridViewPager1.dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; //控制间隔的颜色 winGridViewPager1.BackColor = Color.LightCyan;//间隔颜色 //控制每页显示的最大数据量 winGridViewPager1.PagerInfo.RecordCount = rows; winGridViewPager1.PagerInfo.PageSize = maxPageIndex; winGridViewPager1.dataGridView1.Refresh(); //winGridViewPager1.Controls.RemoveAt(1); } /// <summary> /// 页面刷新 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void winGridViewPager1_OnPageChanged(object sender, EventArgs e) { LoadData(); } void pager1_OnEndExport(object sender, EventArgs e) { } void pager1_OnStartExport(object sender, EventArgs e) { string where = GetSql(); DataTable table = OracleUtils.ExecuteDataset(OracleUtils.ConnectionString, CommandType.Text, where).Tables[0]; this.winGridViewPager1.AllToExport = table; } private void LoadData() { int pageIndex = winGridViewPager1.PagerInfo.CurrenetPageIndex; string sqlData = GetSql(pageIndex); initlizeDatagrid(); DataTable table = OracleUtils.ExecuteDataset(OracleUtils.ConnectionString, CommandType.Text, sqlData).Tables[0]; winGridViewPager1.DataSource = table.DefaultView; winGridViewPager1.Refresh(); } private void LoadData(int pageIndex) { string sqlData = GetSql(pageIndex); initlizeDatagrid(); DataTable table = OracleUtils.ExecuteDataset(OracleUtils.ConnectionString, CommandType.Text, sqlData).Tables[0]; winGridViewPager1.DataSource = table.DefaultView; winGridViewPager1.Refresh(); } private string GetSql() { // string sqlCount = "select count(*) from equipment where status = 'USING'"; string sqlCount = "select count(1) from patroler"; string sqlData = "select username as 姓名,dbid as 编号,sex as 性别,age as 年龄,phonenum as 电话,"+ "case when accountstate = 'ONLINE' then '在线' when accountstate = 'OFFLINE' then '离线' when accountstate = 'LEAVER' then '注销' end as 状态 " + "from (select t.*,rownum row_num from patroler t order by DBID desc)b " + " where 1=1"; rows = int.Parse(OracleUtils.ExecuteScalar(OracleUtils.ConnectionString, CommandType.Text, sqlCount).ToString()); return sqlData; } private string GetSql(int pageIndex) { int minPage = (pageIndex - 1) * maxPageIndex + 1; int maxPage = pageIndex * maxPageIndex; string sqlCount = "select count(1) from patroler where 1=1"; string sqlData = "select username as 姓名,dbid as 编号,sex as 性别,age as 年龄,phonenum as 电话,"+ "case when accountstate = 'ONLINE' then '在线' when accountstate = 'OFFLINE' then '离线' when accountstate = 'LEAVER' then '注销' end as 状态 " + "from (select t.*,rownum row_num from patroler t where 1=1"; if (!String.IsNullOrEmpty(txt_username.Text.Trim())) { sqlCount += " and username like '%" + txt_username.Text.Trim() + "%'"; sqlData += " and username like '%" + txt_username.Text.Trim() + "%'"; } if (!String.IsNullOrEmpty(txt_phone.Text.Trim())) { sqlCount += " and phonenum='" + txt_phone.Text.Trim() + "'"; sqlData += " and phonenum='" + txt_phone.Text.Trim() + "'"; } if (null != combo_sex.SelectedItem && !String.IsNullOrEmpty(combo_sex.SelectedItem.ToString()) && !combo_sex.SelectedItem.ToString().Equals("不限")) { sqlCount += " and sex='" + combo_sex.SelectedItem.ToString() + "'"; sqlData += " and sex='" + combo_sex.SelectedItem.ToString() + "'"; } if (null != combo_state.SelectedItem && !String.IsNullOrEmpty(combo_state.SelectedItem.ToString()) && !combo_state.SelectedItem.ToString().Equals("不限")) { sqlCount += " and accountstate='" + combo_stateText + "'"; sqlData += " and accountstate='" + combo_stateText + "'"; } sqlData += " order by DBID desc)b " + "where(b.row_num between " + minPage + " and " + maxPage + ")"; rows = int.Parse(OracleUtils.ExecuteScalar(OracleUtils.ConnectionString, CommandType.Text, sqlCount).ToString()); return sqlData; } private void FrmPatrolerManager_Load(object sender, EventArgs e) { try { LoadData(); initForm(); IS_OPEN = true; } catch (Exception ex) { MessageBox.Show("窗体加载失败:" + ex.ToString(), "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Error); ex.ToString(); } } private void initForm() { /* if (Utility.isNeedLogin && !Utility.userRole.Contains("巡检员新增")) { btn_add_person.Visible = false; } if (Utility.isNeedLogin && !Utility.userRole.Contains("巡检员编辑")) { 编辑ToolStripMenuItem.Visible = false; } if (Utility.isNeedLogin && !Utility.userRole.Contains("巡检员注销")) { 注销ToolStripMenuItem.Visible = false; } * */ } private void btn_query_person_Click(object sender, EventArgs e) { try { LoadData(1); } catch (Exception ex) { MessageBox.Show("查询失败:" + ex.ToString(), "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Error); ex.ToString(); } } private void btn_add_person_Click(object sender, EventArgs e) { try { FrmPatrolerEdit frm = new FrmPatrolerEdit(); frm.reloadGrid += new ReloadPatrolerGrid(LoadData); frm.ShowDialog(); } catch (Exception ex) { MessageBox.Show("新增巡检人员操作失败:" + ex.ToString(), "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Error); ex.ToString(); } } private void combo_state_SelectedIndexChanged(object sender, EventArgs e) { if (combo_state.SelectedItem.ToString().Equals("在线")) { combo_stateText = "ONLINE"; } if (combo_state.SelectedItem.ToString().Equals("离线")) { combo_stateText = "OFFLINE"; } if (combo_state.SelectedItem.ToString().Equals("注销")) { combo_stateText = "LEAVER"; } } private void FrmPatrolerManager_FormClosing(object sender, FormClosingEventArgs e) { globeControl1.Globe.MemoryLayer.RemoveAllFeature(); IS_OPEN = false; } private void 日志ToolStripMenuItem_Click(object sender, EventArgs e) { if (winGridViewPager1 != null && winGridViewPager1.dataGridView1 != null && winGridViewPager1.dataGridView1.SelectedRows.Count > 0) { DataGridViewRow row = winGridViewPager1.dataGridView1.SelectedRows[0]; try { long dbid = long.Parse(row.Cells["编号"].Value.ToString()); PatrolLog p = new PatrolLog(dbid.ToString()); p.Show(); } catch (Exception ex) { MessageBox.Show("查看日志失败:" + ex.ToString(), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } private void 任务ToolStripMenuItem_Click(object sender, EventArgs e) { if (winGridViewPager1 != null && winGridViewPager1.dataGridView1 != null && winGridViewPager1.dataGridView1.SelectedRows.Count > 0) { DataGridViewRow row = winGridViewPager1.dataGridView1.SelectedRows[0]; try { long dbid = long.Parse(row.Cells["编号"].Value.ToString()); String state = row.Cells["状态"].Value.ToString(); if ("在线".Equals(state)) { string sql = "select t.dbid " + "from taskinfo t " + "where (t.taskstate = '开始任务' or t.taskstate = '执行过程中') " + "and t.patroler_id =" + dbid + " " + "order by t.deploytime desc"; DataTable dt = OracleUtils.ExecuteDataset(OracleUtils.ConnectionString, CommandType.Text, sql).Tables[0]; if (dt.Rows.Count > 0) { TaskInfo p = new TaskInfo(int.Parse(dt.Rows[0][0].ToString())); p.Show(); } else { MessageBox.Show("当前用户没有开始任务或接受任务", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } } else { MessageBox.Show("当前用户没有在线", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); } } catch (Exception ex) { MessageBox.Show("任务打开失败:" + ex.ToString(), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } private void 定位ToolStripMenuItem_Click(object sender, EventArgs e) { if (winGridViewPager1 != null && winGridViewPager1.dataGridView1 != null && winGridViewPager1.dataGridView1.SelectedRows.Count > 0) { DataGridViewRow row = winGridViewPager1.dataGridView1.SelectedRows[0]; try { long dbid = long.Parse(row.Cells["编号"].Value.ToString()); string sql = "select t.latitude, t.longitude " + "from position t " + "where t.dbid = (select max(dbid) from position where patroler_id = " + dbid + ")"; DataTable table = OracleUtils.ExecuteDataset(OracleUtils.ConnectionString, CommandType.Text, sql).Tables[0]; if (table.Rows.Count > 0) { this.WindowState = FormWindowState.Minimized; double x = double.Parse(table.Rows[0]["longitude"].ToString()); double y = double.Parse(table.Rows[0]["latitude"].ToString()); GSOPoint3d p = new GSOPoint3d(); p.X = x; p.Y = y; p.Z = 7; GSOGeoModel model = new GSOGeoModel(); string filepath = Application.StartupPath + "/EMSgcm/person/ren.gcm"; model.FilePath = filepath; model.Position = p; model.AltitudeMode = EnumAltitudeMode.Absolute; GeoScene.Globe.GSOCameraState cameraState = new GeoScene.Globe.GSOCameraState(); cameraState.Longitude = x; cameraState.Latitude = y; cameraState.Heading = -3.51574088627348; cameraState.Tilt = 44.392160966227; cameraState.Distance = 50; cameraState.Altitude = 0; cameraState.AltitudeMode = EnumAltitudeMode.Absolute; model.CameraState = cameraState; GSOFeature f = new GSOFeature(); f.Geometry = model; GSOFeature newFeature = globeControl1.Globe.MemoryLayer.AddFeature(f); //globeControl1.Globe.JumpToPosition(p, EnumAltitudeMode.Absolute, 50); globeControl1.Globe.JumpToCameraState(cameraState); globeControl1.Refresh(); } else { MessageBox.Show("未找到人员位置", "信息"); } } catch (Exception ex) { MessageBox.Show("定位失败:" + ex.ToString(), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } private void 编辑ToolStripMenuItem_Click(object sender, EventArgs e) { if (winGridViewPager1 != null && winGridViewPager1.dataGridView1 != null && winGridViewPager1.dataGridView1.SelectedRows.Count > 0) { DataGridViewRow row = winGridViewPager1.dataGridView1.SelectedRows[0]; try { long dbid = long.Parse(row.Cells["编号"].Value.ToString()); String name = row.Cells["姓名"].Value.ToString(); String sex = row.Cells["性别"].Value.ToString(); String age = row.Cells["年龄"].Value.ToString(); string phone = row.Cells["电话"].Value.ToString(); age = String.IsNullOrEmpty(age.ToString().Trim()) ? "1" : age.ToString().Trim(); FrmPatrolerEdit frm = new FrmPatrolerEdit(dbid.ToString(), name, age, sex, phone); frm.reloadGrid += new ReloadPatrolerGrid(LoadData); frm.ShowDialog(); winGridViewPager1.Refresh(); } catch (Exception ex) { MessageBox.Show("编辑失败:" + ex.ToString(), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } private void 注销ToolStripMenuItem_Click(object sender, EventArgs e) { if (winGridViewPager1 != null && winGridViewPager1.dataGridView1 != null && winGridViewPager1.dataGridView1.SelectedRows.Count > 0) { DataGridViewRow row = winGridViewPager1.dataGridView1.SelectedRows[0]; long dbid = long.Parse(row.Cells["编号"].Value.ToString()); try { if (MessageBox.Show("确定注销?", "确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { String sql = "update patroler t set t.accountstate='LEAVER' where t.dbid=" + dbid; OracleUtils.ExecuteNonQuery(OracleUtils.ConnectionString, CommandType.Text, sql); LoadData(); MessageBox.Show("人员已注销", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception ex) { MessageBox.Show("人员注销失败:" + ex.ToString(), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } private void 重置密码ToolStripMenuItem_Click(object sender, EventArgs e) { if (winGridViewPager1 != null && winGridViewPager1.dataGridView1 != null && winGridViewPager1.dataGridView1.SelectedRows.Count > 0) { DataGridViewRow row = winGridViewPager1.dataGridView1.SelectedRows[0]; long dbid = long.Parse(row.Cells["编号"].Value.ToString()); try { if (MessageBox.Show("确定重置该用户密码?", "确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { String sql = "update patroler t set t.password='" + Utility.MD5Encrypt2("111111") + "' where t.dbid=" + dbid; OracleUtils.ExecuteNonQuery(OracleUtils.ConnectionString, CommandType.Text, sql); LoadData(); MessageBox.Show("人员密码已重置为111111", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information); } } catch (Exception ex) { MessageBox.Show("人员密码重置失败:" + ex.ToString(), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } } }