实例介绍
【实例截图】
【核心代码】
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; using System.IO; using System.Collections; using System.Xml; using Pally; namespace BSeriesData { //系统主菜单FormMain public partial class FormMain : Form { Connection.Sqlslt SqSlt = new BSeriesData.Connection.Sqlslt();//声明Sql 通用类 Connection.PublicClass PbCls = new BSeriesData.Connection.PublicClass();//声明全部变量 通用类 Pally.oTerminal myTerminal = new Pally.oTerminal();//通过引用Pally内库,声明连接类myTerminal public string Cardover;//判断后的卡号 public string Userover;//查询后的人员编号 public FormMain() { InitializeComponent(); } /// <summary> ///打开系统参数配置面板 /// </summary> /// <returns></returns> private void 文件FToolStripMenuItem_Click(object sender, EventArgs e) { if (TimerSs.Enabled == true) { MessageBox.Show("请先关闭实时采集"); return; } FormParameter fpm = new FormParameter(); fpm.Show(); } /// <summary> ///页面加载事件 加载基本数据显示 /// </summary> /// <returns></returns> private void FormMain_Load(object sender, EventArgs e) { try { //显示机器列表 vmachineBindingSource.DataSource = SqSlt.SqlGeneral(@"select eaName0, maSty, maType, maIpaddr, maPort,mano from dbo.Vmachine where maType in('FIC-30','FIC-30-A','FIC-10','FID-30') order by maType", "Vmachine", PbCls.SqlData(listBox2)[1].ToString()); //------------ } catch { listBox1.Items.Add("数据库连接失败"); listBox1.Items.Add("可能原因一:数据库参数错误!库名、地址、账号、密码"); listBox1.Items.Add("可能原因二:表建立不完整"); return; } //显示部门列表 if (XmlBb() == "宝宝在线") { try { BBEpartment();//宝宝在线部门导入 } catch { listBox1.Items.Add("部门导入失败"); return; } BBloadUser();//宝宝在线人员导入 } Epartment();//原版 //------------ //开启定时计时器 TimerDs.Enabled = true; Tire.Text = Convert.ToString(DateTime.Now.ToLocalTime().ToString("HH:mm")); //------------ } /// <summary> ///打开数据LOG查询面板 /// </summary> /// <returns></returns> private void smEdit_Click(object sender, EventArgs e) { if (TimerSs.Enabled == true) { MessageBox.Show("请先关闭实时采集"); return; } FormLog fl = new FormLog(); fl.Show(); } /// <summary> ///退出系统 /// </summary> /// <returns></returns> private void toolStripButton3_Click(object sender, EventArgs e) { Application.Exit(); } /// <summary> ///查询人员信息 /// </summary> /// <returns></returns> private void button1_Click(object sender, EventArgs e) { if (UserSltTX.Text != "") { //查询人员信息 vpersonalBindingSource.DataSource = SqSlt.SqlGeneral(@"select emname,emworkno,emsex,emzw,emBirthDay,emtel,emcard,emkxh,per_id from Vpersonal where _emstate='正常' and _emfk='已发卡' and (emname='" UserSltTX.Text.Trim() "' or emworkno='" UserSltTX.Text.Trim() "')", "Vpersonal", PbCls.SqlData(listBox2)[1].ToString()); } else { MessageBox.Show("查询内容不能为空"); } } /// <summary> ///点选部门显示人员信息 /// </summary> /// <returns></returns> private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { //获取部门编号 DataSet DeptNo = SqSlt.SqlGeneral("select deptno,depttel from dept where dept.deptname='" treeView1.SelectedNode.Text "'", "dept", PbCls.SqlData(listBox2)[1].ToString()); //-------------- //显示所选部门下的人员信息 int DeptNoLeng = DeptNo.Tables["dept"].Rows[0]["deptno"].ToString().Length;//获取部门长度 string DeptNoId = DeptNo.Tables["dept"].Rows[0]["deptno"].ToString();//获取部门编号 string DeptNoTl = DeptNo.Tables["dept"].Rows[0]["depttel"].ToString();//获取部门字段depttel(个别定制用户用) //显示表格 vpersonalBindingSource.DataSource = SqSlt.SqlGeneral(@"select emname,emworkno,emsex,emzw,emBirthDay,emtel,emcard,emkxh,per_id from Vpersonal where _emstate='正常' and _emfk='已发卡' and substring(Vpersonal.deptno,1," DeptNoLeng ")=substring('" DeptNoId "',1," DeptNoLeng ") or deptno='" DeptNoTl "'", "Vpersonal", PbCls.SqlData(listBox2)[1].ToString()); //-------------- } /// <summary> ///机器列表全选 /// </summary> /// <returns></returns> private void toolStripMenuItem1_Click(object sender, EventArgs e) { for (int i = 0; i < dataGridView1.RowCount; i ) { //给所有行赋值为勾选状态 DataGridViewCheckBoxCell checkBox = (DataGridViewCheckBoxCell)this.dataGridView1.Rows[i].Cells[0]; checkBox.Value = 1; } } /// <summary> ///机器列表反选 /// </summary> /// <returns></returns> private void toolStripMenuItem2_Click(object sender, EventArgs e) { for (int i = 0; i < dataGridView1.RowCount; i ) { //给所有行赋值为勾选状态 DataGridViewCheckBoxCell checkBox = (DataGridViewCheckBoxCell)this.dataGridView1.Rows[i].Cells[0]; checkBox.Value = 0; } } /// <summary> ///人员列表全选 /// </summary> /// <returns></returns> private void toolStripMenuItem3_Click(object sender, EventArgs e) { for (int i = 0; i < dataGridView2.RowCount; i ) { //给所有行赋值为勾选状态 DataGridViewCheckBoxCell checkBox = (DataGridViewCheckBoxCell)this.dataGridView2.Rows[i].Cells[0]; checkBox.Value = 1; } } /// <summary> ///人员列表反选 /// </summary> /// <returns></returns> private void toolStripMenuItem4_Click(object sender, EventArgs e) { for (int i = 0; i < dataGridView2.RowCount; i ) { //给所有行赋值为勾选状态 DataGridViewCheckBoxCell checkBox = (DataGridViewCheckBoxCell)this.dataGridView2.Rows[i].Cells[0]; checkBox.Value = 0; } } /// <summary> ///人员下传 /// </summary> /// <returns></returns> private void sbStart_Click(object sender, EventArgs e) { if (TimerSs.Enabled == true) { MessageBox.Show("请先关闭实时采集"); return; } if (XmlBb() == "宝宝在线") { BBloadUser();//宝宝在线人员导入 } sbStart.Enabled = false;//暂时停用人员下传按钮 listBox1.Items.Clear(); for (int i = 0; i < dataGridView1.RowCount; i )//一级循环,循环机器列表 { string ReValue = dataGridView1.Rows[i].Cells[0].EditedFormattedValue.ToString(); if (ReValue == "True")//判断是否机器被选中 { myTerminal.IPAddress = dataGridView1.Rows[i].Cells[1].Value.ToString();//机器IP myTerminal.Port = dataGridView1.Rows[i].Cells[2].Value.ToString(); //机器端口 myTerminal.TerminalID = dataGridView1.Rows[i].Cells[3].Value.ToString(); //机器编号 string VcClass = dataGridView1.Rows[i].Cells[4].Value.ToString();//机器型号 string VcAddress=dataGridView1.Rows[i].Cells[5].Value.ToString();//机器安装地址 string VcTerminalID = dataGridView1.Rows[i].Cells[3].Value.ToString();//机器编号-日志表用 string VcZy = dataGridView1.Rows[i].Cells[6].Value.ToString();//机器作用(宝宝在线) if (myTerminal.isAlive() == true)//判断连接是否成功 { ProgressBar.Maximum = UserSum();//获取被勾选人员总数 赋值给计数器 int UserCont_Yse=0;//成功人数计数 int UserCont_No=0;//失败人数计数 if (XmlBb() == "宝宝在线" && dataGridView2.RowCount==0) { //显示表格 vpersonalBindingSource.DataSource = SqSlt.SqlGeneral(@"select emname,emworkno,emsex,emzw,emBirthDay,emtel,emcard,emkxh,per_id from Vpersonal where deptno='" VcZy "'", "Vpersonal", PbCls.SqlData(listBox2)[1].ToString()); //-------------- for (int ic = 0; ic < dataGridView2.RowCount; ic ) { //给所有行赋值为勾选状态 DataGridViewCheckBoxCell checkBox = (DataGridViewCheckBoxCell)this.dataGridView2.Rows[ic].Cells[0]; checkBox.Value = 1; } ProgressBar.Maximum = dataGridView2.RowCount;//获取总数 } for (int i1 = 0; i1 < dataGridView2.RowCount; i1 )//二级循环,循环人员列表 { string UsValue = dataGridView2.Rows[i1].Cells[0].EditedFormattedValue.ToString(); if (UsValue == "True")//判断人员是否被选中 { string VpName = dataGridView2.Rows[i1].Cells[1].Value.ToString();//姓名 string VpWork = dataGridView2.Rows[i1].Cells[2].Value.ToString();//工号 string VpCard = dataGridView2.Rows[i1].Cells[7].Value.ToString();//卡号 string VpKxh = dataGridView2.Rows[i1].Cells[8].Value.ToString();//卡序号 if (VpKxh.Length == 8)//卡序号长度为8才进行位数颠倒 { VpKxh = VpKxh.Substring(6, 2) VpKxh.Substring(4, 2) VpKxh.Substring(2, 2) VpKxh.Substring(0, 2); } string VpPerId = dataGridView2.Rows[i1].Cells[9].Value.ToString();//唯一编号 try { string XCls= UserCardType(VpCard, VpKxh)[1].ToString();//卡类型 if (XCls == "4-ID" && VcClass == "FID-30")//判断下发卡号是否为4字节(ID卡) { //下发ID卡 4字节 myTerminal.RegUserData(UserCardType(VpCard, VpKxh)[0].ToString(), true, 1, 01, VpName, VpWork, 1, true, 4, "00:00", "00:00", "", 4, false, System.DateTime.Now, System.DateTime.Now, "", 0, 352, null); ProgressBar.PerformStep();//计数器开始计算 UserCont_Yse = UserCont_Yse 1;//计算 1 } else if (XCls == "4-IC" && VcClass == "FIC-30")//判断下发卡号是否为4字节(IC卡) { //下发IC卡 4字节 myTerminal.RegUserData(Convert.ToInt64(UserCardType(VpCard, VpKxh)[0].ToString(), 16).ToString(), true, 1, 01, VpName, VpWork, 1, true, 4, "00:00", "00:00", "", 4, false, System.DateTime.Now, System.DateTime.Now, "", 0, 352, null); ProgressBar.PerformStep();//计数器开始计算 UserCont_Yse = UserCont_Yse 1;//计算 1 } else if (XCls == "7" && (VcClass == "FIC-10" || VcClass == "FIC-30-A"))//判断下发卡号是否为7字节 { //下发手机卡 7字节 myTerminal.RegUserData(VpPerId, true, 1, 01, VpName, UserCardType(VpCard, VpKxh)[0].ToString(), 1, true, 4, "00:00", "00:00", "", 4, false, System.DateTime.Now, System.DateTime.Now, "", 0, 352, null); ProgressBar.PerformStep();//计数器开始计算 UserCont_Yse = UserCont_Yse 1;//计算 1 } else { ProgressBar.PerformStep();//计数器开始计算 UserCont_No = UserCont_No 1;//计算 1 try { string StrcRy = System.DateTime.Now.ToShortDateString(); string StrcSf = System.DateTime.Now.ToLongTimeString(); StrcRy = DateTime.Parse(StrcRy).ToString("yyyy-MM-dd"); StrcSf = DateTime.Parse(StrcSf).ToString("HH:mm:ss"); string LogDtm = StrcRy " " StrcSf ".000"; string LogCl = VpName "卡号下传不匹配"; SqSlt.SqlOperation(@"insert JqJlLog(JqJlLog_Card,JqCZLog_datetime,JqCZLog_machi,JqCZLog_zt,JqCZLog_class) values('" VpKxh "','" LogDtm "','" VcTerminalID "','" LogCl "','下传人员')", "JqJlLog", PbCls.SqlData(listBox2)[1].ToString()); } catch { listBox1.Items.Add("机器编号: " myTerminal.TerminalID "记录日志写入失败"); listBox1.Items.Add(""); } } //写入下传人员备份文本 string StrcRyc = System.DateTime.Now.ToShortDateString(); string StrcSfc = System.DateTime.Now.ToLongTimeString(); StrcRyc = DateTime.Parse(StrcRyc).ToString("yyyyMMdd"); StrcSfc = DateTime.Parse(StrcSfc).ToString("HHmm"); string LogDtmc = StrcRyc StrcSfc; StreamWriter TxtServer = new StreamWriter(Application.StartupPath "\\DowLod" StrcRyc ".txt", true, Encoding.GetEncoding("GB2312")); TxtServer.WriteLine("卡号:" UserCardType(VpCard, VpKxh)[0].ToString() " 姓名:" VpName " 传入时间" StrcRyc StrcSfc); TxtServer.Close(); } catch { ProgressBar.PerformStep();//计数器开始计算 UserCont_No = UserCont_No 1;//计算 1 //写入日志 操作日志表 try { string StrcRy = System.DateTime.Now.ToShortDateString(); string StrcSf = System.DateTime.Now.ToLongTimeString(); StrcRy = DateTime.Parse(StrcRy).ToString("yyyy-MM-dd"); StrcSf = DateTime.Parse(StrcSf).ToString("HH:mm:ss"); string LogDtm = StrcRy " " StrcSf ".000"; string LogCl = VpName "人员下传失败"; SqSlt.SqlOperation(@"insert JqJlLog(JqJlLog_Card,JqCZLog_datetime,JqCZLog_machi,JqCZLog_zt,JqCZLog_class) values('" VpKxh "','" LogDtm "','" VcTerminalID "','" LogCl "','下传人员')", "JqJlLog", PbCls.SqlData(listBox2)[1].ToString()); } catch { listBox1.Items.Add("机器编号: " myTerminal.TerminalID "记录日志写入失败"); listBox1.Items.Add(""); } } if (ProgressBar.Value == ProgressBar.Maximum) { //下载详细信息显示 listBox1.Items.Add("机器编号: " myTerminal.TerminalID); listBox1.Items.Add("安装地址:" VcAddress); listBox1.Items.Add("连接状态:" "已连接"); listBox1.Items.Add("应下发人员总数:" ProgressBar.Maximum.ToString() "人"); listBox1.Items.Add("成功总数:" UserCont_Yse.ToString() "人"); listBox1.Items.Add("失败总数:" UserCont_No.ToString() "人"); listBox1.Items.Add(""); ProgressBar.Value = 0; //----------------- //写入日志 操作日志表 try { string StrcRy = System.DateTime.Now.ToShortDateString(); string StrcSf = System.DateTime.Now.ToLongTimeString(); StrcRy = DateTime.Parse(StrcRy).ToString("yyyy-MM-dd"); StrcSf = DateTime.Parse(StrcSf).ToString("HH:mm:ss"); string LogDtm = StrcRy " " StrcSf ".000"; string LogMesg = "应下发人员总数:" ProgressBar.Maximum.ToString() "人 " "成功总数:" UserCont_Yse.ToString() "人 " "失败总数:" UserCont_No.ToString() "人"; SqSlt.SqlOperation(@"insert JqCZLog(JqCZLog_Jqh,JqCZLog_datetime,JqCZLog_mesg) values('" VcTerminalID "','" LogDtm "','" LogMesg "')", "JqCZLog", PbCls.SqlData(listBox2)[1].ToString()); } catch { listBox1.Items.Add("机器编号: " myTerminal.TerminalID "日志写入失败"); listBox1.Items.Add(""); } } } } if (UserSum() == 0) { //下载详细信息显示 listBox1.Items.Add("机器编号: " myTerminal.TerminalID); listBox1.Items.Add("安装地址:" VcAddress); listBox1.Items.Add("连接状态:" "已连接"); listBox1.Items.Add("应下发人员总数:0人"); listBox1.Items.Add("成功总数:0人"); listBox1.Items.Add("失败总数:0人"); listBox1.Items.Add(""); ProgressBar.Value = 0; //----------------- } } else { //下载详细信息显示 listBox1.Items.Add("机器编号: " myTerminal.TerminalID); listBox1.Items.Add("安装地址:" VcAddress); listBox1.Items.Add("连接状态:" "连接失败"); listBox1.Items.Add("应下发人员总数:" ProgressBar.Maximum.ToString() "人"); listBox1.Items.Add("成功总数:0人"); listBox1.Items.Add("失败总数:" ProgressBar.Maximum.ToString() "人"); listBox1.Items.Add(""); ProgressBar.Value = 0; //----------------- //写入日志 操作日志表 try { string StrcRy = System.DateTime.Now.ToShortDateString(); string StrcSf = System.DateTime.Now.ToLongTimeString(); StrcRy = DateTime.Parse(StrcRy).ToString("yyyy-MM-dd"); StrcSf = DateTime.Parse(StrcSf).ToString("HH:mm:ss"); string LogDtm = StrcRy " " StrcSf ".000"; string LogMesg = "应下发人员总数:" ProgressBar.Maximum.ToString() "人 " "成功总数:0人 " "失败总数:" ProgressBar.Maximum.ToString() "人"; SqSlt.SqlOperation(@"insert JqCZLog(JqCZLog_Jqh,JqCZLog_datetime,JqCZLog_mesg) values('" VcTerminalID "','" LogDtm "','" LogMesg "')", "JqCZLog", PbCls.SqlData(listBox2)[1].ToString()); } catch { listBox1.Items.Add("机器编号: " myTerminal.TerminalID "日志写入失败"); listBox1.Items.Add(""); } } } } sbStart.Enabled = true;//恢复人员下传按钮 } //-----------------------------------各类方法--------------------------------------// /// <summary> ///显示部门树 支持7级 /// </summary> /// <returns></returns> public void Epartment() { TreeNode th = new TreeNode(); th.Text = SqSlt.SqlGeneral("select deptid,deptno,deptname from dept where len(deptno)=2", "dept", PbCls.SqlData(listBox2)[1].ToString()).Tables["dept"].Rows[0][2].ToString(); treeView1.Nodes.Add(th); treeView1.Nodes[0].Expand(); DataSet kl1 = SqSlt.SqlGeneral("select deptid,deptno,deptname from dept where len(deptno)=4", "dept", PbCls.SqlData(listBox2)[1].ToString());//4 DataSet kl2 = SqSlt.SqlGeneral("select deptid,deptno,deptname from dept where len(deptno)=6", "dept", PbCls.SqlData(listBox2)[1].ToString());//6 DataSet kl3 = SqSlt.SqlGeneral("select deptid,deptno,deptname from dept where len(deptno)=8", "dept", PbCls.SqlData(listBox2)[1].ToString());//8 DataSet kl4 = SqSlt.SqlGeneral("select deptid,deptno,deptname from dept where len(deptno)=10", "dept", PbCls.SqlData(listBox2)[1].ToString());//10 DataSet kl5 = SqSlt.SqlGeneral("select deptid,deptno,deptname from dept where len(deptno)=12", "dept", PbCls.SqlData(listBox2)[1].ToString());//12 for (int i1 = 0; i1 < kl1.Tables["dept"].Rows.Count; i1 )//循环第二级总数 { TreeNode th1 = new TreeNode(); th1.Text = kl1.Tables["dept"].Rows[i1][2].ToString();//获取二级数据 treeView1.Nodes[0].Nodes.Add(th1);//二级节点填充完毕 treeView1.Nodes[0].Expand(); } for (int i2 = 0; i2 < kl2.Tables["dept"].Rows.Count; i2 )//循环第三级总数 { TreeNode th2 = new TreeNode(); th2.Text = kl2.Tables["dept"].Rows[i2][2].ToString();//获取三级数 for (int i2_2 = 0; i2_2 < treeView1.Nodes[0].Nodes.Count; i2_2 )//循环填充 { if (treeView1.Nodes[0].Nodes[i2_2].Text == SqSlt.SqlGeneral(@"select deptid,deptno,deptname from dept where deptno=" kl2.Tables["dept"].Rows[i2][1].ToString().Substring(0, 4) "", "dept", PbCls.SqlData(listBox2)[1].ToString()).Tables["dept"].Rows[0][2].ToString()) { treeView1.Nodes[0].Nodes[i2_2].Nodes.Add(th2);//填充三级 } } } for (int i3 = 0; i3 < kl3.Tables["dept"].Rows.Count; i3 )//循环四级总数 { TreeNode th3 = new TreeNode(); th3.Text = kl3.Tables["dept"].Rows[i3][2].ToString();//获取四级数据 for (int i3_2 = 0; i3_2 < treeView1.Nodes[0].Nodes.Count; i3_2 )//循环填充 { for (int i3_2_1 = 0; i3_2_1 < treeView1.Nodes[0].Nodes[i3_2].Nodes.Count; i3_2_1 ) { if ((treeView1.Nodes[0].Nodes[i3_2].Nodes[i3_2_1].Text == SqSlt.SqlGeneral(@"select deptid,deptno,deptname from dept where deptno=" kl3.Tables["dept"].Rows[i3][1].ToString().Substring(0, 6) "", "dept", PbCls.SqlData(listBox2)[1].ToString()).Tables["dept"].Rows[0][2].ToString())) { treeView1.Nodes[0].Nodes[i3_2].Nodes[i3_2_1].Nodes.Add(th3);//填充四级 } } } } for (int i4 = 0; i4 < kl4.Tables["dept"].Rows.Count; i4 )//循环五级总数 { TreeNode th4 = new TreeNode(); th4.Text = kl4.Tables["dept"].Rows[i4][2].ToString();//获取五级数据 for (int i4_2 = 0; i4_2 < treeView1.Nodes[0].Nodes.Count; i4_2 )//循环填充 { for (int i4_2_1 = 0; i4_2_1 < treeView1.Nodes[0].Nodes[i4_2].Nodes.Count; i4_2_1 ) { for (int i4_2_1_1 = 0; i4_2_1_1 < treeView1.Nodes[0].Nodes[i4_2].Nodes[i4_2_1].Nodes.Count; i4_2_1_1 ) { if ((treeView1.Nodes[0].Nodes[i4_2].Nodes[i4_2_1].Nodes[i4_2_1_1].Text == SqSlt.SqlGeneral(@"select deptid,deptno,deptname from dept where deptno=" kl4.Tables["dept"].Rows[i4][1].ToString().Substring(0, 8) "", "dept", PbCls.SqlData(listBox2)[1].ToString()).Tables["dept"].Rows[0][2].ToString())) { treeView1.Nodes[0].Nodes[i4_2].Nodes[i4_2_1].Nodes[i4_2_1_1].Nodes.Add(th4);//填充五级 } } } } } } /// <summary> /// 定制厂家宝宝在线部门导入 /// </summary> /// <returns></returns> public void BBEpartment() { DataSet BmSum = SqSlt.SqlGeneral("select masty,eaname0 from Vmachine", "Vmachine", PbCls.SqlData(listBox2)[1].ToString());//获取定制部门列表 DataSet YktBmSum = SqSlt.SqlGeneral("select max(deptno) 1 from dept", "dept", PbCls.SqlData(listBox2)[1].ToString());//获取一卡通部门列表最大节点 string JdMax = YktBmSum.Tables["dept"].Rows[0][0].ToString();//获取部门最大编号 for (int i1 = 0; i1 < BmSum.Tables["Vmachine"].Rows.Count; i1 )//循环定制部门总数 { string BBbx = BmSum.Tables["Vmachine"].Rows[i1]["masty"].ToString(); if (SqSlt.SqlIfData(@"select deptname from dept where deptname='" BmSum.Tables["Vmachine"].Rows[i1]["eaname0"].ToString() "'" , "dept", PbCls.SqlData(listBox2)[1].ToString()) == true) { if (JdMax == "11") { SqSlt.SqlOperation(@"insert dept(deptno,deptname,depttel) values('1001','" BmSum.Tables["Vmachine"].Rows[i1]["eaname0"].ToString() "','" BBbx "')", "dept", PbCls.SqlData(listBox2)[1].ToString()); } else { SqSlt.SqlOperation(@"insert dept(deptno,deptname,depttel) values('" JdMax "','" BmSum.Tables["Vmachine"].Rows[i1]["eaname0"].ToString() "','" BBbx "')", "dept", PbCls.SqlData(listBox2)[1].ToString()); } } } } /// <summary> /// 定制厂家宝宝在线人员导入 /// </summary> /// <returns></returns> public void BBloadUser() { DataSet BBh = SqSlt.SqlGeneral("select masty from Vmachine", "Vmachine", PbCls.SqlData(listBox2)[1].ToString());//获取机器列表中幼儿园列表 for (int i = 0; i < BBh.Tables["Vmachine"].Rows.Count; i )//循环学校列表 一级 { string BBxh = BBh.Tables["Vmachine"].Rows[i]["masty"].ToString(); DataSet BBuserSlt = SqSlt.SqlGeneral(@"exec pOrganListCardSerialNameBySchool @SchoolNo='" BBxh "',@CardCounter=1", "pOrganListCardSerialNameBySchool", PbCls.SqlData(listBox2)[1].ToString());//获取人员信息 for (int i1 = 0; i1 < BBuserSlt.Tables["pOrganListCardSerialNameBySchool"].Rows.Count; i1 )//循环获取到人员列表 二级 { string BBvname= BBuserSlt.Tables["pOrganListCardSerialNameBySchool"].Rows[i1][2].ToString();//宝宝姓名 string BBvcard= BBuserSlt.Tables["pOrganListCardSerialNameBySchool"].Rows[i1][1].ToString();//宝宝卡号 99开头 if (SqSlt.SqlIfData(@"select emname from Vpersonal where emname='" BBvname "' and emcard='" BBvcard "'" , "Vpersonal", PbCls.SqlData(listBox2)[1].ToString()) == true)//判断是否重复 { SqSlt.SqlOperation(@"insert Vpersonal(emname,emworkno,emsex,emzw,emcard,emkxh,_emstate,_emfk,deptno,emCode) values('" BBvname "','" BBvcard "','无','宝宝','" BBvcard "','AAAAAAAA','正常','已发卡','" BBxh "','" BBvcard "')", "Vpersonal", PbCls.SqlData(listBox2)[1].ToString());//写入人员 //写入导入人员备份文本 string StrcRy = System.DateTime.Now.ToShortDateString(); string StrcSf = System.DateTime.Now.ToLongTimeString(); StrcRy = DateTime.Parse(StrcRy).ToString("yyyyMMdd"); StrcSf = DateTime.Parse(StrcSf).ToString("HHmm"); string LogDtm = StrcRy StrcSf; StreamWriter TxtServer = new StreamWriter(Application.StartupPath "\\UserLoad" StrcRy ".txt", true, Encoding.GetEncoding("GB2312")); TxtServer.WriteLine("卡号:" BBvcard " 姓名:" BBvname " 导入时间" StrcRy StrcSf); TxtServer.Close(); } } } } /// <summary> /// 返回(四字节 或 七字节)与实际卡号 /// </summary> /// <param name="EmCard">卡号</param> /// <param name="EmKxh">卡序号</param> /// <returns></returns> public string[] UserCardType(string EmCard,string EmKxh) { //声明数组返回值 string[] General = new string[2]; if (EmKxh.Length == 16 && EmKxh.Substring(0, 8) == "00000000")//判断是否为ID卡(机器卡号位置) { General[0] = EmCard;//卡号 General[1] = "4-ID";//字节 } if (EmKxh.Length == 8 && EmCard.Length !=14)//判断是否为IC卡(4字节 机器卡号位置) { General[0] = EmKxh;//卡号 General[1] = "4-IC";//字节 } if (EmKxh.Length == 8 && EmCard.Length == 14 && EmCard.Substring(0, 2) == "99")//判断IC是否十区加密(7字节 机器工号位置) { General[0] = EmCard;//卡号 General[1] = "7";//字节 } if (EmKxh.Length == 16 && EmCard.Substring(0, 2) == "88")//判断是否为手机卡 7字节(工号位置) { General[0] = EmKxh.Substring(2,14);//卡号 General[1] = "7";//字节 } return General; } /// <summary> /// 返回 当前被勾选下载人员总数量 /// </summary> /// <returns></returns> public int UserSum() { int Sm = 0;//计数 for (int i1 = 0; i1 < dataGridView2.RowCount; i1 )//二级循环,循环人员列表 { string UsValue = dataGridView2.Rows[i1].Cells[0].EditedFormattedValue.ToString(); if (UsValue == "True")//判断人员是否被选中 { Sm = Sm 1; } } return Sm; } /// <summary> /// 返回 刷卡数据 /// </summary> /// <param name="VcType">机器型号</param> /// <returns></returns> //public string[] DataAnalysis(string VcType) //{ // //声明数组返回值 // string[] General = new string[4]; // if (VcType == "FID-30") // { // } //} /// <summary> /// 删除人员信息 /// </summary> /// <returns></returns> private void UserDelte_Click_1(object sender, EventArgs e) { if (TimerSs.Enabled == true) { MessageBox.Show("请先关闭实时采集"); return; } if (MessageBox.Show("确认删除机器中指定人员信息么?", "删除人员信息提示", MessageBoxButtons.YesNo) == DialogResult.Yes) { listBox1.Items.Clear(); UserDelte.Enabled = false;//暂时停用人员删除按钮 for (int i = 0; i < dataGridView1.RowCount; i )//一级循环,循环机器列表 { string ReValue = dataGridView1.Rows[i].Cells[0].EditedFormattedValue.ToString(); if (ReValue == "True")//判断是否机器被选中 { myTerminal.IPAddress = dataGridView1.Rows[i].Cells[1].Value.ToString();//机器IP myTerminal.Port = dataGridView1.Rows[i].Cells[2].Value.ToString(); //机器端口 myTerminal.TerminalID = dataGridView1.Rows[i].Cells[3].Value.ToString(); //机器编号 string VcClass = dataGridView1.Rows[i].Cells[4].Value.ToString();//机器型号 string VcAddress = dataGridView1.Rows[i].Cells[5].Value.ToString();//机器安装地址 string VcTerminalID = dataGridView1.Rows[i].Cells[3].Value.ToString();//机器编号-日志表用 if (myTerminal.isAlive() == true)//判断连接是否成功 { ProgressBar.Maximum = UserSum();//获取被勾选人员总数 赋值给计数器 int UserCont_Yse = 0;//成功人数计数 int UserCont_No = 0;//失败人数计数 for (int i1 = 0; i1 < dataGridView2.RowCount; i1 )//二级循环,循环人员列表 { string UsValue = dataGridView2.Rows[i1].Cells[0].EditedFormattedValue.ToString(); if (UsValue == "True")//判断人员是否被选中 { string VpCard = dataGridView2.Rows[i1].Cells[7].Value.ToString();//卡号 string VpKxh = dataGridView2.Rows[i1].Cells[8].Value.ToString();//卡序号 string VpPerId = dataGridView2.Rows[i1].Cells[9].Value.ToString();//唯一编号 string VpName = dataGridView2.Rows[i1].Cells[1].Value.ToString();//姓名 try { if (VcClass == "FIC-10" || VcClass == "FIC-30-A") { myTerminal.DeleteUser(VpPerId);//删除指定人员 ProgressBar.PerformStep();//计数器开始计算 UserCont_Yse = UserCont_Yse 1;//计算 1 } if (VcClass == "FID-30") { myTerminal.DeleteUser(VpCard);//删除指定人员 ProgressBar.PerformStep();//计数器开始计算 UserCont_Yse = UserCont_Yse 1;//计算 1 } if (VcClass == "FIC-30") { myTerminal.DeleteUser(Convert.ToInt64(VpKxh, 16).ToString());//删除指定人员 ProgressBar.PerformStep();//计数器开始计算 UserCont_Yse = UserCont_Yse 1;//计算 1 } //写入删除人员备份文本 string StrcRyc = System.DateTime.Now.ToShortDateString(); string StrcSfc = System.DateTime.Now.ToLongTimeString(); StrcRyc = DateTime.Parse(StrcRyc).ToString("yyyyMMdd"); StrcSfc = DateTime.Parse(StrcSfc).ToString("HHmm"); string LogDtmc = StrcRyc StrcSfc; StreamWriter TxtServer = new StreamWriter(Application.StartupPath "\\DeleteUser" StrcRyc ".txt", true, Encoding.GetEncoding("GB2312")); TxtServer.WriteLine("卡号:" VpCard " 姓名:" VpName " 删除时间" StrcRyc StrcSfc); TxtServer.Close(); } catch { ProgressBar.PerformStep();//计数器开始计算 UserCont_No = UserCont_No 1;//计算 1 //写入日志 操作日志表 try { string StrcRy = System.DateTime.Now.ToShortDateString(); string StrcSf = System.DateTime.Now.ToLongTimeString(); StrcRy = DateTime.Parse(StrcRy).ToString("yyyy-MM-dd"); StrcSf = DateTime.Parse(StrcSf).ToString("HH:mm:ss"); string LogDtm = StrcRy " " StrcSf ".000"; string LogCl = VpName "人员删除失败"; SqSlt.SqlOperation(@"insert JqJlLog(JqJlLog_Card,JqCZLog_datetime,JqCZLog_machi,JqCZLog_zt,JqCZLog_class) values('" VpKxh "','" LogDtm "','" VcTerminalID "','" LogCl "','删除人员')", "JqJlLog", PbCls.SqlData(listBox2)[1].ToString()); } catch { listBox1.Items.Add("机器编号: " myTerminal.TerminalID "记录日志写入失败"); listBox1.Items.Add(""); } } if (ProgressBar.Value == ProgressBar.Maximum) { //删除详细信息显示 listBox1.Items.Add("机器编号: " myTerminal.TerminalID); listBox1.Items.Add("安装地址:" VcAddress); listBox1.Items.Add("连接状态:" "已连接"); listBox1.Items.Add("应删除总人数:" ProgressBar.Maximum.ToString() "人"); listBox1.Items.Add("成功总数:" UserCont_Yse.ToString() "人"); listBox1.Items.Add("失败总数:" UserCont_No.ToString() "人"); listBox1.Items.Add(""); ProgressBar.Value = 0; //----------------- //写入日志 操作日志表 try { string StrcRy = System.DateTime.Now.ToShortDateString(); string StrcSf = System.DateTime.Now.ToLongTimeString(); StrcRy = DateTime.Parse(StrcRy).ToString("yyyy-MM-dd"); StrcSf = DateTime.Parse(StrcSf).ToString("HH:mm:ss"); string LogDtm = StrcRy " " StrcSf ".000"; string LogMesg = "应删除总人数:" ProgressBar.Maximum.ToString() "人 " "成功总数:" UserCont_Yse.ToString() "人 " "失败总数:" UserCont_No.ToString() "人"; SqSlt.SqlOperation(@"insert JqCZLog(JqCZLog_Jqh,JqCZLog_datetime,JqCZLog_mesg) values('" VcTerminalID "','" LogDtm "','" LogMesg "')", "JqCZLog", PbCls.SqlData(listBox2)[1].ToString()); } catch { listBox1.Items.Add("机器编号: " myTerminal.TerminalID "日志写入失败"); listBox1.Items.Add(""); } } } } if (UserSum() == 0) { //删除详细信息显示 listBox1.Items.Add("机器编号: " myTerminal.TerminalID); listBox1.Items.Add("安装地址:" VcAddress); listBox1.Items.Add("连接状态:" "已连接"); listBox1.Items.Add("应删除总人数:0人"); listBox1.Items.Add("成功总数:0人"); listBox1.Items.Add("失败总数:0人"); listBox1.Items.Add(""); ProgressBar.Value = 0; //----------------- } } else { //删除详细信息显示 listBox1.Items.Add("机器编号: " myTerminal.TerminalID); listBox1.Items.Add("安装地址:" VcAddress); listBox1.Items.Add("连接状态:" "连接失败"); listBox1.Items.Add("应删除总人数:" ProgressBar.Maximum.ToString() "人"); listBox1.Items.Add("成功总数:0人"); listBox1.Items.Add("失败总数:" ProgressBar.Maximum.ToString() "人"); listBox1.Items.Add(""); ProgressBar.Value = 0; //----------------- //写入日志 操作日志表 try { string StrcRy = System.DateTime.Now.ToShortDateString(); string StrcSf = System.DateTime.Now.ToLongTimeString(); StrcRy = DateTime.Parse(StrcRy).ToString("yyyy-MM-dd"); StrcSf = DateTime.Parse(StrcSf).ToString("HH:mm:ss"); string LogDtm = StrcRy " " StrcSf ".000"; string LogMesg = "应删除总人数:" ProgressBar.Maximum.ToString() "人 " "成功总数:0人 " "失败总数:" ProgressBar.Maximum.ToString() "人"; SqSlt.SqlOperation(@"insert JqCZLog(JqCZLog_Jqh,JqCZLog_datetime,JqCZLog_mesg) values('" VcTerminalID "','" LogDtm "','" LogMesg "')", "JqCZLog", PbCls.SqlData(listBox2)[1].ToString()); } catch { listBox1.Items.Add("机器编号: " myTerminal.TerminalID "日志写入失败"); listBox1.Items.Add(""); } } } } UserDelte.Enabled = true;//恢复停用人员删除按钮 } } /// <summary> /// 全部人员删除 /// </summary> /// <returns></returns> private void sbSuspend_Click(object sender, EventArgs e) { if (TimerSs.Enabled == true) { MessageBox.Show("请先关闭实时采集"); return; } if (MessageBox.Show("确认删除机器中所有人员信息么?", "删除人员信息提示", MessageBoxButtons.YesNo) == DialogResult.Yes) { listBox1.Items.Clear(); sbSuspend.Enabled = false;//暂时停用人员全部删除按钮 for (int i = 0; i < dataGridView1.RowCount; i )//一级循环,循环机器列表 { string ReValue = dataGridView1.Rows[i].Cells[0].EditedFormattedValue.ToString(); if (ReValue == "True")//判断是否机器被选中 { myTerminal.IPAddress = dataGridView1.Rows[i].Cells[1].Value.ToString();//机器IP myTerminal.Port = dataGridView1.Rows[i].Cells[2].Value.ToString(); //机器端口 myTerminal.TerminalID = dataGridView1.Rows[i].Cells[3].Value.ToString(); //机器编号 string VcClass = dataGridView1.Rows[i].Cells[4].Value.ToString();//机器型号 string VcAddress = dataGridView1.Rows[i].Cells[5].Value.ToString();//机器安装地址 string VcTerminalID = dataGridView1.Rows[i].Cells[3].Value.ToString();//机器编号-日志表用 if (myTerminal.isAlive() == true)//判断连接是否成功 { string UserMax = myTerminal.QueryCurrentRegUsers().ToString(); myTerminal.DeleteAllUsers();//删除所有用户 //删除详细信息显示 listBox1.Items.Add("机器编号: " myTerminal.TerminalID); listBox1.Items.Add("安装地址:" VcAddress); listBox1.Items.Add("连接状态:" "已连接"); listBox1.Items.Add("应删除总人数:" UserMax "人"); listBox1.Items.Add("成功总数:" UserMax "人"); listBox1.Items.Add("失败总数:0人"); listBox1.Items.Add(""); //写入日志 操作日志表 try { string StrcRy = System.DateTime.Now.ToShortDateString(); string StrcSf = System.DateTime.Now.ToLongTimeString(); StrcRy = DateTime.Parse(StrcRy).ToString("yyyy-MM-dd"); StrcSf = DateTime.Parse(StrcSf).ToString("HH:mm:ss"); string LogDtm = StrcRy " " StrcSf ".000"; string LogMesg = "应删除总人数:" UserMax "人 " "成功总数:0人 " "失败总数:0人"; SqSlt.SqlOperation(@"insert JqCZLog(JqCZLog_Jqh,JqCZLog_datetime,JqCZLog_mesg) values('" VcTerminalID "','" LogDtm "','" LogMesg "')", "JqCZLog", PbCls.SqlData(listBox2)[1].ToString()); } catch { listBox1.Items.Add("机器编号: " myTerminal.TerminalID "日志写入失败"); listBox1.Items.Add(""); } } else { //删除详细信息显示 listBox1.Items.Add("机器编号: " myTerminal.TerminalID); listBox1.Items.Add("安装地址:" VcAddress); listBox1.Items.Add("连接状态:" "失败"); listBox1.Items.Add("应删除总人数:0人"); listBox1.Items.Add("成功总数:0人"); listBox1.Items.Add("失败总数:0人"); listBox1.Items.Add(""); //写入日志 操作日志表 try { string StrcRy = System.DateTime.Now.ToShortDateString(); string StrcSf = System.DateTime.Now.ToLongTimeString(); StrcRy = DateTime.Parse(StrcRy).ToString("yyyy-MM-dd"); StrcSf = DateTime.Parse(StrcSf).ToString("HH:mm:ss"); string LogDtm = StrcRy " " StrcSf ".000"; string LogMesg = "应删除总人数:0人 " "成功总数:0人 " "失败总数:0人"; SqSlt.SqlOperation(@"insert JqCZLog(JqCZLog_Jqh,JqCZLog_datetime,JqCZLog_mesg) values('" VcTerminalID "','" LogDtm "','" LogMesg "')", "JqCZLog", PbCls.SqlData(listBox2)[1].ToString()); } catch { listBox1.Items.Add("机器编号: " myTerminal.TerminalID "日志写入失败"); listBox1.Items.Add(""); } } } } sbSuspend.Enabled = true;//启用人员全部删除按钮 } } /// <summary> /// 采集数据 /// </summary> /// <returns></returns> private void sbOpen_Click(object sender, EventArgs e) { if (TimerSs.Enabled == true) { MessageBox.Show("请先关闭实时采集"); return; } listBox1.Items.Clear(); //sbOpen.Enabled = false;//暂时停用采集数据按钮 for (int i = 0; i < dataGridView1.RowCount; i )//一级循环,循环机器列表 { string ReValue = dataGridView1.Rows[i].Cells[0].EditedFormattedValue.ToString();//选中机器 string VcTerminalID = dataGridView1.Rows[i].Cells[3].Value.ToString();//机器编号-日志表用 if (ReValue == "True")//判断是否机器被选中 { myTerminal.IPAddress = dataGridView1.Rows[i].Cells[1].Value.ToString();//机器IP myTerminal.Port = dataGridView1.Rows[i].Cells[2].Value.ToString(); //机器端口 myTerminal.TerminalID = dataGridView1.Rows[i].Cells[3].Value.ToString(); //机器编号 string VcClass = dataGridView1.Rows[i].Cells[4].Value.ToString();//机器型号 string VcAddress = dataGridView1.Rows[i].Cells[5].Value.ToString();//机器安装地址 int UserCont_Yse = 0;//成功采集计数 int UserCont_No = 0;//失败采集计数 if (myTerminal.isAlive() == true)//判断连接是否成功 { try { byte[] reLog = (byte[])myTerminal.RetOldestNoACKLogB();//获取记录总维数 string Lg = Convert.ToString(reLog[3], 10);//获取当前机器中记录总数 int DataMax = Convert.ToInt32(Lg); if (DataMax == 0) { listBox1.Items.Add("机器编号: " VcTerminalID " 无记录可采集"); return; } try { ProgressBar.Maximum = DataMax - 1;//给计数器赋值 DateCollection(VcClass, VcTerminalID, reLog); //首次获取一笔 UserCont_Yse = UserCont_Yse 1;//计算 1 } catch { ProgressBar.Maximum = ProgressBar.Maximum 1; listBox1.Items.Add("机器编号: " VcTerminalID); listBox1.Items.Add("安装地址:" VcAddress); listBox1.Items.Add("连接状态:" "记录获取异常"); listBox1.Items.Add("应采集记录总数:" ProgressBar.Maximum "条"); listBox1.Items.Add("成功总数:0条"); listBox1.Items.Add("失败总数:" ProgressBar.Maximum "条"); listBox1.Items.Add(""); ProgressBar.Value = 0; //写入操作日志 try { //获取人员唯一编号失败, 数据库personal查无此人 string StrcRy = System.DateTime.Now.ToShortDateString(); string StrcSf = System.DateTime.Now.ToLongTimeString(); StrcRy = DateTime.Parse(StrcRy).ToString("yyyy-MM-dd"); StrcSf = DateTime.Parse(StrcSf).ToString("HH:mm:ss"); string LogDtm = StrcRy " " StrcSf ".000"; string LogCl = "记录获取异常,记录仍在机器中"; SqSlt.SqlOperation(@"insert JqJlLog(JqJlLog_Card,JqCZLog_datetime,JqCZLog_machi,JqCZLog_zt,JqCZLog_class) values('无','" LogDtm "','" VcTerminalID "','" LogCl "','数据采集')", "JqJlLog", PbCls.SqlData(listBox2)[1].ToString()); } catch { listBox1.Items.Add("机器编号: " VcTerminalID "日志写入失败"); listBox1.Items.Add(""); } } for (int Mc = 0; Mc < ProgressBar.Maximum; Mc )//二级循环 循环记录总数并进行采集 { byte[] re = (byte[])myTerminal.RetOldestNoACKLogB();//获取记录总维数 DateCollection(VcClass, VcTerminalID, re); ProgressBar.PerformStep();//计数器开始计算 UserCont_Yse = UserCont_Yse 1;//计算 1 } } catch { // 判定机器获取记录失败 UserCont_No = UserCont_No 1;//计算 1 ProgressBar.PerformStep();//计数器开始计算 //写入操作日志 try { //获取人员唯一编号失败, 数据库personal查无此人 string StrcRy = System.DateTime.Now.ToShortDateString(); string StrcSf = System.DateTime.Now.ToLongTimeString(); StrcRy = DateTime.Parse(StrcRy).ToString("yyyy-MM-dd"); StrcSf = DateTime.Parse(StrcSf).ToString("HH:mm:ss"); string LogDtm = StrcRy " " StrcSf ".000"; string LogCl = "机器获取记录失败,记录仍在机器中"; SqSlt.SqlOperation(@"insert JqJlLog(JqJlLog_Card,JqCZLog_datetime,JqCZLog_machi,JqCZLog_zt,JqCZLog_class) values('无','" LogDtm "','" VcTerminalID "','" LogCl "','数据采集')", "JqJlLog", PbCls.SqlData(listBox2)[1].ToString()); } catch { listBox1.Items.Add("机器编号: " VcTerminalID "日志写入失败"); listBox1.Items.Add(""); } } if (ProgressBar.Value == ProgressBar.Maximum) { //下载详细信息显示 ProgressBar.Maximum = ProgressBar.Maximum 1; listBox1.Items.Add("机器编号: " VcTerminalID); listBox1.Items.Add("安装地址:" VcAddress); listBox1.Items.Add("连接状态:" "已连接"); listBox1.Items.Add("应采集记录总数:" ProgressBar.Maximum.ToString() "条"); listBox1.Items.Add("成功总数:" UserCont_Yse.ToString() "条"); listBox1.Items.Add("失败总数:" UserCont_No.ToString() "条"); listBox1.Items.Add(""); ProgressBar.Value = 0; //写入日志 操作日志表 try { string StrcRy = System.DateTime.Now.ToShortDateString(); string StrcSf = System.DateTime.Now.ToLongTimeString(); StrcRy = DateTime.Parse(StrcRy).ToString("yyyy-MM-dd"); StrcSf = DateTime.Parse(StrcSf).ToString("HH:mm:ss"); string LogDtm = StrcRy " " StrcSf ".000"; string LogMesg = "应采集总数:" ProgressBar.Maximum.ToString() "条 " "成功总数:" UserCont_Yse.ToString() "条" "失败总数:" UserCont_No.ToString() "条"; SqSlt.SqlOperation(@"insert JqCZLog(JqCZLog_Jqh,JqCZLog_datetime,JqCZLog_mesg) values('" VcTerminalID "','" LogDtm "','" LogMesg "')", "JqCZLog", PbCls.SqlData(listBox2)[1].ToString()); } catch { listBox1.Items.Add("机器编号: " VcTerminalID "日志写入失败"); listBox1.Items.Add(""); } } } else { listBox1.Items.Add("机器编号: " VcTerminalID); listBox1.Items.Add("安装地址:" VcAddress); listBox1.Items.Add("连接状态:" "连接失败"); listBox1.Items.Add("应采集记录总数:0条"); listBox1.Items.Add("成功总数:0条"); listBox1.Items.Add("失败总数:0条"); listBox1.Items.Add(""); ProgressBar.Value = 0; } } } sbOpen.Enabled = true;//开启按钮 } /// <summary> /// 获取采集记录写入数据库 /// </summary> /// <param name="JqXh">机器型号</param> /// <param name="JqBh">机器编号</param> /// <param name="re">维数</param> /// <returns></returns> public void DateCollection(string JqXh, string JqBh, byte[] re) { if (JqXh == "FID-30")//取4字节 { byte[] Card_byte = myTerminal.getSectionByte(re, 14, 4); uint Card = myTerminal.ByteToUint(Card_byte);//获取10进制卡号 机器卡号位置 string NewCard = Convert.ToString(Card, 16);//参数1 获取实际16进制卡号 Cardover = NewCard; } if (JqXh == "FIC-10" || JqXh == "FIC-30-A")//取7字节 { string K14 = Convert.ToString(Convert.ToInt32(re.GetValue(14).ToString()), 16);//1 -卡号碎片 if (K14.Length == 1) { K14 = "0" K14; }; string K15 = Convert.ToString(Convert.ToInt32(re.GetValue(15).ToString()), 16);//2 -卡号碎片 if (K15.Length == 1) { K15 = "0" K15; }; string K16 = Convert.ToString(Convert.ToInt32(re.GetValue(16).ToString()), 16);//3 -卡号碎片 if (K16.Length == 1) { K16 = "0" K16; }; string K17 = Convert.ToString(Convert.ToInt32(re.GetValue(17).ToString()), 16); ;//4 -卡号碎片 if (K17.Length == 1) { K17 = "0" K17; }; string K18 = Convert.ToString(Convert.ToInt32(re.GetValue(18).ToString()), 16);//5 -卡号碎片 if (K18.Length == 1) { K18 = "0" K18; }; string K19 = Convert.ToString(Convert.ToInt32(re.GetValue(19).ToString()), 16);//6 -卡号碎片 if (K19.Length == 1) { K19 = "0" K19; }; string K20 = Convert.ToString(Convert.ToInt32(re.GetValue(20).ToString()), 16);//7 -卡号碎片 if (K20.Length == 1) { K20 = "0" K20; }; Cardover = K14 K15 K16 K17 K18 K19 K20; } if (JqXh == "FIC-30")//取4字节 { byte[] Card_byte = myTerminal.getSectionByte(re, 14, 4); uint Card = myTerminal.ByteToUint(Card_byte);//获取10进制卡号 机器卡号位置 string NewCard = Convert.ToString(Card, 16);//参数1 获取实际16进制卡号 NewCard = NewCard.Substring(6, 2) NewCard.Substring(4, 2) NewCard.Substring(2, 2) NewCard.Substring(0, 2);//获取实际16进制卡号 调换位置 Cardover = NewCard; } int Year = Convert.ToInt32(re.GetValue(9).ToString(), 16);//年 int Month = Convert.ToInt32(re.GetValue(8).ToString(), 16);//月 int Date = Convert.ToInt32(re.GetValue(7).ToString(), 16);//日 int Hour = Convert.ToInt32(re.GetValue(6).ToString(), 16);//时 int Minute = Convert.ToInt32(re.GetValue(5).ToString(), 16);//分 int Second = Convert.ToInt32(re.GetValue(4).ToString(), 16);//秒 string NewDate = "20" Year.ToString("X02") "-" Month.ToString("X02") "-" Date.ToString("X02");//获取 刷卡日期 string NewTime = Hour.ToString("X02") ":" Minute.ToString("X02") ":" Second.ToString("X02");//获取 刷卡时间 string NewDateTime = NewDate " " NewTime;//获取日期 时间 //写入考勤记录备份文本 string StrcRy = System.DateTime.Now.ToShortDateString(); string StrcSf = System.DateTime.Now.ToLongTimeString(); StrcRy = DateTime.Parse(StrcRy).ToString("yyyyMMdd"); StrcSf = DateTime.Parse(StrcSf).ToString("HHmm"); string LogDtm = StrcRy StrcSf; StreamWriter TxtServer = new StreamWriter(Application.StartupPath "\\Data" StrcRy ".txt", true, Encoding.GetEncoding("GB2312")); TxtServer.WriteLine("卡号:" Cardover " 刷卡日期时间:" NewDateTime " 机器编号:" JqBh); TxtServer.Close(); //----------------------- try { if (JqXh == "FIC-10" || JqXh == "FIC-30-A" || JqXh == "FID-30") { if (Cardover.Substring(0, 2) == "99") { DataSet UserId = SqSlt.SqlGeneral("select emcode from Vpersonal where emcard='" Cardover "'", "Vpersonal", PbCls.SqlData(listBox2)[1].ToString());//获取用户唯一编号 Userover = UserId.Tables["Vpersonal"].Rows[0]["emcode"].ToString();//将获取到的唯一编号复制给变量 } else { DataSet UserId = SqSlt.SqlGeneral("select emcode from Vpersonal where substring(emcard,3,15)='" Cardover "'", "Vpersonal", PbCls.SqlData(listBox2)[1].ToString());//获取用户唯一编号 Userover = UserId.Tables["Vpersonal"].Rows[0]["emcode"].ToString();//将获取到的唯一编号复制给变量 } } else { DataSet UserId = SqSlt.SqlGeneral("select emcode from Vpersonal where emkxh='" Cardover "'", "Vpersonal", PbCls.SqlData(listBox2)[1].ToString());//获取用户唯一编号 Userover= UserId.Tables["Vpersonal"].Rows[0]["emcode"].ToString();//将获取到的唯一编号复制给变量 } //写入考勤数据进入Kqsource表 SqSlt.SqlOperation(@"insert kqsource(hrcode,cedate,cetime,cemach) values('" Userover "','" DateTime.Parse(NewDate).ToString("yyyy-MM-dd") "','" NewTime "','" JqBh "')", "kqsource", PbCls.SqlData(listBox2)[1].ToString()); listBox1.Items.Add(NewDateTime); if (XmlBb() == "宝宝在线") { SqSlt.SqlOperation(@"insert tFangKaCheckin(fUserCardSerial,fCheckinTime) values('" Cardover "','" NewDateTime "')", "tFangKaCheckin", PbCls.SqlData(listBox2)[1].ToString()); } if (XmlBb() == "方卡原版") { //写入考勤数据进入xfSourceKq表 考勤就餐用 SqSlt.SqlOperation(@"insert xfSourceKq(hrCode,kqDt) values('" Userover "','" NewDateTime "')", "xfSourceKq", PbCls.SqlData(listBox2)[1].ToString()); //定时清除xfSourceKq表 考勤就餐用 2天清一次 SqSlt.SqlOperation(@"delete from xfSourceKq where hrCode='" Userover "' and convert(char(10),kqdt,120)<='" DateTime.Parse(NewDate).AddDays(-2).ToString("yyyy-MM-dd") "'", "xfSourceKq", PbCls.SqlData(listBox2)[1].ToString()); } } catch { //写入操作日志 try { //获取人员唯一编号失败, 数据库personal查无此人 string StrcRyc = System.DateTime.Now.ToShortDateString(); string StrcSfc = System.DateTime.Now.ToLongTimeString(); StrcRyc = DateTime.Parse(StrcRyc).ToString("yyyy-MM-dd"); StrcSfc = DateTime.Parse(StrcSfc).ToString("HH:mm:ss"); string LogDtmc = StrcRyc " " StrcSfc ".000"; string LogCl = "未查询到此人"; SqSlt.SqlOperation(@"insert JqJlLog(JqJlLog_Card,JqCZLog_datetime,JqCZLog_machi,JqCZLog_zt,JqCZLog_class) values('" Cardover "','" LogDtmc "','" JqBh "','" LogCl "','数据采集')", "JqJlLog", PbCls.SqlData(listBox2)[1].ToString()); listBox1.Items.Add("卡号:" Cardover "未查询到关联人员"); } catch { listBox1.Items.Add("机器编号: " JqBh "日志写入失败11"); listBox1.Items.Add(""); } } } /// <summary> /// 考情机咨询 /// </summary> /// <returns></returns> private void sbBroadcast_Click(object sender, EventArgs e) { if (TimerSs.Enabled == true) { MessageBox.Show("请先关闭实时采集"); return; } listBox1.Items.Clear(); sbBroadcast.Enabled = false;//暂时停用考勤机咨询按钮 for (int i = 0; i < dataGridView1.RowCount; i )//一级循环,循环机器列表 { string ReValue = dataGridView1.Rows[i].Cells[0].EditedFormattedValue.ToString(); if (ReValue == "True")//判断是否机器被选中 { myTerminal.IPAddress = dataGridView1.Rows[i].Cells[1].Value.ToString();//机器IP myTerminal.Port = dataGridView1.Rows[i].Cells[2].Value.ToString(); //机器端口 myTerminal.TerminalID = dataGridView1.Rows[i].Cells[3].Value.ToString(); //机器编号 string VcClass = dataGridView1.Rows[i].Cells[4].Value.ToString();//机器型号 string VcAddress = dataGridView1.Rows[i].Cells[5].Value.ToString();//机器安装地址 if (myTerminal.isAlive() == true)//判断连接是否成功 { //机器咨询信息 listBox1.Items.Add("机器编号: " myTerminal.TerminalID); listBox1.Items.Add("安装地址:" VcAddress); listBox1.Items.Add("连接状态:" "联机"); listBox1.Items.Add("注册用户数量:" myTerminal.QueryCurrentRegUsers().ToString() "人"); listBox1.Items.Add("机器日期时间:" myTerminal.QueryDateOfTheTerminal().ToString() "-" myTerminal.QueryTimeOfTheTerminal()); listBox1.Items.Add(""); } else { //机器咨询信息 listBox1.Items.Add("机器编号: " myTerminal.TerminalID); listBox1.Items.Add("安装地址:" VcAddress); listBox1.Items.Add("连接状态:" "脱机"); listBox1.Items.Add("注册用户数量:无法获取"); listBox1.Items.Add("机器日期时间:无法获取"); listBox1.Items.Add(""); } } } sbBroadcast.Enabled = true;//启用考勤机咨询按钮 } /// <summary> /// 删除数据 /// </summary> /// <returns></returns> private void toolStripButton2_Click(object sender, EventArgs e) { if (TimerSs.Enabled == true) { MessageBox.Show("请先关闭实时采集"); return; } if (MessageBox.Show("确认删除机器中所有记录信息么?", "删除记录信息提示", MessageBoxButtons.YesNo) == DialogResult.Yes) { listBox1.Items.Clear(); toolStripButton2.Enabled = false;//暂时停用删除数据按钮 for (int i = 0; i < dataGridView1.RowCount; i )//一级循环,循环机器列表 { string ReValue = dataGridView1.Rows[i].Cells[0].EditedFormattedValue.ToString(); if (ReValue == "True")//判断是否机器被选中 { myTerminal.IPAddress = dataGridView1.Rows[i].Cells[1].Value.ToString();//机器IP myTerminal.Port = dataGridView1.Rows[i].Cells[2].Value.ToString(); //机器端口 myTerminal.TerminalID = dataGridView1.Rows[i].Cells[3].Value.ToString(); //机器编号 string VcClass = dataGridView1.Rows[i].Cells[4].Value.ToString();//机器型号 string VcAddress = dataGridView1.Rows[i].Cells[5].Value.ToString();//机器安装地址 if (myTerminal.isAlive() == true)//判断连接是否成功 { string UserMax = myTerminal.QueryNumberOfLog().ToString(); myTerminal.DeleteAllLog();//删除全部记录 //机器咨询信息 listBox1.Items.Add("机器编号: " myTerminal.TerminalID); listBox1.Items.Add("安装地址:" VcAddress); listBox1.Items.Add("记录总数:" UserMax); listBox1.Items.Add("删除结果:成功"); listBox1.Items.Add(""); } else { //机器咨询信息 listBox1.Items.Add("机器编号: " myTerminal.TerminalID); listBox1.Items.Add("安装地址:" VcAddress); listBox1.Items.Add("记录总数:无法获取"); listBox1.Items.Add("删除结果:失败"); listBox1.Items.Add(""); } } } toolStripButton2.Enabled = true;//启用删除记录按钮 } } /// <summary> /// 将程序放入托盘 /// </summary> /// <returns></returns> private void toolStripButton7_Click(object sender, EventArgs e) { this.Hide(); } /// <summary> /// 显示主程序 /// </summary> /// <returns></returns> private void toolStripMenuItem5_Click(object sender, EventArgs e) { this.Show(); } /// <summary> /// 实时采集 /// </summary> /// <returns></returns> private void sbList_Click(object sender, EventArgs e) { if (sbList.Text == "开启实时采集")//按钮开关 { sbList.Text = "关闭实时采集"; sbList.ForeColor = Color.Red; TimerSs.Enabled = true; } else { listBox1.Items.Clear(); sbList.Text = "开启实时采集"; sbList.ForeColor = Color.Black; TimerSs.Enabled = false; } } /// <summary> /// 实时采集计时器 /// </summary> /// <returns></returns> private void TimerSs_Tick(object sender, EventArgs e) { DatLod();//采集数据 } /// <summary> /// 定时采集计时器 /// </summary> /// <returns></returns> private void TimerDs_Tick(object sender, EventArgs e) { //显示时钟 Tire.Text = Convert.ToString(DateTime.Now.ToLocalTime().ToString("HH:mm")); //获取机器人员定时时间、数据采集时间、时间同步间隔信息 XmlTextReader textReader = new XmlTextReader("SysParameter.xml"); textReader.Read(); int i = 0; while (textReader.Read()) { textReader.MoveToElement(); if (textReader.NodeType == XmlNodeType.Text) { switch (i) { //判断人员下发12个时间点 case 0: if (textReader.Value == Tire.Text) { UserLod(); }; break; case 1: if (textReader.Value == Tire.Text) { UserLod(); }; break; case 2: if (textReader.Value == Tire.Text) { UserLod(); }; break; case 3: if (textReader.Value == Tire.Text) { UserLod(); }; break; case 4: if (textReader.Value == Tire.Text) { UserLod(); }; break; case 5: if (textReader.Value == Tire.Text) { UserLod(); }; break; case 6: if (textReader.Value == Tire.Text) { UserLod(); }; break; case 7: if (textReader.Value == Tire.Text) { UserLod(); }; break; case 8: if (textReader.Value == Tire.Text) { UserLod(); }; break; case 9: if (textReader.Value == Tire.Text) { UserLod(); }; break; case 10: if (textReader.Value == Tire.Text) { UserLod(); }; break; case 11: if (textReader.Value == Tire.Text) { UserLod(); }; break; //显示数据下载12个时间点 case 12: if (textReader.Value == Tire.Text) { DatLod(); }; break; case 13: if (textReader.Value == Tire.Text) { DatLod(); }; break; case 14: if (textReader.Value == Tire.Text) { DatLod(); }; break; case 15: if (textReader.Value == Tire.Text) { DatLod(); }; break; case 16: if (textReader.Value == Tire.Text) { DatLod(); }; break; case 17: if (textReader.Value == Tire.Text) { DatLod(); }; break; case 18: if (textReader.Value == Tire.Text) { DatLod(); }; break; case 19: if (textReader.Value == Tire.Text) { DatLod(); }; break; case 20: if (textReader.Value == Tire.Text) { DatLod(); }; break; case 21: if (textReader.Value == Tire.Text) { DatLod(); }; break; case 22: if (textReader.Value == Tire.Text) { DatLod(); }; break; case 23: if (textReader.Value == Tire.Text) { DatLod(); }; break; //显示日期时间间隔 case 24: if (textReader.Value == Tire.Text) { TirmLod(); } break; } i ; } } textReader.Close(); } /// <summary> /// 帮助 /// </summary> /// <returns></returns> private void smSee_Click(object sender, EventArgs e) { if (TimerSs.Enabled == true) { MessageBox.Show("请先关闭实时采集"); return; } } /// <summary> /// 下传人员方法 /// </summary> /// <returns></returns> public void UserLod() { if (XmlBb() == "宝宝在线") { BBloadUser();//宝宝在线人员导入 } sbStart.Enabled = false;//暂时停用人员下传按钮 listBox1.Items.Clear(); for (int i = 0; i < dataGridView1.RowCount; i )//一级循环,循环机器列表 { string ReValue = dataGridView1.Rows[i].Cells[0].EditedFormattedValue.ToString(); if (ReValue == "True")//判断是否机器被选中 { myTerminal.IPAddress = dataGridView1.Rows[i].Cells[1].Value.ToString();//机器IP myTerminal.Port = dataGridView1.Rows[i].Cells[2].Value.ToString(); //机器端口 myTerminal.TerminalID = dataGridView1.Rows[i].Cells[3].Value.ToString(); //机器编号 string VcClass = dataGridView1.Rows[i].Cells[4].Value.ToString();//机器型号 string VcAddress = dataGridView1.Rows[i].Cells[5].Value.ToString();//机器安装地址 string VcTerminalID = dataGridView1.Rows[i].Cells[3].Value.ToString();//机器编号-日志表用 string VcZy= dataGridView1.Rows[i].Cells[6].Value.ToString();//机器作用(宝宝在线) if (myTerminal.isAlive() == true)//判断连接是否成功 { ProgressBar.Maximum = UserSum();//获取被勾选人员总数 赋值给计数器 int UserCont_Yse = 0;//成功人数计数 int UserCont_No = 0;//失败人数计数 //宝宝在线按学校编号获取人员列表,默认全勾选 if (XmlBb() == "宝宝在线" && dataGridView2.RowCount == 0) { //显示表格 vpersonalBindingSource.DataSource = SqSlt.SqlGeneral(@"select emname,emworkno,emsex,emzw,emBirthDay,emtel,emcard,emkxh,per_id from Vpersonal where deptno='" VcZy "'", "Vpersonal", PbCls.SqlData(listBox2)[1].ToString()); //-------------- for (int ic = 0; ic < dataGridView2.RowCount; ic ) { //给所有行赋值为勾选状态 DataGridViewCheckBoxCell checkBox = (DataGridViewCheckBoxCell)this.dataGridView2.Rows[ic].Cells[0]; checkBox.Value = 1; } ProgressBar.Maximum = dataGridView2.RowCount;//获取总数 } for (int i1 = 0; i1 < dataGridView2.RowCount; i1 )//二级循环,循环人员列表 { string UsValue = dataGridView2.Rows[i1].Cells[0].EditedFormattedValue.ToString(); if (UsValue == "True")//判断人员是否被选中 { string VpName = dataGridView2.Rows[i1].Cells[1].Value.ToString();//姓名 string VpWork = dataGridView2.Rows[i1].Cells[2].Value.ToString();//工号 string VpCard = dataGridView2.Rows[i1].Cells[7].Value.ToString();//卡号 string VpKxh = dataGridView2.Rows[i1].Cells[8].Value.ToString();//卡序号 if (VpKxh.Length == 8)//卡序号长度为8才进行位数颠倒 { VpKxh = VpKxh.Substring(6, 2) VpKxh.Substring(4, 2) VpKxh.Substring(2, 2) VpKxh.Substring(0, 2); } string VpPerId = dataGridView2.Rows[i1].Cells[9].Value.ToString();//唯一编号 try { string XCls = UserCardType(VpCard, VpKxh)[1].ToString();//卡类型 if (XCls == "4-ID" && VcClass == "FID-30")//判断下发卡号是否为4字节(ID卡) { //下发ID卡 4字节 myTerminal.RegUserData(UserCardType(VpCard, VpKxh)[0].ToString(), true, 1, 01, VpName, VpWork, 1, true, 4, "00:00", "00:00", "", 4, false, System.DateTime.Now, System.DateTime.Now, "", 0, 352, null); ProgressBar.PerformStep();//计数器开始计算 UserCont_Yse = UserCont_Yse 1;//计算 1 } else if (XCls == "4-IC" && VcClass == "FIC-30")//判断下发卡号是否为4字节(IC卡) { //下发IC卡 4字节 myTerminal.RegUserData(Convert.ToInt64(UserCardType(VpCard, VpKxh)[0].ToString(), 16).ToString(), true, 1, 01, VpName, VpWork, 1, true, 4, "00:00", "00:00", "", 4, false, System.DateTime.Now, System.DateTime.Now, "", 0, 352, null); ProgressBar.PerformStep();//计数器开始计算 UserCont_Yse = UserCont_Yse 1;//计算 1 } else if (XCls == "7" && (VcClass == "FIC-10" || VcClass == "FIC-30-A"))//判断下发卡号是否为7字节 { //下发手机卡 7字节 myTerminal.RegUserData(VpPerId, true, 1, 01, VpName, UserCardType(VpCard, VpKxh)[0].ToString(), 1, true, 4, "00:00", "00:00", "", 4, false, System.DateTime.Now, System.DateTime.Now, "", 0, 352, null); ProgressBar.PerformStep();//计数器开始计算 UserCont_Yse = UserCont_Yse 1;//计算 1 } else { ProgressBar.PerformStep();//计数器开始计算 UserCont_No = UserCont_No 1;//计算 1 } } catch { ProgressBar.PerformStep();//计数器开始计算 UserCont_No = UserCont_No 1;//计算 1 //写入日志 操作日志表 try { string StrcRy = System.DateTime.Now.ToShortDateString(); string StrcSf = System.DateTime.Now.ToLongTimeString(); StrcRy = DateTime.Parse(StrcRy).ToString("yyyy-MM-dd"); StrcSf = DateTime.Parse(StrcSf).ToString("HH:mm:ss"); string LogDtm = StrcRy " " StrcSf ".000"; string LogCl = VpName "人员下传失败"; SqSlt.SqlOperation(@"insert JqJlLog(JqJlLog_Card,JqCZLog_datetime,JqCZLog_machi,JqCZLog_zt,JqCZLog_class) values('" VpKxh "','" LogDtm "','" VcTerminalID "','" LogCl "','下传人员')", "JqJlLog", PbCls.SqlData(listBox2)[1].ToString()); } catch { listBox1.Items.Add("机器编号: " myTerminal.TerminalID "记录日志写入失败"); listBox1.Items.Add(""); } } if (ProgressBar.Value == ProgressBar.Maximum) { //下载详细信息显示 listBox1.Items.Add("机器编号: " myTerminal.TerminalID); listBox1.Items.Add("安装地址:" VcAddress); listBox1.Items.Add("连接状态:" "已连接"); listBox1.Items.Add("应下发人员总数:" ProgressBar.Maximum.ToString() "人"); listBox1.Items.Add("成功总数:" UserCont_Yse.ToString() "人"); listBox1.Items.Add("失败总数:" UserCont_No.ToString() "人"); listBox1.Items.Add(""); ProgressBar.Value = 0; //----------------- //写入日志 操作日志表 try { string StrcRy = System.DateTime.Now.ToShortDateString(); string StrcSf = System.DateTime.Now.ToLongTimeString(); StrcRy = DateTime.Parse(StrcRy).ToString("yyyy-MM-dd"); StrcSf = DateTime.Parse(StrcSf).ToString("HH:mm:ss"); string LogDtm = StrcRy " " StrcSf ".000"; string LogMesg = "应下发人员总数:" ProgressBar.Maximum.ToString() "人 " "成功总数:" UserCont_Yse.ToString() "人 " "失败总数:" UserCont_No.ToString() "人"; SqSlt.SqlOperation(@"insert JqCZLog(JqCZLog_Jqh,JqCZLog_datetime,JqCZLog_mesg) values('" VcTerminalID "','" LogDtm "','" LogMesg "')", "JqCZLog", PbCls.SqlData(listBox2)[1].ToString()); } catch { listBox1.Items.Add("机器编号: " myTerminal.TerminalID "日志写入失败"); listBox1.Items.Add(""); } } } } if (UserSum() == 0) { //下载详细信息显示 listBox1.Items.Add("机器编号: " myTerminal.TerminalID); listBox1.Items.Add("安装地址:" VcAddress); listBox1.Items.Add("连接状态:" "已连接"); listBox1.Items.Add("应下发人员总数:0人"); listBox1.Items.Add("成功总数:0人"); listBox1.Items.Add("失败总数:0人"); listBox1.Items.Add(""); ProgressBar.Value = 0; //----------------- } } else { //下载详细信息显示 listBox1.Items.Add("机器编号: " myTerminal.TerminalID); listBox1.Items.Add("安装地址:" VcAddress); listBox1.Items.Add("连接状态:" "连接失败"); listBox1.Items.Add("应下发人员总数:" ProgressBar.Maximum.ToString() "人"); listBox1.Items.Add("成功总数:0人"); listBox1.Items.Add("失败总数:" ProgressBar.Maximum.ToString() "人"); listBox1.Items.Add(""); ProgressBar.Value = 0; //----------------- //写入日志 操作日志表 try { string StrcRy = System.DateTime.Now.ToShortDateString(); string StrcSf = System.DateTime.Now.ToLongTimeString(); StrcRy = DateTime.Parse(StrcRy).ToString("yyyy-MM-dd"); StrcSf = DateTime.Parse(StrcSf).ToString("HH:mm:ss"); string LogDtm = StrcRy " " StrcSf ".000"; string LogMesg = "应下发人员总数:" ProgressBar.Maximum.ToString() "人 " "成功总数:0人 " "失败总数:" ProgressBar.Maximum.ToString() "人"; SqSlt.SqlOperation(@"insert JqCZLog(JqCZLog_Jqh,JqCZLog_datetime,JqCZLog_mesg) values('" VcTerminalID "','" LogDtm "','" LogMesg "')", "JqCZLog", PbCls.SqlData(listBox2)[1].ToString()); } catch { listBox1.Items.Add("机器编号: " myTerminal.TerminalID "日志写入失败"); listBox1.Items.Add(""); } } } } sbStart.Enabled = true;//恢复人员下传按钮 } /// <summary> /// 采集数据 /// </summary> /// <returns></returns> public void DatLod() { listBox1.Items.Clear(); sbOpen.Enabled = false;//暂时停用采集数据按钮 for (int i = 0; i < dataGridView1.RowCount; i )//一级循环,循环机器列表 { string ReValue = dataGridView1.Rows[i].Cells[0].EditedFormattedValue.ToString();//选中机器 string VcTerminalID = dataGridView1.Rows[i].Cells[3].Value.ToString();//机器编号-日志表用 if (ReValue == "True")//判断是否机器被选中 { myTerminal.IPAddress = dataGridView1.Rows[i].Cells[1].Value.ToString();//机器IP myTerminal.Port = dataGridView1.Rows[i].Cells[2].Value.ToString(); //机器端口 myTerminal.TerminalID = dataGridView1.Rows[i].Cells[3].Value.ToString(); //机器编号 string VcClass = dataGridView1.Rows[i].Cells[4].Value.ToString();//机器型号 string VcAddress = dataGridView1.Rows[i].Cells[5].Value.ToString();//机器安装地址 int UserCont_Yse = 0;//成功采集计数 int UserCont_No = 0;//失败采集计数 if (myTerminal.isAlive() == true)//判断连接是否成功 { try { byte[] reLog = (byte[])myTerminal.RetOldestNoACKLogB();//获取记录总维数 string Lg = Convert.ToString(reLog[3], 10);//获取当前机器中记录总数 int DataMax = Convert.ToInt32(Lg); if (DataMax == 0) { listBox1.Items.Add("实时记录采集中......"); return; } try { ProgressBar.Maximum = DataMax - 1;//给计数器赋值 DateCollection(VcClass, VcTerminalID, reLog); //首次获取一笔 UserCont_Yse = UserCont_Yse 1;//计算 1 } catch { ProgressBar.Maximum = ProgressBar.Maximum 1; listBox1.Items.Add("机器编号: " VcTerminalID); listBox1.Items.Add("安装地址:" VcAddress); listBox1.Items.Add("连接状态:" "记录获取异常"); listBox1.Items.Add("应采集记录总数:" ProgressBar.Maximum "条"); listBox1.Items.Add("成功总数:0条"); listBox1.Items.Add("失败总数:" ProgressBar.Maximum "条"); listBox1.Items.Add(""); ProgressBar.Value = 0; //写入操作日志 try { //获取人员唯一编号失败, 数据库personal查无此人 string StrcRy = System.DateTime.Now.ToShortDateString(); string StrcSf = System.DateTime.Now.ToLongTimeString(); StrcRy = DateTime.Parse(StrcRy).ToString("yyyy-MM-dd"); StrcSf = DateTime.Parse(StrcSf).ToString("HH:mm:ss"); string LogDtm = StrcRy " " StrcSf ".000"; string LogCl = "记录获取异常,记录仍在机器中"; SqSlt.SqlOperation(@"insert JqJlLog(JqJlLog_Card,JqCZLog_datetime,JqCZLog_machi,JqCZLog_zt,JqCZLog_class) values('无','" LogDtm "','" VcTerminalID "','" LogCl "','数据采集')", "JqJlLog", PbCls.SqlData(listBox2)[1].ToString()); } catch { listBox1.Items.Add("机器编号: " VcTerminalID "日志写入失败"); listBox1.Items.Add(""); } return; } for (int Mc = 0; Mc < ProgressBar.Maximum; Mc )//二级循环 循环记录总数并进行采集 { byte[] re = (byte[])myTerminal.RetOldestNoACKLogB();//获取记录总维数 DateCollection(VcClass, VcTerminalID, re); ProgressBar.PerformStep();//计数器开始计算 UserCont_Yse = UserCont_Yse 1;//计算 1 } } catch { // 判定机器获取记录失败 UserCont_No = UserCont_No 1;//计算 1 ProgressBar.PerformStep();//计数器开始计算 //写入操作日志 try { //获取人员唯一编号失败, 数据库personal查无此人 string StrcRy = System.DateTime.Now.ToShortDateString(); string StrcSf = System.DateTime.Now.ToLongTimeString(); StrcRy = DateTime.Parse(StrcRy).ToString("yyyy-MM-dd"); StrcSf = DateTime.Parse(StrcSf).ToString("HH:mm:ss"); string LogDtm = StrcRy " " StrcSf ".000"; string LogCl = "机器获取记录失败,记录仍在机器中"; SqSlt.SqlOperation(@"insert JqJlLog(JqJlLog_Card,JqCZLog_datetime,JqCZLog_machi,JqCZLog_zt,JqCZLog_class) values('无','" LogDtm "','" VcTerminalID "','" LogCl "','数据采集')", "JqJlLog", PbCls.SqlData(listBox2)[1].ToString()); } catch { listBox1.Items.Add("机器编号: " VcTerminalID "日志写入失败"); listBox1.Items.Add(""); } } if (ProgressBar.Value == ProgressBar.Maximum) { //下载详细信息显示 ProgressBar.Maximum = ProgressBar.Maximum 1; listBox1.Items.Add("机器编号: " VcTerminalID); listBox1.Items.Add("安装地址:" VcAddress); listBox1.Items.Add("连接状态:" "已连接"); listBox1.Items.Add("应采集记录总数:" ProgressBar.Maximum.ToString() "条"); listBox1.Items.Add("成功总数:" UserCont_Yse.ToString() "条"); listBox1.Items.Add("失败总数:" UserCont_No.ToString() "条"); listBox1.Items.Add(""); ProgressBar.Value = 0; //写入日志 操作日志表 try { string StrcRy = System.DateTime.Now.ToShortDateString(); string StrcSf = System.DateTime.Now.ToLongTimeString(); StrcRy = DateTime.Parse(StrcRy).ToString("yyyy-MM-dd"); StrcSf = DateTime.Parse(StrcSf).ToString("HH:mm:ss"); string LogDtm = StrcRy " " StrcSf ".000"; string LogMesg = "应采集总数:" ProgressBar.Maximum.ToString() "条 " "成功总数:" UserCont_Yse.ToString() "条" "失败总数:" UserCont_No.ToString() "条"; SqSlt.SqlOperation(@"insert JqCZLog(JqCZLog_Jqh,JqCZLog_datetime,JqCZLog_mesg) values('" VcTerminalID "','" LogDtm "','" LogMesg "')", "JqCZLog", PbCls.SqlData(listBox2)[1].ToString()); } catch { listBox1.Items.Add("机器编号: " VcTerminalID "日志写入失败"); listBox1.Items.Add(""); } } } else { listBox1.Items.Add("机器编号: " VcTerminalID); listBox1.Items.Add("安装地址:" VcAddress); listBox1.Items.Add("连接状态:" "连接失败"); listBox1.Items.Add("应采集记录总数:0条"); listBox1.Items.Add("成功总数:0条"); listBox1.Items.Add("失败总数:0条"); listBox1.Items.Add(""); ProgressBar.Value = 0; } } } sbOpen.Enabled = true;//开启按钮 } /// <summary> /// 同步时间 /// </summary> /// <returns></returns> public void TirmLod() { for (int i = 0; i < dataGridView1.RowCount; i )//一级循环,循环机器列表 { string ReValue = dataGridView1.Rows[i].Cells[0].EditedFormattedValue.ToString(); if (ReValue == "True")//判断是否机器被选中 { myTerminal.IPAddress = dataGridView1.Rows[i].Cells[1].Value.ToString();//机器IP myTerminal.Port = dataGridView1.Rows[i].Cells[2].Value.ToString(); //机器端口 myTerminal.TerminalID = dataGridView1.Rows[i].Cells[3].Value.ToString(); //机器编号 if (myTerminal.isAlive() == true)//判断连接是否成功 { string strDa = System.DateTime.Now.ToShortDateString(); string strTe = System.DateTime.Now.ToShortTimeString(); strDa = DateTime.Parse(strDa).ToString("MM/dd/yyyy"); strTe = DateTime.Parse(strTe).ToString("HH:mm:ss"); myTerminal.SetDateToTerminal(Convert.ToDateTime(strDa)); myTerminal.SetTimeToTerminal(strTe); } } } } /// <summary> /// 同步时间事件 /// </summary> /// <returns></returns> private void toolStripButton8_Click(object sender, EventArgs e) { if (TimerSs.Enabled == true) { MessageBox.Show("请先关闭实时采集"); return; } listBox1.Items.Clear(); for (int i = 0; i < dataGridView1.RowCount; i )//一级循环,循环机器列表 { string ReValue = dataGridView1.Rows[i].Cells[0].EditedFormattedValue.ToString(); if (ReValue == "True")//判断是否机器被选中 { myTerminal.IPAddress = dataGridView1.Rows[i].Cells[1].Value.ToString();//机器IP myTerminal.Port = dataGridView1.Rows[i].Cells[2].Value.ToString(); //机器端口 myTerminal.TerminalID = dataGridView1.Rows[i].Cells[3].Value.ToString(); //机器编号 if (myTerminal.isAlive() == true)//判断连接是否成功 { string strDa = System.DateTime.Now.ToShortDateString(); string strTe = System.DateTime.Now.ToShortTimeString(); strDa = DateTime.Parse(strDa).ToString("MM/dd/yyyy"); strTe = DateTime.Parse(strTe).ToString("HH:mm:ss"); myTerminal.SetDateToTerminal(Convert.ToDateTime(strDa)); myTerminal.SetTimeToTerminal(strTe); listBox1.Items.Add("机器编号" myTerminal.TerminalID "日期时间同步成功"); listBox1.Items.Add(""); } } } } /// <summary> /// 新增考勤机 /// </summary> /// <returns></returns> private void toolStripMenuItem6_Click(object sender, EventArgs e) { //获取版本 XmlTextReader textReader = new XmlTextReader("SysParameter.xml"); textReader.Read(); int i = 0; while (textReader.Read()) { textReader.MoveToElement(); if (textReader.NodeType == XmlNodeType.Text) { switch (i) { //显示目前版本 case 25: if (textReader.Value == "方卡原版") { MessageBox.Show("原版程序禁止添加设备,请在一卡通中添加"); return; } break; } i ; } } textReader.Close(); FormInsetMc Fi = new FormInsetMc(); Fi.Show(); } /// <summary> /// 返回当前版本号 /// </summary> /// <returns></returns> public string XmlBb() { string Bbname = ""; //获取版本 XmlTextReader textReader = new XmlTextReader("SysParameter.xml"); textReader.Read(); int i = 0; while (textReader.Read()) { textReader.MoveToElement(); if (textReader.NodeType == XmlNodeType.Text) { switch (i) { //显示目前版本 case 25: Bbname = textReader.Value; break; } i ; } } textReader.Close(); return Bbname; } } }
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论