Ejemplo n.º 1
0
int F930203(TRUSERID *handle, int iRequest, ST_PACK *in_pack, int *pRetCode, char *szMsg)
{
	T_t_door_txdtl txdtl;
	T_t_pif_card tCard;
	T_t_pif_device device;
	T_t_door_events event;
	int ret;
	char weigand_no[12+1] = "";
	memset(&device, 0, sizeof device);
	// 查询设备ID号
	if (in_pack->lvol5 > 0)
	{
		ret = DB_t_pif_device_read_by_device_id(in_pack->lvol5, &device);
	}
	else
	{
		// 先判断是不是有父设备ID
		if (in_pack->lvol2 > 0)
			ret = get_door_dev_by_parent_and_termid(&device, in_pack->lvol2
			                                        , in_pack->lvol1); // 通过机号查询
		else
		{
			// 判断父设备机号
			if (in_pack->lvol3 > 0)
				ret = find_device_by_parent_termid(&device, in_pack->lvol3, in_pack->lvol1
				                                   , in_pack->lserial0); // 通过父设备机号与设备机号查询
			else
			{
				// 通过子系统号与设备机号查询
				ret = find_device_by_devinfo(&device, in_pack->lcert_code, in_pack->lvol1
				                             , in_pack->sbank_code, 1001);//in_pack->lserial0);
			}
		}
	}
	if (ret)
	{
		writelog(LOG_ERR, "get_door_dev_by_parent_and_termid err,device[=%d]parent_id=[%d],dev_no=[%d],ret=[%d]",
		         in_pack->lvol5, in_pack->lvol2, in_pack->lvol1, ret);
		if (ret == E_DB_DEVICE_N)
		{
			writelog(LOG_ERR, "上传记录找不到对应的设备termid[%d]type[%s]parent[%d][%d],sys[%d],phytype[%d]"
			         , in_pack->lvol1, in_pack->sbank_code, in_pack->lvol2, in_pack->lvol3, in_pack->lcert_code, in_pack->lserial0);
			return 0;
		}
		else
		{
			*pRetCode = ret;
			goto L_RETU;
		}
	}
	// 没有物理卡号
	if (strlen(in_pack->sdate1) == 0)
	{
		//事件
		memset(&event, 0, sizeof event);
		event.device_id = device.device_id;
		event.event_code = atoi(in_pack->semp_no);
		des2src(event.event_msg, in_pack->vsmess);
		event.sysid = in_pack->lcert_code;
		des2src(event.tx_date, in_pack->sdate0);
		des2src(event.tx_time, in_pack->stime0);
		getsysdate(event.col_date);
		getsystime(event.col_time);
		ret = DB_t_door_events_add(&event);
		if (ret)
		{
			if (DB_REPEAT == ret)	return 0;
			*pRetCode = E_DB_DOOR_TXDTL_I;
			goto L_RETU;
		}
		return 0;

	}
	else
	{
		memset(&tCard, 0, sizeof tCard);
		ret = get_card_by_phyno(&tCard, in_pack->sdate1);
		if (ret)
		{
			if (ret == E_DB_CARD_N)
			{
				ConverPhyNo(in_pack->sdate1, weigand_no);
				ret = get_card_by_weigand_no(&tCard, weigand_no);
				if (ret)
				{
					writelog(LOG_ERR, "Get_card_by_weigand_no err,weigand_no=[%s],ret=[%d]", weigand_no, ret);
					// 没有这张卡,仍然保留流水
					if (ret != E_DB_CARD_N)
					{
						*pRetCode = ret;
						goto L_RETU;
					};
				}
			}
			else
			{
				*pRetCode = ret;
				goto L_RETU;
			}
		}
		memset(&txdtl, 0, sizeof txdtl);
		txdtl.device_id = device.device_id;
		txdtl.card_no = tCard.card_id;
		txdtl.sys_id = in_pack->lcert_code;
		txdtl.cust_id = tCard.cosumer_id;
		if (!ret)	des2src(txdtl.phycard_no, tCard.physical_no);
		else des2src(txdtl.phycard_no, in_pack->sdate1);
		//writelog(LOG_DEBUG,"door serial date[%s] time[%s]",in_pack->sdate0,in_pack->stime0);
		des2src(txdtl.tx_date, in_pack->sdate0);
		des2src(txdtl.tx_time, in_pack->stime0);
		getsysdate(txdtl.col_date);
		getsystime(txdtl.col_time);
		txdtl.tx_mark = atoi(in_pack->semp_no);
		// 保存门禁流水
		ret = DB_t_door_txdtl_add(&txdtl);
		if (ret)
		{
			// 重复流水忽略
			if (DB_REPEAT == ret)
			{
				writelog(LOG_DEBUG, "流水重复card[%s],date[%s],time[%s]", in_pack->sdate1
				         , in_pack->sdate0, in_pack->stime0);
				return 0;
			}
			writelog(LOG_ERR, "保存流水失败card[%s],date[%s],time[%s]", in_pack->sdate1
			         , in_pack->sdate0, in_pack->stime0);
			*pRetCode = E_DB_DOOR_TXDTL_I;
			goto L_RETU;
		}
		switch (device.dev_usage)
		{
		case DU_JSB_CONFRENCE:
			/*
			ret = SaveDoorJSBSerial(&txdtl);
			if(ret)
			{
				writelog(LOG_ERR,"保存计时宝流水失败,errcode[%d]",ret);
				break;
			}
			ret = UpdateConferSerial(&txdtl);
			*/
			break;
		case DU_JSB_ATTENDANCE:
			ret = SaveKQSerial(&txdtl);
			if (ret)
			{
				writelog(LOG_ERR, "插入考勤流水表失败,errcode[%d]", ret);
				break;
			}
		default:
			//ret = SaveDoorJSBSerial(&txdtl);
			break;
		}
		if (ret)
		{
			*pRetCode = ret;
			goto L_RETU;
		}
	}
	return 0;

L_RETU:
	return -1;

}
Ejemplo n.º 2
0
int F930203(TRUSERID *handle,int iRequest,ST_PACK *in_pack,int *pRetCode,char *szMsg)
{
	T_t_door_txdtl txdtl;
	T_t_pif_card tCard;
	T_t_pif_device device;
	T_t_door_events event;
	int ret;
	char weigand_no[12+1]="";
	memset(&device,0,sizeof device);
	ret = get_door_dev_by_parent_and_termid(&device,in_pack->lvol2,in_pack->lvol1);
	if(ret)
	{
		writelog(LOG_ERR,"get_door_dev_by_parent_and_termid err,parent_id=[%d],dev_no=[%d],ret=[%d]",in_pack->lvol2,in_pack->lvol1,ret);
		if(ret == E_DB_DEVICE_N)
		{
			return 0;
		}
		else
		{
			*pRetCode = ret;
			goto L_RETU;
		}
	}
	if(strlen(in_pack->sdate1) == 0)
	{
		//事件
		memset(&event,0,sizeof event);
		event.device_id = device.device_id;
		event.event_code = atoi(in_pack->semp_no);
		des2src(event.event_msg,in_pack->vsmess);
		event.sysid = in_pack->lcert_code;
		des2src(event.tx_date,in_pack->sdate0);
		des2src(event.tx_time,in_pack->stime0);
		getsysdate(event.col_date);
		getsystime(event.col_time);
		ret = DB_t_door_events_add(&event);
		if(ret)
		{
			if(DB_REPEAT == ret)	return 0;
			*pRetCode = E_DB_DOOR_TXDTL_I;
			goto L_RETU;
		}
		return 0;
		
	}
	/*
	else if(strlen(in_pack->sdate1) !=8)
	{
		// 流水卡号错误
		ret=get_card_by_weigand_no(&tCard,in_pack->sdate1);
		if(ret)
		{

		}
		writelog(LOG_DEBUG,"数据有误");
		return 0;
	}
	*/
	else
	{
		memset(&tCard,0,sizeof tCard);
		ret = get_card_by_phyno(&tCard,in_pack->sdate1);
		if(ret)
		{
			if(ret==E_DB_CARD_N)
			{
				ConverPhyNo(in_pack->sdate1,weigand_no);
				ret=get_card_by_weigand_no(&tCard,weigand_no);
				if(ret)
				{
					writelog(LOG_ERR,"Get_card_by_weigand_no err,weigand_no=[%s],ret=[%d]",weigand_no,ret);
					// 没有这张卡,仍然保留流水
					if(ret != E_DB_CARD_N)	
					{
						*pRetCode=ret;
						goto L_RETU;
					};
				}
			}
			else 
			{
				*pRetCode=ret;
				goto L_RETU;
			};
		}
		memset(&txdtl,0,sizeof txdtl);
		txdtl.device_id = device.device_id;
		txdtl.card_no = tCard.card_id;
		txdtl.sys_id = in_pack->lcert_code;
		txdtl.cust_id = tCard.cosumer_id;
		if(!ret)	des2src(txdtl.phycard_no,tCard.physical_no);
		else des2src(txdtl.phycard_no,in_pack->sdate1);
		//writelog(LOG_DEBUG,"door serial date[%s] time[%s]",in_pack->sdate0,in_pack->stime0);
		des2src(txdtl.tx_date,in_pack->sdate0);
		des2src(txdtl.tx_time,in_pack->stime0);
		getsysdate(txdtl.col_date);
		getsystime(txdtl.col_time);
		txdtl.tx_mark = atoi(in_pack->semp_no);
		
		ret = DB_t_door_txdtl_add(&txdtl);
		if(ret)
		{
			// 重复流水忽略
			if(DB_REPEAT == ret)
			{
				writelog(LOG_DEBUG,"流水重复card[%s],date[%s],time[%s]",in_pack->sdate1
					,in_pack->sdate0,in_pack->stime0);
				return 0;
			}
			writelog(LOG_ERR,"保存流水失败card[%s],date[%s],time[%s]",in_pack->sdate1
					,in_pack->sdate0,in_pack->stime0);
			*pRetCode = E_DB_DOOR_TXDTL_I;
			goto L_RETU;
		}
	}
	return 0;

L_RETU:
	return -1;

}
Ejemplo n.º 3
0
int F930203(TRUSERID *handle,int iRequest,ST_PACK *in_pack,int *pRetCode,char *szMsg)
{
	T_t_door_txdtl txdtl;
	T_t_pif_card tCard;
	T_t_pif_device device;
	T_t_door_events event;
	int ret;
	memset(&device,0,sizeof device);
	ret = get_door_dev_by_parent_and_termid(&device,in_pack->lvol2,in_pack->lvol1);
	if(ret)
	{
		if(ret == E_DB_DEVICE_N)
			return 0;
		return ret;
	}
	if(strlen(in_pack->sdate1) == 0)
	{
		//事件
		memset(&event,0,sizeof event);
		event.device_id = device.device_id;
		event.event_code = atoi(in_pack->semp_no);
		des2src(event.event_msg,in_pack->vsmess);
		event.sysid = in_pack->lcert_code;
		des2src(event.tx_date,in_pack->sdate0);
		des2src(event.tx_time,in_pack->stime0);
		getsysdate(event.col_date);
		getsystime(event.col_time);
		ret = DB_t_door_events_add(&event);
		if(ret)
		{
			if(DB_REPEAT == ret)
				return 0;
			return E_DB_DOOR_TXDTL_I;
		}
		return 0;
		
	}
	else if(strlen(in_pack->sdate1) !=8)
	{
		// 流水卡号错误
		writelog(LOG_DEBUG,"数据有误");
		return 0;
	}
	else
	{
		ret = get_card_by_phyno(&tCard,in_pack->sdate1);
		if(ret)
		{
			// 没有这张卡
			if(ret != E_DB_CARD_N)
				return ret;
		}
		memset(&txdtl,0,sizeof txdtl);
		txdtl.device_id = device.device_id;
		txdtl.card_no = tCard.card_id;
		txdtl.sys_id = in_pack->lcert_code;
		des2src(txdtl.phycard_no,in_pack->sdate1);
		writelog(LOG_DEBUG,"door serial date[%s] time[%s]",in_pack->sdate0,in_pack->stime0);
		des2src(txdtl.tx_date,in_pack->sdate0);
		des2src(txdtl.tx_time,in_pack->stime0);
		getsysdate(txdtl.col_date);
		getsystime(txdtl.col_time);
		txdtl.tx_mark = atoi(in_pack->semp_no);
		
		ret = DB_t_door_txdtl_add(&txdtl);
		if(ret)
		{
			// 重复流水忽略
			if(DB_REPEAT == ret)
			{
				writelog(LOG_DEBUG,"流水重复card[%s],date[%s],time[%s]",in_pack->sdate1
					,in_pack->sdate0,in_pack->stime0);
				return 0;
			}
			writelog(LOG_ERR,"保存流水失败card[%s],date[%s],time[%s]",in_pack->sdate1
					,in_pack->sdate0,in_pack->stime0);
			return E_DB_DOOR_TXDTL_I;
		}
		return 0;
	}
	
}
Ejemplo n.º 4
0
int F930203(TRUSERID *handle, int iRequest, ST_PACK *in_pack, int *pRetCode, char *szMsg) {
    T_t_doordtl tDoordtl;
    T_t_card tCard;
    T_t_device device;
    T_t_dooreventdtl event;
    T_t_customer tCust;
    int ret;
    char weigand_no[12+1] = "";
    memset(&device, 0, sizeof device);

    writelog(LOG_INFO, "接收前置数据:device=[%d],parent_id=[%d],dev_no=[%d],cardno=[%d],phycarid=[%s],ret=[%d]",in_pack->lvol5, in_pack->lvol2, in_pack->lvol1,in_pack->lvol0,in_pack->sdate1,ret);
    // 查询设备ID号
    if (in_pack->lvol5 > 0) {
        ret = DB_t_device_read_by_deviceid(in_pack->lvol5, &device);
    } else {
        // 先判断是不是有父设备ID
        if (in_pack->lvol2 > 0)
            ret = get_door_dev_by_parent_and_termid(&device, in_pack->lvol2
                                                    , in_pack->lvol1); // 通过机号查询
        else {
            // 判断父设备机号
            if (in_pack->lvol3 > 0)
                ret = find_device_by_parent_termid(&device, in_pack->lvol3, in_pack->lvol1
                                                   , in_pack->lserial0); // 通过父设备机号与设备机号查询
            else {
                // 通过子系统号与设备机号查询
                ret = find_device_by_devinfo(&device, in_pack->lcert_code, in_pack->lvol1
                                             , in_pack->sbank_code, in_pack->lserial0);
            }
        }
    }
    if (ret) {
        writelog(LOG_ERR, "获取设备信息失败:deviceid=[%d],parent_id=[%d],dev_no=[%d],ret=[%d]",in_pack->lvol5, in_pack->lvol2, in_pack->lvol1, ret);
        if (ret == E_DB_DEVICE_N) {
            writelog(LOG_ERR, "上传记录找不到对应的设备termid[%d]type[%s]parent[%d][%d],sys[%d],phytype[%d]",in_pack->lvol1, in_pack->sbank_code, in_pack->lvol2, in_pack->lvol3, in_pack->lcert_code, in_pack->lserial0);
            return ret;
        } else {
            *pRetCode = ret;
            goto L_RETU;
        }
    }
    // 没有物理卡号,也没有交易卡号
    if ((strlen(in_pack->sdate1) == 0) && in_pack->lvol0 == 0) {
        //事件
        memset(&event, 0, sizeof event);
        event.deviceid = device.deviceid;
        event.eventcode = atoi(in_pack->semp_no);
        des2src(event.eventmsg, in_pack->vsmess);
        event.sysid= in_pack->lcert_code;
        des2src(event.transdate, in_pack->sdate0);
        des2src(event.transtime, in_pack->stime0);
        getsysdate(event.coldate);
        getsystime(event.coltime);
        ret = DB_t_dooreventdtl_add(&event);
        if (ret) {
            if (DB_REPEAT == ret)
                return 0;
            return E_DB_DOOREVENTDTL_I;
        }
        return 0;

    } else {
        memset(&tCard, 0, sizeof tCard);

        if(strlen(in_pack->sdate1) >0) {	// 有物理卡号
            ret = get_card_by_phyno(&tCard, in_pack->sdate1);
            if (ret) {
                if (ret == E_DB_CARD_N) {
                    ConverPhyNo(in_pack->sdate1, weigand_no);
                    ret = get_card_by_weigand_no(&tCard, weigand_no);
                    if (ret) {
                        writelog(LOG_ERR, "Get_card_by_weigand_no err,weigand_no=[%s],ret=[%d]", weigand_no, ret);
                        // 没有这张卡,仍然保留流水
                        if (ret != E_DB_CARD_N) {
                            *pRetCode = ret;
                            goto L_RETU;
                        }
                    }
                } else {
                    *pRetCode = ret;
                    goto L_RETU;
                }
            }
        } else {	// 根据交易卡号查询
            ret = DB_t_card_read_by_cardno(in_pack->lvol0, &tCard);
            if(ret) {
                *pRetCode = E_DB_CARD_R;
                goto L_RETU;
            }
        }
        memset(&tDoordtl, 0, sizeof tDoordtl);
        tDoordtl.deviceid = device.deviceid;
        des2src(tDoordtl.devphyid,device.devphyid);
        writelog(LOG_DEBUG,"deviceid[%d],devphyid[%s]",device.deviceid,device.devphyid);
        tDoordtl.cardno = tCard.cardno;
        tDoordtl.sysid = in_pack->lcert_code;
        tDoordtl.custid = tCard.custid;

        if (!ret)
            des2src(tDoordtl.cardphyid, tCard.cardphyid);
        else
            des2src(tDoordtl.cardphyid, in_pack->sdate1);

        if(tDoordtl.custid) {
            memset(&tCust,0,sizeof tCust);
            ret = DB_t_customer_read_by_custid(tDoordtl.custid, &tCust);
            if(ret ) {
                if(ret != DB_NOTFOUND)
                    return E_DB_CUSTOMER_R;
            } else {
                des2src(tDoordtl.stuempno,tCust.stuempno);
                des2src(tDoordtl.custname,tCust.custname);
            }
        }
        //writelog(LOG_DEBUG,"door serial date[%s] time[%s]",in_pack->sdate0,in_pack->stime0);
        des2src(tDoordtl.transdate, in_pack->sdate0);
        des2src(tDoordtl.transtime, in_pack->stime0);
        getsysdate(tDoordtl.coldate);
        getsystime(tDoordtl.coltime);
        tDoordtl.transmark = atoi(in_pack->semp_no);
        ret = getNewUniqNo(KEYTYPE_DOORDTL,&(tDoordtl.devseqno));
        if(ret) {
            writelog(LOG_ERR,"生成流水号失败");
            *pRetCode = ret;
            goto L_RETU;
        }
        // 保存门禁流水
        ret = DB_t_doordtl_add(&tDoordtl);
        if (ret) {
            // 重复流水忽略
            if (DB_REPEAT == ret) {
                writelog(LOG_DEBUG, "流水重复card[%s],date[%s],time[%s]", in_pack->sdate1,in_pack->sdate0, in_pack->stime0);
                return 0;
            }
            writelog(LOG_ERR, "保存流水失败card[%s],date[%s],time[%s]", in_pack->sdate1,in_pack->sdate0, in_pack->stime0);
            *pRetCode = E_DB_DOOREVENTDTL_I;
            goto L_RETU;
        }

        switch (device.devusage) {
        case DU_JSB_CONFRENCE:
            /*
            ret = SaveDoorJSBSerial(&tDoordtl);
            if(ret)
            {
            	writelog(LOG_ERR,"保存计时宝流水失败,errcode[%d]",ret);
            	break;
            }
            ret = UpdateConferSerial(&tDoordtl);
            */
//			break;
        case DU_JSB_ATTENDANCE:
//			ret = SaveKQSerial(&tDoordtl);
//			if (ret)
//			{
//				writelog(LOG_ERR, "插入考勤流水表失败,errcode[%d]", ret);
//				break;
//			}
        default:
            //ret = SaveDoorJSBSerial(&tDoordtl);
            /*
            ret = SaveDoorDtl(&tDoordtl);
            if (ret)
            {
            	writelog(LOG_ERR, "插入考勤流水表失败,errcode[%d]", ret);
            	break;
            }
            */
            break;
        }
        if (ret) {
            *pRetCode = ret;
            goto L_RETU;
        }
    }
    return 0;

L_RETU:
    return -1;

}
Ejemplo n.º 5
0
int F930203(TRUSERID *handle,int iRequest,ST_PACK *in_pack,int *pRetCode,char *szMsg)
{
    T_t_door_txdtl txdtl;
    T_t_pif_card tCard;
    T_t_pif_device device;
    T_t_door_events event;
    int ret;
    memset(&device,0,sizeof device);
    if(in_pack->lvol2 > 0)
        ret = get_door_dev_by_parent_and_termid(&device,in_pack->lvol2,in_pack->lvol1);
    else
    {
        if(in_pack->lvol3>0)
            ret = find_device_by_parent_termid(&device,in_pack->lvol3,in_pack->lvol1,in_pack->lserial0);
        else
        {
            writelog(LOG_ERR,"上传流水无设备信息");
            return 0;
        }
    }
    if(ret)
    {
        if(ret == E_DB_DEVICE_N)
        {
            writelog(LOG_ERR,"上传记录找不到对应的设备");
            return 0;
        }
        *pRetCode = ret;
        return -1;
    }
    if(strlen(in_pack->sdate1) == 0)
    {
        //事件
        memset(&event,0,sizeof event);
        event.device_id = device.device_id;
        event.event_code = atoi(in_pack->semp_no);
        des2src(event.event_msg,in_pack->vsmess);
        event.sysid = in_pack->lcert_code;
        des2src(event.tx_date,in_pack->sdate0);
        des2src(event.tx_time,in_pack->stime0);
        getsysdate(event.col_date);
        getsystime(event.col_time);
        ret = DB_t_door_events_add(&event);
        if(ret)
        {
            if(DB_REPEAT == ret)
                return 0;
            *pRetCode = E_DB_DOOR_TXDTL_I;
            return -1;
        }
        return 0;

    }
    else if(strlen(in_pack->sdate1) !=8)
    {
        // 流水卡号错误
        writelog(LOG_DEBUG,"数据有误");
        return 0;
    }
    else
    {
        memset(&tCard,0,sizeof tCard);
        ret = get_card_by_phyno(&tCard,in_pack->sdate1);
        if(ret)
        {
            // 没有这张卡
            if(ret != E_DB_CARD_N)
            {
                *pRetCode = ret;
                return -1;
            }
        }
        memset(&txdtl,0,sizeof txdtl);
        txdtl.device_id = device.device_id;
        txdtl.card_no = tCard.card_id;
        txdtl.sys_id = in_pack->lcert_code;
        txdtl.cust_id = tCard.cosumer_id;
        des2src(txdtl.phycard_no,in_pack->sdate1);
        //writelog(LOG_DEBUG,"door serial date[%s] time[%s]",in_pack->sdate0,in_pack->stime0);
        des2src(txdtl.tx_date,in_pack->sdate0);
        des2src(txdtl.tx_time,in_pack->stime0);
        getsysdate(txdtl.col_date);
        getsystime(txdtl.col_time);
        txdtl.tx_mark = atoi(in_pack->semp_no);

        ret = DB_t_door_txdtl_add(&txdtl);
        if(ret)
        {
            // 重复流水忽略
            if(DB_REPEAT == ret)
            {
                writelog(LOG_DEBUG,"流水重复card[%s],date[%s],time[%s]",in_pack->sdate1
                         ,in_pack->sdate0,in_pack->stime0);
                return 0;
            }
            writelog(LOG_ERR,"保存流水失败card[%s],date[%s],time[%s]",in_pack->sdate1
                     ,in_pack->sdate0,in_pack->stime0);
            *pRetCode = E_DB_DOOR_TXDTL_I;
            return -1;
        }
        switch(device.dev_usage)
        {
        case DU_JSB_CONFRENCE:
            /*
            ret = SaveDoorJSBSerial(&txdtl);
            if(ret)
            {
            	writelog(LOG_ERR,"保存计时宝流水失败,errcode[%d]",ret);
            	break;
            }
            ret = UpdateConferSerial(&txdtl);
            */
            break;
        case DU_JSB_ATTENDANCE:
            ret = SaveKQSerial(&txdtl);
            if(ret)
            {
                writelog(LOG_ERR,"插入考勤流水表失败,errcode[%d]",ret);
                break;
            }
        default:
            //ret = SaveDoorJSBSerial(&txdtl);
            break;
        }
        if(ret)
        {
            *pRetCode = ret;
            return -1;
        }
        return 0;
    }

}