diff --git a/GREEN_LANE/src/app/lane/MessageSender.c.190627 b/GREEN_LANE/src/app/lane/MessageSender.c.190627 deleted file mode 100644 index 7e1def7..0000000 --- a/GREEN_LANE/src/app/lane/MessageSender.c.190627 +++ /dev/null @@ -1,489 +0,0 @@ - -#include "MessageSender.h" -#include "hi_ctrl.h" -#include "taglnk_frame.h" -#include "tagbl_struc.h" - -char g_szProcessname[MAX_STRING_SIZE + 1]; -char g_szProcessPath[PATH_MAX + 1]; - -int g_nResponseTimeout; -int cmd; -int type; -int job; - -char szOrganizationID[6+1]; -char szWorkType[4+1]; -char szMsgType[4+1]; -//char szSerialID[8 + 1] = "00000001"; -//char szRequestDTime[14 + 1] = "20180917014900"; -char szRespCode[] = "0000"; -char szData[MAX_STRING_SIZE + 1]; -char rtnData[MAX_STRING_SIZE + 1]; - -int g_nSerailNo = 1; -pthread_mutex_t g_sSerialMutex = PTHREAD_MUTEX_INITIALIZER; - -static struct { - int cmd; /* CONTROL COMMAND */ - int act; /* 0:송신 1:응답 2:3자통신 */ - int work; - char *cmd_nm; -} lane_act[] = { - { NS_RQ_SEQ_NO , 1, 0},/* 0x01 전송연번요구 */ - { NS_LANE_STAT , 0, 0},/* 0x75 차로상태(STATUS) */ - { NS_RPR_DATA , 0, 0},/* 0x76 보수데이터 */ - { NS_CLOSE_PASS , 0, 0},/* 0x73 야간계수 데이터 */ - { NS_WRK_START , 0, 0},/* 0x61 근무개시보고 */ - { NS_HND_DATA , 0, 0},/* 0x17 처리 데이터 */ - { NS_CRD_HND_DATA , 0, 0},/* 0x50 카드처리 데이터 */ - { NS_WRK_END , 0, 0},/* 0x28 근무종료데이터 */ - { NS_REMOTE_LANE_STAT_REPLY, 0, 0},/* 0xD4 원격차로상태응답 */ - { NS_TBL_ORDER , 3, 0},/* 0x24 테이블요구(백그라운드용) */ - { -1 , -1, -1 , " "} -}; - -int MessageSender(int kind, char *packet, char *path, char *rtn) -{ - char szProcessname[PATH_MAX + 1]; - char *pFindPointer; - struct rcv_lane_data *rd; - struct bl_struct *sd; - int nResult; - int i = 0; - - //DaemonStart(); - - nResult = SafeStrCopy(szProcessname, sizeof(szProcessname), path); - - if (nResult != SEC_ERR_SUCCESS) - { - printf("strcpy_s Error![%d]\n", nResult); - } - - pFindPointer = szProcessname; - nResult = SafeStrrChr(szProcessname, strnlen_s(szProcessname, sizeof(szProcessname)), PATH_SEPERATOR, &pFindPointer); - - if (pFindPointer == NULL) - { - nResult = SafeStrCopy(g_szProcessname, sizeof(g_szProcessname), szProcessname); - } - else - { - nResult = SafeStrCopy(g_szProcessname, sizeof(g_szProcessname), pFindPointer + 1); - } - - GetExecPath(g_szProcessPath, sizeof(g_szProcessPath) - 1, path); - - if (g_szProcessPath == NULL) - { - printf("Can't get process path[Cann't load config file]!\nExit Program!"); - return -1; - } -lane_log("MessageSender Start\n"); - nResult = InitMessageSenderConfig(); - - if (nResult != MQ_ERR_SUCCESS) - { - printf("Program terminated!!!\n"); - return -1; - } -lane_log("--------------------------------------------------\n"); - WriteLog(LogType_SystemOut,LogLevel_Info, "Process Started![%s]", g_szProcessname); - - while(1) - { - if(lane_act[i].cmd == kind || lane_act[i].cmd == -1) break; - i++; - } - cmd = lane_act[i].cmd; -lane_log("lane_act[%d].cmd[%02x][%d]\n", i, lane_act[i].cmd, lane_act[i].act); - snprintf(szOrganizationID, 6+1, "%06d", lb_data2atoi(hi_comm_ctrl.bas_tbl.plz_id, 2)); -lane_log("Packet[%s]\n", packet); - if(lane_act[i].act == 2) - snprintf(szWorkType, 4+1, "%.4s", "9998"); - else if(lane_act[i].act == 1) - snprintf(szWorkType, 4+1, "%.4s", "9997"); - else if(lane_act[i].act == 0) - snprintf(szWorkType, 4+1, "%.4s", "9999"); - else if(lane_act[i].act == 3) - snprintf(szWorkType, 4+1, "%.4s", "0080"); - else return -1; - - if(lane_act[i].act != 3) - { - rd = (struct rcv_lane_data *)packet; - snprintf(szData, sizeof(struct rcv_lane_data)+1, "%s", (char *)rd); - printf("szData[%.2s] [%.2s]\n", szData, rd->plz_id); - }else{ - sd = (struct bl_struct *)packet; - snprintf(szData, sizeof(struct bl_struct)+1, "%s", (char *)sd); - printf("szData[%.2s] [%.2s]\n", szData, sd->plz_id); - } - - type = lane_act[i].act; - job = lane_act[i].work; -//lane_log("szWorkType[%s] [%s]\n", szWorkType, lane_act[i].cmd_nm); - snprintf(szMsgType , 4+1, "%.4s", "0010"); -lane_log("처리할 자료[%s]\n", szData); - //2019.06.27 InitDoubleLinkedList Main 선언 - InitThread_Before(); - - if(type == 0) - nResult = InitThread(ProcThread); - else - nResult = InitThreadWait(ProcThread); - -lane_log("종료[%d]?[%s][%d]\n", type, rtnData, nResult); - sprintf(rtn, "%s", rtnData); - WriteLog(LogType_SystemOut,LogLevel_Info, "Process Stopped![%s]", g_szProcessname); - - return 0; -} - -int InitMessageSenderConfig() -{ - char szConfigfilename[PATH_MAX + 1]; - char szConfigfilenameTemp[PATH_MAX + 1]; - char szValueTemp[MAX_STRING_SIZE + 1]; - int nResult; - - snprintf(szConfigfilenameTemp, sizeof(szConfigfilenameTemp), "%s%c%s%c", g_szProcessPath, PATH_SEPERATOR, CONF_FILE_PATH, PATH_SEPERATOR); - - realpath(szConfigfilenameTemp, szConfigfilename); - - snprintf(szValueTemp, sizeof(szValueTemp), "%c", PATH_SEPERATOR); - nResult = SafeStrCat(szConfigfilename, sizeof(szConfigfilename), szValueTemp, 1); - nResult = SafeStrCat(szConfigfilename, sizeof(szConfigfilename), g_szProcessname, strnlen_s(g_szProcessname, sizeof(g_szProcessname))); - nResult = SafeStrCat(szConfigfilename, sizeof(szConfigfilename), CONF_FILE_EXT, strnlen_s(CONF_FILE_EXT, sizeof(CONF_FILE_EXT))); - - printf("Process Name : %s\n", g_szProcessname); - printf("Process Path : %s\n", g_szProcessPath); - printf("Config Filename : %s[%d]\n", szConfigfilename, nResult); - - ReadConfigFile(true, szConfigfilename); -lane_log("Init 1\n"); - // Read MS_RESPONSE_TIMEOUT_KEY - if (GetConfigValue(MS_RESPONSE_TIMEOUT_KEY, szValueTemp, sizeof(szValueTemp)) != CONF_ERR_SUCCESS) - { - WriteLog(LogType_ErrorOut, LogLevel_Error, "Socket MS_RESPONSE_TIMEOUT_KEY configuration not found!"); - return SOCK_ERR_CONFIG; - } -lane_log("Init 2\n"); - if (SafeStringToInt(szValueTemp, sizeof(szValueTemp), &g_nResponseTimeout) != CONF_ERR_SUCCESS) - { - WriteLog(LogType_ErrorOut, LogLevel_Error, "Socket MS_RESPONSE_TIMEOUT_KEY configuration error[ConfigFile:%s]!", szValueTemp); - return SOCK_ERR_CONFIG; - } -lane_log("Init 3\n"); - // Read CONNECTION_TYPE - if (GetConfigValue(SOCK_CONF_CONN_TYPE_KEY, szValueTemp, sizeof(szValueTemp)) != CONF_ERR_SUCCESS) - { - WriteLog(LogType_ErrorOut, LogLevel_Error, "Socket CONNECTION_TYPE configuration not found[Available Value:Server or Client]!"); - return SOCK_ERR_CONFIG; - } -lane_log("Init 4\n"); - if (MappingStringToInt(szValueTemp, sizeof(szValueTemp), g_sConnTypeInfo, sizeof(g_sConnTypeInfo)/sizeof(struct VALUE_STRING_PAIR_INFO), &g_eConnectionType) != CONF_ERR_SUCCESS) - { - WriteLog(LogType_ErrorOut, LogLevel_Error, "Socket Connection Type configuration error[ConfigFile:%s,Available Value:Server or Client]!", szValueTemp); - return SOCK_ERR_CONFIG; - } -lane_log("Init 5\n"); - if (InitLogConfig() != LOG_ERR_SUCCESS) - { - return MS_ERR_CONFIG; - } -lane_log("Init 6\n"); - if (InitSenderMQConfig() != MQ_ERR_SUCCESS) - { - return MS_ERR_CONFIG; - } -lane_log("Init 7\n"); - if (InitSender2MQConfig() != MQ_ERR_SUCCESS) - { - return MS_ERR_CONFIG; - } -lane_log("Init 8\n"); - if (InitThreadConfig() != THREAD_ERR_SUCCESS) - { - return MS_ERR_CONFIG; - } -lane_log("Init 9\n"); - return MS_ERR_SUCCESS; -} - -void *ProcThread(void *pData) -{ - char cOccurType; - struct THREAD_INFO *pThreadInfo; - struct THREAD_INFO SendThreadInfo; - char szMessageBuffer[MAX_STRING_SIZE + 1]; - struct MESSAGE_INFO sMessageInfo; - struct MESSAGE_INFO sndMessageInfo; - int nResult; - int nRslt = 0; - int *pnThreadExitCode; - char szTopic[MAX_STRING_SIZE + 1]; - char szTargetTopic[MAX_STRING_SIZE + 1]; - char szReplyQueuename[MAX_STRING_SIZE + 1]; - char szReply2Queuename[MAX_STRING_SIZE + 1]; - char szExchangername[MAX_STRING_SIZE + 1]; - uuid_t sUUIDTemp; - char szSendUUIDString[UUID_STRING_SIZE + 1]; - char szSend2UUIDString[UUID_STRING_SIZE + 1]; - char szRecvUUIDString[UUID_STRING_SIZE + 1]; - char szRecv2UUIDString[UUID_STRING_SIZE + 1]; - int nMessageLength; - //int nPacketLength; - int nSerialNo; - int nCompareResult; - - //time_t sNow; - struct tm tNow; - int nMillisecond; - - //struct timespec sRecvTimeSpec; - //time_t sRecvNow; - struct tm tRecvNow; - int nRecvMillisecond; - - struct timeval sResponseTimeout; - - uint64_t nDeliveryTag; - - int nDiffSec; - int nDiffMilliSec; - long nDiffTime; - - bool bMessageMatch; - bool bTimeout; - - struct rcv_lane_data *rd; - rd = szData; - - pThreadInfo = (struct THREAD_INFO *)pData; - SafeMemSet(&SendThreadInfo, sizeof(SendThreadInfo), 0, sizeof(SendThreadInfo)); - pthread_mutex_init(&SendThreadInfo.sContextMutex, NULL); - pthread_mutex_init(&SendThreadInfo.sPublishMQ.sMQMutex, NULL); - pthread_mutex_init(&SendThreadInfo.sConsumeMQ.sMQMutex, NULL); - pnThreadExitCode = NULL; - nResult = SafeMemoryAlloc((void **)&pnThreadExitCode, sizeof(int)); - SendThreadInfo.nThreadIndex = pThreadInfo->nThreadIndex; - SendThreadInfo.bThreadLoop = true; - //pnThreadExitCode = SafeAlloc(pnThreadExitCode, sizeof(int)); - *pnThreadExitCode = 0; - //nSerialNo = 1; -lane_log("수신 Buf[%s]\n", rd->buf); - if (g_eConnectionType == SOCK_CONN_TYPE_SERVER) - { - cOccurType = 'S'; - } - else - { - cOccurType = 'C'; - } -/* - while (pThreadInfo->bThreadLoop) - { -*/ - if (pThreadInfo->sPublishMQ.bMQConnection == false || pThreadInfo->sPublishMQ.bMQChannelOpen == false - || pThreadInfo->sConsumeMQ.bMQConnection == false || pThreadInfo->sConsumeMQ.bMQChannelOpen == false) - { -#if 1 - if (ConnectSenderMQ(pThreadInfo, true) != MQ_ERR_SUCCESS) -#else - if(ConnectSenderMultiMQ(pThreadInfo, true, type, 0) != MQ_ERR_SUCCESS) -#endif - { - WriteLog(LogType_StandardOut, LogLevel_Debug, "[Thread:%02d]Connect SenderMQ is failed!", pThreadInfo->nThreadIndex); -#if 0 - continue; -#else - return pnThreadExitCode; -#endif - } - - WriteLog(LogType_StandardOut, LogLevel_Debug, "[Thread:%02d]Connect SenderMQ is succeeded!!", pThreadInfo->nThreadIndex); -lane_log("Type [%d]\n", type); -#if 1 - switch(type) - { - case 0: - case 3: - snprintf(szReplyQueuename, sizeof(szReplyQueuename), "%s%s.%02d", g_szMQMessageSendRespQueuename, szOrganizationID, pThreadInfo->nThreadIndex); - break; - case 1: - case 2: - snprintf(szReplyQueuename, sizeof(szReplyQueuename), "%s%s.%02d", g_szMQMessageSendRealQueuename, szOrganizationID, pThreadInfo->nThreadIndex); - break; - } -#else - snprintf(szReplyQueuename, sizeof(szReplyQueuename), "%s%s.%02d", g_szMQMessageSendRespQueuename, szOrganizationID, pThreadInfo->nThreadIndex); -#endif - } - if (SendThreadInfo.sPublishMQ.bMQConnection == false || SendThreadInfo.sPublishMQ.bMQChannelOpen == false - || SendThreadInfo.sConsumeMQ.bMQConnection == false || SendThreadInfo.sConsumeMQ.bMQChannelOpen == false) - { - if(ConnectSenderMultiMQ(&SendThreadInfo, true, type, 1) != MQ_ERR_SUCCESS) - { - WriteLog(LogType_StandardOut, LogLevel_Debug, "[Thread:%02d]Connect SenderMQ is failed!", SendThreadInfo.nThreadIndex); -#if 0 - continue; -#else - return pnThreadExitCode; -#endif - } - snprintf(szReply2Queuename, sizeof(szReply2Queuename), "%s%s.%02d", g_szMQMessageSendHqctQueuename, g_szMQTargetOrganizationCode, SendThreadInfo.nThreadIndex); - } -lane_log("Reply Que 1 [%s]\n", szReplyQueuename); - GetCurrTime(&tNow, &nMillisecond); - nSerialNo = GetSerialNo(); -lane_log("Serial Que 2 [%d]\n", nSerialNo); - snprintf(szMessageBuffer, sizeof(szMessageBuffer), "%s%c%s%s%08d%04d%02d%02d%02d%02d%02d%s%s", szOrganizationID, cOccurType, szWorkType, - szMsgType, nSerialNo++, tNow.tm_year + 1900, tNow.tm_mon + 1, tNow.tm_mday, tNow.tm_hour, tNow.tm_min, tNow.tm_sec, szRespCode, szData); - nMessageLength = strnlen_s(szMessageBuffer, sizeof(szMessageBuffer)); - sMessageInfo.nMessageLength = nMessageLength; - sMessageInfo.paMessageData = NULL; - SafeMemoryAlloc((void **)&sMessageInfo.paMessageData, sMessageInfo.nMessageLength + 5); - snprintf(sMessageInfo.paMessageData, sMessageInfo.nMessageLength + 5, "%04X", sMessageInfo.nMessageLength); - SafeStrCat(sMessageInfo.paMessageData + 4, sMessageInfo.nMessageLength + 1, szMessageBuffer, strnlen_s(szMessageBuffer, sizeof(szMessageBuffer))); - snprintf(szTopic, sizeof(szTopic), "%s.%s%s", szOrganizationID, szWorkType, szMsgType); -#ifdef _WIN32 - uuid_generate(&sUUIDTemp); - uuid_unparse(&sUUIDTemp, szSendUUIDString); -#else - uuid_generate(sUUIDTemp); - uuid_unparse(sUUIDTemp, szSendUUIDString); -#endif -lane_log("TEST 2 Exchange[%s]\n", g_szMQMessageSendExchangername); -lane_log("TEST 3 Topic[%s]\n", szTopic); -lane_log("TEST 4 Reply[%s][%d]\n", szReplyQueuename, pThreadInfo->sPublishMQ.bMQChannelOpen); - nResult = PutMessageToQueue(pThreadInfo->sPublishMQ.sMQConnectionState, &pThreadInfo->sPublishMQ.bMQConnection, &pThreadInfo->sPublishMQ.bMQChannelOpen, pThreadInfo->nThreadIndex, - g_szMQMessageSendExchangername, szReplyQueuename, szTopic, &sMessageInfo, sMessageInfo.paMessageData, sMessageInfo.nMessageLength, - szSendUUIDString, sizeof(szSendUUIDString), false, NULL); - printf("SendData[%d] : [Thread:%02d]%s\n", nResult, pThreadInfo->nThreadIndex, sMessageInfo.paMessageData); - - if (nResult != MS_ERR_SUCCESS) - { - // 메시지 전송 오류인 경우 처리 - // 오류인 경우 오류 로그에 추가하는 형태의 샘플이지만 DB 처리라면 재전송 여부를 결정해서 재전송 몇번 이내면 재전송 하고 그렇지 않으면 실패 처리하는 로직이 필요하다. - WriteLog(LogType_StandardOut, LogLevel_Info, "[Thread:%02d]MQ Data Publish Error[Data:%s]!", pThreadInfo->nThreadIndex, sMessageInfo.paMessageData); - } - else - { - WriteQueueLog(LogType_MQOut, LogLevel_Info, pThreadInfo->nThreadIndex, 'P', g_szMQMessageSendExchangername, szTopic, szSendUUIDString, sMessageInfo.nMessageLength, "%s", - sMessageInfo.paMessageData); - WriteLog(LogType_StandardOut, LogLevel_Info, "[Thread:%02d]MQ Data Publish[Data:%s]!", pThreadInfo->nThreadIndex, sMessageInfo.paMessageData); - bMessageMatch = false; - bTimeout = false; - if (g_bBypassMode) - { - do - { - GetCurrTime(&tRecvNow, &nRecvMillisecond); - nDiffTime = TimeDiff(&tNow, nMillisecond, &tRecvNow, nRecvMillisecond); - nDiffSec = nDiffTime / 1000; - nDiffMilliSec = nDiffTime % 1000; - - if (nDiffMilliSec < 0) - { - nDiffSec--; - nDiffMilliSec += 1000; - } - - sResponseTimeout.tv_sec = g_nResponseTimeout / 1000 - nDiffSec; - sResponseTimeout.tv_usec = (g_nResponseTimeout % 1000 - nDiffMilliSec) * 1000; - if (sResponseTimeout.tv_usec < 0) - { - sResponseTimeout.tv_sec--; - sResponseTimeout.tv_usec += 1000000; - } - if (sResponseTimeout.tv_sec < 0 || sResponseTimeout.tv_usec < 0) - { - WriteLog(LogType_StandardOut, LogLevel_Info, "[Thread:%02d]Response Timeout! - UUID:%s, Message:%s, ProcessTime:%d.%03ds\n", pThreadInfo->nThreadIndex, szSendUUIDString, - sMessageInfo.paMessageData, nDiffSec, nDiffMilliSec); - bTimeout = true; - break; - } - - memset(rtnData, 0x00, sizeof(rtnData)); - nResult = GetMessageFromQueue(pThreadInfo->sConsumeMQ.sMQConnectionState, szExchangername, sizeof(szExchangername), szMessageBuffer, sizeof(szMessageBuffer), - szRecvUUIDString, sizeof(szRecvUUIDString), szReplyQueuename, sizeof(szReplyQueuename), &pThreadInfo->sConsumeMQ.bMQConnection, - &pThreadInfo->sConsumeMQ.bMQChannelOpen, &nDeliveryTag, &sResponseTimeout); -//lane_log("Get Msg[%s][%d]\n", szMessageBuffer, nResult); - - nResult = pthread_tryjoin_np(pThreadInfo->nThreadID, NULL); - if(nResult == '0') - { - RemoveTerminatedThread(); - nResult = pthread_kill(pThreadInfo, SIGINT); - pthread_mutex_unlock(&pThreadInfo->sContextMutex); - //nResult = DoubleLinkedListRemoveCurrentNode(&g_sConnectedSocketThreadInfo, NULL); - SafeFree((void **)&pThreadInfo); - //SafeFree((void **)&pListNode); - } - - snprintf(rtnData, strnlen_s(szMessageBuffer+45, sizeof(szMessageBuffer)-45)+1, "%s", szMessageBuffer+45); -lane_log("Rtn Data[%s]\n", rtnData); - GetCurrTime(&tRecvNow, &nRecvMillisecond); - nDiffTime = TimeDiff(&tNow, nMillisecond, &tRecvNow, nRecvMillisecond); - nDiffSec = nDiffTime / 1000; - nDiffMilliSec = nDiffTime % 1000; - - if (nDiffMilliSec < 0) - { - nDiffSec--; - nDiffMilliSec += 1000; - } - - if (nResult == MQ_ERR_TIMEOUT) - { - //printf("Response Timeout! - UUID:%s, Message:%s, ProcessTime:%d.%03ds\n", ); - WriteLog(LogType_StandardOut, LogLevel_Info, "[Thread:%02d]Response Timeout! - UUID:%s, Message:%s, ProcessTime:%d.%03ds\n", - pThreadInfo->nThreadIndex, szSendUUIDString, sMessageInfo.paMessageData, nDiffSec, nDiffMilliSec); - bTimeout = true; - break; - } -printf("TEST11[%d][%d][%s]\n", type, nResult, rtnData); - - nResult = SafeStrCmp(szRecvUUIDString, sizeof(szRecvUUIDString), szSendUUIDString, &nCompareResult); - if (nCompareResult != 0) - { - WriteLog(LogType_StandardOut, LogLevel_Info, "[Thread:%02d]Recv UUID is not matched! - UUID:[Send:%s, Recv:%s], Message:%s, ProcessTime:%d.%03ds\n", pThreadInfo->nThreadIndex, szSendUUIDString, szRecvUUIDString, sMessageInfo.paMessageData, nDiffSec, nDiffMilliSec); - amqp_basic_ack(pThreadInfo->sConsumeMQ.sMQConnectionState, 1, nDeliveryTag, 0); - continue; - } - bMessageMatch = true; - nMessageLength = strnlen_s(szMessageBuffer, sizeof(szMessageBuffer)); - amqp_basic_ack(pThreadInfo->sConsumeMQ.sMQConnectionState, 1, nDeliveryTag, 0); - WriteQueueLog(LogType_MQOut, LogLevel_Info, pThreadInfo->nThreadIndex, 'C', szReplyQueuename, "", szRecvUUIDString, nMessageLength, "%s", szMessageBuffer); - WriteLog(LogType_StandardOut, LogLevel_Info, "[Thread:%02d]MQ Data Consume[Data:%s] - ProcessTime:%d.%03ds!", pThreadInfo->nThreadIndex, szMessageBuffer, nDiffSec, nDiffMilliSec); - } while (bMessageMatch == false && bTimeout == false); - if (!bTimeout) - { -printf("센터 전송 옴[%d]?\n", type); - // 전송 완료 처리 필요 - }else - { - memset(rtnData, 0x00, sizeof(rtnData)); - snprintf(rtnData, sizeof(rtnData), "%02x0002", cmd); - } - } - } - //sleep(1); // test -/* - } -*/ - CloseMQ(pThreadInfo->nThreadIndex, pThreadInfo->sPublishMQ.sMQConnectionState, &pThreadInfo->sPublishMQ.bMQConnection, &pThreadInfo->sPublishMQ.bMQChannelOpen, &pThreadInfo->sPublishMQ.sMQMutex); - CloseMQ(pThreadInfo->nThreadIndex, pThreadInfo->sConsumeMQ.sMQConnectionState, &pThreadInfo->sConsumeMQ.bMQConnection, &pThreadInfo->sConsumeMQ.bMQChannelOpen, &pThreadInfo->sConsumeMQ.sMQMutex); - return pnThreadExitCode; -} - -int GetSerialNo() -{ - int nSerialNo; - pthread_mutex_lock(&g_sSerialMutex); - nSerialNo = g_nSerailNo++; - pthread_mutex_unlock(&g_sSerialMutex); - return nSerialNo; -} diff --git a/GREEN_LANE/src/app/lane/MessageSender.c.200122 b/GREEN_LANE/src/app/lane/MessageSender.c.200122 deleted file mode 100644 index 8d00efe..0000000 --- a/GREEN_LANE/src/app/lane/MessageSender.c.200122 +++ /dev/null @@ -1,702 +0,0 @@ - -#include "MessageSender.h" -#include "hi_ctrl.h" -#include "taglnk_frame.h" -#include "tagbl_struc.h" -#include -#include "iss_comp.h" - -char g_szProcessname[MAX_STRING_SIZE + 1]; -char g_szProcessPath[PATH_MAX + 1]; - -extern int g_nResponseTimeout; -extern int cmd; -extern int type; -extern int job; -extern char szOrganizationID[6+1]; -extern char szWorkType[4+1]; -extern char szMsgType[4+1]; - -extern char szRespCode[] = "0000"; -//char *szData; -char rcvData[MAX_STRING_SIZE + 1]; -char szData[MAX_STRING_SIZE + 1]; -char rtnData[MAX_STRING_SIZE + 1]; - -extern int g_nSerailNo = 1; -pthread_mutex_t g_sSerialMutex = PTHREAD_MUTEX_INITIALIZER; - -static struct { - int cmd; /* CONTROL COMMAND */ - int act; /* 0:송신 1:응답 2:3자통신 */ - int work; - char *cmd_nm; -} lane_act[] = { - { NS_RPR_DATA , 0, 0 , " 0x76 보수데이터 "}, - { NS_CLOSE_PASS , 0, 5 , " 0x73 야간계수 데이터 "}, - { NS_WRK_START , 0, 0 , " 0x61 근무개시보고 "}, - { NS_HND_DATA , 0, 2 , " 0x17 처리 데이터 "}, - { NS_CRD_HND_DATA , 0, 3 , " 0x50 카드처리 데이터 "}, - { NS_WRK_END , 0, 4 , " 0x28 근무종료데이터 "}, - //{ NS_REMOTE_LANE_STAT_REPLY, 2, 0 , " 0xD4 원격차로상태응답 "}, - { NS_TBL_ORDER , 3, 0 , " 0x24 테이블요구(백그라운드용) "}, - { NS_REFUND_DATA , 0, 2 , " 0x40 환불처리 데이터 "}, - { NS_LANE_STAT , 1, 1 , " 0x75 차로상태(STATUS) "}, - { -1 , -1, -1 , " "} -}; - -static struct { - uchar plz_id[2]; - int lane_no; - int tbl_order; -} lane_info[20] = -{ - {"01", 1, 0}, - {"01", 2, 0}, - {"01", 3, 0}, - {"01", 4, 0}, - {"01", 5, 0}, - {"01", 6, 0}, - {"01", 7, 0}, - {"01", 8, 0}, - {"03", 1, 0}, - {"03", 2, 0}, - {"03", 3, 0}, - {"03", 4, 0}, - {"03", 5, 0}, - {"03", 6, 0}, - {"03", 7, 0}, - {"03", 8, 0}, - {"03", 9, 0}, - {"03", 10, 0}, - {"00", -1, -1} -}; - -int MessageSender(int kind, char *packet, char *path, char *rtn) -{ - char szProcessname[PATH_MAX + 1]; - char *sDataMalloc; - struct write_info wi; - struct rcv_lane_data *rd; - struct bl_struct *sd; - int nResult; - int i = 0; - - //DaemonStart(); -/* //2019.07.04 InitMessageQueue에 포함 - nResult = SafeStrCopy(szProcessname, sizeof(szProcessname), path); - - if (nResult != SEC_ERR_SUCCESS) - { - printf("strcpy_s Error![%d]\n", nResult); - } - - pFindPointer = szProcessname; - nResult = SafeStrrChr(szProcessname, strnlen_s(szProcessname, sizeof(szProcessname)), PATH_SEPERATOR, &pFindPointer); - - if (pFindPointer == NULL) - { - nResult = SafeStrCopy(g_szProcessname, sizeof(g_szProcessname), szProcessname); - } - else - { - nResult = SafeStrCopy(g_szProcessname, sizeof(g_szProcessname), pFindPointer + 1); - } - - GetExecPath(g_szProcessPath, sizeof(g_szProcessPath) - 1, path); - - if (g_szProcessPath == NULL) - { - printf("Can't get process path[Cann't load config file]!\nExit Program!"); - return -1; - } -*/ -lane_log("MessageSender Start\n"); -/* // 2019.07.04 lane_main에서 1번만 실행하도록 수정 - nResult = InitMessageSenderConfig(path); - - if (nResult != MQ_ERR_SUCCESS) - { - printf("Program terminated!!!\n"); - return -1; - } -*/ -//lane_log("---------------------------[%s]-----------------------\n", packet); - //WriteLog(LogType_SystemOut,LogLevel_Info, "Process Started![%s]", g_szProcessname); - - memset(szData, 0x00, sizeof(szData)); - memset(rcvData, 0x00, sizeof(rcvData)); - memset(rtnData, 0x00, sizeof(rtnData)); - sprintf(wi.plz_id, "%.2s", PLZ_CODE2); - nResult = lb_freadx(&wi, FNO_BASICTBL, &hi_comm_ctrl.bas_tbl, FFIRST); - - if (nResult < 0){ - err_log("기초사항-F을 읽을 수 없습니다.", 1); - } - - //lane_log("plz_id[%.2s]\n", hi_comm_ctrl.bas_tbl.plz_id); - while(1) - { - if(lane_act[i].cmd == kind || lane_act[i].cmd == -1) break; - i++; - } - cmd = lane_act[i].cmd; -lane_log("lane_act[%d].cmd[%02x][%d]\n", i, lane_act[i].cmd, lane_act[i].act); - snprintf(szOrganizationID, 6+1, "%06d", lb_data2atoi(hi_comm_ctrl.bas_tbl.plz_id, 2)); -//lane_log("Packet[%s]\n", packet); - //sDataMalloc = szData; - //szData = (char *)malloc(MAX_STRING_SIZE +1); - //SafeMemoryAlloc((void **)&sDataMalloc, MAX_STRING_SIZE+ 1); - if(lane_act[i].act == 3) - { - sd = (struct bl_struct *)packet; - snprintf(szData, sizeof(struct bl_struct)+1, "%s", (char *)sd); - snprintf(rcvData, sizeof(struct bl_struct)+1, "%s", (char *)sd); - //lane_log("3 szData[%.2s] [%.2s]\n", szData, sd->plz_id); - }else if(lane_act[i].act == 1) - { - sprintf(szData, "%s", packet); - sprintf(rcvData, "%s", packet); - //lane_log("1 szData[%s]\n", szData); - }else{ - rd = (struct rcv_lane_data *)packet; - snprintf(szData, sizeof(struct rcv_lane_data)+1, "%s", (char *)rd); - snprintf(rcvData, sizeof(struct rcv_lane_data)+1, "%s", (char *)rd); - //lane_log("else szData[%.2s] [%.2s]\n", szData, rd->plz_id); - } - - if(lane_act[i].act == 2) - snprintf(szWorkType, 4+1, "%.4s", "9998"); - else if(lane_act[i].act == 1) - snprintf(szWorkType, 4+1, "%04d", lane_act[i].work); - else if(lane_act[i].act == 0) - snprintf(szWorkType, 4+1, "%.4s", "9999"); - else if(lane_act[i].act == 3) - snprintf(szWorkType, 4+1, "%.2s%.2s", sd->plz_id, sd->lane_no); - else{ - //SafeFree((void **)&sDataMalloc); - return -1; - } - type = lane_act[i].act; - job = lane_act[i].work; -lane_log("szWorkType[%s] [%s]\n", szWorkType, lane_act[i].cmd_nm); - snprintf(szMsgType , 4+1, "%.4s", "0010"); -//lane_log("처리할 자료[%s]\n", szData); - //2019.06.27 InitDoubleLinkedList Main 선언 - InitThread_Before(); -lane_log("Queue 초기화\n"); - -// if(type == 0) - nResult = InitThread(ProcThread); -// else -// nResult = InitThreadWait(ProcThread); - -lane_log("종료[%d]?[%s][%d]\n", type, rtnData, nResult); - sprintf(rtn, "%s", rtnData); - //SafeFree((void **)&sDataMalloc); - //WriteLog(LogType_SystemOut,LogLevel_Info, "Process Stopped![%s]", g_szProcessname); - - return 0; -} - -int InitMessageSenderConfig(char *path) -{ - char szConfigfilename[PATH_MAX + 1]; - char szConfigfilenameTemp[PATH_MAX + 1]; - char szValueTemp[MAX_STRING_SIZE + 1]; - char szProcessname[PATH_MAX + 1]; - char *pFindPointer; - int nResult; - - nResult = SafeStrCopy(szProcessname, sizeof(szProcessname), path); - - if (nResult != SEC_ERR_SUCCESS) - { - printf("strcpy_s Error![%d]\n", nResult); - } - - pFindPointer = szProcessname; - nResult = SafeStrrChr(szProcessname, strnlen_s(szProcessname, sizeof(szProcessname)), PATH_SEPERATOR, &pFindPointer); - - if (pFindPointer == NULL) - { - nResult = SafeStrCopy(g_szProcessname, sizeof(g_szProcessname), szProcessname); - } - else - { - nResult = SafeStrCopy(g_szProcessname, sizeof(g_szProcessname), pFindPointer + 1); - } - - GetExecPath(g_szProcessPath, sizeof(g_szProcessPath) - 1, path); - - if (g_szProcessPath == NULL) - { - printf("Can't get process path[Cann't load config file]!\nExit Program!"); - return -1; - } - - snprintf(szConfigfilenameTemp, sizeof(szConfigfilenameTemp), "%s%c%s%c", g_szProcessPath, PATH_SEPERATOR, CONF_FILE_PATH, PATH_SEPERATOR); - - realpath(szConfigfilenameTemp, szConfigfilename); - - snprintf(szValueTemp, sizeof(szValueTemp), "%c", PATH_SEPERATOR); - nResult = SafeStrCat(szConfigfilename, sizeof(szConfigfilename), szValueTemp, 1); - nResult = SafeStrCat(szConfigfilename, sizeof(szConfigfilename), g_szProcessname, strnlen_s(g_szProcessname, sizeof(g_szProcessname))); - nResult = SafeStrCat(szConfigfilename, sizeof(szConfigfilename), CONF_FILE_EXT, strnlen_s(CONF_FILE_EXT, sizeof(CONF_FILE_EXT))); - - printf("Process Name : %s\n", g_szProcessname); - printf("Process Path : %s\n", g_szProcessPath); - printf("Config Filename : %s[%d]\n", szConfigfilename, nResult); - - ReadConfigFile(true, szConfigfilename); - - // Read MS_RESPONSE_TIMEOUT_KEY - if (GetConfigValue(MS_RESPONSE_TIMEOUT_KEY, szValueTemp, sizeof(szValueTemp)) != CONF_ERR_SUCCESS) - { - WriteLog(LogType_ErrorOut, LogLevel_Error, "Socket MS_RESPONSE_TIMEOUT_KEY configuration not found!"); - return SOCK_ERR_CONFIG; - } - - if (SafeStringToInt(szValueTemp, sizeof(szValueTemp), &g_nResponseTimeout) != CONF_ERR_SUCCESS) - { - WriteLog(LogType_ErrorOut, LogLevel_Error, "Socket MS_RESPONSE_TIMEOUT_KEY configuration error[ConfigFile:%s]!", szValueTemp); - return SOCK_ERR_CONFIG; - } - - // Read CONNECTION_TYPE - if (GetConfigValue(SOCK_CONF_CONN_TYPE_KEY, szValueTemp, sizeof(szValueTemp)) != CONF_ERR_SUCCESS) - { - WriteLog(LogType_ErrorOut, LogLevel_Error, "Socket CONNECTION_TYPE configuration not found[Available Value:Server or Client]!"); - return SOCK_ERR_CONFIG; - } - - if (MappingStringToInt(szValueTemp, sizeof(szValueTemp), g_sConnTypeInfo, sizeof(g_sConnTypeInfo)/sizeof(struct VALUE_STRING_PAIR_INFO), &g_eConnectionType) != CONF_ERR_SUCCESS) - { - WriteLog(LogType_ErrorOut, LogLevel_Error, "Socket Connection Type configuration error[ConfigFile:%s,Available Value:Server or Client]!", szValueTemp); - return SOCK_ERR_CONFIG; - } - - if (InitLogConfig() != LOG_ERR_SUCCESS) - { - return MS_ERR_CONFIG; - } - - if (InitSenderMQConfig() != MQ_ERR_SUCCESS) - { - return MS_ERR_CONFIG; - } - - if (InitSender2MQConfig() != MQ_ERR_SUCCESS) - { - return MS_ERR_CONFIG; - } - - if (InitThreadConfig() != THREAD_ERR_SUCCESS) - { - return MS_ERR_CONFIG; - } - - return MS_ERR_SUCCESS; -} - -void *ProcThread(void *pData) -{ - char cOccurType; - struct THREAD_INFO *pThreadInfo; - struct THREAD_INFO SendThreadInfo; - char szMessageBuffer[MAX_STRING_SIZE + 1]; - struct MESSAGE_INFO sMessageInfo; - struct MESSAGE_INFO sndMessageInfo; - int nResult; - int nRslt = 0, retry = 0; - int *pnThreadExitCode; - amqp_queue_purge_ok_t *pQueuePurgeResult; - char szTopic[MAX_STRING_SIZE + 1]; - char szTargetTopic[MAX_STRING_SIZE + 1]; - char szReplyQueuename[MAX_STRING_SIZE + 1]; - char szReply2Queuename[MAX_STRING_SIZE + 1]; - char szExchangername[MAX_STRING_SIZE + 1]; - uuid_t sUUIDTemp; - char szSendUUIDString[UUID_STRING_SIZE + 1]; - char szSend2UUIDString[UUID_STRING_SIZE + 1]; - char szRecvUUIDString[UUID_STRING_SIZE + 1]; - char szRecv2UUIDString[UUID_STRING_SIZE + 1]; - char orgCarNo[255+1]; - char szCarNo[255+1]; - char putCarNp[16]; - char nowTbl[2+1]; - - char procData[MAX_STRING_SIZE + 1]; memset(procData, 0x00, sizeof(procData)); - char webData[MAX_STRING_SIZE + 1]; memset(webData, 0x00, sizeof(webData)); - int nMessageLength; - //int nPacketLength; - int nSerialNo; - int nCompareResult, size, ii; - - //time_t sNow; - struct tm tNow; - int nMillisecond; - - //struct timespec sRecvTimeSpec; - //time_t sRecvNow; - struct tm tRecvNow; - int nRecvMillisecond; - - struct timeval sResponseTimeout; - - uint64_t nDeliveryTag; - - int nDiffSec; - int nDiffMilliSec; - long nDiffTime; - - bool bMessageMatch; - bool bTimeout; - struct hi_lane_stat *hs; - struct hi_wrk_end *we; - struct hi_wrk_start *ws; - struct hi_crd_hnd_data *crd; - struct hi_hnd_data *hnd; - size_t in_size; - size_t out_size; - size_t out_buf_left; - char* in_buf; - char* out_buf; - char in_fare[2]; - char in_booth[2]; - char tmp_chg[20]; -#if 1 - FILE *fp; - char path[128]; - int flen = 0; - - memset(path, 0x00, sizeof(path)); -#endif -//lane_log("##### Rcv Data[%s] ##### \n", rcvData); - memcpy(procData, szData, sizeof(procData)); - - //memcpy(nowTbl, tbl_order, sizeof(nowTbl)); - memset(orgCarNo, 0x00, sizeof(orgCarNo)); - memset(szCarNo, 0x00, sizeof(szCarNo)); -lane_log("MessageSender 1\n"); - pThreadInfo = (struct THREAD_INFO *)pData; - SafeMemSet(&SendThreadInfo, sizeof(SendThreadInfo), 0, sizeof(SendThreadInfo)); - pthread_mutex_init(&SendThreadInfo.sContextMutex, NULL); - pthread_mutex_init(&SendThreadInfo.sPublishMQ.sMQMutex, NULL); - pthread_mutex_init(&SendThreadInfo.sConsumeMQ.sMQMutex, NULL); - pnThreadExitCode = NULL; - nResult = SafeMemoryAlloc((void **)&pnThreadExitCode, sizeof(int)); - SendThreadInfo.nThreadIndex = pThreadInfo->nThreadIndex; - SendThreadInfo.bThreadLoop = true; - //pnThreadExitCode = SafeAlloc(pnThreadExitCode, sizeof(int)); - *pnThreadExitCode = 0; - //nSerialNo = 1; -lane_log("MessageSender 2\n"); - if (g_eConnectionType == SOCK_CONN_TYPE_SERVER) - { - cOccurType = 'S'; - } - else - { - cOccurType = 'C'; - } -/* - while (pThreadInfo->bThreadLoop) - { -*/ -lane_log("MessageSender 3\n"); - if (pThreadInfo->sPublishMQ.bMQConnection == false || pThreadInfo->sPublishMQ.bMQChannelOpen == false - || pThreadInfo->sConsumeMQ.bMQConnection == false || pThreadInfo->sConsumeMQ.bMQChannelOpen == false) - { -#if 0 - while(1) - { -#endif - lane_log("[Thread:%02d]Connect SenderMQ Connecting [%d]\n", pThreadInfo->nThreadIndex, retry); - if (ConnectSenderMQ(pThreadInfo, true) != MQ_ERR_SUCCESS) - { - lane_log("[Thread:%02d]Connect SenderMQ is failed!\n", pThreadInfo->nThreadIndex); - -#if 1 - sprintf(path, "/app_data/tcs/FILE/RECV/Retry_%04d%02d%02d%02d%02d%02d", tNow.tm_year + 1900, tNow.tm_mon + 1, tNow.tm_mday, tNow.tm_hour, tNow.tm_min, tNow.tm_sec); - unlink(path); - fp = fopen(path, "r+"); - if(fp < 0) - { - lane_log("%s:파일생성 실패[%d]", path, errno); - WriteLog(LogType_StandardOut, LogLevel_Info, "[Thread:%02d]Connect Fail & File Create Fail! - Message:[%s]\n", - pThreadInfo->nThreadIndex, procData); - return(-1); - } - flen = strlen(procData); - procData[flen] = '\n'; - procData[flen+1] = '\0'; - nRslt = fputs(procData, fp); - fclose(fp); -#endif - pThreadInfo->nRunState = SOCK_THREAD_STATE_TERMINATED; - pthread_mutex_destroy(&pThreadInfo->sContextMutex); - pthread_mutex_destroy(&pThreadInfo->sPublishMQ.sMQMutex); - pthread_mutex_destroy(&pThreadInfo->sConsumeMQ.sMQMutex); - SafeFree((void **)&pThreadInfo); - SafeFree((void **)&pnThreadExitCode); - -#if 0 - pThreadInfo = (struct THREAD_INFO *)pData; - pnThreadExitCode = NULL; - nResult = SafeMemoryAlloc((void **)&pnThreadExitCode, sizeof(int)); - SendThreadInfo.nThreadIndex = pThreadInfo->nThreadIndex; - continue; -#else - lane_log("[Thread:%02d]Connect SenderMQ File Create[%d]!\n", pThreadInfo->nThreadIndex, flen); - return(-1); -#endif - }else - { - lane_log("[Thread:%02d]Connect SenderMQ Reconnecting is Success!\n", pThreadInfo->nThreadIndex); - //break; - } -#if 0 - } -#endif - //WriteLog(LogType_StandardOut, LogLevel_Debug, "[Thread:%02d]Connect SenderMQ is succeeded!!", pThreadInfo->nThreadIndex); -lane_log("Type [%d]\n", type); -#if 1 - switch(type) - { - case 0: - case 2: - snprintf(szReplyQueuename, sizeof(szReplyQueuename), "%s%s.%02d", g_szMQMessageSendRespQueuename, szOrganizationID, pThreadInfo->nThreadIndex); - break; - case 3: - snprintf(szReplyQueuename, sizeof(szReplyQueuename), "%s%s.%02d", g_szMQMessageSendHqctQueuename, szOrganizationID, pThreadInfo->nThreadIndex); - break; - case 1: - snprintf(szReplyQueuename, sizeof(szReplyQueuename), "%s%s.%02d", g_szMQMessageSendRealQueuename, szOrganizationID, pThreadInfo->nThreadIndex); - //snprintf(szReplyQueuename, sizeof(szReplyQueuename), "%s%s.%02d", g_szMQMessageSendHqctQueuename, szOrganizationID, pThreadInfo->nThreadIndex); - break; - } -#else - snprintf(szReplyQueuename, sizeof(szReplyQueuename), "%s%s.%02d", g_szMQMessageSendRespQueuename, szOrganizationID, pThreadInfo->nThreadIndex); -#endif - } - -lane_log("Reply Que 1 [%s]\n", szReplyQueuename); -//sleep(4); - GetCurrTime(&tNow, &nMillisecond); - nSerialNo = GetSerialNo(); -lane_log("Serial Que 2 [%d]\n", nSerialNo); -//sleep(4); - snprintf(szMessageBuffer, sizeof(szMessageBuffer), "%s%c%s%s%08d%04d%02d%02d%02d%02d%02d%s%s", szOrganizationID, cOccurType, szWorkType, - szMsgType, nSerialNo++, tNow.tm_year + 1900, tNow.tm_mon + 1, tNow.tm_mday, tNow.tm_hour, tNow.tm_min, tNow.tm_sec, szRespCode, procData); - //free(szData); - nMessageLength = strnlen_s(szMessageBuffer, sizeof(szMessageBuffer)); - sMessageInfo.nMessageLength = nMessageLength; - sMessageInfo.paMessageData = NULL; -lane_log("Aloc Before\n"); -//sleep(4); - SafeMemoryAlloc((void **)&sMessageInfo.paMessageData, sMessageInfo.nMessageLength + 5); -lane_log("Aloc After\n"); -//sleep(4); - snprintf(sMessageInfo.paMessageData, sMessageInfo.nMessageLength + 5, "%04X", sMessageInfo.nMessageLength); - SafeStrCat(sMessageInfo.paMessageData + 4, sMessageInfo.nMessageLength + 1, szMessageBuffer, strnlen_s(szMessageBuffer, sizeof(szMessageBuffer))); -lane_log("MessageSender 5\n"); -//sleep(4); - snprintf(szTopic, sizeof(szTopic), "%s.%s%s", szOrganizationID, szWorkType, szMsgType); -#ifdef _WIN32 - uuid_generate(&sUUIDTemp); - uuid_unparse(&sUUIDTemp, szSendUUIDString); -#else -//lane_log("A2\n"); -//sleep(4); - uuid_generate(sUUIDTemp); -//lane_log("A3\n"); -//sleep(4); - uuid_unparse(sUUIDTemp, szSendUUIDString); -#endif -lane_log("TEST 2 Exchange[%s]\n", g_szMQMessageSendExchangername); -lane_log("TEST 3 Topic[%s]\n", szTopic); -//lane_log("TEST 4 Reply[%s][%d]\n", szReplyQueuename, pThreadInfo->sPublishMQ.bMQChannelOpen); -//sleep(4); -lane_log("MessageSender 6\n"); -#if 1 // 백그라운드 전송 시, 언제나 최신을 처리하기 위한 기존 데이터 삭제(TEST 필) -//lane_log("Back Purge 0[%d][%s][%.2s]\n", type, nowTbl, procData+12); - if(type == 3) - { - memset(in_fare, 0x00, sizeof(in_fare)); - memset(in_booth, 0x00, sizeof(in_booth)); - memset(tmp_chg, 0x00, sizeof(tmp_chg)); - - memcpy(in_fare, procData, 2); - memcpy(in_booth, procData+2, 2); - memcpy(tmp_chg, procData+12, 2); - for(ii = 0; ii < 20; ii++) - { - if(strncmp(lane_info[ii].plz_id, in_fare, 2) == 0 && lane_info[ii].lane_no == lb_data2atoi(in_booth, 2)) - break; - } - } -lane_log("MessageSender 7\n"); - //memcpy(nowTbl, lane_info[ii].tbl_order, sizeof(nowTbl)); - - if(type == 3 && lane_info[ii].tbl_order == lb_data2atoi(tmp_chg, 2)) - { - lane_log("Back Purge 1[%x]\n", pThreadInfo->sPublishMQ.sMQConnectionState); - pQueuePurgeResult = amqp_queue_purge(pThreadInfo->sPublishMQ.sMQConnectionState, 1, amqp_cstring_bytes(g_szMQMessageSendHqctQueuename)); - lane_log("Back Purge 2[%x]\n", pThreadInfo->sPublishMQ.sMQConnectionState); - //sleep(1); - }else - lane_info[ii].tbl_order = lb_data2atoi(tmp_chg, 2); -#endif -lane_log("MessageSender 8\n"); - nResult = PutMessageToQueue(pThreadInfo->sPublishMQ.sMQConnectionState, &pThreadInfo->sPublishMQ.bMQConnection, &pThreadInfo->sPublishMQ.bMQChannelOpen, pThreadInfo->nThreadIndex, - g_szMQMessageSendExchangername, szReplyQueuename, szTopic, &sMessageInfo, sMessageInfo.paMessageData, sMessageInfo.nMessageLength, - szSendUUIDString, sizeof(szSendUUIDString), false, NULL); -//lane_log("Put After\n"); -//sleep(2); - lane_log("SendData[%d] : [Thread:%02d]%s\n", nResult, pThreadInfo->nThreadIndex, sMessageInfo.paMessageData); - if (nResult != MS_ERR_SUCCESS) - { - lane_log("[Thread:%02d]MQ Data Publish Error[Data:%s]!", pThreadInfo->nThreadIndex, sMessageInfo.paMessageData); - // 메시지 전송 오류인 경우 처리 - // 오류인 경우 오류 로그에 추가하는 형태의 샘플이지만 DB 처리라면 재전송 여부를 결정해서 재전송 몇번 이내면 재전송 하고 그렇지 않으면 실패 처리하는 로직이 필요하다. - WriteLog(LogType_StandardOut, LogLevel_Info, "[Thread:%02d]MQ Data Publish Error[Data:%s]!", pThreadInfo->nThreadIndex, sMessageInfo.paMessageData); - } - else - { - //snprintf((char *)tbl_order, 2+1, "%.2s", szData+12); - lane_log("[Thread:%02d]MQ Data Publish[Data:%s]!", pThreadInfo->nThreadIndex, sMessageInfo.paMessageData); - bMessageMatch = false; - bTimeout = false; -#if 1 //2019.06.28 - if(type == 0) - { -lane_log("Send type[%d] End Loot\n", type); - CloseMQ(pThreadInfo->nThreadIndex, pThreadInfo->sPublishMQ.sMQConnectionState, &pThreadInfo->sPublishMQ.bMQConnection, &pThreadInfo->sPublishMQ.bMQChannelOpen, &pThreadInfo->sPublishMQ.sMQMutex); - CloseMQ(pThreadInfo->nThreadIndex, pThreadInfo->sConsumeMQ.sMQConnectionState, &pThreadInfo->sConsumeMQ.bMQConnection, &pThreadInfo->sConsumeMQ.bMQChannelOpen, &pThreadInfo->sConsumeMQ.sMQMutex); -//sleep(2); -lane_log("Send type[%d] End\n", type); - pThreadInfo->nRunState = SOCK_THREAD_STATE_TERMINATED; - pthread_mutex_destroy((char *)&pThreadInfo->sContextMutex); - pthread_mutex_destroy((char *)&pThreadInfo->sPublishMQ.sMQMutex); - pthread_mutex_destroy((char *)&pThreadInfo->sConsumeMQ.sMQMutex); -lane_log("Mutex destroy[%d]\n", type); -//sleep(2); - SafeFree((void **)&pThreadInfo); - SafeFree((void **)&sMessageInfo.paMessageData); - SafeFree((void **)&pnThreadExitCode); -lane_log("SafeFree[%d]\n", type); -//sleep(2); - return(nResult); - } -#endif - - if (g_bBypassMode) - { - do - { - GetCurrTime(&tRecvNow, &nRecvMillisecond); - nDiffTime = TimeDiff(&tNow, nMillisecond, &tRecvNow, nRecvMillisecond); - nDiffSec = nDiffTime / 1000; - nDiffMilliSec = nDiffTime % 1000; - - if (nDiffMilliSec < 0) - { - nDiffSec--; - nDiffMilliSec += 1000; - } - - sResponseTimeout.tv_sec = g_nResponseTimeout / 1000 - nDiffSec; - sResponseTimeout.tv_usec = (g_nResponseTimeout % 1000 - nDiffMilliSec) * 1000; - if (sResponseTimeout.tv_usec < 0) - { - sResponseTimeout.tv_sec--; - sResponseTimeout.tv_usec += 1000000; - } - if (sResponseTimeout.tv_sec < 0 || sResponseTimeout.tv_usec < 0) - { - WriteLog(LogType_StandardOut, LogLevel_Info, "[Thread:%02d]Response Timeout! - UUID:%s, Message:%s, ProcessTime:%d.%03ds\n", pThreadInfo->nThreadIndex, szSendUUIDString, - sMessageInfo.paMessageData, nDiffSec, nDiffMilliSec); - bTimeout = true; - break; - } - - memset(rtnData, 0x00, sizeof(rtnData)); - memset(procData, 0x00, sizeof(procData)); - nResult = GetMessageFromQueue(pThreadInfo->sConsumeMQ.sMQConnectionState, szExchangername, sizeof(szExchangername), szMessageBuffer, sizeof(szMessageBuffer), - szRecvUUIDString, sizeof(szRecvUUIDString), szReplyQueuename, sizeof(szReplyQueuename), &pThreadInfo->sConsumeMQ.bMQConnection, - &pThreadInfo->sConsumeMQ.bMQChannelOpen, &nDeliveryTag, &sResponseTimeout); -//lane_log("Get Msg[%s][%d]\n", szMessageBuffer, nResult); - snprintf(rtnData, strnlen_s(szMessageBuffer+45, sizeof(szMessageBuffer)-45)+1, "%s", szMessageBuffer+45); -//lane_log("Rtn Data[%s]\n", rtnData); - GetCurrTime(&tRecvNow, &nRecvMillisecond); - nDiffTime = TimeDiff(&tNow, nMillisecond, &tRecvNow, nRecvMillisecond); - nDiffSec = nDiffTime / 1000; - nDiffMilliSec = nDiffTime % 1000; - - if (nDiffMilliSec < 0) - { - nDiffSec--; - nDiffMilliSec += 1000; - } - - if (nResult == MQ_ERR_TIMEOUT) - { - //printf("Response Timeout! - UUID:%s, Message:%s, ProcessTime:%d.%03ds\n", ); - WriteLog(LogType_StandardOut, LogLevel_Info, "[Thread:%02d]Response Timeout! - UUID:%s, Message:%s, ProcessTime:%d.%03ds\n", - pThreadInfo->nThreadIndex, szSendUUIDString, sMessageInfo.paMessageData, nDiffSec, nDiffMilliSec); - bTimeout = true; - break; - } -//printf("TEST11[%d][%d][%s]\n", type, nResult, rtnData); - - nResult = SafeStrCmp(szRecvUUIDString, sizeof(szRecvUUIDString), szSendUUIDString, &nCompareResult); - if (nCompareResult != 0) - { - WriteLog(LogType_StandardOut, LogLevel_Info, "[Thread:%02d]Recv UUID is not matched! - UUID:[Send:%s, Recv:%s], Message:%s, ProcessTime:%d.%03ds\n", pThreadInfo->nThreadIndex, szSendUUIDString, szRecvUUIDString, sMessageInfo.paMessageData, nDiffSec, nDiffMilliSec); - amqp_basic_ack(pThreadInfo->sConsumeMQ.sMQConnectionState, 1, nDeliveryTag, 0); - continue; - } - bMessageMatch = true; - nMessageLength = strnlen_s(szMessageBuffer, sizeof(szMessageBuffer)); - amqp_basic_ack(pThreadInfo->sConsumeMQ.sMQConnectionState, 1, nDeliveryTag, 0); - WriteQueueLog(LogType_MQOut, LogLevel_Info, pThreadInfo->nThreadIndex, 'C', szReplyQueuename, "", szRecvUUIDString, nMessageLength, "%s", szMessageBuffer); - WriteLog(LogType_StandardOut, LogLevel_Info, "[Thread:%02d]MQ Data Consume[Data:%s] - ProcessTime:%d.%03ds!", pThreadInfo->nThreadIndex, szMessageBuffer, nDiffSec, nDiffMilliSec); - } while (bMessageMatch == false && bTimeout == false); - if (!bTimeout) - { -//printf("센터 전송 옴[%d]?\n", type); - // 전송 완료 처리 필요 - }else - { - memset(rtnData, 0x00, sizeof(rtnData)); - snprintf(rtnData, sizeof(rtnData), "%02x0002", cmd); - } - } - } - //sleep(1); // test -/* - } -*/ - CloseMQ(pThreadInfo->nThreadIndex, pThreadInfo->sPublishMQ.sMQConnectionState, &pThreadInfo->sPublishMQ.bMQConnection, &pThreadInfo->sPublishMQ.bMQChannelOpen, &pThreadInfo->sPublishMQ.sMQMutex); - CloseMQ(pThreadInfo->nThreadIndex, pThreadInfo->sConsumeMQ.sMQConnectionState, &pThreadInfo->sConsumeMQ.bMQConnection, &pThreadInfo->sConsumeMQ.bMQChannelOpen, &pThreadInfo->sConsumeMQ.sMQMutex); - pThreadInfo->nRunState = SOCK_THREAD_STATE_TERMINATED; -#if 1 //2019.07.12 메모리 증가로 Mutex Unlock 후 삭제 부분 추가 - pthread_mutex_destroy(&pThreadInfo->sContextMutex); - pthread_mutex_destroy(&pThreadInfo->sPublishMQ.sMQMutex); - pthread_mutex_destroy(&pThreadInfo->sConsumeMQ.sMQMutex); -#endif - SafeFree((void **)&pThreadInfo); - SafeFree((void **)&sMessageInfo.paMessageData); - SafeFree((void **)&pnThreadExitCode); - return 0; -} - -int GetSerialNo() -{ - int nSerialNo; - pthread_mutex_lock(&g_sSerialMutex); - nSerialNo = g_nSerailNo++; - pthread_mutex_unlock(&g_sSerialMutex); - return nSerialNo; -} diff --git a/GREEN_LANE/src/app/lane/rcv_function.c.241206 b/GREEN_LANE/src/app/lane/rcv_function.c.241206 deleted file mode 100644 index b24a75f..0000000 --- a/GREEN_LANE/src/app/lane/rcv_function.c.241206 +++ /dev/null @@ -1,2036 +0,0 @@ -/* -*======================================================================== -* -* SYSTEM : AZN_PLAZA_LANE APP -* FILE : rcv_function.c -* Progrmer : JBY (baarong@neighbor21.co.kr) -* Date : 2018.08.30 -* Modified : -* Remark : -* -*======================================================================== -*/ - -#include -#include -#include -#include -#include -#include - -#include "hi_ctrl.h" -#include "snd_rcv_knd.h" -#include "hi_packet_format.h" -#include "dir_path.h" -#include "file_lb.h" -#include "func_list.h" -#include "ipc_def.h" -#include "lb_func_list.h" -#include "iss_comp.h" -#include "path_def.h" - -extern int oracon_snd; - -#define ATT_A 0x01 /* 축적 DATA */ -#define ATT_P 0x02 /* 통행원시 저장 */ -#define ATT_T 0x04 /* 단말수신 저장 */ -#define ATT_M 0x08 /* 모니터링 */ -#define ATT_W 0x10 /* 근무자료처리로 전달 */ -#define ATT_R 0x20 /* 실시간 자료처리로 전달 */ -#define _DEV_ -extern int snd_snd_no_data() , rq_accuml_data_resnd() , snd_tbl_cmd(); -extern int snd_tm_dt() , snd_tbl_dt() , snd_tbl_dt_hpss(); -extern int confrm_reply_snd_hnd() , lane_cir_test() , snd_crd_no_srch_result(); -extern int lane_stat_info_chng() , wrk_stat_info_chng() , fsave_bkout_cnt_spec(); -extern int rq_lane_fw_data() , snd_open_key_rslt() , snd_welfare_crd_no_result(); - -extern int date_dt_init() , fsave_rprspec() , fsave_clslane_spec(); -extern int fsave_ofc_hnd() , fsave_hr_trf_spec() , fsave_5min_trf_spec(); -extern int fsave_tbl_dmp() , fsave_passraw() , fsave_trmn_rcv(); - -extern int fsave_ecrd_pay_dt() , fsave_ecrd_chrg_dt(); -extern int srch_rmotlane_stat() , fsave_mtnc_dt() , fsave_crd_dt(); - -extern int snd_non_pay_srch_rlt() , snd_crd_no_srch_rlt(), snd_imm_red_srch_rlt(); - -int rcv_rq_seq_no(), rcv_comm_continue_rq(), rcv_accuml_data_ok(); -int rcv_tbl_order(), rcv_lane_stat(), rcv_rpr_data(); -int rcv_close_pass(), rcv_wrk_strt(), rcv_hnd_data(); -int rcv_card_data(), rcv_wrk_end(), rcv_plz_line_reply(); -int remote_lane_stat_rlt(), rcv_non_pay_srch(), rcv_crd_srch(), rcv_refund_data(); - -static char *path; -int err_chk = 0; -int lst_rcv_acc_no; - -static struct { - int kind; /* DATA 종별 */ - uchar desc[50]; /* DATA 제목 */ - int attr; /* DATA ATTRIBUTE */ - int (*func[5])(); /* 처리 FUNCTION */ - /* func[0]() 수신처리 */ - /* func[1]() 상태처리 */ - /* func[2]() 상태처리 */ - /* func[3]() 저장처리 */ - /* func[4]() 응답처리 */ -} rcv_handle[31] = { - /*DATA 종별*/ /* DATA 제목 */ /*DATA ATTRIBUTE*/ /*수신처리*/ /*상태처리*/ /*상태처리*/ /*저장처리 */ /*응답처리*/ - { NS_RQ_SEQ_NO , "전송연번요구" , ATT_W, rcv_rq_seq_no, lane_stat_info_chng, NULL, NULL, snd_rq_seq_no }, - { NS_COMM_CONTINUE_RQ , "교신재개요구" , 0, rcv_comm_continue_rq, NULL, NULL, NULL, rq_accuml_data_resnd }, - { NS_ACCUML_DATA_OK , "축적데이터 전송완료" , 0, rcv_accuml_data_ok, NULL, NULL, NULL, NULL }, - { NS_TM_RQ , "시각요구" , 0, NULL, NULL, NULL, NULL, snd_tm_dt }, - { NS_CMD_REPLY , "지령응답" , 0, NULL, lane_stat_info_chng, NULL, NULL, NULL }, - { NS_TBL_ORDER , "테이블 요구" , 0, rcv_tbl_order, NULL, NULL, NULL, snd_tbl_dt }, - { NS_LANE_STAT , "차로상태" , ATT_W, rcv_lane_stat, lane_stat_info_chng, NULL, NULL, snd_tbl_cmd }, - { NS_RPR_DATA , "보수데이터" , ATT_A|ATT_W, rcv_rpr_data, lane_stat_info_chng, NULL, NULL, NULL }, - { NS_CLOSE_PASS , "야간계수 데이터" , ATT_A|ATT_W, rcv_close_pass, NULL, NULL, NULL, NULL }, - { NS_WRK_START , "근무개시보고" , ATT_A|ATT_P|ATT_T|ATT_M|ATT_W, rcv_wrk_strt, lane_stat_info_chng, wrk_stat_info_chng, NULL, NULL }, - { NS_HND_DATA , "처리 데이터" , ATT_A|ATT_P|ATT_T|ATT_M|ATT_W, rcv_hnd_data, NULL, NULL, NULL, NULL }, - { NS_CRD_HND_DATA , "카드처리 데이터" , ATT_A|ATT_P|ATT_T|ATT_M|ATT_W, rcv_card_data, NULL, NULL, NULL, NULL }, - { NS_WRK_END , "근무종료데이터" , ATT_A|ATT_P|ATT_T|ATT_M|ATT_W, rcv_wrk_end, lane_stat_info_chng, wrk_stat_info_chng, NULL, snd_tbl_cmd }, - { NS_DUMP_TBL , "테이블 덤프" , 0, NULL, NULL, NULL, NULL, confrm_reply_snd_hnd }, - { NS_LANE_LINE_TEST , "차로측기동회선테스트 테이터" , 0, NULL, NULL, NULL, NULL, lane_cir_test }, - { NS_PLZ_LINE_TEST_REPLY , "영업소측 기동회선테스트 테이터 응답" , 0, rcv_plz_line_reply, NULL, NULL, NULL, NULL }, - { NS_REMOTE_LANE_STAT_REPLY, "원격차로상태응답" , 0, remote_lane_stat_rlt, NULL, NULL, NULL, NULL }, - { NS_NON_PAY_SRCH , "미납정보조회" , ATT_W, NULL, NULL, NULL, NULL, snd_non_pay_srch_rlt }, - { NS_CRD_SRCH , "카드번호조회" , ATT_W, NULL, NULL, NULL, NULL, snd_crd_no_srch_rlt }, - { NS_IMMRED_SRCH , "면제감면정보조회" , ATT_W, NULL, NULL, NULL, NULL, snd_imm_red_srch_rlt }, - { NS_REFUND_DATA , "환불처리 데이터" , ATT_A|ATT_W, rcv_refund_data, NULL, NULL, NULL, NULL }, - { -1 , "" , 0, NULL, NULL, NULL, NULL, NULL } -}; - -/*=========================== FUNCTION LIST =================================*/ -/* recv_process() 하위차로에서 수신된 DATA FRAME 처리 MAIN FUNCTION */ -/* rcv_xxxxx() xxxxx FRAME DATA의 수신 처리 */ -/* chk_seq_no() 수신 전송연번의 CHECKING */ -/*===========================================================================*/ - -/* - *======================================================================== - * - * Function : recv_process() - * Progrmer : JBY (baarong@neighbor21.co.kr) - * Date : 2018.08.24 - * Modified : - * Remark : 차로와 통신에서 수신된 DATA 처리 - * - *=========================================================================== -*/ - -int recv_process(char *p) -{ - struct write_info wi; - char log_msg[128]; - int retc, ret_dt; - int ii, jj, backup_seq = 0; - int kk; - int chkdiv; - int ret; - - hi_comm_ctrl.be_stat_info = hi_comm_ctrl.now_stat_info; - - if(!(hi_comm_ctrl.now_stat_info & H_ACC_RESND)) - { - e_memcpy(hi_comm_ctrl.write_info.plz_id, hi_comm_ctrl.bas_tbl.plz_id); - } -//lane_log("수신데이터 종별[%x]\n", hi_comm_ctrl.rcv_ctrl.cmd); - /*************************************************/ - /* 수신 자료의 DATA 종별 및 처리 PROCEDURE CHECK */ - /*************************************************/ - for (ii = 0; rcv_handle[ii].kind != -1; ii++) - { - if ((int)hi_comm_ctrl.rcv_ctrl.cmd == rcv_handle[ii].kind) break; - } -#if 0 - for (kk = 0; web_rcv_handle[kk].kind != -1; kk++) - { - if ((int)hi_comm_ctrl.rcv_ctrl.cmd == web_rcv_handle[kk].kind) break; - } -#endif -//lane_log("recv 1[%x] [%x]\n", hi_comm_ctrl.rcv_ctrl.cmd, rcv_handle[ii].kind); - if (rcv_handle[ii].kind == -1) - { - sprintf(log_msg, "수신 DATA 종별(%02X) ERROR.", hi_comm_ctrl.rcv_ctrl.cmd); - lane_log("수신 DATA 종별(%02X) ERROR.", hi_comm_ctrl.rcv_ctrl.cmd); - err_log(log_msg, 0); - - return (-1); - } - - chkdiv = chk_seq_no(); -//lane_log("recv 2 [%d] \n", chkdiv); - /********************************************************/ - /* 전처리 : 1. 축적 DATA인 경우, 전송연번 CHECK */ - /* 2. 재송요구시 첫번째 DATA가 근무개시 DATA가 */ - /* 아닌 경우 ERROR 처리 */ - /********************************************************/ - if ((rcv_handle[ii].attr & ATT_A) && chkdiv != 0) - { - sprintf(log_msg, "축적 데이타 전송연번 오류(관리: %08X 수신=%08X)", - hi_comm_ctrl.write_info.rcv_snd_no, - hi_comm_ctrl.rcv_ctrl.snd_no); - lane_log(log_msg, "축적 데이타 전송연번 오류(관리: %08X 수신=%08X)", - hi_comm_ctrl.write_info.rcv_snd_no, - hi_comm_ctrl.rcv_ctrl.snd_no); - err_log(log_msg, 0); - - return (-1); /* 축적 DATA 전송연번 오류 */ - } -//lane_log("recv 3\n"); - if ((rcv_handle[ii].attr & ATT_A) && (hi_comm_ctrl.now_stat_info & (H_ACC_RESND|H_FRAME_WAIT)) == (H_ACC_RESND|H_FRAME_WAIT)) - { - lane_log(log_msg, "축적 데이타 관리 %04X 수신=%04X 수신 상태 = %04X", hi_comm_ctrl.write_info.rcv_snd_no, hi_comm_ctrl.rcv_ctrl.snd_no, hi_comm_ctrl.now_stat_info); - lane_log(log_msg, "축적 데이타 재전송중:0x0004, 축적재전송 1st FRAME 수신대기:0x0008"); - if (hi_comm_ctrl.rcv_ctrl.cmd == NS_ACCUML_DATA_OK) - { - sprintf(log_msg, "축적데이타 재전송 : 재전송 자료가 없습니다."); - lane_log("축적데이타 재전송 : 재전송 자료가 없습니다."); - err_log(log_msg, 0); - lcc_reply(LW_RESND_NO, 1, 1, log_msg); - hi_comm_ctrl.now_stat_info = 0; - return (-1); - } - else if (hi_comm_ctrl.rcv_ctrl.cmd == NS_WRK_START) - { - return (0); - } - hi_comm_ctrl.now_stat_info &= ~H_FRAME_WAIT; - lane_log(log_msg, "축적 데이타 관리 수신 상태 = %04X", hi_comm_ctrl.now_stat_info); - lane_log(log_msg, "축적 데이타 재전송중:0x0004, 축적재전송 1st FRAME 수신대기:0x0008"); - } -//lane_log("recv 4\n"); - /********************************************************/ - /* 재전송이 아닌 축적 DATA인 경우, 전송연번 저장 */ - /********************************************************/ - if ((rcv_handle[ii].attr & ATT_A) && !(hi_comm_ctrl.now_stat_info & H_ACC_RESND)) - { - backup_seq = hi_comm_ctrl.write_info.rcv_snd_no; - /* 중간에 데이터 장애로 누락 발생 시, 아래의 2개 값을 수정하면 해당 전송연번 다시 수신 가능 */ - hi_comm_ctrl.write_info.rcv_snd_no = hi_comm_ctrl.rcv_ctrl.snd_no; /* 최종수신 전송연번 */ - hi_comm_ctrl.lane_stat_info.lst_rev_snd_no = hi_comm_ctrl.rcv_ctrl.snd_no; /* 최종수신 전송연번 */ - hi_comm_ctrl.lane_stat_info.last_rcv_knd = hi_comm_ctrl.rcv_ctrl.cmd; /* 최종수신 DATA 종별 */ - } -//lane_log("recv 5\n"); - /********************************************************/ - /* DATA 종별에 따른 각 처리 함수를 순차적으로 호출 */ - /* 1. 모니터링 자료처리 */ - /* 2. 각 DATA 종별에 따른 처리 함수 호출 */ - /********************************************************/ - - ret_dt = 0; - if ((hi_comm_ctrl.now_stat_info & H_ERR_REST) || (hi_comm_ctrl.now_stat_info & H_ACC_RESND)) - ret_dt = get_data_time(hi_comm_ctrl.rcv_ctrl.buf, &wi); - - path = p; - - for (jj = 0; jj < 4 && ret_dt == 0; jj++) - { -//lane_log("recv 8[%d]\n", ii); - if (rcv_handle[ii].func[jj] == NULL) continue; -//lane_log("recv 9[%d]\n", jj); - retc = (*rcv_handle[ii].func[jj])(p); -//lane_log("recv 10[%d]\n", retc); - switch (retc) - { - case -1: /* ATT_A 축적 DATA ,H_ACC_RESND 0x0004 축적 DATA 재전송 중 */ - lane_log("RECEIVE PROC ERR [%d]\n", jj); - err_chk = 1; - if ((rcv_handle[ii].attr & ATT_A) && !(hi_comm_ctrl.now_stat_info & H_ACC_RESND)) - { - hi_comm_ctrl.write_info.rcv_snd_no = backup_seq; - hi_comm_ctrl.lane_stat_info.lst_rev_snd_no = backup_seq; - } - return (-1); - case -2: lane_log("RECEIVE PROC SKIP \n"); - return (0); - default: break; - } -#if 0 - if (web_rcv_handle[kk].func[jj] == NULL) continue; - retc = (*web_rcv_handle[kk].func[jj])(p); -#endif - } -//lane_log("recv 11[%d][%d]\n", ii, jj); - if (rcv_handle[ii].func[jj] != NULL) - { -//lane_log("수신처리 Start \n"); - hi_comm_ctrl.snd.len = (*rcv_handle[ii].func[jj])(1); -//lane_log("수신처리 [%d]\n", hi_comm_ctrl.snd.len); - /* 차로 상태응답 - 1.지령이 있으면 지령으로 응답처리 - 2.지령이 없으면 확인 응답처리 */ - lane_log("(rcv_function.cpp) hi_comm_ctrl.snd.len = %d\n", hi_comm_ctrl.snd.len); - - if(hi_comm_ctrl.snd.len == 0) - { -//lane_log("Chk [%x] [%x]\n", hi_comm_ctrl.rcv_ctrl.cmd, NS_LANE_STAT, NS_TBL_ORDER); - if(hi_comm_ctrl.rcv_ctrl.cmd == NS_LANE_STAT || hi_comm_ctrl.rcv_ctrl.cmd == NS_TBL_ORDER) - { - lane_log("(rcv_function.cpp) 확인응답 송신, hi_comm_ctrl.rcv_ctrl.cmd(%d)\n", hi_comm_ctrl.rcv_ctrl.cmd); - hi_comm_ctrl.snd.len = confrm_reply_snd_hnd(1); - } - - if(hi_comm_ctrl.rcv_ctrl.cmd == NS_WRK_END) - { - lane_log("보증전송연번 송신 확인[%02x]\n", hi_comm_ctrl.rcv_ctrl.cmd); - hi_comm_ctrl.snd.len = snd_warr_snd_no(0); - lane_comm_snd(); - } - } - - - } - - if (rcv_handle[ii].attr & ATT_T && ret_dt == 0) - { - ret = fsave_trmn_rcv(); /* 단말수신-F 저장 */ - - if(ret < 0) - { - lane_log("단말수신-F 저장 실패 ret = %d\n", ret); - return (-1); - } - } - - /* 이상복구 수순중 */ - if ((rcv_handle[ii].attr & ATT_A) && ((hi_comm_ctrl.now_stat_info & H_ERR_REST) || (hi_comm_ctrl.now_stat_info & H_ACC_RESND))) - { - hi_comm_ctrl.snd.len = confrm_reply_snd_hnd(1); - } -//lane_log("recv 13\n"); - /********************************************************/ - /* 축적 DATA 재전송요구시 수신 전송연번이 재전송요구 */ - /* 최종전송연번과 동일시 통신 단절후, 재개처리 */ - /********************************************************/ - if (hi_comm_ctrl.now_stat_info & H_ACC_RESND) - { - if (hi_comm_ctrl.rcv_ctrl.snd_no == hi_comm_ctrl.rtr.rq_resnd_endno || - hi_comm_ctrl.rcv_ctrl.cmd == NS_WRK_END) - { - sprintf(log_msg, "축적데이타 재전송 완료...."); - //lane_log("[%s]\n", log_msg); - //lane_log(log_msg, "축적데이타 재전송 완료...."); - err_log(log_msg, 0); - //lane_log("err_log 끝?\n"); - lcc_reply(LW_RESND_NO, 1, 1, log_msg); - hi_comm_ctrl.now_stat_info &= ~(H_ACC_RESND|H_FRAME_WAIT); - return (-1); - } - } -/* - if(rcv_handle[ii].kind == NS_ACCUML_DATA_OK && err_chk != 1 && hi_comm_ctrl.cday.tm_hour >= 21 || hi_comm_ctrl.cday.tm_hour < 7) - { - err_chk = 0; -lane_log("축적데이터 전송완료[%02d : %02d]\n", hi_comm_ctrl.cday.tm_hour, hi_comm_ctrl.cday.tm_min); - hi_comm_ctrl.warr_snd_no = lst_rcv_acc_no; - hi_comm_ctrl.snd.len = snd_warr_snd_no(0); - lane_comm_snd(); - } -*/ -//lane_log("recv 14\n"); - return (0); -} - -/* - *======================================================================== - * - * Function : rcv_rq_seq_no() - * Progrmer : JBY (baarong@neighbor21.co.kr) - * Date : 2018.08.28 - * Modified : - * Remark : 전송연번 요구 - * - *======================================================================== -*/ -int rcv_rq_seq_no() -{ - - struct rcv_lane_data rd; - struct hi_rq_seq_no *hrsn; - int ret; - char rtn[MAX_STRING_SIZE]; memset(rtn, 0x00, sizeof(rtn)); -//lane_log("rcv_rq1\n"); - hi_comm_ctrl.now_stat_info |= H_INIT; /* 초기화 */ -//lane_log("rcv_rq2\n"); - hi_comm_ctrl.write_info.con_stat = CONNECT_STAT; - -#if 0 - hrsn = (struct hi_rq_seq_no *)hi_comm_ctrl.rcv_ctrl.buf; - sprintf((char *)hi_comm_ctrl.write_info.year, "%04d", hi_comm_ctrl.cday.tm_year+1900); - sprintf((char *)hi_comm_ctrl.write_info.mon, "%02d", hi_comm_ctrl.cday.tm_mon+1); - sprintf((char *)hi_comm_ctrl.write_info.day, "%02d", hi_comm_ctrl.cday.tm_mday); - sprintf((char *)hi_comm_ctrl.write_info.hr, "%02d", hi_comm_ctrl.cday.tm_hour); - sprintf((char *)hi_comm_ctrl.write_info.min, "%02d", hi_comm_ctrl.cday.tm_min); - sprintf((char *)hi_comm_ctrl.write_info.sec, "%02d", hi_comm_ctrl.cday.tm_sec); - hi_comm_ctrl.write_info.knd = hi_comm_ctrl.rcv_ctrl.cmd; - sprintf((char *)hi_comm_ctrl.write_info.lane_no, "%02d", hi_comm_ctrl.lane_no); - - memset(&rd, 0x00, sizeof(struct rcv_lane_data)); - sprintf((char *)rd.kind, "%02x", hi_comm_ctrl.rcv_ctrl.cmd); - sprintf((char *)rd.plz_id, "%.2s", hi_comm_ctrl.write_info.plz_id); - sprintf((char *)rd.wrk_datetm, "%04d%02d%02d%02d%02d%02d", - hi_comm_ctrl.cday.tm_year+1900, hi_comm_ctrl.cday.tm_mon+1, hi_comm_ctrl.cday.tm_mday, - hi_comm_ctrl.cday.tm_hour, hi_comm_ctrl.cday.tm_min, hi_comm_ctrl.cday.tm_sec); - rd.io_div = lb_data2atoi((char *)hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div, 2) + '0'; - sprintf((char *)rd.lane_no, "%02d", hi_comm_ctrl.lane_no); - sprintf((char *)rd.wrk_no, "%02d00", hi_comm_ctrl.lane_no); -//lane_log("====전송연번요구 일자[%.14s]\n", rd.wrk_datetm); - if(lb_data2atoi(hi_comm_ctrl.write_info.wrkr_no, 4) == 0) - { - if(hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].lane_type[1] - '0' == 2) - sprintf((char *)rd.wrkr_no, "ETCS"); - else if(hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].lane_type[1] - '0' == 4) - sprintf((char *)rd.wrkr_no, "MLFF"); - else - sprintf((char *)rd.wrkr_no, "0000"); - }else - sprintf((char *)rd.wrkr_no, "%.4s ", hi_comm_ctrl.write_info.wrkr_no); - - rd.con_stat = CONNECT_STAT;; - sprintf((char *)rd.rcv_snd_no, "%010d", hi_comm_ctrl.rcv_ctrl.snd_no); - sprintf((char *)rd.st_snd_no, "%010d", hi_comm_ctrl.write_info.strt_snd_no); - sprintf((char *)rd.ed_snd_no, "%010d", hi_comm_ctrl.write_info.end_snd_no); - sprintf((char *)rd.buf, "%s", (char *)hrsn); - - ret = MessageSender(hi_comm_ctrl.rcv_ctrl.cmd, (char *)&rd, path, rtn); - - if(ret < 0) - { - lane_log("(rcv_function.cpp) 전송연번요구[%.2s][%.4s] 처리실패\n", hi_comm_ctrl.write_info.plz_id, hi_comm_ctrl.write_info.wrk_no); - return(-1); - } - -//lane_log("전송연번 요구[%s]\n", rtn); - hi_comm_ctrl.snd.len = snd_rq_seq_no(rtn);/* 전송연번 요청 결과 송신 */ - - lcc_reply(LW_RQ_SEQ_NO, 0, 1, "전송연번 전송이 완료 되었읍니다"); -#endif -//lane_log("rcv_rq3\n"); - return (0); -} - -/* - *======================================================================== - * - * Function : rcv_comm_continue_rq() - * Progrmer : JBY (baarong@neighbor21.co.kr) - * Date : 2018.08.28 - * Modified : - * Remark : 교신재개요구 수신 처리 - * - *======================================================================== -*/ -int rcv_comm_continue_rq() -{ - struct rcv_lane_data rd; - struct hi_comm_continue_rq *hccr; - struct rq_warr_info *rq_no; - char tmp[10]; memset(tmp, 0x00, sizeof(tmp)); - char rtn[MAX_STRING_SIZE]; memset(rtn, 0x00, sizeof(rtn)); - int ret; - - hi_comm_ctrl.now_stat_info |= H_ERR_REST; /* 이상복구 수순 */ - if (hi_comm_ctrl.now_stat_info & H_ACC_RESND) /* 축적자료 재전송중 ? */ - hi_comm_ctrl.now_stat_info |= H_FRAME_WAIT; /* 축적자료 1st DATA 대기중 */ - hi_comm_ctrl.now_stat_info |= H_INIT; /* 초기화 */ -#if 0 - hccr = (struct hi_rq_seq_no *)hi_comm_ctrl.rcv_ctrl.buf; - - memset(&rd, 0x00, sizeof(struct rcv_lane_data)); - sprintf((char *)rd.kind, "%02x", hi_comm_ctrl.rcv_ctrl.cmd); - sprintf((char *)rd.plz_id, "%.2s", hi_comm_ctrl.write_info.plz_id); - sprintf((char *)rd.wrk_datetm, "%04d%02d%02d%02d%02d%02d", - hi_comm_ctrl.cday.tm_year+1900, hi_comm_ctrl.cday.tm_mon+1, hi_comm_ctrl.cday.tm_mday, - hi_comm_ctrl.cday.tm_hour, hi_comm_ctrl.cday.tm_min, hi_comm_ctrl.cday.tm_sec); - rd.io_div = lb_data2atoi((char *)hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div, 2) + '0'; - sprintf((char *)rd.lane_no, "%02d", hi_comm_ctrl.lane_no); - sprintf((char *)rd.wrk_no, "%02d00", hi_comm_ctrl.lane_no); - - if(lb_data2atoi(hi_comm_ctrl.write_info.wrkr_no, 4) == 0) - { - if(hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].lane_type[1] - '0' == 2) - sprintf((char *)rd.wrkr_no, "ETCS"); - else if(hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].lane_type[1] - '0' == 4) - sprintf((char *)rd.wrkr_no, "MLFF"); - else - sprintf((char *)rd.wrkr_no, "0000"); - }else - sprintf((char *)rd.wrkr_no, "%.4s ", hi_comm_ctrl.write_info.wrkr_no); - - rd.con_stat = CONNECT_STAT;; - sprintf((char *)rd.rcv_snd_no, "%010d", hi_comm_ctrl.rcv_ctrl.snd_no); - sprintf((char *)rd.st_snd_no, "%010d", hi_comm_ctrl.write_info.strt_snd_no); - sprintf((char *)rd.ed_snd_no, "%010d", hi_comm_ctrl.write_info.end_snd_no); - sprintf((char *)rd.buf, "%s", (char *)hccr); - - ret = MessageSender(hi_comm_ctrl.rcv_ctrl.cmd, (char *)&rd, path, rtn); - - if(ret < 0) - { - lane_log("(rcv_function.cpp) 교신재개요구[%.2s]처리실패\n", hi_comm_ctrl.write_info.plz_id); - return(-1); - } - - rq_no = rtn; -//lane_log("교신재개요구 수신 데이터[%s]\n", rtn); - sprintf((char *)hi_comm_ctrl.rtr.wrk_year, "%.4s", rq_no->wrk_date); - sprintf((char *)hi_comm_ctrl.rtr.wrk_mon, "%.2s", rq_no->wrk_date+4); - sprintf((char *)hi_comm_ctrl.rtr.wrk_day, "%.2s", rq_no->wrk_date+6); - sprintf(tmp, "%.8s%c", rq_no->rq_seq_no, '\0'); - hi_comm_ctrl.write_info.rcv_snd_no = strtoul(tmp, NULL, 16); - hi_comm_ctrl.rtr.rq_resnd_strtno = strtoul(tmp, NULL, 16); - //hi_comm_ctrl.sndrq_sndno = strtoul(tmp, NULL, 16); - sprintf(tmp, "%.8s%c", rq_no->warr_snd_no, '\0'); - hi_comm_ctrl.warr_snd_no = strtoul(tmp, NULL, 16); -//lane_log("수신받은 최종 수신 연번[%08x][%.8s]\n", hi_comm_ctrl.write_info.rcv_snd_no, rq_no->wrk_date); -#endif - return (0); -} - -/* - *======================================================================== - * - * Function : rcv_accuml_data_ok() - * Progrmer : JBY (baarong@neighbor21.co.kr) - * Date : 2018.08.28 - * Modified : - * Remark : 축적 DATA 전송완료 수신 처리 - * - *======================================================================== -*/ -int rcv_accuml_data_ok() -{ - hi_comm_ctrl.now_stat_info &= ~H_ERR_REST; /* 이상복구 수순 */ - if (hi_comm_ctrl.now_stat_info & H_ACC_RESND) /* 축적자료 재전송중 ? */ - { -//lane_log("############# 축적데이터 전송 완료 1 [%d]\n", lst_rcv_acc_no); - hi_comm_ctrl.now_stat_info &= ~H_ACC_RESND; /* 축적자료 재전송요구 CLR */ - hi_comm_ctrl.now_stat_info &= ~H_FRAME_WAIT; /* 축적자료 1st DATA 대기중 */ - lcc_reply(LW_RESND_NO, 0, 1, "축적자료 재수신이 완료 되었읍니다"); - } -//lane_log("############# 축적데이터 전송 완료 2 [%d]\n", lst_rcv_acc_no); -//lane_log("############# 축적데이터 전송 완료 3 [%02d]\n", hi_comm_ctrl.cday.tm_hour); - if(hi_comm_ctrl.cday.tm_hour >= 21 && !(hi_comm_ctrl.now_stat_info & H_ERR_REST) || hi_comm_ctrl.cday.tm_hour < 7 && !(hi_comm_ctrl.now_stat_info & H_ERR_REST)) - { - //lane_log("############# 축적데이터 전송 완료 4 [%02d]\n", hi_comm_ctrl.cday.tm_hour); -/* 업무 시간 외에 축적데이터 전송 완료 시, 보증전송연번 변경 */ - hi_comm_ctrl.warr_snd_no = lst_rcv_acc_no; - } - return (0); -} - -/* - *======================================================================== - * - * Function : rcv_tbl_order() - * Progrmer : JBY (baarong@neighbor21.co.kr) - * Date : 2018.08.28 - * Modified : - * Remark : TABLE 요구 DATA 처리 - * - *======================================================================== -*/ -int rcv_tbl_order() -{ - struct hi_tbl_order *hto; - char tmp[10]; memset(tmp, 0x00, sizeof(tmp)); - - hto = (struct hi_tbl_order *)hi_comm_ctrl.rcv_ctrl.buf; - - sprintf(tmp, "%.8s%c", hto->frame_no, '\0'); - - if (strtoul(tmp, NULL, 16) != FRAME_LAST_I) /* 마지막 FRAME */ - return (0); - - if (lb_data2atoi((char *)hto->tbl_typ, 2) != TB_LAST) /* 최종 TABLE ? */ - return (0); - - /* TABLE 전송 완료 */ - hi_comm_ctrl.now_stat_info &= ~H_INIT; - - return (0); -} - -/* - *======================================================================== - * - * Function : rcv_lane_stat() - * Progrmer : JBY (baarong@neighbor21.co.kr) - * Date : 2018.08.28 - * Modified : - * Remark : 차로상태정보 수신 처리 - * - *======================================================================== -*/ -int rcv_lane_stat(int rsp) -{ - struct hi_lane_stat *hls; - struct rcv_lane_data rd; -#if 0 - struct write_info wi; -#endif - int ret = 0, ii, jj; - static time_t c_clock = 0; - struct tm *t; - - char rtn[MAX_STRING_SIZE]; memset(rtn, 0x00, sizeof(rtn)); - char bak[MAX_STRING_SIZE]; memset(bak, 0x00, sizeof(bak)); - char date[8+1]; - char tmp[10]; memset(tmp, 0x00, sizeof(tmp)); - - struct { - uchar plz_id[2]; - int lane_no; - uchar anpr[10]; - } anpr_id[20] = - { - {"01", 1, "A20201107"}, - {"01", 2, "A20201108"}, - {"01", 3, "A20201109"}, - {"01", 4, "A20211110"}, - {"01", 5, "A20201111"}, - {"01", 6, "A20211112"}, - {"01", 7, "A20201113"}, - {"01", 8, "A20211114"}, - {"03", 1, "A20203115"}, - {"03", 2, "A20213116"}, - {"03", 3, "A10103117"}, - {"03", 4, "A10103118"}, - {"03", 5, "CLOSE "}, - {"03", 6, "CLOSE "}, - {"03", 7, "A10103119"}, - {"03", 8, "A10103120"}, - {"03", 9, "A10103121"}, - {"03", 10, "A10103122"}, - {"00", -1, ""} - }; - - /******************************************************/ - /* 기초사항 TABLE의 수정유무 CHECK, 최신정보로 READ */ - /******************************************************/ -//lane_log("PLZ_ID[%.2s] [%.2s]\n", hi_comm_ctrl.write_info.plz_id, hi_comm_ctrl.lane_stat_info.plz_id); -if(strncmp(hi_comm_ctrl.write_info.plz_id, PLZ_CODE2, 2) != 0) -{ - //lane_log("######## PLZ_ID[%.2s] [%.2s]\n", hi_comm_ctrl.write_info.plz_id, hi_comm_ctrl.lane_stat_info.plz_id); - snprintf(hi_comm_ctrl.write_info.plz_id, 2+1, "%.2s", PLZ_CODE2); -} - - lb_freadx(&hi_comm_ctrl.write_info, FNO_BASICTBL, &hi_comm_ctrl.bas_tbl, FFIRST); -//lane_log("(rcv_function.cpp) 차로상태정보 영업소ID : %.2s\n", hi_comm_ctrl.bas_tbl.plz_id); -//lane_log("(rcv_function.cpp) 차로상태정보 차로번호[%.8s] : %2d\n",&hi_comm_ctrl.write_info.year[0], hi_comm_ctrl.lane_no); - - hls = (struct hi_lane_stat *)hi_comm_ctrl.rcv_ctrl.buf; - - sprintf((char *)hi_comm_ctrl.write_info.year, "%04d", hi_comm_ctrl.cday.tm_year+1900); - sprintf((char *)hi_comm_ctrl.write_info.mon, "%02d", hi_comm_ctrl.cday.tm_mon+1); - sprintf((char *)hi_comm_ctrl.write_info.day, "%02d", hi_comm_ctrl.cday.tm_mday); - sprintf((char *)hi_comm_ctrl.write_info.hr, "%02d", hi_comm_ctrl.cday.tm_hour); - sprintf((char *)hi_comm_ctrl.write_info.min, "%02d", hi_comm_ctrl.cday.tm_min); - sprintf((char *)hi_comm_ctrl.write_info.sec, "%02d", hi_comm_ctrl.cday.tm_sec); - hi_comm_ctrl.write_info.knd = hi_comm_ctrl.rcv_ctrl.cmd; - sprintf(tmp, "%.8s%c", hls->seq_no, '\0'); - - for(jj = 0; jj < 20; jj++) - { - if(anpr_id[jj].lane_no == -1) - break; - - if(strncmp(anpr_id[jj].plz_id, hi_comm_ctrl.write_info.plz_id, 2) == 0 && anpr_id[jj].lane_no == hi_comm_ctrl.lane_no) - break; - } - - hi_comm_ctrl.write_info.rcv_snd_no = strtoul(tmp, NULL, 16); - hi_comm_ctrl.write_info.con_stat = 'C'; -//차로상태정보 저장 - hi_comm_ctrl.lane_stat_info.mchi_stat0 = hls->mchi_stat[0]; - hi_comm_ctrl.lane_stat_info.mchi_stat1 = hls->mchi_stat[1]; - hi_comm_ctrl.lane_stat_info.mchi_stat2 = hls->mchi_stat[2]; - hi_comm_ctrl.lane_stat_info.mchi_stat3 = hls->mchi_stat[3]; - hi_comm_ctrl.lane_stat_info.mchi_stat4 = hls->mchi_stat[4]; - hi_comm_ctrl.lane_stat_info.mchi_stat5 = hls->mchi_stat[5]; - hi_comm_ctrl.lane_stat_info.mchi_stat6 = hls->mchi_stat[6]; - hi_comm_ctrl.lane_stat_info.mchi_stat7 = hls->mchi_stat[7]; - - memset(tmp, 0x00, sizeof(tmp)); - sprintf(tmp, "%.8s%c", hls->bl_seq_no, '\0'); - hi_comm_ctrl.lane_stat_info.bl_lst_hnd_no = strtoul(tmp, NULL, 16); - memset(tmp, 0x00, sizeof(tmp)); - sprintf(tmp, "%.8s%c", hls->bef_seq_no, '\0'); - hi_comm_ctrl.lane_stat_info.bef_lst_hnd_no = strtoul(tmp, NULL, 16); - memset(tmp, 0x00, sizeof(tmp)); - sprintf(tmp, "%.8s%c", hls->imm_carno_seq_no, '\0'); - hi_comm_ctrl.lane_stat_info.imm_lst_hnd_no = strtoul(tmp, NULL, 16); - memset(tmp, 0x00, sizeof(tmp)); - sprintf(tmp, "%.8s%c", hls->rfid_seq_no, '\0'); - hi_comm_ctrl.lane_stat_info.rfid_lst_hnd_no = strtoul(tmp, NULL, 16); - memset(tmp, 0x00, sizeof(tmp)); - sprintf(tmp, "%.8s%c", hls->red_carno_seq_no, '\0'); - hi_comm_ctrl.lane_stat_info.red_lst_hnd_no = strtoul(tmp, NULL, 16); - - hi_comm_ctrl.lane_stat_info.comm_stat = CONNECT_STAT; - - for(ii = 0; ii < 20; ii++) - { - hi_comm_ctrl.lane_stat_info.tbl_stat[ii][0] = lb_data2atoi(hls->tbl_stat[ii].rvs_no, 2); - hi_comm_ctrl.lane_stat_info.tbl_stat[ii][1] = hls->tbl_stat[ii].stat; - } -#if 0 -//차로상태정보 저장 끝 - memset(&rd, 0x20, sizeof(struct rcv_lane_data)); - sprintf((char *)rd.kind, "%02x", hi_comm_ctrl.rcv_ctrl.cmd); - sprintf((char *)rd.plz_id, "%.2s", hi_comm_ctrl.write_info.plz_id); - sprintf((char *)rd.wrk_datetm, "%04d%02d%02d%02d%02d%02d", - hi_comm_ctrl.cday.tm_year+1900, hi_comm_ctrl.cday.tm_mon+1, hi_comm_ctrl.cday.tm_mday, - hi_comm_ctrl.cday.tm_hour, hi_comm_ctrl.cday.tm_min, hi_comm_ctrl.cday.tm_sec); - rd.io_div = lb_data2atoi((char *)hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div, 2) + '0'; - sprintf((char *)rd.lane_no, "%02d", hi_comm_ctrl.lane_no); - sprintf((char *)rd.wrk_no, "%.4s", hi_comm_ctrl.write_info.wrk_no); - - if(lb_data2atoi(hi_comm_ctrl.write_info.wrkr_no, 4) == 0) - { - if(hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div[1] - '0' == 1) - sprintf((char *)rd.wrkr_no, "SYSI "); - else if(hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div[1] - '0' == 2) - sprintf((char *)rd.wrkr_no, "SYSO"); - else - sprintf((char *)rd.wrkr_no, "0000"); - }else - sprintf((char *)rd.wrkr_no, "%.4s ", hi_comm_ctrl.write_info.wrkr_no); - -//lane_log("======차로상태정보 수신 메시지 확인[%08x]\n", hi_comm_ctrl.rcv_ctrl.snd_no); -//lane_log("차로상태 연결 확인 [%c]\n", hi_comm_ctrl.lane_stat_info.comm_stat); - rd.con_stat = hi_comm_ctrl.lane_stat_info.comm_stat; - - sprintf((char *)rd.rcv_snd_no, "%010d", hi_comm_ctrl.rcv_ctrl.snd_no); - sprintf((char *)rd.st_snd_no, "%010d", hi_comm_ctrl.write_info.strt_snd_no); - sprintf((char *)rd.ed_snd_no, "%010d", hi_comm_ctrl.write_info.end_snd_no); - sprintf((char *)rd.buf, "%s", (char *)hls); - //lane_log("###### 차로상태정보[%s]\n", rd.buf); -#else - sprintf((char *)bak, "%s%04d%02d%02d%02d%02d%02d%c%-4s%c%c%c", anpr_id[jj].anpr, - hi_comm_ctrl.cday.tm_year+1900, hi_comm_ctrl.cday.tm_mon+1, hi_comm_ctrl.cday.tm_mday, - hi_comm_ctrl.cday.tm_hour, hi_comm_ctrl.cday.tm_min, hi_comm_ctrl.cday.tm_sec, - hls->anpr_cam, hls->anpr_tempa, hls->anpr_door, hls->anpr_sd, '\0'); -#endif -#if 0 -//lane_log("차로상태 송신[%s]\n", bak); - ret = MessageSender(hi_comm_ctrl.rcv_ctrl.cmd, (char *)&bak, path, rtn); -//lane_log("DB처리 결과(MQ) [%d]\n", ret); - - if(ret < 0) - { - lane_log("(rcv_function.cpp) 차로상태정보[%.2s][%.4s] 처리실패\n", hi_comm_ctrl.write_info.plz_id, hi_comm_ctrl.write_info.wrk_no); - //return(-1); - } -#endif -//lane_log("차로상태 RET [%d]\n", ret); - hi_comm_ctrl.now_stat_info &= ~H_INIT; - - c_clock = hi_comm_ctrl.time; - t = localtime(&c_clock); - if( t->tm_hour == 00 && t->tm_min == 00 ) - { -//lane_log("Time Check In "); - sprintf(date, "%04d%02d%02d", t->tm_year+1900, t->tm_mon+1, t->tm_mday); - //log_open(date); - //packet_open(date); - -//lane_log("보증지시 LANE_STAT Go [%02d : %02d : %02d]\n", t->tm_hour, t->tm_min, t->tm_sec); - hi_comm_ctrl.warr_snd_no = lst_rcv_acc_no; - //hi_comm_ctrl.warr_snd_no = hi_comm_ctrl.lane_stat_info.lst_rev_snd_no; - hi_comm_ctrl.snd.len = snd_warr_snd_no(0); - lane_comm_snd(); - } - -//lane_log("차로상태정보 끝\n"); - return 0; -} - -/* - *======================================================================== - * - * Function : rcv_rpr_data() - * Progrmer : JBY (baarong@neighbor21.co.kr) - * Date : 2018.08.28 - * Modified : - * Remark : 보수 DATA 수신처리 - * - *======================================================================== -*/ -int rcv_rpr_data() -{ - struct rcv_lane_data rd; -#if 0 - struct write_info wi; -#endif - struct hi_rpr_data *hrd; - int ret = 0; - char rtn[MAX_STRING_SIZE]; memset(rtn, 0x00, sizeof(rtn)); - char tmp[10]; memset(tmp, 0x00, sizeof(tmp)); - - hrd = (struct hi_rpr_data *)hi_comm_ctrl.rcv_ctrl.buf; - memcpy(hi_comm_ctrl.write_info.year, &hrd->year, 4); - memcpy(hi_comm_ctrl.write_info.mon, &hrd->month, 2); - memcpy(hi_comm_ctrl.write_info.day, &hrd->day, 2); - memcpy(hi_comm_ctrl.write_info.hr, &hrd->hour, 2); - memcpy(hi_comm_ctrl.write_info.min, &hrd->min, 2); - memcpy(hi_comm_ctrl.write_info.sec, &hrd->sec, 2); - - hi_comm_ctrl.write_info.knd = hi_comm_ctrl.rcv_ctrl.cmd; - - if(memcmp(hrd->wrk_no, "0000", 4) == 0) - memcpy(hi_comm_ctrl.write_info.wrk_no, hrd->terminal_no, sizeof(hi_comm_ctrl.write_info.wrk_no)); - - sprintf(tmp, "%.8s%c", hrd->seq_no, '\0'); - hi_comm_ctrl.write_info.rcv_snd_no = strtoul(tmp, NULL, 16); - hi_comm_ctrl.lane_stat_info.lst_rev_snd_no = strtoul(tmp, NULL, 16); - -#if 0 - memset(&rd, 0x20, sizeof(struct rcv_lane_data)); - sprintf((char *)rd.kind, "%02x", hi_comm_ctrl.rcv_ctrl.cmd); - sprintf((char *)rd.plz_id, "%.2s", hi_comm_ctrl.bas_tbl.plz_id); - sprintf((char *)rd.wrk_datetm, "%04d%02d%02d%02d%02d%02d", - hi_comm_ctrl.cday.tm_year+1900, hi_comm_ctrl.cday.tm_mon+1, hi_comm_ctrl.cday.tm_mday, - hi_comm_ctrl.cday.tm_hour, hi_comm_ctrl.cday.tm_min, hi_comm_ctrl.cday.tm_sec); - rd.io_div = lb_data2atoi((char *)hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div, 2) + '0'; - sprintf((char *)rd.lane_no, "%02d", hi_comm_ctrl.lane_no); - sprintf((char *)rd.wrk_no, "%.4s", hi_comm_ctrl.write_info.wrk_no); - - if(lb_data2atoi(hi_comm_ctrl.write_info.wrkr_no, 4) == 0) - { - if(hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div[1] - '0' == 1) - sprintf((char *)rd.wrkr_no, "SYSI"); - else if(hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div[1] - '0' == 2) - sprintf((char *)rd.wrkr_no, "SYSO"); - else - sprintf((char *)rd.wrkr_no, "0000"); - }else - sprintf((char *)rd.wrkr_no, "%.4s", hi_comm_ctrl.write_info.wrkr_no); - - rd.con_stat = CONNECT_STAT;; - sprintf((char *)rd.rcv_snd_no, "%010d", hi_comm_ctrl.rcv_ctrl.snd_no); - sprintf((char *)rd.st_snd_no, "%010d", hi_comm_ctrl.write_info.strt_snd_no); - sprintf((char *)rd.ed_snd_no, "%010d", hi_comm_ctrl.write_info.end_snd_no); - sprintf((char *)rd.buf, "%s", (char *)hrd); - - ret = MessageSender(hi_comm_ctrl.rcv_ctrl.cmd, (char *)&rd, path, rtn); - - if(ret < 0) - { - lane_log("(rcv_function.cpp) 보수처리[%.2s][%.4s] 처리실패\n", hi_comm_ctrl.write_info.plz_id, hi_comm_ctrl.write_info.wrk_no); - return(-1); - } -#endif - if(ret == 0) - { - lst_rcv_acc_no = strtoul(tmp, NULL, 16); - } - - return (0); -} - -/* - *======================================================================== - * - * Function : rcv_close_pass() - * Progrmer : JBY (baarong@neighbor21.co.kr) - * Date : 2019.05.12 - * Modified : - * Remark : 야간계수 통행 DATA - * - *======================================================================== -*/ -int rcv_close_pass() -{ - struct rcv_lane_data rd; - struct write_info wi; - struct hi_close_pass *hclp; - int ret, retw; - char rtn[MAX_STRING_SIZE]; memset(rtn, 0x00, sizeof(rtn)); - char bak[MAX_STRING_SIZE]; memset(bak, 0x00, sizeof(bak)); - char tmp[10]; memset(tmp, 0x00, sizeof(tmp)); - char mCarNo[3+1]; - - hclp = (struct hi_close_pass *)hi_comm_ctrl.rcv_ctrl.buf; - e_memcpy(hi_comm_ctrl.write_info.year, hclp->year); - e_memcpy(hi_comm_ctrl.write_info.mon, hclp->month); - e_memcpy(hi_comm_ctrl.write_info.day, hclp->day); - e_memcpy(hi_comm_ctrl.write_info.hr, hclp->hour); - e_memcpy(hi_comm_ctrl.write_info.min, hclp->min); - e_memcpy(hi_comm_ctrl.write_info.sec, hclp->sec); - - hi_comm_ctrl.write_info.knd = hi_comm_ctrl.rcv_ctrl.cmd; - sprintf(tmp, "%.8s%c", hclp->seq_no, '\0'); - hi_comm_ctrl.write_info.rcv_snd_no = strtoul(tmp, NULL, 16); - hi_comm_ctrl.lane_stat_info.lst_rev_snd_no = strtoul(tmp, NULL, 16); - sprintf(wi.plz_id, "%.2s", PLZ_CODE2); - lb_freadx(&wi, FNO_BASICTBL, &hi_comm_ctrl.bas_tbl, FFIRST); - memset(&rd, 0x20, sizeof(struct rcv_lane_data)); - sprintf((char *)rd.kind, "%02x", hi_comm_ctrl.rcv_ctrl.cmd); - sprintf((char *)rd.plz_id, "%.2s", hi_comm_ctrl.bas_tbl.plz_id); - sprintf((char *)rd.wrk_datetm, "%.4s%.2s%.2s%.2s%.2s%.2s", - hi_comm_ctrl.write_info.year, hi_comm_ctrl.write_info.mon, hi_comm_ctrl.write_info.day, - hi_comm_ctrl.write_info.hr, hi_comm_ctrl.write_info.min, hi_comm_ctrl.write_info.sec); - rd.io_div = lb_data2atoi((char *)hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div, 2) + '0'; - sprintf((char *)rd.lane_no, "%02d", hi_comm_ctrl.lane_no); - sprintf((char *)rd.wrk_no, "%.4s", hi_comm_ctrl.write_info.wrk_no); - if(strlen(rd.wrk_no) == 0) - sprintf((char *)rd.wrk_no, "%.2s00", rd.lane_no); - - if(lb_data2atoi(hi_comm_ctrl.write_info.wrkr_no, 4) == 0) - { - if(hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div[1] - '0' == 1) - sprintf((char *)rd.wrkr_no, "SYSI"); - else if(hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div[1] - '0' == 2) - sprintf((char *)rd.wrkr_no, "SYSO"); - else - sprintf((char *)rd.wrkr_no, "0000"); - }else - sprintf((char *)rd.wrkr_no, "%.4s", hi_comm_ctrl.write_info.wrkr_no); - - rd.con_stat = CONNECT_STAT;; - sprintf((char *)rd.rcv_snd_no, "%010d", hi_comm_ctrl.rcv_ctrl.snd_no); - sprintf((char *)rd.st_snd_no, "%010d", hi_comm_ctrl.write_info.strt_snd_no); - sprintf((char *)rd.ed_snd_no, "%010d", hi_comm_ctrl.write_info.end_snd_no); - sprintf((char *)bak, "%.8s%.2s%.8s%.2s%.6s%.4s%.2s%.2s%.2s%.2s%.2s%c%.2s%c%c%-16s%.4s%.4s%.4s%.4s", - hclp->seq_no, hclp->kind, hclp->wrk_date, hclp->lane_no, hclp->serial_no, hclp->year, hclp->month, hclp->day, - hclp->hour, hclp->min, hclp->sec, hclp->io_div, hclp->plz_id, hclp->car_kind, hclp->image_yn, - hclp->car_no, hclp->x_point, hclp->y_point, hclp->img_width, hclp->img_heigh); - //sprintf((char *)rd.buf, "%s", (char *)hclp); - snprintf((char *)rd.buf, strlen(bak)+1, "%s", bak); - - ret = MessageSender(hi_comm_ctrl.rcv_ctrl.cmd, (char *)&rd, path, rtn); - - if(ret < 0) - { - lane_log("(rcv_function.cpp) 야간계수[%.2s][%.4s] 처리실패\n", hi_comm_ctrl.write_info.plz_id, hi_comm_ctrl.write_info.wrk_no); - return(-1); - } -#if 0 - memset(bak, 0x00, sizeof(bak)); - - //RemoveTerminatedThread(); - - sprintf((char *)bak, "%.2s%.2s%.4s%.2s%.2s%.2s%.2s%.2s%.6s%-16s%c%c%c", - hclp->plz_id, hclp->lane_no, hclp->year, hclp->month, hclp->day, hclp->hour, hclp->min, hclp->sec, - hclp->serial_no, hclp->car_no, hclp->car_kind, hclp->io_div, '\0'); - -//lane_log("야간계수 Web 송신[%s]\n", bak); - retw = MessageSender(NS_WEB_CLOSE_PASS, (char *)&bak, path, rtn); - //usleep(300000); - - if(retw < 0) - { - lane_log("(rcv_function.cpp) Web 야간계수데이터[%.2s][%.4s] 처리실패\n", hi_comm_ctrl.write_info.plz_id, hi_comm_ctrl.write_info.wrk_no); - } -#endif - if(ret == 0) - { - lst_rcv_acc_no = strtoul(tmp, NULL, 16); - } -#ifdef _DEV_ - //장애 대응을 위한 처리자료 파일화 - char queue_d[128]; memset(queue_d, 0x00, sizeof(queue_d)); - char queue_f[128]; memset(queue_f, 0x00, sizeof(queue_f)); - char back_car[128]; memset(back_car, 0x00, sizeof(back_car)); - int div_carkind; - FILE *backup_f; - sprintf(queue_d, "%s/%.8s%c", LOG_DIR, rd.wrk_datetm, '\0'); - mkdir(queue_d,0755); - sprintf(queue_f, "%s/queue%.2s%.2s.log", queue_d, rd.plz_id, rd.lane_no); -/* - div_carkind = hclp->car_kind - '0'; - sprintf(back_car, "%.16s", hclp->car_no); - del_space(back_car); - - if(strlen(back_car) == 0) - sprintf(back_car, "????????????"); - else - div_carkind = chg_car_kind(back_car, hclp->car_kind); -*/ - backup_f = fopen(queue_f, "a+t"); - fprintf(backup_f, "%.2s%.2s%.2s|%.2s%.2s%.14s%c%.2s%.4s%.4s%c%.10s%.10s%.10s%s\n", - hclp->hour, hclp->min, hclp->sec, rd.kind, rd.plz_id, rd.wrk_datetm, rd.io_div, rd.lane_no, rd.wrk_no, rd.wrkr_no, rd.con_stat, rd.rcv_snd_no, rd.st_snd_no, rd.ed_snd_no, rd.buf); -/* - fprintf(backup_f, "INSERT INTO DAY_TRAFFIC_INFO(FARE_OFFICE_ID, BOOTH_ID, PASS_DATE, PASS_TIME, PASS_SEQNO, CAR_NO, CARS_TYPE_ID, IN_OUT_KBN, CREATE_DATE, CREATER, UPDATE_DATE, UPDATER) VALUES ('%.2s','%.2s','%.4s%.2s%.2s','%.2s%.2s%.2s',%.6s,'%s','%s','%c',sysdate,'system',sysdate,'system');\n", - rd.plz_id, rd.lane_no, hclp->year, hclp->month, hclp->day, hclp->hour, hclp->min, hclp->sec, hclp->serial_no, back_car, div_carkind, hclp->io_div); -*/ - fclose(backup_f); -#endif - return (0); -} - -/* - *======================================================================== - * - * Function : rcv_wrk_strt() - * Progrmer : JBY (baarong@neighbor21.co.kr) - * Date : 2018.08.28 - * Modified : - * Remark : 근무개시보고 - * - *======================================================================== -*/ -int rcv_wrk_strt() -{ - struct rcv_lane_data rd; -#if 1 - struct write_info wi; -#endif - struct hi_wrk_start *hws; - int wrk_order, ret = 0; - char rtn[MAX_STRING_SIZE]; memset(rtn, 0x00, sizeof(rtn)); - char tmp[10]; memset(tmp, 0x00, sizeof(tmp)); - - hws = (struct hi_wrk_start *)hi_comm_ctrl.rcv_ctrl.buf; - - if (hi_comm_ctrl.now_stat_info & H_ACC_RESND) - { - /* 재송요구시 : 재송요구 근무 DATA */ - if (memcmp(hws->wrk_no, hi_comm_ctrl.manager[LW_RESND_NO-1].lo_lane_ctrl_cmd.wrk_no, 4) != 0 || - memcmp(hws->wrk_start_year, hi_comm_ctrl.manager[LW_RESND_NO-1].lo_lane_ctrl_cmd.wrk_year, 4) != 0 || - memcmp(hws->wrk_start_month, hi_comm_ctrl.manager[LW_RESND_NO-1].lo_lane_ctrl_cmd.wrk_mon, 2) != 0 || - memcmp(hws->wrk_start_day, hi_comm_ctrl.manager[LW_RESND_NO-1].lo_lane_ctrl_cmd.wrk_day, 2) != 0) - { - hi_comm_ctrl.now_stat_info &= ~(H_ACC_RESND|H_FRAME_WAIT); - lcc_reply(LW_RESND_NO, 1, 1, "재전송 자료의 일시 및 근무번호가 틀립니다."); - return (-1); - } - } - - wrk_order = natoi(&hws->wrk_no[2], 2); - - if (wrk_order <= 0 || wrk_order > MAX_WRKCNT) - return (-1); /* 최대근무수초과 */ - - if(natoi(&hws->wrk_no[0], 2) != (int)hi_comm_ctrl.lane_no){ - lane_log("근무 차로번호 불일치 %.4s != %d\n",hws->wrk_no,hi_comm_ctrl.lane_no); - return (-1); /* 근무번호 앞2비교 */ - } - - e_memcpy(hi_comm_ctrl.lane_stat_info.wrk_no , hws->wrk_no ); /* 근무번호 */ - e_memcpy(hi_comm_ctrl.lane_stat_info.wrkr_no , hws->wrkr_no ); - - sprintf(tmp, "%.8s%c", hws->seq_no, '\0'); - hi_comm_ctrl.lane_stat_info.lst_rev_snd_no = strtoul(tmp, NULL, 16); - - e_memcpy(hi_comm_ctrl.lane_stat_info.wrk_strt_year , hws->wrk_start_year ); - e_memcpy(hi_comm_ctrl.lane_stat_info.wrk_strt_mon , hws->wrk_start_month); - e_memcpy(hi_comm_ctrl.lane_stat_info.wrk_strt_day , hws->wrk_start_day ); - e_memcpy(hi_comm_ctrl.lane_stat_info.wrk_strt_hr , hws->wrk_start_hour ); - e_memcpy(hi_comm_ctrl.lane_stat_info.wrk_strt_min , hws->wrk_start_min ); - e_memcpy(hi_comm_ctrl.lane_stat_info.wrk_strt_sec , hws->wrk_start_sec ); - - //유지보수 근무자번호 정의시 수정 - if(memcmp(hws->wrkr_no, "6", 1) == 0) - { - hi_comm_ctrl.write_info.wrk_knd = WS_RPR; - hi_comm_ctrl.lane_stat_info.wrk_stat = WS_RPR; - }else{ - hi_comm_ctrl.write_info.wrk_knd = WS_NORMAL; - hi_comm_ctrl.lane_stat_info.wrk_stat = WS_NORMAL; - } - - e_memcpy(hi_comm_ctrl.write_info.year, hws->wrk_start_year); /* 근무일자 */ - e_memcpy(hi_comm_ctrl.write_info.mon, hws->wrk_start_month); - e_memcpy(hi_comm_ctrl.write_info.day, hws->wrk_start_day); - e_memcpy(hi_comm_ctrl.write_info.hr, hws->wrk_start_hour); - e_memcpy(hi_comm_ctrl.write_info.min, hws->wrk_start_min); - e_memcpy(hi_comm_ctrl.write_info.day, hws->wrk_start_sec); - - e_memcpy(hi_comm_ctrl.write_info.wrk_no, hws->wrk_no); /* 근무번호 */ - - e_memcpy(hi_comm_ctrl.write_info.wrk_no, hws->wrk_no); /* 근무번호 */ - e_memcpy(hi_comm_ctrl.write_info.wrkr_no, hws->wrkr_no); /* 근무번호 */ - - hi_comm_ctrl.write_info.knd = hi_comm_ctrl.rcv_ctrl.cmd; - -//lane_log("개시10[%d]\n", hws->lane_typ[0]-'0'); - hi_comm_ctrl.write_info.io_div = hws->io_div; - -//lane_log("개시11[%x]\n", hws->seq_no); -// hi_comm_ctrl.write_info.io_div = hws->lane_typ[0]; - -//lane_log("개시 11-1[%x]\n", strtoul(tmp, NULL, 16)); - hi_comm_ctrl.write_info.strt_snd_no = strtoul(tmp, NULL, 16); - hi_comm_ctrl.write_info.rcv_snd_no = strtoul(tmp, NULL, 16); - - sprintf(wi.plz_id, "%.2s", PLZ_CODE2); - lb_freadx(&wi, FNO_BASICTBL, &hi_comm_ctrl.bas_tbl, FFIRST); - - memset(&rd, 0x20, sizeof(struct rcv_lane_data)); - sprintf((char *)rd.kind, "%02x", hi_comm_ctrl.rcv_ctrl.cmd); - sprintf((char *)rd.plz_id, "%.2s", hi_comm_ctrl.bas_tbl.plz_id); - sprintf((char *)rd.wrk_datetm, "%.4s%.2s%.2s%.2s%.2s%.2s", - hi_comm_ctrl.write_info.year, hi_comm_ctrl.write_info.mon, hi_comm_ctrl.write_info.day, - hi_comm_ctrl.write_info.hr, hi_comm_ctrl.write_info.min, hi_comm_ctrl.write_info.sec); - rd.io_div = lb_data2atoi((char *)hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div, 2) + '0'; - sprintf((char *)rd.lane_no, "%02d", hi_comm_ctrl.lane_no); - sprintf((char *)rd.wrk_no, "%.4s", hi_comm_ctrl.write_info.wrk_no); -//lane_log("차로번호[%.2s]\n", rd.lane_no); - if(lb_data2atoi(hi_comm_ctrl.write_info.wrkr_no, 4) == 0) - { - if(hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div[1] - '0' == 1) - sprintf((char *)rd.wrkr_no, "SYSI"); - else if(hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div[1] - '0' == 2) - sprintf((char *)rd.wrkr_no, "SYSO"); - else - sprintf((char *)rd.wrkr_no, "0000"); - }else - sprintf((char *)rd.wrkr_no, "%.4s", hi_comm_ctrl.write_info.wrkr_no); - - rd.con_stat = CONNECT_STAT;; - sprintf((char *)rd.rcv_snd_no, "%010d", hi_comm_ctrl.rcv_ctrl.snd_no); - sprintf((char *)rd.st_snd_no, "%010d", hi_comm_ctrl.write_info.strt_snd_no); - sprintf((char *)rd.ed_snd_no, "%010d", hi_comm_ctrl.write_info.end_snd_no); - sprintf((char *)rd.buf, "%s", (char *)hws); - - ret = MessageSender(hi_comm_ctrl.rcv_ctrl.cmd, (char *)&rd, path, rtn); - - if(ret < 0) - { - lane_log("(rcv_function.cpp) 근무개시[%.2s][%.4s] 처리실패\n", hi_comm_ctrl.write_info.plz_id, hi_comm_ctrl.write_info.wrk_no); - return(-1); - } - - if (wkr_no2wrk_stat(hws->wrkr_no) == W_MTNC) /* 근무상태 */ - hi_comm_ctrl.now_stat_info |= H_MTNC; /* 유지보수원 근무중 */ - else - hi_comm_ctrl.now_stat_info &= ~H_MTNC; - - if (!(hi_comm_ctrl.now_stat_info & H_ERR_REST)) - hi_comm_ctrl.now_stat_info &= ~H_LANE_CLS; /* 폐쇄 : 해제 */ -//printf("W15\n"); - if(ret == 0) - { - lst_rcv_acc_no = strtoul(tmp, NULL, 16); - } - - return (0); -} - -/* - *======================================================================== - * - * Function : rcv_hnd_data() - * Progrmer : JBY (baarong@neighbor21.co.kr) - * Date : 2019.05.12 - * Modified : - * Remark : 처리 데이터 - * - *======================================================================== -*/ -int rcv_hnd_data() -{ - struct rcv_lane_data rd; - struct write_info wi; - struct hi_hnd_data *hcd; - int ret, retw; - char rtn[MAX_STRING_SIZE]; memset(rtn, 0x00, sizeof(rtn)); - char bak[MAX_STRING_SIZE]; memset(bak, 0x00, sizeof(bak)); - char tmp[10]; memset(tmp, 0x00, sizeof(tmp)); - char rfid_kbn[2]; memset(rfid_kbn, 0x00, sizeof(rfid_kbn)); - char serial_no[8]; memset(serial_no, 0x00, sizeof(serial_no)); - char car_kind; - - hcd = (struct hi_hnd_data *)hi_comm_ctrl.rcv_ctrl.buf; - e_memcpy(hi_comm_ctrl.write_info.year, hcd->hnd_info.hnd_year ); - e_memcpy(hi_comm_ctrl.write_info.mon, hcd->hnd_info.hnd_month); - e_memcpy(hi_comm_ctrl.write_info.day, hcd->hnd_info.hnd_day ); - e_memcpy(hi_comm_ctrl.write_info.hr, hcd->hnd_info.hnd_hour ); - e_memcpy(hi_comm_ctrl.write_info.min, hcd->hnd_info.hnd_min ); - e_memcpy(hi_comm_ctrl.write_info.sec, hcd->hnd_info.hnd_sec ); - - e_memcpy(hi_comm_ctrl.write_info.wrk_no, hcd->wrk_no); /* 근무번호 */ - hi_comm_ctrl.write_info.io_div = hcd->io_div; - -/* 2019. 04.17 추가 */ - e_memcpy(hi_comm_ctrl.write_info.wrkr_no, hcd->wrkr_no); - hi_comm_ctrl.write_info.io_div = hcd->io_div; - - hi_comm_ctrl.write_info.knd = hi_comm_ctrl.rcv_ctrl.cmd; - sprintf(tmp, "%.8s%c", hcd->seq_no, '\0'); - hi_comm_ctrl.write_info.rcv_snd_no = strtoul(tmp, NULL, 16); - hi_comm_ctrl.lane_stat_info.lst_rev_snd_no = strtoul(tmp, NULL, 16); - - sprintf(wi.plz_id, "%.2s", PLZ_CODE2); - lb_freadx(&wi, FNO_BASICTBL, &hi_comm_ctrl.bas_tbl, FFIRST); - - memset(&rd, 0x00, sizeof(struct rcv_lane_data)); - sprintf((char *)rd.kind, "%02x", hi_comm_ctrl.rcv_ctrl.cmd); - sprintf((char *)rd.plz_id, "%.2s", hi_comm_ctrl.bas_tbl.plz_id); - sprintf((char *)rd.wrk_datetm, "%.4s%.2s%.2s%.2s%.2s%.2s", - hi_comm_ctrl.write_info.year, hi_comm_ctrl.write_info.mon, hi_comm_ctrl.write_info.day, - hi_comm_ctrl.write_info.hr, hi_comm_ctrl.write_info.min, hi_comm_ctrl.write_info.sec); - rd.io_div = lb_data2atoi((char *)hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div, 2) + '0'; - sprintf((char *)rd.lane_no, "%02d", hi_comm_ctrl.lane_no); - sprintf((char *)rd.wrk_no, "%.4s", hi_comm_ctrl.write_info.wrk_no); - - if(lb_data2atoi(hi_comm_ctrl.write_info.wrkr_no, 4) == 0) - { - if(hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div[1] - '0' == 1) - snprintf((char *)rd.wrkr_no, 4+1, "SYSI"); - else if(hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div[1] - '0' == 2) - snprintf((char *)rd.wrkr_no, 4+1, "SYSO"); - else - snprintf((char *)rd.wrkr_no, 4+1, "0000"); - }else - snprintf((char *)rd.wrkr_no, 4+1, "%.4s", hi_comm_ctrl.write_info.wrkr_no); - - rd.con_stat = CONNECT_STAT; - sprintf((char *)rd.rcv_snd_no, "%010d", hi_comm_ctrl.rcv_ctrl.snd_no); - sprintf((char *)rd.st_snd_no, "%010d", hi_comm_ctrl.write_info.strt_snd_no); - sprintf((char *)rd.ed_snd_no, "%010d", hi_comm_ctrl.write_info.end_snd_no); -#if 1 -/* 2019.07.26 감지시간 추가 */ - sprintf(bak, "%.8s%.2s%.8s%.4s%.4s%.6s%c%.2s%.2s%c%.6s%.6s%.4s%.2s%.2s%.2s%.2s%.2s%.6s%.6s%.6s%c%c%.2s%c%.7s%.20s%.2s%c%c%-16s%-16s%.4s%.4s%.4s%.4s%.2s%.24s%.24s%c", - hcd->seq_no, hcd->kind, hcd->wrk_date, hcd->wrk_no, hcd->wrkr_no, hcd->serial_no, - hcd->io_div, hcd->plz_id, hcd->lane_no, hcd->car_kind, hcd->sence_seq_no, hcd->sence_time, - hcd->hnd_info.hnd_year, hcd->hnd_info.hnd_month, hcd->hnd_info.hnd_day, - hcd->hnd_info.hnd_hour, hcd->hnd_info.hnd_min, hcd->hnd_info.hnd_sec, hcd->hnd_info.org_pass_fare, - hcd->hnd_info.pass_fare, hcd->hnd_info.rcpt_money, hcd->hnd_info.refund_yn, hcd->hnd_info.key_yn, - hcd->hnd_info.rcpt_hnd, hcd->hnd_info.red_div, - hcd->hnd_info.issue_code, hcd->hnd_info.crd_no, hcd->hnd_info.rcpt_div, hcd->pre_yn, hcd->img_yn, - hcd->car_no1, hcd->car_no2, hcd->x_point, hcd->y_point, hcd->img_width, hcd->img_heigh, hcd->dc_typ, - hcd->tag_id1, hcd->tag_id2, '\0'); -#else - sprintf(bak, "%.8s%.2s%.8s%.4s%.4s%.6s%c%.2s%.2s%c%.6s%.4s%.2s%.2s%.2s%.2s%.2s%.6s%.6s%.6s%c%c%.2s%c%.7s%.20s%.2s%c%c%-16s%-16s%.4s%.4s%.4s%.4s%.2s%.24s%.24s%c", - hcd->seq_no, hcd->kind, hcd->wrk_date, hcd->wrk_no, hcd->wrkr_no, hcd->serial_no, - hcd->io_div, hcd->plz_id, hcd->lane_no, hcd->car_kind, hcd->sence_seq_no, - hcd->hnd_info.hnd_year, hcd->hnd_info.hnd_month, hcd->hnd_info.hnd_day, - hcd->hnd_info.hnd_hour, hcd->hnd_info.hnd_min, hcd->hnd_info.hnd_sec, hcd->hnd_info.org_pass_fare, - hcd->hnd_info.pass_fare, hcd->hnd_info.rcpt_money, hcd->hnd_info.refund_yn, hcd->hnd_info.key_yn, - hcd->hnd_info.rcpt_hnd, hcd->hnd_info.red_div, - hcd->hnd_info.issue_code, hcd->hnd_info.crd_no, hcd->hnd_info.rcpt_div, hcd->pre_yn, hcd->img_yn, - hcd->car_no1, hcd->car_no2, hcd->x_point, hcd->y_point, hcd->img_width, hcd->img_heigh, hcd->dc_typ, - hcd->tag_id1, hcd->tag_id2, '\0'); -#endif - //sprintf((char *)rd.buf, "%s", (char *)hcd); - snprintf((char *)rd.buf, strlen(bak)+1, "%s", bak); -//lane_log("처리데이터[%s]\n", rd.buf); - ret = MessageSender(hi_comm_ctrl.rcv_ctrl.cmd, (char *)&rd, path, rtn); - - if(ret < 0) - { - lane_log("(rcv_function.cpp) 처리[%.2s][%.4s] 처리실패\n", hi_comm_ctrl.write_info.plz_id, hi_comm_ctrl.write_info.wrk_no); - return(-1); - } - - //usleep(300000); -#if 0 - memset(bak, 0x00, sizeof(bak)); - - RemoveTerminatedThread(); - - switch(lb_data2atoi(hcd->hnd_info.rcpt_hnd, 2)) - { - case 10: - case 11: - case 20: - case 21: - case 22: - case 23: - case 24: - case 30: - case 31: - case 32: - case 34: - case 35: - case 36: - case 37: - case 38: - case 39: - case 70: - case 71: - case 74: - case 75: - case 76: - case 77: - case 78: - case 79: - case 40: - case 41: - case 50: - case 51: - case 52: - case 53: - case 54: - case 60: - case 61: - case 62: - case 63: - case 64: - case 65: - case 66: - case 67: - sprintf(rfid_kbn, "00"); - break; - case 12: - case 25: - case 26: - case 55: - sprintf(rfid_kbn, "01"); - break; - case 13: - case 14: - case 27: - case 28: - case 56: - sprintf(rfid_kbn, "03"); - break; - case 33: - sprintf(rfid_kbn, "02"); - break; - default: - sprintf(rfid_kbn, "00"); - break; - } - - switch(lb_data2atoi(hcd->hnd_info.rcpt_hnd, 2)) - { - case 31: - car_kind = 0x36; - break; - case 36: - car_kind = 0x37; - break; - default: - car_kind = hcd->car_kind; - break; - } - - if(lb_data2atoi(hcd->hnd_info.rcpt_hnd, 2) > 19 && lb_data2atoi(hcd->hnd_info.rcpt_hnd, 2) < 30) - { - sprintf(serial_no, "%c%.2s%05u", hcd->plz_id[1], hcd->lane_no, lb_data2atoi(hcd->serial_no, 6)); - }else - { - sprintf(serial_no, "%08u", lb_data2atoi(hcd->serial_no, 6)); - } - sprintf((char *)bak, "%.4s%.2s%.2s%.8s%.2s%.2s%.2s%.8s%.8s%-16s%.2s0 %.6s%.3s%.3s%.3s%.3s%c%c%.2s%-24s%-24s%c%c", - hcd->wrkr_no, hcd->plz_id, hcd->lane_no, hcd->wrk_date, hcd->hnd_info.hnd_hour, hcd->hnd_info.hnd_min, hcd->hnd_info.hnd_sec, - serial_no, serial_no, hcd->car_no1, hcd->hnd_info.rcpt_hnd, - hcd->hnd_info.pass_fare, hcd->x_point+1, hcd->y_point+1, hcd->img_width+1, hcd->img_heigh+1, - hcd->hnd_info.refund_yn, hcd->wrk_no[3], rfid_kbn, hcd->tag_id1, hcd->tag_id2, car_kind, '\0'); - -//lane_log("처리데이터 Web 송신[%s]\n", bak); - retw = MessageSender(NS_WEB_HND_DATA, (char *)&bak, path, rtn); - - if(retw < 0) - { - lane_log("(rcv_function.cpp) Web 처리데이터[%.2s][%.4s] 처리실패\n", hi_comm_ctrl.write_info.plz_id, hi_comm_ctrl.write_info.wrk_no); - } -#endif - - if(ret == 0) - { - lst_rcv_acc_no = strtoul(tmp, NULL, 16); - } -#ifdef _DEV_ - //장애 대응을 위한 처리자료 파일화 - char queue_d[128]; memset(queue_d, 0x00, sizeof(queue_d)); - char queue_f[128]; memset(queue_f, 0x00, sizeof(queue_f)); - char back_car[128]; memset(back_car, 0x00, sizeof(back_car)); - int div_carkind; - FILE *backup_f; - sprintf(queue_d, "%s/%.8s%c", LOG_DIR, rd.wrk_datetm, '\0'); - mkdir(queue_d,0755); - sprintf(queue_f, "%s/queue%.2s%.2s.log", queue_d, rd.plz_id, rd.lane_no); - - backup_f = fopen(queue_f, "a+t"); - fprintf(backup_f, "%.2s%.2s%.2s|%.2s%.2s%.14s%c%.2s%.4s%.4s%c%.10s%.10s%.10s%s\n", - hcd->hnd_info.hnd_hour, hcd->hnd_info.hnd_min, hcd->hnd_info.hnd_sec, rd.kind, rd.plz_id, rd.wrk_datetm, rd.io_div, rd.lane_no, rd.wrk_no, rd.wrkr_no, rd.con_stat, rd.rcv_snd_no, rd.st_snd_no, rd.ed_snd_no, rd.buf); - - fclose(backup_f); -#endif - - return (0); -} - -/* - *======================================================================== - * - * Function : rcv_card_data() - * Progrmer : JBY (baarong@neighbor21.co.kr) - * Date : 2019.05.12 - * Modified : - * Remark : 카드처리 데이터 - * - *======================================================================== -*/ -int rcv_card_data() -{ - struct rcv_lane_data rd; - struct write_info wi; - struct hi_crd_hnd_data *hcd; - int ret, retw; - int ii, size; - - char rtn[MAX_STRING_SIZE]; memset(rtn, 0x00, sizeof(rtn)); - char bak[MAX_STRING_SIZE]; memset(bak, 0x00, sizeof(bak)); - char tmp[10]; memset(tmp, 0x00, sizeof(tmp)); - - char sam_seq[10+1]; memset(sam_seq, 0x00, sizeof(sam_seq)); - char tot_sam_seq[10+1]; memset(tot_sam_seq, 0x00, sizeof(tot_sam_seq)); - char sam_coll_cnt[5+1]; memset(sam_coll_cnt, 0x00, sizeof(sam_coll_cnt)); - char sam_tot_amt[10+1]; memset(sam_tot_amt, 0x00, sizeof(sam_tot_amt)); - char tmp_iss_cd[6+1]; memset(tmp_iss_cd, 0x00, sizeof(tmp_iss_cd)); - char issue_id[7+1]; memset(issue_id, 0x00, sizeof(issue_id)); - char path[256]; memset(path, 0x00, sizeof(path)); - - FILE *fp; - struct stat file_info; - struct iss_comp_tbl iss_comp_tbl_f; - - hcd = (struct hi_in_way_hnd_data *)hi_comm_ctrl.rcv_ctrl.buf; - e_memcpy(hi_comm_ctrl.write_info.year, hcd->hnd_year ); - e_memcpy(hi_comm_ctrl.write_info.mon, hcd->hnd_month); - e_memcpy(hi_comm_ctrl.write_info.day, hcd->hnd_day ); - e_memcpy(hi_comm_ctrl.write_info.hr, hcd->hnd_hour ); - e_memcpy(hi_comm_ctrl.write_info.min, hcd->hnd_min ); - e_memcpy(hi_comm_ctrl.write_info.sec, hcd->hnd_sec ); - - e_memcpy(hi_comm_ctrl.write_info.wrk_no , hcd->wrk_no); /* 근무번호 */ - e_memcpy(hi_comm_ctrl.write_info.wrkr_no, hcd->wrkr_no); - - hi_comm_ctrl.write_info.io_div = hcd->io_div; - sprintf(wi.plz_id, "%.2s", PLZ_CODE2); - lb_freadx(&wi, FNO_BASICTBL, &hi_comm_ctrl.bas_tbl, FFIRST); - - hi_comm_ctrl.write_info.knd = hi_comm_ctrl.rcv_ctrl.cmd; - sprintf(tmp, "%.8s%c", hcd->seq_no, '\0'); - hi_comm_ctrl.write_info.rcv_snd_no = strtoul(tmp, NULL, 16); - hi_comm_ctrl.lane_stat_info.lst_rev_snd_no = strtoul(tmp, NULL, 16); - - memset(&rd, 0x00, sizeof(struct rcv_lane_data)); - sprintf((char *)rd.kind, "%02x", hi_comm_ctrl.rcv_ctrl.cmd); - sprintf((char *)rd.plz_id, "%.2s", hi_comm_ctrl.bas_tbl.plz_id); - sprintf((char *)rd.wrk_datetm, "%.4s%.2s%.2s%.2s%.2s%.2s", - hi_comm_ctrl.write_info.year, hi_comm_ctrl.write_info.mon, hi_comm_ctrl.write_info.day, - hi_comm_ctrl.write_info.hr, hi_comm_ctrl.write_info.min, hi_comm_ctrl.write_info.sec); - rd.io_div = lb_data2atoi((char *)hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div, 2) + '0'; - sprintf((char *)rd.lane_no, "%02d", hi_comm_ctrl.lane_no); - sprintf((char *)rd.wrk_no, "%.4s", hi_comm_ctrl.write_info.wrk_no); - - if(lb_data2atoi(hi_comm_ctrl.write_info.wrkr_no, 4) == 0) - { - if(hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div[1] - '0' == 1) - snprintf((char *)rd.wrkr_no, 4+1, "SYSI"); - else if(hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div[1] - '0' == 2) - snprintf((char *)rd.wrkr_no, 4+1, "SYSO"); - else - snprintf((char *)rd.wrkr_no, 4+1, "0000"); - }else - snprintf((char *)rd.wrkr_no, 4+1, "%.4s", hi_comm_ctrl.write_info.wrkr_no); - - rd.con_stat = CONNECT_STAT;; - sprintf((char *)rd.rcv_snd_no, "%010d", hi_comm_ctrl.rcv_ctrl.snd_no); - sprintf((char *)rd.st_snd_no, "%010d", hi_comm_ctrl.write_info.strt_snd_no); - sprintf((char *)rd.ed_snd_no, "%010d", hi_comm_ctrl.write_info.end_snd_no); - //sprintf((char *)rd.buf, "%s", (char *)hcd); - sprintf((char *)bak, "%.8s%.2s%.8s%.4s%.4s%.6s%c%.2s%.4s%.2s%.2s%.2s%.2s%.2s%.6s%.6s%.8s%.8s%.2s%.2s%c%c%.20s%.2s%.10s%.10s%.2s%.16s%.8s%.2s%.6s%.10s%.8s%.8s%.10s%.8s%.4s%.8s%.2s%.8s%.2s%.8s%.2s%.7s%.2s%.10s%-16s%-16s%.12s%c", - hcd->seq_no, hcd->kind, hcd->wrk_date, hcd->wrk_no, hcd->wrkr_no, hcd->serial_no, hcd->io_div, hcd->plz_id, - hcd->hnd_year, hcd->hnd_month, hcd->hnd_day, hcd->hnd_hour, hcd->hnd_min, hcd->hnd_sec, - hcd->pass_fare, hcd->rcpt_money, hcd->bef_rcpt_balc, hcd->aft_rcpt_balc, hcd->rcpt_div, hcd->crd_kind, - hcd->pre_div, hcd->car_kind, hcd->crd_no, hcd->pay_div, hcd->terminal_no, hcd->terminal_cnt, - hcd->alg_id, hcd->psam_id, hcd->purch_dt, hcd->deal_div, hcd->elec_iss_id, hcd->elec_id, hcd->elec_ser_no, hcd->deal_ser_no, - hcd->crd_ser_no, hcd->deal_tot, hcd->ind_iss_cnt, hcd->rcpt_deal_ser, hcd->ind_sign1, hcd->psam_sign1, hcd->ind_sign2, - hcd->psam_sign2, hcd->id_center, hcd->iss_code, hcd->another, hcd->alias_no, hcd->car_no1, hcd->car_no2, hcd->tot_id, '\0'); - snprintf((char *)rd.buf, strlen(bak)+1, "%s", bak); -//lane_log("카드처리데이터[%s]\n", rd.buf); - ret = MessageSender(hi_comm_ctrl.rcv_ctrl.cmd, (char *)&rd, path, rtn); - //usleep(300000); - if(ret < 0) - { - lane_log("(rcv_function.cpp) 카드처리[%.2s][%.4s] 처리실패\n", hi_comm_ctrl.write_info.plz_id, hi_comm_ctrl.write_info.wrk_no); - return(-1); - } -#if 0 - memset(bak, 0x00, sizeof(bak)); - - RemoveTerminatedThread(); - - snprintf(sam_seq, 8+1, "%s%c", hcd->deal_ser_no, '\0'); - snprintf(tot_sam_seq, 8+1, "%s%c", hcd->rcpt_deal_ser, '\0'); - snprintf(sam_coll_cnt, 4+1, "%s%c", hcd->ind_iss_cnt, '\0'); - snprintf(sam_tot_amt, 8+1, "%s%c", hcd->deal_tot, '\0'); - sprintf(tmp_iss_cd, "%.6s%c", hcd->crd_no, '\0'); - - sprintf(path, "%s/%s/ISSTBL", DIR_TCS, DIR_BASEINFO); - fp = fopen(path, "r+"); - if( 0 > stat(path, &file_info)) - { - proc_log("발행사정보 없음\n"); - }else - { - size = file_info.st_size; -//proc_log("파일 Size[%d]\n", size); - for(ii = 0; ii < (size / sizeof(struct iss_comp_tbl)); ii++) - { - fseek(fp, ii * sizeof(struct iss_comp_tbl), SEEK_SET); - fread(&iss_comp_tbl_f, sizeof(struct iss_comp_tbl), 1, fp); -//proc_log("[%d]FILE BIN[%.6s] ISSCD[%.6s]\n", ii, iss_comp_tbl_f.bin_code+2, tmp_iss_cd); - if(strncmp(iss_comp_tbl_f.bin_code+2, tmp_iss_cd, 6) == 0) - break; - } - } - - snprintf(issue_id, 7+1, "%.7s", iss_comp_tbl_f.issue_cd); - - sprintf((char *)bak, "%.4s%.2s%.2s%.8s%.2s%.2s%.2s%.8s%c%-16s%.2s%.8s%.8s%.8s%.9s%-16s%010u%.10s%.2s%.2s%.2s%10u%05u%010u%.8s%.2s9100000000%.2s%.10s%.7s%c", - hcd->wrkr_no, hcd->plz_id, hcd->lane_no, hcd->wrk_date, hcd->hnd_hour, hcd->hnd_min, hcd->hnd_sec, - hcd->serial_no, hcd->pre_div, hcd->crd_no, hcd->rcpt_div, hcd->bef_rcpt_balc, hcd->rcpt_money, hcd->aft_rcpt_balc, - hcd->terminal_no, hcd->psam_id, strtoul(sam_seq, NULL, 16), hcd->crd_ser_no, hcd->alg_id, hcd->ind_sign1, hcd->id_center, - strtoul(tot_sam_seq, NULL, 16), strtoul(sam_coll_cnt, NULL, 16), strtoul(sam_tot_amt, NULL, 16), hcd->psam_sign1, - hcd->another, hcd->lane_no, hcd->in_alias_no, issue_id, '\0'); - -//lane_log("카드처리데이터 Web 송신[%s]\n", bak); - retw = MessageSender(NS_WEB_CRD_HND_DATA, (char *)&bak, path, rtn); - - if(retw < 0) - { - lane_log("(rcv_function.cpp) Web 카드처리데이터[%.2s][%.4s] 처리실패\n", hi_comm_ctrl.write_info.plz_id, hi_comm_ctrl.write_info.wrk_no); - } -#endif - if(ret == 0) - { - lst_rcv_acc_no = strtoul(tmp, NULL, 16); - } -#ifdef _DEV_ - //장애 대응을 위한 처리자료 파일화 - char queue_d[128]; memset(queue_d, 0x00, sizeof(queue_d)); - char queue_f[128]; memset(queue_f, 0x00, sizeof(queue_f)); - char back_car[128]; memset(back_car, 0x00, sizeof(back_car)); - int div_carkind; - FILE *backup_f; - sprintf(queue_d, "%s/%.8s%c", LOG_DIR, rd.wrk_datetm, '\0'); - mkdir(queue_d,0755); - sprintf(queue_f, "%s/queue%.2s%.2s.log", queue_d, rd.plz_id, rd.lane_no); - - backup_f = fopen(queue_f, "a+t"); - fprintf(backup_f, "%.2s%.2s%.2s|%.2s%.2s%.14s%c%.2s%.4s%.4s%c%.10s%.10s%.10s%s\n", - hcd->hnd_hour, hcd->hnd_min, hcd->hnd_sec, rd.kind, rd.plz_id, rd.wrk_datetm, rd.io_div, rd.lane_no, rd.wrk_no, rd.wrkr_no, rd.con_stat, rd.rcv_snd_no, rd.st_snd_no, rd.ed_snd_no, rd.buf); - - fclose(backup_f); -#endif - - return (0); -} - -/* - *======================================================================== - * - * Function : remote_lane_stat_rlt() - * Progrmer : JBY (baarong@neighbor21.co.kr) - * Date : 2019.05.12 - * Modified : - * Remark : 원격차로상태응답 - * - *======================================================================== -*/ -int remote_lane_stat_rlt() -{ - struct rcv_lane_data rd; - struct hi_remote_lane_stat_reply *hrlsr; - int ret; - char rtn[MAX_STRING_SIZE]; memset(rtn, 0x00, sizeof(rtn)); - char tmp[10]; memset(tmp, 0x00, sizeof(tmp)); - - hrlsr = (struct hi_hnd_data *)hi_comm_ctrl.rcv_ctrl.buf; - sprintf((char *)hi_comm_ctrl.write_info.year, "%04d", hi_comm_ctrl.cday.tm_year+1900); - sprintf((char *)hi_comm_ctrl.write_info.mon, "%02d", hi_comm_ctrl.cday.tm_mon+1); - sprintf((char *)hi_comm_ctrl.write_info.day, "%02d", hi_comm_ctrl.cday.tm_mday); - sprintf((char *)hi_comm_ctrl.write_info.hr, "%02d", hi_comm_ctrl.cday.tm_hour); - sprintf((char *)hi_comm_ctrl.write_info.min, "%02d", hi_comm_ctrl.cday.tm_min); - sprintf((char *)hi_comm_ctrl.write_info.sec, "%02d", hi_comm_ctrl.cday.tm_sec); - - hi_comm_ctrl.write_info.knd = hi_comm_ctrl.rcv_ctrl.cmd; - sprintf(tmp, "%.8s%c", hrlsr->seq_no, '\0'); - hi_comm_ctrl.write_info.rcv_snd_no = strtoul(tmp, NULL, 16); - - memset(&rd, 0x20, sizeof(struct rcv_lane_data)); - sprintf((char *)rd.kind, "%02x", hi_comm_ctrl.rcv_ctrl.cmd); - sprintf((char *)rd.plz_id, "%.2s", hi_comm_ctrl.write_info.plz_id); - sprintf((char *)rd.wrk_datetm, "%.4s%.2s%.2s%.2s%.2s%.2s", - hi_comm_ctrl.write_info.year, hi_comm_ctrl.write_info.mon, hi_comm_ctrl.write_info.day, - hi_comm_ctrl.write_info.hr, hi_comm_ctrl.write_info.min, hi_comm_ctrl.write_info.sec); - rd.io_div = lb_data2atoi((char *)hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div, 2) + '0'; - sprintf((char *)rd.lane_no, "%02d", hi_comm_ctrl.lane_no); - sprintf((char *)rd.wrk_no, "%.4s", hi_comm_ctrl.write_info.wrk_no); - - if(lb_data2atoi(hi_comm_ctrl.write_info.wrkr_no, 4) == 0) - { - if(hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div[1] - '0' == 1) - sprintf((char *)rd.wrkr_no, "SYSI"); - else if(hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div[1] - '0' == 2) - sprintf((char *)rd.wrkr_no, "SYSO"); - else - sprintf((char *)rd.wrkr_no, "0000"); - }else - sprintf((char *)rd.wrkr_no, "%.4s", hi_comm_ctrl.write_info.wrkr_no); - - rd.con_stat = CONNECT_STAT;; - sprintf((char *)rd.rcv_snd_no, "%010d", hi_comm_ctrl.rcv_ctrl.snd_no); - sprintf((char *)rd.st_snd_no, "%010d", hi_comm_ctrl.write_info.strt_snd_no); - sprintf((char *)rd.ed_snd_no, "%010d", hi_comm_ctrl.write_info.end_snd_no); - sprintf((char *)rd.buf, "%s", (char *)hrlsr); - - ret = MessageSender(hi_comm_ctrl.rcv_ctrl.cmd, (char *)&rd, path, rtn); - - if(ret < 0) - { - lane_log("(rcv_function.cpp) 원격차로상태응답[%.2s][%.4s] 처리실패\n", hi_comm_ctrl.write_info.plz_id, hi_comm_ctrl.write_info.wrk_no); - return(-1); - } - - return (0); -} - -/* - *======================================================================== - * - * Function : rcv_wrk_end() - * Progrmer : JBY (baarong@neighbor21.co.kr) - * Date : 2018.08.31 - * Modified : - * Remark : 근무 종료 - * - *======================================================================== -*/ -int rcv_wrk_end() -{ - struct rcv_lane_data rd; - struct write_info wi; - struct hi_wrk_end *howwe; - int wrk_order, ret, retw; - char rtn[MAX_STRING_SIZE]; memset(rtn, 0x00, sizeof(rtn)); - char bak[MAX_STRING_SIZE]; memset(bak, 0x00, sizeof(bak)); - char tmp[10]; memset(tmp, 0x00, sizeof(tmp)); - - int cash = 0, k_cash = 0, free = 0, minap = 0, coupon = 0, k_coupon = 0; - int sun = 0, k_sun = 0, who = 0, k_who = 0; - int sale = 0, k_sale = 0, tot_amt = 0, repay_q = 0, repay_m = 0; - - howwe = (struct hi_wrk_end *)hi_comm_ctrl.rcv_ctrl.buf; - e_memcpy(hi_comm_ctrl.write_info.year, howwe->wrk_end_year ); - e_memcpy(hi_comm_ctrl.write_info.mon, howwe->wrk_end_month); - e_memcpy(hi_comm_ctrl.write_info.day, howwe->wrk_end_day ); - e_memcpy(hi_comm_ctrl.write_info.hr, howwe->wrk_end_hour ); - e_memcpy(hi_comm_ctrl.write_info.min, howwe->wrk_end_min ); - e_memcpy(hi_comm_ctrl.write_info.sec, howwe->wrk_end_sec ); - e_memcpy(hi_comm_ctrl.write_info.wrk_no, howwe->wrk_no); /* 근무번호 */ - e_memcpy(hi_comm_ctrl.write_info.wrkr_no, howwe->wrkr_no); - - hi_comm_ctrl.write_info.knd = hi_comm_ctrl.rcv_ctrl.cmd; - sprintf(tmp, "%.8s%c", howwe->seq_no, '\0'); - hi_comm_ctrl.write_info.rcv_snd_no = strtoul(tmp, NULL, 16); - hi_comm_ctrl.write_info.end_snd_no = strtoul(tmp, NULL, 16); - hi_comm_ctrl.lane_stat_info.lst_rev_snd_no = strtoul(tmp, NULL, 16); - - e_memcpy(hi_comm_ctrl.lane_stat_info.wrk_end_year , howwe->wrk_end_year ); - e_memcpy(hi_comm_ctrl.lane_stat_info.wrk_end_mon , howwe->wrk_end_month); - e_memcpy(hi_comm_ctrl.lane_stat_info.wrk_end_day , howwe->wrk_end_day ); - e_memcpy(hi_comm_ctrl.lane_stat_info.wrk_end_hr , howwe->wrk_end_hour ); - e_memcpy(hi_comm_ctrl.lane_stat_info.wrk_end_min , howwe->wrk_end_min ); - e_memcpy(hi_comm_ctrl.lane_stat_info.wrk_end_sec , howwe->wrk_end_sec ); - - hi_comm_ctrl.lane_stat_info.wrk_stat = WS_NONE; - - wrk_order = natoi(&hi_comm_ctrl.write_info.wrk_no[2], 2); - if (wrk_order <= 0 || wrk_order > MAX_WRKCNT) - return (-1); - - sprintf(wi.plz_id, "%.2s", PLZ_CODE2); - lb_freadx(&wi, FNO_BASICTBL, &hi_comm_ctrl.bas_tbl, FFIRST); - - memset(&rd, 0x20, sizeof(struct rcv_lane_data)); - sprintf((char *)rd.kind, "%02x", hi_comm_ctrl.rcv_ctrl.cmd); - sprintf((char *)rd.plz_id, "%.2s", hi_comm_ctrl.bas_tbl.plz_id); - sprintf((char *)rd.wrk_datetm, "%.4s%.2s%.2s%.2s%.2s%.2s", - hi_comm_ctrl.write_info.year, hi_comm_ctrl.write_info.mon, hi_comm_ctrl.write_info.day, - hi_comm_ctrl.write_info.hr, hi_comm_ctrl.write_info.min, hi_comm_ctrl.write_info.sec); - rd.io_div = lb_data2atoi((char *)hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div, 2) + '0'; - sprintf((char *)rd.lane_no, "%02d", hi_comm_ctrl.lane_no); - sprintf((char *)rd.wrk_no, "%.4s", hi_comm_ctrl.write_info.wrk_no); -//lane_log("차로번호[%.2s]\n", rd.lane_no); - if(lb_data2atoi(hi_comm_ctrl.write_info.wrkr_no, 4) == 0) - { - if(hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div[1] - '0' == 1) - sprintf((char *)rd.wrkr_no, "SYSI"); - else if(hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div[1] - '0' == 2) - sprintf((char *)rd.wrkr_no, "SYSO"); - else - sprintf((char *)rd.wrkr_no, "0000"); - }else - sprintf((char *)rd.wrkr_no, "%.4s", hi_comm_ctrl.write_info.wrkr_no); - - rd.con_stat = CONNECT_STAT;; - sprintf((char *)rd.rcv_snd_no, "%010d", hi_comm_ctrl.rcv_ctrl.snd_no); - sprintf((char *)rd.st_snd_no, "%010d", hi_comm_ctrl.write_info.strt_snd_no); - sprintf((char *)rd.ed_snd_no, "%010d", hi_comm_ctrl.write_info.end_snd_no); - sprintf((char *)rd.buf, "%s", (char *)howwe); - - ret = MessageSender(hi_comm_ctrl.rcv_ctrl.cmd, (char *)&rd, path, rtn); - - if(ret < 0) - { - lane_log("(rcv_function.cpp) 근무종료[%.2s][%.4s] 처리실패\n", hi_comm_ctrl.write_info.plz_id, hi_comm_ctrl.write_info.wrk_no); - return(-1); - } - hi_comm_ctrl.warr_snd_no = hi_comm_ctrl.write_info.end_snd_no; - if(!(hi_comm_ctrl.now_stat_info & H_ERR_REST) || !(hi_comm_ctrl.now_stat_info & H_ACC_RESND)) - { - hi_comm_ctrl.snd.len = snd_warr_snd_no(0); - lane_comm_snd(); - } - //hi_comm_ctrl.snd.len = snd_warr_snd_no();/* 보증 전송연번 송신 */ -//lane_log("출구 보증전송연번 송신?[%d]\n", hi_comm_ctrl.snd.len); - hi_comm_ctrl.now_stat_info |= H_LANE_CLS; /* 차로폐쇄중 */ - - if(ret == 0) - { - lst_rcv_acc_no = strtoul(tmp, NULL, 16); - } - -#if 0 - memset(bak, 0x00, sizeof(bak)); - - RemoveTerminatedThread(); - - for(ii = 0; ii < 50; ii++) - { - switch(lb_data2atoi(howwe->hnd_cnt[ii].div, 2)) - { - case 10: - cash += lb_data2atoi(howwe->hnd_cnt[ii].cnt, 4); - break; - case 11: - case 12: - case 13: - case 14: - k_cash += lb_data2atoi(howwe->hnd_cnt[ii].cnt, 4); - break; - case 30: - case 31: - case 32: - case 33: - case 34: - case 35: - case 36: - case 37: - case 38: - case 39: - case 70: - case 71: - case 74: - case 75: - case 76: - case 77: - case 78: - case 79: - free += lb_data2atoi(howwe->hnd_cnt[ii].cnt, 4); - break; - case 40: - case 41: - case 60: - case 61: - case 62: - case 63: - case 64: - case 65: - case 66: - case 67: - minap += lb_data2atoi(howwe->hnd_cnt[ii].cnt, 4); - break; - case 51: - coupon += lb_data2atoi(howwe->hnd_cnt[ii].cnt, 4); - break; - case 53: - case 55: - case 56: - k_coupon += lb_data2atoi(howwe->hnd_cnt[ii].cnt, 4); - break; - case 21: - sun += lb_data2atoi(howwe->hnd_cnt[ii].cnt, 4); - break; - case 23: - case 25: - case 27: - k_sun += lb_data2atoi(howwe->hnd_cnt[ii].cnt, 4); - break; - case 22: - who += lb_data2atoi(howwe->hnd_cnt[ii].cnt, 4); - break; - case 24: - case 26: - case 28: - k_who += lb_data2atoi(howwe->hnd_cnt[ii].cnt, 4); - break; - case 52: - sale += lb_data2atoi(howwe->hnd_cnt[ii].cnt, 4); - break; - case 54: - k_sale += lb_data2atoi(howwe->hnd_cnt[ii].cnt, 4); - break; - } - } - - sprintf((char *)bak, "%.4s%.2s%02d%.4s%.2s%.2s%.2s%.2s%.2s%.4s%.2s%.2s%.2s%.2s%.2s%04d%04d%04d%04d%04d%04d%04d%04d%04d%04d%04d%04d%08d%04d%08d%c%c", - howwe->wrkr_no, hi_comm_ctrl.bas_tbl.plz_id, hi_comm_ctrl.lane_no, - howwe->wrk_start_year, howwe->wrk_start_month, howwe->wrk_start_day, howwe->wrk_start_hour, howwe->wrk_start_min, howwe->wrk_start_sec, - howwe->wrk_end_year, howwe->wrk_end_month, howwe->wrk_end_day, howwe->wrk_end_hour, howwe->wrk_end_min, howwe->wrk_end_sec, - cash, k_cash, free, minap, coupon, k_coupon, sun, k_sun, who, k_who, sale, k_sale, lb_data2atoi(howwe->tot_fare, 8), - lb_data2atoi(howwe->repay_cnt, 4), lb_data2atoi(howwe->repay_fare, 8), pk_in->wrk_no[3], '\0'); - -//lane_log("근무종료 Web 송신[%s]\n", bak); - retw = MessageSender(NS_WEB_CRD_HND_DATA, (char *)&bak, path, rtn); - - if(retw < 0) - { - lane_log("(rcv_function.cpp) Web 근무종료[%.2s][%.4s] 처리실패\n", hi_comm_ctrl.write_info.plz_id, hi_comm_ctrl.write_info.wrk_no); - } -#endif -#ifdef _DEV_ - //장애 대응을 위한 처리자료 파일화 - char queue_d[128]; memset(queue_d, 0x00, sizeof(queue_d)); - char queue_f[128]; memset(queue_f, 0x00, sizeof(queue_f)); - char back_car[128]; memset(back_car, 0x00, sizeof(back_car)); - int div_carkind; - FILE *backup_f; - sprintf(queue_d, "%s/%.8s%c", LOG_DIR, rd.wrk_datetm, '\0'); - mkdir(queue_d,0755); - sprintf(queue_f, "%s/queue%.2s%.2s.log", queue_d, rd.plz_id, rd.lane_no); - - backup_f = fopen(queue_f, "a+t"); - fprintf(backup_f, "%.2s%.2s%.2s|%.2s%.2s%.14s%c%.2s%.4s%.4s%c%.10s%.10s%.10s%s\n", - howwe->wrk_end_hour, howwe->wrk_end_min, howwe->wrk_end_sec, rd.kind, rd.plz_id, rd.wrk_datetm, rd.io_div, rd.lane_no, rd.wrk_no, rd.wrkr_no, rd.con_stat, rd.rcv_snd_no, rd.st_snd_no, rd.ed_snd_no, rd.buf); - - fclose(backup_f); -#endif - return (0); -} - -/* - *======================================================================== - * - * Function : rcv_refund_data() - * Progrmer : JBY (baarong@neighbor21.co.kr) - * Date : 2019.07.01 - * Modified : - * Remark : 환불처리 데이터 - * - *======================================================================== -*/ -int rcv_refund_data() -{ - struct rcv_lane_data rd; - struct write_info wi; - struct hi_refund_data *hrd; - int wrk_order, ret; - char rtn[MAX_STRING_SIZE]; memset(rtn, 0x00, sizeof(rtn)); - char bak[MAX_STRING_SIZE]; memset(bak, 0x00, sizeof(bak)); - char tmp[10]; memset(tmp, 0x00, sizeof(tmp)); - - hrd = (struct hi_refund_data *)hi_comm_ctrl.rcv_ctrl.buf; -#if 0 - e_memcpy(hi_comm_ctrl.write_info.year, hrd->hnd_year ); - e_memcpy(hi_comm_ctrl.write_info.mon, hrd->hnd_month); - e_memcpy(hi_comm_ctrl.write_info.day, hrd->hnd_day ); - e_memcpy(hi_comm_ctrl.write_info.hr, hrd->hnd_hour ); - e_memcpy(hi_comm_ctrl.write_info.min, hrd->hnd_min ); - e_memcpy(hi_comm_ctrl.write_info.sec, hrd->hnd_sec ); -#else - e_memcpy(hi_comm_ctrl.write_info.year, hrd->hnd_info.hnd_year ); - e_memcpy(hi_comm_ctrl.write_info.mon, hrd->hnd_info.hnd_month); - e_memcpy(hi_comm_ctrl.write_info.day, hrd->hnd_info.hnd_day ); - e_memcpy(hi_comm_ctrl.write_info.hr, hrd->hnd_info.hnd_hour ); - e_memcpy(hi_comm_ctrl.write_info.min, hrd->hnd_info.hnd_min ); - e_memcpy(hi_comm_ctrl.write_info.sec, hrd->hnd_info.hnd_sec ); -#endif - e_memcpy(hi_comm_ctrl.write_info.wrk_no, hrd->wrk_no); /* 근무번호 */ - e_memcpy(hi_comm_ctrl.write_info.wrkr_no, hrd->wrkr_no); - sprintf(wi.plz_id, "%.2s", PLZ_CODE2); - lb_freadx(&wi, FNO_BASICTBL, &hi_comm_ctrl.bas_tbl, FFIRST); - - hi_comm_ctrl.write_info.knd = hi_comm_ctrl.rcv_ctrl.cmd; - sprintf(tmp, "%.8s%c", hrd->seq_no, '\0'); - hi_comm_ctrl.write_info.rcv_snd_no = strtoul(tmp, NULL, 16); - hi_comm_ctrl.lane_stat_info.lst_rev_snd_no = strtoul(tmp, NULL, 16); - - wrk_order = natoi(&hi_comm_ctrl.write_info.wrk_no[2], 2); - if (wrk_order <= 0 || wrk_order > MAX_WRKCNT) - return (-1); - - memset(&rd, 0x20, sizeof(struct rcv_lane_data)); - sprintf((char *)rd.kind, "%02x", hi_comm_ctrl.rcv_ctrl.cmd); - sprintf((char *)rd.plz_id, "%.2s", hi_comm_ctrl.write_info.plz_id); - sprintf((char *)rd.wrk_datetm, "%.4s%.2s%.2s%.2s%.2s%.2s", - hi_comm_ctrl.write_info.year, hi_comm_ctrl.write_info.mon, hi_comm_ctrl.write_info.day, - hi_comm_ctrl.write_info.hr, hi_comm_ctrl.write_info.min, hi_comm_ctrl.write_info.sec); - rd.io_div = lb_data2atoi((char *)hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div, 2) + '0'; - sprintf((char *)rd.lane_no, "%02d", hi_comm_ctrl.lane_no); - sprintf((char *)rd.wrk_no, "%.4s", hi_comm_ctrl.write_info.wrk_no); -//lane_log("차로번호[%.2s]\n", rd.lane_no); - if(lb_data2atoi(hi_comm_ctrl.write_info.wrkr_no, 4) == 0) - { - if(hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div[1] - '0' == 1) - snprintf((char *)rd.wrkr_no, 4+1, "SYSI"); - else if(hi_comm_ctrl.bas_tbl.lane_info[hi_comm_ctrl.lane_no -1].io_div[1] - '0' == 2) - snprintf((char *)rd.wrkr_no, 4+1, "SYSO"); - else - snprintf((char *)rd.wrkr_no, 4+1, "0000"); - }else - sprintf((char *)rd.wrkr_no, "%.4s", hi_comm_ctrl.write_info.wrkr_no); - - rd.con_stat = CONNECT_STAT;; - sprintf((char *)rd.rcv_snd_no, "%010d", hi_comm_ctrl.rcv_ctrl.snd_no); - sprintf((char *)rd.st_snd_no, "%010d", hi_comm_ctrl.write_info.strt_snd_no); - sprintf((char *)rd.ed_snd_no, "%010d", hi_comm_ctrl.write_info.end_snd_no); -#if 0 - sprintf((char *)bak, "%.8s%.2s%.8s%.4s%.4s%.6s%.2s%.2s%.4s%.2s%.2s%.2s%.2s%.2s%.6s%.6s%.6s%.4s%.2s%.2s%.2s%.2s%.2s%c", - hrd->seq_no, hrd->kind, hrd->wrk_date, hrd->wrk_no, hrd->wrkr_no, hrd->serial_no, hrd->plz_id, hrd->lane_no, - hrd->hnd_year, hrd->hnd_month, hrd->hnd_day, hrd->hnd_hour, hrd->hnd_min, hrd->hnd_sec, - hrd->org_pass_fare, hrd->pass_fare, hrd->toll_amt, - hrd->refund_year, hrd->refund_month, hrd->refund_day, hrd->refund_hour, hrd->refund_min, hrd->refund_sec, - hrd->refund_key); -#else - sprintf(bak, "%.8s%.2s%.8s%.4s%.4s%.6s%c%.2s%.2s%c%.6s%.6s%.4s%.2s%.2s%.2s%.2s%.2s%.6s%.6s%.6s%c%c%.2s%c%.7s%.20s%.2s%c%c%-16s%-16s%.4s%.4s%.4s%.4s%.2s%.24s%.24s%c", - hrd->seq_no, hrd->kind, hrd->wrk_date, hrd->wrk_no, hrd->wrkr_no, hrd->serial_no, - hrd->io_div, hrd->plz_id, hrd->lane_no, hrd->car_kind, hrd->sence_seq_no, hrd->sence_time, - hrd->hnd_info.hnd_year, hrd->hnd_info.hnd_month, hrd->hnd_info.hnd_day, - hrd->hnd_info.hnd_hour, hrd->hnd_info.hnd_min, hrd->hnd_info.hnd_sec, hrd->hnd_info.org_pass_fare, - hrd->hnd_info.pass_fare, hrd->hnd_info.rcpt_money, hrd->hnd_info.refund_yn, hrd->hnd_info.key_yn, - hrd->hnd_info.rcpt_hnd, hrd->hnd_info.red_div, - hrd->hnd_info.issue_code, hrd->hnd_info.crd_no, hrd->hnd_info.rcpt_div, hrd->pre_yn, hrd->img_yn, - hrd->car_no1, hrd->car_no2, hrd->x_point, hrd->y_point, hrd->img_width, hrd->img_heigh, hrd->dc_typ, - hrd->tag_id1, hrd->tag_id2, '\0'); -#endif -//lane_log("환불[%s]\n", bak); - snprintf((char *)rd.buf, strlen(bak)+1, "%s", (char *)bak); - - ret = MessageSender(hi_comm_ctrl.rcv_ctrl.cmd, (char *)&rd, path, rtn); - - if(ret < 0) - { - lane_log("(rcv_function.cpp) 환불처리[%.2s][%.4s] 처리실패\n", hi_comm_ctrl.write_info.plz_id, hi_comm_ctrl.write_info.wrk_no); - return(-1); - } - - if(ret == 0) - { - lst_rcv_acc_no = strtoul(tmp, NULL, 16); - } -#ifdef _DEV_ - //장애 대응을 위한 처리자료 파일화 - char queue_d[128]; memset(queue_d, 0x00, sizeof(queue_d)); - char queue_f[128]; memset(queue_f, 0x00, sizeof(queue_f)); - char back_car[128]; memset(back_car, 0x00, sizeof(back_car)); - int div_carkind; - FILE *backup_f; - sprintf(queue_d, "%s/%.8s%c", LOG_DIR, rd.wrk_datetm, '\0'); - mkdir(queue_d,0755); - sprintf(queue_f, "%s/queue%.2s%.2s.log", queue_d, rd.plz_id, rd.lane_no); - - backup_f = fopen(queue_f, "a+t"); - fprintf(backup_f, "%.2s%.2s%.2s|%.2s%.2s%.14s%c%.2s%.4s%.4s%c%.10s%.10s%.10s%s\n", - hrd->hnd_info.hnd_hour, hrd->hnd_info.hnd_min, hrd->hnd_info.hnd_sec, rd.kind, rd.plz_id, rd.wrk_datetm, rd.io_div, rd.lane_no, rd.wrk_no, rd.wrkr_no, rd.con_stat, rd.rcv_snd_no, rd.st_snd_no, rd.ed_snd_no, rd.buf); - - fclose(backup_f); -#endif - - return (0); -} - -/* - *======================================================================== - * - * Function : rcv_plz_line_reply() - * Progrmer : JBY (baarong@neighbor21.co.kr) - * Date : 2018.08.31 - * Modified : - * Remark : 회선 TEST 응답 DATA 수신처리 - * - *======================================================================== -*/ -int rcv_plz_line_reply() -{ - if (hi_comm_ctrl.now_stat_info & H_CIR) - { - hi_comm_ctrl.now_stat_info &= ~H_CIR; - lcc_reply(LW_LANECOMMTEST, 0, 1, "회선 테스트가 완료 되었습니다."); - } - - return (0); -} - -/* - *======================================================================== - * - * Function : chk_seq_no() - * Progrmer : JBY (baarong@neighbor21.co.kr) - * Date : 2018.08.28 - * Modified : - * Remark : 수신 전송연번 CHECKING - * - *======================================================================== -*/ -int chk_seq_no() -{ - if (hi_comm_ctrl.now_stat_info & H_INIT) - return (0); -//lane_log("전송연번 Check1[%x][%x]\n", hi_comm_ctrl.write_info.rcv_snd_no, hi_comm_ctrl.rcv_ctrl.snd_no); - if (hi_comm_ctrl.write_info.rcv_snd_no == hi_comm_ctrl.rcv_ctrl.snd_no) - return (0); /* 전송연번 중복 */ -//lane_log("전송연번 Check2[%x][%x]\n", hi_comm_ctrl.write_info.rcv_snd_no+1, hi_comm_ctrl.rcv_ctrl.snd_no); - if ((hi_comm_ctrl.write_info.rcv_snd_no+1) == hi_comm_ctrl.rcv_ctrl.snd_no) - return (0); -//lane_log("전송연번 Check3[%x][%x]\n", hi_comm_ctrl.write_info.rcv_snd_no, hi_comm_ctrl.rcv_ctrl.snd_no); - if (hi_comm_ctrl.write_info.rcv_snd_no == 0xffff && hi_comm_ctrl.rcv_ctrl.snd_no == 1) - return (0); -//lane_log("전송연번 Check4[%x][%x]\n", hi_comm_ctrl.write_info.rcv_snd_no, hi_comm_ctrl.rcv_ctrl.snd_no); - if (hi_comm_ctrl.write_info.rcv_snd_no == 0) /* 최종수신 전송연번 무 */ - return (0); -//lane_log("전송연번 Check5[%x][%x]\n", hi_comm_ctrl.write_info.rcv_snd_no, hi_comm_ctrl.rcv_ctrl.snd_no); - if (hi_comm_ctrl.now_stat_info & H_ERR_REST) - return (0); -//lane_log("전송연번 Check6[%x][%x]\n", hi_comm_ctrl.write_info.rcv_snd_no, hi_comm_ctrl.rcv_ctrl.snd_no); - if (hi_comm_ctrl.now_stat_info & H_ACC_RESND) /* KSW */ - return (0); -//lane_log("전송연번 Check7[%x][%x]\n", hi_comm_ctrl.write_info.rcv_snd_no, hi_comm_ctrl.rcv_ctrl.snd_no); - return (-1); /* 전송연번 오류 */ -} - -/* - *======================================================================== - * - * Function : chg_car_kind() - * Progrmer : JBY (baarong@neighbor21.co.kr) - * Date : 2020.04.07 - * Modified : - * Remark : 차량번호로 차종 변경 - * - *======================================================================== -*/ -int chg_car_kind(char *car_no, char car_kind) -{ - char back_car[128]; memset(back_car, 0x00, sizeof(back_car)); - char mCarNo[3+1]; memset(mCarNo, 0x00, sizeof(mCarNo)); - int div_carkind; - - snprintf(back_car, strlen(car_no)+1, "%s", car_no); - del_space(back_car); - - div_carkind = car_kind - '0'; - sprintf(mCarNo, "%.2s%c", back_car + strlen(back_car) - 6, '\0'); - if(strcmp(mCarNo, "바") == 0 || strcmp(mCarNo, "사") == 0 || strcmp(mCarNo, "아") == 0 || strcmp(mCarNo, "자") == 0) - { - if(div_carkind == 1) - { - div_carkind = 6; - }else if(div_carkind == 2) - { - div_carkind = 7; - } - } - - return div_carkind; -} diff --git a/GREEN_LANE/src/app/passraw/wrk_data_handle.c.241206 b/GREEN_LANE/src/app/passraw/wrk_data_handle.c.241206 deleted file mode 100644 index d82a44a..0000000 --- a/GREEN_LANE/src/app/passraw/wrk_data_handle.c.241206 +++ /dev/null @@ -1,1924 +0,0 @@ -/* - *======================================================================== - * - * ý۸ : ¡ ý - * : wrk_data_handle.pc - * : - * : 2012.09.24 - * : - * : - * - *======================================================================== -*/ - -#include -#include -#include -#include -#include -/* -#include "ora_sql.h" -*/ -#include "bas_tbl.h" -#include "passraw.h" -#include "wrk_data_def.h" -/* -exec sql include "tcs_db_def.h"; -*/ -//EXEC SQL BEGIN DECLARE SECTION; -#include "tcs_db_def.h" -//EXEC SQL END DECLARE SECTION; -#include "wrk_end_def.h" -#include "iss_comp.h" - -#define _WEBSVR_ -//#define _ORACLE_ - -/*------------------------------------------------------------------------------------------------ - * Global Variable.( ) - *-----------------------------------------------------------------------------------------------*/ -//exec sql begin declare section; - -//exec sql end declare section; - -//EXEC SQL INCLUDE SQLCA; - -struct hi_comm_ctrl hi_comm_ctrl; -//static struct iss_comp_tbl iss_comp_tbl_f;; - -/* - *======================================================================== - * - * : proc_close_pass() - * : - * : 2019.06.10 - * : - * : ߰ - * - *======================================================================== -*/ - -int proc_close_pass(char *target, char *rtn) -{ - struct rcv_lane_data *rd; - struct hi_close_pass *pk_in; - int iCrjb; - int start_sno; - int end_sno; - int ii, nResult; - char tmp[20]; memset(tmp, 0x00, sizeof(tmp)); - char rBuffer[MAX_STRING_SIZE+1]; - char mCarNo[3+1]; - -//EXEC SQL BEGIN DECLARE SECTION; - char in_fare[2+1]; - char in_booth[2+1]; - char in_date[14+1]; - char in_car[16+1]; - char in_carkind[1+1]; - - char c_io[1+1]; - //char in_date[8+1]; - //char in_time[6+1]; - - int d_seq = 0; - int in_count = 0; - - int ret = 3; - -//EXEC SQL END DECLARE SECTION; -#ifdef _WEBSVR_ - size_t in_size; - size_t out_size; - size_t out_buf_left; - char orgCarNo[255+1]; - char szCarNo[255+1]; - char* in_buf; - char* out_buf; - - memset(orgCarNo, 0x00, sizeof(orgCarNo)); - memset(szCarNo, 0x00, sizeof(szCarNo)); - - iconv_t ic = iconv_open("UTF-8", "EUC-KR"); - - if(ic == (iconv_t) -1) - { - proc_log("###### Not Supported ICONV Code ###### \n"); - } -#endif - memset(in_fare , 0x00, sizeof(in_fare )); - memset(in_booth, 0x00, sizeof(in_booth)); - memset(in_date , 0x00, sizeof(in_date )); - - //memset(in_time , 0x00, sizeof(in_time )); - - //rtn = (char *)rBuffer; - rd = (struct rcv_lane_data *)target; - pk_in = (struct hi_close_pass *)rd->buf; -//proc_log("[%s]\n", target); - sprintf(in_fare, "%.2s", rd->plz_id); - //in_fare[2] = '\0'; - sprintf(in_booth, "%.2s", rd->lane_no); - //in_booth[2] = '\0'; - sprintf(in_date, "%.14s", rd->wrk_datetm); - //in_booth[14] = '\0'; - printf("Ϸùȣ[%.6s]\n", pk_in->serial_no); - d_seq = lb_data2atoi(pk_in->serial_no, 6); - - sprintf(in_car, "%.16s", pk_in->car_no); - del_space(in_car); - if(strlen(in_car) == 0) - sprintf(in_car, "????????????"); - //in_car[16] = '\0'; - - in_carkind[0] = pk_in->car_kind; - in_carkind[1] = '\0'; - - c_io[0] = pk_in->io_div; - c_io[1] = '\0'; -#if 1 - //del_space(in_car); -//proc_log("ȣ[%s]\n", in_car); - sprintf(mCarNo, "%.2s%c", in_car + strlen(in_car) - 6, '\0'); -//proc_log("߰ȣ[%.2s]\n", mCarNo); - if(strcmp(mCarNo, "") == 0 || strcmp(mCarNo, "") == 0 || strcmp(mCarNo, "") == 0 || strcmp(mCarNo, "") == 0) - { - if(in_carkind[0] - '0' == 1) - { - in_carkind[0] = '6'; - in_carkind[1] = '\0'; - }else if(in_carkind[0] - '0' == 2) - { - in_carkind[0] = '7'; - in_carkind[1] = '\0'; - } - //proc_log("Get Mid No[%s]", mCarNo); - } - //sprintf(tmp, "%s%c", in_car, '\0'); -#endif - //sprintf(in_time, "%.2s%.2s%.2s", pk_in->hour, pk_in->min, pk_in->sec); - - in_count = 1; - -//printf("[%s][%s][%s][%s][%d]\n", in_fare, in_booth, in_date, in_time, in_count); - -proc_log("[%s][%s][%s][%d][%s][%s][%s]\n", in_fare, in_booth, in_date, d_seq, in_car, in_carkind, c_io); -#ifdef _ORACLE_ - EXEC SQL INSERT INTO DAY_TRAFFIC_INFO - (FARE_OFFICE_ID, BOOTH_ID, PASS_DATE, PASS_TIME, PASS_SEQNO, CAR_NO, CARS_TYPE_ID, IN_OUT_KBN, CREATE_DATE, CREATER, UPDATE_DATE, UPDATER) - VALUES - (:in_fare, :in_booth, SUBSTR(:in_date, 1, 8), SUBSTR(:in_date, 9, 6), :d_seq, :in_car, :in_carkind, :c_io, sysdate, 'system', sysdate, 'system'); - - if (SQLCODE < 0) - { - proc_log("Day Traffic Info Insert Fail[%d][%s]\n", SQLCODE, sqlca.sqlerrm.sqlerrmc); - // return -1; - } -#endif -#ifdef _WEBSVR_ - sprintf(orgCarNo, "%.16s", in_car); - if(strlen(orgCarNo) == 0) - { - memset(in_car, 0x00, sizeof(in_car)); - sprintf(in_car, "????????????"); - }else - { - memset(in_car, 0x00, sizeof(in_car)); - in_size = strlen(orgCarNo); - out_size = sizeof(wchar_t) * in_size * 4; - - in_buf = orgCarNo; - out_buf = szCarNo; - out_buf_left = out_size; - - nResult = iconv(ic, (char *)&in_buf, &in_size, (char *)&out_buf, &out_buf_left); - if(nResult == -1) - { - proc_log("ICONV FAILED [%d]\n", nResult); - } - -//proc_log("ICONV in_size[%d] out_size[%d] [%s]\n", in_size, out_size - out_buf_left, szCarNo); - sprintf(in_car, "%.16s", szCarNo); - } - iconv_close(ic); - sprintf(rBuffer, "%s%s%s%06d%-16s%s%s", in_fare, in_booth, in_date, d_seq, in_car, in_carkind, c_io); -//proc_log("1111111 [%s] 111111\n", rBuffer); - memcpy(rtn, &rBuffer, strlen(rBuffer)); -#endif - - //sprintf(rBuffer, "%08d", SQLCODE); - proc_log("߰ [%.8s] [%d]óϷ", in_date, SQLCODE); - - return(0); -} - -/* - *======================================================================== - * - * : proc_hnd_data() - * : - * : 2019.06.10 - * : - * : ó - * - *======================================================================== -*/ - -int proc_hnd_data(char *target, char *rtn) -{ - struct rcv_lane_data *rd; - struct hi_hnd_data *pk_in; - int iCrjb; - int start_sno; - int end_sno; - int ii, nResult; - char tmp[20]; memset(tmp, 0x00, sizeof(tmp)); - char rcv_hnd[2+1]; - char rBuffer[MAX_STRING_SIZE+1]; - -//EXEC SQL BEGIN DECLARE SECTION; - char in_id[4+1]; - char in_fare[2+1]; - char in_booth[2+1]; - char in_date[14+1]; - char in_seqno[9+1]; - char in_rf_seqno[9+1]; - char in_car[16+1]; - char in_collect[2+1]; - char in_army[1+1]; - - char in_stop[50+1]; - char in_move[32+1]; - char in_amount[6+1]; - char in_x[4+1]; - char in_y[4+1]; - char in_garo[4+1]; - char in_sero[4+1]; - char in_card_ret[1+1]; - char in_other[1+1]; - char in_rfid_kbn[2+1]; - char in_tag[48+1]; - char in_carkind[1+1]; - -/* 2019.07.26 ð߰ */ - char in_sens_time[6+1]; - char in_collect_new[2+1]; -/* 2020.06.16 (ڵǴ), KeyԷ¿ ڵ ߰ */ - char in_auto_kind[2+1]; - char in_key_yn[1+1]; - - char c_io[1+1]; - int d_seq = 0; - int ret = 3; - -//EXEC SQL END DECLARE SECTION; -#ifdef _WEBSVR_ - size_t in_size; - size_t out_size; - size_t out_buf_left; - char orgCarNo[255+1]; - char szCarNo[255+1]; - char* in_buf; - char* out_buf; - - memset(orgCarNo, 0x00, sizeof(orgCarNo)); - memset(szCarNo, 0x00, sizeof(szCarNo)); - - iconv_t ic = iconv_open("UTF-8", "EUC-KR"); - - if(ic == (iconv_t) -1) - { - proc_log("###### Not Supported ICONV Code ###### \n"); - } -#endif - memset(in_id , 0x00, sizeof(in_id )); - memset(in_fare , 0x00, sizeof(in_fare )); - memset(in_booth , 0x00, sizeof(in_booth )); - memset(in_date , 0x00, sizeof(in_date )); - memset(in_seqno , 0x00, sizeof(in_seqno )); - memset(in_rf_seqno, 0x00, sizeof(in_rf_seqno)); - memset(in_car , 0x00, sizeof(in_car )); - memset(in_collect , 0x00, sizeof(in_collect )); - memset(in_army , 0x00, sizeof(in_army )); - - memset(in_stop , 0x00, sizeof(in_stop )); - memset(in_move , 0x00, sizeof(in_move )); - memset(in_amount , 0x00, sizeof(in_amount )); - memset(in_x , 0x00, sizeof(in_x )); - memset(in_y , 0x00, sizeof(in_y )); - memset(in_garo , 0x00, sizeof(in_garo )); - memset(in_sero , 0x00, sizeof(in_sero )); - memset(in_card_ret, 0x00, sizeof(in_card_ret)); - memset(in_other , 0x00, sizeof(in_other )); - memset(in_rfid_kbn, 0x00, sizeof(in_rfid_kbn)); - memset(in_tag , 0x00, sizeof(in_tag )); - memset(in_carkind , 0x00, sizeof(in_carkind )); - - memset(in_sens_time , 0x00, sizeof(in_sens_time )); - memset(in_auto_kind , 0x00, sizeof(in_auto_kind )); - - //rtn = (char *)rBuffer; - rd = (struct rcv_lane_data *)target; - pk_in = (struct hi_hnd_data *)rd->buf; - - sprintf(in_id, "%.4s", pk_in->wrkr_no); - sprintf(in_fare, "%.2s", pk_in->plz_id); - sprintf(in_booth, "%.2s", rd->lane_no); - sprintf(in_date, "%.8s%.2s%.2s%.2s", pk_in->wrk_date, pk_in->hnd_info.hnd_hour, pk_in->hnd_info.hnd_min, pk_in->hnd_info.hnd_sec); - - sprintf(c_io, "%c", pk_in->io_div); - -//Ģ - //sprintf(in_seqno, "%c%.2s%05d", pk_in->plz_id[1], rd->lane_no, lb_data2atoi(pk_in->serial_no, 6)); //10->9 - //sprintf(in_rf_seqno, "%c%.2s%05d", pk_in->plz_id[1], rd->lane_no, lb_data2atoi(pk_in->serial_no, 6)); - sprintf(in_seqno, "%08u", lb_data2atoi(pk_in->serial_no, 6)); //10->9 - sprintf(in_rf_seqno, "%08u", lb_data2atoi(pk_in->serial_no, 6)); - - d_seq = lb_data2atoi(pk_in->sence_seq_no, 6); - - sprintf(in_car, "%.16s", pk_in->car_no1); - del_space(in_car); - - if(strlen(in_car) == 0) - strncpy(in_car, "????????????", 12); - - memcpy(rcv_hnd, pk_in->hnd_info.rcpt_hnd, 2); - rcv_hnd[2] = '\0'; -// - sprintf(in_amount, "%.6s%c", pk_in->hnd_info.pass_fare, '\0'); - - switch(lb_data2atoi(rcv_hnd, 2)) - { - case 31: - sprintf(in_carkind, "6"); - break; - case 36: - sprintf(in_carkind, "7"); - break; - default: - sprintf(in_carkind, "%c", pk_in->car_kind); - break; - } - - if(lb_data2atoi(rcv_hnd, 2) > 19 && lb_data2atoi(rcv_hnd, 2) < 30 || lb_data2atoi(rcv_hnd, 2) > 59 && lb_data2atoi(rcv_hnd, 2) < 70) - { - sprintf(in_seqno, "%c%.2s%05d", pk_in->plz_id[1], rd->lane_no, lb_data2atoi(pk_in->serial_no, 6)); //10->9 - sprintf(in_rf_seqno, "%c%.2s%05d", pk_in->plz_id[1], rd->lane_no, lb_data2atoi(pk_in->serial_no, 6)); - } - - //sprintf(tmp, "%.2s%c", pk_in->hnd_info.rcpt_hnd, '\0'); - //sprintf(in_collect, "%.2s", pk_in->hnd_info.rcpt_hnd); - - switch(lb_data2atoi(rcv_hnd, 2)) - { - case 10: - sprintf(in_collect, "10"); - break; - case 11: - case 12: - case 13: - case 14: - sprintf(in_collect, "11"); - break; - case 20: - sprintf(in_collect, "20"); - break; - case 21: - case 61: - sprintf(in_collect, "21"); - break; - case 22: - sprintf(in_collect, "22"); - break; - case 23: - case 25: - case 27: - case 62: - case 63: - case 64: - case 66: - sprintf(in_collect, "23"); - break; - case 24: - case 26: - case 28: - sprintf(in_collect, "24"); - break; - case 30: - sprintf(in_collect, "30"); - break; - case 31: - case 35: - case 36: - case 37: - case 38: - case 39: - case 70: - case 72: - case 73: - case 75: - case 76: - case 77: - case 78: - case 79: - sprintf(in_collect, "34"); - break; - case 32: - sprintf(in_collect, "32"); - break; - case 33: - sprintf(in_collect, "33"); - break; - case 34: - case 65: - case 67: - sprintf(in_collect, "30"); - break; - case 71: - case 74: - sprintf(in_collect, "31"); - break; - case 40: - case 41: - sprintf(in_collect, "40"); - break; - case 50: - sprintf(in_collect, "50"); - break; - case 51: - sprintf(in_collect, "51"); - break; - case 52: - sprintf(in_collect, "52"); - break; - case 53: - case 55: - case 56: - sprintf(in_collect, "53"); - break; - case 54: - sprintf(in_collect, "54"); - break; - case 60: - if(lb_data2atoi(in_amount, 6) > 1000) - sprintf(in_collect, "21"); - else - sprintf(in_collect, "23"); - break; - default: - sprintf(in_collect, "00"); - break; - } - - in_army[0] = '0'; - - sprintf(in_stop, "%.8s_%.2s%.2s%.2s00_%06d%.2s_%c%.2s%c_%s_%c", - pk_in->wrk_date, pk_in->hnd_info.hnd_hour, pk_in->hnd_info.hnd_min, pk_in->hnd_info.hnd_sec, - lb_data2atoi(pk_in->serial_no, 6), pk_in->hnd_info.rcpt_hnd, pk_in->plz_id[1], rd->lane_no, pk_in->io_div, - in_car, pk_in->car_kind); - - in_move[0] = ' '; - -// - memcpy(in_x, pk_in->x_point+1, 3); - in_x[3] = '\0'; -// - memcpy(in_y, pk_in->y_point+1, 3); - in_y[3] = '\0'; -// - memcpy(in_garo, pk_in->img_width+1, 3); - in_garo[3] = '\0'; -// - memcpy(in_sero, pk_in->img_heigh+1, 3); - in_sero[3] = '\0'; - - in_card_ret[0] = pk_in->hnd_info.refund_yn; - //sprintf(in_rfid_kbn, "%c", pk_in->hnd_info.issue_code[0]); - - switch(lb_data2atoi(rcv_hnd, 2)) - { - case 10: - case 11: - case 20: - case 21: - case 22: - case 23: - case 24: - case 30: - case 31: - case 32: - case 34: - case 35: - case 36: - case 37: - case 38: - case 39: - case 70: - case 71: - case 72: - case 73: - case 74: - case 75: - case 76: - case 77: - case 78: - case 79: - case 40: - case 41: - case 50: - case 51: - case 52: - case 53: - case 54: - sprintf(in_rfid_kbn, "00"); - break; - case 12: - case 25: - case 26: - case 55: - sprintf(in_rfid_kbn, "01"); - break; - case 13: - case 14: - case 27: - case 28: - case 56: - sprintf(in_rfid_kbn, "03"); - break; - case 33: - sprintf(in_rfid_kbn, "02"); - break; - case 60: - case 61: - case 62: - case 63: - case 64: - case 65: - case 66: - case 67: - sprintf(in_rfid_kbn, "99"); - break; - default: - sprintf(in_rfid_kbn, "00"); - break; - } - - if(lb_data2atoi(tmp, 2) == 53) - sprintf(in_rfid_kbn, "04"); - -#if 0 /*20191009 ݿ */ - snprintf(in_tag, 48+1, "%.24s%.24s", pk_in->tag_id1, pk_in->tag_id2); -#else - snprintf(in_tag, 48+1, "%.4s00%.2s%.2s00%c000000%c0000%.24s", pk_in->wrk_no, rcv_hnd, pk_in->hnd_info.rcpt_div, pk_in->hnd_info.key_yn, pk_in->pre_yn, pk_in->tag_id2); -#endif - -#if 1 /* 2020.06.16 (ڵǴ), KeyԷ¿ ߰ */ - sprintf(in_auto_kind, "%.2s\0", pk_in->hnd_info.rcpt_div); - sprintf(in_key_yn, "%c\0", pk_in->hnd_info.key_yn); -#endif -/* EXEC SQL - SELECT SUBSTR(COUNT(*)+1, 1, 1) - INTO :in_other - FROM FARE_TERMINAL_INFO - WHERE FARE_OFFICE_ID = :in_fare - AND BOOTH_ID = :in_booth - AND YEAR || MONTH || DAY || WORK_TIMES = :in_date - ; - in_other[0] = pk_in->wrk_no[4]; - - if (SQLCODE < 0) - { - proc_log("FARE_TERMINAL_INFO SELECT FAIL[%d][%s]", SQLCODE, sqlca.sqlerrm.sqlerrmc); - return(1); - } -*/ - in_other[0] = pk_in->wrk_no[3]; -#if 1 -/* 2019.07.26 ð߰ */ - snprintf(in_sens_time, 6+1, "%.6s", pk_in->sence_time); -#endif -proc_log("PROC1[%s][%s][%s][%s][%s][%s]", in_id, in_fare, in_booth, in_date, in_seqno, in_rf_seqno); -proc_log("PROC2[%s][%s][%s][%s][%s][%s]", in_car, in_collect, in_army, in_stop, in_move, in_amount); -proc_log("PROC3[%s][%s][%s][%s][%s][%s]", in_x, in_y, in_garo, in_sero, in_card_ret, in_other); -proc_log("PROC4[%s][%s][%s][%s][%s][%s]\n", in_rfid_kbn, in_tag, in_carkind, in_sens_time, in_auto_kind, in_key_yn); - -//proc_log("ó [%02x][%02x][%02x][%02x][%02x][%02x]\n", in_id[4], in_fare[2], in_booth[2], in_date[14], in_seqno[9], in_rf_seqno[9]); -//proc_log("ó [%02x][%02x][%02x][%02x][%02x][%02x]\n", in_car[16], in_collect[2], in_army[1], in_stop[50], in_move[1], in_amount[6]); -//proc_log("ó [%02x][%02x][%02x][%02x][%02x][%02x]\n", in_x[4], in_y[4], in_garo[4], in_sero[4], in_card_ret[1], in_other[1]); -//proc_log("ó [%02x][%02x][%02x]\n", in_rfid_kbn[2], in_tag[48], in_carkind[1]); -#ifdef _ORACLE_ - EXEC SQL INSERT INTO DAY_TRAFFIC_INFO - (FARE_OFFICE_ID, BOOTH_ID, PASS_DATE, PASS_TIME, PASS_SEQNO, CAR_NO, CARS_TYPE_ID, IN_OUT_KBN, CREATE_DATE, CREATER, UPDATE_DATE, UPDATER) - VALUES - (:in_fare, :in_booth, SUBSTR(:in_date, 1, 8), SUBSTR(:in_date, 9, 6), :d_seq, :in_car, :in_carkind, :c_io, sysdate, 'system', sysdate, 'system'); - - if (SQLCODE < 0) - { - proc_log("Day Traffic Info Insert Fail[%d][%s]", SQLCODE, sqlca.sqlerrm.sqlerrmc); - } -#endif -#if 0 //RFID_KBN 02 ó 迡 ߻(2019.09.30) - if(in_carkind[0] == '7') - sprintf(in_rfid_kbn, "02"); -#endif -//proc_log("CAR_KIND[%s]\n", in_carkind); - - sprintf(in_collect_new, "%.2s%c", rcv_hnd, '\0'); - -/* - EXEC SQL EXECUTE - BEGIN SP_FARE_INS_NEW(:in_id, :in_fare, :in_booth, :in_date, :in_seqno, :in_rf_seqno, :in_car, :in_collect, :in_army, :in_stop, :in_move, :in_amount, :in_x, :in_y, :in_garo, :in_sero, :in_card_ret, :in_other, :in_rfid_kbn, :in_tag, :in_carkind, :in_collect_new, :in_sens_time, :ret); - END; - END-EXEC; - - EXEC SQL - Insert Into RF_Terminal_Info - (worker_id, fare_office_id, booth_id, year, month, day, work_times, seqno, - issue_office_id, after_kbn, card_no, in_out_kbn, collect_id, levy_amount, - remaind_amount, card_office_id, terminal_id, sam_id, sam_seqno, - card_seqno, before_amount, algorithm_id, key_version, e_cash_identifier, - sam_tot_seqno, sam_collect_cnt, sam_tot_amount, sign_value, person_code, - zipge_id, alias_no, issue_id, create_date, creater, - update_date, updater, send_flag) - Values - (:in_id || :in_fare, :in_fare, :in_booth, substr(:in_date, 1, 4), substr(:in_date, 5, 2), - substr(:in_date, 7, 2), :work_times, :seqno, v_prefix, v_kbn, - v_card, v_inout, v_collect, v_amount, nvl(to_number(nvl(rtrim(in_re_amount,' '),'0')),0), - v_card_office, v_terminal_id, v_sam_id, nvl(to_number(nvl(rtrim(in_sam_seqno,' '),'0')),0), nvl(to_number(nvl(rtrim(in_card_seqno,' '),'0')),0), - nvl(to_number(nvl(rtrim(in_be_amount,' '),'0')),0), v_algorithm_id, v_key_version, v_e_cash, nvl(to_number(nvl(rtrim(in_sam_tot_seqno,' '),'0')),0), - nvl(to_number(nvl(rtrim(in_sam_collect_cnt,' '),0)),0), nvl(to_number(nvl(rtrim(in_sam_tot_amount,' '),'0')),0), in_sign_value, v_person_code, - v_zipge_id, v_alias_no, v_issue_id, sysdate, 'dekim', - sysdate, 'dekim', '0'); - - if (SQLCODE < 0) - { - proc_log("SP_FARE_INS_NEW 1 CALL FAIL[%d]", sqlca.sqlerrd[4]); - proc_log("SP_FARE_INS_NEW 2 CALL FAIL[%d][%s]", SQLCODE, sqlca.sqlerrm.sqlerrmc); - return(1); - } -*/ -#ifdef _WEBSVR_ - del_space(in_car); - sprintf(orgCarNo, "%.16s", in_car); - - if(strlen(orgCarNo) == 0) - { - memset(in_car, 0x00, sizeof(in_car)); - sprintf(in_car, "????????????"); - }else - { - memset(in_car, 0x00, sizeof(in_car)); - in_size = strlen(orgCarNo); - out_size = sizeof(wchar_t) * in_size * 4; - - in_buf = orgCarNo; - out_buf = szCarNo; - out_buf_left = out_size; - - nResult = iconv(ic, (char *)&in_buf, &in_size, (char *)&out_buf, &out_buf_left); - if(nResult == -1) - { - proc_log("ICONV FAILED [%d]\n", nResult); - } - -//proc_log("ICONV in_size[%d] out_size[%d] [%s]\n", in_size, out_size - out_buf_left, szCarNo); - sprintf(in_car, "%.16s", szCarNo); - } - iconv_close(ic); -#if 0 - sprintf(rBuffer, "%s%s%s%s%s%s%-16s%s%s00%s%s%s%s%s%s%s%s%-48s%s%s%s%s", - in_id, in_fare, in_booth, in_date, in_seqno, in_rf_seqno, - in_car, in_collect, in_army, in_amount, - in_x, in_y, in_garo, in_sero, in_card_ret, in_other, - in_rfid_kbn, in_tag, in_carkind, rcv_hnd, in_sens_time, c_io); -#else /* 2020.06.16 (ڵǴ), KeyԷ¿ DBó ߰ */ - sprintf(rBuffer, "%s%s%s%s%s%s%-16s%s%s00%s%s%s%s%s%s%s%s%-48s%s%s%s%s%s%s", - in_id, in_fare, in_booth, in_date, in_seqno, in_rf_seqno, - in_car, in_collect, in_army, in_amount, - in_x, in_y, in_garo, in_sero, in_card_ret, in_other, - in_rfid_kbn, in_tag, in_carkind, rcv_hnd, in_sens_time, c_io, in_auto_kind, in_key_yn); -#endif - //sprintf(rBuffer, "%08d", SQLCODE); - memcpy(rtn, &rBuffer, strlen(rBuffer)); -#endif - - proc_log("ó [%.8s] [%d]óϷ", in_date, SQLCODE); - - return 0; -} - -/* - *======================================================================== - * - * : proc_card_data() - * : - * : 2019.06.10 - * : - * : ī ó - * - *======================================================================== -*/ - -int proc_card_data(char *target, char *rtn) -{ - struct rcv_lane_data *rd; - struct hi_crd_hnd_data *pk_in; - int iCrjb; - int start_sno; - int end_sno; - int ii, size, stsize; - char tmp[10+1]; memset(tmp, 0x00, sizeof(tmp)); - char path[256]; memset(path, 0x00, sizeof(path)); - char tmp_iss_cd[7]; memset(tmp_iss_cd, 0x00, sizeof(tmp_iss_cd)); - char rBuffer[MAX_STRING_SIZE+1]; - FILE *fp; - struct iss_comp_tbl iss_comp_tbl_f; - struct stat file_info; - -//EXEC SQL BEGIN DECLARE SECTION; - char in_id[4+1]; - char in_fare[2+1]; - char in_booth[2+1]; - char in_date[8+1]; - char in_time[6+1]; - char in_seqno[9+1]; - char in_kbn[1+1]; - char in_card[16+1]; - char in_collect[2+1]; - char in_be_amount[8+1]; - char in_amount[8+1]; - char in_re_amount[8+1]; - char in_terminal_id[9+1]; - char in_sam_id[16+1]; - char in_sam_seqno[10+1]; - char in_card_seqno[10+1]; - char in_algorithm_id[2+1]; - char in_key_version[2+1]; - char in_e_cash[2+1]; - char in_sam_tot_seqno[10+1]; - char in_sam_collect_cnt[5+1]; - char in_sam_tot_amount[10+1]; - char in_sign_value[8+1]; - char in_person_code[2+1]; - char in_zipge_id[12+1]; - char in_alias_no[10+1]; - char in_issue_id[7+1]; - int ret = 3; -//EXEC SQL END DECLARE SECTION; - - memset(in_id , 0x00, sizeof(in_id )); - memset(in_fare , 0x00, sizeof(in_fare )); - memset(in_booth , 0x00, sizeof(in_booth )); - memset(in_date , 0x00, sizeof(in_date )); - memset(in_time , 0x00, sizeof(in_time )); - memset(in_seqno , 0x00, sizeof(in_seqno )); - memset(in_kbn , 0x00, sizeof(in_kbn )); - memset(in_card , 0x00, sizeof(in_card )); - memset(in_collect , 0x00, sizeof(in_collect )); - memset(in_be_amount , 0x00, sizeof(in_be_amount )); - memset(in_amount , 0x00, sizeof(in_amount )); - memset(in_re_amount , 0x00, sizeof(in_re_amount )); - memset(in_terminal_id , 0x00, sizeof(in_terminal_id )); - memset(in_sam_id , 0x00, sizeof(in_sam_id )); - memset(in_sam_seqno , 0x00, sizeof(in_sam_seqno )); - memset(in_card_seqno , 0x00, sizeof(in_card_seqno )); - memset(in_algorithm_id , 0x00, sizeof(in_algorithm_id )); - memset(in_key_version , 0x00, sizeof(in_key_version )); - memset(in_e_cash , 0x00, sizeof(in_e_cash )); - memset(in_sam_tot_seqno , 0x00, sizeof(in_sam_tot_seqno )); - memset(in_sam_collect_cnt, 0x00, sizeof(in_sam_collect_cnt)); - memset(in_sam_tot_amount , 0x00, sizeof(in_sam_tot_amount )); - memset(in_sign_value , 0x00, sizeof(in_sign_value )); - memset(in_person_code , 0x00, sizeof(in_person_code )); - memset(in_zipge_id , 0x00, sizeof(in_zipge_id )); - memset(in_alias_no , 0x00, sizeof(in_alias_no )); - memset(in_issue_id , 0x00, sizeof(in_issue_id )); - - //rtn = (char *)rBuffer; - rd = (struct rcv_lane_data *)target; -//proc_log("īó[%s]\n", rd->buf); - pk_in = (struct hi_crd_hnd_data *)rd->buf; - - sprintf(in_id, "%.4s", pk_in->wrkr_no); - sprintf(in_fare, "%.2s", pk_in->plz_id); - sprintf(in_booth, "%.2s", rd->lane_no); - - sprintf(in_date, "%.8s", pk_in->wrk_date); - sprintf(in_time, "%.2s%.2s%.2s", pk_in->hnd_hour, pk_in->hnd_min, pk_in->hnd_sec); - -//Ģ - sprintf(tmp, "%.6s%c", pk_in->serial_no, '\0'); - sprintf(in_seqno, "%c%.2s%05d", pk_in->plz_id[1], rd->lane_no, lb_data2atoi(tmp, 6)); //10->9 -//sprintf(in_seqno, "%08d", lb_data2atoi(tmp, 6)); //10->9 -// Ģ Ȯ ʿ(ī 3, 8) - -//if(lb_data2atoi(tmp, 2) > 19 && lb_data2atoi(tmp, 2) < 30) -//{ - //sprintf(in_seqno, "%c%.2s%05d", pk_in->plz_id[1], rd->lane_no, lb_data2atoi(tmp, 6)); //10->9 -//} - //sprintf(tmp, "%.2s%c", pk_in->crd_kind, '\0'); -/* - switch(lb_data2atoi(tmp, 2)) - { - case 0: - sprintf(in_kbn, "3"); - break; - case 9: - case 10: - case 11: - case 12: - sprintf(in_kbn, "4"); - break; - case 3: - case 8: - if(ii = 0) sprintf(in_kbn, "4"); - else sprintf(in_kbn, "2"); - break; - default : - sprintf(in_kbn, "2"); - break; - } -*/ - - memset(tmp, 0x00, sizeof(tmp)); - sprintf(tmp, "%.6s%c", pk_in->rcpt_money, '\0'); - sprintf(in_amount, "%8u", lb_data2atoi(tmp, 6)); - in_kbn[0] = pk_in->pre_div; -//proc_log("ĺұ[%cs[%c]\n", in_kbn, pk_in->pre_div); - sprintf(in_card, "%.16s", pk_in->crd_no); - sprintf(tmp, "%.2s%c", pk_in->rcpt_div, '\0'); - switch(lb_data2atoi(tmp, 2)) - { - case 10: - sprintf(in_collect, "10"); - break; - case 11: - case 12: - case 13: - case 14: - sprintf(in_collect, "11"); - break; - case 20: - sprintf(in_collect, "20"); - break; - case 21: - sprintf(in_collect, "21"); - break; - case 22: - sprintf(in_collect, "22"); - break; - case 23: - case 25: - case 27: - case 62: - case 63: - case 64: - case 66: - sprintf(in_collect, "23"); - break; - case 24: - case 26: - case 28: - sprintf(in_collect, "24"); - break; - case 30: - sprintf(in_collect, "30"); - break; - case 31: - case 35: - case 36: - case 37: - case 38: - case 39: - case 70: - case 72: - case 73: - case 75: - case 76: - case 77: - case 78: - case 79: - sprintf(in_collect, "34"); - break; - case 32: - sprintf(in_collect, "32"); - break; - case 33: - sprintf(in_collect, "33"); - break; - case 34: - case 65: - case 67: - sprintf(in_collect, "30"); - break; - case 71: - case 74: - sprintf(in_collect, "31"); - break; - case 40: - case 41: - sprintf(in_collect, "40"); - break; - case 50: - sprintf(in_collect, "50"); - break; - case 51: - sprintf(in_collect, "51"); - break; - case 52: - sprintf(in_collect, "52"); - break; - case 53: - case 55: - case 56: - sprintf(in_collect, "53"); - break; - case 54: - sprintf(in_collect, "54"); - break; - case 60: - if(lb_data2atoi(in_amount, 6) > 1000) - sprintf(in_collect, "21"); - else - sprintf(in_collect, "23"); - break; - default: - sprintf(in_collect, "00"); - break; - } - //sprintf(in_collect, "%.2s", pk_in->rcpt_div); - - sprintf(tmp, "%.8s%c", pk_in->bef_rcpt_balc, '\0'); - sprintf(in_be_amount, "%8u", lb_data2atoi(tmp, 8)); - - sprintf(tmp, "%.8s%c", pk_in->aft_rcpt_balc, '\0'); - sprintf(in_re_amount, "%8u", lb_data2atoi(tmp, 8)); - - sprintf(in_terminal_id, "%.9s", pk_in->terminal_no+1); - sprintf(in_sam_id, "%.16s", pk_in->psam_id); -#if 1 //Hexa -> Decimal - sprintf(tmp, "%.8s%c", pk_in->deal_ser_no, '\0'); - sprintf(in_sam_seqno, "%010u", strtoul(tmp, NULL, 16)); -#else // Hexa - sprintf(in_sam_seqno, "%.8s%c", pk_in->deal_ser_no, '\0'); -#endif - -#if 0 //Hexa -> Decimal - sprintf(tmp, "%.10s%c", pk_in->crd_ser_no, '\0'); - sprintf(in_card_seqno, "%010u", strtoul(tmp, NULL, 16)); -#else // Hexa (OK) - sprintf(in_card_seqno, "%.10s%c", pk_in->crd_ser_no, '\0'); -#endif - sprintf(in_algorithm_id, "%.2s", pk_in->alg_id); - sprintf(in_key_version, "%.2s", pk_in->ind_sign1); - sprintf(in_e_cash, "%.2s", pk_in->id_center); -#if 1 //Hexa -> Decimal - sprintf(tmp, "%.8s%c", pk_in->rcpt_deal_ser, '\0'); - sprintf(in_sam_tot_seqno, "%010u", strtoul(tmp, NULL, 16)); -#else // Hexa - sprintf(in_sam_tot_seqno, "%.8s%c", pk_in->rcpt_deal_ser, '\0'); -#endif -#if 1 //Hexa -> Decimal - sprintf(tmp, "%.4s%c", pk_in->ind_iss_cnt, '\0'); - sprintf(in_sam_collect_cnt, "%05u", strtoul(tmp, NULL, 16)); -#else - sprintf(in_sam_collect_cnt, "%.4s%c", pk_in->ind_iss_cnt, '\0'); -#endif -#if 1 - sprintf(tmp, "%.8s%c", pk_in->deal_tot, '\0'); - sprintf(in_sam_tot_amount, "%010d", strtoul(tmp, NULL, 16)); -#else - sprintf(in_sam_tot_amount, "%.8s%c", pk_in->deal_tot, '\0'); -#endif - sprintf(in_sign_value, "%.8s", pk_in->psam_sign1); - sprintf(in_person_code, "%.2s", pk_in->another); - sprintf(in_zipge_id, "9100000000%.2s", rd->lane_no); -#if 0 // Hexa -> Decimal - sprintf(tmp, "%.10s%c", pk_in->alias_no, '\0'); - sprintf(in_alias_no, "%010u", strtoul(tmp, NULL, 16)); -#else - sprintf(in_alias_no, "%.10s", pk_in->alias_no); -#endif - sprintf(tmp_iss_cd, "%.6s%c", pk_in->crd_no, '\0'); - stsize = sizeof(struct iss_comp_tbl); -//proc_log("BIN_CODE[%.6s]\n", tmp_iss_cd); - -#if 0 - sprintf(path, "%s/%s/ISSTBL", DIR_TCS, DIR_BASEINFO); - fp = fopen(path, "r+"); - if( 0 > stat(path, &file_info)) - { - proc_log(" \n"); - }else - { - size = file_info.st_size; -//proc_log(" Size[%d]\n", size); - for(ii = 0; ii < (size / stsize); ii++) - { - //fseek(fp, ii * stsize, SEEK_SET); - fread(&iss_comp_tbl_f, stsize, 1, fp); -//proc_log("[%d]FILE BIN[%.6s] ISSCD[%.6s]\n", ii, iss_comp_tbl_f.bin_code+2, tmp_iss_cd); - if(strncmp(iss_comp_tbl_f.bin_code+2, tmp_iss_cd, 6) == 0) - break; - } - } - - close(fp); -#endif - -#if 0 //LG ? - if(strncmp(iss_comp_tbl_f.issue_cd, "2000400", 7) == 0) - sprintf(in_issue_id, "2000700"); - else snprintf(in_issue_id, 7+1, "%.7s", iss_comp_tbl_f.issue_cd); -#else - //snprintf(in_issue_id, 7+1, "%.7s", iss_comp_tbl_f.issue_cd); - sprintf(in_issue_id, "2000700"); -#endif - -proc_log("CARD1[%s][%s][%s][%s][%s][%s]", in_id, in_fare, in_booth, in_date, in_time, in_seqno); -proc_log("CARD2[%s][%s][%s][%s][%s][%s][%s]", in_kbn, in_card, in_collect, in_be_amount, in_amount, in_re_amount, in_terminal_id); -proc_log("CARD3[%s][%s][%s][%s][%s][%s]", in_sam_id, in_sam_seqno, in_card_seqno, in_algorithm_id, in_key_version, in_e_cash); -proc_log("CARD4[%s][%s][%s][%s][%s][%s]", in_sam_tot_seqno, in_sam_collect_cnt, in_sam_tot_amount, in_sign_value, in_person_code, in_zipge_id); -proc_log("CARD5[%s][%s]\n", in_alias_no, in_issue_id); -#ifdef _ORACLE_ -EXEC SQL EXECUTE -BEGIN SP_RF_INS_NEW(:in_id, :in_fare, :in_booth, :in_date, :in_time, :in_seqno, :in_kbn, :in_card, :in_collect, :in_be_amount, :in_amount, :in_re_amount, :in_terminal_id, :in_sam_id, :in_sam_seqno, :in_card_seqno, :in_algorithm_id, :in_key_version, :in_e_cash, :in_sam_tot_seqno, :in_sam_collect_cnt, :in_sam_tot_amount, :in_sign_value, :in_person_code, :in_zipge_id, :in_alias_no, :in_issue_id, :ret); -END; -END-EXEC; - if (SQLCODE < 0) - { - proc_log("SP_RF_INS CALL FAIL[%d][%s]", SQLCODE, sqlca.sqlerrm.sqlerrmc); - return(1); - } -#endif -#ifdef _WEBSVR_ - sprintf(rBuffer, "%s%s%s%s%s%s%s%s%s%08d%08d%08d%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s", - in_id, in_fare, in_booth, in_date, in_time, in_seqno, - in_kbn, in_card, in_collect, lb_data2atoi(in_be_amount, 8), lb_data2atoi(in_amount, 8), lb_data2atoi(in_re_amount, 8), - in_terminal_id, in_sam_id, in_sam_seqno, in_card_seqno, in_algorithm_id, in_key_version, in_e_cash, - in_sam_tot_seqno, in_sam_collect_cnt, in_sam_tot_amount, in_sign_value, in_person_code, in_zipge_id, - in_alias_no, in_issue_id); - - //sprintf(rBuffer, "%08d", SQLCODE); - memcpy(rtn, &rBuffer, strlen(rBuffer)); -#endif - proc_log("īó [%.8s] [%d]óϷ", in_date, SQLCODE); - usleep(100000); - return 0; -} - -/* - *======================================================================== - * - * : proc_wrk_end() - * : - * : 2019.06.10 - * : - * : ٹ ó - * - *======================================================================== -*/ - -int proc_wrk_end(char *target, char *rtn) -{ - struct rcv_lane_data *rd; - struct hi_wrk_end *pk_in; - int iCrjb; - int start_sno; - int end_sno; - int ii; - char rBuffer[MAX_STRING_SIZE+1]; - char hnd_div[2+1]; - -//EXEC SQL BEGIN DECLARE SECTION; - char year[4+1]; - char mon[2+1]; - char day[2+1]; - - char in_id[4+1]; - char in_fare[2+1]; - char in_booth[2+1]; - char in_st_date[14+1]; - char in_ed_date[14+1]; - int in_cash = 0; - int in_k_cash = 0; - int in_free = 0; - int in_minap = 0; - int in_coupon = 0; - int in_k_coupon = 0; - int in_sun = 0; - int in_k_sun = 0; - int in_who = 0; - int in_k_who = 0; - int in_sale = 0; - int in_k_sale = 0; - int in_total_amount = 0; - int in_repay_q = 0; - int in_repay_m = 0; - int in_prp_q = 0; - int in_prp_m = 0; - int in_k_prp_q = 0; - int in_k_prp_m = 0; - int in_seqno = 0; - int ret = -1; -//EXEC SQL END DECLARE SECTION; - - memset(year, 0x00, sizeof(year)); - memset(mon , 0x00, sizeof(mon )); - memset(day , 0x00, sizeof(day )); - - memset(in_id , 0x00, sizeof(in_id )); - memset(in_fare , 0x00, sizeof(in_fare )); - memset(in_booth , 0x00, sizeof(in_booth )); - memset(in_st_date, 0x00, sizeof(in_st_date)); - memset(in_ed_date, 0x00, sizeof(in_ed_date)); - - char tmp[10]; memset(tmp, 0x00, sizeof(tmp)); - - //rtn = (char *)rBuffer; - rd = (struct rcv_lane_data *)target; - pk_in = (struct hi_wrk_end *)rd->buf; - start_sno = lb_data2atoi(rd->st_snd_no, 10); - end_sno = lb_data2atoi(pk_in->seq_no, 10); - - sprintf(in_id, "%.4s", pk_in->wrkr_no); - sprintf(in_fare, "%.2s", rd->plz_id); - sprintf(in_booth, "%.2s", rd->lane_no); - sprintf(in_st_date, "%.4s%.2s%.2s%.2s%.2s%.2s", - pk_in->wrk_start_year, pk_in->wrk_start_month, pk_in->wrk_start_day, - pk_in->wrk_start_hour, pk_in->wrk_start_min, pk_in->wrk_start_sec); - sprintf(in_ed_date, "%.4s%.2s%.2s%.2s%.2s%.2s", - pk_in->wrk_end_year, pk_in->wrk_end_month, pk_in->wrk_end_day, - pk_in->wrk_end_hour, pk_in->wrk_end_min, pk_in->wrk_end_sec); - -/* ˻ Է */ - sprintf(year, "%.4s", pk_in->wrk_start_year); - sprintf(mon, "%.2s", pk_in->wrk_start_month); - sprintf(day, "%.2s", pk_in->wrk_start_day); - - for(ii = 0; ii < 50; ii++) - { - switch(lb_data2atoi(pk_in->hnd_cnt[ii].div, 2)) - { - case 10: - in_cash += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - break; - case 11: - case 12: - case 13: - case 14: - in_k_cash += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - break; - case 30: - case 31: - case 32: - case 33: - case 34: - case 35: - case 36: - case 37: - case 38: - case 39: - case 70: - case 71: - case 72: - case 73: - case 74: - case 75: - case 76: - case 77: - case 78: - case 79: - in_free += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - break; - case 40: - case 41: - case 65: - case 67: - in_minap += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - break; - case 51: - in_coupon += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - break; - case 53: - case 55: - case 56: - in_k_coupon += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - break; - case 21: - case 60: - case 61: - case 62: - case 63: - case 64: - case 66: - in_sun += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - break; - case 23: - case 25: - case 27: - in_k_sun += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - break; - case 22: - in_who += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - break; - case 24: - case 26: - case 28: - in_k_who += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - break; - case 52: - in_sale += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - break; - case 54: - in_k_sale += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - break; - } - } - - in_total_amount = lb_data2atoi(pk_in->tot_fare, 8); - in_repay_q = lb_data2atoi(pk_in->repay_cnt, 4); - in_repay_m = lb_data2atoi(pk_in->repay_fare, 8); - - in_seqno = pk_in->wrk_no[3] - '0'; - - if (SQLCODE < 0) - { - proc_log("FARE_ADJUST_INFO Select FAIL[%d][%s]", SQLCODE, sqlca.sqlerrm.sqlerrmc); - hi_comm_ctrl.write_info.return_code = HNDSTAT(J_DATA,S_TBL_ERR); - return(1); - } - -/* EXEC SQL PREPARE sProc FROM :stmt; */ -/* EXEC SQL EXECUTE sProc USING :pr_out.in_id, :pr_out.in_fare, :pr_out.in_booth, :pr_out.in_st_date, :pr_out.in_ed_date, :pr_out.in_cash, :pr_out.in_k_cash, :pr_out.in_free, :pr_out.in_minap, :pr_out.in_coupon, :pr_out.in_k_coupon, :pr_out.in_sun, :pr_out.in_k_sun, :pr_out.in_who, :pr_out.in_k_who, :pr_out.in_sale, :pr_out.in_k_sale, :pr_out.in_total_amount, :pr_out.in_repay_q, :pr_out.in_repay_m, :pr_out.in_seqno, :ret; */ - -/* - EXEC SQL CALL SP_ADJUST_INS(:pr_out.in_id, :pr_out.in_fare, :pr_out.in_booth, :pr_out.in_st_date, :pr_out.in_ed_date, - :pr_out.in_cash, :pr_out.in_k_cash, :pr_out.in_free, :pr_out.in_minap, :pr_out.in_coupon, - :pr_out.in_k_coupon, :pr_out.in_sun, :pr_out.in_k_sun, :pr_out.in_who, :pr_out.in_k_who, - :pr_out.in_sale, :pr_out.in_k_sale, :pr_out.in_total_amount, :pr_out.in_repay_q, :pr_out.in_repay_m, - :pr_out.in_seqno, :ret); -*/ -#ifdef _ORACLE_ -EXEC SQL EXECUTE -BEGIN SP_ADJUST_INS(:in_id, :in_fare, :in_booth, :in_st_date, :in_ed_date, :in_cash, :in_k_cash, :in_free, :in_minap, :in_coupon, :in_k_coupon, :in_sun, :in_k_sun, :in_who, :in_k_who, :in_sale, :in_k_sale, :in_total_amount, :in_repay_q, :in_repay_m, :in_seqno, :ret); -END; -END-EXEC; - - if (SQLCODE < 0) - { - proc_log("SP_ADJUST_INS CALL FAIL[%d][%s]", SQLCODE, sqlca.sqlerrm.sqlerrmc); - hi_comm_ctrl.write_info.return_code = HNDSTAT(J_DATA,S_TBL_ERR); - return(1); - } -#endif -#ifdef _WEBSVR_ -/* - in_cash = 0; - in_k_cash = 0; - in_free = 0; - in_minap = 0; - in_coupon = 0; - in_k_coupon = 0; - in_sun = 0; - in_k_sun = 0; - in_who = 0; - in_k_who = 0; - in_sale = 0; - in_k_sale = 0; - - for(ii = 0; ii < 50; ii++) - { - switch(lb_data2atoi(pk_in->hnd_cnt[ii].div, 2)) - { - case 10: - in_cash += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - break; - case 11: - case 12: - case 13: - case 14: - in_k_cash += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - break; - case 30: - case 31: - case 32: - case 33: - case 34: - case 35: - case 36: - case 37: - case 38: - case 39: - case 70: - case 71: - case 72: - case 73: - case 74: - case 75: - case 76: - case 77: - case 78: - case 79: - in_free += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - break; - case 40: - case 41: - in_minap += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - break; - case 60: - case 61: - in_prp_q += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - in_prp_m += lb_data2atoi(pk_in->hnd_cnt[ii].fare, 8); - break; - case 62: - case 63: - case 64: - case 65: - case 66: - case 67: - in_k_prp_q += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - in_k_prp_m += lb_data2atoi(pk_in->hnd_cnt[ii].fare, 8); - break; - case 51: - in_coupon += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - break; - case 53: - case 55: - case 56: - in_k_coupon += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - break; - case 21: - in_sun += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - break; - case 23: - case 25: - case 27: - in_k_sun += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - break; - case 22: - in_who += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - break; - case 24: - case 26: - case 28: - in_k_who += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - break; - case 52: - in_sale += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - break; - case 54: - in_k_sale += lb_data2atoi(pk_in->hnd_cnt[ii].cnt, 4); - break; - } - } -*/ - sprintf(rBuffer, "%s%s%s%s%s%04d%04d%04d%04d%04d%04d%04d%04d%04d%04d%04d%04d%08d%04d%08d%04d%08d%04d%08d%d", - in_id, in_fare, in_booth, in_st_date, in_ed_date, - in_cash, in_k_cash, in_free, in_minap, in_coupon, in_k_coupon, in_sun, in_k_sun, - in_who, in_k_who, in_sale, in_k_sale, in_total_amount, in_repay_q, - in_repay_m, in_prp_q, in_prp_m, in_k_prp_q, in_k_prp_m, in_seqno); - - //sprintf(rBuffer, "%08d", SQLCODE); - memcpy(rtn, &rBuffer, strlen(rBuffer)); -#endif - - proc_log("ٹ [%.8s] [%d]óϷ", in_ed_date, SQLCODE); - - return 0; -} - -/* - *======================================================================== - * - * : proc_refund() - * : - * : 2019.07.01 - * : - * : ȯó ó - * - *======================================================================== -*/ - -int proc_refund(char *target, char *rtn) -{ - struct rcv_lane_data *rd; - struct hi_refund_data *pk_in; - int iCrjb; - int end_sno; - int ii, nResult; - char rBuffer[MAX_STRING_SIZE+1]; - char rcv_hnd[2+1]; - char tmp_seq[9+1]; - char tmp[10+1]; -#if 0 -EXEC SQL BEGIN DECLARE SECTION; - char in_wrkr_id[6+1]; - char in_fare[2+1]; - char in_booth[2+1]; - char in_year[4+1]; - char in_month[2+1]; - char in_day[2+1]; - char in_wrk_time[6+1]; - int in_seqno; - char in_refund[1+1]; - - int ret = -1; -EXEC SQL END DECLARE SECTION; -//proc_log("1-1\n"); - memset(in_wrkr_id , 0x00, sizeof(in_wrkr_id )); - memset(in_fare , 0x00, sizeof(in_fare )); - memset(in_booth , 0x00, sizeof(in_booth )); - memset(in_year , 0x00, sizeof(in_year )); - memset(in_month , 0x00, sizeof(in_month )); - memset(in_day , 0x00, sizeof(in_day )); - memset(in_wrk_time, 0x00, sizeof(in_wrk_time)); - //memset(in_seqno , 0x00, sizeof(in_seqno )); - memset(in_refund , 0x00, sizeof(in_refund )); -//proc_log("1-2\n"); - char tmp[10]; memset(tmp, 0x00, sizeof(tmp)); -//proc_log("1-3\n"); - //rtn = (char *)rBuffer; - rd = (struct rcv_lane_data *)target; - pk_in = (struct hi_refund_data *)rd->buf; -//proc_log("1[%.2s][%.4s]\n", pk_in->plz_id, pk_in->wrkr_no); - sprintf((char *)in_wrkr_id, "%.2s%.4s", pk_in->plz_id, pk_in->wrkr_no); - sprintf((char *)in_fare, "%.2s", rd->plz_id); -//proc_log("1-1[%.2s]\n", rd->lane_no); - sprintf((char *)in_booth, "%.2s", rd->lane_no); - sprintf(tmp, "%.6s%c", pk_in->serial_no, '\0'); - sprintf(tmp_seq, "%c%.2s%05d", pk_in->plz_id[1], rd->lane_no, lb_data2atoi(tmp, 6)); //10->9 - in_seqno = lb_data2atoi(tmp_seq, 8); -//proc_log("2[%.4s]\n", pk_in->hnd_year); - sprintf((char *)in_year, "%.4s", pk_in->hnd_year); -//proc_log("2-1[%.2s]\n", pk_in->hnd_month); - sprintf((char *)in_month, "%.2s", pk_in->hnd_month); -//proc_log("2-2[%.2s]\n", pk_in->hnd_day); - sprintf((char *)in_day, "%.2s", pk_in->hnd_day); -//proc_log("2-3[%.2s][%.8s]\n", pk_in->hnd_hour, pk_in->hnd_min, pk_in->hnd_sec, pk_in->serial_no); - sprintf((char *)in_wrk_time, "%.2s%.2s%.2s", pk_in->hnd_hour, pk_in->hnd_min, pk_in->hnd_sec); -//proc_log("3[%s][%s][%s][%s][%s][%s][%s][%d][%c]\n", in_wrkr_id, in_fare, in_booth, in_year, in_month, in_day, in_wrk_time, in_seqno, pk_in->refund_key); - sprintf((char *)in_refund, "%c", pk_in->refund_key); -//proc_log("4[%s]\n", in_refund); -#ifdef _ORACLE_ - EXEC SQL - UPDATE FARE_TERMINAL_INFO - SET C_REPAY_KBN = :in_refund - WHERE WORKER_ID = :in_wrkr_id - AND FARE_OFFICE_ID = :in_fare - AND BOOTH_ID = :in_booth - AND YEAR = :in_year - AND MONTH = :in_month - AND DAY = :in_day - AND WORK_TIMES = :in_wrk_time - AND SEQNO = :in_seqno - ; -//proc_log("5\n"); - if (SQLCODE < 0) - { - proc_log("FARE_TERMINAL_INFO UPDATE FAIL[%d][%s]", SQLCODE, sqlca.sqlerrm.sqlerrmc); - hi_comm_ctrl.write_info.return_code = HNDSTAT(J_DATA,S_TBL_ERR); - return(1); - } -#endif - sprintf(rBuffer, "%08d", SQLCODE); - - //proc_log("ȯó [%d]óϷ", SQLCODE); -#else - -//EXEC SQL BEGIN DECLARE SECTION; - char in_id[4+1]; - char in_fare[2+1]; - char in_booth[2+1]; - char in_date[14+1]; - char in_seqno[9+1]; - char in_rf_seqno[9+1]; - char in_car[16+1]; - char in_collect[2+1]; - char in_army[1+1]; - - char in_stop[50+1]; - char in_move[32+1]; - char in_amount[6+1]; - char in_x[4+1]; - char in_y[4+1]; - char in_garo[4+1]; - char in_sero[4+1]; - char in_card_ret[1+1]; - char in_other[1+1]; - char in_rfid_kbn[2+1]; - char in_tag[48+1]; - char in_carkind[1+1]; - char in_sens_time[6+1]; - char in_collect_new[2+1]; - - char c_io[1+1]; - int d_seq = 0; - int ret = 3; - -//EXEC SQL END DECLARE SECTION; -#ifdef _WEBSVR_ - size_t in_size; - size_t out_size; - size_t out_buf_left; - char orgCarNo[255+1]; - char szCarNo[255+1]; - char* in_buf; - char* out_buf; - - memset(orgCarNo, 0x00, sizeof(orgCarNo)); - memset(szCarNo, 0x00, sizeof(szCarNo)); - - iconv_t ic = iconv_open("UTF-8", "EUC-KR"); - - if(ic == (iconv_t) -1) - { - proc_log("###### Not Supported ICONV Code ###### \n"); - } -#endif - memset(in_id , 0x00, sizeof(in_id )); - memset(in_fare , 0x00, sizeof(in_fare )); - memset(in_booth , 0x00, sizeof(in_booth )); - memset(in_date , 0x00, sizeof(in_date )); - memset(in_seqno , 0x00, sizeof(in_seqno )); - memset(in_rf_seqno, 0x00, sizeof(in_rf_seqno)); - memset(in_car , 0x00, sizeof(in_car )); - memset(in_collect , 0x00, sizeof(in_collect )); - memset(in_army , 0x00, sizeof(in_army )); - - memset(in_stop , 0x00, sizeof(in_stop )); - memset(in_move , 0x00, sizeof(in_move )); - memset(in_amount , 0x00, sizeof(in_amount )); - memset(in_x , 0x00, sizeof(in_x )); - memset(in_y , 0x00, sizeof(in_y )); - memset(in_garo , 0x00, sizeof(in_garo )); - memset(in_sero , 0x00, sizeof(in_sero )); - memset(in_card_ret, 0x00, sizeof(in_card_ret)); - memset(in_other , 0x00, sizeof(in_other )); - memset(in_rfid_kbn, 0x00, sizeof(in_rfid_kbn)); - memset(in_tag , 0x00, sizeof(in_tag )); - memset(in_carkind , 0x00, sizeof(in_carkind )); - memset(in_sens_time , 0x00, sizeof(in_sens_time )); - - //rtn = (char *)rBuffer; - rd = (struct rcv_lane_data *)target; - pk_in = (struct hi_hnd_data *)rd->buf; - - sprintf(in_id, "%.4s", pk_in->wrkr_no); - sprintf(in_fare, "%.2s", pk_in->plz_id); - sprintf(in_booth, "%.2s", rd->lane_no); - sprintf(in_date, "%.8s%.2s%.2s%.2s", pk_in->wrk_date, pk_in->hnd_info.hnd_hour, pk_in->hnd_info.hnd_min, pk_in->hnd_info.hnd_sec); - - sprintf(c_io, "%c", pk_in->io_div); - -//Ģ - //sprintf(in_seqno, "%c%.2s%05d", pk_in->plz_id[1], rd->lane_no, lb_data2atoi(pk_in->serial_no, 6)); //10->9 - //sprintf(in_rf_seqno, "%c%.2s%05d", pk_in->plz_id[1], rd->lane_no, lb_data2atoi(pk_in->serial_no, 6)); - sprintf(in_seqno, "%08u", lb_data2atoi(pk_in->serial_no, 6)); //10->9 - sprintf(in_rf_seqno, "%08u", lb_data2atoi(pk_in->serial_no, 6)); - - d_seq = lb_data2atoi(pk_in->sence_seq_no, 6); - - sprintf(in_car, "%.16s", pk_in->car_no1); - del_space(in_car); - - if(strlen(in_car) == 0) - strncpy(in_car, "????????????", 12); - - memcpy(rcv_hnd, pk_in->hnd_info.rcpt_hnd, 2); - rcv_hnd[2] = '\0'; - - switch(lb_data2atoi(rcv_hnd, 2)) - { - case 31: - sprintf(in_carkind, "6"); - break; - case 36: - sprintf(in_carkind, "7"); - break; - default: - sprintf(in_carkind, "%c", pk_in->car_kind); - break; - } - - if(lb_data2atoi(rcv_hnd, 2) > 19 && lb_data2atoi(rcv_hnd, 2) < 30) - { - sprintf(in_seqno, "%c%.2s%05d", pk_in->plz_id[1], rd->lane_no, lb_data2atoi(pk_in->serial_no, 6)); //10->9 - sprintf(in_rf_seqno, "%c%.2s%05d", pk_in->plz_id[1], rd->lane_no, lb_data2atoi(pk_in->serial_no, 6)); - } - - switch(lb_data2atoi(rcv_hnd, 2)) - { - case 10: - sprintf(in_collect, "10"); - break; - case 11: - case 12: - case 13: - case 14: - sprintf(in_collect, "11"); - break; - case 20: - sprintf(in_collect, "20"); - break; - case 21: - sprintf(in_collect, "21"); - break; - case 22: - sprintf(in_collect, "22"); - break; - case 23: - case 25: - case 27: - sprintf(in_collect, "23"); - break; - case 24: - case 26: - case 28: - sprintf(in_collect, "24"); - break; - case 30: - sprintf(in_collect, "30"); - break; - case 31: - case 35: - case 36: - case 37: - case 38: - case 39: - case 70: - case 72: - case 73: - case 75: - case 76: - case 77: - case 78: - case 79: - sprintf(in_collect, "34"); - break; - case 32: - sprintf(in_collect, "32"); - break; - case 33: - sprintf(in_collect, "33"); - break; - case 34: - case 65: - case 67: - sprintf(in_collect, "30"); - break; - case 71: - case 74: - sprintf(in_collect, "31"); - break; - case 40: - case 41: - case 60: - case 61: - case 62: - case 63: - case 64: - case 66: - sprintf(in_collect, "40"); - break; - case 50: - sprintf(in_collect, "50"); - break; - case 51: - sprintf(in_collect, "51"); - break; - case 52: - sprintf(in_collect, "52"); - break; - case 53: - case 55: - case 56: - sprintf(in_collect, "53"); - break; - case 54: - sprintf(in_collect, "54"); - break; - default: - sprintf(in_collect, "00"); - break; - } - - in_army[0] = '0'; - - sprintf(in_stop, "%.8s_%.2s%.2s%.2s00_%06d%.2s_%c%.2s%c_%s_%c", - pk_in->wrk_date, pk_in->hnd_info.hnd_hour, pk_in->hnd_info.hnd_min, pk_in->hnd_info.hnd_sec, - lb_data2atoi(pk_in->serial_no, 6), pk_in->hnd_info.rcpt_hnd, pk_in->plz_id[1], rd->lane_no, pk_in->io_div, - in_car, pk_in->car_kind); - - in_move[0] = ' '; -// - sprintf(in_amount, "%.6s", pk_in->hnd_info.pass_fare); - -// - memcpy(in_x, pk_in->x_point+1, 3); - in_x[3] = '\0'; -// - memcpy(in_y, pk_in->y_point+1, 3); - in_y[3] = '\0'; -// - memcpy(in_garo, pk_in->img_width+1, 3); - in_garo[3] = '\0'; -// - memcpy(in_sero, pk_in->img_heigh+1, 3); - in_sero[3] = '\0'; - - sprintf((char *)in_card_ret, "%c", pk_in->hnd_info.refund_yn); - //sprintf(in_rfid_kbn, "%c", pk_in->hnd_info.issue_code[0]); - - switch(lb_data2atoi(rcv_hnd, 2)) - { - case 10: - case 11: - case 20: - case 21: - case 22: - case 23: - case 24: - case 30: - case 31: - case 32: - case 34: - case 35: - case 36: - case 37: - case 38: - case 39: - case 70: - case 71: - case 72: - case 73: - case 74: - case 75: - case 76: - case 77: - case 78: - case 79: - case 40: - case 41: - case 50: - case 51: - case 52: - case 53: - case 54: - case 60: - case 61: - case 62: - case 63: - case 64: - case 65: - case 66: - case 67: - sprintf(in_rfid_kbn, "00"); - break; - case 12: - case 25: - case 26: - case 55: - sprintf(in_rfid_kbn, "01"); - break; - case 13: - case 14: - case 27: - case 28: - case 56: - sprintf(in_rfid_kbn, "03"); - break; - case 33: - sprintf(in_rfid_kbn, "02"); - break; - default: - sprintf(in_rfid_kbn, "00"); - break; - } - - if(lb_data2atoi(tmp, 2) == 53) - sprintf(in_rfid_kbn, "04"); - - snprintf(in_tag, 48+1, "%.24s%.24s", pk_in->tag_id1, pk_in->tag_id2); - -/* EXEC SQL - SELECT SUBSTR(COUNT(*)+1, 1, 1) - INTO :in_other - FROM FARE_TERMINAL_INFO - WHERE FARE_OFFICE_ID = :in_fare - AND BOOTH_ID = :in_booth - AND YEAR || MONTH || DAY || WORK_TIMES = :in_date - ; - in_other[0] = pk_in->wrk_no[4]; -proc_log("ȯó12"); - if (SQLCODE < 0) - { - proc_log("FARE_TERMINAL_INFO SELECT FAIL[%d][%s]", SQLCODE, sqlca.sqlerrm.sqlerrmc); - return(1); - } -*/ - in_other[0] = pk_in->wrk_no[3]; - - if(in_carkind[0] == '7') - sprintf(in_rfid_kbn, "02"); -#if 0 - sprintf(in_sens_time, 6+1, "%.6s", pk_in->sence_time); -#else - sprintf(in_sens_time, "000000"); - in_sens_time[6] = '\0'; -#endif -proc_log("ȯó [%s][%s][%s][%s][%s][%s]\n", in_id, in_fare, in_booth, in_date, in_seqno, in_rf_seqno); -proc_log("ȯó [%s][%s][%s][%s][%s][%s]\n", in_car, in_collect, in_army, in_stop, in_move, in_amount); -proc_log("ȯó [%s][%s][%s][%s][%s][%s]\n", in_x, in_y, in_garo, in_sero, in_card_ret, in_other); -proc_log("ȯó [%s][%s][%s][%s]\n", in_rfid_kbn, in_tag, in_carkind, in_sens_time); - -//proc_log("ȯó [%02x][%02x][%02x][%02x][%02x][%02x]\n", in_id[4], in_fare[2], in_booth[2], in_date[14], in_seqno[9], in_rf_seqno[9]); -//proc_log("ȯó [%02x][%02x][%02x][%02x][%02x][%02x]\n", in_car[16], in_collect[2], in_army[1], in_stop[50], in_move[1], in_amount[6]); -//proc_log("ȯó [%02x][%02x][%02x][%02x][%02x][%02x]\n", in_x[4], in_y[4], in_garo[4], in_sero[4], in_card_ret[1], in_other[1]); -//proc_log("ȯó [%02x][%02x][%02x]\n", in_rfid_kbn[2], in_tag[48], in_carkind[1]); -/* - EXEC SQL INSERT INTO DAY_TRAFFIC_INFO - (FARE_OFFICE_ID, BOOTH_ID, PASS_DATE, PASS_TIME, PASS_SEQNO, CAR_NO, CARS_TYPE_ID, IN_OUT_KBN, CREATE_DATE, CREATER, UPDATE_DATE, UPDATER) - VALUES - (:in_fare, :in_booth, SUBSTR(:in_date, 1, 8), SUBSTR(:in_date, 9, 6), :d_seq, :in_car, :in_carkind, :c_io, sysdate, 'system', sysdate, 'system'); - - if (SQLCODE < 0) - { - proc_log("Day Traffic Info Insert Fail[%d][%s]", SQLCODE, sqlca.sqlerrm.sqlerrmc); - } -*/ - - sprintf(in_collect_new, "%.2s%c", rcv_hnd, '\0'); -#ifdef _ORACLE_ -//proc_log("CAR_KIND[%s]\n", in_carkind); - EXEC SQL EXECUTE - BEGIN SP_FARE_INS_NEW(:in_id, :in_fare, :in_booth, :in_date, :in_seqno, :in_rf_seqno, :in_car, :in_collect, :in_army, :in_stop, :in_move, :in_amount, :in_x, :in_y, :in_garo, :in_sero, :in_card_ret, :in_other, :in_rfid_kbn, :in_tag, :in_carkind, :in_collect_new, :in_sens_time, :ret); - END; - END-EXEC; -/* - EXEC SQL - Insert Into RF_Terminal_Info - (worker_id, fare_office_id, booth_id, year, month, day, work_times, seqno, - issue_office_id, after_kbn, card_no, in_out_kbn, collect_id, levy_amount, - remaind_amount, card_office_id, terminal_id, sam_id, sam_seqno, - card_seqno, before_amount, algorithm_id, key_version, e_cash_identifier, - sam_tot_seqno, sam_collect_cnt, sam_tot_amount, sign_value, person_code, - zipge_id, alias_no, issue_id, create_date, creater, - update_date, updater, send_flag) - Values - (:in_id || :in_fare, :in_fare, :in_booth, substr(:in_date, 1, 4), substr(:in_date, 5, 2), - substr(:in_date, 7, 2), :work_times, :seqno, v_prefix, v_kbn, - v_card, v_inout, v_collect, v_amount, nvl(to_number(nvl(rtrim(in_re_amount,' '),'0')),0), - v_card_office, v_terminal_id, v_sam_id, nvl(to_number(nvl(rtrim(in_sam_seqno,' '),'0')),0), nvl(to_number(nvl(rtrim(in_card_seqno,' '),'0')),0), - nvl(to_number(nvl(rtrim(in_be_amount,' '),'0')),0), v_algorithm_id, v_key_version, v_e_cash, nvl(to_number(nvl(rtrim(in_sam_tot_seqno,' '),'0')),0), - nvl(to_number(nvl(rtrim(in_sam_collect_cnt,' '),0)),0), nvl(to_number(nvl(rtrim(in_sam_tot_amount,' '),'0')),0), in_sign_value, v_person_code, - v_zipge_id, v_alias_no, v_issue_id, sysdate, 'dekim', - sysdate, 'dekim', '0'); -*/ - if (SQLCODE < 0) - { - proc_log("SP_FARE_INS_NEW 1 CALL FAIL[%d]", sqlca.sqlerrd[4]); - proc_log("SP_FARE_INS_NEW 2 CALL FAIL[%d][%s]", SQLCODE, sqlca.sqlerrm.sqlerrmc); - return(1); - } -#endif -#ifdef _WEBSVR_ - sprintf(orgCarNo, "%.16s", in_car); - if(strlen(orgCarNo) == 0) - { - memset(in_car, 0x00, sizeof(in_car)); - sprintf(in_car, "????????????"); - }else - { - memset(in_car, 0x00, sizeof(in_car)); - in_size = strlen(orgCarNo); - out_size = sizeof(wchar_t) * in_size * 4; - - in_buf = orgCarNo; - out_buf = szCarNo; - out_buf_left = out_size; - - nResult = iconv(ic, (char *)&in_buf, &in_size, (char *)&out_buf, &out_buf_left); - if(nResult == -1) - { - proc_log("ICONV FAILED [%d]\n", nResult); - } - -//proc_log("ICONV in_size[%d] out_size[%d] [%s]\n", in_size, out_size - out_buf_left, szCarNo); - sprintf(in_car, "%.16s", szCarNo); - } - iconv_close(ic); - sprintf(rBuffer, "%s%s%s%s%s%s%-16s%s%s00%s%s%s%s%s%s%s%s%-48s%s%s%s", - in_id, in_fare, in_booth, in_date, in_seqno, in_rf_seqno, - in_car, in_collect, in_army, in_amount, - in_x, in_y, in_garo, in_sero, in_card_ret, in_other, - in_rfid_kbn, in_tag, in_carkind, rcv_hnd, in_sens_time); - //sprintf(rBuffer, "%08d", SQLCODE); - memcpy(rtn, &rBuffer, strlen(rBuffer)); -#endif - - proc_log("ȯó [%.8s] [%d][%d]ȯóϷ", in_date, SQLCODE, ret); - -#endif - return 0; -} diff --git a/GREEN_LANE/src/app/util/core.238438 b/GREEN_LANE/src/app/util/core.238438 deleted file mode 100644 index 317e14a..0000000 Binary files a/GREEN_LANE/src/app/util/core.238438 and /dev/null differ