|
@@ -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();
|