客戶新增需求
1.客戶員工需要不定時的外派或支援
2.客戶員工發適時的到分公司去打卡
3.客戶員工的打卡數據需要及時的發放到目標分公司
4.實現功能如下:
1)各分公司需要及時從考勤機上取得員工的打卡驗證數據
2)各分公司需要及時上傳員工考勤驗證數據到服務器
3)各分公司需要及時從服務器上調出被調過來員工的考勤驗證數據
4)各分公司需要及時把調出來員工數據同步到本公司的考勤機上
5)將要來的員工就可以及時打卡了
6)每個考勤機都是有最大容量的,所以,增加了刪除員工數據功能
找時間,把代碼分享出來,拋磚引玉,供大家參考。
/// <summary>
/// 連接考勤機
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnConnect_Click(object sender, EventArgs e)
{
if (txtIP.Text.Trim() == "" || txtPort.Text.Trim() == "")
{
MessageBox.Show("網絡地址 與 端口 不能為空", "提示信息");
return;
}
int idwErrorCode = 0;
Cursor = Cursors.WaitCursor;
if (btnConnect.Text == "關閉連接")
{
axCZKEM1.Disconnect();
bIsConnected = false;
btnConnect.Text = "開始連接";
lblState.Text = "當前狀態:未連接";
Cursor = Cursors.Default;
return;
}
axCZKEM1.PullMode = 1;
bIsConnected = axCZKEM1.Connect_Net(txtIP.Text, Convert.ToInt32(txtPort.Text));
if (bIsConnected == true)
{
btnConnect.Text = "關閉連接";
btnConnect.Refresh();
lblState.Text = "當前狀態:已連接";
iMachineNumber = 1;
axCZKEM1.RegEvent(iMachineNumber, 65535);
}
else
{
axCZKEM1.GetLastError(ref idwErrorCode);
MessageBox.Show("不能連接設備,錯誤代碼=" + idwErrorCode.ToString(), "提示信息");
}
Cursor = Cursors.Default;
}
/// <summary>
/// 同步考勤機數據
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnUploadData_Click(object sender, EventArgs e)
{
try
{
if (bIsConnected == false)
{
MessageBox.Show("請先連接設備!", "提示信息");
return;
}
string sUserID = "";
string sName = "";
int iFaceIndex = 0;
string sTmpData = "";
int iLength = 0;
int iPrivilege = 0;
string sPassword = "";
string sEnabled = "";
bool bEnabled = false;
for (int i = 0; i < lvFace.Items.Count; i++)
{
sUserID = lvFace.Items[i].SubItems[0].Text;
sName = lvFace.Items[i].SubItems[1].Text;
sTmpData = lvFace.Items[i].SubItems[2].Text;
InsertData(sUserID, sName, sTmpData);
}
MessageBox.Show("成功上傳數據:" + lvFace.Items.Count.ToString() + " 條.", "提示信息");
}
catch (Exception ex)
{
MessageBox.Show("上傳數據錯誤: " + ex.ToString(), "提示信息");
}
finally
{ }
}