Explorar el Código

!10543 更新基线
Merge pull request !10543 from 80274480/ST2

陈礼鹏80274480 hace 11 meses
padre
commit
efa156b6ed

+ 1 - 1
Module/mod_HSPScanner/HSPScannerFSM.h

@@ -503,7 +503,7 @@ struct SetPropertyInPreviewTask : public ITaskSp
 			m_ctx->Answer(eRet);
 		}
 		else {
-			m_ctx->Answer(eRet, m_fsm->GetCustLastErrorCode());
+			m_ctx->Answer(eRet, m_fsm->GetLastUserCode());
 			pEvt->param1 = 1;
 		}
 		m_fsm->PostEventFIFO(pEvt);

+ 158 - 111
Module/mod_IDCertificate/IDCertFSM.cpp

@@ -810,59 +810,61 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
 					memcpy(ctx->Ans.reserved_utf8.m_pData, reserved, strlen((char*)reserved)); //新外国人永居证关联字段
 					memcpy(ctx->Ans.othercode_utf8.m_pData, englishNameEx, strlen((char*)englishNameEx)); //英文名备用字段
 
-					m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
-					eErr = m_hDevHelper->ScanIDAndSaveImage();
-					m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
-					if (eErr == Error_Succeed)
-					{
-						DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ScanIDAndSaveImage").setCostTime(m_ullEndTime - m_ullBeginTime)
-							("ReadAndScanUTF8 ScanIDAndSaveImage succeed.");
-					}
-					else
-					{
-						if(eErr != Error_NotImpl)
-						SetErrorAndLog(eErr, MEC_DEVAPI_IDCER_ScanIDAndSaveImage, "DevAdapter::ScanIDAndSaveImage", __FUNCTION__,
-							false, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8);
-					}
-					ctx->Ans.hasscan = 0;
+					GetPngBlobEx(ctx->Ans.headphoto, "zp"); //转换头像图片
 
-					if (eErr == Error_Succeed)
+					ctx->Ans.hasscan = 0;
+					if (igestionVer == TRUE) //吸入式设备才调用正反扫描功能
 					{
-						transImgMsg.Clear();
-
-						//idfront.bmp" and "idback.bmp
-						ErrorCodeEnum eErrFront, eErrBack;
-						eErrFront = GetPngBlobEx(ctx->Ans.frontphoto, "idfront");
-						eErrBack = GetPngBlobEx(ctx->Ans.backphoto, "idback", true);
-						if (eErrFront == Error_Succeed && eErrBack == Error_Succeed)
+						m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
+						eErr = m_hDevHelper->ScanIDAndSaveImage();
+						m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
+						if (eErr == Error_Succeed)
 						{
-							ctx->Ans.hasscan = 1;
-#ifdef RVC_OS_WIN
-							if (!closeImgCheck)
-							{
-								ImgChekTask* frontImgCheck = new ImgChekTask(this);
-								frontImgCheck->idNum =/* ctx->Ans.idcode_utf8.m_pData*/gbkIDcode;
-								frontImgCheck->inName = /*ctx->Ans.name_utf8.m_pData*/gbkName;
-								frontImgCheck->inNationality = /*ctx->Ans.nationality_utf8.m_pData*/gbkNationality;
-								frontImgCheck->inIdType = /*ctx->Ans.idtype_utf8.m_pData*/gbkIDtype;
-								frontImgCheck->imgInput = ctx->Ans.frontphoto;
-								frontImgCheck->imgType = "正面";
-								GetEntityBase()->GetFunction()->PostThreadPoolTask(frontImgCheck);
-
-								ImgChekTask* backImgCheck = new ImgChekTask(this);
-								backImgCheck->idNum = /*ctx->Ans.idcode_utf8.m_pData*/gbkIDcode;
-								backImgCheck->inName = /*ctx->Ans.name_utf8.m_pData*/gbkName;
-								backImgCheck->inNationality = /*ctx->Ans.nationality_utf8.m_pData*/gbkNationality;
-								backImgCheck->inIdType = /*ctx->Ans.idtype_utf8.m_pData*/gbkIDtype;
-								backImgCheck->imgInput = ctx->Ans.backphoto;
-								frontImgCheck->imgType = "背面";
-								GetEntityBase()->GetFunction()->PostThreadPoolTask(backImgCheck);
-							}
-#endif
+							DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ScanIDAndSaveImage").setCostTime(m_ullEndTime - m_ullBeginTime)
+								("ReadAndScanUTF8 ScanIDAndSaveImage succeed.");
 						}
 						else
 						{
-							if (igestionVer == TRUE)
+							if (eErr != Error_NotImpl)
+								SetErrorAndLog(eErr, MEC_DEVAPI_IDCER_ScanIDAndSaveImage, "DevAdapter::ScanIDAndSaveImage", __FUNCTION__,
+									false, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8);
+						}
+
+						if (eErr == Error_Succeed)
+						{
+							transImgMsg.Clear();
+
+							//idfront.bmp" and "idback.bmp
+							ErrorCodeEnum eErrFront, eErrBack;
+							eErrFront = GetPngBlobEx(ctx->Ans.frontphoto, "idfront");
+							eErrBack = GetPngBlobEx(ctx->Ans.backphoto, "idback", true);
+							if (eErrFront == Error_Succeed && eErrBack == Error_Succeed)
+							{
+								ctx->Ans.hasscan = 1;
+#ifdef RVC_OS_WIN
+								if (!closeImgCheck)
+								{
+									ImgChekTask* frontImgCheck = new ImgChekTask(this);
+									frontImgCheck->idNum =/* ctx->Ans.idcode_utf8.m_pData*/gbkIDcode;
+									frontImgCheck->inName = /*ctx->Ans.name_utf8.m_pData*/gbkName;
+									frontImgCheck->inNationality = /*ctx->Ans.nationality_utf8.m_pData*/gbkNationality;
+									frontImgCheck->inIdType = /*ctx->Ans.idtype_utf8.m_pData*/gbkIDtype;
+									frontImgCheck->imgInput = ctx->Ans.frontphoto;
+									frontImgCheck->imgType = "正面";
+									GetEntityBase()->GetFunction()->PostThreadPoolTask(frontImgCheck);
+
+									ImgChekTask* backImgCheck = new ImgChekTask(this);
+									backImgCheck->idNum = /*ctx->Ans.idcode_utf8.m_pData*/gbkIDcode;
+									backImgCheck->inName = /*ctx->Ans.name_utf8.m_pData*/gbkName;
+									backImgCheck->inNationality = /*ctx->Ans.nationality_utf8.m_pData*/gbkNationality;
+									backImgCheck->inIdType = /*ctx->Ans.idtype_utf8.m_pData*/gbkIDtype;
+									backImgCheck->imgInput = ctx->Ans.backphoto;
+									frontImgCheck->imgType = "背面";
+									GetEntityBase()->GetFunction()->PostThreadPoolTask(backImgCheck);
+								}
+#endif
+							}
+							else
 							{
 								CSimpleStringA warnMsg = "ScanIDAndSaveImage() suc. But GetPngBlobEx() failed.";
 								if (transImgMsg.GetLength() != 0)
@@ -874,7 +876,6 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
 							}
 						}
 					}
-					GetPngBlobEx(ctx->Ans.headphoto, "zp");
 
 #ifdef RVC_OS_WIN
 					CSimpleStringA csIDLogInfo = CSimpleStringA::Format("IDNo:%s****%s"
@@ -946,10 +947,12 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
 						SetErrorAndLog(errEject, MEC_DEVAPI_IDCER_ForceIDEject, "DevAdapter::ForceIDEject", __FUNCTION__,
 							false, m_ullEndTime - m_ullBeginTime);
 					}
+
+					CheckEjectCardRes(eErr1, errEject);
 				}
 				else
 				{
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::IDCerRFControl").setCostTime(m_ullEndTime - m_ullBeginTime)("exec IDCerRFControl succ.");
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::CloseIDCerRFControl").setCostTime(m_ullEndTime - m_ullBeginTime)("exec IDCerRFControl succ.");
 				}
 				break;
 			case 0:
@@ -994,7 +997,7 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
 		if (errRf != Error_Succeed)
 		{
 			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("exec IDCerRFControl(false) failed, force eject...");
-			SetErrorAndLog(errRf, MEC_DEVAPI_IDCER_IDCerRFControl, "DevAdapter::IDCerRFControl", __FUNCTION__,
+			SetErrorAndLog(errRf, MEC_DEVAPI_IDCER_IDCerRFControl, "DevAdapter::CloseIDCerRFControl", __FUNCTION__,
 				false, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8);
 			m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
 			ErrorCodeEnum errEject = m_hDevHelper->ForceIDEject();
@@ -1007,10 +1010,12 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
 				SetErrorAndLog(errEject, MEC_DEVAPI_IDCER_ForceIDEject, "DevAdapter::ForceIDEject", __FUNCTION__,
 					false, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8);
 			}
+
+			CheckEjectCardRes(errRf, errEject);
 		}
 		else
 		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::IDCerRFControl").setCostTime(m_ullEndTime - m_ullBeginTime)("Close RF again succ.");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::CloseIDCerRFControl").setCostTime(m_ullEndTime - m_ullBeginTime)("Close RF again succ.");
 		}
 	}
 
@@ -1037,7 +1042,7 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
 		}
 		else if (!bOpenRF)
 		{
-			SetErrorAndLog(errRfOpen, MEC_DEVAPI_IDCER_IDCerRFControl, "DevAdapter::IDCerRFControl", __FUNCTION__,
+			SetErrorAndLog(errRfOpen, MEC_DEVAPI_IDCER_IDCerRFControl, "DevAdapter::OpenIDCerRFControl", __FUNCTION__,
 				true, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8);
 			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Open IDCerRFControl(Timeout) failed: %s", SpStrError(errRfOpen));
 
@@ -1139,8 +1144,8 @@ int CIDCertFSM::ReadAndScanUTF8JS(SpReqAnsContext<IDCert_ReadAndScanUTF8JS_Req,
 			m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
 			errRfOpen = m_hDevHelper->IDCerRFControl(true);
 			m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::IDCerRFControl").setCostTime(m_ullEndTime - m_ullBeginTime)
-				("RreadAndScanUTF8JS DevAdapter::IDCerRFControl");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::OpenIDCerRFControl").setCostTime(m_ullEndTime - m_ullBeginTime)
+				("RreadAndScanUTF8JS DevAdapter::OpenIDCerRFControl");
 			if (Error_Succeed == errRfOpen)
 			{
 				DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("open rf succeed.");
@@ -1359,63 +1364,61 @@ int CIDCertFSM::ReadAndScanUTF8JS(SpReqAnsContext<IDCert_ReadAndScanUTF8JS_Req,
 					memcpy(ctx->Ans.reserved_utf8.m_pData, reserved, strlen((char*)reserved)); //新外国人永居证关联字段
 					memcpy(ctx->Ans.othercode_utf8.m_pData, englishNameEx, strlen((char*)englishNameEx)); //英文名备用字段
 
-					m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
-					eErr = m_hDevHelper->ScanIDAndSaveImage();
-					m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
-					if (eErr == Error_Succeed)
-					{
-						DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ScanIDAndSaveImage").setCostTime(m_ullEndTime - m_ullBeginTime)
-							("ReadAndScanUTF8JS ScanIDAndSaveImage succeed.");
-					}
-					else
-					{
-						SetErrorAndLog(eErr, MEC_DEVAPI_IDCER_ScanIDAndSaveImage, "DevAdapter::ScanIDAndSaveImage", __FUNCTION__,
-							false, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8JS);
-
-						DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ScanIDAndSaveImage")
-							.setCostTime(m_ullEndTime - m_ullBeginTime)
-							.setResultCode("RTA210C")
-							("ReadAndScanUTF8JS::ScanIDAndSaveImage failed with errCode 0x%x", eErr);
-					}
 					ctx->Ans.hasscan = 0;
+					GetPngBlobEx(ctx->Ans.headphoto, "zp", true); //转换头像图片
 
-					if (eErr == Error_Succeed)
+					if (igestionVer == TRUE)//吸入式设备才调用正反扫描功能
 					{
-						transImgMsg.Clear();
-
-						//idfront.bmp" and "idback.bmp
-						ErrorCodeEnum eErrFront, eErrBack;
-						eErrFront = GetPngBlobEx(ctx->Ans.frontphoto, "idfront");
-						eErrBack = GetPngBlobEx(ctx->Ans.backphoto, "idback", true);
-						if (eErrFront == Error_Succeed && eErrBack == Error_Succeed)
+						m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
+						eErr = m_hDevHelper->ScanIDAndSaveImage();
+						m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
+						if (eErr == Error_Succeed)
 						{
-							ctx->Ans.hasscan = 1;
-#ifdef RVC_OS_WIN
-							if (!closeImgCheck)
-							{
-								ImgChekTask* frontImgCheck = new ImgChekTask(this);
-								frontImgCheck->idNum =/* ctx->Ans.idcode_utf8.m_pData*/gbkIDcode;
-								frontImgCheck->inName = /*ctx->Ans.name_utf8.m_pData*/gbkName;
-								frontImgCheck->inNationality = /*ctx->Ans.nationality_utf8.m_pData*/gbkNationality;
-								frontImgCheck->inIdType = /*ctx->Ans.idtype_utf8.m_pData*/gbkIDtype;
-								frontImgCheck->imgInput = ctx->Ans.frontphoto;
-								frontImgCheck->imgType = "正面";
-								GetEntityBase()->GetFunction()->PostThreadPoolTask(frontImgCheck);
-
-								ImgChekTask* backImgCheck = new ImgChekTask(this);
-								backImgCheck->idNum = /*ctx->Ans.idcode_utf8.m_pData*/gbkIDcode;
-								backImgCheck->inName = /*ctx->Ans.name_utf8.m_pData*/gbkName;
-								backImgCheck->inNationality = /*ctx->Ans.nationality_utf8.m_pData*/gbkNationality;
-								backImgCheck->inIdType = /*ctx->Ans.idtype_utf8.m_pData*/gbkIDtype;
-								backImgCheck->imgInput = ctx->Ans.backphoto;
-								frontImgCheck->imgType = "背面";
-								GetEntityBase()->GetFunction()->PostThreadPoolTask(backImgCheck);
-							}
-#endif
+							DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::ScanIDAndSaveImage").setCostTime(m_ullEndTime - m_ullBeginTime)
+								("ReadAndScanUTF8JS ScanIDAndSaveImage succeed.");
 						}
 						else
 						{
-							if (igestionVer == TRUE)
+							if(eErr != Error_NotImpl)
+							SetErrorAndLog(eErr, MEC_DEVAPI_IDCER_ScanIDAndSaveImage, "DevAdapter::ScanIDAndSaveImage", __FUNCTION__,
+								false, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8JS);
+						}
+
+						if (eErr == Error_Succeed)
+						{
+							transImgMsg.Clear();
+
+							//idfront.bmp" and "idback.bmp
+							ErrorCodeEnum eErrFront, eErrBack;
+							eErrFront = GetPngBlobEx(ctx->Ans.frontphoto, "idfront");
+							eErrBack = GetPngBlobEx(ctx->Ans.backphoto, "idback", true);
+							if (eErrFront == Error_Succeed && eErrBack == Error_Succeed)
+							{
+								ctx->Ans.hasscan = 1;
+#ifdef RVC_OS_WIN
+								if (!closeImgCheck)
+								{
+									ImgChekTask* frontImgCheck = new ImgChekTask(this);
+									frontImgCheck->idNum =/* ctx->Ans.idcode_utf8.m_pData*/gbkIDcode;
+									frontImgCheck->inName = /*ctx->Ans.name_utf8.m_pData*/gbkName;
+									frontImgCheck->inNationality = /*ctx->Ans.nationality_utf8.m_pData*/gbkNationality;
+									frontImgCheck->inIdType = /*ctx->Ans.idtype_utf8.m_pData*/gbkIDtype;
+									frontImgCheck->imgInput = ctx->Ans.frontphoto;
+									frontImgCheck->imgType = "正面";
+									GetEntityBase()->GetFunction()->PostThreadPoolTask(frontImgCheck);
+
+									ImgChekTask* backImgCheck = new ImgChekTask(this);
+									backImgCheck->idNum = /*ctx->Ans.idcode_utf8.m_pData*/gbkIDcode;
+									backImgCheck->inName = /*ctx->Ans.name_utf8.m_pData*/gbkName;
+									backImgCheck->inNationality = /*ctx->Ans.nationality_utf8.m_pData*/gbkNationality;
+									backImgCheck->inIdType = /*ctx->Ans.idtype_utf8.m_pData*/gbkIDtype;
+									backImgCheck->imgInput = ctx->Ans.backphoto;
+									frontImgCheck->imgType = "背面";
+									GetEntityBase()->GetFunction()->PostThreadPoolTask(backImgCheck);
+								}
+#endif
+							}
+							else
 							{
 								CSimpleStringA warnMsg = "ScanIDAndSaveImage() suc. But GetPngBlobEx() failed.";
 								if (transImgMsg.GetLength() != 0)
@@ -1427,7 +1430,6 @@ int CIDCertFSM::ReadAndScanUTF8JS(SpReqAnsContext<IDCert_ReadAndScanUTF8JS_Req,
 							}
 						}
 					}
-					GetPngBlobEx(ctx->Ans.headphoto, "zp", true);
 
 #ifdef RVC_OS_WIN
 					CSimpleStringA csIDLogInfo = CSimpleStringA::Format("IDNo:%s****%s"
@@ -1459,7 +1461,7 @@ int CIDCertFSM::ReadAndScanUTF8JS(SpReqAnsContext<IDCert_ReadAndScanUTF8JS_Req,
 
 	if (!m_bExit && !bOpenRF && errRfOpen != Error_Succeed)
 	{
-		SetErrorAndLog(errRfOpen, MEC_DEVAPI_IDCER_IDCerRFControl, "DevAdapter::IDCerRFControl", __FUNCTION__,
+		SetErrorAndLog(errRfOpen, MEC_DEVAPI_IDCER_IDCerRFControl, "DevAdapter::OpenIDCerRFControl", __FUNCTION__,
 			true, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8JS);
 
 		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)
@@ -1496,7 +1498,7 @@ int CIDCertFSM::ReadAndScanUTF8JS(SpReqAnsContext<IDCert_ReadAndScanUTF8JS_Req,
 				if (eErr1 != Error_Succeed)
 				{
 					DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("exec IDCerRFControl(false) failed, force eject...");
-					SetErrorAndLog(eErr1, MEC_DEVAPI_IDCER_IDCerRFControl, "DevAdapter::IDCerRFControl", __FUNCTION__,
+					SetErrorAndLog(eErr1, MEC_DEVAPI_IDCER_IDCerRFControl, "DevAdapter::CloseIDCerRFControl", __FUNCTION__,
 						false, m_ullEndTime - m_ullBeginTime);
 					m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
 					ErrorCodeEnum errEject = m_hDevHelper->ForceIDEject();
@@ -1511,7 +1513,7 @@ int CIDCertFSM::ReadAndScanUTF8JS(SpReqAnsContext<IDCert_ReadAndScanUTF8JS_Req,
 				}
 				else
 				{
-					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::IDCerRFControl").setCostTime(m_ullEndTime - m_ullBeginTime)("exec IDCerRFControl succ.");
+					DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::CloseIDCerRFControl").setCostTime(m_ullEndTime - m_ullBeginTime)("exec IDCerRFControl succ.");
 				}
 				break;
 			case 0:
@@ -1562,7 +1564,7 @@ int CIDCertFSM::ReadAndScanUTF8JS(SpReqAnsContext<IDCert_ReadAndScanUTF8JS_Req,
 		if (errRfClose != Error_Succeed)
 		{
 			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("exec IDCerRFControl(false) failed, force eject...");
-			SetErrorAndLog(errRfClose, MEC_DEVAPI_IDCER_IDCerRFControl, "DevAdapter::IDCerRFControl", __FUNCTION__,
+			SetErrorAndLog(errRfClose, MEC_DEVAPI_IDCER_IDCerRFControl, "DevAdapter::CloseIDCerRFControl", __FUNCTION__,
 				false, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8JS);
 
 			m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
@@ -1579,7 +1581,7 @@ int CIDCertFSM::ReadAndScanUTF8JS(SpReqAnsContext<IDCert_ReadAndScanUTF8JS_Req,
 		}
 		else
 		{
-			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::IDCerRFControl").setCostTime(m_ullEndTime - m_ullBeginTime)("Close RF again succ.");
+			DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::CloseIDCerRFControl").setCostTime(m_ullEndTime - m_ullBeginTime)("Close RF again succ.");
 		}
 	}
 
@@ -1605,7 +1607,7 @@ int CIDCertFSM::ReadAndScanUTF8JS(SpReqAnsContext<IDCert_ReadAndScanUTF8JS_Req,
 		}
 		else if (!bOpenRF)
 		{
-			SetErrorAndLog(errRfOpen, MEC_DEVAPI_IDCER_IDCerRFControl, "DevAdapter::IDCerRFControl", __FUNCTION__,
+			SetErrorAndLog(errRfOpen, MEC_DEVAPI_IDCER_IDCerRFControl, "DevAdapter::OpenIDCerRFControl", __FUNCTION__,
 				true, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8);
 			DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("Open IDCerRFControl(Timeout) failed: %s", SpStrError(errRfOpen));
 
@@ -2256,6 +2258,51 @@ void CIDCertFSM::CheckHanZi(UINT16* ucs2_code)
 	}
 }
 
+void CIDCertFSM::CheckEjectCardRes(ErrorCodeEnum errRf, ErrorCodeEnum errForceIDEject)
+{
+	int pos = 99;
+	m_ullBeginTime = SP::Module::Comm::RVCGetTickCount();
+	ErrorCodeEnum posErr = m_hDevHelper->QueryCardPos(pos);
+	m_ullEndTime = SP::Module::Comm::RVCGetTickCount();
+
+	if (posErr == Error_Succeed)
+	{
+		DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM).setAPI("DevAdapter::QueryCardPos")
+			.setCostTime(m_ullEndTime - m_ullBeginTime)
+			("执行吐卡后,获取卡片位置成功, pos : %d", pos);
+
+		CSimpleStringA warnMsg = CSimpleStringA::Format("RFControl返回:%s. ForceIDEject返回%s. 获取卡片位置 pos = %d.", 
+			SpStrError(errRf), SpStrError(errForceIDEject), pos);
+		switch (pos)
+		{
+		case 0:
+			LogWarn(Severity_Middle, Error_Succeed,
+				IDCertificate_UserErrorCode_EjectCardRes_Pos_0, warnMsg.GetData());
+			break;
+		case 1:
+			LogWarn(Severity_Middle, Error_Succeed,
+				IDCertificate_UserErrorCode_EjectCardRes_Pos_1, warnMsg.GetData());
+			break;
+		case 2:
+			LogWarn(Severity_Middle, Error_Succeed,
+				IDCertificate_UserErrorCode_EjectCardRes_Pos_2, warnMsg.GetData());
+			break;
+		default:
+			LogWarn(Severity_Middle, Error_Succeed,
+				IDCertificate_UserErrorCode_EjectCardRes_Pos_X, warnMsg.GetData());
+			break;
+		}
+
+	}
+	else
+	{
+		SetErrorAndLog(posErr, MEC_DEVAPI_IDCER_QueryCardPos, "DevAdapter::QueryCardPos", __FUNCTION__,
+			false, m_ullEndTime - m_ullBeginTime, IDCertService_LogCode_ReadAndScanUTF8);
+
+		DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM)("执行吐卡后,获取卡片位置失败.", posErr);
+	}
+}
+
 #ifdef RVC_OS_WIN
 void CIDCertFSM::HttpsLogCallBack(const char* logtxt)
 {

+ 2 - 0
Module/mod_IDCertificate/IDCertFSM.h

@@ -277,6 +277,8 @@ private:
 	int GetUCS2ByteLength(UINT16* ucs2_code);
 	void CheckHanZi(UINT16* ucs2_code);
 
+	void CheckEjectCardRes(ErrorCodeEnum errRf, ErrorCodeEnum errForceIDEject); //退卡情况收集,cjl-2024.11.21
+
 public:
 		std::string checkImgURL;
 private:

+ 6 - 0
Module/mod_IDCertificate/IDCertificate_UserErrorCode.h

@@ -25,6 +25,12 @@
 #define IDCertificate_UserErrorCode_ReadAndScan_NotOnReading	0x2010021f //实体不在读证状态
 #define IDCertificate_UserErrorCode_FindFile_in_DepBak			0x20100220 //旧dep目录下获取到厂商文件
 
+#define IDCertificate_UserErrorCode_EjectCardRes_Pos_0		0x20100230 //退卡结果-位置0:被取走
+#define IDCertificate_UserErrorCode_EjectCardRes_Pos_1		0x20100231 //退卡结果-位置1:读卡器内
+#define IDCertificate_UserErrorCode_EjectCardRes_Pos_2		0x20100232 //退卡结果-位置2:读卡口,未被取走
+#define IDCertificate_UserErrorCode_EjectCardRes_Pos_X		0x20100233 //退卡结果-异常值
+
+
 
 //#define IDCertificate_UserErrorCode_Real_Root_Config		(IDCertificate_UserErrorCode_Start + 31) //加载实际的root配置
 

+ 3 - 3
Module/mod_ResourceWatcher/ResourceWatcherFSM.cpp

@@ -5004,7 +5004,7 @@ void ResourceWatcherFSM::GetSystemCPUStatus()
             stringstream tss;
             tss << std::setiosflags(std::ios::fixed) << std::setprecision(2) << cUsedRate * 100;
 
-            string warn = "{ \"total_used\":\"" + tss.str() + "%\"" + procWarn + "}";
+            string warn = "{\"type\":\"cpu\", \"total_used\":\"" + tss.str() + "%\"" + procWarn + "}";
             LogWarn(Severity_Middle, Error_Resource, LOG_EVT_RESOURCE_CPU_TOO_HIGH, CSimpleStringA::Format("%s", warn.c_str()));
             DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA5A03").setAPI("CpuUsedCheck")(warn.c_str());
         }
@@ -5069,8 +5069,8 @@ void ResourceWatcherFSM::GetSystemMemoryStatus()
             stringstream ss1;
             ss1 << std::setiosflags(std::ios::fixed) << std::setprecision(2) << mUsedRate * 100;
 
-            string warn = "{ \"total\":\"" + string(szResult) + "\"," +
-                "\"used\":\"" + ss1.str() + "%\"," + MemoryProcessStatus();
+            string warn = "{\"type\":\"mem\", \"total\":\"" + string(szResult) + "\"," +
+                "\"total_used\":\"" + ss1.str() + "%\"," + MemoryProcessStatus();
             LogWarn(Severity_Middle, Error_Resource, LOG_EVT_RESOURCE_MEMORY_TOO_HIGH, CSimpleStringA::Format("%s", warn.c_str()));
             DbgWithLink(LOG_LEVEL_WARN, LOG_TYPE_SYSTEM).setResultCode("RTA5A04").setAPI("MemUsedCheck")(warn.c_str());
         }