zoukankan      html  css  js  c++  java
  • 中控考勤机的二次开发之灵活调配职工功能

    客户新增需求

    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
    { }
    }

  • 相关阅读:
    Java中符号位扩展
    BZOJ2754: [SCOI2012]喵星球上的点名(AC自动机)
    BZOJ1030: [JSOI2007]文本生成器(AC自动机)
    BZOJ2434: [Noi2011]阿狸的打字机(AC自动机 树状数组)
    BZOJ1432: [ZJOI2009]Function(找规律)
    BZOJ2659: [Beijing wc2012]算不出的算式(数学)
    洛谷P3796 【模板】AC自动机(加强版)
    洛谷P3966 [TJOI2013]单词(AC自动机)
    BZOJ2580: [Usaco2012 Jan]Video Game(AC自动机)
    后缀自动机经典操作
  • 原文地址:https://www.cnblogs.com/NetPig/p/9863965.html
Copyright © 2011-2022 走看看