/// <summary> /// 保存臨時表 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnConfirmNewCard_Click(object sender, EventArgs e) { if (_TemCardList != null && _TemCardList.Count > 0) { if (MessageBox.Show("是否保存临时表?共" + _TemCardList.Count + "张卡信息。", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes) { string message = ""; for (int index = 0; index < _TemCardList.Count;index++ ) { ConsumeCardMaster_ccm_Info ccmInfo = new ConsumeCardMaster_ccm_Info(); ccmInfo.ccm_cCardID = _TemCardList[index]; ccmInfo.ccm_lIsActive = false; ReturnValueInfo rvInfo = new ReturnValueInfo(); List<ConsumeCardMaster_ccm_Info> ccmList = _iccmBL.SearchRecords(ccmInfo); if (ccmList != null && ccmList.Count > 0) { ccmInfo.ccm_lIsActive = true; ccmInfo.ccm_cLast = this.UserInformation.usm_cUserLoginID; ccmInfo.ccm_dLastDate = System.DateTime.Now; rvInfo = _iccmBL.UpdateRecord(ccmInfo); } else { ccmInfo.ccm_cCardState = DefineConstantValue.CardUseState.NotUsed.ToString(); ccmInfo.ccm_cAdd = this.UserInformation.usm_cUserLoginID; ccmInfo.ccm_cLast = this.UserInformation.usm_cUserLoginID; ccmInfo.ccm_dAddDate = System.DateTime.Now; ccmInfo.ccm_dLastDate = System.DateTime.Now; ccmInfo.ccm_lIsActive = true; rvInfo = _iccmBL.SaveRecord(ccmInfo); } if (rvInfo.isError) { message +="保存卡片:" + _TemCardList[index] + "失敗!\n"; } else { _TemCardList.RemoveAt(index); this.lvTempCardInfos.Items.RemoveAt(index); index++; } } if (message != "") { base.ShowErrorMessage(message); } else { MessageBox.Show("保存完成。","提示"); } } } }
private bool CheckCard() { ConsumeCardMaster_ccm_Info ccmInfo = new ConsumeCardMaster_ccm_Info(); ccmInfo.ccm_cCardID = labCardID.Text; ccmInfo.ccm_lIsActive = true; ccmInfo = _iccmBL.DisplayRecord(ccmInfo) as ConsumeCardMaster_ccm_Info; if (ccmInfo != null) { if (_temCardID != labCardID.Text) { _temCardID = labCardID.Text; this.lblReadMessage.Visible = true; this.lblReadMessage.Text = "卡片已录入,请不要重复录入。"; // MessageBox.Show("卡片:" + labCardID.Text + " 已存在。"); } return true; } else { this.lblReadMessage.Visible = false; this.lblReadMessage.Text = ""; return false; } }
/// <summary> /// 獲取查詢條件 /// </summary> /// <returns></returns> private UserCardPair_ucp_Info GetSearchObj() { if (nudCardNo.DecimalValue == 0 && String.IsNullOrEmpty(this.txtCardID.Text) && String.IsNullOrEmpty(txbChaName.Text) &&( cmbUserClass.SelectedValue == null || String.IsNullOrEmpty(cmbUserClass.SelectedValue.ToString())) &&( cmbUserDepartment.SelectedValue == null || String.IsNullOrEmpty(cmbUserDepartment.SelectedValue.ToString())) ) { MessageBox.Show("请输入一个查询条件"); return null; } CardUserMaster_cus_Info cusInfo = new CardUserMaster_cus_Info(); ConsumeCardMaster_ccm_Info ccmInfo = new ConsumeCardMaster_ccm_Info(); UserCardPair_ucp_Info ucpInfo = new UserCardPair_ucp_Info(); ucpInfo.ucp_lIsActive = true; ucpInfo.CardOwner = cusInfo; ucpInfo.CardInfo = ccmInfo; ucpInfo.ucp_iCardNo = Int32.Parse(nudCardNo.DecimalValue.ToString()); ucpInfo.ucp_cCardID = this.txtCardID.Text; ucpInfo.CardOwner.cus_cChaName = txbChaName.Text.ToString().Trim(); if (cmbUserClass.SelectedValue != null && !String.IsNullOrEmpty(cmbUserClass.SelectedValue.ToString())) { ucpInfo.CardOwner.cus_cClassID = new Guid(cmbUserClass.SelectedValue.ToString()); } if (cmbUserDepartment.SelectedValue != null && !String.IsNullOrEmpty(cmbUserDepartment.SelectedValue.ToString())) { ucpInfo.CardOwner.cus_cClassID = new Guid(cmbUserDepartment.SelectedValue.ToString()); } ucpInfo.CardInfo.ccm_cCardState = this.cmbCardState.SelectedValue.ToString(); if (this.chbPairTime.Checked) { ucpInfo.PairTime_To = this.dtpPairTime_To.Value.AddDays(1); ucpInfo.PairTime_From = this.dtpPairTime_From.Value; } return ucpInfo; }
/// <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 { } }
public List<ConsumeCardMaster_ccm_Info> SearchHistoryRecords(UserCardPair_ucp_Info searchInfo) { List<ConsumeCardMaster_ccm_Info> ccmList = new List<ConsumeCardMaster_ccm_Info>(); try { searchInfo.ucp_iCardNo = 0; searchInfo.ucp_cUseStatus = DefineConstantValue.ConsumeCardStatus.Returned.ToString(); List<UserCardPair_ucp_Info> ucpList = _iucpDA.SearchRecords(searchInfo); if (ucpList != null) { for (int index = 0; index < ucpList.Count; index++) { CardUserMaster_cus_Info cusInfo = new CardUserMaster_cus_Info(); cusInfo.cus_cRecordID = ucpList[index].ucp_cCUSID; cusInfo = _icumDA.SearchRecords(cusInfo).FirstOrDefault(); if (cusInfo != null) { ConsumeCardMaster_ccm_Info ccmInfo = new ConsumeCardMaster_ccm_Info(); ccmInfo.CardOwner = cusInfo; ccmInfo.UCPInfo = ucpList[index]; ccmList.Add(ccmInfo); } } } } catch { } return ccmList; }
public List<ConsumeCardMaster_ccm_Info> SearchDisplayRecords(UserCardPair_ucp_Info searchInfo) { List<ConsumeCardMaster_ccm_Info> infoList = new List<ConsumeCardMaster_ccm_Info>(); UserCardPair_ucp_Info ucpInfo; CardUserMaster_cus_Info cusInfo; ConsumeCardMaster_ccm_Info ccmInfo; if (searchInfo.ucp_iCardNo > 0 || !String.IsNullOrEmpty(searchInfo.ucp_cCardID)) { //searchInfo.ucp_cUseStatus = "Normal"; ccmInfo = new ConsumeCardMaster_ccm_Info(); ucpInfo = _iucpDA.SearchRecords(searchInfo).OrderBy(p => p.ucp_dAddDate).FirstOrDefault();//查卡用戶關系表 if (ucpInfo != null && ucpInfo.ucp_cUseStatus != DefineConstantValue.ConsumeCardStatus.Returned.ToString()) { cusInfo = new CardUserMaster_cus_Info(); cusInfo.cus_cRecordID = ucpInfo.ucp_cCUSID; cusInfo = _icumDA.DisplayRecord(cusInfo);//查用戶信息 ccmInfo.ccm_cCardID = ucpInfo.ucp_cCardID; ccmInfo.ccm_lIsActive = true; ccmInfo = _iccmDA.SearchRecords(ccmInfo).FirstOrDefault();//查卡信息 if(ccmInfo != null) { ccmInfo.CardOwner = cusInfo; ccmInfo.UCPInfo = ucpInfo; infoList.Add(ccmInfo); } } else if(!String.IsNullOrEmpty(searchInfo.ucp_cCardID)) { ccmInfo = new ConsumeCardMaster_ccm_Info(); ccmInfo.ccm_cCardID = searchInfo.ucp_cCardID; ccmInfo.ccm_lIsActive = true; ccmInfo = _iccmDA.SearchRecords(ccmInfo).FirstOrDefault(); if(ccmInfo != null) { infoList.Add(ccmInfo); } } } else if (!String.IsNullOrEmpty(searchInfo.CardOwner.cus_cChaName) || searchInfo.CardOwner.cus_cClassID != Guid.Empty) { List<CardUserMaster_cus_Info> cusList = _icumDA.SearchRecords(searchInfo.CardOwner); if (cusList != null) { for (int index = 0; index < cusList.Count; index++) { searchInfo.ucp_cCUSID = cusList[index].cus_cRecordID; ucpInfo = _iucpDA.SearchRecords(searchInfo).OrderBy(p => p.ucp_dAddDate).FirstOrDefault(); if (ucpInfo != null && ucpInfo.ucp_cUseStatus == DefineConstantValue.ConsumeCardStatus.Normal.ToString()) { ccmInfo = new ConsumeCardMaster_ccm_Info(); ccmInfo.ccm_cCardID = ucpInfo.ucp_cCardID; ccmInfo.ccm_cCardState = searchInfo.CardInfo.ccm_cCardState; ccmInfo.ccm_lIsActive = true; ccmInfo = _iccmDA.SearchRecords(ccmInfo).FirstOrDefault();//查卡信息 if (ccmInfo != null) { ccmInfo.CardOwner = cusList[index]; ccmInfo.UCPInfo = ucpInfo; infoList.Add(ccmInfo); } } } } } else { List<ConsumeCardMaster_ccm_Info> ccmList = _iccmDA.SearchRecords(new ConsumeCardMaster_ccm_Info() { ccm_lIsActive = true}); if (ccmList != null) { for (int index = 0; index < ccmList.Count; index++) { ucpInfo = new UserCardPair_ucp_Info(); ucpInfo.ucp_cCardID = ccmList[index].ccm_cCardID; ucpInfo.ucp_cUseStatus = DefineConstantValue.ConsumeCardStatus.Normal.ToString(); ucpInfo = _iucpBL.SearchRecords(ucpInfo).FirstOrDefault(); if(ucpInfo != null) { ccmList[index].UCPInfo = ucpInfo; ccmList[index].CardOwner = ucpInfo.CardOwner; } infoList.Add(ccmList[index]); } } } if (infoList != null && infoList.Count > 0 && searchInfo.PairTime_From != null && searchInfo.PairTime_To != null) { for (int index = 0; index < infoList.Count; index++) { if (infoList[index].UCPInfo.ucp_dPairTime < searchInfo.PairTime_From || infoList[index].UCPInfo.ucp_dPairTime > searchInfo.PairTime_To) { infoList.RemoveAt(index); index--; } } } return infoList; }
/// <summary> /// 单卡发卡逻辑 /// </summary> /// <param name="userID">用户信息记录ID</param> /// <param name="fNewCardCost">新卡工本费</param> /// <param name="fAdvanceCost">可透支额</param> /// <returns></returns> ReturnValueInfo pairCardLogic(Guid userID, decimal fNewCardCost, decimal fAdvanceCost) { ReturnValueInfo rvInfo = new ReturnValueInfo(); try { ConsumeCardInfo sourceCardInfo = this._Reader.ReadCardInfo(base._CardInfoSection, base._SectionPwd); if (sourceCardInfo == null) { sourceCardInfo = this._Reader.ReadCardInfo(base._CardInfoSection, base._OrganizeSectionPwd); if (sourceCardInfo != null) { rvInfo = this._Reader.ModifySectionPwd(base._CardInfoSection, base._OrganizeSectionPwd, base._SectionPwd); } } if (sourceCardInfo == null) { rvInfo.messageText = "卡片已损坏,请重试。"; rvInfo.isError = true; return rvInfo; } string strCardID = sourceCardInfo.CardSourceID; if (strCardID == null) { rvInfo.messageText = "卡片已损坏或摆放位置不正确,请重试。"; rvInfo.isError = true; return rvInfo; } ConsumeCardMaster_ccm_Info cardSearch = null; ConsumeCardMaster_ccm_Info cardInfo = new ConsumeCardMaster_ccm_Info(); cardInfo.ccm_cCardID = strCardID; // *********1、搜索卡主档,检查是否存在此卡资料********* #region 卡主档信息检查 cardSearch = this._IConsumeCardMasterBL.DisplayRecord(cardInfo) as ConsumeCardMaster_ccm_Info; if (cardSearch == null) { //无相应卡主档记录则先添加此卡 cardInfo.ccm_cCardState = DefineConstantValue.CardUseState.NotUsed.ToString(); cardInfo.ccm_cAdd = base.UserInformation.usm_cUserLoginID; cardInfo.ccm_dAddDate = DateTime.Now; cardInfo.ccm_cLast = cardInfo.ccm_cAdd; cardInfo.ccm_dLastDate = cardInfo.ccm_dAddDate; rvInfo = this._IConsumeCardMasterBL.Save(cardInfo, DefineConstantValue.EditStateEnum.OE_Insert); if (!rvInfo.boolValue || rvInfo.isError) { rvInfo.messageText = "录入本卡信息失败,请重试。"; rvInfo.isError = true; return rvInfo; } } #endregion try { //*********2、插入发卡信息************ UserCardPair_ucp_Info pairInfo = new UserCardPair_ucp_Info(); #region 检查是否已发卡 pairInfo = new UserCardPair_ucp_Info(); pairInfo.ucp_cCUSID = userID; List<UserCardPair_ucp_Info> listSearch = this._IUserCardPairBL.SearchRecords(pairInfo); listSearch = listSearch.Where(x => x.ucp_cUseStatus != Common.DefineConstantValue.ConsumeCardStatus.Returned.ToString()).ToList(); if (listSearch.Count > 0) { //此人已发卡 rvInfo.messageText = "此用户已被发卡。" + Environment.NewLine + "拥有卡号:" + listSearch[0].ucp_iCardNo.ToString(); return rvInfo; } pairInfo = new UserCardPair_ucp_Info(); pairInfo.ucp_iCardNo = int.Parse(sourceCardInfo.CardNo); pairInfo.ucp_cCardID = cardInfo.ccm_cCardID; listSearch = this._IUserCardPairBL.SearchRecords(pairInfo); listSearch = listSearch.Where(x => x.ucp_cUseStatus != Common.DefineConstantValue.ConsumeCardStatus.Returned.ToString()).ToList(); if (listSearch.Count > 0) { //此卡已发卡 rvInfo.messageText = "此卡已被发卡。" + Environment.NewLine + "卡拥有人:" + listSearch[0].CardOwner.cus_cStudentID + " " + listSearch[0].CardOwner.cus_cChaName; return rvInfo; } #endregion pairInfo = new UserCardPair_ucp_Info(); pairInfo.ucp_cRecordID = Guid.NewGuid(); pairInfo.ucp_cCardID = cardInfo.ccm_cCardID; pairInfo.ucp_cCUSID = userID; pairInfo.ucp_dPairTime = DateTime.Now; pairInfo.ucp_cUseStatus = Common.DefineConstantValue.ConsumeCardStatus.Normal.ToString(); pairInfo.ucp_cAdd = base.UserInformation.usm_cUserLoginID; pairInfo.ucp_dAddDate = pairInfo.ucp_dPairTime; pairInfo.ucp_cLast = pairInfo.ucp_cAdd; pairInfo.ucp_dLastDate = pairInfo.ucp_dAddDate; rvInfo = this._IUserCardPairBL.InsertNewCard(pairInfo, fNewCardCost); if (rvInfo.boolValue && !rvInfo.isError) { // *********3、写入卡物理信息********* #region 发卡 UserCardPair_ucp_Info currentPair = this._IUserCardPairBL.DisplayRecord(new UserCardPair_ucp_Info() { ucp_cRecordID = pairInfo.ucp_cRecordID }); CardUserMaster_cus_Info userInfo = null; //抽取用户资料【写入卡显示名称】 string strCardName = string.Empty;//卡片显示信息 #region 写入卡显示信息 if (currentPair.CardOwner != null) { CardUserMaster_cus_Info userSearch = new CardUserMaster_cus_Info() { cus_cRecordID = currentPair.CardOwner.cus_cRecordID }; userInfo = this._ICardUserMasterBL.DisplayRecord(userSearch); if (userInfo != null) { #region 判断身份 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 { rvInfo.messageText = "用户班级信息不全,请重试。"; rvInfo.isError = true; return rvInfo; } } else if (userInfo.cus_cIdentityNum == DefineConstantValue.CodeMasterDefine.KEY2_SIOT_CardUserIdentity_Staff)//老师 { string strTmpName = userInfo.cus_cChaName; if (userInfo.cus_cChaName.Length > 6) { strTmpName = strTmpName.Substring(0, 6); } strCardName = strTmpName; } else { rvInfo.messageText = "有未知身份的用户。" + Environment.NewLine + userInfo.cus_cStudentID + " " + userInfo.cus_cChaName; rvInfo.isError = true; return rvInfo; } #endregion ConsumeCardInfo writeCardInfo = new ConsumeCardInfo() { CardBalance = 0, CardNo = currentPair.ucp_iCardNo.ToString(), CardPwd = base._PayPwd, ConsumeTimes = 0, Name = strCardName }; //写入卡显示信息 rvInfo = this._Reader.WriteCardInfo(base._CardInfoSection, base._SectionPwd, writeCardInfo); if (!rvInfo.boolValue || rvInfo.isError) { rvInfo = this._IUserCardPairBL.Save(pairInfo, DefineConstantValue.EditStateEnum.OE_Delete); if (rvInfo.boolValue && rvInfo.isError) { rvInfo.messageText = "写入用户卡信息时出现异常,当前发卡记录已重置,请重新进行发卡操作。"; rvInfo.isError = true; return rvInfo; } else { rvInfo.messageText = "写入用户卡信息时出现异常,当前发卡记录未能重置,请联系系统管理员重置发卡记录后重新发卡。"; rvInfo.isError = true; return rvInfo; } } } else { rvInfo.messageText = "用户信息异常,请检查该用户信息后重试。"; rvInfo.isError = true; return rvInfo; } } #endregion if (userInfo.cus_cIdentityNum == DefineConstantValue.CodeMasterDefine.KEY2_SIOT_CardUserIdentity_Student) { #region 学生发卡,需预充透支金额 //插入发卡信息后,充入透支金额 rvInfo = this._Reader.Recharge((short)base._CardInfoSection, base._SectionPwd, fAdvanceCost); if (rvInfo.boolValue && !rvInfo.isError) { RechargeRecord_rcr_Info record = new RechargeRecord_rcr_Info(); record.rcr_cRecordID = Guid.NewGuid(); record.rcr_cCardID = cardInfo.ccm_cCardID; record.rcr_cRechargeType = DefineConstantValue.ConsumeMoneyFlowType.Recharge_AdvanceMoney.ToString(); record.rcr_cStatus = DefineConstantValue.ConsumeMoneyFlowStatus.Finished.ToString(); record.rcr_cUserID = userID; record.rcr_dRechargeTime = DateTime.Now; record.rcr_cAdd = base.UserInformation.usm_cUserLoginID; record.rcr_cLast = record.rcr_cAdd; record.rcr_dLastDate = record.rcr_dRechargeTime; record.rcr_fRechargeMoney = fAdvanceCost; //成功充值后,将充值信息计入相应记录表 rvInfo = this._IRechargeRecordBL.Save(record, DefineConstantValue.EditStateEnum.OE_Insert); if (!rvInfo.boolValue || rvInfo.isError) { //卡充值失败,将原金额扣除 rvInfo = this._Reader.Recharge((short)base._CardInfoSection, base._SectionPwd, fAdvanceCost * -1); rvInfo.messageText = "发卡成功,保存预充透支金额失败。"; rvInfo.isError = true; return rvInfo; } ConsumeCardInfo cardCurrentInfo = this._Reader.ReadCardInfo(base._CardInfoSection, base._SectionPwd); string strContent = "发卡成功。" + Environment.NewLine + "学生姓名:" + userInfo.cus_cChaName; if (cardCurrentInfo != null) { strContent += Environment.NewLine + "卡可用余额:¥" + cardCurrentInfo.CardBalance.ToString() + "元。"; strContent += Environment.NewLine + "(包含可透支金额:¥" + fAdvanceCost.ToString() + "元)"; strContent += Environment.NewLine + "新卡工本费:¥" + fNewCardCost.ToString() + "元。"; } rvInfo.messageText = strContent; }//CardRecharge else { rvInfo.messageText = "发卡成功,消费卡充入预支款失败。"; rvInfo.isError = true; return rvInfo; } #endregion } else if (userInfo.cus_cIdentityNum == DefineConstantValue.CodeMasterDefine.KEY2_SIOT_CardUserIdentity_Staff) { #region 老师卡发卡 rvInfo.messageText = "发卡成功。" + Environment.NewLine + "老师姓名:" + userInfo.cus_cChaName + "。" + Environment.NewLine + "新卡工本费:" + fNewCardCost.ToString() + "。"; #endregion } #endregion rvInfo.ValueObject = currentPair; //*********4、查询是否有预充值款项,有则进行预充值********* //查找该用户是否有【转账充值】款项 List<PreRechargeRecord_prr_Info> listPreRecharge = this._IPreRechargeRecordBL.SearchRecords(new PreRechargeRecord_prr_Info() { prr_cUserID = userID, prr_cStatus = Common.DefineConstantValue.ConsumeMoneyFlowStatus.WaitForAcceptTransfer.ToString() }); if (listPreRecharge != null && listPreRecharge.Count > 0) { #region 预充值 //查找该用户是否有未付的【预消费】款项 decimal fSumPreCost = decimal.Zero;//未结算消费总额 List<PreConsumeRecord_pcs_Info> listPreCost = this._IPreConsumeRecordBL.SearchRecords(new PreConsumeRecord_pcs_Info() { pcs_cUserID = userID, }); if (listPreCost != null) { listPreCost = listPreCost.Where(x => x.pcs_lIsSettled == false && x.pcs_cConsumeType != Common.DefineConstantValue.ConsumeMoneyFlowType.IndeterminateCost.ToString() && x.pcs_cConsumeType != Common.DefineConstantValue.ConsumeMoneyFlowType.AdvanceMealCost.ToString() && x.pcs_cConsumeType != Common.DefineConstantValue.ConsumeMoneyFlowType.HedgeFund.ToString() ).ToList(); if (listPreCost.Count > 0) { fSumPreCost = listPreCost.Sum(x => x.pcs_fCost); } } ConsumeCardInfo CardInfo = this._Reader.ReadCardInfo(base._CardInfoSection, base._SectionPwd); if (CardInfo == null) { rvInfo.messageText += Environment.NewLine + "确认卡片信息失败,无法继续进行预充值操作。"; rvInfo.boolValue = false; return rvInfo; } decimal fCardBalance = CardInfo.CardBalance;//卡片现可用余额 decimal fPreRecharge = listPreRecharge.Sum(x => x.prr_fRechargeMoney);//预充值累积款 decimal fCardRecharge = fPreRecharge + fSumPreCost;//预充值款 + 未结算预付款 = 卡片应充值金额 if (fPreRecharge > 0 && fCardRecharge >= 0) { #region 存在预充值记录,并且足以扣除未结算款项 ReturnValueInfo rvInfoPreRecharge = this._Reader.Recharge(base._CardInfoSection, base._SectionPwd, fCardRecharge); if (rvInfoPreRecharge.boolValue && !rvInfoPreRecharge.isError) { List<RechargeRecord_rcr_Info> listRechargeInsert = new List<RechargeRecord_rcr_Info>(); decimal fPerTimeRecharge = fSumPreCost; //foreach (PreRechargeRecord_prr_Info preRecItem in listPreRecharge) //{ // RechargeRecord_rcr_Info rechargeRecord = new RechargeRecord_rcr_Info(); // rechargeRecord.rcr_cAdd = base.UserInformation.usm_cUserLoginID; // rechargeRecord.rcr_cCardID = pairInfo.ucp_cCardID; // rechargeRecord.rcr_cLast = base.UserInformation.usm_cUserLoginID; // rechargeRecord.rcr_cRechargeType = preRecItem.prr_cRechargeType; // rechargeRecord.rcr_cRecordID = Guid.NewGuid(); // rechargeRecord.rcr_cStatus = DefineConstantValue.ConsumeMoneyFlowStatus.Finished.ToString(); // rechargeRecord.rcr_cUserID = pairInfo.ucp_cCUSID; // rechargeRecord.rcr_dLastDate = DateTime.Now; // rechargeRecord.rcr_dRechargeTime = DateTime.Now; // rechargeRecord.rcr_fRechargeMoney = preRecItem.prr_fRechargeMoney; // fPerTimeRecharge += preRecItem.prr_fRechargeMoney; // if (fPerTimeRecharge < 0) // { // rechargeRecord.rcr_fBalance = fCardBalance; // } // else // { // rechargeRecord.rcr_fBalance = fCardBalance + fPerTimeRecharge; // } // preRecItem.prr_cRCRID = rechargeRecord.rcr_cRecordID; // listRechargeInsert.Add(rechargeRecord); //} for (int i = 0; i < listPreRecharge.Count; i++) { RechargeRecord_rcr_Info rechargeRecord = new RechargeRecord_rcr_Info(); rechargeRecord.rcr_cAdd = base.UserInformation.usm_cUserLoginID; rechargeRecord.rcr_cCardID = pairInfo.ucp_cCardID; rechargeRecord.rcr_cLast = base.UserInformation.usm_cUserLoginID; rechargeRecord.rcr_cRechargeType = listPreRecharge[i].prr_cRechargeType; rechargeRecord.rcr_cRecordID = Guid.NewGuid(); rechargeRecord.rcr_cStatus = DefineConstantValue.ConsumeMoneyFlowStatus.Finished.ToString(); rechargeRecord.rcr_cUserID = pairInfo.ucp_cCUSID; rechargeRecord.rcr_dLastDate = DateTime.Now; rechargeRecord.rcr_dRechargeTime = DateTime.Now; rechargeRecord.rcr_fRechargeMoney = listPreRecharge[i].prr_fRechargeMoney; fPerTimeRecharge += listPreRecharge[i].prr_fRechargeMoney; if (fPerTimeRecharge < 0) { //rechargeRecord.rcr_fBalance = fCardBalance; if (i != listPreRecharge.Count - 1) { rechargeRecord.rcr_fBalance = fCardBalance; } else { rechargeRecord.rcr_fBalance = fCardBalance + fPerTimeRecharge; } } else { rechargeRecord.rcr_fBalance = fCardBalance + fPerTimeRecharge; } listPreRecharge[i].prr_cRCRID = rechargeRecord.rcr_cRecordID; listRechargeInsert.Add(rechargeRecord); } rvInfoPreRecharge = this._IRechargeRecordBL.UpdateRechargeRecord(listPreRecharge, listRechargeInsert, fSumPreCost); if (rvInfoPreRecharge.boolValue && !rvInfoPreRecharge.isError) { rvInfo.messageText += Environment.NewLine + "存在预转账记录" + listPreRecharge.Count.ToString() + "条,款项合共:¥" + fPreRecharge.ToString() + "元,已成功充入。"; rvInfo.boolValue = true; return rvInfo; } else { rvInfoPreRecharge = this._Reader.Recharge(base._CardInfoSection, base._SectionPwd, fPreRecharge); if (rvInfoPreRecharge.isError || !rvInfoPreRecharge.boolValue) { rvInfo.messageText += Environment.NewLine + "保存预充值记录失败,卡片金额已更新,请联系管理员扣减卡金额。"; } } } else { rvInfo.messageText += Environment.NewLine + "预充值操作失败,无法将该用户的待转账款项充入卡内,请稍后手动转账充值。" + Environment.NewLine + rvInfoPreRecharge.messageText; rvInfo.boolValue = false; } #endregion } else { if (fCardRecharge < 0) { rvInfo.messageText += Environment.NewLine + "本用户有转账充值记录" + listPreRecharge.Count.ToString() + "条,但不足以抵扣未结算预付款,请充值。"; rvInfo.boolValue = true; return rvInfo; } } #endregion } else { rvInfo.boolValue = true; return rvInfo; } } else { rvInfo.messageText = "保存新发卡资料失败。" + rvInfo.messageText; rvInfo.isError = true; return rvInfo; } } catch (Exception ex) { rvInfo.messageText = ex.Message; rvInfo.isError = true; return rvInfo; } } catch (Exception exAll) { rvInfo.messageText = exAll.Message; rvInfo.isError = true; } return rvInfo; }
/// <summary> /// 添加已发卡的卡信息 /// </summary> /// <param name="pairInfo"></param> /// <returns></returns> bool AddCardMasterInfo(UserCardPair_ucp_Info pairInfo) { bool res = false; try { ConsumeCardMaster_ccm_Info searchInfo = new ConsumeCardMaster_ccm_Info(); searchInfo.ccm_cCardID = pairInfo.ucp_cCardID; pairInfo.CardInfo = this._IConsumeCardMasterDA.DisplayRecord(searchInfo); if (pairInfo.CardOwner != null) res = true; } catch (Exception ex) { throw ex; } return res; }
public ReturnValueInfo Save(IModelObject itemEntity, DefineConstantValue.EditStateEnum EditMode) { ReturnValueInfo rvInfo = new ReturnValueInfo(); try { DefineConstantValue.CardUseState cardState = DefineConstantValue.CardUseState.NotUsed; UserCardPair_ucp_Info pairInfo = itemEntity as UserCardPair_ucp_Info; if (pairInfo == null) { rvInfo.isError = true; rvInfo.messageText = Common.DefineConstantValue.SystemMessageText.strMessageText_E_ObjectNull; return rvInfo; } switch (EditMode) { case DefineConstantValue.EditStateEnum.OE_Insert: { //如果无被发卡,则插入发卡记录 rvInfo = CheckPairDetail(pairInfo); if (!rvInfo.boolValue || rvInfo.isError) { return rvInfo; } pairInfo.ucp_dPairTime = DateTime.Now; pairInfo.ucp_dAddDate = pairInfo.ucp_dPairTime; pairInfo.ucp_dLastDate = pairInfo.ucp_dPairTime; rvInfo = this._IUserCardPairDA.InsertRecord(pairInfo); cardState = DefineConstantValue.CardUseState.InUse; break; } case DefineConstantValue.EditStateEnum.OE_Update: pairInfo.ucp_dLastDate = DateTime.Now; rvInfo = this._IUserCardPairDA.UpdateRecord(pairInfo); cardState = DefineConstantValue.CardUseState.InUse; break; case DefineConstantValue.EditStateEnum.OE_Delete: pairInfo.ucp_dLastDate = DateTime.Now; rvInfo = this._IUserCardPairDA.DeleteRecord(pairInfo); cardState = DefineConstantValue.CardUseState.NotUsed; break; default: break; } rvInfo.ValueObject = this._IUserCardPairDA.DisplayRecord(pairInfo); if (rvInfo.boolValue && !rvInfo.isError) { //检查本卡是否已经录入卡主档 ConsumeCardMaster_ccm_Info searchCardInfo = new ConsumeCardMaster_ccm_Info(); searchCardInfo.ccm_cCardID = pairInfo.ucp_cCardID; ConsumeCardMaster_ccm_Info cardInfo = this._IConsumeCardMasterDA.DisplayRecord(searchCardInfo); if (cardInfo == null)//查无此卡 { cardInfo = new ConsumeCardMaster_ccm_Info(); cardInfo.ccm_cCardID = pairInfo.ucp_cCardID; cardInfo.ccm_cCardState = cardState.ToString(); cardInfo.ccm_cAdd = pairInfo.ucp_cLast; cardInfo.ccm_dAddDate = DateTime.Now; cardInfo.ccm_dLastDate = cardInfo.ccm_dAddDate; //将新卡录入卡主档 rvInfo = this._IConsumeCardMasterDA.InsertRecord(cardInfo); } else { if (EditMode != DefineConstantValue.EditStateEnum.OE_Delete) { if (cardInfo.ccm_cCardState != DefineConstantValue.CardUseState.InUse.ToString()) { cardInfo.ccm_cCardState = DefineConstantValue.CardUseState.InUse.ToString(); rvInfo = this._IConsumeCardMasterDA.UpdateRecord(cardInfo); } } else { if (cardInfo.ccm_cCardState != DefineConstantValue.CardUseState.NotUsed.ToString()) { cardInfo.ccm_cCardState = DefineConstantValue.CardUseState.NotUsed.ToString(); rvInfo = this._IConsumeCardMasterDA.UpdateRecord(cardInfo); } } } } } catch (Exception ex) { rvInfo.isError = true; rvInfo.messageText = ex.Message; } return rvInfo; }