/// <summary> /// 处理进出场数据,并抓拍图像 /// </summary> /// <param name="tag">出入场数据</param> /// <param name="display">判断是否显示刷卡数据信息</param> private void ExecuteInOut(string tag, bool display) { string station = basefun.valtag(tag, "{设备地址}"); string cardnum = basefun.valtag(tag, "{卡号}"); string cardtype = string.Empty; cardtype = basefun.valtag(tag, "卡类"); if (string.IsNullOrEmpty(cardtype)) cardtype = basefun.valtag(tag, "{卡类}"); string dtparkin = basefun.valtag(tag, "{入场时间}"); string dtparkout = basefun.valtag(tag, "{出入场时间}"); string openmode = basefun.valtag(tag, "{开闸方式}"); if (string.IsNullOrEmpty(cardnum)) return; DataTable dtDev = this.Query.getTable("设备列表", this.paramSystem); #region 抓拍图片并上传服务器 string filepath = "", filedest = ""; if (videoFlag > 0) { int videonum = 1; string imgkey = "出场图片"; if (dtparkin == dtparkout) { videonum = 0; imgkey = "入场图片"; } bool flag = false; if (Convert.ToInt16(station) > 128) { flag = false; string cardno = basefun.valtag(tag, "{卡号}"); string time = basefun.valtag(tag, "{入场时间}"); string inParkPicFilepath = GetInParkPicFilePath(cardno, time); DisplayPic(p_in2, inParkPicFilepath); } else { flag = true; } string strTwoInTwoOut = System.Configuration.ConfigurationManager.AppSettings["TwoInTwoOut"].ToString(); if (dtDev.Rows.Count > 2 && strTwoInTwoOut == "1") { filepath = Video(2, flag, Convert.ToInt16(station)); } else { filepath = CutVideo(videonum, 0 == videonum ? p_in2 : p_out2); } if (!string.IsNullOrEmpty(filepath)) { //Billy //filedest = filepath.ToLower().Substring(filepath.IndexOf("image")); filedest = filepath; } tag = basefun.setvaltag(tag, imgkey, filedest); } // Autosave(basefun.valtag(tag,"{入场图片}")); SendImage(filepath, filedest, cardnum); #endregion //不同类别卡做出入场业务处理 //1,无识别车牌,则模式对话输入 //2,出场识别车牌与入场车牌不一致,则模式对话输入 //3,临时卡入场识别车牌后直接开闸 //4,储值卡车牌对比后再校验卡片余额 //5,期卡车牌对比后直接开闸 //储值卡已经入场再入场提示,未入场刷出场时提示 if ("9" == cardtype) { int addr = Convert.ToInt32(station); string tipsound = ""; if (addr < 128 && dtparkin != dtparkout) tipsound = "0C"; else if (addr >= 128 && dtparkin == dtparkout) tipsound = "2A"; // 0C此卡已入场,2A此卡已出场 if (!string.IsNullOrEmpty(tipsound)) { string tagsound = string.Empty; tagsound = basefun.setvaltag(tagsound, "{道闸命令}", "00"); tagsound = basefun.setvaltag(tagsound, "{语音命令}", tipsound); CmdExecute("停车场", "屏显语音道闸", tagsound, station); return; } } //出场时,首先计算临时卡和储值卡收费金额 if ("9" == cardtype && dtparkin != dtparkout) { if (string.IsNullOrEmpty(dtparkout)) { dtparkout = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); tag = basefun.setvaltag(tag, "{出入场时间}", dtparkout); } tag = basefun.setvaltag(tag, "{出场时间}", dtparkout); string rsponseFormat = CmdExecute("停车场", "计算收费金额", tag, station, true); tag = basefun.setvaltag(tag, "{收费金额}", basefun.valtag(rsponseFormat, "{收费金额}")); } //识别车牌不一致,或临时卡时模式对话 string carnum = basefun.valtag(tag, "{车牌号码}"); string caravt = basefun.valtag(tag, "{识别车牌号码}"); string strmoney = basefun.valtag(tag, "{卡片余额}"); string strpay = basefun.valtag(tag, "{收费金额}"); bool isDialog = false; if ("44" == openmode || string.IsNullOrEmpty(openmode) || cardtype == "7") isDialog = this.IsDialogInOut(cardtype, dtparkin, dtparkout, carnum, caravt, strmoney, strpay); //模式对话处理业务 DialogResult rsl = DialogResult.Yes; if (isDialog) { this.Pause(true); if (Convert.ToInt16(station) >= 129) { TimeSpan ts = Convert.ToDateTime(dtparkout) - Convert.ToDateTime(dtparkin); string t = ts.Days + "天" + ts.Hours + "时" + ts.Minutes + "分" + ts.Seconds + "秒"; tag = basefun.setvaltag(tag, "{停车时长}", t); FrmFee win = new FrmFee(); tag = basefun.setvaltag(tag, "操作员", BindManager.getUser().UserAccounts); win.DataTag = tag; win.Query = this.Query; rsl = win.ShowDialog(); tag = win.DataTag; } this.Pause(false); } else { if (cardtype == "5") tag = basefun.setvaltag(tag, "{车牌号码}", basefun.valtag(tag, "{识别车牌号码}")); } string db = dtparkin == dtparkout ? "入场管理" : "出场管理"; //不开闸,临时卡和期卡删除下位机记录 if (DialogResult.Yes != rsl && DialogResult.OK != rsl) { this.setContainerTagValue(this.grpInfoM, tag, "pm"); this.InOutParkRecord(tag, db); RefreshParkInfo(); this.Pause(true); CmdExecute("停车场", "删除一条停车记录", tag, station); this.Pause(false); CardMoney = string.Empty; return; } string ps = tag; string strts = "0"; if (dtparkin != dtparkout) { TimeSpan ts = Convert.ToDateTime(dtparkout) - Convert.ToDateTime(dtparkin); strts = Convert.ToInt32(ts.Days * 24 * 60 + ts.Hours * 60 + ts.Minutes).ToString(); } string[,] map ={ { "{道闸命令}", "02" }, { "{收费额}", "{收费金额}" }, { "{余额}", "{卡片余额}" }, { "{停车时长}", strts } }; for (int i = 0; i < map.GetLength(0); i++) { if (map[i, 1].StartsWith("{")) tag = basefun.setvaltag(tag, map[i, 0], basefun.valtag(tag, map[i, 1])); else tag = basefun.setvaltag(tag, map[i, 0], map[i, 1]); } tag = basefun.setvaltag(tag, "{语音命令}", this.SoundCmd(cardtype, dtparkin, dtparkout)); this.Pause(true); if (Convert.ToInt16(station) >= 129 && cardtype != "3" && cardtype != "4" && cardtype != "6" && cardtype != "8") { CmdExecute("停车场", "屏显语音道闸", tag, station); } this.Pause(false); TimeSpan tc = Convert.ToDateTime(dtparkout) - Convert.ToDateTime(dtparkin); string tt = tc.Days + "天" + tc.Hours + "时" + tc.Minutes + "分" + tc.Seconds + "秒"; tag = basefun.setvaltag(tag, "{停车时长}", tt); this.setContainerTagValue(this.grpInfoM, tag, "pm"); this.InOutParkRecord(tag, db); RefreshParkInfo(); }
/// <summary> /// ������������ݣ���ץ��ͼ�� /// </summary> /// <param name="tag">���볡����</param> /// <param name="display">�ж��Ƿ���ʾˢ��������Ϣ</param> private void ExecuteInOut(string tag, bool display) { string station = basefun.valtag(tag, "{�豸��ַ}"); string cardnum = basefun.valtag(tag, "{����}"); string cardtype = string.Empty; cardtype = basefun.valtag(tag, "����"); if(string.IsNullOrEmpty( cardtype)) cardtype = basefun.valtag(tag, "{����}"); string dtparkin = basefun.valtag(tag, "{�볡ʱ��}"); string dtparkout = basefun.valtag(tag, "{���볡ʱ��}"); string openmode = basefun.valtag(tag, "{��բ��ʽ}"); if (string.IsNullOrEmpty(cardnum)) return; #region ץ��ͼƬ���ϴ������� string filepath = "", filedest = ""; if (videoFlag > 0) { int videonum = 1; string imgkey = "����ͼƬ"; if (dtparkin == dtparkout) { videonum = 0; imgkey = "�볡ͼƬ"; } filepath = CutVideo(videonum, 0 == videonum ? p_in2 : p_out2); if (!string.IsNullOrEmpty(filepath)) filedest = filepath.ToLower().Substring(filepath.IndexOf("image")); tag = basefun.setvaltag(tag, imgkey, filedest); } SendImage(filepath, filedest); #endregion //��ͬ��������볡ҵ���� //1,��ʶ���ƣ���ģʽ�Ի����� //2,����ʶ�������볡���Ʋ�һ�£���ģʽ�Ի����� //3,��ʱ���볡ʶ���ƺ�ֱ�ӿ�բ //4,��ֵ�����ƶԱȺ���У�鿨Ƭ��� //5,�ڿ����ƶԱȺ�ֱ�ӿ�բ //��ֵ���Ѿ��볡���볡��ʾ��δ�볡ˢ����ʱ��ʾ if ("9" == cardtype) { int addr = Convert.ToInt32(station); string tipsound = ""; if (addr < 128 && dtparkin != dtparkout) tipsound = "0C"; else if (addr >= 128 && dtparkin == dtparkout) tipsound = "2A"; // 0C�˿����볡��2A�˿��ѳ��� if (!string.IsNullOrEmpty(tipsound)) { string tagsound = string.Empty; tagsound = basefun.setvaltag(tagsound, "{��բ����}", "00"); tagsound = basefun.setvaltag(tagsound, "{��������}", tipsound); CmdExecute("ͣ����", "���������բ", tagsound, station); return; } } //����ʱ�����ȼ�����ʱ���ʹ�ֵ���շѽ�� if ("9" == cardtype && dtparkin != dtparkout) { if (string.IsNullOrEmpty(dtparkout)) { dtparkout = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); tag = basefun.setvaltag(tag, "{���볡ʱ��}", dtparkout); } tag = basefun.setvaltag(tag, "{����ʱ��}", dtparkout); string rsponseFormat = CmdExecute("ͣ����", "�����շѽ��", tag, station, true); tag = basefun.setvaltag(tag, "{�շѽ��}", basefun.valtag(rsponseFormat, "{�շѽ��}")); } //ʶ���Ʋ�һ�£�����ʱ��ʱģʽ�Ի� string carnum = basefun.valtag(tag, "{���ƺ���}"); string caravt=string.Empty ; if (videoFlag == 2) caravt = basefun.valtag(tag, "{ʶ���ƺ���}"); string strmoney = basefun.valtag(tag, "{��Ƭ���}"); string strpay = basefun.valtag(tag, "{�շѽ��}"); bool isDialog = false; if ("44" == openmode || string.IsNullOrEmpty(openmode)) { if (videoFlag == 2) isDialog = this.IsDialogInOut(cardtype, dtparkin, dtparkout, carnum, caravt, strmoney, strpay); else isDialog = this.IsDialogInOut(cardtype, dtparkin, dtparkout, strmoney, strpay); } //ģʽ�Ի�����ҵ�� DialogResult rsl = DialogResult.Yes; if (isDialog) { this.Pause(true); if (dtparkin == dtparkout) { FrmCarNo inPark = new FrmCarNo(); inPark.tagDate = tag; rsl = inPark.ShowDialog(); tag = inPark.tagDate; if (videoFlag == 2) tag = basefun.setvaltag(tag, "{���ƺ���}", basefun.valtag(inPark.tagDate, "�����������")); } else { FrmFee win = new FrmFee(); tag = basefun.setvaltag(tag, "����Ա", BindManager.getUser().UserAccounts); win.DataTag = tag; win.Query = this.Query; rsl = win.ShowDialog(); tag = win.DataTag; } this.Pause(false); } else { if (cardtype == "5" && videoFlag == 2) tag = basefun.setvaltag(tag, "{���ƺ���}", basefun.valtag(tag, "{ʶ���ƺ���}")); } string db = dtparkin == dtparkout ? "�볡����" : "��������"; //����բ����ʱ�����ڿ�ɾ����λ����¼ if (DialogResult.Yes != rsl && DialogResult.OK != rsl) { this.setContainerTagValue(this.grpInfoM, tag, "pm"); this.InOutParkRecord(tag, db); RefreshParkInfo(); CmdExecute("ͣ����", "ɾ��һ��ͣ����¼", tag, station); CardMoney = string.Empty; return; } string ps = tag; string strts = "0"; if (dtparkin != dtparkout) { TimeSpan ts = Convert.ToDateTime(dtparkout) - Convert.ToDateTime(dtparkin); strts = Convert.ToInt32(ts.Days * 24 * 60 + ts.Hours * 60 + ts.Minutes).ToString(); } string[,] map ={ { "{��բ����}", "02" }, { "{�շѶ�}", "{�շѽ��}" }, { "{���}", "{��Ƭ���}" }, { "{ͣ��ʱ��}", strts } }; for (int i = 0; i < map.GetLength(0); i++) { if (map[i, 1].StartsWith("{")) tag = basefun.setvaltag(tag, map[i, 0], basefun.valtag(tag, map[i, 1])); else tag = basefun.setvaltag(tag, map[i, 0], map[i, 1]); } tag = basefun.setvaltag(tag, "{��������}", this.SoundCmd(cardtype, dtparkin, dtparkout)); this.Pause(true); CmdExecute("ͣ����", "���������բ", tag, station); this.Pause(false); this.setContainerTagValue(this.grpInfoM, tag, "pm"); this.InOutParkRecord(tag, db); RefreshParkInfo(); }