示例#1
0
        /// <summary>
        /// 确定交班
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tbOK_Click(object sender, EventArgs e)
        {
            bool   isNotExist = false;
            string user       = Convert.ToString(this.ccbNextUser.Text);
            string pws        = this.tbPassword.Text;

            if (string.IsNullOrEmpty(user) || string.IsNullOrEmpty(pws))
            {
                MessageBox.Show("请选择接班人和输入接班人密码!", "接班提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            this.paramwin["交班人"] = BindManager.getUser().UserAccounts;
            this.paramwin["密码"]  = pws;

            User user1 = new User(user, ref isNotExist);

            if (!isNotExist)
            {
                isNotExist = !user1.login(tbUserName.Text, pws);
            }
            if (isNotExist)
            {
                MessageBox.Show("密码不正确!", "系统提示");
                return;
            }
            QueryDataRes query = new QueryDataRes(this.unitItem.DataSrcFile);

            this.paramwin["操作员"] = BindManager.getUser().UserName;
            this.paramwin["值班人"] = ccbNextUser.Text;
            IPHostEntry IpEntry = Dns.GetHostEntry(Dns.GetHostName());
            string      myip    = IpEntry.AddressList[0].ToString();

            this.paramwin["电脑IP"] = myip;
            bool isSuccess = query.ExecuteNonQuery("交接班", this.paramwin, this.paramwin, this.paramwin);

            if (!isSuccess)
            {
                MessageBox.Show("执行交接班时失败请与管理员联系!", "接班提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            BindManager.setUser(user);
            string operName      = this.ccbNextUser.Text.Trim();
            string workStartTime = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            string ip            = this.paramwin.AllValues.GetValue(2).ToString();
            string tag           = string.Empty;

            tag = basefun.setvaltag(tag, "值班人", operName);
            tag = basefun.setvaltag(tag, "接班时间", workStartTime);
            tag = basefun.setvaltag(tag, "电脑IP", ip);
            NameObjectList ps = ParamManager.createParam(tag);

            ParamManager.MergeParam(ps, this.paramwin, false);
            query.ExecuteNonQuery("当班状态", ps, ps, ps);
            MessageBox.Show("已经成功执行交接班!\r\n" + this.ccbNextUser.Text + " 开始工作!", "接班提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            this.DialogResult = DialogResult.Yes;
            this.Close();
        }
示例#2
0
        /// <summary>
        /// 定时执行业务
        /// </summary>
        /// <param name="obj"></param>
        void executeTimer(object obj)
        {
            DateTime       dt = DateTime.Today.AddDays(-1);
            NameObjectList ps = new NameObjectList();

            ps.Add("开始日期", dt);
            ps.Add("结束日期", dt);
            QueryDataRes query = new QueryDataRes("基础类");
            DataTable    tab   = query.getTable("考勤人员列表", null);

            if (null == tab || tab.Rows.Count < 1)
            {
                isTmRunning = false;
                return;
            }
            NameValueCollection data = new NameValueCollection();

            data["服务"] = "考勤作业";
            DataColumnCollection cols = tab.Columns;

            foreach (DataRow dr in tab.Rows)
            {
                foreach (DataColumn c in cols)
                {
                    ps[c.ColumnName] = Convert.ToString(dr[c]);
                }
                try
                {
                    bool b = query.ExecuteNonQuery("考勤人员列表", ps, ps, ps);
                    if (b)
                    {
                        continue;
                    }
                }
                catch (Exception ex)
                {
                    foreach (string key in ps.AllKeys)
                    {
                        data.Add(key, Convert.ToString(ps[key]));
                    }
                    LogMessage(ex, data, EventLogEntryType.Error);
                    continue;
                }
                foreach (string key in ps.AllKeys)
                {
                    data.Add(key, Convert.ToString(ps[key]));
                }
                LogMessage("考勤作业失败!", data, EventLogEntryType.Warning);
            }
            isTmRunning = false;
        }
示例#3
0
        /// <summary>
        /// 解挂
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnCardUnLost_Click(object sender, EventArgs e)
        {
            getNewDataByCardNo(txtCardRealNo.Text);
            if (string.IsNullOrEmpty(txtCardRealNo.Text))
            {
                XtraMessageBox.Show("请读卡!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (dsUnit.Tables["selectCard"].Rows.Count < 1)
            {
                XtraMessageBox.Show("此卡未发行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (status == "退卡")
            {
                XtraMessageBox.Show("此卡号状态为退卡,不能解挂!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (status != "挂失")
            {
                XtraMessageBox.Show("此卡未挂失,不能解挂!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            IPHostEntry    IpEntry = Dns.GetHostEntry(Dns.GetHostName());
            string         myip    = IpEntry.AddressList[0].ToString();
            NameObjectList ps      = this.buildParam(this, null);

            ps["设备"]           = DevIdS;
            ps["LocalIP"]      = myip;
            ps["Localhost"]    = System.Net.Dns.GetHostName();
            ps["UserAccounts"] = BindManager.getUser().UserName;
            QueryDataRes   query  = new QueryDataRes(this.unitItem.DataSrcFile);
            NameObjectList psnull = new NameObjectList();

            if (query.ExecuteNonQuery("解挂", ps, ps, psnull))
            {
                XtraMessageBox.Show("解挂成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                XtraMessageBox.Show("解挂失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            //刷新纪录
            this.dsUnit.Tables["用户选择"].Clear();
            this.Query.FillDataSet("用户选择", new NameObjectList(), this.dsUnit);
            this.dsUnit.Tables["日志"].Clear();
            this.Query.FillDataSet("日志", new NameObjectList(), this.dsUnit);
        }
示例#4
0
        /// <summary>
        /// 重置密码
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnReset_Click(object sender, EventArgs e)
        {
            if (this.dbUserView.RowCount < 1)
            {
                return;
            }
            DataRow        dr    = this.dbUserView.GetDataRow(this.dbUserView.FocusedRowHandle);
            NameObjectList ps    = ParamManager.createParam(dr);
            QueryDataRes   query = new QueryDataRes(this.unitItem.DataSrcFile);

            if (!query.ExecuteNonQuery("用户密码初始化", ps, ps, ps))
            {
                MessageBox.Show("重置密码失败!", "重置密码", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            else
            {
                MessageBox.Show("成功重置密码为:abc123\r\n请及时修改密码确保安全", "重置密码", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
示例#5
0
        /// <summary>
        /// 直接采集一条数据,并自动存入数据库,返回获取数据的记录
        /// 没有记录时恢复巡检
        /// </summary>
        /// <param name="isfirst">是否首次提取,首次会补充采集当前记录以防漏采</param>
        public override string GatherData(bool isfirst)
        {
            if (null == this.commimgr || null == this.target || string.IsNullOrEmpty(this.devid) || this.station < 1)
            {
                return("");
            }
            CmdProtocol cmdP = this.cmdGather;

            if (null == cmdP)
            {
                cmdP = new CmdProtocol(false);
            }
            string[] cols = { "{卡号}", "{卡类}", "{消费时间}", "{消费金额}", "{卡余额}", "{累计补助金额}", "{消费机号}", "{操作员号}" };
            string   tag  = "@设备地址=" + Convert.ToString(this.station);

            this.reChecking(0);
            if (recordpos.ContainsKey(this.devid))
            {
                tag = basefun.setvaltag(tag, "{记录值指针}", Convert.ToString(recordpos[this.devid]));
                cmdP.setCommand("消费", "取指定记录", tag);
            }
            else
            {
                if (isfirst)
                {
                    this.getSubsidy();
                    cmdP.setCommand("消费", "取当前消费记录", tag);
                }
                else
                {
                    cmdP.setCommand("消费", "取下一条消费记录", tag);
                }
            }
            string msg     = getResponse(this.commimgr, this.target, cmdP, this.waitTime);
            string cardnum = basefun.valtag(msg, "{卡号}");
            string suc     = basefun.valtag(msg, "Success");

            if ("true" != suc || string.IsNullOrEmpty(cardnum) || "16777215" == cardnum || "0" == cardnum)
            {
                this.reChecking(1);
                if ("false" == suc || "16777215" == cardnum || "0" == cardnum)
                {
                    recordpos.Remove(this.devid);
                }
                return(msg);
            }
            string info = "";

            for (int c = 0; c < cols.Length; c++)
            {
                info = basefun.setvaltag(info, cols[c], basefun.valtag(msg, cols[c]));
            }
            NameObjectList ps = ParamManager.createParam(info);

            ps["消费机"] = this.devid;
            bool success = this.query.ExecuteNonQuery("采集数据", ps, ps, ps);

            if (!success)
            {
                ServiceTool.LogMessage(info, null, EventLogEntryType.Warning);
            }
            if (recordpos.ContainsKey(this.devid))
            {
                recordpos[this.devid]++;
                ps.Clear();
                ps["消费机"]  = this.devid;
                ps["记录位置"] = recordpos[this.devid];
                query.ExecuteNonQuery("记录指针", ps, ps, ps);
            }
            DateTime dt = DateTime.MinValue;

            try
            {
                dt = Convert.ToDateTime(ps["消费时间"]);
            }
            catch { }
            this.AddRecord(info);
            DvRecordEventArgs arg = new DvRecordEventArgs(this.devid, this.station, dt, info);

            this.RaiseRecord(arg);
            return(msg);
        }
示例#6
0
        /// <summary>
        /// 写入记录
        /// </summary>
        /// <param name="msg">tag格式信息:{卡号}、状态编号,读卡器号,{刷卡时间}</param>
        private string writeRecord(string msg)
        {
            string cardnum = basefun.valtag(msg, "{卡号}");
            string suc     = basefun.valtag(msg, "Success");

            if ("true" != suc || "16777215" == cardnum || "0" == cardnum || string.IsNullOrEmpty(cardnum))
            {
                return(msg);
            }
            NameObjectList ps = new NameObjectList();

            ps["卡号"] = cardnum;
            DataTable tabuser = null;

            try
            {
                Monitor.Enter(objquery);
                tabuser = this.qyemp.getTable("卡用户信息", ps);
            }
            finally
            {
                Monitor.PulseAll(objquery);
                Monitor.Exit(objquery);
            }
            if (null != tabuser && tabuser.Rows.Count > 0)
            {
                DataRow  dr     = tabuser.Rows[0];
                string[] strcol = { "部门ID", "部门代码", "部门", "姓名", "用户编号", "照片", "卡号", "卡号NUM", "卡片序列号", "卡片SN" };
                foreach (string c in strcol)
                {
                    msg = basefun.setvaltag(msg, "{" + c + "}", Convert.ToString(dr[c]));
                }
                if (DBNull.Value != dr["进入时间"])
                {
                    msg = basefun.setvaltag(msg, "{进入时间}", Convert.ToDateTime(dr["进入时间"]).ToString("yyyy-MM-dd HH:mm:ss"));
                }
            }
            string info = "";

            string[] cols = { "{卡号}", "{卡号NUM}", "{卡片序列号}", "{卡片SN}", "{部门}", "{部门ID}", "{部门代码}", "{姓名}", "{照片}", "{用户编号}", "状态编号", "读卡器", "{刷卡时间}", "{进入时间}" };
            for (int c = 0; c < cols.Length; c++)
            {
                info = basefun.setvaltag(info, cols[c], basefun.valtag(msg, cols[c]));
            }
            string idx    = basefun.valtag(info, "读卡器");
            string chname = channels[0];

            if ("进出口" == devtype || "出入口" == devtype)
            {
                chname = "2" == idx || "3" == idx ? channels[1] : chname;
            }
            info = basefun.setvaltag(info, "通道", chname);
            info = basefun.setvaltag(info, "区域", region);
            info = basefun.setvaltag(info, "区域ID", regionID);
            info = basefun.setvaltag(info, "控制器类型", devtype);
            string strstate = this.getStateDoorCard(cardnum, basefun.valtag(info, "状态编号"), idx);

            msg       = basefun.setvaltag(msg, "状态", strstate);
            info      = basefun.setvaltag(info, "状态", strstate);
            ps        = ParamManager.createParam(info);
            ps["控制器"] = this.devid;
            ps["时间"]  = ps["刷卡时间"] = DateTime.MinValue;
            DateTime dt = DateTime.MinValue;

            try
            {
                string dtstr = basefun.valtag(msg, "{刷卡时间}");
                if (!string.IsNullOrEmpty(dtstr) && "0001-1-1 0:00:00" != dtstr)
                {
                    ps["时间"] = ps["刷卡时间"] = dt = Convert.ToDateTime(dtstr);
                }
            }
            catch { dt = DateTime.MinValue; }
            if (dt < DateTime.Today.AddYears(-3) || dt > DateTime.Today.AddYears(3))
            {
                if (null == dtobj)
                {
                    return(msg);
                }
                try { dt = Convert.ToDateTime(dtobj); }
                catch { return(msg); }
                if (dt < DateTime.Today.AddYears(-3) || dt > DateTime.Today.AddYears(3))
                {
                    return(msg);
                }
                ps["时间"] = ps["刷卡时间"] = dtobj;
            }
            else
            {
                dtobj = ps["时间"];
            }
            bool success = true;

            try
            {
                Monitor.Enter(objquery);
                success = qydata.ExecuteNonQuery("采集道闸数据", ps, ps, ps);
            }
            finally
            {
                Monitor.PulseAll(objquery);
                Monitor.Exit(objquery);
            }
            if (!success)
            {
                NameValueCollection attr = new NameValueCollection();
                attr["功能"] = "采集道闸数据保存失败";
                ServiceTool.LogMessage(info, null, EventLogEntryType.Warning);
            }
            this.AddRecord(info);
            DvRecordEventArgs arg = new DvRecordEventArgs(this.devid, this.station, dt, info);

            this.RaiseRecord(arg);
            return(msg);
        }
示例#7
0
        /// <summary>
        /// 对同一个target循环执行数据记录关联的指令,执行成功后执行sql更新
        /// </summary>
        /// <param name="drs">指令数据数组</param>
        /// <param name="colmap">字段与指令的映射</param>
        /// <param name="tpl">指令协议类别:停车场/消费/门禁/考勤/卡务中心</param>
        /// <param name="cmd">指令命令名称</param>
        /// <param name="target">通讯目标位置</param>
        /// <param name="deviceID">设备下位机地址</param>
        /// <param name="query">数据更新执行实例</param>
        /// <param name="dbItem">执行更新的数据项</param>
        /// <returns>成功执行返回空,失败返回错误原因</returns>
        public static string ExecuteDataRows(DataRow[] drs, string[,] colmap, string tpl, string cmd, CommiTarget target, string deviceID, QueryDataRes query, string dbItem)
        {
            if (null == drs || drs.Length < 1 || null == colmap || colmap.GetLength(1) < 2 || string.IsNullOrEmpty(tpl) || string.IsNullOrEmpty(cmd))
            {
                return("");
            }
            if (null == target || string.IsNullOrEmpty(deviceID))
            {
                return("");
            }
            //声明一个集合来储存数据
            List <DataRow> drList = new List <DataRow>();
            string         msg    = "";

            //执行指令
            CmdProtocol cmdP = new CmdProtocol(deviceID, false);

            //循环得到传过来的数据
            foreach (DataRow dr in drs)
            {
                if (null == dr)
                {
                    continue;
                }
                string tagdata = "@设备地址=" + deviceID;
                for (int c = 0; c < colmap.GetLength(0); c++)
                {
                    object val = dr[colmap[c, 1]];
                    if (true.Equals(val))
                    {
                        val = "1";
                    }
                    if (false.Equals(val))
                    {
                        val = "0";
                    }
                    tagdata = basefun.setvaltag(tagdata, colmap[c, 0], Convert.ToString(val));
                }
                //设置指令
                cmdP.setCommand(tpl, cmd, tagdata);
                cmdP.ResetState();
                //发送指令
                CommiManager.GlobalManager.SendCommand(target, cmdP);
                if (!cmdP.EventWh.WaitOne(2000, false))
                {
                    msg = basefun.setvaltag(tagdata, "{状态}", "通讯超时失败!");
                    break;
                }
                if (string.IsNullOrEmpty(cmdP.ResponseFormat))
                {
                    msg = basefun.setvaltag(tagdata, "{状态}", tagdata + "指令错误!");
                    break;
                }
                drList.Add(dr);
            }
            //更新数据库
            //判断数据源和存储过程是否为空
            if (null == query || string.IsNullOrEmpty(dbItem))
            {
                return(msg);
            }
            //得到数据的数量
            Estar.Common.Tools.NameObjectList[] ps = new Estar.Common.Tools.NameObjectList[drList.Count];
            for (int i = 0; i < drList.Count; i++)
            {
                ps[i] = ParamManager.createParam(drList[i]);
            }
            //得到数据与配置的数据已经保持一致,但发现没有执行存储过程。。。
            //执行数据库操作(方法封装在query内)
            bool success = query.ExecuteNonQuery(dbItem, ps, ps, ps);

            if (!success)
            {
                msg = basefun.setvaltag(msg, "{状态}", basefun.valtag(msg, "{状态}") + "更新数据库失败!");
            }
            return(msg);
        }
示例#8
0
        /// <summary>
        /// 写入记录,分补助或消费分别保存
        /// </summary>
        /// <param name="msg">tag格式信息:{卡号}、状态编号,读卡器号,{刷卡时间}</param>
        private string writeRecord(string msg)
        {
            string cardnum = basefun.valtag(msg, "{卡号}");
            string suc     = basefun.valtag(msg, "Success");

            if ("true" != suc || "16777215" == cardnum || "0" == cardnum || string.IsNullOrEmpty(cardnum))
            {
                return(msg);
            }
            string info = "";

            string[] cols = { "{卡号}", "{卡类}", "{消费时间}", "{消费金额}", "{卡余额}", "{累计补助金额}", "{消费机号}", "{操作员号}" };
            if ("补助机" == this.devName)
            {
                cols = new string[] { "{卡号}", "{卡类}", "{充值时间}", "{本次补助金额}", "{补助后总额}" }
            }
            ;
            for (int c = 0; c < cols.Length; c++)
            {
                info = basefun.setvaltag(info, cols[c], basefun.valtag(msg, cols[c]));
            }
            NameObjectList ps = ParamManager.createParam(info);

            ps["消费机"] = this.devid;

            //msg = "@{帧头}=C0,@{设备地址}=17,@{控制场}=01,@{长度场}=25,@Success=true,@{状态}=操作成功!,@{命令长度}=23,@{消费机号}=17,@{操作员号}=255,@{卡号}=16777215,@{卡类}=255,@{消费时间}=0001/1/1 0:00:00,@{卡余额}=1677721.5,@{累计补助金额}=6553.5,@{消费金额}=6553.5,@{记录指针}=11297,@{校验字}=32,@{帧尾}=C0";
            ///*************************查看时间格式是否正确 2012-06-20
            string dtTime = Convert.ToString(basefun.valtag(msg, "{消费时间}"));

            try
            {
                DateTime s = Convert.ToDateTime(dtTime);
                if (dtTime.ToString() == "0001/1/1 0:00:00" || Convert.ToDateTime(dtTime) < Convert.ToDateTime("2000-01-01 00:00:00"))
                {
                    ps["设备ID"] = this.devid;
                    ps["卡号"]   = cardnum;
                    ps["日期"]   = dtTime;
                    ps["金额"]   = basefun.valtag(msg, "{卡余额}");
                    this.query.ExecuteNonQuery("错误记录", ps, ps, ps);
                }
            }
            catch
            {
                ps["设备ID"] = this.devid;
                ps["卡号"]   = cardnum;
                ps["日期"]   = dtTime;
                ps["金额"]   = basefun.valtag(msg, "{卡余额}");
                this.query.ExecuteNonQuery("错误记录", ps, ps, ps);
            }
            ///*************************查看时间格式是否正确 2012-06-20



            DateTime dt  = DateTime.MinValue;
            string   fld = "补助机" == this.devName ? "充值时间" : "消费时间";

            try
            {
                dt = Convert.ToDateTime(ps[fld]);
            }
            catch { }
            if (dt < DateTime.Today.AddYears(-3) || dt > DateTime.Today.AddYears(3))
            {
                if (null == dtobj)
                {
                    return(msg);
                }
                try { dt = Convert.ToDateTime(dtobj); }
                catch { return(msg); }
                ps[fld] = dtobj;
            }
            else
            {
                dtobj = ps[fld];
            }
            bool success = false;

            if ("补助机" == this.devName)
            {
                success = this.query.ExecuteNonQuery("消费接收补助", ps, ps, ps);
            }
            else
            {
                success = this.query.ExecuteNonQuery("采集数据", ps, ps, ps);
            }
            Debug.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff") + " 保存:" + this.devName + " " + this.station.ToString());
            myLog.WriteLine(DateTime.Now.ToString("HH:mm:ss.fff") + " 保存:" + this.devName + " " + this.station.ToString());
            if (!success)
            {
                ServiceTool.LogMessage(info, null, EventLogEntryType.Warning);
            }
            if (recordpos.ContainsKey(this.devid))
            {
                recordpos[this.devid]++;
                ps.Clear();
                ps["消费机"]  = this.devid;
                ps["记录位置"] = recordpos[this.devid];
                query.ExecuteNonQuery("记录指针", ps, ps, ps);
            }
            this.AddRecord(info);
            DvRecordEventArgs arg = new DvRecordEventArgs(this.devid, this.station, dt, info);

            this.RaiseRecord(arg);
            return(msg);
        }

        object dtobj = null;
示例#9
0
        /// <summary>
        /// 写入记录
        /// </summary>
        /// <param name="tagmsg">tag格式信息:{卡号}、状态编号,读卡器号,{刷卡时间}</param>
        /// <param name="isevent">是否触发事件</param>
        private string writeRecord(string tagmsg, bool isevent)
        {
            string cardnum = basefun.valtag(tagmsg, "{卡号}");
            string suc     = basefun.valtag(tagmsg, "Success");

            // if ("true" != suc || "16777215" == cardnum || "0" == cardnum || string.IsNullOrEmpty(cardnum))
            if ("16777215" == cardnum || "0" == cardnum || string.IsNullOrEmpty(cardnum))
            {
                return(tagmsg);
            }
            NameObjectList ps = new NameObjectList();

            ps["卡号"] = cardnum;
            DataTable tabuser = null;

            try
            {
                Monitor.Enter(objquery);
                tabuser = this.qyemp.getTable("卡用户信息", ps);
            }
            finally
            {
                Monitor.PulseAll(objquery);
                Monitor.Exit(objquery);
            }
            if (null != tabuser && tabuser.Rows.Count > 0)
            {
                DataRow dr = tabuser.Rows[0];
                tagmsg = basefun.setvaltag(tagmsg, "{部门ID}", Convert.ToString(dr["部门ID"]));
                tagmsg = basefun.setvaltag(tagmsg, "{部门代码}", Convert.ToString(dr["部门代码"]));
                tagmsg = basefun.setvaltag(tagmsg, "{部门}", Convert.ToString(dr["部门"]));
                tagmsg = basefun.setvaltag(tagmsg, "{姓名}", Convert.ToString(dr["姓名"]));
            }
            string info = "";

            string[] cols = { "{卡号}", "{部门}", "{部门ID}", "{部门代码}", "{姓名}", "状态编号", "读卡器", "{刷卡时间}" };
            for (int c = 0; c < cols.Length; c++)
            {
                info = basefun.setvaltag(info, cols[c], basefun.valtag(tagmsg, cols[c]));
            }
            string strstate = this.getStateDoorCard(cardnum, basefun.valtag(info, "状态编号"), basefun.valtag(info, "读卡器"));

            tagmsg    = basefun.setvaltag(tagmsg, "状态", strstate);
            info      = basefun.setvaltag(info, "状态", strstate);
            ps        = ParamManager.createParam(info);
            ps["控制器"] = this.devid;
            ps["时间"]  = ps["刷卡时间"] = DateTime.MinValue;
            DateTime dt = DateTime.MinValue;

            try
            {
                string dtstr = basefun.valtag(tagmsg, "{刷卡时间}");
                if (!string.IsNullOrEmpty(dtstr) && "0001-1-1 0:00:00" != dtstr)
                {
                    ps["时间"] = ps["刷卡时间"] = dt = Convert.ToDateTime(dtstr);
                }
            }
            catch { dt = DateTime.MinValue; }
            if (dt < DateTime.Today.AddYears(-3) || dt > DateTime.Today.AddYears(3))
            {
                if (null == dtobj)
                {
                    return(tagmsg);
                }
                try { dt = Convert.ToDateTime(dtobj); }
                catch { ServiceTool.LogMessage(info, null, EventLogEntryType.Warning); return(tagmsg); }
                if (dt < DateTime.Today.AddYears(-3) || dt > DateTime.Today.AddYears(3))
                {
                    ServiceTool.LogMessage(info, null, EventLogEntryType.Warning);
                    return(tagmsg);
                }
                ps["时间"] = ps["刷卡时间"] = dtobj;
            }
            else
            {
                dtobj = ps["时间"];
            }
            bool success = false;

            try
            {
                Monitor.Enter(objquery);
                success = qydata.ExecuteNonQuery("采集门禁数据", ps, ps, ps);
            }
            finally
            {
                Monitor.PulseAll(objquery);
                Monitor.Exit(objquery);
            }
            if (!success)
            {
                ServiceTool.LogMessage(info, null, EventLogEntryType.Warning);
            }
            if (isevent)
            {
                this.AddRecord(info);
                DvRecordEventArgs arg = new DvRecordEventArgs(this.devid, this.station, dt, info);
                this.RaiseRecord(arg);
            }
            return(tagmsg);
        }
示例#10
0
 /// <summary>
 /// 退卡
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnCardQuit_Click(object sender, EventArgs e)
 {
     getNewDataByCardNo(cardno);
     if (string.IsNullOrEmpty(cardno))
     {
         XtraMessageBox.Show("请读卡!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
         return;
     }
     if (dsUnit.Tables["selectCard"].Rows.Count < 1)
     {
         XtraMessageBox.Show("此卡未发行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
         return;
     }
     if (status == "挂失")
     {
         XtraMessageBox.Show("此卡号状态为挂失,不能退卡!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
         return;
     }
     #region Ic卡清空数及退卡
     if (radic.Checked)
     {
         string CardStatus = "";
         //消费
         if (Etime.Enabled)
         {
             CardStatus = cmdCard.ClearData(CardArea.Eatery);
             CardStatus = basefun.valtag(CardStatus, "{状态}");
             if (CardStatus != "操作成功!")
             {
                 MessageBox.Show(CardStatus, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                 return;
             }
         }
         //停车场
         if (Ptime.Enabled)
         {
             CardStatus = cmdCard.ClearData(CardArea.Park);
             CardStatus = basefun.valtag(CardStatus, "{状态}");
             if (CardStatus != "操作成功!")
             {
                 MessageBox.Show(CardStatus, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                 return;
             }
         }
         //蜂鸣提示
         cmdCard.Buzz(true);
     }
     #endregion
     IPHostEntry    IpEntry = Dns.GetHostEntry(Dns.GetHostName());
     string         myip    = IpEntry.AddressList[0].ToString();
     NameObjectList ps      = this.buildParam(this, null);
     if (this.radYou.Checked)
     {
         ps["是否有卡"] = 0;
     }
     else if (this.radWu.Checked)
     {
         ps["是否有卡"] = 1;
     }
     ps["UserAccounts"] = BindManager.getUser().UserName;
     ps["设备"]           = DevIdS;
     ps["LocalIP"]      = myip;
     ps["Localhost"]    = System.Net.Dns.GetHostName();
     QueryDataRes   query  = new QueryDataRes(this.unitItem.DataSrcFile);
     NameObjectList psnull = new NameObjectList();
     if (query.ExecuteNonQuery("退卡", ps, ps, ps))
     {
         XtraMessageBox.Show("退卡成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
     }
     else
     {
         XtraMessageBox.Show("退卡失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
     }
     //刷新纪录
     this.dsUnit.Tables["用户选择"].Clear();
     this.Query.FillDataSet("用户选择", new NameObjectList(), this.dsUnit);
     this.dsUnit.Tables["日志"].Clear();
     this.Query.FillDataSet("日志", new NameObjectList(), this.dsUnit);
 }
示例#11
0
        /// <summary>
        /// 充值延期
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnCardPay_Click(object sender, EventArgs e)
        {
            getNewDataByCardNo(txtCardRealNo.Text);
            if (string.IsNullOrEmpty(txtCardRealNo.Text))
            {
                XtraMessageBox.Show("请读卡!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (dsUnit.Tables["selectCard"].Rows.Count < 1)
            {
                XtraMessageBox.Show("此卡未发行!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (status == "退卡")
            {
                XtraMessageBox.Show("此卡号状态为退卡,不能充值!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (status == "挂失")
            {
                XtraMessageBox.Show("此卡号状态为挂失,不能充值!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (radic.Checked)
            {
                if (WriteInfo("充值") == false)
                {
                    return;
                }
            }
            IPHostEntry    IpEntry = Dns.GetHostEntry(Dns.GetHostName());
            string         myip    = IpEntry.AddressList[0].ToString();
            NameObjectList ps      = this.buildParam(this, null);

            if (this.radYou.Checked)
            {
                ps["是否有卡"] = 0;
            }
            else if (this.radWu.Checked)
            {
                ps["是否有卡"] = 1;
            }
            if (!this.Etime.Enabled)
            {
                ps["消费"] = "";
            }
            else
            {
                ps["消费"] = "消费";
            }
            if (!this.Dtime.Enabled)
            {
                ps["门禁"] = "";
            }
            else
            {
                ps["门禁"] = "门禁";
            }
            if (!this.Ptime.Enabled)
            {
                ps["停车场"] = "";
            }
            else
            {
                ps["停车场"] = "停车场";
            }
            if (dtime1 == DateTime.Now.ToString("yyyy-MM-dd"))
            {
                dtime1 = this.txtdtime.Text;
            }
            if (etime1 == DateTime.Now.ToString("yyyy-MM-dd"))
            {
                etime1 = this.txtEtime.Text;
            }
            if (ptime1 == DateTime.Now.ToString("yyyy-MM-dd"))
            {
                ptime1 = this.txtptime.Text;
            }
            if (string.IsNullOrEmpty(dtime1))
            {
                dtime1 = DateTime.Now.ToString("yyyy-MM-dd");
            }
            if (string.IsNullOrEmpty(etime1))
            {
                etime1 = DateTime.Now.ToString("yyyy-MM-dd");
            }
            if (string.IsNullOrEmpty(ptime1))
            {
                ptime1 = DateTime.Now.ToString("yyyy-MM-dd");
            }
            ps["门禁延期"]         = dtime1;
            ps["消费延期"]         = etime1;
            ps["停车场延期"]        = ptime1;
            ps["现金充值"]         = txtXJmoney.Text;
            ps["补助充值"]         = txtBZmoney.Text;
            ps["补助累加"]         = IsaddBZMoney;
            ps["UserAccounts"] = BindManager.getUser().UserName;
            ps["设备"]           = DevIdS;
            ps["LocalIP"]      = myip;
            ps["Localhost"]    = System.Net.Dns.GetHostName();
            QueryDataRes   query  = new QueryDataRes(this.unitItem.DataSrcFile);
            NameObjectList psnull = new NameObjectList();

            if (query.ExecuteNonQuery("充值", ps, ps, ps))
            {
                XtraMessageBox.Show("充值成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                XtraMessageBox.Show("充值失败", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            //刷新纪录
            this.dsUnit.Tables["用户选择"].Clear();
            this.Query.FillDataSet("用户选择", new NameObjectList(), this.dsUnit);
            this.dsUnit.Tables["日志"].Clear();
            this.Query.FillDataSet("日志", new NameObjectList(), this.dsUnit);
            getNewDataByCardNo(txtCardRealNo.Text);
        }
示例#12
0
        /// <summary>
        /// 初始化硬件设备
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void InitBtn_Click(object sender, EventArgs e)
        {
            int[] indexlist = this.getCheckedList();
            if (indexlist.Length < 1)
            {
                MessageBox.Show("请选择一个设备", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (DialogResult.Yes != MessageBox.Show("初始化设备会清空设备存储的数据,是否确认需要初始化!", "设备初始化", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
            {
                return;
            }
            string    strdevIDs = "", msg = "", strdevNames = "";
            string    tpl = "停车场", cmd = "格式化";
            DataTable tab = this.dbGrid.DataSource as DataTable;

            foreach (int i in indexlist)
            {
                DataRow     dr      = tab.Rows[i];
                CommiTarget target  = this.getTarget(dr);
                CmdProtocol cmdP    = new CmdProtocol(Convert.ToString(dr["名称"]), false);
                string      devid   = Convert.ToString(dr["站址"]);
                string      tagdata = "@设备地址=" + devid;
                cmdP.setCommand(tpl, cmd, tagdata);
                CommiManager.GlobalManager.SendCommand(target, cmdP);

                if (!cmdP.EventWh.WaitOne(2000, false))
                {
                    msg = cmdP.CmdId + ":通讯失败,请检查设备连接或通讯参数后重试!";
                }
                string rpmsg = basefun.valtag(cmdP.ResponseFormat, "{状态}");
                if (string.IsNullOrEmpty(msg) && !string.IsNullOrEmpty(rpmsg) && "操作成功!" != rpmsg)
                {
                    msg = cmdP.CmdId + ":" + rpmsg;
                }
                if (!string.IsNullOrEmpty(msg))
                {
                    break;
                }
                strdevIDs   += "," + devid;
                strdevNames += cmdP.CmdId + ",";
            }
            //形成参数
            string[]         devids = strdevIDs.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
            NameObjectList[] psList = new NameObjectList[devids.Length];
            for (int i = 0; i < devids.Length; i++)
            {
                psList[i]          = new NameObjectList();
                psList[i]["devID"] = devids[i];
            }
            QueryDataRes query = new QueryDataRes(this.unitItem.DataSrcFile);

            if (psList.Length > 0)
            {
                query.ExecuteNonQuery("删除设备白名单", psList, psList, psList);
            }

            if (string.IsNullOrEmpty(msg))
            {
                MessageBox.Show("设备初始化成功!", "设备初始化", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                msg = string.IsNullOrEmpty(strdevNames) ? msg : strdevNames + "成功执行初始化,\r\n" + msg;
                MessageBox.Show(msg, "设备初始化", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }