Browse Source

Z991239-5022 #comment feat: 识别新外国人证件合成背景

陈纪林80310970 1 year ago
parent
commit
a1d32bc033
2 changed files with 44 additions and 3 deletions
  1. 43 3
      Module/mod_IDCertificate/IDCertFSM.cpp
  2. 1 0
      Module/mod_IDCertificate/IDCertFSM.h

+ 43 - 3
Module/mod_IDCertificate/IDCertFSM.cpp

@@ -1391,19 +1391,25 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
 					//转换成GBK用于debug上传
 					char* tSex = new char[32];
 					char* tNation = new char[32];
+					char* tBirthday = new char[32];
+					char* tStartDate = new char[32];
 					char* tEndDate = new char[32];
 					char* tIDcode = new char[1024];
 					char* tIDtype = new char[8];
 					char* tName = new char[128];
 					char* tNationality = new char[8];
+					char* tChecKNum = new char[8];
 					memcpy(tSex, idInfoEx2.sex.data, 32);
 					memcpy(tNation, idInfoEx2.nation.data, 32);
+					memcpy(tBirthday, idInfoEx2.birthday.data, 32);
+					memcpy(tStartDate, idInfoEx2.startDate.data, 32);
 					memcpy(tEndDate, idInfoEx2.endDate.data, 32);
 					memcpy(tIDcode, idInfoEx2.idno.data, 1024);
 					memcpy(tIDtype, idInfoEx2.idType.data, 8);
 					memcpy(tName, idInfoEx2.name.data, 128);
 					memcpy(tNationality, idInfoEx2.nationality.data, 8);
-					char *gbkSex, *gbkNation, *gbkEndDate, *gbkIDcode, *gbkIDtype, *gbkName, *gbkNationality;
+					memcpy(tChecKNum, idInfoEx2.issuedSN.data, 8);
+					char* gbkSex, * gbkNation, * gbkBirthday, * gbkStartDate, * gbkEndDate, * gbkIDcode, * gbkIDtype, * gbkName, * gbkNationality, * gbktCheckNum;
 					int iSize;
 					//sex
 					iSize = WideCharToMultiByte(CP_ACP, 0, (wchar_t*)tSex, -1, NULL, 0, NULL, NULL);
@@ -1413,6 +1419,14 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
 					iSize = WideCharToMultiByte(CP_ACP, 0, (wchar_t*)tNation, -1, NULL, 0, NULL, NULL);
 					gbkNation = (char*)malloc((iSize + 1));
 					WideCharToMultiByte(CP_ACP, 0, (wchar_t*)tNation, -1, gbkNation, iSize, NULL, NULL);
+					//birthday
+					iSize = WideCharToMultiByte(CP_ACP, 0, (wchar_t*)tBirthday, -1, NULL, 0, NULL, NULL);
+					gbkBirthday = (char*)malloc((iSize + 1));
+					WideCharToMultiByte(CP_ACP, 0, (wchar_t*)tBirthday, -1, gbkBirthday, iSize, NULL, NULL);
+					//startdate
+					iSize = WideCharToMultiByte(CP_ACP, 0, (wchar_t*)tStartDate, -1, NULL, 0, NULL, NULL);
+					gbkStartDate = (char*)malloc((iSize + 1));
+					WideCharToMultiByte(CP_ACP, 0, (wchar_t*)tStartDate, -1, gbkStartDate, iSize, NULL, NULL);
 					//endate
 					iSize = WideCharToMultiByte(CP_ACP, 0, (wchar_t*)tEndDate, -1, NULL, 0, NULL, NULL);
 					gbkEndDate = (char*)malloc((iSize + 1));
@@ -1433,7 +1447,23 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
 					iSize = WideCharToMultiByte(CP_ACP, 0, (wchar_t*)tNationality, -1, NULL, 0, NULL, NULL);
 					gbkNationality = (char*)malloc((iSize + 1));
 					WideCharToMultiByte(CP_ACP, 0, (wchar_t*)tNationality, -1, gbkNationality, iSize, NULL, NULL);
+					//issuedSN
+					iSize = WideCharToMultiByte(CP_ACP, 0, (wchar_t*)tChecKNum, -1, NULL, 0, NULL, NULL);
+					gbktCheckNum = (char*)malloc((iSize + 1));
+					WideCharToMultiByte(CP_ACP, 0, (wchar_t*)tChecKNum, -1, gbktCheckNum, iSize, NULL, NULL);
 					//gbk转换结束
+
+					Dbg("性别源数据:%s", gbkSex);
+					Dbg("民族源数据:%s", gbkNation);
+					Dbg("生日源数据:%s", gbkBirthday);
+					Dbg("开始日期源数据:%s", gbkStartDate);
+					Dbg("结束日期源数据:%s", gbkEndDate);
+					Dbg("外国人换证次数/港澳签发次数:%s", gbktCheckNum);
+
+					if (gbkIDtype == "Y")
+					{
+						bkPicPath = "bk_newForeigner.png";
+					}
 #endif
 
 					UCS2_to_UTF8((UINT16*)idInfoEx2.name.data, name);
@@ -1561,6 +1591,11 @@ int CIDCertFSM::ReadAndScanUTF8(SpReqAnsContext<IDCert_ReadAndScanUTF8_Req, IDCe
 						, (const char*)CSimpleStringA(gbkIDcode).SubString(CSimpleStringA(gbkIDcode).GetLength() - 1, 1)
 						, (const char*)CSimpleStringA(gbkIDtype));
 #else
+					if (strcmp(idType, "Y") == 0) //区分新外国人证件使用的背景
+					{
+						bkPicPath = "bk_newForeigner.png";
+					}
+
 					CSimpleStringA tIdcode = (char*)idno;
 					CSimpleStringA csIDLogInfo = CSimpleStringA::Format("Sex:%s,Nation:%s,EndDate:%s,IDNo:%s****%s,IDType:%s"
 						, (const char*)sex, (const char*)nation
@@ -1796,13 +1831,13 @@ ErrorCodeEnum CIDCertFSM::GetPngBlob(CBlob &data, bool bClear)
 	}
 
 #ifdef RVC_OS_WIN
-	strBkPath = strPath + "\\bk.PNG";
+	strBkPath = strPath + "\\" + bkPicPath;
 	strBmpPath = strPath + "\\zp.bmp";
 	strPngPath = strPath + "\\zp.JPEG";
 	strTxtPath = strPath + "\\wz.txt";
 	strWltPath = strPath + "\\xp.wlt";
 #else
-	strBkPath = strPath + SPLIT_SLASH_STR + "bk.bmp";
+	strBkPath = strPath + SPLIT_SLASH_STR + bkPicPath;
 	strBmpPath = strPath + SPLIT_SLASH_STR + "zp.bmp";
 	strPngPath = strPath + SPLIT_SLASH_STR + "zp.JPEG";
 	strTxtPath = strPath + SPLIT_SLASH_STR + "wz.txt";
@@ -2041,6 +2076,9 @@ void CIDCertFSM::DeleteZP(int type)
 int CIDCertFSM::Initial() //windows ver
 {
 	LOG_FUNCTION();
+
+	bkPicPath = "bk.png"; //初始化默认背景图片名称
+
 	CSystemStaticInfo sysInfo;
 	GetEntityBase()->GetFunction()->GetSystemStaticInfo(sysInfo);
 	m_csMachineType = sysInfo.strMachineType;
@@ -2196,6 +2234,8 @@ int CIDCertFSM::Initial() //windows ver
 int CIDCertFSM::Initial() //linux ver
 {
 	LOG_FUNCTION();
+
+	bkPicPath = "bk.png"; //初始化默认背景图片名称
 	
 	auto pEntity = GET_DEV_ENTITY_BASE_POINTER();
 	pEntity->InitializeVendorLogSwitch();

+ 1 - 0
Module/mod_IDCertificate/IDCertFSM.h

@@ -362,6 +362,7 @@ private:
 	BOOL supportUCS2; //支持生僻字
 	BOOL igestionVer; //吸入式设备
 	BOOL supportNewForeigner; //支持新版外国人永居证 2023.11.10
+	CSimpleStringA bkPicPath; //合成背景的图片路径
 
 	CSimpleStringA m_csAlarmMsg;