public frmDeviceInfoDetail(ConsumeMachineMaster_cmm_Info info) { InitializeComponent(); initConsumeMachineType(); initMachineStatus(); _icmBL = MasterBLLFactory.GetBLL<IConsumeMachineBL>(MasterBLLFactory.ConsumeMachine); _eduitType = DefineConstantValue.EditStateEnum.OE_Update; _macNo = info.cmm_iMacNo; this._info = info; SetControlValue(); SetcontrolStatus(_eduitType); }
/// <summary> /// 確定換卡 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSave_Click(object sender, EventArgs e) { try { bool resUkey = base.CheckUKey(); if (!resUkey) { return; } #region 添加换卡前对收数情况的判断,若收数未成功,则不能进行换卡操作 ConsumeMachineMaster_cmm_Info searchMacInfo = new ConsumeMachineMaster_cmm_Info(); searchMacInfo.cmm_cStatus = Common.DefineConstantValue.ConsumeMachineStatus.Using.ToString(); List<ConsumeMachineMaster_cmm_Info> listMacInfos = this._IConsumeMachineBL.SearchRecords(searchMacInfo); listMacInfos = listMacInfos.Where(x => x.cmm_lIsActive).ToList(); if (listMacInfos == null && listMacInfos.Count > 0) { base.ShowErrorMessage("获取消费数据同步信息时出现异常,请重试。"); return; } //消费机最后同步时间 DateTime dtMacSync = listMacInfos[0].cmm_dLastAccessTime; //List<ConsumeMachineMaster_cmm_Info> listUnSyncMachineInfos = listMacInfos.Where(x => // x.cmm_dLastAccessTime.Hour != dtMacSync.Hour).ToList(); List<ConsumeMachineMaster_cmm_Info> listUnSyncMachineInfos = new List<ConsumeMachineMaster_cmm_Info>(); foreach (ConsumeMachineMaster_cmm_Info macItem in listMacInfos) { if (macItem != null) { DateTime dtAccess = macItem.cmm_dLastAccessTime; if (Math.Abs((dtAccess - dtMacSync).TotalMinutes) > 30) { listUnSyncMachineInfos.Add(macItem); } } else continue; } List<ConsumeMachineMaster_cmm_Info> listUnConnMachineInfos = listMacInfos.Where(x => !x.cmm_lLastAccessRes).ToList(); if ((listUnSyncMachineInfos != null && listUnSyncMachineInfos.Count > 0) || (listUnConnMachineInfos != null && listUnConnMachineInfos.Count > 0)) { if (base.ShowQuestionMessage("暂时不能进行换卡操作,因检测到有断线现象的消费机,请在恢复收集数据正常后重试。" + Environment.NewLine + "需要立即查看【消费数据收集情况】吗?")) { MenuItem menuClick = new MenuItem(); Sys_FormMaster_fom_Info formClick = new Sys_FormMaster_fom_Info(); formClick.fom_cExePath = "WindowUI.HHZX.ConsumerDevice.frmConsumptionRecordCollect"; menuClick.Tag = formClick; base.ShowSubForm(menuClick, base.BaseDockPanel); } this.btnSave.Enabled = false; this.lblReadNo.Text = "请读卡"; return; } #endregion this.btnSave.Enabled = false; this.lblReadNo.Text = "请读卡"; UserCardPair_ucp_Info userPairInfo = new UserCardPair_ucp_Info(); userPairInfo.ucp_cCardID = _CardInfo.CardSourceID; userPairInfo.ucp_iCardNo = int.Parse(_CardInfo.CardNo); //查询用户是否已拥有正常的消费卡 List<UserCardPair_ucp_Info> listResUserPair = _IUserCardPairBL.SearchRecords(userPairInfo); if (userPairInfo != null) { listResUserPair = listResUserPair.Where(x => x.ucp_cUseStatus != Common.DefineConstantValue.ConsumeCardStatus.Returned.ToString()).ToList(); } if (listResUserPair != null && listResUserPair.Count > 0) { string strMessage = string.Empty; userPairInfo = listResUserPair[0] as UserCardPair_ucp_Info; userPairInfo = _IUserCardPairBL.DisplayRecord(userPairInfo); if (userPairInfo.CardOwner != null) { strMessage += userPairInfo.CardOwner.cus_cChaName + " " + userPairInfo.CardOwner.ClassName + " 卡号:" + userPairInfo.ucp_iCardNo; } base.ShowErrorMessage("该卡已在使用中。使用者:" + strMessage); return; } if (!ShowQuestionMessage("是否确认换卡?")) { return; } if (ShowQuestionMessage("是否需要重新设置【换卡工本费】?" + Environment.NewLine + "当前【换卡工本费】为:" + _ReplaceCost.ToString())) { btnSetCost_Click(null, null); if (!ShowQuestionMessage("【换卡工本费】更新完毕,是否需要继续进行换卡操作?")) { return; } } userPairInfo = _CurrentUserInfo.PairInfo; int iOldCardNo = userPairInfo.ucp_iCardNo; userPairInfo.ucp_cUseStatus = DefineConstantValue.ConsumeCardStatus.Returned.ToString(); userPairInfo.ucp_dReturnTime = System.DateTime.Now; if (!_IUserCardPairBL.Save(userPairInfo, DefineConstantValue.EditStateEnum.OE_Update).isError) { ConsumeCardMaster_ccm_Info ccmInfo = new ConsumeCardMaster_ccm_Info(); ccmInfo.ccm_cCardID = _CardInfo.CardSourceID; ccmInfo.ccm_cCardState = DefineConstantValue.CardUseState.InUse.ToString(); ccmInfo.ccm_lIsActive = true; ccmInfo.ccm_cAdd = this.UserInformation.usm_cUserLoginID; ccmInfo.ccm_dAddDate = System.DateTime.Now; ccmInfo.ccm_cLast = this.UserInformation.usm_cUserLoginID; ccmInfo.ccm_dLastDate = System.DateTime.Now; ///如果新卡沒錄入系統,則先錄入新卡 if (_IConsumeCardMasterBL.DisplayRecord(ccmInfo) != null) { //如果新卡已在系統,則設為已使用 if (_IConsumeCardMasterBL.Save(ccmInfo, DefineConstantValue.EditStateEnum.OE_Update).isError) { } } else { //添加新卡信息 if (_IConsumeCardMasterBL.Save(ccmInfo, DefineConstantValue.EditStateEnum.OE_Insert).isError) { base.ShowErrorMessage("卡信息录入时发生错误,请再次尝试。"); } } //如果存在舊卡,將舊卡設為未使用 if (_CurrentUserInfo.PairInfo != null) { ConsumeCardMaster_ccm_Info oldCardInfo = new ConsumeCardMaster_ccm_Info(); oldCardInfo.ccm_cCardID = _CurrentUserInfo.PairInfo.ucp_cCardID; oldCardInfo = _IConsumeCardMasterBL.DisplayRecord(oldCardInfo) as ConsumeCardMaster_ccm_Info; if (oldCardInfo != null) { oldCardInfo.ccm_cCardState = DefineConstantValue.CardUseState.NotUsed.ToString(); _IConsumeCardMasterBL.Save(oldCardInfo, DefineConstantValue.EditStateEnum.OE_Update); } } userPairInfo.ucp_cRecordID = Guid.NewGuid(); userPairInfo.ucp_cCardID = ccmInfo.ccm_cCardID; userPairInfo.ucp_cAdd = this.UserInformation.usm_cUserLoginID; userPairInfo.ucp_cLast = this.UserInformation.usm_cUserLoginID; userPairInfo.ucp_dPairTime = DateTime.Now; userPairInfo.ucp_dAddDate = DateTime.Now; userPairInfo.ucp_dLastDate = DateTime.Now; userPairInfo.ucp_cUseStatus = DefineConstantValue.ConsumeCardStatus.Normal.ToString(); userPairInfo.ucp_lIsActive = true; userPairInfo.ucp_dReturnTime = null; ReturnValueInfo returnInfo = _IUserCardPairBL.InsertExchargeCard(userPairInfo, _ReplaceCost); userPairInfo = returnInfo.ValueObject as UserCardPair_ucp_Info; if (returnInfo.isError) { base.ShowErrorMessage("换卡失败,请再次尝试。"); return; } else { //換卡成功,將新卡設為已使用 initValue(); UserCardPair_ucp_Info currentPair = this._IUserCardPairBL.DisplayRecord(new UserCardPair_ucp_Info() { ucp_cRecordID = userPairInfo.ucp_cRecordID }) as UserCardPair_ucp_Info; string strCardName = string.Empty; //抽取用户信息写入卡显示名称 if (currentPair.CardOwner != null) { CardUserMaster_cus_Info userSearch = new CardUserMaster_cus_Info() { cus_cRecordID = currentPair.CardOwner.cus_cRecordID }; CardUserMaster_cus_Info userInfo = this._ICardUserMasterBL.DisplayRecord(userSearch) as CardUserMaster_cus_Info; if (userInfo != null) { if (userInfo.cus_cIdentityNum == DefineConstantValue.CodeMasterDefine.KEY2_SIOT_CardUserIdentity_Student)//学生 { if (userInfo.ClassInfo != null) { if (userInfo.ClassInfo.GradeInfo == null) { strCardName += userInfo.ClassInfo.csm_cClassName.Substring(0, 1) == "高" ? "G" : "C"; strCardName += userInfo.ClassInfo.csm_cClassName.Substring(1, 1); } else { strCardName += userInfo.ClassInfo.GradeInfo.gdm_cAbbreviation; } string strTmpName = userInfo.cus_cChaName; if (userInfo.cus_cChaName.Length > 3) { strTmpName = userInfo.cus_cChaName.Substring(1, 3); } strCardName += strTmpName; } else { this.Cursor = Cursors.Default; base.ShowWarningMessage("用户班级信息不全,请重试。"); return; } } else//老师 { string strTmpName = userInfo.cus_cChaName; if (userInfo.cus_cChaName.Length > 6) { strTmpName = strTmpName.Substring(0, 6); } strCardName = strTmpName; } } } CardUserAccount_cua_Info cuaInfo = new CardUserAccount_cua_Info(); cuaInfo.cua_cCUSID = userPairInfo.ucp_cCUSID; cuaInfo = _ICardUserAccountBL.SearchRecords(cuaInfo).FirstOrDefault() as CardUserAccount_cua_Info; _CardInfo.CardNo = userPairInfo.ucp_iCardNo.ToString(); _CardInfo.Name = strCardName; _CardInfo.CardPwd = this._PayPwd; //_cardInfo.CardBalance = cuaInfo.cua_fCurrentBalance; decimal Balance = cuaInfo.cua_fCurrentBalance; if (this._CurrentUserInfo != null) { if (this._CurrentUserInfo.cus_cIdentityNum == Common.DefineConstantValue.CodeMasterDefine.KEY2_SIOT_CardUserIdentity_Student) { CodeMaster_cmt_Info codeInfo = this._ICodeMasterBL.SearchRecords(new CodeMaster_cmt_Info() { cmt_cKey1 = Common.DefineConstantValue.CodeMasterDefine.KEY1_ConstantExpenses, cmt_cKey2 = Common.DefineConstantValue.CodeMasterDefine.KEY2_AdvanceCost }).FirstOrDefault() as CodeMaster_cmt_Info; if (codeInfo != null) { Balance = Balance + codeInfo.cmt_fNumber; } } } if (Balance < 0) { Balance = 0; } _CardInfo.CardBalance = Balance; this._Reader.WriteCardInfo(this._CardInfoSection, this._SectionPwd, _CardInfo); this.lblReadNo.Text = "已换卡"; userPairInfo = returnInfo.ValueObject as UserCardPair_ucp_Info; _CurrentUserInfo.PairInfo = userPairInfo; _CardInfo = null; initValue(); ShowInformationMessage("换卡成功。"); ReturnValueInfo rvRemoveOld = RemoveOldCardFromWList(iOldCardNo); ReturnValueInfo rvAddNew = AddNewCardToWList(userPairInfo.ucp_iCardNo); if (rvRemoveOld.boolValue && rvAddNew.boolValue) { ShowInformationMessage("旧卡自动添加到黑名单列表成功,原卡已不能继续使用。"); } else { ShowErrorMessage("旧卡自动添加到黑名单列表失败,可等待停餐服务收集名单添加或联系管理员手动添加。"); } } } } catch { } }
private ConsumeMachineMaster_cmm_Info GetControlValue() { if (_info == null) { _info = new ConsumeMachineMaster_cmm_Info(); } _info.cmm_cDesc = this.txtDesc.Text; _info.cmm_cUsageType = this.cmbType.SelectedValue.ToString(); _info.cmm_cStatus = this.cmbMachineStatus.SelectedValue.ToString(); _info.cmm_lIsActive = true; if (!String.IsNullOrEmpty(this.nudMacNo.Text)) { _info.cmm_iMacNo = Int32.Parse(this.nudMacNo.Text); } else { base.ShowErrorMessage("请输入机号。"); return null; } if (!String.IsNullOrEmpty(this.nudPort.Text)) { _info.cmm_iPort = Int32.Parse(this.nudPort.Text); } else { base.ShowErrorMessage("请输入端口。"); return null; } if (!String.IsNullOrEmpty(this.txtIPAddr.Text)) { _info.cmm_cIPAddr = this.txtIPAddr.Text; } else { base.ShowErrorMessage("请输入IP地址。"); return null; } if (!String.IsNullOrEmpty(this.txtMacName.Text)) { _info.cmm_cMacName = this.txtMacName.Text; } else { base.ShowErrorMessage("请输入机器名。"); return null; } if (_eduitType == DefineConstantValue.EditStateEnum.OE_Insert) { _info.cmm_cAdd = this.UserInformation.usm_cUserLoginID; _info.cmm_cLast = this.UserInformation.usm_cUserLoginID; } else { _info.cmm_cLast = this.UserInformation.usm_cUserLoginID; } return _info; }
private void btnDetailSettings_Click(object sender, EventArgs e) { _info = GetControlValue(); frmDeviceFunctionSetting frmSetting = new frmDeviceFunctionSetting(_info); frmSetting.ShowDialog(); }
private void btnSave_Click(object sender, EventArgs e) { ConsumeMachineMaster_cmm_Info ccmInfo = GetControlValue(); if (ccmInfo == null) { return; } try { if (_macNo != ccmInfo.cmm_iMacNo) { ConsumeMachineMaster_cmm_Info searchInfo = new ConsumeMachineMaster_cmm_Info(); searchInfo.cmm_iMacNo = ccmInfo.cmm_iMacNo; List<ConsumeMachineMaster_cmm_Info> infoList = _icmBL.SearchRecords(searchInfo); //检查机号是否已存在 if (infoList != null && infoList.Count > 0) { MessageBox.Show("机号:" + ccmInfo.cmm_iMacNo + "已使用,请不要输入重复机号。", "提示"); return; } else { _macNo = ccmInfo.cmm_iMacNo; } } ReturnValueInfo rvInfoSave = _icmBL.Save(_info, _eduitType); if (rvInfoSave.isError || !rvInfoSave.boolValue) { base.ShowErrorMessage("保存失败。"); } else { if (_eduitType == DefineConstantValue.EditStateEnum.OE_Insert) { base.ShowInformationMessage("保存成功,现在可以进行消费机参数设置。"); this.pnlEduit.Enabled = false; this.btnDetailSettings.Enabled = true; this.btnSave.Enabled = false; } else { base.ShowInformationMessage("保存成功。"); this.Close(); } } } catch { } }
/// <summary> /// 从消费机移除白名单 /// </summary> /// <param name="macInfo">消费机信息</param> /// <param name="listUsers">白名单用户信息</param> void RemoveWhiteListToMachine(ConsumeMachineMaster_cmm_Info macInfo, List<CardUserMaster_cus_Info> listUsers) { try { if (macInfo != null && listUsers != null && listUsers.Count > 0) { int iMacNo = macInfo.cmm_iMacNo; int iPort = macInfo.cmm_iPort; IPAddress ipAddr = IPAddress.Parse(macInfo.cmm_cIPAddr); bool resPing = Common.General.Ping(ipAddr.ToString()); if (resPing) { AbstractPayDevice device = PaymentDeviceFactory.CreateDevice(PaymentDeviceFactory.EastRiverDevice); ReturnValueInfo rvInfo = device.Conn(ipAddr, iPort, iMacNo); if (rvInfo.boolValue && !rvInfo.isError) { foreach (CardUserMaster_cus_Info techItem in listUsers) { ReturnValueInfo rvRemove = device.RemoveWhitelist(techItem.PairInfo.ucp_iCardNo.ToString()); } } } } } catch (Exception ex) { throw; } }
/// <summary> /// 上传白名单到消费机 /// </summary> /// <param name="macInfo">消费机信息</param> /// <param name="listUsers">白名单用户信息</param> /// <param name="IsClearedOldList">是否清空旧名单</param> void UploadWhiteListToMachine(ConsumeMachineMaster_cmm_Info macInfo, List<CardUserMaster_cus_Info> listUsers, bool IsClearedOldList) { try { if (macInfo != null && listUsers != null && listUsers.Count > 0) { int iMacNo = macInfo.cmm_iMacNo; int iPort = macInfo.cmm_iPort; IPAddress ipAddr = IPAddress.Parse(macInfo.cmm_cIPAddr); bool resPing = Common.General.Ping(ipAddr.ToString()); if (resPing) { AbstractPayDevice device = PaymentDeviceFactory.CreateDevice(PaymentDeviceFactory.EastRiverDevice); ReturnValueInfo rvInfo = device.Conn(ipAddr, iPort, iMacNo); if (rvInfo.boolValue && !rvInfo.isError) { if (IsClearedOldList) { device.RemoveAllWhitelist(); Console.WriteLine(getCWStyle("消费机连接成功,已清除所有历史白名单:" + iMacNo + "号", SystemLog.SystemLog.LogType.Trace)); } foreach (CardUserMaster_cus_Info techItem in listUsers) { try { ReturnValueInfo rvAdd = device.AddWhitelist(techItem.PairInfo.ucp_iCardNo.ToString()); } catch (Exception exAdd) { Console.WriteLine(getCWStyle("添加白名单卡失败,卡号:" + techItem.PairInfo.ucp_iCardNo + "。异常信息:" + exAdd.Message, SystemLog.SystemLog.LogType.Error)); } } } else { Console.WriteLine(getCWStyle("消费机可以通信,但无法连接:" + iMacNo + "号", SystemLog.SystemLog.LogType.Error)); } } else { Console.WriteLine(getCWStyle("消费机无法通信:" + iMacNo + "号", SystemLog.SystemLog.LogType.Error)); } } } catch (Exception ex) { Console.WriteLine(getCWStyle(ex.Message, SystemLog.SystemLog.LogType.Error)); } }
public frmDeviceFunctionSetting(ConsumeMachineMaster_cmm_Info _info) { InitializeComponent(); _MachineInfo = _info; }
private ConsumeMachineMaster_cmm_Info GetSelectObj() { ConsumeMachineMaster_cmm_Info cmmInfo = new ConsumeMachineMaster_cmm_Info(); if (!String.IsNullOrEmpty(this.nudPort.Text)) { cmmInfo.cmm_iPort = Int32.Parse(this.nudPort.Text); } if (!String.IsNullOrEmpty(this.nudMacNo.Text)) { cmmInfo.cmm_iMacNo = Int32.Parse(this.nudMacNo.Text); } cmmInfo.cmm_cMacName = this.txtMacName.Text; cmmInfo.cmm_cIPAddr = this.txtIPAddr.Text; cmmInfo.cmm_cUsageType = this.cmbMachineType.SelectedValue.ToString(); cmmInfo.cmm_cStatus = this.cmbMachineStatus.SelectedValue.ToString(); return cmmInfo; }
/// <summary> /// 显示消费机列表 /// </summary> private void ShwoDeviceList() { try { List<DeviceInfo> viewList = new List<DeviceInfo>(); ConsumeMachineMaster_cmm_Info cmmInfo = new ConsumeMachineMaster_cmm_Info(); cmmInfo.cmm_lIsActive = true; _infoList = _icsmBL.SearchRecords(cmmInfo); _infoList = _infoList.OrderBy(p => p.cmm_iMacNo).ToList(); if (_infoList != null) { for (int index = 0; index < _infoList.Count; index++) { ConsumeMachineMaster_cmm_Info infos = _infoList[index] as ConsumeMachineMaster_cmm_Info; DeviceInfo vi = new DeviceInfo(); vi.index = (index + 1).ToString(); vi.cmm_cDesc = infos.cmm_cDesc; vi.cmm_cIPAddr = infos.cmm_cIPAddr; vi.cmm_cMacName = infos.cmm_cMacName; vi.cmm_cStatus = infos.cmm_cStatus; vi.cmm_cUsageType = infos.cmm_cUsageType; vi.cmm_iMacNo = infos.cmm_iMacNo; vi.cmm_dLastAccessTime = infos.cmm_dLastAccessTime.ToString("yyyy/MM/dd HH:mm:ss"); if (infos.cmm_lLastAccessRes == true) { vi.isSuccess = "收数成功"; vi.isNormal = true; } else { vi.isSuccess = "收数失败"; vi.isNormal = false; } viewList.Add(vi); } } this.lblMachineAmount.Text = viewList.Count.ToString(); //viewList = viewList.OrderBy(p => p.cmm_dLastAccessTime).ToList(); viewList = viewList.OrderBy(p => p.isNormal).ToList(); lvMachines.Items.Clear(); lvMachines.ListViewItemSorter = null; lvMachines.SetDataSource(viewList); for (int index = 0; index < viewList.Count; index++)//按收數成功設置底色 { if (viewList[index].isNormal) { lvMachines.Items[index].ForeColor = Color.Blue; } else { lvMachines.Items[index].ForeColor = Color.Red; } } } catch { } }
private void ShowMachineList() { try { List<DeviceInfo> viewList = new List<DeviceInfo>(); ConsumeMachineMaster_cmm_Info cmmInfo = new ConsumeMachineMaster_cmm_Info(); cmmInfo.cmm_lIsActive = true; List<ConsumeMachineMaster_cmm_Info> infoList = _icsmBL.SearchRecords(cmmInfo); infoList = infoList.OrderBy(p => p.cmm_iMacNo).ToList(); if (infoList != null) { for (int index = 0; index < infoList.Count; index++) { ConsumeMachineMaster_cmm_Info infos = infoList[index] as ConsumeMachineMaster_cmm_Info; DeviceInfo vi = new DeviceInfo(); vi.cmm_cIPAddr = infos.cmm_cIPAddr; vi.cmm_cMacName = infos.cmm_cMacName; vi.cmm_iMacNo = infos.cmm_iMacNo; vi.cmm_iPort = infos.cmm_iPort; viewList.Add(vi); } } lvMachines.Items.Clear(); lvMachines.ListViewItemSorter = null; lvMachines.SetDataSource(viewList); } catch { } }
private List<ConsumeMachineMaster_cmm_Info> GetSelelctInfo() { List<ConsumeMachineMaster_cmm_Info> cmmList = new List<ConsumeMachineMaster_cmm_Info>(); if (this.lvMachines.CheckedItems != null && this.lvMachines.CheckedItems.Count > 0) { for(int index = 0 ;index < this.lvMachines.CheckedItems.Count ;index ++) { ConsumeMachineMaster_cmm_Info cmmInfo = new ConsumeMachineMaster_cmm_Info(); cmmInfo.cmm_cIPAddr = this.lvMachines.CheckedItems[index].SubItems[2].Text; cmmInfo.cmm_iMacNo = Int32.Parse(this.lvMachines.CheckedItems[index].SubItems[1].Text); cmmInfo.cmm_iPort = Int32.Parse(this.lvMachines.CheckedItems[index].SubItems[4].Text); cmmList.Add(cmmInfo); } } return cmmList; }