实例介绍
【实例截图】

【核心代码】
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小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论