Просмотр исходного кода

Z991239-6454 #comment feat: 优化逻辑;补充ic卡序号tag5f34

oilyang 1 месяц назад
Родитель
Сommit
0c79220178

+ 1 - 0
Module/mod_CardIssuerStand/CardIssuerStand.xml

@@ -297,6 +297,7 @@
 					ACTION:行为代码	ATC_CODE:交易计数器code	ARQC_CODE:授权请求code
 					MAC:安全报文鉴别码	ARQC_SIZE:授权请求长度		ARQC_DATA:授权请求数据
 					IC_TRACK2:等效二磁道2数据(Tag:57)	EXPIRE_DATE:卡片中的应用失效日期(Tag:5F24)	IC_TAGS:基础IC数据
+          ICCardSerial:卡序号(Tag:5F34)
 				-->
 				<param name="pbocData" type="string"/>
 				<param name="reserved1" type="array_int"/>

+ 11 - 19
Module/mod_CardIssuerStand/CardIssuerStandFSM.cpp

@@ -134,7 +134,6 @@ void CCardIssuerFSM::s2_on_entry()
 	
 	m_resetTimes = 0;
 	m_testResult = Error_Succeed;
-	m_bIssuingExit = false;
 }
 
 void CCardIssuerFSM::s2_on_exit()
@@ -1095,7 +1094,6 @@ unsigned int CCardIssuerFSM::s10_on_event(FSMEvent* pEvt)
 	case EVT_MAINPAGE_DISPLAY:
 		pEvt->SetHandled();
 		m_captureReason = "4001";
-		m_bIssuingExit = true;
 		m_bMainPageWhileWorking = true;
 		break;
 	case USER_EVT_ACCEPT_CANCEL:
@@ -5151,7 +5149,7 @@ int CCardIssuerFSM::EjectJS(SpReqAnsContext<CardIssuerStandService_EjectJS_Req,
 int CCardIssuerFSM::CaptureJS(SpReqAnsContext<CardIssuerStandService_CaptureJS_Req, CardIssuerStandService_CaptureJS_Ans>::Pointer ctx)
 {
 	LOG_FUNCTION();
-	DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("吞卡开始");
+	DWORD dwTmpUserErrCode = 0;
 	long l_beginTime, l_endTime;
 	int ret = 0;
 	if (ctx != NULL) {
@@ -5186,10 +5184,9 @@ int CCardIssuerFSM::CaptureJS(SpReqAnsContext<CardIssuerStandService_CaptureJS_R
 			else {
 				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::SetCardInType").setCostTime(l_endTime - l_beginTime)("CaptureJS::SetCardInType");
 			}
-			CSimpleStringA maskCardno = MaskCardno(m_currCardNo.GetData());
-			m_currCardNo = "";
 			if (ctx != NULL) {
-				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode("QLR040220343").setResultCode("RTA23CS")("CaptureJS::GetDevStatus succ, No card found in cardReader, m_currCardNo=%s", maskCardno.GetData());
+				DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setLogCode("QLR040220343").setResultCode("RTA23CS")
+					("CaptureJS::GetDevStatus succ, No card found in cardReader");
 				LogWarn(Severity_Low, Error_Unexpect, CardIssuer_UserErrorCode_Capture_NoCard_Failed, "Capture card, No card found in cardReader");
 				ctx->Answer(Error_Unexpect, CardIssuer_UserErrorCode_Capture_NoCard_Failed);//读卡器无卡
 			}
@@ -5200,10 +5197,11 @@ int CCardIssuerFSM::CaptureJS(SpReqAnsContext<CardIssuerStandService_CaptureJS_R
 		}
 	}
 	else {
-		SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_GetDevStatus, "DevAdapter::GetDevStatus", __FUNCTION__, false, l_endTime - l_beginTime, "QLR040220343", "");
+		dwTmpUserErrCode = SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_GetDevStatus, "DevAdapter::GetDevStatus", __FUNCTION__, IsInBusiness(), l_endTime - l_beginTime, "QLR040220343", "");
+		ctx->Answer(Error_Unexpect, dwTmpUserErrCode);
+		return 1;
 	}
 
-	DWORD dwTmpUserErrCode = 0;
 	l_beginTime = GetTickCountRVC();
 	eErr = m_hDevHelper->MoveCard(CI_MOVECARD_BACK_NOT_HOLD);
 	l_endTime = GetTickCountRVC();
@@ -5227,13 +5225,7 @@ int CCardIssuerFSM::CaptureJS(SpReqAnsContext<CardIssuerStandService_CaptureJS_R
 		}
 	}
 	else {
-		DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("CaptureJS::MoveCard(CI_MOVECARD_BACK_NOT_HOLD) err");
-		if (ctx != NULL && IsInBusiness()) {
-			dwTmpUserErrCode = SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_CI_MOVECARD_BACK_NOT_HOLD, "DevAdapter::MoveCard", __FUNCTION__, true, l_endTime - l_beginTime, "QLR040220343", "CaptureJS::MoveCard(CI_MOVECARD_BACK_NOT_HOLD) err");
-		}
-		else {
-			dwTmpUserErrCode = SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_CI_MOVECARD_BACK_NOT_HOLD, "DevAdapter::MoveCard", __FUNCTION__, false, l_endTime - l_beginTime, "QLR040220343", "");
-		}
+		dwTmpUserErrCode = SetErrorAndLog(eErr, MEC_DEVAPI_CARDISSUER_CI_MOVECARD_BACK_NOT_HOLD, "DevAdapter::MoveCard", __FUNCTION__, IsInBusiness(), l_endTime - l_beginTime, "QLR040220343");
 		ret = 1;
 	}
 	//业务返回
@@ -5978,7 +5970,7 @@ int CCardIssuerFSM::PreOnlineJS_ICDataProcess(SpReqAnsContext<CardIssuerStandSer
 
 	ICData track2(false, 0x57, 0x00), ICCardSerial(false, 0x5f, 0x34), appExpiryDate(false, 0x5f, 0x24), icPAN(false, 0x5a, 0x00);
 	ErrorCodeEnum eErr = Error_Unexpect;
-	CSimpleStringA t2ICTrack2(""), cardType("0"), csExpireDate("");
+	CSimpleStringA t2ICTrack2(""), cardType("0"), csExpireDate(""), csICCardSerial("");
 
 	char* pExpireDate = new char[12];//获取ic有效期
 	ZeroMemory(pExpireDate, 12);
@@ -6001,9 +5993,8 @@ int CCardIssuerFSM::PreOnlineJS_ICDataProcess(SpReqAnsContext<CardIssuerStandSer
 	}
 	else
 	{
-		//oiltmp@20250808 TODO:add ic tag-value to ic data list
-		//HexBuf2StrBuf(ICCardSerial.value, &pICCardSerial, ICCardSerial.lenth);
-		//t2ICCardSerial = pICCardSerial;
+		HexBuf2StrBuf(ICCardSerial.value, &pICCardSerial, ICCardSerial.lenth);
+		csICCardSerial = pICCardSerial;
 	}
 	delete[] pICCardSerial;
 
@@ -6097,6 +6088,7 @@ int CCardIssuerFSM::PreOnlineJS_ICDataProcess(SpReqAnsContext<CardIssuerStandSer
 	msgInfo["ARQC_DATA"] = arqcData.GetData();
 	msgInfo["IC_TRACK2"] = t2ICTrack2;
 	msgInfo["EXPIRE_DATE"] = csExpireDate;
+	msgInfo["ICCardSerial"] = csICCardSerial;
 	msgInfo["IC_TAGS"] = baseICData.c_str();
 
 	std::pair<bool, std::string> strResult;

+ 2 - 2
Module/mod_CardIssuerStand/CardIssuerStandFSM.h

@@ -740,7 +740,7 @@ public:
 		CCardIssuerFSM() : m_bCancelAccept(false), m_bWaitingAccept(false),
 		m_bWaitAccepteMore(false), m_bExit(false), m_resetTimes(0), m_testResult(Error_Succeed)
 		//,m_pTACReject(NULL),m_pIACOnline(NULL),m_pTACOnline(NULL),m_pIACDefault(NULL),m_pTACDefault(NULL)
-		, m_bCDA(false), m_pDataToARQC(NULL), m_bIssuingExit(false)
+		, m_bCDA(false), m_pDataToARQC(NULL)
 		, m_bCardIssued(false), m_issueStatus(1), m_currCardNo("")
 		, m_captureReason(""), m_machineType(1), m_currentHopper(1), m_hopperNum(1)
 		, m_bSettingMaterial(false), m_addCardSerial("")
@@ -887,7 +887,7 @@ private:
 	lpCMBdecodeMag2 cmdDecodeMag2;
 	lpCMBdecodeEx cmdDecodeEx;
 	bool m_bCancelAccept, m_bWaitingAccept, m_bWaitAccepteMore, m_bExit
-		, m_bCDA, m_bIssuingExit, m_bCardIssued, m_bHasHopper[HOPPER_NUM]
+		, m_bCDA, m_bCardIssued, m_bHasHopper[HOPPER_NUM]
 		, m_bSettingMaterial, m_bCancelByRFIC
 		, m_bCardActiveNotify, m_bCardFromHopper, m_bUseCardnoMismatch, m_bStopUseRF, m_bMainPageWhileWorking/*Accepting、Read(JS)ing、Issue(JS)ing*/;
 	bool m_bSupportRF, m_bUseRFTillNext;//if ReadCard by RF,the following PreOnline & PostOnline always use RF till the next card(insert/issue)