Browse Source

Z991239-6087 #comment feat: EjectJS接口实现

Signed-Off-By: commit-hook
刘文涛80174520 6 tháng trước cách đây
mục cha
commit
befbc7416f

+ 164 - 0
Module/mod_CardIssuerStand/CardIssuerFSM.cpp

@@ -5325,6 +5325,170 @@ bool CCardIssuerFSM::IfUseRf()
 	return false;
 }
 
+int CCardIssuerFSM::EjectJS(SpReqAnsContext<CardIssuerStandService_EjectJS_Req, CardIssuerStandService_EjectJS_Ans>::Pointer ctx)
+{
+	LOG_FUNCTION();
+	DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("吐卡开始");
+	long l_beginTime, l_endTime;
+	Sleep(300);//oilyang@20230106 for keba said "maybe we need stay for machine to prepare..."
+	int ret = 0;
+	ErrorCodeEnum eErr;
+	m_pCardProcess->DataInit();
+	l_beginTime = GetTickCountRVC();
+	eErr = m_hDevHelper->MoveCard(CI_MOVECARD_FRONT_GATE);
+	l_endTime = GetTickCountRVC();
+	DWORD dwTmpUserErrCode = 0;
+	if (eErr != Error_Succeed) {
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("EjectJS::MoveCard(CI_MOVECARD_FRONT_GATE) err");
+		if (m_bCardFromHopper) {
+			if (IsInBusiness() && ctx != NULL) {
+				dwTmpUserErrCode = SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_CI_MOVECARD_FRONT_GATE, "DevAdapter::MoveCard", __FUNCTION__, true, l_endTime - l_beginTime, "QLR040220342", "");
+			}
+			else {
+				dwTmpUserErrCode = SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_CI_MOVECARD_FRONT_GATE, "DevAdapter::MoveCard", __FUNCTION__, false, l_endTime - l_beginTime, "QLR040220342", "");
+			}
+		}
+		else {
+			if (IsInBusiness() && ctx != NULL) {
+				dwTmpUserErrCode = SetErrorAndLog(eErr, CardIssuer_UserErrorCode_MoveCardToGate_Failed, "DevAdapter::MoveCard", __FUNCTION__, true, l_endTime - l_beginTime, "QLR040220342", "");
+			}
+			else {
+				dwTmpUserErrCode = SetErrorAndLog(eErr, CardIssuer_UserErrorCode_MoveCardToGate_Failed, "DevAdapter::MoveCard", __FUNCTION__, false, l_endTime - l_beginTime, "QLR040220342", "");
+			}
+		}
+		if (ctx != NULL) {
+			ctx->Answer(Error_Unexpect, dwTmpUserErrCode);
+		}
+		return 1;//S9
+	}
+	else {
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR040220342")("EjectCard, ret: %d", ret);
+		//等待取卡
+		DWORD dwStart, dwEnd;
+		dwStart = GetTickCountRVC();
+		LogEvent(Severity_Middle, LOG_EVT_CARDISSUER_GREEN_ON, "CardReader(fetch) warning on");
+		do {
+			if (GetDevStatus(false)) {
+				dwEnd = GetTickCountRVC();
+				if (m_devStatus.eMedia == CI_MEDIA_ENTERING) {
+					Sleep(WAIT_INTERVAL);
+				}
+				else {
+					long l_beginTime, l_endTime;
+					l_beginTime = GetTickCountRVC();
+					ErrorCodeEnum eErr = m_hDevHelper->SetCardInType(CI_CARD_IN_TYPE_FORBIDDEN);
+					l_endTime = GetTickCountRVC();
+
+
+					if (eErr != Error_Succeed) {
+						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("EjectJS::SetCardInType(CI_CARD_IN_TYPE_FORBIDDEN) err");
+						SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_SetCardInType, "DevAdapter::SetCardInType", __FUNCTION__, false, l_endTime - l_beginTime, "QLR040220342", "");
+					}
+					else {
+						DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SetCardInType").setCostTime(l_endTime - l_beginTime)("EjectJS::SetCardInType");
+					}
+
+					LogEvent(Severity_Middle, LOG_EVT_CARDISSUER_GREEN_OFF, "CardReader(fetch) warning off");
+					if (ctx != NULL) {
+						ctx->Answer(Error_Succeed);
+					}
+					return 0;//成功取走
+				}
+			}
+			else
+			{
+				LogEvent(Severity_Middle, LOG_EVT_CARDISSUER_GREEN_OFF, "CardReader(fetch) warning off");
+				if (ctx != NULL)
+				{
+					ctx->Answer(Error_Unexpect, 0x20300002);
+				}
+				return 1;//S9
+			}
+		} while ((dwEnd - dwStart) < 55 * 1000);//预留5秒给吞卡操作
+		LogEvent(Severity_Middle, LOG_EVT_CARDISSUER_GREEN_OFF, "CardReader(fetch) warning off");
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_USER)("客户未取卡超时");
+
+		//超时未取卡进行吞卡操作
+		l_beginTime = GetTickCountRVC();
+		eErr = m_hDevHelper->MoveCard(CI_MOVECARD_BACK_NOT_HOLD);
+		l_endTime = GetTickCountRVC();
+
+		if (eErr == Error_Succeed) {
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::MoveCard").setCostTime(l_endTime - l_beginTime)("EjectJS::MoveCard(CI_MOVECARD_BACK_NOT_HOLD)");
+			m_CardCaptured++;
+			m_captureReason = "4998";//超时未取卡引起吞卡
+			ToRegistCaptureCardInfo();//登记吞卡记录
+			m_currCardNo = m_addCardNo = "";
+
+			l_beginTime = GetTickCountRVC();
+			ErrorCodeEnum eErrSet = m_hDevHelper->SetCardInType(CI_CARD_IN_TYPE_FORBIDDEN);
+			l_endTime = GetTickCountRVC();
+
+			if (eErrSet != Error_Succeed) {
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("EjectJS::SetCardInType err");
+				SetErrorAndLog(eErrSet, MEC_DEVAPI_CARDISSUER_SetCardInType, "DevAdapter::SetCardInType", __FUNCTION__, false, l_endTime - l_beginTime, "QLR040220342", "");
+			}
+			else {
+				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SetCardInType").setCostTime(l_endTime - l_beginTime)("EjectJS::SetCardInType");
+			}
+			//超时吞卡成功
+			LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_Forget_Fetch_Card_Capture_Succ, "forget fetch card ,capture succ");
+			if (ctx != NULL) {
+				ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_Forget_Fetch_Card_Capture_Succ);
+			}
+			return 0;//超时吞卡成功
+		}
+		else {
+			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("EjectJS::MoveCard(CI_MOVECARD_BACK_NOT_HOLD) err");
+			if (ctx != NULL) {
+				SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_CI_MOVECARD_BACK_NOT_HOLD, "DevAdapter::MoveCard", __FUNCTION__, false, l_endTime - l_beginTime, "QLR040220342", "");
+			}
+			//超时吞卡失败
+			LogWarn(Severity_Middle, Error_Unexpect, CardIssuer_UserErrorCode_Forget_Fetch_Card_Capture_Fail, "forget fetch card ,capture fail");
+			if (ctx != NULL) {
+				ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_Forget_Fetch_Card_Capture_Fail);
+			}
+			return 1;//S9 超时吞卡失败
+		}
+
+	}
+}
+
+int CCardIssuerFSM::CaptureJS(SpReqAnsContext<CardIssuerStandService_CaptureJS_Req, CardIssuerStandService_CaptureJS_Ans>::Pointer ctx)
+{
+	return 0;
+}
+
+void CCardIssuerFSM::QueryHasCardJS(SpReqAnsContext<CardIssuerStandService_QueryHasCardJS_Req, CardIssuerStandService_QueryHasCardJS_Ans>::Pointer ctx)
+{
+
+}
+
+int CCardIssuerFSM::PostOnlineJS(SpReqAnsContext<CardIssuerStandService_PostOnlineJS_Req, CardIssuerStandService_PostOnlineJS_Ans>::Pointer ctx)
+{
+	return 0;
+}
+
+int CCardIssuerFSM::IssueFromBoxJS(SpReqAnsContext<CardIssuerStandService_IssueFromBoxJS_Req, CardIssuerStandService_IssueFromBoxJS_Ans>::Pointer ctx)
+{
+	return 0;
+}
+
+int CCardIssuerFSM::ReadJS(SpReqAnsContext<CardIssuerStandService_ReadJS_Req, CardIssuerStandService_ReadJS_Ans>::Pointer ctx)
+{
+	return 0;
+}
+
+int CCardIssuerFSM::InsertJS(SpReqAnsContext<CardIssuerStandService_InsertJS_Req, CardIssuerStandService_InsertJS_Ans>::Pointer ctx)
+{
+	return 0;
+}
+
+int CCardIssuerFSM::ExitToMainPage()
+{
+	return 0;
+}
+
 DWORD CCardIssuerFSM::GetFsmStateErrCode()
 {
 	int state = GetFSMState();

+ 16 - 0
Module/mod_CardIssuerStand/CardIssuerFSM.h

@@ -1096,6 +1096,22 @@ private:
 	MagTracks m_magTracks;
 
 public:
+	int EjectJS(SpReqAnsContext<CardIssuerStandService_EjectJS_Req, CardIssuerStandService_EjectJS_Ans>::Pointer ctx);
+
+	int CaptureJS(SpReqAnsContext<CardIssuerStandService_CaptureJS_Req, CardIssuerStandService_CaptureJS_Ans>::Pointer ctx);
+
+	void QueryHasCardJS(SpReqAnsContext<CardIssuerStandService_QueryHasCardJS_Req, CardIssuerStandService_QueryHasCardJS_Ans>::Pointer ctx);
+
+	int PostOnlineJS(SpReqAnsContext<CardIssuerStandService_PostOnlineJS_Req, CardIssuerStandService_PostOnlineJS_Ans>::Pointer ctx);
+
+	int IssueFromBoxJS(SpReqAnsContext<CardIssuerStandService_IssueFromBoxJS_Req, CardIssuerStandService_IssueFromBoxJS_Ans>::Pointer ctx);
+
+	int ReadJS(SpReqAnsContext<CardIssuerStandService_ReadJS_Req, CardIssuerStandService_ReadJS_Ans>::Pointer ctx);
+
+	int InsertJS(SpReqAnsContext<CardIssuerStandService_InsertJS_Req, CardIssuerStandService_InsertJS_Ans>::Pointer ctx);
+
+	int ExitToMainPage();
+
 	DWORD GetFsmStateErrCode();
 	CSimpleStringA MaskCardno(const char* cardno);
 };

+ 1 - 1
Module/mod_CardIssuerStand/mod_cardissuer.h

@@ -406,7 +406,7 @@ public:
 			ctx->Answer(Error_DevNotAvailable, CardIssuer_UserErrorCode_DevOpen_Failed);
 		}
 		else {
-			//m_fsm.QueryHasCardJS(ctx);
+			m_fsm.QueryHasCardJS(ctx);
 		}
 
 	}