Selaa lähdekoodia

Z991239-5484 #comment feat: 卡库JS请求无法处理优化改造

Signed-Off-By: commit-hook
刘文涛80174520 1 vuosi sitten
vanhempi
sitoutus
d767a6d8c0

+ 34 - 0
Module/mod_cardissuerstore/CardIssuerFSM.cpp

@@ -7761,3 +7761,37 @@ bool CCardIssuerFSM::OperateNewCardStore(int slot, CSimpleStringA& addCardNo, CS
 	}
 	return false;
 }
+
+DWORD CCardIssuerFSM::GetFsmStateErrCode()
+{
+	int state = GetFSMState();
+	switch (state)
+	{
+	case 2:
+		return CardIssuerStore_UserErrorCode_PROCESS_IDLE;
+	case 4:
+		return CardIssuerStore_UserErrorCode_PROCESS_HOLD;
+	case 5:
+		return CardIssuerStore_UserErrorCode_PROCESS_READ;
+	case 6:
+		return CardIssuerStore_UserErrorCode_PROCESS_EJECT;
+	case 7:
+		return CardIssuerStore_UserErrorCode_PROCESS_WAIT_FETCH;
+	case 8:
+		return CardIssuerStore_UserErrorCode_PROCESS_CAPTURE;
+	case 9:
+		return CardIssuerStore_UserErrorCode_PROCESS_FAULT;
+	case 10:
+		return CardIssuerStore_UserErrorCode_PROCESS_ISSUE;
+	case 11:
+		return CardIssuerStore_UserErrorCode_PROCESS_WRITE_CARD;
+	case 14:
+		return CardIssuerStore_UserErrorCode_PROCESS_SAMIC;
+	case 17:
+		return CardIssuerStore_UserErrorCode_PROCESS_OPERATE_CARDSTORE;
+	case 18:
+		return CardIssuerStore_UserErrorCode_PROCESS_PRINT_CARD;
+	default:
+		return CardIssuerStore_UserErrorCode_EntityInStateCannotProcess;
+	}
+}

+ 4 - 0
Module/mod_cardissuerstore/CardIssuerFSM.h

@@ -1200,6 +1200,10 @@ public:
 	bool OperateNewCardStore(int slot, CSimpleStringA& addCardNo, CSimpleStringA& addCardSerial, int& status);
 #pragma endregion JS接口具体实现方法
 
+#pragma region JS新增接口
+	DWORD GetFsmStateErrCode();
+#pragma endregion JS新增接口
+
 };
 struct InitTask : public ITaskSp
 {

+ 15 - 0
Module/mod_cardissuerstore/CardIssuerStore_UserErrorCode.h

@@ -211,4 +211,19 @@
 
 #define CardIssuerStore_UserErrorCode_EnterMainPage_SetFlag		0x22000300 //卡库进入首页设置运行时标志位
 #define CardIssuerStore_UserErrorCode_CopyRuncfg				0x22000301 //卡库拷贝旧运行时文件
+
+//卡库流程状态报错
+#define CardIssuerStore_UserErrorCode_PROCESS_IDLE				0x22000402		//当前处于卡机无卡空闲状态,无法处理此请求
+#define CardIssuerStore_UserErrorCode_PROCESS_HOLD				0x22000404		//当前处于卡机有卡等待状态,无法处理此请求
+#define CardIssuerStore_UserErrorCode_PROCESS_READ				0x22000405		//当前处于正在读卡流程,无法处理此请求
+#define CardIssuerStore_UserErrorCode_PROCESS_EJECT				0x22000406		//当前处于正在吐卡流程,无法处理此请求
+#define CardIssuerStore_UserErrorCode_PROCESS_WAIT_FETCH		0x22000407		//当前处于正在取卡流程,无法处理此请求
+#define CardIssuerStore_UserErrorCode_PROCESS_CAPTURE			0x22000408		//当前处于正在吞卡流程,无法处理此请求
+#define CardIssuerStore_UserErrorCode_PROCESS_FAULT				0x22000409		//当前处于卡机故障异常状态,无法处理此请求
+#define CardIssuerStore_UserErrorCode_PROCESS_ISSUE				0x2200040A		//当前处于正在卡库发卡加卡移卡流程,无法处理此请求
+#define CardIssuerStore_UserErrorCode_PROCESS_WRITE_CARD		0x2200040B		//当前处于空白卡写卡流程,无法处理此请求
+#define CardIssuerStore_UserErrorCode_PROCESS_SAMIC				0x2200040C		//当前处于卡片IC数据交互流程,无法处理此请求
+#define CardIssuerStore_UserErrorCode_PROCESS_PRINT_CARD		0x2200040D		//当前处于卡片打印流程,无法处理此请求
+#define CardIssuerStore_UserErrorCode_PROCESS_OPERATE_CARDSTORE 0x2200040E		//当前处于盘库流程,无法处理此请求
+#define CardIssuerStore_UserErrorCode_PROCESS_PREONLINE			0x2200040F		//当前处于跨机激活流程,无法处理此请求
 #endif //_CARDISSUERSTORE_USER_ERRORCODE_H

+ 67 - 15
Module/mod_cardissuerstore/mod_cardissuer.h

@@ -307,17 +307,37 @@ public:
 	void CaptureJS(SpReqAnsContext<CardIssuerStoreService_CaptureJS_Req, CardIssuerStoreService_CaptureJS_Ans>::Pointer ctx)
 	{
 		LOG_FUNCTION();
-		CaptureJSEvent* e = new CaptureJSEvent();
-		e->ctx = ctx;
-		m_fsm.PostEventFIFO(e);
+		if (!m_fsm.GetDevInitFlag()) {
+			ctx->Answer(Error_DevNotAvailable, CardIssuerStore_UserErrorCode_DevOpen_Failed);
+		}
+		else if(_stricmp(m_fsm.GetCurrStateName(), "Hold") != 0){
+			//不符合请求调用,告知具体错误流程
+			DWORD errCode = m_fsm.GetFsmStateErrCode();
+			ctx->Answer(Error_Unexpect, errCode);
+		}
+		else {
+			CaptureJSEvent* e = new CaptureJSEvent();
+			e->ctx = ctx;
+			m_fsm.PostEventFIFO(e);
+		}
 	}
 
 	void ReadBatchCardInfoInRangeJS(SpReqAnsContext<CardIssuerStoreService_ReadBatchCardInfoInRangeJS_Req, CardIssuerStoreService_ReadBatchCardInfoInRangeJS_Ans>::Pointer ctx)
 	{
 		LOG_FUNCTION();
-		ReadBatchCardInfoInRangeJSEvent* pEvt = new ReadBatchCardInfoInRangeJSEvent();
-		pEvt->ctx = ctx;
-		m_fsm.PostEventFIFO(pEvt);
+		if (!m_fsm.GetDevInitFlag()) {
+			ctx->Answer(Error_DevNotAvailable, CardIssuerStore_UserErrorCode_DevOpen_Failed);
+		}
+		else if (_stricmp(m_fsm.GetCurrStateName(), "Idle") != 0) {
+			//不符合请求调用,告知具体错误流程
+			DWORD errCode = m_fsm.GetFsmStateErrCode();
+			ctx->Answer(Error_Unexpect, errCode);
+		}
+		else {
+			ReadBatchCardInfoInRangeJSEvent* pEvt = new ReadBatchCardInfoInRangeJSEvent();
+			pEvt->ctx = ctx;
+			m_fsm.PostEventFIFO(pEvt);
+		}
 	}
 
 	void GetCardInStoreJS(SpReqAnsContext<CardIssuerStoreService_GetCardInStoreJS_Req, CardIssuerStoreService_GetCardInStoreJS_Ans>::Pointer ctx)
@@ -329,26 +349,58 @@ public:
 	void AddAndReadCardFromBoxJS(SpReqAnsContext<CardIssuerStoreService_AddAndReadCardFromBoxJS_Req, CardIssuerStoreService_AddAndReadCardFromBoxJS_Ans>::Pointer ctx)
 	{
 		LOG_FUNCTION();
-		AddAndReadCardFromBoxJSEvent* pEvt = new AddAndReadCardFromBoxJSEvent();
-		pEvt->ctx = ctx;
-		m_fsm.PostEventFIFO(pEvt);
+		if (!m_fsm.GetDevInitFlag()) {
+			ctx->Answer(Error_DevNotAvailable, CardIssuerStore_UserErrorCode_DevOpen_Failed);
+		}
+		else if (_stricmp(m_fsm.GetCurrStateName(), "Idle") != 0) {
+			//不符合请求调用,告知具体错误流程
+			DWORD errCode = m_fsm.GetFsmStateErrCode();
+			ctx->Answer(Error_Unexpect, errCode);
+		}
+		else {
+			AddAndReadCardFromBoxJSEvent* pEvt = new AddAndReadCardFromBoxJSEvent();
+			pEvt->ctx = ctx;
+			m_fsm.PostEventFIFO(pEvt);
+		}
 	}
 
 	void MoveAndReadCardFromSlotJS(SpReqAnsContext<CardIssuerStoreService_MoveAndReadCardFromSlotJS_Req, CardIssuerStoreService_MoveAndReadCardFromSlotJS_Ans>::Pointer ctx)
 	{
 		LOG_FUNCTION();
-		MoveAndReadCardFromSlotJSEvent* pEvt = new MoveAndReadCardFromSlotJSEvent();
-		pEvt->ctx = ctx;
-		m_fsm.PostEventFIFO(pEvt);
+		if (!m_fsm.GetDevInitFlag()) {
+			ctx->Answer(Error_DevNotAvailable, CardIssuerStore_UserErrorCode_DevOpen_Failed);
+		}
+		else if (_stricmp(m_fsm.GetCurrStateName(), "Idle") != 0) {
+			//不符合请求调用,告知具体错误流程
+			DWORD errCode = m_fsm.GetFsmStateErrCode();
+			ctx->Answer(Error_Unexpect, errCode);
+		}
+		else {
+			MoveAndReadCardFromSlotJSEvent* pEvt = new MoveAndReadCardFromSlotJSEvent();
+			pEvt->ctx = ctx;
+			m_fsm.PostEventFIFO(pEvt);
+		}
 	}
 
 	void MoveBacktoSlotJS(SpReqAnsContext<CardIssuerStoreService_MoveBacktoSlotJS_Req, CardIssuerStoreService_MoveBacktoSlotJS_Ans>::Pointer ctx)
 	{
 		LOG_FUNCTION();
-		MoveBacktoSlotJSEvent* pEvt = new MoveBacktoSlotJSEvent();
-		pEvt->ctx = ctx;
-		m_fsm.PostEventFIFO(pEvt);
+		if (!m_fsm.GetDevInitFlag()) {
+			ctx->Answer(Error_DevNotAvailable, CardIssuerStore_UserErrorCode_DevOpen_Failed);
+		}
+		else if (_stricmp(m_fsm.GetCurrStateName(), "Hold") != 0) {
+			//不符合请求调用,告知具体错误流程
+			DWORD errCode = m_fsm.GetFsmStateErrCode();
+			ctx->Answer(Error_Unexpect, errCode);
+		}
+		else {
+			MoveBacktoSlotJSEvent* pEvt = new MoveBacktoSlotJSEvent();
+			pEvt->ctx = ctx;
+			m_fsm.PostEventFIFO(pEvt);
+		}
+		
 	}
+	
 	virtual void OnSysVarEvent(const char* pszKey, const char* pszValue, const char* pszOldValue, const char* pszEntityName);
 	virtual bool IsService()const{return true;}
 	virtual bool IsMultiThread()const{return true;}